You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 458c754
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: AGENTS.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Registry Stack Marketplace
2
2
3
3
Separate Astro static marketplace for marketplace.registrystack.org.
4
-
Regular GitHub Pages deployment is authorized. Resolve the repository visibility or plan prerequisite before enabling PAGES_DEPLOYMENT_ENABLED. Never change repository visibility without Jeremi’s explicit approval.
4
+
The source repository is public and regular GitHub Pages deployment is authorized. Main may publish only after CI passes and only while PAGES_DEPLOYMENT_ENABLED is exactly true; leave it unset or set it to another value to stop publication.
5
5
6
6
- npm run check:ci validates a clean checkout without private assets.
7
7
- npm run check adds explicit local private-archive verification.
@@ -14,6 +14,7 @@ Regular GitHub Pages deployment is authorized. Resolve the repository visibility
14
14
- Source archives stay in ignored content/downloads/, never public/ or dist/.
15
15
- Download pack opens a request form. Only confirmed requests count as submitted; no automatic file delivery.
16
16
- Keep personal data out of analytics. Local preview must not contact production analytics, bridge, or form endpoints.
17
+
- Keep PUBLIC_SHARED_TRACKING_ENABLED false until the protocol-v3 website and documentation changes are ready for coordinated publication. Production builds must also leave analytics and form configuration empty until those integrations are deliberately enabled.
17
18
- PublicSchema badges require recorded source provenance. Preserve attribution, licences, and archive integrity.
18
19
- Contributions open user-reviewed GitHub drafts. Never send issues automatically.
19
20
- Studio uses its checked local starter catalogue. Do not invent a launch or import protocol.
Copy file name to clipboardExpand all lines: README.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Registry Stack Marketplace
2
2
3
-
Astro static site for marketplace.registrystack.org, kept local and unpublished for review. The source lives in the private registrystack/marketplace repository. Regular GitHub Pages deployment is prepared, with activation pending the repository visibility or plan prerequisite.
3
+
Astro static site for marketplace.registrystack.org. The source is public at https://github.com/registrystack/marketplace. Regular GitHub Pages deployment can publish the verified main-branch artifact after CI passes and the deployment switch is enabled.
4
4
5
5
## Review locally
6
6
@@ -10,9 +10,9 @@ Requires Node 24 or later and npm.
10
10
npm run check:ci
11
11
npm run dev
12
12
13
-
Open http://127.0.0.1:4317. The server binds to loopback. The generated site is in dist/. Review builds include noindex metadata, a disallow-all robots.txt, and an X-Robots-Tag header from the local server. Publication requires a deliberate change to those controls.
13
+
Open http://127.0.0.1:4317. The server binds to loopback. The generated site is in dist/. Review builds and the initial Pages publication include noindex metadata and a disallow-all robots.txt. The local server also adds an X-Robots-Tag header. Indexing requires a deliberate change to those controls.
14
14
15
-
The local preview loads no analytics, shared consent bridge, or request endpoint. The request popup can be filled in for review, but Send request is disabled. No production form submissions are needed for verification.
15
+
The default build loads no analytics, shared consent bridge, or request endpoint. The request popup can be filled in for review, but Send request is disabled. No production form submissions are needed for verification.
16
16
17
17
## Catalogue and pages
18
18
@@ -45,7 +45,7 @@ The allowlisted marketplace_action event distinguishes download_intent from requ
45
45
46
46
Optional Mautic page activity uses the existing main-site consent bridge. The prepared integration adds the marketplace to a fresh protocol-v3 consent scope across the website, documentation, and marketplace. Earlier consent does not silently cover the extra property. DNT, GPC, refusal, expiry, and bridge failures keep optional tracking off. The marketplace cannot request the bridge's browser identity. Its form uses the unlinked kiosk request mode, regardless of tracking choice.
47
47
48
-
The main website and documentation need their matching protocol-v3 preparations published together with any eventual marketplace launch. No such publication has occurred.
48
+
PUBLIC_SHARED_TRACKING_ENABLED must also be exactly true before a marketplace build can contact the shared consent bridge. It defaults to false. Keep it false until the main website and documentation have their matching protocol-v3 changes ready for coordinated publication.
49
49
50
50
## Source archives and verification
51
51
@@ -71,18 +71,18 @@ Archive checks prove integrity and native file closure. They do not establish pr
71
71
72
72
Prepared main-site changes keep its solution stories and leave current starter pages active by default. Only PUBLIC_MARKETPLACE_MIGRATION_ENABLED=true enables the 85 starter redirects and marketplace collection links. The prepared static redirects are HTML meta refresh documents, not HTTP 301 responses. The exact route map can later configure an edge redirect layer. No live routes have changed.
73
73
74
-
For compatibility with the existing native request form, requests use request_type=starter and starter_id for every free pack, including integration packs. Reporting should treat starter_id as the general pack identifier; the public UI calls these packs. Before enabling live sending, verify that the existing form gateway allows the exact marketplace origin and preserves the canonical marketplace source_page. These hosting and endpoint changes have not been made.
74
+
For compatibility with the existing native request form, requests use request_type=starter and starter_id for every free pack, including integration packs. Reporting should treat starter_id as the general pack identifier; the public UI calls these packs. Before enabling live sending, verify that the existing form gateway allows the exact marketplace origin and preserves the canonical marketplace source_page. The initial Pages publication leaves the request endpoint unconfigured, so visitors can fill the dialog but cannot send it.
75
75
76
76
## Repository and CI
77
77
78
-
The repository is private at https://github.com/registrystack/marketplace. Marketplace CI runs on pull requests, pushes to main, and manual dispatch. Its build token is read-only. A separate Pages deployment job has the Pages and OIDC permissions required for publication; it runs only after successful checks on main and when PAGES_DEPLOYMENT_ENABLED is exactly true. Official actions are pinned to immutable commits.
78
+
The repository is public at https://github.com/registrystack/marketplace. Marketplace CI runs on pull requests, pushes to main, and manual dispatch. Its build token is read-only. A separate Pages deployment job has the Pages and OIDC permissions required for publication; it runs only after successful checks on main and when PAGES_DEPLOYMENT_ENABLED is exactly true. Leaving the variable unset or changing it from true provides an emergency publication stop. Official actions are pinned to immutable commits.
79
79
80
-
The workflow installs locked dependencies, runs check:ci, executes browser journeys on a temporary loopback server, and checks the fully intercepted request/analytics funnel. It uploads only the verified dist/ site and browser review images, retained for seven days. Preview output rejects ZIPs and other archives, private asset paths, live request/analytics configuration, and indexable HTML.
80
+
The workflow installs locked dependencies, runs check:ci, executes browser journeys on a temporary loopback server, and checks the fully intercepted request/analytics funnel. It uploads only the verified dist/ site and browser review images, retained for seven days. The deployment build sets PUBLIC_SHARED_TRACKING_ENABLED to false and leaves Umami and request endpoint configuration empty. Preview output rejects ZIPs and other archives, private asset paths, live request/analytics configuration, and indexable HTML.
81
81
82
82
The tracking protocol and shared client are pinned by data/tracking-contract.json. The explicit local cross-site integration check compares maintained checkouts without making the standalone CI depend on sibling repositories:
Those pins describe the prepared protocol-v3 integration. They do not claim that the main website and documentation have been deployed with it.
86
+
Those pins describe the prepared protocol-v3 integration. They do not establish that the main website and documentation have published it, so shared tracking remains separately build-gated.
87
87
88
-
The selected host is regular GitHub Pages. Pull requests produce CI review artifacts; main can publish the checked Pages artifact after explicit activation. GitHub currently refuses Pages activation for this private repository on the organization plan. See docs/github-pages.md for activation steps and the Cloudflare DNS configuration. No separate PR hosting service is required.
88
+
The selected host is regular GitHub Pages. Pull requests produce downloadable CI review artifacts but no hosted PR environment. Main can publish the checked Pages artifact after explicit activation. See docs/github-pages.md for repository configuration, deployment controls, and the Cloudflare DNS record. No separate PR hosting service is used.
Copy file name to clipboardExpand all lines: docs/github-pages.md
+9-7Lines changed: 9 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,9 @@
2
2
3
3
The marketplace uses the regular GitHub Pages deployment from the checked main branch. CI still runs on every pull request. It publishes only after checks pass, from main, and when the repository variable PAGES_DEPLOYMENT_ENABLED is exactly true. Pull requests never deploy to the production Pages environment.
4
4
5
-
## Current activation prerequisite
5
+
## Repository visibility and private Pages
6
6
7
-
The repository was created private. GitHub rejected Pages activation because the current organization plan does not support Pages for this private repository. The repository must either become public with the owner's explicit approval, or the organization must use a GitHub plan that supports private-repository Pages. Changing source visibility and changing website visibility are different actions; a public website does not require its source to be public on a suitable plan.
7
+
This repository is public. GitHub plan support matters if a future repository or fork is private: private-repository Pages requires a plan that includes it, while a public repository can use public GitHub Pages. Changing source visibility and changing website visibility remain separate decisions; a public website does not require public source on a plan that supports private-repository Pages.
8
8
9
9
No private archive bytes are tracked or uploaded. The 87 request-only ZIPs remain in ignored content/downloads/. Only static catalogue pages, CSS, and browser scripts enter the checked deployment artifact.
10
10
@@ -22,21 +22,23 @@ In the registrystack.org Cloudflare zone:
22
22
23
23
The equivalent Cloudflare API request body is in [cloudflare-dns.json](cloudflare-dns.json). TTL 1 represents Auto. The CNAME target is the organization hostname, without a repository path.
24
24
25
-
Because this record is DNS only, GitHub serves the TLS certificate. Cloudflare's proxy SSL mode does not control this hostname.
25
+
The DNS-only CNAME has been verified against registrystack.github.io. GitHub serves the TLS certificate, so Cloudflare's proxy SSL mode does not control this hostname. DNS correctness alone does not establish that a Pages deployment is live.
26
26
27
-
## GitHub activation
27
+
## GitHub configuration and deployment
28
28
29
-
After resolving the repository plan or visibility prerequisite:
29
+
The repository uses this configuration:
30
30
31
31
1. In repository Settings, Pages, select GitHub Actions as the deployment source.
32
32
2. Set the custom domain to marketplace.registrystack.org. A CNAME file in this repository is not required by the Actions publishing method.
33
33
3. Confirm DNS points to registrystack.github.io and enable Enforce HTTPS when GitHub has issued the certificate. Certificate provisioning can take up to 24 hours.
34
34
4. Set the repository variable PAGES_DEPLOYMENT_ENABLED to true.
35
35
5. Run Marketplace CI on main, or push a main-branch change. The deploy job consumes the same artifact that passed the checks.
36
36
37
-
Setting the activation variable to any other value disables publication. GitHub Pages must be enabled first; the flag does not bypass a GitHub plan restriction.
37
+
Setting the activation variable to any other value disables publication and can be used as an emergency stop. GitHub Pages must be enabled first; the flag does not bypass a GitHub plan restriction.
38
38
39
-
The initial deployment retains noindex metadata and disallow-all robots.txt while the content remains under review. Form submissions and analytics remain unconfigured. Removing those review controls and enabling live integrations require a deliberate subsequent change.
39
+
The initial deployment retains noindex metadata and disallow-all robots.txt while the content remains under review. The workflow sets PUBLIC_SHARED_TRACKING_ENABLED to false and leaves Umami analytics and the form endpoint unconfigured. Visitors can fill the request dialog, but its Send request button remains disabled. Removing the review controls or enabling any live integration requires a deliberate subsequent change.
40
+
41
+
Pull requests upload the verified site as a downloadable CI artifact. They do not receive a hosted preview URL or deploy to GitHub Pages.
assert.doesNotMatch(content,/data-(?:endpoint|umami-script-src|umami-website-id)="[^\"]+"/,'Review builds cannot include live form or analytics configuration.');
assert.equal(bridgeRequests,0,"Shared tracking stays disabled on the canonical origin until explicitly configured.");
69
72
assert.deepEqual(unexpected,[]);
70
73
assert.deepEqual(errors,[]);
71
74
console.log('PASS: mocked request popup, failed-request retention, confirmed submission, separate intent/submission analytics, no visitor data in analytics, no production network.');
0 commit comments