Repository navigation
corpus: plant the three unplanted safety cells, re-bless for gitgalaxy#2754 (#59) - #61
Merged
Merged
Conversation
…y#2754 (#59) Sections 1 and 2 of #59. Section 3 is blocked -- gitgalaxy#2748-#2753 are open issues with no engine PRs yet, so their pairings cannot land. ## Section 1: three safety cells that were plantable today css, yaml and dockerfile each read `safety` 1 against the SPEC's 2 and a corpus median of 2, all three out of band and all three carried by the collective morphology ledger entries as authoring gaps rather than engine findings. Each candidate was screened against the live compiled rules before being written: * css -- `@keyframes probe-safety` was an EMPTY block, so `@supports` was carrying the language's only safety hit. Planted `from { contain: strict; }`; the `var()`/`clamp()` alternatives were rejected because they cost `args`. * yaml -- `continue-on-error: false` was the only one. Planted a workflow-level `permissions: contents: read`; screened clean. * dockerfile -- its 1 was `HEALTHCHECK` counting dual func_start+safety, so the file was one real safety construct short, not two. Planted `USER probe`, placed BEFORE the RUN instructions it applies to: dockerfile slices Mode A (each instruction runs to the next func_start match), so a USER line after them lands inside the preceding RUN's body. All three now read 2 = the median, green. `safety`'s out-of-band set drops to the three high outliers (embedded_python 4, haskell 3, typescript 3). ## Section 2: both owed plants DECLINED, with the call recorded #59 asked for the call either way, so both are written into the ledger rather than left implicit. * `DISP=OLD` (gitgalaxy#2742) -- the design question is decided and `jcl-sync-locks-disp-enq-question` moves from upstream-question to engine-semantic. The plant is declined: `sync_locks` is an ungated unplanted-input, so jcl's measured 0 costs nothing, while the DD line screens `sync_locks` 1 AND `io` 1 -- and jcl's io is 3 against a median of 3, so +1 puts a GATED cell out of band. One ungated 0 traded for one gated red cell. Revisit if gitgalaxy#2749 lands a cleanup rule on the same DD line. * `%union` (gitgalaxy#2737) -- declined. yacc reads class_start 0, ON the median and green; a plant takes it to 1 and out of band, i.e. it manufactures the deviation rather than paying one off, and it disables SPEC.md rule 2's `class_start == 0` tripwire for a construct that is optional in a yacc grammar. AGENTS.md rule 8 does not require it: #2737 converted no n/a into a red cell. ## Also: the re-bless gitgalaxy#2754 owes Verified by bisection rather than assumed -- the corpus is clean at 0e521e8d (#2754's parent) and fails 4 cells at #2754 itself: dockerfile `api_orphan_credit` 1 -> 0 (its RUN/HEALTHCHECK buckets no longer enter the orphan check) and scheme 3 -> 0 in a/b/c (the old census tokenised with `\b\w+\b`, which cannot produce a hyphenated token, so every `probe-globals` read as an orphan however often it was named). Both join api-declared-orphans-are-not-new-surface. ## Verification verify_language.py 46/46 PASS, na_check.py --ci clean, bias_report.py --gate exit 0 with 0 unexplained. Ledgered cells 180 -> 172: eight fewer cells need excusing. The length-leak check also clears, 1 leak -> 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WfeHRWra1d6Z5uSReFajSq
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.
Sections 1 and 2 of #59, plus the re-bless squid-protocol/gitgalaxy#2754 owes.
Section 3 is blocked — gitgalaxy#2748–#2753 are open issues with no engine PRs, so their
pairings cannot land yet. Nothing in this PR depends on them.
Section 1 — the three plantable
safetycellsAll three read
safety1 against the SPEC's 2 and a corpus median of 2: out of band, and carried bythe collective morphology entries as authoring gaps rather than engine findings. Every candidate was
screened against the live compiled rules before it was written down.
css@supportsonly —@keyframes probe-safetywas an empty blockfrom { contain: strict; }inside itsafety1, nothing else (the existing at-rule already owned itsfunc_start/structural_boundaries)yamlcontinue-on-error: falsepermissions:/contents: readdockerfileHEALTHCHECK, counting dual func_start+safetyUSER probestructural_boundariesonly, which the manifest does not gateAll three now read 2 = the median, green.
safety's out-of-band set drops to the three highoutliers (
embedded_python4,haskell3,typescript3).One placement detail worth recording:
USER probegoes before theRUNinstructions, not after.Dockerfile slices Mode A — each instruction runs to the next
func_startmatch — so aUSERlineplaced after them is swallowed into the preceding
RUN's body. Measured both ways.Section 2 — both owed plants declined, with the call recorded
#59 says "needs the call recorded either way", so both reasons are written into the ledger rather
than left implicit.
DISP=OLD(gitgalaxy#2742). The design question is decided — #2733 shipped, narrowed toOLD|MODonly — sojcl-sync-locks-disp-enq-questionmovesupstream-question→engine-semantic. The plant is declined, on measurement:sync_locksis in the report's ungated unplanted-input set, so jcl's measured 0 costs nothing;sync_locks1 andio1 — and jcl'siois 3 against a medianof 3, so +1 takes it to 4, out of band, and gated.
One ungated 0 traded for one gated red cell is the wrong direction. AGENTS.md rule 8 asks for a
paired plant when a new rule turns an honest n/a into a manufactured red cell; it didn't here, and
planting would create the very cell the rule exists to prevent. Worth revisiting if gitgalaxy#2749
lands a
cleanuprule onDISP=(…,DELETE)— the same DD line would then pay two signals, and theiocost is worth re-pricing against two rather than one.%union(gitgalaxy#2737). Also declined. yacc readsclass_start0 — on the median, inband, green. A plant takes it to 1 and out of band, i.e. into
container-construct-reads-as-class-startas a fifth language: the plant would manufacture thedeviation rather than pay one off. It would also disable SPEC.md rule 2's
class_start == 0false-positive tripwire for yacc, and the four languages already in that entry are there because
their file cannot exist without a container declaration — a yacc grammar can,
%unionis optional.Rule 8 doesn't require it either: #2737 converted no n/a into a red cell, because
class_startwasalready comparable for yacc and already 0. The rule is exercised by the engine's strict tests and by
the language-crucible, which is where an optional construct belongs.
Also: the re-bless gitgalaxy#2754 owes
4 cells, and I bisected rather than assumed — the corpus is clean at
0e521e8d(#2754's parent)and fails exactly these at #2754 itself:
dockerfile/a.dockerfileapi_orphan_credit1 → 0 — itsRUN/HEALTHCHECKigniter-keywordbuckets no longer enter the orphan check (#2728 half), so there are no orphans left to convert.
scheme/{a,b,c}.scmapi_orphan_credit3 → 0 — the old census tokenised with\b\w+\b, whichcannot produce a token containing a hyphen, so every
probe-globalscounted zero occurrencesand read as an orphan however many times it was named. The probes are now correctly seen in their
own
(export probe-x)lines.Both join
api-declared-orphans-are-not-new-surface, whose verdict now carries the second cause aswell as #2731's — same visible cell, two different engine fixes, and a reader chasing
api_orphan_credit == 0needs both in one place.Verification
verify_language.py— 46/46 PASSna_check.py --ci— cleanbias_report.py --gate— exit 0, 0 unexplainedLedgered cells 180 → 172: eight fewer need excusing, because the three safety cells came into
band rather than being explained. The length-leak check also clears, 1 leak → 0.
Cross-repo
Closes the re-bless owed by squid-protocol/gitgalaxy#2754 (merged, labelled
rosetta:rebless-owed).No engine change is needed for anything in this PR; gitgalaxy#2748–#2753 remain open and their
corpus pairings are still owed once those rules land.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WfeHRWra1d6Z5uSReFajSq