Skip to content

merge(design): close the docs items of the v1 conformance review - #9

Merged
LittleCoinCoin merged 11 commits into
mainfrom
docs/conformance-review
Nov 10, 2026
Merged

LittleCoinCoin merged 11 commits into
mainfrom
docs/conformance-review

Conversation

@LittleCoinCoin

Copy link
Copy Markdown
Member

Closes the docs and records items of the v1 conformance review: table C rows R, K and E5, and
table D row O9 (__reports__/candler-v1-review/00-findings_v0.md on
rdm/m2c-planner-neutrality). Every item was re-checked on f4ffe67 (v0.4.0, after M2a). M2a's
own drift in the same sections is included. The text is fixed, not the code. Where the code is
what departs from the design's intent, R01 keeps its rule and the gap goes to the code session.

What lands

  • R01 (__design__/architecture.md). Before anything was edited, a design-intent reviewer
    checked each item against R01's history, the original design reports and the milestone
    rulings. A second pass then attacked the edited sentences.
    • The opening says what is built.
    • The import's manifest table gains treatment, snapshots, inputs and environments.
    • The raw-frames source is the digest of the gzipped legacy file.
    • The writable /opt/env volume (A13) and the candler.role label are now described, and so
      are control containers.
    • The Isolation signatures are the M2b trio, with the long-lived handle M5's.
    • The "plan" ban is scoped to the experiment.
    • The pattern rule now says what the schema test checks.
    • The parity plug-in is htn-creator-eval@0.5.2.
    • Nothing is touched in §Experiment file, §Run manifest or §Plug-ins, which M2c's amendment A2
      owns.
  • README: what each crate holds at v0.4.0.
  • CONTRIBUTING:
    • the schema line covers every root, and the core line excludes the evaluator helper;
    • the 0.y.z bump rule (features_always_increment_minor);
    • O9: a narrowing schema change is feat(schemas)!/fix(schemas)!, never a plain
      fix(schemas);
    • release-plz 0.4.3, as CI pins it, and uv in the tools;
    • a PR title that fits in 72 characters with GitHub's (#<number>);
    • the new length checks in Enforcement.
  • Subject length (the writing-history setup, a blocking hook as Eliott chose):
    • the cog-managed commit-msg hook refuses a subject over 72 characters, counting characters,
      not bytes;
    • CI refuses a PR title that, with GitHub's (#<number>), would make the merge subject
      longer than 72; the limit is computed from the PR number. That suffix is how 049a9ab
      reached 73.
  • Records:
    • a dated note on supervision_gates_report_v0 that the Linux half ran (runs 42568786540 and
      42576041947);
    • E5's "imports losslessly" now says what the oracle compares;
    • the wire-schemas campaign's 29 leaf gates are ticked on merged-history evidence, two marked
      superseded by GitHub releases;
    • its Progress rows are written by hand, as Amendment Log rows were. No dirtree-rdm command
      writes them, and every README validates.

After merge

  • docs(readme) triggers a v0.4.2 core patch release (main is at v0.4.1).
  • Run cog install-hook --all again from the main checkout: the installed hook is a copy.

Handed over, not fixed here

  • Code:
    • no agent container record, so the job-end sweep refuses the agent container;
    • the legacy streams are missing from import.sources[] and its blobs;
    • the 37 local #[allow]/#[expect], for the Grit reviewer.
  • M2c: the imported treatment has no commit, and imported snapshot digests are not the
    RFC 8785 form.
  • Follow-up: M2b's and M2a's leaf gates are still ⬜ after merge (159 and 21).

Checks

  • every subject ≤ 72 characters, cog check origin/main..HEAD clean, the trailer on all 11
    commits
  • the title limit run by hand for merge(experiment): gate m2c, m4 and m5 on a core free of domain #7 and #100 (67 and 65); wc -m under C.UTF-8 counts
    a→b as 3 on macOS and Ubuntu 24.04
  • the hook run by hand on subjects of 72, 73, 72 with a non-ASCII dash, fixup!, and no
    scope: exits 0, 1, 0, 0, 1
  • actionlint .github/workflows/ci.yml
  • no R01 hunk inside an M2c-owned section; no builds run

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

🤖 Generated with Claude Code

LittleCoinCoin and others added 11 commits November 10, 2026 09:08
CONTRIBUTING caps a subject at 72 characters, but neither the hook nor
cog checked it, so over-long subjects kept landing. The commit-msg hook
now counts the subject's characters, not its bytes, so a subject with a
non-ASCII dash is measured as written. fixup! and squash! subjects stay
exempt, as they are rewritten before they land.

An installed hook is a copy: run `cog install-hook --all` again from
the main checkout once this is on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub builds the merge commit's subject from the pull request title
and appends " (#<number>)". The commit-msg hook never sees that
subject, which is how 049a9ab reached 73 characters from a title that
fitted. The title check now computes its limit from the pull request's
number, 72 minus the length of " (#<number>)", so the merge subject fits
in 72 whatever the number.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
R01 still opened with "Nothing is implemented yet" after the wire
schemas, M1, M2a and M2b merged. It now says what is built, that a
part a later milestone owns names it, and that where code falls short
of a stated rule the rule stands. Three passages no longer said what the code does:

- The ban on "plan" came from the design's rule that eval
  configuration is never called a plan. It now says so, and leaves
  execution's RunPlan and ContainerPlan and the legacy plan.* keys
  outside it.
- The Isolation signatures described the long-lived handle that M2b's
  architecture (decision 12) moved to M5. They now name the per-run
  trio M2b built, with the handle kept as M5's.
- The parity test named htn-creator-eval 0.5.0; the gate and its guard
  name 0.5.2, the pin ruled on 2026-11-09 (M2a l1 rulings).

A design-intent review checked each change against R01's history, the
original design reports and the milestone rulings before it was made.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The import's manifest table named only the values and the harness, so
R01 was silent on four of the six parts of an imported cell's digest.
It now says where the treatment, the snapshots and the inputs come
from, that environments stay empty, and that the pointers to them are
import rules the caller supplies, which keeps the core free of domain
names (I1).

A raw-frames header's source is the digest of the file as stored, so
for an imported agent stream it is the gzipped legacy file's, as the
M1 import leaf ruled; the frames hold the decompressed bytes. That the
gzipped streams are not yet kept among the import's source blobs is a
code gap, handed to the code session, so that sentence is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two facts of the container were built but never written into R01:

- The agent's environment at /opt/env is writable. It is an anonymous
  volume with no host source that docker fills from the locked image
  per container, ruled in M2b (A13, 261c7dd) so the agent can install
  into its own environment while the root stays read-only.
- Containers carry a fourth label, candler.role, which the destroy
  guard reads to tell the agent from the gateway. A control container
  (a version readout, a catalog capture, the image build) carries only
  that label and --rm, so no sweep meets it; only the image build has
  a network, the bridge to the package index.

R01's "each container gets a container record" stays as written: no
code writes the agent's record yet, and the job-end sweep refuses an
unrecorded agent container. That is a code gap, handed to the code
session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The schema-files rule said patterns use "never `$` or `\s`", yet every
one ends with `(?![\s\S])`, and it named fewer refusals than the test
makes. It now says what replaces `$` and `\s` and why, that the regexes
R01 writes with `$` for reading are published in the anchored form, and
exactly what no_published_pattern_depends_on_the_regex_engine checks:
`$` and `.` outside a class, the shorthand classes and assertions
outside the anchor, and the anchor on every pattern except a prefix
inside an `if`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The status still said the four non-schema crates were empty and that
candler-schemas held two wire types, three milestones after both had
stopped being true. It now names what is built, what each crate holds,
the CLI verbs that exist, and where the Python helper lives, and says
that nothing is published.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CONTRIBUTING had drifted from what the release job and CI do:

- The schema line named two roots; it now covers every file under
  crates/candler-schemas/schema/, and the core line excludes the
  evaluator helper, which has had its own line since M2a.
- Below 1.0, release-plz bumps the minor for both a breaking change
  and a feat. That is now stated, with why the `!` marker still
  matters, for all three lines.
- release-plz bumps by commit type, not by schema diff, so a narrowing
  schema change typed fix(schemas) would ship as a patch (review item
  O9). A table now maps each schema class to the commit that carries
  it, and forbids the plain fix for a narrowing change.
- release-plz is pinned at 0.4.3 in CI, not 0.4.2, and uv, which CI
  installs for the helper and the evaluation guards, was missing.
- The new subject-length checks of the hook and of the pull request
  title are named in Enforcement, with the title budget (title plus
  GitHub's " (#<number>)" within 72) and the hook reinstall they need.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The supervision gates report still says its Linux half has not run,
because it was written before the first push. Container e2e passed on
M2b's pull request, on the knowledge-transfer report's gate commit and
on the head that merged. A dated note at the end says so and names the
runs, and leaves the record above it as written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"Imports losslessly" claimed more than the gate measures. The oracle
compares each outcome row's status, value, weight, cause and role (and
the run and row counts); it does not compare evidence notes, the
treatment, snapshots or inputs (review item E5). The M1 goal now says
what it does compare, in the meta-roadmap and in the M1 campaign. The
M1 test definition is a dated record and keeps its wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The milestone leaf marks all five wire-schemas gates met, yet the
campaign's six leaves still showed their 29 gates open and its three
Progress tables empty (review item K). Each gate is now ticked on the
evidence in the merged history:

- the mechanical gates, re-run at their leaf's merge: the fixture
  digests and counts at 1cd9997, every crate inheriting the lints at
  63c482c, the deprecated legacy cause at 6376ea1, the git-only release
  config and the empty publish grep at a9f57b8, and cog.toml's types
  and scopes equal to CONTRIBUTING's tables at 4eae1de;
- the build, test, drift, cog and hook gates, by the close-out sweep;
- the verifier and Grit gates, by the merge bodies of 6376ea1 and
  48211df.

The two release_ci gates that GitHub releases have since superseded
(9819455) say so. Progress rows give each leaf's branch, from the
reflog, its commit count and its merge. No command of dirtree-rdm
writes a Progress row, so they are written by hand, as Amendment Log
rows have been, and every README still validates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@LittleCoinCoin
LittleCoinCoin marked this pull request as ready for review November 10, 2026 00:12
@LittleCoinCoin
LittleCoinCoin merged commit d7a29a1 into main Nov 10, 2026
4 checks passed
@LittleCoinCoin
LittleCoinCoin deleted the docs/conformance-review branch November 10, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant