Skip to content
Reading guide

On this page

Build and verify the publication

The analytics dependency is a reviewed local bundle. To reproduce it, use Node.js 24.11.1 and run npm ci --ignore-scripts and npm run build in tools/analytics-vendor. Compare tools/assets/aws-rum-vendor.d56ddb85e6710adc.js with the SHA-256 in third-party/manifest.json. The exact lock and notices accompany the public source; normal builds use reviewed bytes without downloading code.

Browser monitor settings are maintained in publication/analytics.json. Generated edition and document identities come from publication/current-policy.json and the successor PDF inventory. Eighteen successor PDFs and three successor archives use edition-versioned routes. Historical downloads remain available but are not measured as successor document clicks. Collection stays inactive when disabled, on other hostnames, or when browser privacy controls prohibit it. Activation requires approved AWS resources, real monitor and identity-pool identifiers, and exact regenerated publication hashes. The existing Rights area carries the privacy disclosure. Private operations and reporting are excluded from publication archives.

The repository contains the maintained public Markdown, conceptual figures, publication styling, and build tools. Edition 2026.10.9 builds sixteen paper PDFs, a separate Engineering Methodology PDF, a collected volume, and a searchable static website. No private source vault, credentials, research-system implementation, or external account is needed for a local build.

These instructions support inspection and verification under the rights notice. They do not grant an open-source license to the authored research or tooling. Distributed third-party components retain the licenses described in Third-party notices.

Environment

Use CPython 3.12.14 in an isolated environment for the recorded release build. Install the exact versions and distribution hashes in requirements.lock. The PDF renderer uses DejaVu fonts supplied by the pinned Matplotlib package. The website uses an Inter and system-font stack with a locally served DejaVu fallback. The browser does not need a remote font service.

The website starts in dark mode. Its sun and moon control uses the theme's built-in palette selection and browser storage to preserve the reader's choice across pages and visits. Conceptual figures inherit the selected website palette and reflow to the available reading width. Technical timelines retain legible print colors on wide screens and become paired, numbered owner/witness steps on phones. The assurance diagram becomes ruled terms and descriptions; both retain a complete text alternative. These views are derived from the same maintained SVG text used in the PDFs.

The menu button opens a sliding collection drawer on every screen size. Close it with the close button, the shaded background, or Escape. Keyboard focus stays within the open drawer and returns to the menu button when dismissed. The separate On this page control opens the current page's contents on demand at every screen size. Escape, the close button, or the shaded background dismisses it. Neither panel reserves a permanent column in the reading layout. Overview returns to the collection's introduction. The header's Open in git link opens the repository. Scrollbar tracks are hidden throughout the website; wheel, touch, and keyboard scrolling remain available, including horizontal scrolling in tables and code examples. Reduced-motion preferences remove the drawer animation.

Headings use a restrained size scale and one semibold weight. Introductory paragraphs share the same body size and regular weight; section dividers and spacing separate the reading blocks. A fixed reading trail at the right edge links to the overview, the page's collection group, the current page, and the current section's ancestors. It updates with scrolling without adding browser-history entries. Selecting a collection group opens that group in the existing collection drawer. On narrower screens, a vertical tab shows the current section and opens the trail on demand; Escape or a click outside closes it. The trail stays outside the reading column and is omitted from print.

The overview presents its responsibility map as aligned label-and-question rows, its three contributions as numbered columns with shared heading and paragraph baselines, and the collection as a subject index with numbered paper links. Fine dividers separate the subjects without enclosing them in cards. Reading routes use aligned terms and descriptions. These layouts respond to the width of the reading column: narrow screens stack the text and paper links, and all content remains in normal reading order. The overview enhancement derives every paragraph, subject and link from README.md; the print edition retains that maintained text.

On Linux, the Cairo build dependency may require the operating system's Cairo development package and pkg-config. The publication workflow installs these before the Python requirements. The local commands below assume that the environment's Python is active.

python -m venv .venv

Activate the environment with .venv\Scripts\Activate.ps1 in PowerShell or source .venv/bin/activate in a POSIX shell, then install the requirements:

python -m pip install --require-hashes --requirement requirements.lock

Installation can require network access to the configured package index. Pip verifies the selected distributions against the recorded SHA-256 values. The smaller requirements-pages.lock permits the deployment job to install only its two artifact-inspection dependencies with the same hash checks. The build itself reads the public repository and installed packages. It does not fetch or execute the private research corpus.

Build a complete edition

For edition 2026.10.9, first supply the exact public predecessor assets as described in Successor offline build. Run from the publication root; a Git checkout is optional:

python tools/figures.py
python tools/build.py --pdf --site
python tools/verify.py --artifacts
python tools/qa.py --artifacts
python tools/disclosure.py --output .build/source-disclosure.json
python tools/release.py --record-reference .build/build-reference-observation.json --reference-observation publication/reference-observation.json --observation-sha256 b45e40f4ae6f2c329f5396614470cf3a1c43ccf18876c67efde419a49a12e32f

The full build requires every positively allowlisted publication file. Unknown files are not copied into generated artifacts. MkDocs runs in strict mode. The verifier checks source metadata, internal links and anchors, disclosure markers, website links and landmarks, search and download availability, personal author attribution, PDF metadata and bookmarks, complete paragraph/table coverage, page bounds, and artifact hashes. PDF generation and verification inspect every cross-reference object, including orphan objects, and reject local-file launch actions, remote file actions, file specifications and other active content. Internal PDF destinations are retained; cross-document references use approved HTTPS website routes whose files and section anchors are checked against the generated site. Its result is written to .build/verification.json. The separate QA tool checks exact claim coverage and evidence types, actual reference output, source commitments, workflow approval boundaries, metadata, media, generated disclosure and negative security controls. Its result is .build/qa.json. Semantic IP review and author approval are separate from automated scanning.

The commands produce:

Location Contents
.build/pdf/ Sixteen paper PDFs, Engineering Methodology, the collected volume (eighteen PDFs), editions.json, and their source/ companion
.build/site/ Complete static website, including the same PDF downloads
.build/docs/ Generated website inputs; edit the maintained Markdown instead
publication/manifest.json Content hashes for this edition
.build/verification.json Results of the publication checks
.build/qa.json Claim, reference, workflow and generated integrity checks
.build/site/llms.txt and llms-full.txt Discovery routes and the complete maintained public prose

The tool checks the scope of its generated directory before removing obsolete generated inputs. It does not clean the repository or modify a separate source collection. Generated output is excluded from ordinary source control; release assets and the website carry the built copies.

python tools/build.py --draft --pdf --site supports incomplete authoring previews. A draft build trims unavailable navigation entries and does not establish release completeness. Release preparation uses the full commands above.

Preview and inspect

The homepage browser title, share title, and description are maintained in mkdocs.yml and rendered by tools/theme/main.html. Open Graph and Twitter previews use the original 1200 × 630 research identity graphic in tools/assets/publication-cover.png. Other pages retain their own titles and canonical URLs. The image is included in the positively selected public source and served locally by the publication website.

python -m http.server 8174 --bind 127.0.0.1 --directory .build/site

Open the local preview in a browser. Check desktop and narrow layouts, keyboard navigation, search results, paper metadata, diagrams, source links, and PDF downloads. Inspect representative rendered pages from every PDF, including covers, contents, figures, tables, long headings, and the final page. Automated text and boundary checks complement visual inspection; they do not replace it.

For a reviewer receiving an already built package, no build environment is needed to read the PDFs or source. The complete review ZIP includes a READ_ME_FIRST.md with reading routes and instructions for serving the included website/ folder using Python's standard local server. See Downloads.

The PDFs contain selectable Unicode text, embedded fonts, bookmarks, and links. The collected volume opens with a compact document-level reading map, followed immediately by the overview and papers. Its complete detailed contents follow the reading material; section bookmarks remain available throughout. Closing glossary distinctions stay together as a short discussion. The PDFs are not represented as independently certified PDF/UA documents. Readers who prefer reflowable text can use the website or maintained Markdown.

Links to material included in the same PDF stay within that document. Other collection links use HTTPS routes to the edition-specific source companion. The builder also includes matching source beside the PDFs for offline inspection. A standalone PDF retains its text and internal navigation; following an external source link requires the published HTTPS destination. New source companions use downloads/2026.10.9/source/. The earlier companions at downloads/2026.10.8/source/, downloads/2026.10.7/source/ and downloads/source/ remain byte-identical.

Identity and reproducibility

The content manifest hashes every positively selected source file except the manifest itself. It orders entries by their repository-relative POSIX names on every operating system. It includes text, figures, claims, reference source, fixtures, rights, third-party notices, dependency pins and tooling. PDF covers identify that content digest. editions.json records each generated PDF's hash and page count. These records distinguish source content from the bytes of a particular render.

The active successor policy fixes SOURCE_DATE_EPOCH=1792627200 (22 October 2026 UTC); the build sets it and rejects a different supplied value. The renderer suppresses variable PDF timestamps. Archives have sorted members, fixed timestamps and ordinary file modes. These are document and archive metadata only. Every new canonical reference execution records actual UTC start/completion times and a fresh observation identity; the source epoch never dates an execution. Exact package versions reduce avoidable differences, but cross-platform font, XML, compression or rendering differences can still affect bytes. Reproducing content identity and passing publication checks are separate observations from reproducing every output byte. Report the environment and both results when comparing builds.

The website search index, its theme script, the publication stylesheet, and the reading controls use content-derived filenames. A rebuilt website therefore loads its matching search text, styling, and controls even when a reader's browser retains assets from a previous visit. The build verifies the pinned theme integration and records the search index and script fingerprints in search/identity.json; artifact checks verify every page uses the matching script. The palette preference remains owned by the theme's existing storage.

Publication checks do not validate the proposed research systems, prove the arguments, establish IP ownership, or demonstrate a production deployment. See the evidence guide for those distinctions.

Repository workflows and releases

The verification workflow builds and checks main-branch changes and pull requests with a read-only repository token. It fetches the publication's complete Git history so the disclosure check inspects every reachable Git object, including historical file bytes, trees, commits and annotated tags. A history audit refuses a shallow checkout and requires the scanned commit count to match Git's reachable count. Unknown historical paths are reported and their bytes are still inspected. The scanner's own source receives the same credential checks; only its exact historical regex definition is normalized to distinguish literal pattern syntax from a real access identifier. QA exercises an actual shallow checkout and unsafe orphan PDF objects as negative controls. Verification reads only this publication checkout and installed public dependencies. Third-party actions are pinned to commit identifiers; no private repository or production evidence is fetched.

Public distribution uses an isolated manual static deployment. The Enterprise repository remains private and authoritative. Public source archives contain only the latest positively allowlisted files, with no Git database, historical commit metadata or private verification receipts. A public source snapshot is identified by its exact source-content digest and file inventory; it is not a public Git repository.

Prepare the complete assets locally after both verification commands pass:

python tools/release.py --prepare .build/release --reference-observation publication/reference-observation.json --observation-sha256 b45e40f4ae6f2c329f5396614470cf3a1c43ccf18876c67efde419a49a12e32f
python tools/release.py --verify-review .build/release/governed-autonomy-2026.10.9-review.zip --manifest .build/release/RELEASE_MANIFEST.json
python tools/release.py --prepare-static .build/release --output .build/static-deployment
python tools/release.py --check-prepared-static .build/static-deployment
python tools/release_checks.py --static-deployment .build/static-deployment --output .build/static-consumer-checks.json

The release manifest identifies the complete source, website and PDF payloads and the source/website archives. Detached artifact hashes identify all final release containers without circular self-hashing. The website and review ZIPs contain the current publication, PDFs and retained source companions. Earlier edition ZIPs remain separate public downloads; new archives do not recursively embed them. Packaging verifies every excluded historical archive against the pinned predecessor bytes. The separate static deployment restores every historical route and identifies the complete website and exact release downloads. The deployment ZIP includes those approved files without nesting itself into the website ZIP or review ZIP. Approval binds the source digest, release manifest, every release asset, static payload inventory, deployment ZIP and public destination.

Before any public upload or deployment, verify the approved local files:

python tools/release.py --verify-static .build/static-deployment --approved-source-sha256 SOURCE_SHA256 --manifest-sha256 MANIFEST_SHA256 --deployment-sha256 DEPLOYMENT_ZIP_SHA256

Replace the command arguments with the exact recorded approval hashes. Keep the pinned predecessor cache available for this check: every restored historical route is verified against its original bytes, and undeclared extra routes are rejected. The prepared-candidate negative controls exercise missing and changed historical archives and an extra route through the actual final verifier, with recomputed candidate hashes. This check must pass before transferring the deployment ZIP to the approved static publication service. Select the exact verified payload for that service through the privately maintained hosting procedure. The publication has no automatic build or application-backend dependency. Hosting configuration, serving paths, account identifiers and deployment credentials are maintained privately and never put into public files. No GitHub Pages deployment is used.

After explicit approval, transfer and select the exact verified static payload. Verify the real unauthenticated website, HTTPS, search, navigation, all eighteen successor PDFs, complete source snapshot, full text and every release download against the approved hashes. A previous approved static ZIP can be redeployed with its own approval receipt. Preserve all source history and release evidence privately. Corrections require a new reviewed artifact set; never silently replace an approved artifact with different bytes.

Corrections update the maintained content and changelog, then receive a new reviewed artifact set. Do not silently replace an approved publication with different content under an unchanged artifact identity.

Successor offline build

Edition 2026.10.9 uses publication/current-policy.json; the earlier policies are frozen. The unchanged publication/successor-policy.json retains the 2026.10.7 reference execution identity, while publication/current-policy.json governs only the 2026.10.9 publication packaging. Supply the exact 36 already-public 2026.10.8 predecessor assets in .build/historical-assets or set PUBLICATION_PREDECESSOR_ASSETS to a local public asset cache. publication/predecessor-assets.json pins every byte. No Git checkout or network is required.

python tools/history.py --prepare-offline PUBLIC_ASSET_CACHE
python tools/claims.py --write
python tools/claims.py
python tools/investigation_tests.py
python tools/public_evidence.py
python tools/successor_checks.py
python tools/build.py --pdf --site
python tools/verify.py --artifacts
python tools/qa.py --artifacts
python tools/release.py --prepare .build/release --reference-observation publication/reference-observation.json --observation-sha256 b45e40f4ae6f2c329f5396614470cf3a1c43ccf18876c67efde419a49a12e32f

These commands support local validation and public-only reproduction. Release requires separate isolated public-only builds and independent semantic disclosure review. --history requires actual Git history and cannot certify a source-only snapshot. Predecessor assets are public build inputs, never protected research inputs.

The public cache is an explicit external reproducibility input. Every exact HTTPS retrieval URL, byte size and SHA-256 is in publication/predecessor-assets.json. Download those 36 public files in a connected preparation environment, then copy the flat cache into the offline build. tools/history.py --prepare-offline PUBLIC_ASSET_CACHE verifies every hash before copying to .build/historical-assets; it performs no network access. The public source ZIP contains all maintained successor inputs and no private index or filesystem dependency. This cache is needed only to reproduce historical downloads unchanged, not to run the synthetic references.

The frozen 2026.10.7 predecessor includes every fixed downloads/ route from its website package, all 36 release downloads, and the LICENSE.txt aliases of its exact license bytes. Its website package also contains the unchanged 2026.10.6 downloads and source companion. The successor companion and downloads are edition-versioned. Use the pinned installed public dependencies from the lockfiles; installation is a separate offline preparation step using a prepopulated wheel cache. No .git is required. --history is a separate optional audit of a supplied Git database and is not a source-ZIP build command.

The retained CI definition also requires an explicitly provisioned cache through PUBLICATION_PREDECESSOR_ASSETS; configure that public cache on the runner before invoking it. The workflow performs no implicit predecessor retrieval. During preparation on 13 October 2026, hosted CI had not been executed. Offline reproduction uses the commands above and does not need CI or Git credentials.

For dependency installation with networking disabled, first obtain the exact public distributions in a wheel cache, then run:

python -m pip install --no-index --find-links PUBLIC_WHEEL_CACHE --require-hashes --requirement requirements.lock

The example runner and public evidence validator use only the standard library. The broader successor/claims/QA suite uses these installed publication dependencies. The reviewed JavaScript vendor bundle is already in the source snapshot; normal offline builds do not invoke npm.

Recorded observation input and fresh execution

Exact release reproduction additionally consumes the immutable public reference observation distributed in this source snapshot. It was produced by the canonical tools/release.py --record-reference path, with actual UTC execution times, a unique observation identity, the public runner/input digests, commands, environment, eleven continuity checks and twelve synthetic positive/negative results. This is a local author observation, not external reproduction or product evidence. The content manifest binds its exact file bytes. The release also distributes these unchanged bytes as reference-observation.json, hashes them in the review payload and detached asset inventories, and preserves their identity in its manifest.

The exact file digest is an explicit argument to every consuming command above. A wrong digest or changed reference source is rejected. The observation validator enforces a closed, type-strict value schema for every nested result: exact test identities, checked bounds, ordered traces, counterexamples, assumptions and outcomes for these fixed public fixtures. Unknown fields, unsupported assurance or status content, and malformed or truncated records fail validation even when their hashes are recomputed. Execution environment fields accept only numeric Python/SQLite versions and named supported platforms. The fixed expected outcomes are validation criteria, not a replay of the historical event; matching them or a hash does not authenticate the recorded clock, establish outside reproduction, or declassify source. The release archive also checks exact observation metadata and byte-identical result payloads. --prepare packages that recorded observation without executing a new reference or assigning it a new date. Two isolated builds must consume the same source snapshot, predecessor assets and immutable public observation to compare exact release/deployment bytes. Different observed events are not expected to produce byte-identical release packages.

For a new independent behavioral execution, retaining a separate observation and comparing results against the recorded public input:

python tools/release.py --record-reference .build/independent-reference-observation.json --reference-observation publication/reference-observation.json --observation-sha256 b45e40f4ae6f2c329f5396614470cf3a1c43ccf18876c67efde419a49a12e32f
python tools/release_checks.py --output .build/release-behavior-checks.json

Use a fresh output filename for each execution. A failed canonical attempt retains a dated failure receipt, exits unsuccessfully and is rejected as release evidence. The comparison checks public input identities and behavior while preserving both full observations, including their different timestamps and identities. The QA command also retains its new execution in .build/reference-observations/; those rerun receipts are build evidence, not substituted into the immutable release input. Exact generated site/PDF/release reproduction and generated-artifact review remain separate gates. The focused release regression executes the real references and receipt/archive consumers with bounded inputs, without generating a site or PDF.