Skip to content

docs: the handoff reports what the trees actually contain - #111

Merged
ShocOne merged 2 commits into
mainfrom
docs/refresh-handoff
Aug 25, 2026
Merged

docs: the handoff reports what the trees actually contain#111
ShocOne merged 2 commits into
mainfrom
docs/refresh-handoff

Conversation

@ShocOne

@ShocOne ShocOne commented Aug 25, 2026

Copy link
Copy Markdown
Member

handoff.md stopped at PR #86; main is at #109. Re-measured against the three generated trees at 30b23ac and rewritten to what they contain.

Stacked on nothing — independent of #110, though both came out of the same audit.

The headline was false

All fifteen merged PRs improved coverage, not correctness. … the second has not been started.

It started at #91, #93, #94 and #96. Constraint keywords parse, bounds and patterns become validators, format: password / writeOnly become Sensitive, deprecated becomes a DeprecationMessage, and a documented default fills the response.

The census was taken at the wrong layer

The old file listed ten framework symbols "verified against current main" as zero. Measured in the generated trees, four were not:

Symbol Claimed Actual
Sensitive 0 53
DeprecationMessage 0 171
int64validator.Between 0 180
RegexMatches 0 21
UTF8LengthBetween 0 42
LengthAtLeast / LengthAtMost 0 138
Default 0 18

The census had been taken by grepping this repo for the symbol. internal/emit/render_constraints.go spells a pair of bounds as fmt.Sprintf("%sBetween(%v, %v)", …), so the string never appears here and always appears in the output. That lesson is now written into the file, and into CLAUDE.md in #110.

Still genuinely zero, and each is a mapping.md row: WriteOnly, SetAttribute, SetNestedAttribute, SemanticEquals, RequiresReplaceIfConfigured, and any config validator at all.

What has still never happened

No audit has run against any of the three pilots. All three revised specs contain zero x-tfpfgen-* extensions, and no scratch tree has an audit/ or spec/corrections/ directory. Every observation-driven shape is unexercised — including the conditional validators, which is why row 5 reads "emitter exists, no tree contains one".

Counts

Refusal counts are gone; docs/emittance_tracker.md owns those, and the old file's 1600 disagreed with the tracker's 1507.

The presence census stays, because it is not a tracker row — the tracker holds tree files, entities by kind, and refusals by stage. It is stamped with the commit and date, and it moved the right way for the first time:

optional computed_optional ratio
first measured 2,221 64 35×
after coverage work 3,216 65 49×
now 10,574 670 15.8×

Absolute figures are not comparable across rows — union variants brought each branch's own fields into the tree. The ratio is the number that means something.

Other corrections

Verification

Trees confirmed current before measuring — tfpfgen provider verify on ThousandEyes reports 1912 files, no drift, matching the tracker's row. Refusal totals independently recomputed from unsupported.json: 1507, split exactly as the tracker records.

bash scripts/repo_hygiene_gate.sh   # clean

One question for you

Should the presence census and the emitted-symbol census move into docs/emittance_tracker.md? The tracker currently defines itself as tree files, entities by kind, and refusals by stage, so I left them here rather than widen it without asking. They have the same staleness problem the tracker exists to solve.

🤖 Generated with Claude Code

ShocOne and others added 2 commits August 25, 2026 11:55
Stale by 23 merged pull requests. Its headline — that correctness work had not
been started — stopped being true at #91, #93, #94 and #96, and four of the ten
framework symbols it reported as never emitted were being emitted when it said
so. The census had been taken by grepping this repo, and an emitter builds most
of what it emits: render_constraints.go spells a bound with Sprintf, so the
string never appears here and always appears in the output.

Re-measured against the three generated trees at 30b23ac. Sensitive, the
constraint validators, DeprecationMessage and the documented default are real;
WriteOnly, SetAttribute, SemanticEquals and every config validator are still
zero. No audit has ever run against any pilot — all three revised specs carry
zero x-tfpfgen extensions — so every observation-driven shape remains
unexercised.

Refusal counts are removed; docs/emittance_tracker.md owns those. The presence
census stays, stamped with the commit and the date it was taken, and it moved
the right way for the first time: 49x optional-to-computed_optional, now 15.8x.

Adds the lesson the stale census demonstrates: measure at the layer the claim
is about.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Extends the table through #114 and stops describing the fetch-and-pin scheme
in the two rows that named it, since #114 removed it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ShocOne
ShocOne force-pushed the docs/refresh-handoff branch from 98e747d to fb37c39 Compare August 25, 2026 10:55
@ShocOne
ShocOne merged commit bea4199 into main Aug 25, 2026
@ShocOne
ShocOne deleted the docs/refresh-handoff branch August 25, 2026 10:56
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