A report archived by the project, published as it was written. All reports · Markdown source

Agent pubsite: the public notes repository, its sync, validator and site, and draft manifests for nine notes

Claude (Opus), agent pubsite, for Lyndon Drake

2026-10-01

What was built

Everything is under publish/ plus scripts/publish-notes.sh; nothing committed.

path what
publish/README.md what the repository is, how to read it (person and machine), layout, the manifest fields, the status vocabulary quoted from the schema, how to reproduce, how to cite, licences
publish/LICENSE-text.md, LICENSE-code.md, LICENSE-data.md CC BY 4.0 notice (notes, reports, site prose), MIT full text (scripts), CC0 1.0 notice (ledgers, manifests, schema). The two CC files are notices pointing to the legal code URLs, not the full legal code (I had no network to fetch it verbatim)
publish/CHANGELOG.md one “Unreleased: first release” entry
publish/CITATION.cff Lyndon Drake as sole author; a comment says models are named per claim under provenance. No e-mail (it would be public)
publish/.gitignore .tmp/, __pycache__/, *.pyc, .DS_Store
publish/PUBLISH-LIST.txt 70 source-tab-target lines: 10 notes x (md, pdf), docs/notes/README.md, paper/refs/ice-mixing.json as notes/refs.json, 44 reports, 4 ledgers
scripts/publish-notes.sh the sync (bash, set -euo pipefail, no heredocs)
publish/scripts/manifests.py shared loader (YAML with dates kept as strings, so YAML and JSON forms agree)
publish/scripts/validate.py the validator
publish/scripts/build_site.py, templates/page.html, templates/style.css the site builder, its pandoc template and the one stylesheet
publish/manifests/_test/test-note.yaml a four-claim fixture exercising every field (sha256, size, formal, supersedes, an unresolved reference)
publish/manifests/_drafts/*.yaml + README.md draft manifests for the nine other notes (76 claims), not read by the site
publish/docs/ the generated site: 91 pages, 4.5 MB, .nojekyll

The brief said eleven notes; there are ten (plus the README), so the drafts cover nine.

Reports published (44): every report named in the notes’ Artefacts sections (abbreviations expanded), in the real manifest, and in the notes README, and all of 2026-10-01-*.

How to run the three scripts

From the private repository root:

scripts/publish-notes.sh --check          # stale/absent targets; exit 1 if any
scripts/publish-notes.sh                  # copy; refuses (copies nothing) if a source is missing
.venv/bin/python publish/scripts/validate.py
.venv/bin/python publish/scripts/build_site.py

Variants: validate.py --dir manifests/_drafts --also manifests; build_site.py --manifests manifests/_test (or add --manifests manifests/_drafts for a preview; docs/ is rewritten in full each run); --base-url; NOTES_CSL. PyYAML and jsonschema were installed into the venv. A build takes about 8 s.

Current results: sync 70 listed, 0 stale. validate.py: 1 manifest, 32 claims, 0 errors, 3 warnings (the real manifest’s periodicity cites curl-reduction/thm-p, lemma-a, lemma-l; with --also manifests/_drafts these resolve and there are no warnings, because the curl-reduction draft uses those exact ids). Drafts: 9 manifests, 76 claims, 0 errors, 0 warnings. build_site.py: 0 errors and one notice: reports/2026-09-04-certificates-sat.md has a --- rule that pandoc reads as a YAML block, so the builder re-renders that one file with metadata blocks off and says so. Negative tests: a tampered sha256 and an invalid status both give exit 1. Every JSON-LD block (87) parses, every relative link in docs/ resolves, and the inline JavaScript passes node --check. I could not open the pages in a browser (no Chrome in the sandbox), so the graph’s layout and the MathJax rendering have not been seen.

The site, page by page

Draft manifests (for review; not on the site)

Written by three Opus sub-agents from each note and the README; validated here; curl-reduction/thm-p spot-read.

note claims open problems “draft; to be confirmed”
curl-reduction 12 (thm-p, lemma-a, lemma-l, lemma-c, thm-2d, thm-h as certificate campaign, p1 conjecture, …) p1 none
periodicity-certified 9 (l2-periodic, l3-periodic certified; l4-incomplete open; …) l4-incomplete, periodicity-conjecture none
frozen-theorems 10 (thm-1, thm-2-frozen certified via Lean; count proved-unchecked) none none
sector-logconcavity 10 (real-root-counts certified by Isabelle; not-real-rooted computed) support-realisation, logconcavity-general none
sign-gauge-obstruction 7 none none
giant-component 7 (nf-g conjecture; unrestricted form refuted) nf-g none
measurement-z 9 (exponent explored) matching-gap-bound none
helicity-mode 7 cell-123 none
method 5 findings, all kind fact none all five

What the drafters flagged for the main loop:

  1. docs/notes/README.md is inconsistent with itself: “Where the older notes are superseded” says periodicity holds on cubic sides one to six, open at seven; the table and the 1 October paragraph say side eight. The drafts quote “one to six” where they cite that paragraph. The paragraph needs updating (not mine to edit).
  2. The README says Theorem P was “corrected to require every extent at least two”; curl-reduction’s Theorem P already has that hypothesis. The correction was to the periodicity chain as theorem-h-orientation’s first draft stated it.
  3. Two incompatible statements are both called “Theorem H” (curl-reduction: six directions imply even curl; theorem-h-orientation: an axis empty or one-way). No supersedes link was drawn; consider one, or a note on theorem-h-orientation/thm-h.
  4. sector-logconcavity: the abstract says all 24 real-root verdicts are certified in Isabelle; the body certifies 13 in full and only a root-count deficit for the other 11, whose “not real-rooted” rests on a Python squarefreeness computation. The draft splits it (certified / computed); the README repeats the abstract’s wording.
  5. CPOG model counts were given certified, though the schema’s gloss names only DRAT, LRAT, Lean and Isabelle.
  6. checked_by in the drafts lists second enumerators and decision procedures named in the notes, which are not independent agents.
  7. The method note’s status words are not the schema’s; some artefacts are directories or globs.

What I would change in the schema

The schema is unchanged. Suggestions, most useful first:

  1. certified should name the checkers it admits, CPOG included (or say CPOG counts are computed). Two drafts depend on the answer.
  2. Separate independent readers from cross-checks. checked_by is defined as “independent checkers that read it with their own programs”, but the older notes’ evidence is second methods in the same codebase. Add an optional cross_checks list (second enumerator, three decision procedures, drat-trim) and keep checked_by for independent readers. Today drat-trim sits in checked_by in the real manifest.
  3. A machine-readable cell list. scope.cells is free text; an optional cells_list (array of [a,b,c], plus a family string for infinite families) would let a reader or a tool ask “does this hold on (6,6,9)?”.
  4. Artefact patterns. Allow kind: directory or a glob: true flag, since notes cite directories and globs.
  5. A status for findings about practice (the method note), or leave that note without a manifest.
  6. definition with status proved (the real manifest’s model) reads oddly; a defined status, or allowing status to be omitted for definitions, would be clearer. # What is left

Rules kept or broken