Skip to content

t27b: check_elide_plan, two overflow traps that cannot fire leave the hot loop (Refs #12871) - #13397

Merged
gHashTag merged 8 commits into
masterfrom
lane/t27b-check-elide
Nov 9, 2026
Merged

gHashTag merged 8 commits into
masterfrom
lane/t27b-check-elide

Conversation

@gHashTag

@gHashTag gHashTag commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

What

t27b drops the overflow trap of two checked ops that cannot fire. The law is specs/tri/t27b/check_elide_plan.t27 (15 tests, refusals included): (a) the induction increment i = i + 1 under while (i < n), and (b) x - k (k <= c) after x = x + c. The witnesses are specs/tri/shootout/check_elide.t27 (u64, i64, u8, both (b) shapes, five refusal shapes; 10 tests). Glue in cli/t27b/src/lower.rs reads the facts and rewrites accepted sites from Add/Sub to AddW/SubW; the decisions come from the generated gen/rust/tri/t27b/check_elide_plan.rs (lab output, committed unedited, mounted with #[path]). First seals for both specs are included. Also deletes the unreferenced scripts/bulk-create-notebooks.sh (its port spec is on master) and drops its name from the MIGRATION_AUDIT.md Keep row.

Lab

Run 42576632198 at 8489c93, m6=false, all green, no vacuous, no blocked:

  • t27c: check_elide_plan 15/15, check_elide 10/10, bench_audit 1/1, inline_select 17/17.
  • t27b: same counts, asserts counted: 24, 27, unknown (bench_audit), 36.
  • asm, bench_audit verdict_benchmark_200m: t27b 16 (master 9aa6005, run 42573573304) -> 15 words; gcc -O2 10. Static word count only, no speed claim.
  • Earlier runs: 42574469464 (specs and seals), 42575341324 (gen), 42576079218 (failed: a name clash with an existing each in lower.rs, fixed in 8489c93).

Budget

Hand-written .rs, excluding gen: cli/t27b/src/lower.rs +39; scripts/bulk-create-notebooks.sh -47. Added 39 <= deleted 47, under 40 per file and 80 per PR.

Not verified

  • Only one of the two intended elisions shows in the bench_audit count (one word fewer, not two); which site stayed was not inspected.
  • No benchmark timing, no run of the full suite, no M6 leg.
  • python3 tools/dupe_scan.py shows only the inherited bytes_equal 9 -> 10.

Refs #12871

🤖 Generated with Claude Code

gHashTag and others added 6 commits November 9, 2026 13:33
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t for the lab (Refs #12871)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ements (Refs #12871)

Glue in lower.rs rewrites sites accepted by check_elide_plan.t27 to AddW/SubW.
The gen is the lab output of check_elide_plan.t27. Deletes an unreferenced script to pay the foreign-line budget.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…DIT Keep row (Refs #12871)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 07:06:59 UTC

Summary

Status Count
Total Open PRs 43
PRs with Failing Checks 38
PRs with All Checks Green 5
READY 4
FAILING 38
PENDING 0
NO CHECKS YET 0

These columns do not partition: 4 + 38 + 0 + 0 = 42, and there are 43 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

induction_elides takes nested_loop, the glue reports writes under a nested while, a witness and a refusal test follow.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 07:12:32 UTC

Summary

Status Count
Total Open PRs 43
PRs with Failing Checks 38
PRs with All Checks Green 5
READY 4
FAILING 38
PENDING 0
NO CHECKS YET 0

These columns do not partition: 4 + 38 + 0 + 0 = 42, and there are 43 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

…1509 (Refs #12871)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 07:17:22 UTC

Summary

Status Count
Total Open PRs 44
PRs with Failing Checks 38
PRs with All Checks Green 6
READY 4
FAILING 38
PENDING 0
NO CHECKS YET 0

These columns do not partition: 4 + 38 + 0 + 0 = 42, and there are 44 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag

gHashTag commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator Author

Review fix: an increment inside an inner while keeps its trap (induction_elides takes nested_loop; witness nested_inc plus a refusal test). Head ae5cfe7. Lab run 42578328864 green: check_elide_plan 16/16, check_elide 11/11, bench_audit 1/1, inline_select 17/17, no vacuous; bench_audit asm t27b=15 gcc_O2=10 (master 16). The trapping input nested_inc(255, 254) is not asserted, a test cannot catch a trap.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant