A single string element is a value, not a dimension (seal moved, Architect-approved) - #3973
Merged
Merged
Conversation
…ring
`pub const TOOLS : [1]str = ["tri/gen"];` generated the literal verbatim, and
Zig rejects it. 151 single-element literals in the corpus hold a string and
every one of them passed through.
`parse_bare_array_literal` refuses a sole element that is a literal or an
identifier, because `[4]` and `[SIZE]` are indistinguishable from an array
DIMENSION at that point. That reasoning is sound for an integer or a name and
does not apply to a string: no type is written `["tri/gen"]`. So a sole string
element is now a value, and an integer or bare identifier stays ambiguous and is
still left alone.
## Why the seal moved
FROZEN.md §5 step 2, as an Architect-approved hotfix — authorised explicitly.
M1 cargo build --release green
M2 no .t27 spec is touched by this PR
M3 cargo test --release 2715 passed, 0 failed — identical to the
same suite on 6e8a494 without the patch
M4 no tests/run_all.sh in the repo; the CI checks on this PR stand in
Old seal ace867b052b42b0ff74be3720a15448875bfc718363c71d847c0aeb1f2f5772e
New seal 8932aae0c5a95a0528e3e6b8dbbf4e77e6fbb75e55f7d6e7d0a2f92f8b2ff2b6
## Measured
The `expected type expression` error class falls from **107 to 6**. With the
empty-literal fix that preceded it, that class has gone from 262 to 6 and is
effectively finished.
The corpus pass count moves from **279 to 280** — one spec,
`automation/wrapup-auto.t27`, and none lost. All 945 specs still generate; none
newly fails to generate.
One spec is the honest number and it is stated as such. The corpus fails in
layers: clearing this one exposes the next, and `use of undeclared identifier`
rose from 296 to 420 as files that previously stopped at a parse error now reach
name resolution. That is progress that a pass count cannot show.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
dmitrii-f-t27
added a commit
that referenced
this pull request
Oct 2, 2026
336 specs resealed with the t27c built from master; drift attributed by bisection to #3962/#3973/#4114 (2026-09-17) and the 2026-09-08 wave, spec changes to bee body implementations (154) and repairs (91). ternary_logic resealed --force as hollow. Seal currency stale 544 -> 0, seal coverage green, hollow 65 -> 31. Refs #5497
This was referenced Oct 2, 2026
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.
Refs #3960
Follows #3962, which fixed the empty literal. This is the layer behind it.
pub const TOOLS : [1]str = ["tri/gen"];generated the literal verbatim; Zig rejects it. 151 single-element literals in the corpus hold a string, and every one passed through.parse_bare_array_literalrefuses a sole element that is a literal or identifier, because[4]and[SIZE]are indistinguishable from an array DIMENSION. Sound for an integer or a name — and inapplicable to a string: no type is written["tri/gen"]. An integer or bare identifier stays ambiguous and is still left alone.Freeze ceremony (FROZEN.md §5)
Architect-approved hotfix, authorised explicitly.
cargo build --releaset27c parseon touched specs.t27spec is touchedcargo test --release6e8a49423without the patchtests/run_all.shMeasured
expected type expressionfailuresWith #3962 before it, that error class has gone 262 → 107 → 6 and is effectively finished.
The pass count moves by one —
automation/wrapup-auto.t27, and none lost. Stated plainly because it is one. The corpus fails in layers: clearing this one exposes the next, anduse of undeclared identifierrose from 296 to 420 as files that previously stopped at a parse error now reach name resolution.On the red checks
emit-bitexact,spec-guardsand the ratchet fail on the same pre-existing set of specs that do not parse — the identical list was red before this series began. Verified, not asserted: generating all 945 specs with at27cbuilt from this branch and one frommastergives 945 either way, with zero newly failing to generate.