You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] t27o emits 55 specs that t27c cannot compile either -- undeclared names, negative enum(u32) values, _ identifiers, >>=, open ranges #10905
55 of the 1,216 specs t27o emitted on the roadmap repositories (step 1 of #10879) do not compile under the reference t27c test-report either: the converter writes text that is not valid t27. A converter must refuse what it cannot express, never emit an invalid spec.
Expected vs actual (counts from the step-1 run, master 57aa3bc)
Class
Specs
Example
A name used but never declared in the spec
15
multibots telegram_stars:16
A negative value in an enum(u32)
9
_ used as an identifier
8
Parse errors: c >>= 1 (compound shift), path[..i] (open range)
6
An all-caps enum variant written as Owner_VARIANT (rust_convert.t27 about line 4053) and a unit struct value written as a bare type name
several, inside the rows above
ring_092:68
Other
the rest
see RESULTS.txt
Steps to reproduce
tri t27o <file.rs> on the examples, then t27c check / t27c test-report on the output.
Fix
Each class either converts to valid t27 (with a test that the output compiles under t27c AND runs under t27b) or is refused with its reason. A test per class, a negative control.
Boundary
May touch: specs/tools/t27o/rust_convert.t27 (and zig_convert.t27 if a Zig spec is in the 55), their gen files and seals.
Given a Rust file containing an undeclared name, when t27o converts it, then the converter either emits valid t27 that compiles under t27c or refuses with a clear reason.
Given a Rust file containing a negative value in an enum(u32), when t27o converts it, then the converter either emits valid t27 that compiles under t27c or refuses with a clear reason.
Given a Rust file containing _ as an identifier, c >>= 1, or path[..i], when t27o converts it, then the converter either emits valid t27 that compiles under t27c or refuses with a clear reason.
Requirements
FR-001: The converter MUST refuse to emit specs with undeclared names instead of producing invalid t27.
FR-002: The converter MUST refuse to emit specs with negative values in enum(u32) instead of producing invalid t27.
FR-003: The converter MUST refuse to emit specs using _ as an identifier instead of producing invalid t27.
FR-004: The converter MUST refuse to emit specs containing >>= or open ranges like [..i] instead of producing invalid t27.
FR-005: Each refusal MUST include a diagnostic naming the unsupported construct and the source location.
FR-006: For each of the five problem classes, a test case MUST exist that passes when the converter refuses or emits valid t27, and fails on the current behavior.
5 new negative-control tests in the converter test suite each produce a refusal diagnostic for their respective problem class (undeclared name, negative enum u32, _ identifier, compound shift, open range)
Running tri t27o on the 55 problematic inputs from RESULTS.txt produces zero specs that fail t27c check
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
missing: ## User Scenarios -- at least one Given/When/Then scenario
missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
Activity
github-actions commentedon Oct 19, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
FR-001: ... MUST ...exit 0, or a backticked commandt27o: a discard in a test is const _ = e; -- the form t27c keeps as Z…
t27o: an enum with a negative discriminant takes a signed tag, one pa…
t27o: a compound shift is a = a >> n, and the second receiver of a tr…
t27o: a name the output uses is declared in it -- six ways it was not (…
t27o: what t27c has no form for is refused -- operators and casts on …
t27o: what t27c has no form for is refused -- operators and casts on …
t27o: an all-caps enum variant is Owner.VARIANT and a unit struct val…
t27o: a discard in a test is const _ = e; -- the form t27c keeps as Z…
t27o: an enum with a negative discriminant takes a signed tag, one pa…
t27o: a compound shift is a = a >> n, and the second receiver of a tr…
t27o: a name the output uses is declared in it -- six ways it was not (…
t27o: what t27c has no form for is refused -- operators and casts on …
t27o: no invalid output -- the 55 specs t27c could not compile are va…