diff --git a/.gitmodules b/.gitmodules index 38c3f01..a9c988c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,3 @@ [submodule "marketplace/as4-411"] path = marketplace/as4-411 url = https://gitea.d-bis.org/d-bis/as4-411.git -[submodule "portal/src/data/project-atlas"] - path = portal/src/data/project-atlas - url = git@gitea.d-bis.org:Sankofa_Phoenix/projectAtlas.git - branch = main diff --git a/api/config/marketplace-entitlement-registry.v1.json b/api/config/marketplace-entitlement-registry.v1.json index 851a2de..225bbd9 100644 --- a/api/config/marketplace-entitlement-registry.v1.json +++ b/api/config/marketplace-entitlement-registry.v1.json @@ -196,6 +196,26 @@ "productPath": "/marketplace/products/phoenix-aegis-vault-cti", "managePath": "/marketplace/entitlements/phoenix-aegis-vault-cti" } + }, + { + "productSlug": "phoenix-gftd-directory", + "displayName": "GFTD Directory", + "entitlementKeys": ["GFTD_DIRECTORY_ENTITLED"], + "publisher": "phoenix-cloud-services", + "category": "INTERNET_REGISTRY", + "onboardingRunbook": "docs/marketplace/sovereign-stack/gftd-directory-service.md", + "catalogSkus": [ + "gftd-preview", + "gftd-professional", + "gftd-institutional", + "gftd-enterprise" + ], + "fulfillmentMode": "operator_provisioned", + "status": "preview", + "surfaces": { + "productPath": "/marketplace/products/phoenix-gftd-directory", + "managePath": "/marketplace/entitlements/phoenix-gftd-directory" + } } ] } diff --git a/api/src/db/seeds/sovereign_stack_services.ts b/api/src/db/seeds/sovereign_stack_services.ts index 73f4bc2..19a3323 100644 --- a/api/src/db/seeds/sovereign_stack_services.ts +++ b/api/src/db/seeds/sovereign_stack_services.ts @@ -19,6 +19,8 @@ interface ServiceDefinition { basePrice?: number currency?: string billingPeriod?: string + billingModel?: string + quoteRequired?: boolean usageRates?: Record freeTier?: { requestsPerMonth?: number @@ -488,7 +490,7 @@ const services: ServiceDefinition[] = [ name: 'DBIS B2B Integration Hub', slug: 'phoenix-b2b-integration-hub', category: 'PLATFORM_SERVICES', - description: 'Enterprise B2B orchestration for DBIS and OMNL — EDI, file transfer, PEPPOL and EBICS fan-out to CanonicalMessage and Fineract.', + description: 'Enterprise B2B orchestration for DBIS and OMNL — EDI, file transfer, PEPPOL, EBICS, and AS4 fan-out to CanonicalMessage and Fineract.', shortDescription: 'B2B orchestration hub for DBIS and OMNL', tags: ['b2b', 'edi', 'integration', 'platform'], featured: true, @@ -538,6 +540,28 @@ const services: ServiceDefinition[] = [ quoteRequired: true, }, }, + { + name: 'DBIS AS4 Gateway', + slug: 'phoenix-as4-gateway', + category: 'FINANCIAL_MESSAGING', + description: 'Standalone AS4/eBMS3 gateway for external B2B document exchange with canonical message handoff into the DBIS B2B Integration Hub.', + shortDescription: 'AS4/eBMS3 external gateway', + tags: ['as4', 'ebms3', 'b2b', 'financial-messaging'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/as4-gateway-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/as4-gateway-service.md', + entitlement: 'AS4_GATEWAY_ENTITLED', + status: 'operator_ready_external_pending' + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + }, + }, { name: 'Chain 138 Participant Onboarding', slug: 'phoenix-chain138-participant-onboard', @@ -592,6 +616,29 @@ const services: ServiceDefinition[] = [ quoteRequired: true, } }, + { + name: 'HSM/PKI for PCI and Tokenization', + slug: 'phoenix-hsm-pki-pci-tokenization', + category: 'SECURITY_SERVICES', + description: 'Managed HSM, PKI, key ceremony, certificate lifecycle, PCI key controls, and tokenization enablement for regulated banking tenants.', + shortDescription: 'HSM/PKI service for PCI and tokenization', + tags: ['hsm', 'pki', 'pci', 'tokenization', 'banking'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/hsm-pki-pci-tokenization-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/hsm-pki-pci-tokenization-service.md', + entitlement: 'HSM_PKI_TOKENIZATION_ENTITLED', + targetTenants: ['OMNL', 'zBank', 'NovaBank', 'Ananka Bank'], + status: 'planned' + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + } + }, { name: 'OpenPayd Financial Services Connector', slug: 'phoenix-openpayd-connector', @@ -617,6 +664,111 @@ const services: ServiceDefinition[] = [ billingModel: 'enterprise_contract', quoteRequired: true, } + }, + { + name: 'MTN Developer Platform Connector', + slug: 'phoenix-mtn-developer-platform', + category: 'PLATFORM_SERVICES', + description: 'Operator-provisioned MTN connector for Mobile Money, messaging, payment, customer, security, and TMF APIs for Phoenix Financial and Telecom Cloud subscribers.', + shortDescription: 'MTN Developer Platform connector for financial and telecom cloud subscribers', + tags: ['mtn', 'mobile-money', 'telecom', 'payments', 'messaging', 'oauth', 'platform'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/mtn-developer-platform-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/mtn-developer-platform-service.md', + entitlement: 'MTN_DEVELOPER_PLATFORM_ENTITLED', + manifestRef: 'config/mtn-developer-platform-marketplace.v1.json', + targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'], + fulfillmentMode: 'operator_provisioned', + status: 'planned_mtn_onboarding_required', + gatedCapabilities: ['mobile-money', 'telecom-catalog', 'country-approval-matrix'] + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + } + }, + { + name: 'TRISA Travel Rule Gateway', + slug: 'phoenix-trisa-travel-rule', + category: 'FINANCIAL_MESSAGING', + description: 'Operator-provisioned TRISA and IVMS101 gateway for VASP Travel Rule payload exchange, mTLS identity, peer discovery, and compliance audit evidence in Phoenix Financial Cloud.', + shortDescription: 'TRISA and IVMS101 Travel Rule gateway for VASP compliance exchange', + tags: ['trisa', 'travel-rule', 'ivms101', 'vasp', 'mtls', 'financial-messaging'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/trisa-travel-rule-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/trisa-travel-rule-service.md', + entitlement: 'TRISA_TRAVEL_RULE_ENTITLED', + manifestRef: 'config/trisa-travel-rule-marketplace.v1.json', + targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'], + fulfillmentMode: 'operator_provisioned', + status: 'planned_directory_and_compliance_approval_required', + gatedCapabilities: ['mainnet_directory', 'production_counterparties', 'asset_movement_handoff'] + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + } + }, + { + name: 'GFTD Directory', + slug: 'phoenix-gftd-directory', + category: 'INTERNET_REGISTRY', + description: 'Rights-aware entity intelligence for approved live source lanes, redacted public-safe views, subscription tiers, and bounded observability through Sankofa Marketplace.', + shortDescription: 'Rights-aware entity directory with live source lanes and public-safe redaction', + tags: ['gftd', 'directory', 'registry', 'redaction', 'observability', 'subscription', 'marketplace'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/gftd-directory-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/gftd-directory-service.md', + entitlement: 'GFTD_DIRECTORY_ENTITLED', + fulfillmentMode: 'operator_provisioned', + status: 'preview', + subscriptionTiers: ['preview', 'professional', 'institutional', 'enterprise'], + personaMatrix: ['compliance-analyst', 'integration-engineer', 'marketplace-operator', 'legal-counsel', 'operations-sre', 'product-owner', 'institutional-customer'], + publicValueProposition: 'Rights-aware entity intelligence with redacted public outputs, live approved source lanes, and bounded observability.', + gatedCapabilities: ['live_source_lanes', 'redacted_public_views', 'bounded_observability'] + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + } + }, + { + name: 'EAC AppChain', + slug: 'phoenix-eac-appchain', + category: 'PLATFORM_SERVICES', + description: 'Operator-provisioned Universal Enterprise State Network for connectors, canonical state, events, workflows, identity graph, audit, policy, and AI context boundaries.', + shortDescription: 'Canonical application fabric and enterprise state network', + tags: ['appchain', 'connectors', 'canonical-state', 'workflow', 'ai-runtime', 'audit'], + featured: false, + documentationUrl: 'https://docs.sankofa.nexus/marketplace/sovereign-stack/eac-appchain-service', + metadata: { + architecture: 'docs/marketplace/sovereign-stack/eac-appchain-service.md', + entitlement: 'EAC_APPCHAIN_ENTITLED', + manifestRef: 'config/eac-appchain-marketplace.v1.json', + targetTenants: ['DBIS', 'OMNL', 'zBank', 'NovaBank', 'Ananka Bank'], + fulfillmentMode: 'operator_provisioned', + status: 'planned_sankofa_key_handoff_required', + keyHandoff: 'Sankofa returns secret references and key metadata only; no plaintext keys in Marketplace records.' + }, + pricingType: 'SUBSCRIPTION', + pricingConfig: { + currency: 'USD', + billingPeriod: 'MONTHLY', + billingModel: 'enterprise_contract', + quoteRequired: true, + } } ] diff --git a/docs/marketplace/sovereign-stack/README.md b/docs/marketplace/sovereign-stack/README.md index 24d3403..aa230f9 100644 --- a/docs/marketplace/sovereign-stack/README.md +++ b/docs/marketplace/sovereign-stack/README.md @@ -26,6 +26,10 @@ The Sovereign Stack is a comprehensive set of services designed to replace relia 8. **[Phoenix Audit Service](./audit-service.md)** - Immutable audit logs and WORM archive 9. **[Phoenix Observability Stack](./observability.md)** - Distributed tracing, structured logs, SLOs +### Registry Services + +10. **[GFTD Directory](./gftd-directory-service.md)** - Rights-aware entity intelligence, redaction, and bounded observability + ## Guiding Principles 1. **No provider is System of Record (SoR)** @@ -57,7 +61,7 @@ All services follow a consistent architecture pattern: ## Getting Started 1. Browse services in the [Sankofa Marketplace](https://portal.sankofa.nexus/marketplace) -2. Review service documentation for integration details +2. Review service documentation for integration details, including the GFTD Directory offering 3. Subscribe to services via the marketplace 4. Use API keys for authentication 5. Monitor usage and costs via the billing dashboard diff --git a/docs/marketplace/sovereign-stack/gftd-directory-service.md b/docs/marketplace/sovereign-stack/gftd-directory-service.md new file mode 100644 index 0000000..0047d70 --- /dev/null +++ b/docs/marketplace/sovereign-stack/gftd-directory-service.md @@ -0,0 +1,97 @@ +# GFTD Directory + +## Summary + +The GFTD Directory is a rights-aware, operator-provisioned Sankofa Marketplace +service for teams that need verified entity intelligence, redacted public-safe +views, and bounded runtime observability. + +It packages the DBIS Global Financial Trust Directory as a marketplace offering +with clear source-rights boundaries, subscription tiers, and persona-specific +value. + +## Entitlement + +| Field | Value | +| --- | --- | +| Product slug | `phoenix-gftd-directory` | +| Entitlement flag | `GFTD_DIRECTORY_ENTITLED` | +| Fulfillment mode | `operator_provisioned` | +| Manage path | `/marketplace/entitlements/phoenix-gftd-directory` | +| Marketplace status | `preview` | + +## Subscription Tiers + +| Tier | Who it is for | What it includes | Limits and controls | +| --- | --- | --- | --- | +| Preview | Evaluators, partners, and early adopters | Public-safe homepage, limited samples, fixture-backed demo data, redaction examples, and basic docs | No live restricted data, no authority claims, no production SLA | +| Professional | Operators, integrators, and compliance teams | Live approved source lanes, API access, bounded query depth, refresh alerts, and audit snapshots | Approved sources only, role-based access, and rate limits | +| Institutional | Regulated firms, marketplaces, and service providers | Multi-source coverage, evidence pack exports, onboarding and acceptance artifacts, and observability status | Contractual use terms, approval gates, and stricter access control | +| Enterprise | Market operators and platform teams | Custom SLAs, dedicated onboarding, tenant-specific redaction policies, integration support, and governance reporting | Bespoke legal and compliance review with scoped deployment | + +## User Needs By Persona + +| Persona | What they need | Why they subscribe | What matters most | +| --- | --- | --- | --- | +| Compliance analyst | Verified source-rights status, publication boundaries, audit trails | To prove what can and cannot be published | Traceability and redaction correctness | +| Integration engineer | Stable API, live source adapters, query-depth controls | To wire GFTD into internal tools | Reliability, docs, predictable responses | +| Marketplace operator | Packaging, tiers, onboarding, feature gating | To sell and support the service | Clear commercial segmentation | +| Legal counsel | Rights evidence, terms references, disclaimers, approval records | To approve the public surface | Low-risk wording and explicit boundaries | +| Operations / SRE | Health checks, observability snapshots, runtime limits | To keep the service safe in production | Monitoring, bounded behavior, incident signals | +| Product owner | Value proposition, user segmentation, adoption evidence | To position the offering | Clarity and defensibility | +| Institutional customer | Approved data, support, service acceptance | To use it in workflows | Trust, supportability, contractual clarity | + +## Public Homepage Value Proposition + +**Headline** + +GFTD delivers rights-aware, production-safe entity intelligence. + +**Subheadline** + +Access approved live source lanes, redacted public outputs, bounded +observability, and evidence-backed operational controls through Sankofa +Marketplace. + +**Core benefits** + +- Verified source-rights and publication boundaries. +- Live approved data where rights allow it. +- Redacted, public-safe outputs by default. +- Bounded query depth and operator-safe runtime controls. +- Audit-ready evidence and onboarding artifacts. +- Marketplace-ready packaging for institutional adoption. + +**What it is not** + +- It is not a claim of legal authority. +- It is not a payment rail. +- It is not a license to republish restricted data. +- It is not a substitute for counsel or compliance review. + +**Call to action** + +- View the public-safe demo. +- Review subscription tiers. +- Request institutional onboarding. +- Explore approved live source coverage. + +## Operator Boundary + +Marketplace listing alone does not grant authority to republish restricted +source data, confer banking or payment rights, authorize licensing, or imply +source-provider approval beyond the approved rights record. + +The service remains subject to source-rights review, publication and redaction +policy, and adoption evidence gates before any restricted or institution-facing +surface is enabled. + +## References + +- GFTD live public endpoint: `https://gftd.d-bis.org` +- GFTD monorepo: `https://gitea.d-bis.org/Sankofa_Phoenix/gftd-monorepo.git` +- Public-safe docs summary: `https://gftd.d-bis.org/docs` +- GFTD live source ingestion runbook: + `/home/intlc/projects/gftd_monorepo/docs/runbooks/live-source-ingestion.md` +- GFTD publication and redaction pack: + `/home/intlc/projects/gftd_monorepo/docs/runbooks/publication-redaction-pack.md` diff --git a/portal/src/data/project-atlas b/portal/src/data/project-atlas deleted file mode 160000 index 7c5d22a..0000000 --- a/portal/src/data/project-atlas +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7c5d22ad3aba7ca05d257f46cce63f1cf8de20d3 diff --git a/scripts/ci/bootstrap-project-atlas-submodule.sh b/scripts/ci/bootstrap-project-atlas-submodule.sh deleted file mode 100755 index 5670186..0000000 --- a/scripts/ci/bootstrap-project-atlas-submodule.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -repo_root="$(git rev-parse --show-toplevel)" -submodule_path="${PROJECT_ATLAS_SUBMODULE_PATH:-portal/src/data/project-atlas}" -ssh_key="${PROJECT_ATLAS_SSH_PRIVATE_KEY:-}" -key_file="${RUNNER_TEMP:-/tmp}/project-atlas-submodule-key" - -# The Project Atlas submodule lives in Gitea and must be fetched with a -# read-only deploy key stored in PROJECT_ATLAS_SSH_PRIVATE_KEY. -if git -C "$repo_root" submodule status -- "$submodule_path" | grep -q '^-'; then - if [[ -z "$ssh_key" ]]; then - echo "PROJECT_ATLAS_SSH_PRIVATE_KEY is required to initialize the private projectAtlas submodule." >&2 - exit 1 - fi - - install -d -m 700 "$HOME/.ssh" - printf '%s\n' "$ssh_key" > "$key_file" - chmod 600 "$key_file" - ssh-keyscan -H gitea.d-bis.org >> "$HOME/.ssh/known_hosts" - - git -C "$repo_root" submodule sync -- "$submodule_path" - GIT_SSH_COMMAND="ssh -i $key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \ - git -C "$repo_root" submodule update --init --recursive -- "$submodule_path" -fi diff --git a/src/app/marketplace/page.tsx b/src/app/marketplace/page.tsx index 37a40aa..819b3ff 100644 --- a/src/app/marketplace/page.tsx +++ b/src/app/marketplace/page.tsx @@ -8,7 +8,7 @@ import { Input } from '@/components/ui/input' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { ProductCard } from '@/components/marketplace/ProductCard' -import { Search, Filter } from 'lucide-react' +import { Search, Filter, ArrowRight, ShieldCheck, BookOpen } from 'lucide-react' const PRODUCT_CATEGORIES = [ { value: 'COMPUTE', label: 'Compute' }, @@ -75,6 +75,48 @@ export default function MarketplacePage() {

+ + +
+ + New + + + Internet Registry + +
+ GFTD Directory + + Rights-aware entity intelligence with live approved source lanes, redacted public-safe outputs, and bounded observability. + +
+ +
+ + + Source-rights gated + + + + Subscription tiers available + +
+
+ + +
+
+
+ {/* Search and Filters */}
@@ -153,4 +195,3 @@ export default function MarketplacePage() {
) } - diff --git a/src/components/marketplace/ProductCard.tsx b/src/components/marketplace/ProductCard.tsx index 8ed256c..03b6d25 100644 --- a/src/components/marketplace/ProductCard.tsx +++ b/src/components/marketplace/ProductCard.tsx @@ -34,6 +34,10 @@ const CATEGORY_LABELS: Record = { AI_LLM_AGENT: 'AI', } +const CATEGORY_DESCRIPTIONS: Record = { + INTERNET_REGISTRY: 'Rights-aware registry and entity intelligence', +} + export function ProductCard({ product }: ProductCardProps) { return ( @@ -72,6 +76,9 @@ export function ProductCard({ product }: ProductCardProps) { {CATEGORY_LABELS[product.category] || product.category} {product.featured && Featured} + {CATEGORY_DESCRIPTIONS[product.category] && ( + {CATEGORY_DESCRIPTIONS[product.category]} + )}
@@ -102,4 +109,3 @@ export function ProductCard({ product }: ProductCardProps) { ) } -