From ef1e0eb8f767e679ed7d79be9d92657719392b6d Mon Sep 17 00:00:00 2001 From: Alex Godoroja Date: Sat, 20 Jun 2026 20:31:43 -0700 Subject: [PATCH] publish: add a signed Publisher Release Agreement at submit time Add a release form to the final step of the publish wizard. Before an app can be submitted, the publisher signs a short release that (1) confirms they have the right to publish, (2) grants Pilot Protocol a license to use their name and the app's name to list and promote it in the app store and on the website, and (3) releases us from claims arising from that authorized use. - New legal page /publisher-agreement with the full agreement (name/likeness license grant + covenant not to sue), styled to match /terms and /aup. - Review step gains a Release agreement card: a typed full-legal-name signature and an agree checkbox. The Submit button stays disabled until both are provided, and doSubmit guards on them as the authoritative check. - Submission payload carries release { agreement_version, signer_name, agreed, signed_at } so the server can record the signed acceptance. - Footer, sitemap, intro requirements, and the /plain/publish twin updated. --- src/components/Footer.astro | 1 + src/pages/plain/publish.astro | 4 +- src/pages/publish.astro | 53 ++++++++++++++-- src/pages/publisher-agreement.astro | 93 +++++++++++++++++++++++++++++ src/pages/sitemap.xml.ts | 2 +- 5 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 src/pages/publisher-agreement.astro diff --git a/src/components/Footer.astro b/src/components/Footer.astro index f197e1e..52ea61d 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -45,6 +45,7 @@ Cookie Policy Terms of Service Acceptable Use + Publisher Agreement Cookie Preferences Press Kit diff --git a/src/pages/plain/publish.astro b/src/pages/plain/publish.astro index a7a41d7..fda90eb 100644 --- a/src/pages/plain/publish.astro +++ b/src/pages/plain/publish.astro @@ -21,7 +21,7 @@ import PlainLayout from '../../layouts/PlainLayout.astro';
  • Methods: each method an agent can call — name (<ns>.<verb>), HTTP route, latency class (fast under 5s, medium up to 15s, slow up to 1 minute), description, and parameters.
  • Listing: display name, description, license, and categories for the store page.
  • Vendor: who you are, how autonomous agents should use the app, and the list of capabilities.
  • -
  • Review and submit: the server builds, signs, and verifies the adapter and stores it for review.
  • +
  • Review and submit: sign the Publisher Release Agreement (type your full legal name and check the box), then the server builds, signs, and verifies the adapter and stores it for review.
  • Publish by PR

    @@ -46,7 +46,7 @@ import PlainLayout from '../../layouts/PlainLayout.astro'; diff --git a/src/pages/publish.astro b/src/pages/publish.astro index 62c3f65..ed5dce4 100644 --- a/src/pages/publish.astro +++ b/src/pages/publish.astro @@ -34,7 +34,7 @@ const canonicalUrl = 'https://pilotprotocol.network/publish';
  • Your keys stay yours. Secrets are never collected here — operators supply them at install time.
  • Every submission is reviewed by our team before it appears in the store.
  • We'll keep you posted by email — a confirmation when you submit, and again when your app is approved or needs changes.
  • -
  • By submitting you confirm you have the right to publish this app and agree to the Terms and Acceptable Use Policy.
  • +
  • You sign a short release at the end. Before submitting you confirm you have the right to publish this app, grant us permission to use your name and the app's name to list it, and agree to the Terms, Acceptable Use Policy, and Publisher Release Agreement.
  • How it works: describe your app → verify your email → we build & verify the adapter → our team reviews → it's live in the app store.

    @@ -196,6 +196,14 @@ const canonicalUrl = 'https://pilotprotocol.network/publish'; #publish .banner.ok { background:#eef7f0; border:1px solid #b9dcc0; color:oklch(0.42 0.16 145); } #publish .explain { background:#f3f2ec; border:1px solid var(--c-line); border-radius:11px; padding:14px 16px; font-size:14px; color:var(--c-dim); margin-bottom:18px; line-height:1.5; } #publish .explain code { color:oklch(0.5 0.17 142); font-family:var(--mono,monospace); } + + /* ── release agreement (final step) ── */ + #publish .card.release { padding:26px 30px; } + #publish .release-h { font-size:18px; font-weight:650; margin:0 0 10px; color:var(--c-ink); } + #publish .release-p { font-size:15px; line-height:1.55; color:var(--c-dim); margin:0 0 22px; } + #publish .release a { color:var(--c-acc); text-decoration:underline; } + #publish .agree { display:flex; gap:12px; align-items:flex-start; font-size:15px; line-height:1.5; color:var(--c-ink); cursor:pointer; } + #publish .agree input { width:auto; margin:2px 0 0; flex:none; accent-color:var(--c-acc); }