Skip to content

[bug] t27o emits 55 specs that t27c cannot compile either -- undeclared names, negative enum(u32) values, _ identifiers, >>=, open ranges #10905

Closed

Description

@gHashTag

Summary

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

Links

#10879, #10522, #10883.

User Scenarios

  • 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.

Success Criteria

  • t27c check specs/tools/t27o/rust_convert.t27 exits 0
  • t27c test-report specs/tools/t27o/rust_convert.t27 exits 0
  • 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

Activity

  1. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 19, 2026
  2. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    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
  3. added 13 commits that reference this issue on Oct 19, 2026
    0653fa2
    d70472f
    16c01af
    7a383a7
    29b8f44
    57e0a0e
    48c1b95
    9fd623f
    b175611
    6e9339e
    f89b53c
    8c6cb0b
    e3f3b40
  4. removed
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions