From ed7b9cbb6782feb732a02b28a4e349fd3746a503 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Thu, 30 Jul 2026 22:44:54 -0700 Subject: [PATCH] Polish GFTD marketplace access copy --- .../marketplace/entitlements/[slug]/page.tsx | 18 +++----- portal/src/app/marketplace/gftd/page.tsx | 44 +++++++++++++------ portal/src/app/marketplace/page.tsx | 33 +++++++++----- portal/src/lib/gftd-marketplace.ts | 39 ++++++++++++---- 4 files changed, 91 insertions(+), 43 deletions(-) diff --git a/portal/src/app/marketplace/entitlements/[slug]/page.tsx b/portal/src/app/marketplace/entitlements/[slug]/page.tsx index e7d3cee..9ee8a75 100644 --- a/portal/src/app/marketplace/entitlements/[slug]/page.tsx +++ b/portal/src/app/marketplace/entitlements/[slug]/page.tsx @@ -186,9 +186,7 @@ export default function MarketplaceEntitlementPage() {
-

- Subscription tiers -

+

Access tiers

{gftdMarketplaceSubscriptionTiers.map((tier) => (
@@ -203,9 +201,7 @@ export default function MarketplaceEntitlementPage() {
-

- User needs by persona -

+

Persona needs

    {gftdMarketplacePersonaNeeds.map((item) => (
  • @@ -253,14 +249,14 @@ export default function MarketplaceEntitlementPage() { onClick={() => signIn(undefined, { callbackUrl: `/marketplace/entitlements/${slug}` })} className="mt-6 rounded-lg bg-teal-600 px-5 py-2.5 text-sm font-medium text-white hover:bg-teal-500" > - Sign in to subscribe + Sign in to request access ) : hasActive ? (

    Active entitlements: {activeKeys.join(', ')}

    ) : hasPending ? (

    - Pending operator activation. Use the landing page to review the tier and guardrail summary - before the workspace request is approved. + Pending operator activation. Review the access tier and guardrail summary on the listing before the + workspace request is approved.

    ) : ( )} @@ -289,7 +285,7 @@ export default function MarketplaceEntitlementPage() { ) : null}

    - Contract/PO-first billing — automated checkout is on the roadmap. Operator Keycloak grants run via{' '} + Contract/PO-first billing remains in place; automated checkout is on the roadmap. Operator Keycloak grants run via{' '} grant-marketplace-entitlements-keycloak.sh.

    diff --git a/portal/src/app/marketplace/gftd/page.tsx b/portal/src/app/marketplace/gftd/page.tsx index a90e179..0513170 100644 --- a/portal/src/app/marketplace/gftd/page.tsx +++ b/portal/src/app/marketplace/gftd/page.tsx @@ -5,13 +5,14 @@ import { CorporateFooter } from '@/components/corporate/CorporateFooter'; import { CorporateHeader } from '@/components/corporate/CorporateHeader'; import { gftdMarketplaceGuardrails, + gftdMarketplaceFaq, gftdMarketplacePersonaNeeds, gftdMarketplaceSubscriptionTiers, } from '@/lib/gftd-marketplace'; export const metadata = { title: 'GFTD Directory — Sankofa Marketplace', - description: 'Rights-aware entity intelligence with live approved source lanes and public-safe redaction.', + description: 'Institutional entity intelligence with approved live source lanes, public-safe redaction, and bounded access.', }; export default function GftdMarketplacePage() { @@ -24,26 +25,26 @@ export default function GftdMarketplacePage() {

    GFTD Directory

    - Rights-aware entity intelligence for approved live source lanes, redacted public-safe outputs, - subscription tiers, and bounded observability. + Institutional entity intelligence with approved live source lanes, public-safe redaction, + access tiers, and bounded observability.

    {[ { icon: ShieldCheck, - title: 'Rights-aware by default', + title: 'Rights-governed by design', text: 'Public-safe outputs stay redacted, with source-rights and publication boundaries preserved.', }, { icon: BookOpen, title: 'Evidence-backed', - text: 'Live source ingestion and observability stay tied to documented approval and review artifacts.', + text: 'Live source ingestion and observability remain tied to documented approval and review artifacts.', }, { icon: Users, title: 'Marketplace-ready', - text: 'Subscription tiers and persona-based access are designed for institutional onboarding.', + text: 'Access tiers and persona-based controls are designed for institutional onboarding.', }, ].map((item) => { const Icon = item.icon; @@ -61,7 +62,7 @@ export default function GftdMarketplacePage() {
    -

    Subscription tiers

    +

    Access tiers

    {gftdMarketplaceSubscriptionTiers.map((tier) => (
    @@ -76,7 +77,7 @@ export default function GftdMarketplacePage() {
    -

    Who it serves

    +

    Intended users

      {gftdMarketplacePersonaNeeds.map((item) => (
    • @@ -87,7 +88,7 @@ export default function GftdMarketplacePage() {
    -

    Guardrails

    +

    Publication guardrails

      {gftdMarketplaceGuardrails.map((item) => (
    • - {item}
    • @@ -95,18 +96,35 @@ export default function GftdMarketplacePage() {
    +
    +

    Frequently asked questions

    +
    + {gftdMarketplaceFaq.map((item) => ( +
    + + {item.question} + +

    {item.answer}

    +
    + ))} +
    +
    +

    Next step

    - Review the subscription tiers, then request access through the entitlement flow. The listing is - designed to stay rights-aware and public-safe before any operator activation. + Review the access tiers and frequently asked questions, then request access through the entitlement + workflow. The listing remains rights-governed and public-safe before any operator activation.

    - Request subscription + Request access - View public docs + Review public docs
    diff --git a/portal/src/app/marketplace/page.tsx b/portal/src/app/marketplace/page.tsx index b37d1c3..2d3dfe5 100644 --- a/portal/src/app/marketplace/page.tsx +++ b/portal/src/app/marketplace/page.tsx @@ -28,14 +28,14 @@ export default function MarketplacePage() {

    Phoenix marketplace

    Sovereign platform catalog

    - Subscribe to ledger, identity, registry, wallet, orchestration, and Chain 138 onboarding services. - Sign in to manage entitlements and deployments. + Request access to ledger, identity, registry, wallet, orchestration, and Chain 138 onboarding + services. Sign in to manage entitlements and deployments.

    - Sign in to subscribe + Sign in to request access
@@ -111,14 +111,25 @@ export default function MarketplacePage() {

{service.name}

{service.description}

{service.href ? ( - - View offering - - +
+ + View offering + + + {service.name === 'GFTD Directory' ? ( + + Request access + + + ) : null} +
) : null} ))} diff --git a/portal/src/lib/gftd-marketplace.ts b/portal/src/lib/gftd-marketplace.ts index e26b31d..82683ca 100644 --- a/portal/src/lib/gftd-marketplace.ts +++ b/portal/src/lib/gftd-marketplace.ts @@ -7,31 +7,31 @@ export interface GftdMarketplaceService extends PartnerStackService { export const gftdMarketplaceSubscriptionTiers = [ { name: 'Preview', - description: 'Evaluators, partners, and early adopters with public-safe demo data only.', - limits: 'No live restricted data, no authority claims, no production SLA.', + description: 'Evaluators, partners, and early adopters using public-safe demonstration data only.', + limits: 'No live restricted data, no authority claims, and no production SLA.', }, { name: 'Professional', - description: 'Operators, integrators, and compliance teams.', + description: 'Operators, integrators, and compliance teams with approved access.', limits: 'Approved sources only, role-based access, bounded query depth, and rate limits.', }, { name: 'Institutional', - description: 'Regulated firms, marketplaces, and service providers.', + description: 'Regulated firms, marketplaces, and service providers operating under review.', limits: 'Contractual use terms, approval gates, and stricter access control.', }, { name: 'Enterprise', - description: 'Market operators and platform teams.', + description: 'Market operators and platform teams requiring tenant-specific governance.', limits: 'Custom SLAs, tenant-specific redaction policies, and governance reporting.', }, ]; export const gftdMarketplacePersonaNeeds = [ 'Compliance analyst: rights status, publication boundaries, and audit trails.', - 'Integration engineer: stable API, live adapters, and predictable responses.', + 'Integration engineer: stable APIs, live adapters, and predictable responses.', 'Marketplace operator: packaging, tiers, onboarding, and feature gating.', - 'Legal counsel: evidence refs, disclaimers, and approval records.', + 'Legal counsel: evidence references, disclaimers, and approval records.', 'Operations / SRE: health checks, observability snapshots, and runtime limits.', 'Institutional customer: approved data, support, and acceptance artifacts.', ]; @@ -43,12 +43,35 @@ export const gftdMarketplaceGuardrails = [ 'No redistribution of restricted data without rights approval.', ]; +export const gftdMarketplaceFaq = [ + { + question: 'What does GFTD provide?', + answer: + 'A rights-aware entity directory with approved live source lanes, public-safe redaction, and bounded observability for institutional use.', + }, + { + question: 'Does access grant legal authority or payment rights?', + answer: + 'No. Marketplace access only governs use of the service. It does not confer legal authority, licensing, or payment authorization.', + }, + { + question: 'What is required before access is activated?', + answer: + 'The approved source-rights record, marketplace entitlement review, and operator activation path must all be satisfied.', + }, + { + question: 'Can restricted fields be republished?', + answer: + 'Only when the relevant rights, publication, and redaction controls explicitly permit it. Public-safe outputs remain redacted by default.', + }, +]; + export const gftdMarketplaceService: GftdMarketplaceService = { name: 'GFTD Directory', href: '/marketplace/gftd', productSlug: 'phoenix-gftd-directory', description: - 'Rights-aware entity intelligence with live approved source lanes, redacted public-safe outputs, subscription tiers, and bounded observability.', + 'Institutional entity intelligence with approved live source lanes, public-safe redaction, access tiers, and bounded observability.', serviceUrl: 'https://gftd.d-bis.org', category: 'Internet registry & compliance', };