An explorable essay is not a static article with a widget attached. The prose, figures, data, source notes, and proof gates need one folder contract so each claim can change without breaking the route.
Question
How should a technical article carry long-form prose and interactive figures without making every paragraph depend on runtime JavaScript? The platform blueprint answers with a static-first rule1: ship the article as HTML, then hydrate only the figures that need state.
Local Model
The working model has five layers. MDX owns the content. Astro owns the publication shell. React islands own interactive figures. Data artifacts feed those figures before build time. Tests, Storybook states, browser checks, and scaffold validation prove that the page still renders.
Mechanism
Each essay folder contains the article, configuration, data, assets, and figure code. That keeps the local proof close to the claim: pure model logic gets unit tests, visual states get Storybook, and rendered pages get Playwright coverage.
Proof Ladder
This article now carries its first article-owned data artifact: a checked-in proof ladder derived from the platform blueprint. It names the owner and gate for each layer before future figures add runtime state.
| Layer | Owner | Gate |
|---|---|---|
| Content | index.mdx | Astro content route renders the essay slug. |
| Publication shell | EssayRenderer.astro | Astro build emits the static essay route. |
| Interactive islands | figures/ | Future figure islands must ship fixtures, Storybook states, and model tests. |
| Data artifacts | data/proof-ladder.json | Zod parsing and unit tests reject missing or reordered proof steps. |
| Verification | staticFirstEssay.test.ts and home.spec.ts | Vitest, Playwright, static build, and scaffold validation pass. |
Proof Flow
The first dedicated article figure reads the same proof-ladder data instead of copying a second diagram by hand. The SVG and gate list are static output, so the article gains a figure without adding hydration work.
- Content
index.mdxAstro content route renders the essay slug. - Publication shell
EssayRenderer.astroAstro build emits the static essay route. - Interactive islands
figures/Future figure islands must ship fixtures, Storybook states, and model tests. - Data artifacts
data/proof-ladder.jsonZod parsing and unit tests reject missing or reordered proof steps. - Verification
staticFirstEssay.test.ts and home.spec.tsVitest, Playwright, static build, and scaffold validation pass.
Figure 2. Proof Ladder Flow proof metadata
- FigureProof renders the figure title and caption through the shared FigureFrame shell.
- ProofLadderFlow consumes article-owned proof-ladder data without client hydration.
- Playwright verifies non-empty SVG nodes, links, and proof gates.
Gate Inspector
The first stateful figure keeps the same data boundary. It hydrates only the inspector, then lets the reader switch proof layers while the owner, claim, and gate still come from the checked-in ladder.
Content
- Owner
index.mdx- Claim
- The article body stays in MDX so prose can render as static HTML.
- Gate
- Astro content route renders the essay slug.
Interactive Figure 3. Proof Gate Inspector proof metadata
- FigureProof keeps source metadata outside the hydrated React island.
- ProofGateInspector hydrates only the interactive figure controls with client:visible.
- Playwright verifies the island, selected layer state, source summary, and reset path.
Scrollytelling Primitive
The scrollytelling proof follows the blueprint’s minimal model: an Astro wrapper hydrates one small React island, the active step comes from fixed article-owned data IDs, and the route keeps a useful static first render before the observer updates. The island now passes that active step into one child figure through props, proving the first child-context boundary without adding a registry.
Cross-article scrollytelling registries are explicitly vetoed: No cross-article scrollytelling registry is accepted for this static-first route until a registry contract, article ownership model, and repeated-article choreography need are source-registered and proven.
General child-figure choreography frameworks are explicitly vetoed: No general child-figure choreography framework is accepted for this static-first route until repeated child-figure needs, a state ownership contract, and a testing strategy are source-registered and proven.
Step 1
Start With the Static Route
The primitive keeps a useful first render: the reader sees the active step, progress rail, source note, and gate text in HTML.
- Step IDs are fixed data fields, not prose-derived state.
- The article owns the step data artifact.
- The scrolly section renders readable HTML before client state updates.
Step 2
Hydrate One Visible Primitive
The hydrated island tracks the visible step and updates the sticky summary without creating a global timeline framework.
- The wrapper uses client:visible.
- The island owns only local active-step state.
- No external analytics transport or cross-article observer registry is introduced.
Step 3
Prove the Boundary
Passing tests prove the primitive boundary without claiming child-figure context, choreography, or a general scrollytelling framework.
- The browser route exposes the accepted scrollytelling marker.
- Mobile layout avoids horizontal overflow.
- Future child-figure step context remains a separate proof.
Scroll Analytics
The first scroll analytics boundary stays local to the page. When the active Scrolly step changes, the island dispatches a scrolly:step-change event whose detail contains only the artifact ID, source ID, active step ID, target ID, and trigger. The same island reduces those events into scrolly:step-aggregate session counts keyed by fixed step IDs and triggers. A route-level boundary listens for that aggregate and emits a local route:analytics-summary event with the route ID, source ID, last artifact, active step, and fixed artifact totals. A first transport adapter can queue the Scrolly aggregate through a same-origin navigator.sendBeacon endpoint when one is passed in, but this published route leaves the endpoint unconfigured. The live collector boundary is explicitly vetoed until a collector runtime is source-registered and proven. Persistent reader tracking is explicitly vetoed until reader identity, storage, retention, and consent boundaries are source-registered and proven. The third-party provider boundary is also explicitly vetoed: no provider SDK, remote script, provider project ID, cross-origin collection endpoint, cookie, fingerprint, persistent reader identity, dashboard, retention, or delivery guarantee is accepted. Cross-article analytics registries are explicitly vetoed until a registry contract, ownership model, and collector boundary are source-registered and proven.
- Event
scrolly:step-change- Payload
- Fixed article IDs only
- Aggregation
- In-memory session counts
- Transport
- Optional same-origin Beacon adapter, endpoint not configured
- Route Summary
route:analytics-summarywith local route totals- Collector
- No live analytics collector is accepted for this static-first route until a source-registered runtime endpoint exists.
- Reader Tracking
- No persistent reader tracking is accepted for this static-first route until reader identity, storage, retention, and consent boundaries are source-registered and proven.
- Provider
- No third-party analytics provider is accepted for this static-first route until a provider, data contract, and privacy boundary are source-registered and proven.
- Registry
- No cross-article analytics registry is accepted for this static-first route until a registry contract, ownership model, and collector boundary are source-registered and proven.
- Not Claimed
- No live collector, third-party provider, provider SDK, persistent reader tracking, cross-article analytics registry, global analytics artifact map, or shared analytics event bus
Generated Data
The article now has its first generated data pipeline. A deterministic script reads the checked-in proof ladder, emits a generated gate summary, and exposes a check mode so stale data fails before the article builds.
| Metric | Value |
|---|---|
| Artifact | static-first-proof-gate-summary |
| Pipeline | scripts/generate_static_first_gate_summary.py |
| Total gates | 5 |
| Unique owners | 5 |
| Final gate | Vitest, Playwright, static build, and scaffold validation pass. |
Visual Baseline
The first visual-regression proof is local and article-owned. Playwright now snapshots the static proof-flow figure and one hydrated gate-inspector state, so layout drift in either proof surface has a committed baseline to compare against.
CI Proof
The first CI proof keeps local screenshot baselines and post-deploy live checks out of the Ubuntu smoke gate, then runs a separate browser command for the static-first route. GitHub Actions now checks generated data drift, unit tests, typecheck, build, Storybook, audit, and CI-safe Playwright coverage before accepting the app gates.
Live Deployment
The first live deployment proof checks the production Cloudflare Pages route at tutorials-e4t.pages.dev. The live probe verifies that the static-first route returns HTML, carries this proof marker, renders the static proof-flow figure, and hydrates the gate-inspector island.
- Provider
- Cloudflare Pages
- Route
/essays/static-first-explorable-essays/- Probe
tests/static-first-live.spec.ts
Preview Deployment
The first preview deployment proof targets a non-production Cloudflare Pages branch alias with PREVIEW_BASE_URL. The preview probe verifies that the static-first route returns HTML, carries this preview marker, sends the preview X-Robots-Tag: noindex header, renders the static proof-flow figure, and hydrates the gate-inspector island.
- Provider
- Cloudflare Pages preview
- Route
/essays/static-first-explorable-essays/- Probe
tests/static-first-preview.spec.ts
Rollback Proof
The first rollback proof records the Cloudflare Pages boundary and the credentialed mutation: rollback targets must be successful production deployments, and preview deployments are not valid rollback targets. The mutation runner used a redacted credential preflight, rolled production back to a named successful deployment, then restored production to the starting deployment after the live probes passed.
- Provider
- Cloudflare Pages production rollback
- Route
/essays/static-first-explorable-essays/- Probe
tests/static-first-rollback.spec.ts- Runner
scripts/cloudflare_pages_rollback_mutation.py- Preflight
npm run deployment:rollback:check-config- Mutation status
- Accepted credentialed proof. Future runs still require
CLOUDFLARE_API_TOKEN,CLOUDFLARE_ACCOUNT_ID, andCLOUDFLARE_PAGES_PROJECTbefore mutating production. - Proof artifacts
artifacts/proofs/tut-026-cloudflare-*.json
Custom-Domain Deployment
The first custom-domain deployment boundary is an explicit veto. No custom-domain deployment guarantee is accepted for this static-first route until a domain name, DNS ownership, custom hostname binding, certificate behavior, Pages production-domain mapping, and focused live checks are source-registered and proven.
- Decision
- explicit_veto
- Accepted
- The published route keeps the accepted Cloudflare Pages production, preview, rollback, and credentialed rollback mutation proofs unchanged.
- Not Claimed
- No DNS record, zone ownership, custom hostname binding, certificate issuance, Pages production-domain mapping, apex or www redirect, HSTS policy, or SSL mode is claimed.
- Next Proof
- Source-register the target domain, DNS and hostname contract, certificate behavior, Pages binding, redirect policy, and focused live checks before claiming custom-domain deployment.
Math Rendering
The first math proof keeps TeX source in article-owned data and renders it with KaTeX during the static build. The route gets HTML and MathML before any figure island hydrates.
Equation 1. Static-First JavaScript Budget
A compact equation expresses the blueprint's static-first rule: the route should ship the shell first, then add only the hydrated islands in the set H.
- Renderer
katex- Source
blueprint-001- Locator
- BLUEPRINT.md sections 3, 5, and 18
- Gate
- Vitest renders this expression through KaTeX, and Playwright verifies KaTeX HTML and MathML on the route.
- The TeX source lives in article-owned data.
- KaTeX renders the expression to static HTML during the Astro build.
- No client hydration directive is required for the rendered math.
MDX Math Parser
The parser proof leaves one source-backed expression in MDX instead of importing the static math component. Astro passes the syntax through remark-math and rehype-katex, then the static route receives KaTeX HTML and MathML.
This boundary proves the shared MDX parser path only. It does not introduce a custom compiler, shared macro system, or cross-article math registry.
Math Macros
The first shared macro proof is limited to two KaTeX rendering-option macros in the Astro MDX pipeline. They shorten repeated platform terms while keeping author-defined macro state, custom compilers, and cross-article registries out of scope.
Cross-article macro registries are explicitly vetoed: No cross-article macro registry is accepted for this static-first route until a registry contract, macro ownership model, author override policy, collision strategy, and renderer test strategy are source-registered and proven.
Author-defined macro state is explicitly vetoed: No author-defined macro state is accepted for this static-first route until an author macro model, ownership boundary, override policy, collision strategy, renderer strategy, and focused tests are source-registered and proven.
Custom math compilers are explicitly vetoed: No custom math compiler is accepted for this static-first route until a compiler contract, MDX compatibility boundary, renderer strategy, authoring syntax, migration plan, and focused tests are source-registered and proven.
- Macros
\StaticRoute,\HydratedIsland- Renderer
rehype-katexwith KaTeXmacros- Source
blueprint-001- Gate
- Vitest and Playwright verify static KaTeX HTML, MathML, and the macro source annotation.
- Registry Boundary
- The published route keeps the existing shared KaTeX macro map frozen in Astro config for two blueprint-backed platform terms.
- State Boundary
- The Math Macros section renders one source-backed MDX expression without reading author-owned macro definitions, route state, browser storage, or external macro files.
- Compiler Boundary
- The published route keeps math rendering on the existing Astro MDX pipeline with remark-math, rehype-katex, and the frozen shared KaTeX macro map.
- Not Claimed
- No cross-article macro registry, global macro catalog, route-fed macro map, author-defined macro storage, macro import protocol, or macro collision resolution policy is introduced.
- State Not Claimed
- No author-defined macro storage, per-article override map, mutable macro registry, macro import block, macro collision policy, or browser-persisted macro state is introduced.
- Compiler Not Claimed
- No custom math compiler, custom markdown dialect, Mathigon-like compiler layer, MDX replacement parser, or compiler-owned authoring syntax is introduced.
- Next Proof
- Source-register an author macro model, ownership boundary, override and collision policy, renderer strategy, and focused tests before accepting author-defined macros.
- Compiler Next Proof
- Source-register a compiler contract, authoring syntax, MDX compatibility boundary, renderer strategy, migration plan, and focused tests before accepting a custom math compiler.
Code Blocks
The first code-block proof is article-owned data. It keeps technical examples inside the essay folder, attaches the source registry boundary, renders through Astro’s Shiki-backed code highlighter as static HTML, and passes the same source text into one shared copy control. Cross-article code registries are explicitly vetoed: No cross-article code registry is accepted for this static-first route until a registry contract, code ownership model, language and highlighter policy, copy-control boundary, and focused tests are source-registered and proven. Broad clipboard guarantees are explicitly vetoed: No broad clipboard guarantee is accepted for this static-first route until a clipboard contract, permission model, browser support matrix, fallback path, and focused tests are source-registered and proven. A general copy-control framework is explicitly vetoed: No general copy-control framework is accepted for this static-first route until repeated article needs, a copy ownership model, accessibility copy, support and fallback policy, delivery contract, and focused tests are source-registered and proven. A custom syntax-highlighting framework is explicitly vetoed: No custom syntax-highlighting framework is accepted for this static-first route until repeated article needs, a language and highlighter policy, theme ownership, renderer contract, accessibility checks, and focused tests are source-registered and proven.
- Registry Boundary
- The published route keeps code examples in this article's checked-in data artifact.
- Not Claimed
- No cross-article code registry, global code-snippet catalog, route-fed code map, code import protocol, or cross-route code dedupe layer is introduced.
- Next Proof
- Source-register a second article need, code ownership model, registry contract, language and highlighter policy, copy-control boundary, and focused tests before enabling a shared code registry.
- Copy Boundary
- The published route keeps the shared copy control limited to one user-click write from article-owned source text.
- Clipboard Not Claimed
- No background clipboard write, automatic copy, read access, browser-wide permission guarantee, cross-browser support guarantee, or clipboard history behavior is introduced.
- Clipboard Next Proof
- Source-register a browser clipboard contract, permission and user-activation model, support matrix, fallback behavior, accessibility copy, and focused tests before claiming a broad clipboard guarantee.
- Framework Boundary
- The published route keeps copy-control behavior in one shared Astro component that receives article-owned source text through props.
- Framework Not Claimed
- No general copy abstraction, copy provider, global copy registry, fallback command layer, support matrix, telemetry, delivery guarantee, or cross-article copy workflow is introduced.
- Framework Next Proof
- Source-register repeated article needs, a copy ownership model, accessibility copy, support and fallback policy, delivery contract, and focused tests before claiming a general copy-control framework.
- Highlighter Boundary
- The published route keeps syntax highlighting on the existing Astro Code component and Shiki output for one article-owned code block.
- Highlighter Not Claimed
- No custom highlighter runtime, custom markdown dialect, code transform framework, theme registry, language plugin registry, or framework-owned renderer contract is introduced.
- Highlighter Next Proof
- Source-register repeated article needs, a language and highlighter policy, theme ownership model, renderer contract, accessibility checks, and focused tests before claiming a custom syntax-highlighting framework.
Example 1. Article-Owned Code Block Contract
A compact TypeScript example shows how a code block can name its source registry entry, local data artifact, and proof gate before a shared copy control copies that exact source text.
export const articleCodeBlockProof = {
sourceId: "blueprint-001",
artifact: "./data/code-blocks.json",
gate: "Vitest + Playwright + build"
} as const; - Language
ts- Source
blueprint-001- Locator
- BLUEPRINT.md sections 2, 7, and 9
- Gate
- Vitest validates this code-block artifact, and Playwright verifies the rendered Shiki-highlighted pre/code block plus the reusable copy payload.
- Code examples live in article-owned data instead of ad hoc inline prose.
- The rendered block exposes its language, source registry ID, and local proof gate.
- The shared copy control uses the same article-owned source text without creating a cross-article code registry.
Appendix
The first appendix proof is article-owned data. It keeps extended material inside the essay folder, names the same source registry boundary, and stays compact enough to render as static HTML.
Appendix A. Source-Backed Long-Form Contract
The platform can attach compact extended material to an article while keeping source registry IDs, local gates, and article ownership visible.
- Source
blueprint-001- Locator
- BLUEPRINT.md sections 2, 5, and 7
- Gate
- Vitest validates this appendix artifact, and Playwright verifies the rendered appendix section.
- Appendix entries live in the article folder, not in a global prose system.
- Each entry names its source registry ID and local proof gate.
- The article renders appendix material as HTML before any optional figure hydration.
A general appendix framework is explicitly vetoed here. The route keeps this appendix inside article-owned data and rejects cross-article appendix registries, shared extended-material models, registry-owned ordering, backlink systems, remote appendix fetches, custom markdown dialects, and generalized footnote, glossary, and appendix bundles until their ownership, ordering, renderer, registry, and focused-test boundaries are source-registered and proven.
Glossary
The first glossary proof is article-owned data. It defines the platform terms that recur across prose, figures, and gates without adding a global terminology system.
- Article-owned data artifact
A lightweight JSON, CSV, or asset file that lives inside one essay folder and feeds that essay's prose, figures, or verification gates.
Source
blueprint-001, BLUEPRINT.md sections 5, 6, and 7. Gate: Vitest validates this glossary artifact, and Playwright verifies the rendered term list.- Island hydration
The pattern where the article ships as static HTML, then hydrates only the interactive React components that need browser state.
Source
blueprint-001, BLUEPRINT.md sections 3 and 5. Gate: The static-first browser smoke keeps the rendered glossary and hydrated figure boundary on the same route.- Static-first essay
A long-form technical article that renders prose and source-backed structure as HTML before adding optional hydrated figures.
Source
blueprint-001, BLUEPRINT.md sections 2 and 5. Gate: The scaffold validator keeps the article folder contract registered beside this glossary proof.
Cross-article glossary frameworks are explicitly vetoed here: No cross-article glossary framework is accepted for this static-first route until repeated article needs, term ownership, slug and reference rules, renderer behavior, registry boundaries, and focused tests are source-registered and proven. A general glossary framework is explicitly vetoed here: No general glossary framework is accepted for this static-first route until repeated article needs, term ownership, framework-owned definitions, slug and collision policy, backlink behavior, renderer contract, and focused tests are source-registered and proven.
Cross-Article Not Claimed
No cross-article glossary framework, global terminology registry, route-fed glossary map, shared term dedupe layer, registry-owned slug system, or remote glossary fetch is introduced.
General Boundary
The route uses the existing glossary schema for alphabetized terms, stable slugs, source locators, and proof gates without framework-owned definitions.
General Not Claimed
No general glossary framework, framework-owned definitions, automatic backlink system, global collision policy, custom glossary syntax, or remote glossary fetch is introduced.
General Next Proof
Source-register repeated article needs, a term ownership model, definition source, slug and collision policy, backlink behavior, renderer contract, and focused tests before claiming a general glossary framework.
Source Notes
The first citation proof is article-owned data. The note below resolves a rendered claim to the registered blueprint source and keeps the proof gate beside the article. A full citation manager and footnote list component are explicitly vetoed: No full citation manager or footnote list component is accepted for this static-first route until a citation data model, reference syntax, backlink contract, ownership boundary, and renderer strategy are source-registered and proven.
-
Back to claim Static-first platform layers. The blueprint requires MDX essays, frontmatter, citations, article metadata, publication-shell footnotes, article-owned data, and verification gates for source-backed long-form articles.
- Source
blueprint-001- Locator
- BLUEPRINT.md sections 2, 5, and 6
- Gate
- Vitest validates this source-note artifact, and Playwright verifies the rendered reference and note.
- System Boundary
- explicit_veto
- Accepted
- The published route keeps the existing source-note data article-owned and renders one blueprint-backed reference through the shared SourceNoteReference component.
- Not Claimed
- No full citation manager, general bibliography parser, BibTeX or CSL import path, global citation data store, or cross-article citation registry is introduced.
- Next Proof
- Source-register a citation and footnote model, article versus shared ownership boundary, reference syntax, backlink behavior, parser or renderer strategy, and focused tests before enabling a full citation or footnote system.
Source Boundary
The source boundary now renders from article-owned data instead of prose-only markup. The shared component exposes the accepted platform claims and the unclaimed system boundaries without fetching remote sources or hydrating client state.
Limits
This article rewrites the accepted platform blueprint. It does not promote third-party downloads, copy inspected site prose, or claim that every future article needs the same figure technology. Canvas and WebGL remain article-level choices. The two data-backed figure wrappers now use a reusable figure proof primitive while their figure data stays article-owned. The deployment stack now includes an explicit custom-domain veto; it still does not claim Cloudflare build-setting enforcement, unauthenticated rollback mutation, or rollback safety beyond the tested Cloudflare Pages production route. The shared source-boundary summary, shared source-note reference, one explicit full citation and footnote-system veto, first static math renderer, MDX math parser path, narrow shared math macros, one explicit cross-article macro registry veto, one explicit author-defined macro state veto, one explicit custom math compiler veto, one Astro Code/Shiki-highlighted article block, one explicit custom syntax-highlighting framework veto, one reusable copy control fed by article-owned code, one explicit cross-article code registry veto, one explicit broad clipboard guarantee veto, one explicit general copy-control framework veto, one article-owned glossary, one explicit cross-article glossary framework veto, one explicit general glossary framework veto, one article-owned appendix, one explicit general appendix framework veto, one reusable scrollytelling primitive, one child-figure scrolly context, one explicit cross-article scrollytelling registry veto, one explicit general child-figure choreography framework veto, one local scroll analytics event, one in-memory analytics aggregate, one optional same-origin Beacon transport adapter, one local route analytics summary, one reusable article artifact index, one reusable article starter manifest, one reusable article starter workflow, one reusable starter-readiness rollup, one reusable starter-handoff packet, one reusable article evidence trail, one reusable article proof manifest, one reusable article verification matrix, one reusable release-readiness rollup, and one explicit custom-domain deployment veto are proven. A runtime source-boundary crawler, full citation or footnote system, custom-domain deployment guarantee, live analytics collector, persistent reader tracking, third-party analytics provider, cross-article analytics registry, cross-article scrollytelling registry, cross-article macro registry, cross-article code registry, broad clipboard guarantee, general copy-control framework, custom syntax-highlighting framework, cross-article glossary framework, general glossary framework, general appendix framework, author-defined macro state, custom math compiler, cross-article artifact registry, global starter registry, global starter readiness registry, global starter workflow registry, global starter handoff registry, starter package generator, runtime starter filesystem scan, global evidence registry, global proof registry, release dashboard, remote status fetch, automated proof inference, global verification registry, CI dashboard integration, remote build log fetch, live deployment status poller, CMS task store, remote artifact scan, remote template fetch, global release readiness registry, automated release decision, cross-article figure proof registry, and general child-figure choreography framework are explicitly vetoed for this route until source-registered citation data, reference syntax, backlink, renderer, runtime, identity, storage, provider, registry, ownership, code, clipboard, glossary, appendix, highlighter, macro, compiler, domain, DNS, certificate, hostname, figure metadata, artifact inventory, starter ownership, starter workflow ownership, starter readiness ownership, starter handoff ownership, evidence registry, proof registry, verification registry, release readiness, and privacy boundaries exist. Source-registered third-party provider integration remains a future proof.
The reusable article artifact index is proven only as static article-owned content, data, primitive, and verification file groups. It does not introduce a global artifact registry, CMS task store, remote filesystem scan, runtime source crawl, or personalized editor progress.
The reusable article starter manifest is proven only as static article-owned starter contract groups. It does not introduce a global starter registry, starter package generator, runtime filesystem scan, remote template fetch, CMS task store, or personalized editor progress.
The reusable article starter workflow is proven only as static article-owned workflow steps for copying the starter, replacing tokens, registering sources, wiring data, rendering primitives, and closing local gates. It does not introduce a global starter workflow registry, starter package generator, runtime filesystem scan, remote template fetch, CMS task store, or personalized editor progress.
The reusable starter-readiness rollup is proven only as static counts and local artifact routes derived from article-owned starter manifest and starter workflow data. It does not introduce a starter dashboard, generated starter package, runtime filesystem scan, remote template fetch, CMS task store, global starter readiness registry, or personalized editor progress.
The reusable starter-handoff packet is proven only as static counts and local routes derived from article-owned starter manifest, starter workflow, starter-readiness, and release-handoff data. It does not introduce a starter dashboard, generated starter package, runtime filesystem scan, remote template fetch, CMS task store, global starter handoff registry, or personalized editor progress.
The reusable article evidence trail is proven only as static article-owned evidence items that map source-backed claims to local artifacts and gates. It does not introduce a global evidence registry, remote log fetch, CI dashboard, CMS task store, automated claim inference, or personalized editor progress.
The reusable article claim ledger is proven only as static article-owned source-claim decisions. It does not introduce a global claim ledger, remote source crawl, automated claim inference, CMS review queue, client-hydrated claim review, or personalized editor progress.
The reusable article claim map is proven only as static article-owned claim-to-evidence routes. It does not introduce a global claim routing registry, automated claim routing, remote source crawl, CMS review queue, client-hydrated claim map, or personalized editor progress.
The reusable article proof manifest is proven only as static article-owned proof packets. It does not introduce a global proof registry, release dashboard, automated proof inference, remote status fetch, CMS review queue, or personalized editor progress.
The reusable article verification matrix is proven only as static article-owned verification groups, commands, targets, and evidence. It does not introduce a global verification registry, CI dashboard integration, remote build log fetch, live deployment status poller, or personalized editor progress.
The reusable article release handoff is proven only as static article-owned handoff packets. It does not introduce a release dashboard, remote deployment status fetch, CMS task store, automated publish orchestration, global handoff registry, or personalized editor progress.
The reusable release-readiness rollup is proven only as static counts and local artifact routes derived from article-owned checklist, proof-manifest, verification-matrix, and release-handoff data. It does not introduce a release dashboard, remote status fetch, automated release decision, CMS queue, global readiness registry, or personalized editor progress.
The reusable article checklist primitive is proven only as static article-owned publish-readiness data. It does not introduce a CMS task store, global authoring workflow engine, remote checklist fetch, or reader/editor progress state.
The reusable publication QA summary is proven only as a static summary over article-owned checklist and source-boundary data. It does not introduce a global QA registry, authoring workflow engine, CMS task store, remote checklist or source-boundary fetch, or personalized editor progress.
The reusable authoring flow primitive is proven only as static article-owned authoring checkpoints. It does not introduce a global workflow engine, CMS task store, remote workflow fetch, or personalized editor progress.
The reusable publication workflow primitive is proven only as static article-owned publication milestones. It does not introduce a global workflow engine, release dashboard, CMS task store, remote workflow fetch, or personalized editor progress.
Publish Readiness
This pass moves the article out of shell status for the tested platform boundary. The accepted stack covers source-registered prose, article-owned data, the reusable article artifact index, the article promotion-readiness gate, the reusable article starter manifest, the reusable article starter workflow, the reusable starter-readiness rollup, the reusable starter-handoff packet, the reusable article claim ledger, the reusable article claim map, the reusable article evidence trail, the reusable article proof manifest, the reusable article verification matrix, the reusable article release handoff, the reusable release-readiness rollup, the reusable publication workflow primitive, the reusable authoring flow primitive, the reusable article checklist primitive, the reusable publication QA summary, static and hydrated figures, the reusable figure proof primitive, the reusable scrollytelling primitive and its first child-figure context, one explicit cross-article scrollytelling registry veto, one explicit general child-figure choreography framework veto, generated data, local visual baselines, CI-safe browser proof, live and preview deployment probes, rollback mutation proof, one explicit custom-domain deployment veto, source notes, the shared source-note reference component, one explicit full citation and footnote-system veto, appendix material, one explicit general appendix framework veto, glossary terms, one explicit cross-article glossary framework veto, one explicit general glossary framework veto, static code blocks, Astro Code/Shiki syntax highlighting, one explicit custom syntax-highlighting framework veto, the reusable copy control, one explicit cross-article code registry veto, one explicit broad clipboard guarantee veto, one explicit general copy-control framework veto, static KaTeX math rendering, the MDX math parser path, narrow shared math macros, one explicit cross-article macro registry veto, one explicit author-defined macro state veto, one explicit custom math compiler veto, local scroll analytics, in-memory analytics aggregation, an optional same-origin Beacon transport adapter, one local route analytics summary, one explicit live collector veto, one explicit persistent reader tracking veto, one explicit third-party provider veto, and one explicit cross-article analytics registry veto.
Artifact Index
Static-First Artifact Index
The index names the local content, data, primitive, and verification files that must stay aligned before the route claims publication readiness.
- 1. Content shell Accepted
Route prose, frontmatter, and article configuration stay in the article folder.
-
- Artifact
index.mdx- Kind
- content
- Gate
- Content collection and browser smoke verify the rendered route.
-
- Artifact
essay.config.ts- Kind
- configuration
- Gate
- Focused unit tests verify accepted proofs, rejected boundaries, and data artifact records.
-
- 2. Article data Accepted
Checked-in JSON artifacts and route-visible TypeScript loaders carry source boundaries, checklists, workflow, claim ledgers, claim maps, proof manifests, evidence trails, verification matrices, release handoffs, and authoring state.
-
- Artifact
data/source-boundary.json- Kind
- data
- Gate
- Zod loader and ArticleSourceBoundary browser coverage keep accepted and rejected claims local.
-
- Artifact
data/article-artifact-index.json- Kind
- data
- Gate
- Zod loader verifies group order and item uniqueness before tests and build.
-
- Artifact
data/promotion-readiness.json- Kind
- data
- Gate
- ArticlePromotionReadiness consumes checked-in focused command and promotion gate metadata.
-
- Artifact
data/article-sections.json- Kind
- data
- Gate
- ArticleSectionNav uses the checked-in section data rendered by the route.
-
- Artifact
data/article-checklist.json- Kind
- data
- Gate
- ArticleChecklist and release readiness use the checked-in publish-readiness checklist.
-
- Artifact
data/article-starter-manifest.json- Kind
- data
- Gate
- Zod loader verifies starter contract group order, entry order, and unique IDs before tests and build.
-
- Artifact
data/article-starter-workflow.json- Kind
- data
- Gate
- Zod loader verifies starter workflow step order and unique IDs before tests and build.
-
- Artifact
data/article-evidence-trail.json- Kind
- data
- Gate
- Zod loader verifies evidence item order and item uniqueness before tests and build.
-
- Artifact
data/article-claim-ledger.json- Kind
- data
- Gate
- Zod loader verifies claim order and claim uniqueness before tests and build.
-
- Artifact
data/article-claim-map.json- Kind
- data
- Gate
- Zod loader verifies claim route order and route uniqueness before tests and build.
-
- Artifact
data/article-proof-manifest.json- Kind
- data
- Gate
- Zod loader verifies proof order and proof uniqueness before tests and build.
-
- Artifact
data/article-verification-matrix.json- Kind
- data
- Gate
- Zod loader verifies group order, check order, and check uniqueness before tests and build.
-
- Artifact
data/article-release-handoff.json- Kind
- data
- Gate
- Zod loader verifies handoff group order and item uniqueness before tests and build.
-
- Artifact
data/publication-workflow.json- Kind
- data
- Gate
- ArticlePublicationWorkflow renders the checked-in publication workflow record.
-
- Artifact
data/authoring-flow.json- Kind
- data
- Gate
- ArticleAuthoringFlow renders the checked-in authoring flow record.
-
- Artifact
data/proof-ladder.json- Kind
- data
- Gate
- The static proof ladder table and figures consume this checked-in ladder data.
-
- Artifact
data/figure-proofs.json- Kind
- data
- Gate
- FigureProof wrappers consume this checked-in figure metadata.
-
- Artifact
data/proof-gate-summary.generated.json- Kind
- data
- Gate
- The proof gate summary loader checks the generated data against the proof ladder.
-
- Artifact
data/scrollytelling-steps.json- Kind
- data
- Gate
- The Scrolly figure consumes checked-in step data rendered by the route.
-
- Artifact
data/code-blocks.json- Kind
- data
- Gate
- CodeExample surfaces consume checked-in code example records.
-
- Artifact
data/math-examples.json- Kind
- data
- Gate
- MathExample surfaces consume checked-in math example records.
-
- Artifact
data/source-notes.json- Kind
- data
- Gate
- SourceNotes and inline references consume checked-in source note records.
-
- Artifact
data/glossary.json- Kind
- data
- Gate
- The glossary section consumes checked-in terminology records.
-
- Artifact
data/appendix.json- Kind
- data
- Gate
- The appendix section consumes checked-in appendix records.
-
- Artifact
data/appendix.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in appendix data before rendering.
-
- Artifact
data/articleArtifactIndex.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in artifact index data before rendering.
-
- Artifact
data/promotionReadiness.ts- Kind
- loader
- Gate
- Route import validates the checked-in promotion-readiness packet and exports the local readiness evaluation.
-
- Artifact
data/articleChecklist.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in article checklist data before rendering.
-
- Artifact
data/articleClaimLedger.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in claim ledger data before rendering.
-
- Artifact
data/articleClaimMap.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in claim map data before rendering.
-
- Artifact
data/articleEvidenceTrail.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in evidence trail data before rendering.
-
- Artifact
data/articleProofManifest.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in proof manifest data before rendering.
-
- Artifact
data/articleReleaseHandoff.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in release handoff data before rendering.
-
- Artifact
data/articleSections.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in article sections data before rendering.
-
- Artifact
data/articleStarterManifest.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in starter manifest data before rendering.
-
- Artifact
data/articleStarterWorkflow.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in starter workflow data before rendering.
-
- Artifact
data/articleVerificationMatrix.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in verification matrix data before rendering.
-
- Artifact
data/authoringFlow.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in authoring flow data before rendering.
-
- Artifact
data/codeBlocks.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in code blocks data before rendering.
-
- Artifact
data/figureProofs.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in figure proofs data before rendering.
-
- Artifact
data/glossary.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in glossary data before rendering.
-
- Artifact
data/mathExamples.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in math examples data before rendering.
-
- Artifact
data/proofGateSummary.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in proof gate summary data before rendering.
-
- Artifact
data/proofLadder.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in proof ladder data before rendering.
-
- Artifact
data/publicationWorkflow.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in publication workflow data before rendering.
-
- Artifact
data/scrollytellingSteps.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in scrollytelling steps data before rendering.
-
- Artifact
data/sourceBoundary.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in source boundary data before rendering.
-
- Artifact
data/sourceNotes.ts- Kind
- loader
- Gate
- Route import validates and exports the checked-in source notes data before rendering.
-
- 3. Shared primitives Accepted
Route-visible Astro and React primitives render article sections, source boundaries, figures, examples, source notes, analytics boundaries, and publication records without implicit component ownership; route-local figure support files are listed explicitly.
-
- Artifact
src/components/ArticleArtifactIndex.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, group order, and zero nested Astro islands.
-
- Artifact
src/components/FigureFrame.astro- Kind
- component
- Gate
- The route imports shared figure chrome for static and hydrated figure surfaces.
-
- Artifact
src/components/FigureFrame.css- Kind
- support
- Gate
- FigureFrame imports this shared chrome stylesheet directly.
-
- Artifact
src/components/FigureProof.astro- Kind
- component
- Gate
- FigureProof renders source metadata and proof checks around article-owned figures.
-
- Artifact
src/components/FigureControls.tsx- Kind
- support
- Gate
- FigureProof imports FigureMetadataList from the shared figure controls module.
-
- Artifact
src/components/FigureControls.module.css- Kind
- support
- Gate
- FigureControls imports this CSS module for the metadata and figure text primitives.
-
- Artifact
src/components/ArticleSectionNav.astro- Kind
- component
- Gate
- ArticleSectionNav renders the visible section list from article-owned section data.
-
- Artifact
src/components/ArticleSourceBoundary.astro- Kind
- component
- Gate
- ArticleSourceBoundary renders accepted and rejected boundaries from article-owned data.
-
- Artifact
figures/ProofLadderFlow/ProofLadderFlow.tsx- Kind
- figure
- Gate
- The route imports the static proof ladder figure from the article-local figures folder.
-
- Artifact
figures/ProofLadderFlow/ProofLadderFlow.module.css- Kind
- support
- Gate
- ProofLadderFlow imports this CSS module directly.
-
- Artifact
figures/ProofLadderFlow/ProofLadderFlow.stories.tsx- Kind
- support
- Gate
- Storybook renders the route-local proof ladder figure for authoring review.
-
- Artifact
figures/ProofLadderFlow/ProofLadderFlow.test.ts- Kind
- support
- Gate
- Focused figure tests exercise the route-local proof ladder model and static markup.
-
- Artifact
figures/ProofLadderFlow/model.ts- Kind
- support
- Gate
- ProofLadderFlow imports this local model builder directly.
-
- Artifact
figures/ProofGateInspector/ProofGateInspector.tsx- Kind
- figure
- Gate
- The route imports the hydrated proof gate figure from the article-local figures folder.
-
- Artifact
figures/ProofGateInspector/ProofGateInspector.module.css- Kind
- support
- Gate
- ProofGateInspector imports this CSS module directly.
-
- Artifact
figures/ProofGateInspector/ProofGateInspector.stories.tsx- Kind
- support
- Gate
- Storybook renders the route-local proof gate inspector for authoring review.
-
- Artifact
figures/ProofGateInspector/ProofGateInspector.test.ts- Kind
- support
- Gate
- Focused figure tests exercise the route-local proof gate model and hydrated markup.
-
- Artifact
figures/ProofGateInspector/model.ts- Kind
- support
- Gate
- ProofGateInspector imports this local model builder directly.
-
- Artifact
src/components/ArticleEvidenceTrail.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, evidence items, and zero nested Astro islands.
-
- Artifact
src/components/ArticleClaimLedger.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, claim decisions, and zero nested Astro islands.
-
- Artifact
src/components/ArticleClaimMap.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, claim routes, and zero nested Astro islands.
-
- Artifact
src/components/ArticleProofManifest.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, proof packets, and zero nested Astro islands.
-
- Artifact
src/components/ArticleVerificationMatrix.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, local commands, and zero nested Astro islands.
-
- Artifact
src/components/ArticleReleaseHandoff.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, handoff packets, and zero nested Astro islands.
-
- Artifact
src/components/ArticleReleaseReadiness.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, readiness counts, local artifact routes, and zero nested Astro islands.
-
- Artifact
src/components/ArticlePromotionReadiness.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, readiness gates, focused commands, and zero nested Astro islands.
-
- Artifact
src/components/ArticleStarterManifest.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, starter contract entries, and zero nested Astro islands.
-
- Artifact
src/components/ArticleStarterWorkflow.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, starter workflow steps, and zero nested Astro islands.
-
- Artifact
src/components/ArticleStarterReadiness.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, starter readiness counts, local artifact routes, and zero nested Astro islands.
-
- Artifact
src/components/ArticleStarterHandoff.astro- Kind
- component
- Gate
- Unit and browser checks verify the shared marker, starter input status counts, and zero nested Astro islands.
-
- Artifact
src/components/ArticlePublicationWorkflow.astro- Kind
- component
- Gate
- ArticlePublicationWorkflow renders the visible publication workflow record.
-
- Artifact
src/components/ArticlePublicationQa.astro- Kind
- component
- Gate
- ArticlePublicationQa renders the visible publication QA record.
-
- Artifact
src/components/ArticleAuthoringFlow.astro- Kind
- component
- Gate
- ArticleAuthoringFlow renders the visible authoring flow record.
-
- Artifact
src/components/ArticleChecklist.astro- Kind
- component
- Gate
- ArticleChecklist renders the visible checklist record.
-
- Artifact
src/components/CodeExample.astro- Kind
- component
- Gate
- CodeExample renders checked-in article code-block records without a global code registry.
-
- Artifact
src/components/CodeCopyControl.astro- Kind
- support
- Gate
- CodeExample imports the scoped copy button support component directly.
-
- Artifact
src/components/MathExample.astro- Kind
- component
- Gate
- MathExample renders checked-in article math-expression records without a custom compiler.
-
- Artifact
src/components/StaticMath.tsx- Kind
- support
- Gate
- MathExample imports the static KaTeX rendering helper directly.
-
- Artifact
src/components/SourceNotes.astro- Kind
- component
- Gate
- SourceNotes renders checked-in article source-note records at the route boundary.
-
- Artifact
src/components/SourceNoteReference.tsx- Kind
- component
- Gate
- SourceNoteReference renders inline source-note references from article-owned source-note data.
-
- Artifact
src/components/figures/shared/Scrolly/Scrolly.astro- Kind
- component
- Gate
- Scrolly renders checked-in article scrollytelling steps through the shared island wrapper.
-
- Artifact
src/components/figures/shared/Scrolly/ScrollyIsland.tsx- Kind
- support
- Gate
- Scrolly imports this client island wrapper directly.
-
- Artifact
src/components/figures/shared/Scrolly/model.ts- Kind
- support
- Gate
- Scrolly and its island import this shared local step model.
-
- Artifact
src/components/figures/shared/Scrolly/ScrollyStepContextFigure.tsx- Kind
- support
- Gate
- ScrollyIsland imports this local step context figure directly.
-
- Artifact
src/components/figures/shared/Scrolly/Scrolly.module.css- Kind
- support
- Gate
- The Scrolly island and step context import this CSS module directly.
-
- Artifact
src/components/RouteAnalyticsBoundary/RouteAnalyticsBoundary.astro- Kind
- component
- Gate
- RouteAnalyticsBoundary keeps local analytics summaries scoped to the published route.
-
- Artifact
src/components/RouteAnalyticsBoundary/RouteAnalyticsBoundaryIsland.tsx- Kind
- support
- Gate
- RouteAnalyticsBoundary imports this scoped client island directly.
-
- Artifact
src/components/RouteAnalyticsBoundary/model.ts- Kind
- support
- Gate
- The route analytics island imports this local aggregate model.
-
- 4. Verification handoff Accepted
Focused checks and scaffold validation close the article artifact contract before handoff.
-
- Artifact
src/content/essays/staticFirstEssay.test.ts- Kind
- test
- Gate
- Vitest verifies local data, static HTML markers, and no client-hydrated artifact index.
-
- Artifact
tests/home.spec.ts- Kind
- test
- Gate
- Playwright verifies the published route and artifact-index browser markers.
-
- Artifact
scripts/validate_tutorial_scaffold.py- Kind
- validator
- Gate
- Scaffold validation verifies queue, state, evidence, and required project artifacts before closeout.
-
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article artifact-index primitive: article-owned artifact groups render through shared ArticleArtifactIndex.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global artifact registry, cross-article artifact inventory, starter dashboard, global starter handoff registry, CMS task store, remote filesystem scan, runtime source crawl, client-hydrated artifact index, or personalized editor progress is introduced.
Starter Manifest
Static-First Starter Manifest
The manifest names the checked-in article files, data artifacts, starter templates, and verification gates that let a second essay start by copying the starter folder.
- 1. Content shell Accepted
The route starts from local MDX, frontmatter, config, data, assets, and figure folders.
- Article MDX Accepted
- Kind
- content
- Path
index.mdx- Gate
- Content collection and browser smoke verify the rendered route before publication.
- Essay config Accepted
- Kind
- configuration
- Path
essay.config.ts- Gate
- Focused unit tests verify source, proof, data, and rejected-boundary records.
- Assets folder Accepted
- Kind
- folder
- Path
assets/- Gate
- The folder exists in the article and starter contract before promoted media is added.
- Figures folder Accepted
- Kind
- folder
- Path
figures/- Gate
- The folder exists in the article and starter contract before local figures are added.
-
- 2. Article data Accepted
Typed JSON artifacts keep source, proof, release, and starter contracts article-owned.
- Source boundary Accepted
- Kind
- data
- Path
data/source-boundary.json- Gate
- Zod loader and browser coverage verify accepted and rejected claims.
- Starter manifest Accepted
- Kind
- data
- Path
data/article-starter-manifest.json- Gate
- Zod loader verifies group order, entry order, and unique entry IDs.
- Starter workflow Accepted
- Kind
- data
- Path
data/article-starter-workflow.json- Gate
- Zod loader verifies step order and unique starter workflow IDs.
- Artifact index Accepted
- Kind
- data
- Path
data/article-artifact-index.json- Gate
- The artifact index records the starter manifest as a local authoring scaffold.
- Proof manifest Accepted
- Kind
- data
- Path
data/article-proof-manifest.json- Gate
- The proof manifest records the starter manifest proof before release handoff.
- Verification matrix Accepted
- Kind
- data
- Path
data/article-verification-matrix.json- Gate
- The verification matrix records focused tests for the starter manifest.
- Release handoff Accepted
- Kind
- data
- Path
data/article-release-handoff.json- Gate
- The release handoff records the starter manifest packet before closeout.
-
- 3. Starter templates Accepted
The reusable starter mirrors the rendered primitive and its typed data contract.
- Starter README Accepted
- Kind
- documentation
- Path
src/content/essay-starters/static-first/README.md- Gate
- Starter tests verify the required folder contract and local ownership guidance.
- MDX template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/index.mdx.template- Gate
- Starter tests verify the ArticleStarterManifest import and placement.
- Config template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/essay.config.ts.template- Gate
- Starter tests verify the starterManifestProofs entry.
- Starter manifest data template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/data/article-starter-manifest.json.template- Gate
- Starter tests verify draft ordering and local data paths.
- Starter manifest schema template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/data/articleStarterManifest.ts.template- Gate
- Starter tests verify the Zod loader parses the starter manifest template.
- Starter workflow data template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/data/article-starter-workflow.json.template- Gate
- Starter tests verify draft workflow order and local gate placeholders.
- Starter workflow schema template Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/data/articleStarterWorkflow.ts.template- Gate
- Starter tests verify the Zod loader parses the starter workflow template.
- Starter readiness component placement Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/index.mdx.template- Gate
- Starter tests verify ArticleStarterReadiness import, props, and placement.
- Starter handoff component placement Accepted
- Kind
- template
- Path
src/content/essay-starters/static-first/index.mdx.template- Gate
- Starter tests verify ArticleStarterHandoff import, props, and placement.
-
- 4. Verification handoff Accepted
Focused unit, browser, and scaffold gates keep the starter manifest visible and static.
- Article unit test Accepted
- Kind
- test
- Path
src/content/essays/staticFirstEssay.test.ts- Gate
- Vitest verifies the data artifact, schema, MDX usage, and config records.
- Starter unit test Accepted
- Kind
- test
- Path
src/content/essay-starters/articleStarter.test.ts- Gate
- Vitest verifies the starter template includes the manifest data and renderer.
- Browser smoke Accepted
- Kind
- test
- Path
tests/home.spec.ts- Gate
- Playwright verifies the shared marker, entries, and no nested Astro island.
- Scaffold validator Accepted
- Kind
- validator
- Path
scripts/validate_tutorial_scaffold.py- Gate
- Scaffold validation verifies queue, state, evidence, and required project artifacts.
-
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article starter-manifest primitive: article-owned starter contract groups render through shared ArticleStarterManifest.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global starter registry, starter readiness registry, starter handoff registry, starter package generator, runtime filesystem scan, CMS task store, remote template fetch, client-hydrated starter state, or personalized editor progress is introduced.
Starter Workflow
Static-First Starter Workflow
The workflow turns the copied starter folder into a source-registered article by sequencing token replacement, source registration, article data wiring, route rendering, and local verification.
- 1. Copy starter Accepted
Copy the starter folder into the essay collection and keep content, data, assets, and figures together.
- Artifact
src/content/essay-starters/static-first/- Gate
- Starter unit coverage verifies the source folder contract before a new article copies it.
- 2. Replace placeholders Accepted
Replace frontmatter, prose, and config tokens before the route claims draft or published status.
- Artifact
index.mdx and essay.config.ts- Gate
- Focused article tests reject unresolved placeholder tokens and verify the rendered route copy.
- 3. Register source Accepted
Tie accepted claims to source registry IDs and keep rejected platform boundaries in article-owned data.
- Artifact
source_registry.yaml and data/source-boundary.json- Gate
- Source-boundary parsing and scaffold validation keep the article tied to registered local sources.
- 4. Wire article data Accepted
Populate local JSON artifacts and matching loaders before shared primitives render the publication record.
- Artifact
data/*.json and data/*.ts- Gate
- npm run test -- staticFirstEssay articleStarter verifies data order, IDs, and starter template alignment.
- 5. Render static primitives Accepted
Render source, proof, starter, release, and workflow primitives as static HTML in the article route.
- Artifact
ArticleStarterWorkflow.astro, ArticleStarterReadiness.astro, ArticleStarterHandoff.astro, and index.mdx#publish-readiness- Gate
- Focused browser smoke verifies shared markers and zero nested Astro islands inside the starter workflow, starter-readiness rollup, and starter-handoff packet.
- 6. Close local gates Accepted
Run focused unit, type, build, browser, Storybook, diff, scaffold, commit, and push gates before handoff.
- Artifact
tests/home.spec.ts, run_log.md, state.md, todo.md, evidence_ledger.yaml- Gate
- Scaffold validation and run-log closeout record the accepted artifact and next unchecked product todo.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article starter-workflow primitive: article-owned starter workflow steps render through shared ArticleStarterWorkflow.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global starter workflow registry, global starter readiness registry, global starter handoff registry, starter package generator, runtime filesystem scan, remote template fetch, CMS task store, client-hydrated starter workflow or handoff state, or personalized editor progress is introduced.
Claim Ledger
Static-First Claim Ledger
The ledger records which source-backed platform claims are accepted for this article, where each claim renders, and which local gate keeps it honest.
- 1. Source registration Accepted
BLUEPRINT.md is the accepted architecture source for this static-first platform proof.
- Source
blueprint-001, BLUEPRINT.md sections 1, 2, and 5- Artifact
source_registry.yaml- Decision
- Accept blueprint-001 as the local source for platform layer, article folder, and verification claims.
- Gate
- The source-boundary data and scaffold validator keep the article tied to the registered source.
- 2. Article data ownership Accepted
Article-owned JSON data carries source claims, proof artifacts, verification gates, and release handoff records before publication.
- Source
blueprint-001, BLUEPRINT.md sections 7, 8, and 14- Artifact
data/article-claim-ledger.json- Decision
- Accept a checked-in claim ledger as article data, not as a global claim database.
- Gate
- Zod parsing verifies claim order and unique IDs before tests and build.
- 3. Evidence route Accepted
Accepted claims must stay connected to local artifacts and verification gates in the rendered publish-readiness path.
- Source
blueprint-001, BLUEPRINT.md sections 5 and 16- Artifact
data/article-evidence-trail.json- Decision
- Accept static claim decisions beside the existing evidence trail so readers and authors see source, artifact, and gate together.
- Gate
- ArticleClaimLedger and ArticleEvidenceTrail browser coverage verify static markers without runtime fetches.
- 4. Release decision Accepted
Release handoff should carry claim, evidence, verification, and next-work packets as local files before the automation releases the lock.
- Source
blueprint-001, BLUEPRINT.md sections 18 and 19- Artifact
data/article-release-handoff.json- Decision
- Accept the claim ledger as part of the validation packet for release closeout.
- Gate
- Focused browser smoke verifies the claim ledger, release handoff, and zero nested Astro islands.
- 5. Claim map route Accepted
Accepted claim decisions should route to their evidence, verification, handoff, and local artifact records before release closeout.
- Source
blueprint-001, BLUEPRINT.md sections 5, 14, and 16- Artifact
data/article-claim-map.json- Decision
- Accept a checked-in claim map as article-owned routing data between the claim ledger, evidence trail, verification matrix, and release handoff.
- Gate
- Focused unit coverage verifies every claim-map route points at an existing claim, evidence item, verification group, and handoff item.
- 6. Proof manifest route Accepted
Accepted proof packets should name their owner, local artifact, gate, evidence note, and release status before closeout.
- Source
blueprint-001, BLUEPRINT.md sections 5, 14, and 19- Artifact
data/article-proof-manifest.json- Decision
- Accept a checked-in proof manifest as article-owned release data, not as a global proof registry or dashboard.
- Gate
- Focused unit and browser coverage verify proof IDs, owners, artifacts, gates, evidence notes, and release statuses.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article claim-ledger primitive: article-owned source-claim decisions render through shared ArticleClaimLedger.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global claim ledger, remote source crawl, automated claim inference, CMS review queue, client-hydrated claim review, or personalized editor progress is introduced.
Claim Map
Static-First Claim Map
The map connects each accepted claim-ledger decision to the evidence item, verification group, release handoff item, and local artifact that keeps the claim reviewable.
- 1. Source registration Accepted
- Claim
source-registration- Evidence
platform-layers, Platform layers- Verification
source-data-gates, Source and data gates- Handoff
source-boundary-record, Source boundary record- Artifact
source_registry.yaml- Gate
- Scaffold validation keeps the registered blueprint source tied to article data before closeout.
- 2. Article data ownership Accepted
- Claim
article-data-ownership- Evidence
article-folder-contract, Article folder contract- Verification
source-data-gates, Source and data gates- Handoff
claim-ledger, Claim ledger- Artifact
data/article-artifact-index.json- Gate
- Zod loaders verify article-owned data order and IDs before the route renders.
- 3. Evidence route Accepted
- Claim
evidence-route- Evidence
claim-ledger, Claim ledger- Verification
browser-visual-gates, Browser and visual gates- Handoff
evidence-trail, Evidence trail- Artifact
data/article-evidence-trail.json- Gate
- Focused browser coverage verifies the claim ledger and evidence trail as static publish-readiness records.
- 4. Release decision Accepted
- Claim
release-decision- Evidence
release-handoff, Release handoff- Verification
closeout-gates, Closeout gates- Handoff
queue-state, Queue state- Artifact
data/article-release-handoff.json- Gate
- Run log, evidence ledger, state, todo, scaffold validation, commit, and push close the route handoff.
- 5. Claim map route Accepted
- Claim
claim-map-route- Evidence
claim-map, Claim map- Verification
source-data-gates, Source and data gates- Handoff
claim-map, Claim map- Artifact
data/article-claim-map.json- Gate
- Focused unit coverage verifies every claim-map route points at an existing claim, evidence item, verification group, and handoff item.
- 6. Proof manifest route Accepted
- Claim
proof-manifest-route- Evidence
proof-manifest, Proof manifest- Verification
source-data-gates, Source and data gates- Handoff
proof-manifest, Proof manifest- Artifact
data/article-proof-manifest.json- Gate
- Focused unit coverage verifies proof-manifest routes point at an accepted claim, evidence item, verification group, and handoff item.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article claim-map primitive: article-owned claim-to-evidence routes render through shared ArticleClaimMap.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global claim routing registry, automated claim routing, remote source crawl, CMS review queue, client-hydrated claim map, or personalized editor progress is introduced.
Evidence Trail
Static-First Evidence Trail
The trail maps selected blueprint-backed claims to local article artifacts and verification gates before release handoff.
- 1. Platform layers Accepted
Static-first essays separate MDX content, publication shell, hydrated islands, data artifacts, and verification.
- Source
blueprint-001, BLUEPRINT.md sections 2 and 5- Artifact
index.mdx- Gate
- Focused unit and browser checks verify the layer prose, article navigation, and rendered layer figure.
- 2. Article folder contract Accepted
Each essay keeps prose, configuration, data, assets, and figure code in one article-owned folder contract.
- Source
blueprint-001, BLUEPRINT.md sections 8 and 14- Artifact
data/article-artifact-index.json- Gate
- The artifact index loader and focused browser smoke verify local content, data, primitive, and verification files.
- 3. Verification stack Accepted
The article verifies source data, static build behavior, browser rendering, Storybook output, diff hygiene, and scaffold state before closeout.
- Source
blueprint-001, BLUEPRINT.md sections 3, 5, and 16- Artifact
data/article-verification-matrix.json- Gate
- The verification matrix renders the local commands, targets, and evidence without fetching CI dashboards or remote logs.
- 4. Claim ledger Accepted
Source-backed claims are recorded as article-owned decisions before they feed the evidence and release workflow.
- Source
blueprint-001, BLUEPRINT.md sections 1, 5, 7, and 14- Artifact
data/article-claim-ledger.json- Gate
- The claim ledger renders source-claim decisions, local artifacts, and gates without automated inference or remote source crawls.
- 5. Claim map Accepted
Each accepted claim-ledger decision routes to evidence, verification, handoff, and local artifact records as checked-in article data.
- Source
blueprint-001, BLUEPRINT.md sections 5, 14, and 16- Artifact
data/article-claim-map.json- Gate
- The claim map loader and focused unit coverage verify claim, evidence, verification, and handoff references.
- 6. Release handoff Accepted
Release handoff stays article-owned: local artifacts, validation gates, ledgers, and next work move together before the automation releases the lock.
- Source
blueprint-001, BLUEPRINT.md sections 18 and 19- Artifact
data/article-release-handoff.json- Gate
- The release handoff component and browser smoke verify static handoff packets without dashboards or publish orchestration.
- 7. Proof manifest Accepted
Each accepted proof packet keeps owner, artifact, gate, evidence, and release status visible before release handoff.
- Source
blueprint-001, BLUEPRINT.md sections 5, 14, and 19- Artifact
data/article-proof-manifest.json- Gate
- The proof manifest component and browser smoke verify static proof packets without dashboards, remote status fetches, or global proof registries.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article evidence-trail primitive: article-owned evidence items render through shared ArticleEvidenceTrail.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global evidence registry, remote log fetch, CI dashboard, CMS task store, automated claim inference, client-hydrated evidence trail, or personalized editor progress is introduced.
Proof Manifest
Static-First Proof Manifest
The manifest names the proof packets, owners, artifacts, gates, evidence notes, and release status that must stay reviewable before the article handoff closes.
- 1. Source boundary proof Accepted
- Proof ID
source-boundary-proof- Owner
- Article folder
- Artifact
data/source-boundary.json- Gate
- Zod parsing and browser coverage verify accepted and rejected claims from checked-in data.
- Evidence
- ArticleSourceBoundary.astro renders the source-boundary record without runtime source crawls.
- 2. Artifact index proof Accepted
- Proof ID
artifact-index-proof- Owner
- Authoring scaffold
- Artifact
data/article-artifact-index.json- Gate
- The artifact-index loader verifies grouped content, data, primitive, and verification files.
- Evidence
- ArticleArtifactIndex.astro renders local artifact groups without a global artifact registry.
- 3. Claim ledger proof Accepted
- Proof ID
claim-ledger-proof- Owner
- Claim workflow
- Artifact
data/article-claim-ledger.json- Gate
- The claim-ledger loader verifies claim order and unique IDs before tests and build.
- Evidence
- ArticleClaimLedger.astro renders source-claim decisions without automated inference.
- 4. Claim map proof Accepted
- Proof ID
claim-map-proof- Owner
- Claim workflow
- Artifact
data/article-claim-map.json- Gate
- Focused unit coverage verifies every claim route points at existing evidence, verification, and handoff IDs.
- Evidence
- ArticleClaimMap.astro renders claim-to-evidence routes without automated routing.
- 5. Evidence trail proof Accepted
- Proof ID
evidence-trail-proof- Owner
- Evidence workflow
- Artifact
data/article-evidence-trail.json- Gate
- The evidence-trail loader verifies evidence item order and unique IDs before browser proof.
- Evidence
- ArticleEvidenceTrail.astro renders source-backed claims without remote log fetches.
- 6. Verification matrix proof Accepted
- Proof ID
verification-matrix-proof- Owner
- Verification workflow
- Artifact
data/article-verification-matrix.json- Gate
- The verification-matrix loader verifies check order, commands, targets, and evidence before closeout.
- Evidence
- ArticleVerificationMatrix.astro renders local gates without CI dashboard integration.
- 7. Release handoff proof Accepted
- Proof ID
release-handoff-proof- Owner
- Release workflow
- Artifact
data/article-release-handoff.json- Gate
- The release-handoff loader verifies packet order and item uniqueness before run-log closeout.
- Evidence
- ArticleReleaseHandoff.astro renders handoff packets without a release dashboard.
- 8. Proof manifest proof Accepted
- Proof ID
proof-manifest-proof- Owner
- Release workflow
- Artifact
data/article-proof-manifest.json- Gate
- The proof-manifest loader verifies proof order and unique proof IDs before route rendering.
- Evidence
- ArticleProofManifest.astro renders article-owned proof packets without a global proof registry.
- 9. Release readiness proof Accepted
- Proof ID
release-readiness-proof- Owner
- Release workflow
- Artifact
src/components/ArticleReleaseReadiness.astro- Gate
- Focused unit and browser checks verify readiness counts, local artifact routes, and zero nested Astro islands.
- Evidence
- ArticleReleaseReadiness.astro renders a static rollup from article-owned checklist, proof, verification, and handoff records.
- 10. Starter manifest proof Accepted
- Proof ID
starter-manifest-proof- Owner
- Authoring scaffold
- Artifact
data/article-starter-manifest.json- Gate
- Focused unit and browser checks verify starter contract groups, entries, and zero nested Astro islands.
- Evidence
- ArticleStarterManifest.astro renders local starter contract groups without a global starter registry or generator.
- 11. Starter workflow proof Accepted
- Proof ID
starter-workflow-proof- Owner
- Authoring scaffold
- Artifact
data/article-starter-workflow.json- Gate
- Focused unit and browser checks verify starter workflow steps, local gates, and zero nested Astro islands.
- Evidence
- ArticleStarterWorkflow.astro renders local starter workflow steps without a global starter workflow registry or generator.
- 12. Starter readiness proof Accepted
- Proof ID
starter-readiness-proof- Owner
- Authoring scaffold
- Artifact
src/components/ArticleStarterReadiness.astro- Gate
- Focused unit and browser checks verify starter readiness counts, local artifact routes, and zero nested Astro islands.
- Evidence
- ArticleStarterReadiness.astro renders a static rollup from article-owned starter manifest and starter workflow records.
- 13. Starter handoff proof Accepted
- Proof ID
starter-handoff-proof- Owner
- Authoring scaffold
- Artifact
src/components/ArticleStarterHandoff.astro- Gate
- Focused unit and browser checks verify starter handoff input counts, release-handoff linkage, and zero nested Astro islands.
- Evidence
- ArticleStarterHandoff.astro renders a static handoff packet from article-owned starter and release records.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article proof-manifest primitive: article-owned proof packets render through shared ArticleProofManifest.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global proof registry, global starter handoff registry, release dashboard, automated proof inference, remote status fetch, CMS review queue, client-hydrated proof manifest, or personalized editor progress is introduced.
Verification Matrix
Static-First Verification Matrix
The matrix records the local commands, targets, and evidence that must pass before this article claims its publish-readiness proof.
- 1. Source and data gates Accepted
Article-owned data, source boundaries, and config records must parse before route rendering is trusted.
- Static-first unit Accepted
- Command
npm run test -- staticFirstEssay- Target
src/content/essays/staticFirstEssay.test.ts- Evidence
- Vitest imports the article data loaders and verifies source boundaries, config records, and static component placement.
- Starter unit Accepted
- Command
npm run test -- articleStarter- Target
src/content/essay-starters/articleStarter.test.ts- Evidence
- The starter test keeps template data, source-boundary placeholders, and reusable primitive placement aligned.
- Starter manifest contract Accepted
- Command
npm run test -- staticFirstEssay articleStarter- Target
data/article-starter-manifest.json and src/content/essay-starters/static-first/- Evidence
- Vitest verifies the starter manifest data, schema, starter templates, and shared component placement.
- Starter workflow contract Accepted
- Command
npm run test -- staticFirstEssay articleStarter- Target
data/article-starter-workflow.json and src/components/ArticleStarterWorkflow.astro- Evidence
- Vitest verifies the starter workflow data, schema, starter templates, and shared component placement.
-
- 2. Static build gates Accepted
Type and build checks prove the article remains static-first and content-collection compatible.
- Typecheck Accepted
- Command
npm run typecheck- Target
Astro content collection and TypeScript project- Evidence
- Astro and TypeScript verify MDX imports, Zod-backed data loaders, and component prop contracts.
- Production build Accepted
- Command
npm run build- Target
static Astro build- Evidence
- The production build proves the route renders without runtime source fetches or client state for the verification matrix.
-
- 3. Browser and visual gates Accepted
Browser and Storybook checks prove the visible route and component library still render after authoring changes.
- Focused browser smoke Accepted
- Command
npm run test:browser -- -g "static-first essay shell"- Target
tests/home.spec.ts- Evidence
- Playwright verifies the published route, shared component markers, mobile-safe layout, and absence of nested Astro islands.
- Release readiness rollup Accepted
- Command
npm run test:browser -- -g "static-first essay shell"- Target
tests/home.spec.ts- Evidence
- Playwright verifies the release-readiness marker, status counts, local artifact routes, and absence of nested Astro islands.
- Starter readiness rollup Accepted
- Command
npm run test:browser -- -g "static-first essay shell"- Target
tests/home.spec.ts- Evidence
- Playwright verifies the starter-readiness marker, manifest/workflow counts, local artifact routes, and absence of nested Astro islands.
- Starter handoff packet Accepted
- Command
npm run test:browser -- -g "static-first essay shell"- Target
tests/home.spec.ts- Evidence
- Playwright verifies the starter-handoff marker, starter input counts, release-handoff route, and absence of nested Astro islands.
- Storybook build Accepted
- Command
npm run build-storybook- Target
Storybook static build- Evidence
- Storybook keeps shared figure and component stories buildable for visual inspection.
-
- 4. Closeout gates Accepted
Repository and scaffold checks close the automation handoff without promoting generated or ignored artifacts.
- Diff check Accepted
- Command
git diff --check- Target
tracked working tree diff- Evidence
- Git verifies whitespace and patch formatting before commit.
- Scaffold validator Accepted
- Command
python3 scripts/validate_tutorial_scaffold.py- Target
tutorial scaffold ledgers- Evidence
- The validator checks queue, state, run log, evidence ledger, and required project artifacts before closeout.
-
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article verification-matrix primitive: article-owned verification groups render through shared ArticleVerificationMatrix.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global verification registry, global starter handoff registry, CI dashboard integration, remote build log fetch, live deployment status poller, client-hydrated verification matrix, or personalized editor progress is introduced.
Release Handoff
Static-First Release Handoff
The handoff records the local article, validation, ledger, and next-work packets that must move together after publish-readiness gates pass.
- 1. Article packet Accepted
The published route and source boundary are the reader-facing payload for the handoff.
- Published route Accepted
- Artifact
index.mdx- Gate
- Content collection and browser checks verify the rendered route.
- Evidence
- The route renders source-registered prose, static primitives, and explicitly scoped hydrated islands.
- Source boundary record Accepted
- Artifact
data/source-boundary.json- Gate
- Zod parsing and source-boundary browser coverage verify accepted and rejected claims.
- Evidence
- The source boundary stays article-owned and names blueprint-001 as the accepted platform source.
-
- 2. Validation packet Accepted
The claim ledger, claim map, proof manifest, evidence trail, verification matrix, and focused tests remain the release proof packet.
- Claim ledger Accepted
- Artifact
data/article-claim-ledger.json- Gate
- The ledger records source-claim decisions, artifacts, and verification gates.
- Evidence
- ArticleClaimLedger.astro renders the local claim decisions without runtime fetches, remote source crawls, or automated inference.
- Claim map Accepted
- Artifact
data/article-claim-map.json- Gate
- The map routes claim decisions to evidence, verification, handoff, and local artifact records.
- Evidence
- ArticleClaimMap.astro renders the local claim routes without runtime fetches, global routing registries, or automated inference.
- Proof manifest Accepted
- Artifact
data/article-proof-manifest.json- Gate
- The manifest records proof owners, artifacts, gates, evidence notes, and release status.
- Evidence
- ArticleProofManifest.astro renders the local proof packets without runtime fetches, release dashboards, global proof registries, or automated inference.
- Evidence trail Accepted
- Artifact
data/article-evidence-trail.json- Gate
- The trail maps source-backed claims to local artifacts and verification gates.
- Evidence
- ArticleEvidenceTrail.astro renders the local claim, source, artifact, and gate map without runtime fetches.
- Verification matrix Accepted
- Artifact
data/article-verification-matrix.json- Gate
- The matrix lists unit, typecheck, build, browser, Storybook, diff, and scaffold gates.
- Evidence
- ArticleVerificationMatrix.astro renders the local commands, targets, and evidence without runtime fetches.
- Release readiness Accepted
- Artifact
src/components/ArticleReleaseReadiness.astro- Gate
- The rollup summarizes checklist, proof manifest, verification matrix, and release handoff status counts.
- Evidence
- ArticleReleaseReadiness.astro renders local readiness routes without dashboards, remote status fetches, or automated release decisions.
- Starter manifest Accepted
- Artifact
data/article-starter-manifest.json- Gate
- The manifest records required starter entries, templates, and verification handoff gates.
- Evidence
- ArticleStarterManifest.astro renders the starter contract without a global starter registry, generator, or runtime scan.
- Starter workflow Accepted
- Artifact
data/article-starter-workflow.json- Gate
- The workflow records copy, placeholder replacement, source registration, data wiring, rendering, and closeout gates.
- Evidence
- ArticleStarterWorkflow.astro renders the starter workflow without a global starter workflow registry, generator, or runtime scan.
- Starter readiness Accepted
- Artifact
src/components/ArticleStarterReadiness.astro- Gate
- The rollup summarizes starter manifest and starter workflow status counts before the starter handoff closes.
- Evidence
- ArticleStarterReadiness.astro renders local starter readiness routes without dashboards, remote scans, or generated starter packages.
- Starter handoff Accepted
- Artifact
src/components/ArticleStarterHandoff.astro- Gate
- The packet summarizes starter manifest, workflow, readiness, and release handoff status counts before the next article copies the starter.
- Evidence
- ArticleStarterHandoff.astro renders local starter handoff routes without dashboards, remote scans, generated starter packages, or global handoff registries.
- Focused browser proof Accepted
- Artifact
tests/home.spec.ts- Gate
- Playwright verifies publish-readiness markers, mobile-safe layout, and zero nested Astro islands.
- Evidence
- The focused browser smoke is the route-level visible proof before release closeout.
-
- 3. Closeout packet Accepted
Ledgers, commit, and push status close the automation handoff.
- Run log ledger Accepted
- Artifact
run_log.md- Gate
- The run log records permission proof, files changed, validation, conflict resolution, and push status.
- Evidence
- Closeout remains deterministic and append-only before the lock is released.
- Evidence ledger Accepted
- Artifact
evidence_ledger.yaml- Gate
- The evidence ledger records the accepted artifact and source boundary.
- Evidence
- The handoff keeps source evidence outside the runtime component and away from research_downloads assets.
-
- 4. Next work packet Accepted
State and starter templates route the next authoring sprint without relying on a dashboard.
- Queue state Accepted
- Artifact
state.md and todo.md- Gate
- The active todo and best-next pointers must name unchecked mission work.
- Evidence
- Queue ownership stays in tracked project files rather than a generated dashboard or remote task store.
- Starter template Accepted
- Artifact
src/content/essay-starters/static-first/- Gate
- Starter unit coverage verifies the handoff data template and component placement.
- Evidence
- New articles can copy the release-handoff contract as local data before publication.
-
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article release-handoff primitive: article-owned handoff groups render through shared ArticleReleaseHandoff.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global release handoff registry, global starter handoff registry, release dashboard, remote deployment status fetch, CMS task store, automated publish orchestration, client-hydrated release state, or personalized editor progress is introduced.
Publication Workflow
Static-First Publication Workflow
The workflow turns article-owned source, artifact, QA, and release handoff milestones into a static publication record before the route claims readiness.
- 1. Draft shell Accepted
Frontmatter, route sections, and article navigation exist before the article claims publication status.
- Artifact
index.mdx- Gate
- Content collection, starter, and static-first unit tests verify the route shape.
- 2. Source boundary Accepted
Accepted claims and rejected system boundaries stay in checked-in data tied to blueprint-001.
- Artifact
data/source-boundary.json- Gate
- Zod parsing and browser coverage verify the rendered source-boundary component.
- 3. Publish readiness Accepted
Artifact index, evidence trail, checklist, authoring flow, source boundary, and publication workflow render as static HTML in the article route.
- Artifact
ArticlePublicationWorkflow.astro- Gate
- Vitest and Playwright verify shared component markers, milestone order, and zero nested Astro islands.
- 4. Claim ledger Accepted
Source-claim decisions stay in article-owned data before the evidence trail and release handoff consume them.
- Artifact
ArticleClaimLedger.astro- Gate
- Vitest and Playwright verify the claim-ledger component marker, claim order, and zero nested Astro islands.
- 5. Claim map Accepted
Claim decisions route to evidence, verification, handoff, and local artifact records before release handoff.
- Artifact
ArticleClaimMap.astro- Gate
- Vitest and Playwright verify the claim-map component marker, route order, and zero nested Astro islands.
- 6. Evidence trail Accepted
Source-backed claims map to local article artifacts and verification gates before the release packet is handed off.
- Artifact
ArticleEvidenceTrail.astro- Gate
- Vitest and Playwright verify the evidence-trail component marker, item order, and zero nested Astro islands.
- 7. Proof manifest Accepted
Proof packets name their owner, local artifact, gate, evidence note, and release status before final handoff.
- Artifact
ArticleProofManifest.astro- Gate
- Vitest and Playwright verify the proof-manifest component marker, proof order, and zero nested Astro islands.
- 8. Release handoff Accepted
Article, validation, closeout, and next-work packets render as static handoff data before the automation releases the lock.
- Artifact
ArticleReleaseHandoff.astro- Gate
- Vitest and Playwright verify the release-handoff component marker, packet order, and zero nested Astro islands.
- 9. Release readiness Accepted
Checklist, proof manifest, verification matrix, and release handoff status counts render as one static readiness rollup before closeout.
- Artifact
ArticleReleaseReadiness.astro- Gate
- Vitest and Playwright verify the release-readiness marker, local artifact routes, and zero nested Astro islands.
- 10. Starter manifest Accepted
The copyable starter contract renders from article-owned data before the next article copies the template folder.
- Artifact
ArticleStarterManifest.astro- Gate
- Vitest and Playwright verify the starter-manifest marker, local template entries, and zero nested Astro islands.
- 11. Starter workflow Accepted
The starter workflow renders the copy, replacement, source, data, rendering, and closeout sequence before the next article copies the template folder.
- Artifact
ArticleStarterWorkflow.astro- Gate
- Vitest and Playwright verify the starter-workflow marker, local workflow steps, and zero nested Astro islands.
- 12. Starter readiness Accepted
Starter manifest and starter workflow status counts render as one static readiness rollup before the next article copies the template folder.
- Artifact
ArticleStarterReadiness.astro- Gate
- Vitest and Playwright verify the starter-readiness marker, local artifact routes, and zero nested Astro islands.
- 13. Starter handoff Accepted
Starter manifest, starter workflow, starter readiness, and release handoff status counts render as one static handoff packet before the next article copies the template folder.
- Artifact
ArticleStarterHandoff.astro- Gate
- Vitest and Playwright verify the starter-handoff marker, local routes, and zero nested Astro islands.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable publication-workflow primitive: article-owned workflow milestones render through shared ArticlePublicationWorkflow.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global publication workflow engine, global starter handoff registry, cross-article workflow registry, CMS task store, release dashboard, remote workflow fetch, client-hydrated workflow state, or personalized editor progress is introduced.
Article Checklist
Static-First Publication Checklist
The checklist keeps publish-readiness proof inside article-owned data before the route claims a platform boundary.
- Frontmatter and catalog Accepted
The article frontmatter names title, summary, status, tags, authors, and footer links used by the published catalog and shared route shell.
Gate: Astro content schema, catalog tests, and browser route smoke checks. - Source boundary Accepted
The article resolves its platform claims to blueprint-001 and keeps source notes plus rejected boundaries beside the article.
Gate: Vitest validates source-boundary and source-note artifacts. - Article-owned data Accepted
The proof ladder, generated summary, figure proofs, source notes, glossary, appendix, code blocks, math examples, and checklist all live under this article folder.
Gate: Zod loaders parse checked-in JSON artifacts before tests and build. - Interactive scope Accepted
Static HTML owns the route while hydrated islands stay limited to the gate inspector, scrollytelling primitive, route analytics boundary, and reusable copy control.
Gate: Playwright verifies visible markers, hydration boundaries, and no console errors. - Verification stack Accepted
Focused unit, typecheck, build, browser smoke, Storybook, diff, scaffold, deployment, and rollback checks back the publishable article boundary.
Gate: Accepted commands are recorded in essay config, run log, and evidence ledger.
- Source
blueprint-001- Accepted
- The static-first route has its first reusable article checklist primitive: article-owned checklist data renders through shared ArticleChecklist.astro in the publish-readiness section without client hydration.
- Not Claimed
- No global authoring workflow engine, cross-article checklist registry, CMS task store, remote checklist fetch, client-hydrated checklist state, or personalized reader/editor progress is introduced.
- Accepted: the static-first article is publishable as a proof-backed platform article under source registry entry
blueprint-001. - Remaining: future work should source-register a full citation or footnote model before building it, source-register custom-domain checks before proving them, then prove Cloudflare build-setting enforcement and any source-registered verification registry, release handoff registry, cross-article code registry, broad clipboard guarantee, custom syntax-highlighting framework, cross-article glossary framework, general glossary framework, general appendix framework, author-defined macro state, custom math compiler, cross-article scrollytelling registry, general child-figure choreography framework, live analytics collector, persistent reader tracking, third-party analytics provider, cross-article macro registry, or cross-article analytics registry beyond the unconfigured Beacon adapter.