Repository navigation
merge(design): close the docs items of the v1 conformance review - #9
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.mdonrdm/m2c-planner-neutrality). Every item was re-checked onf4ffe67(v0.4.0, after M2a). M2a'sown 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
__design__/architecture.md). Before anything was edited, a design-intent reviewerchecked each item against R01's history, the original design reports and the milestone
rulings. A second pass then attacked the edited sentences.
treatment,snapshots,inputsandenvironments.sourceis the digest of the gzipped legacy file./opt/envvolume (A13) and thecandler.rolelabel are now described, and soare control containers.
Isolationsignatures are the M2b trio, with the long-lived handle M5's.htn-creator-eval@0.5.2.owns.
features_always_increment_minor);feat(schemas)!/fix(schemas)!, never a plainfix(schemas);uvin the tools;(#<number>);commit-msghook refuses a subject over 72 characters, counting characters,not bytes;
(#<number>), would make the merge subjectlonger than 72; the limit is computed from the PR number. That suffix is how 049a9ab
reached 73.
supervision_gates_report_v0that the Linux half ran (runs 42568786540 and42576041947);
superseded by GitHub releases;
writes them, and every README validates.
After merge
docs(readme)triggers a v0.4.2 core patch release (main is at v0.4.1).cog install-hook --allagain from the main checkout: the installed hook is a copy.Handed over, not fixed here
import.sources[]and its blobs;#[allow]/#[expect], for the Grit reviewer.RFC 8785 form.
Checks
cog check origin/main..HEADclean, the trailer on all 11commits
wc -munderC.UTF-8countsa→bas 3 on macOS and Ubuntu 24.04fixup!, and noscope: exits 0, 1, 0, 0, 1
actionlint .github/workflows/ci.ymlCo-Authored-By: Claude Opus 5.5 noreply@anthropic.com
🤖 Generated with Claude Code