Skip to content

Corpus census W737-W739: the defect population is 168, not 490 — and what is still open #2152

Description

@gHashTag

What this issue preserves

Waves W729–W739 worked the compiler and the corpus census. The compiler changes are landed; this issue holds the measurements and the open work, so the next wave starts from the numbers instead of re-deriving them.

The honest corpus, measured on one pinned binary

t27c classify first (a .t27 extension is a filename, not a type declaration):

class files share
SOURCE module … 590 95.5%
NOT-CODE (Markdown document) 14 2.3%
ALT-SYNTAX spec X { … } 8 1.3%
UNCLASSIFIED 5 0.8%
MIXED 1 0.2%
total 618

Then test-report over all 578 sources, binary hash 56b7a6b6d8047566 recorded before and after:

run their tests        88     1293 tests passing
BLOCKED               490

And every blocked spec crossed with spec-status:

status specs meaning
IMPLEMENTED 168 written and genuinely failing — the defect population
UNWRITTEN 154 no bodies; blocking is correct
NOPARSE 144 does not parse
NOFN 18 no functions at all
PARTIAL 6

The real defect population is 168, not 490.

Three ways the denominator was wrong

  1. Files that are not source — 28 of 618 (t27c classify).
  2. Sampled by alphabetical prefix — 131 specs gave 26.7% running; all 578 give 15.2%. specs/a*…specs/f* holds the hand-maintained numeric and fpga modules.
  3. Unwritten counted as broken — all 101 specs of unable to format type '@TypeOf(undefined)' contain @compileError("not yet implemented"). Fixed in W739; they now report honestly.

Compiler changes landed

wave change effect
W729 type alias const X = u8 no longer emitted as @"u8" unblocked the alphabet SSOT
W730 primitives never escaped as identifiers @"prim" 8 → 0 of 130
W730 bench-path double discard suppressed
W732 t27's bare slice [T] → Zig []T error class removed
W734 for x in collection (was range-only) 4 of 5 specs parse
W735 parameter shadowing a module declaration +59 tests (router 19, testbench 16, timing 24)
W736 local shadowing, fn bodies only +15 tests (memory)
W739 stop formatting undefined 101 specs report their true status

Reference suite held at 145 tests through every change.

Open, with roots named

  • undeclared identifier 'assert' — 60 specs. Third census class, never worked to root. May well be the same disease as the 101 (status, not defect).
  • Local shadowing in test/bench blocks — 9 specs. A test block's first assignment parses as StmtAssign, not StmtLocal; extending the rename renamed references while the binding kept its old name, turning a shadow error into use of undeclared identifier. Attempted and reverted — see collect_shadowing_locals' doc comment.
  • if as an EXPRESSION without parentheses. parse_if_stmt has accepted it since W578; parse_if_expr still demands parens. Mirroring it — including the no_struct_literal guard — cost 46 of 145 reference tests, because a branch value may legitimately be a struct literal where a statement body may not. Attempted and reverted.
  • Grammar gaps still open: newtype struct X(T);, while (c) : (step), -> &str, module a::b, open slices arr[i..].
  • The 168 written-and-failing specs have never been decomposed by cause.

Protocol notes worth keeping

  • Never rebuild the compiler under a running census. The first full run had it rebuilt twice beneath it; 272 rows were measured across three binaries and the run was discarded, not salvaged. Pin the binary hash before and after.
  • Classify by intent before symptom. t27c spec-status answers UNWRITTEN/PARTIAL/IMPLEMENTED/NOPARSE/NOFN and did so all along.

Data: docs/reports/CORPUS-CENSUS-W737.tsv, docs/reports/CORPUS-BLOCKED-BY-STATUS-W738.tsv. Theorems T255–T276 in docs/theory/IGLA-FORMAL-RESULTS.md.

No activity

Activity on this issue will appear here.

Activity

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

    needs-boundaryNo '## Boundary' section, so the Queen can reserve nothing for it and no bee can take it

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions