ci: the debugged conformance run as a tier B gate #290

Closed
opened 2026-10-09 22:41:08 +00:00 by orion · 3 comments
Collaborator

Context

The conformance suite lowered for the debugger (TORB_VM_DEBUGGED=1 sh tools/conformance.sh --vm) passes today but is "a run, not a gate" (DEBUGGER.md section 19). A change to the lowering or to the VM's statement handling can break a program only under the debugged lowering and nothing in CI would notice. Split out of #43; it is independent of the cheaper attached run: this run is lowered for the debugger with no debugger attached, so the attached-run work does not change its time.

Source

  • DEBUGGER.md section 20, "The debugged conformance run as a gate of tier B, once its time allows".
  • tools/gates.sh (lane_conformance, lane_runtime_and_embedded), tools/conformance.sh (timings file per back end), compiler/CONTRIBUTING.md (tier B list).

Seed impact

None: shell scripts and docs only. No syntax change, no new native, no driver flag, no std name looked up by string.

Plan (one PR, two Conventional Commits)

  1. test(conformance): run the suite in the VM lowered for the debugger - add the leg to tier B as a gate in lane b2 (lane_runtime_and_embedded, 147 s on main against 399 s for lane b1), named conformance suite in the VM, lowered for the debugger: env TORB_VM_DEBUGGED=1 TORB_CONFORMANCE_JOBS=... sh tools/conformance.sh --vm. conformance.sh keeps its timings of that leg in its own file (vm-debugged.txt beside vm.txt and native.txt), so the longest-first order of the plain VM leg is not overwritten with the debugged times. Push this commit alone first and read the new gate's time and tier B: green (Ns) from the forge CI log (ci-wait.sh / job log).
  2. docs(debugger): record the debugged conformance gate - DEBUGGER.md sections 19 (the measured time) and 20 (drop the open point), the tier B description in compiler/CONTRIBUTING.md, and the gate list comment at the top of tools/gates.sh.

Acceptance criteria

  • sh tools/gates.sh b runs the debugged leg; the forge CI log of tier B shows the line conformance suite in the VM, lowered for the debugger: <N>s and it is green on every program of the suite and of vm-only/ (leak gate and .workers runs included). A program that fails only when debugged is a bug of the lowering or the VM: fix it in this PR if small, else file a split-out issue and exclude nothing silently.
  • The time is measured in forge CI on the first commit and recorded in DEBUGGER.md section 19 with the plain VM leg's time beside it (75 s on the last main run read: https://git.torb.dev/torbscript/language/actions/runs/710).
  • Decided with the numbers: the gate stays in lane b2 if that lane (147 s + the debugged leg) stays below lane b1 (399 s), i.e. the leg is under about 250 s and tier B: green does not grow. Over that, the gate is not merged as is: record the numbers in a comment and re-plan (for example a sample of the suite) before going on.
  • tools/conformance.sh --vm with and without TORB_VM_DEBUGGED=1 writes two different timings files (checked by running the script twice with TORB_CONFORMANCE_TIMINGS pointing at a scratch directory and listing it; the check is one quick local run with --filter, not the suite).
  • DEBUGGER.md section 20 no longer lists the gate; compiler/CONTRIBUTING.md names the third conformance leg; torb docs skill docs skills --check and pdisc stay green.

Proving tests

The gate is its own proof: the forge CI run of the PR (tier B) with the debugged leg green; plus the timings-file check above.

Model

sonnet / medium (tooling and docs, no compiler/src change).

Dependencies

None. #43 (the cheaper attached run) is independent of this one.

## Context The conformance suite lowered for the debugger (`TORB_VM_DEBUGGED=1 sh tools/conformance.sh --vm`) passes today but is "a run, not a gate" ([DEBUGGER.md section 19](https://git.torb.dev/torbscript/language/src/commit/393ef2608e4a60b8ff76d8b6b408951b822d887d/docs/design/DEBUGGER.md#L405)). A change to the lowering or to the VM's statement handling can break a program only under the debugged lowering and nothing in CI would notice. Split out of #43; it is independent of the cheaper attached run: this run is lowered for the debugger with **no** debugger attached, so the attached-run work does not change its time. ## Source - [DEBUGGER.md section 20](https://git.torb.dev/torbscript/language/src/commit/393ef2608e4a60b8ff76d8b6b408951b822d887d/docs/design/DEBUGGER.md#L417), "The debugged conformance run as a gate of tier B, once its time allows". - `tools/gates.sh` (`lane_conformance`, `lane_runtime_and_embedded`), `tools/conformance.sh` (timings file per back end), `compiler/CONTRIBUTING.md` (tier B list). ## Seed impact None: shell scripts and docs only. No syntax change, no new native, no driver flag, no std name looked up by string. ## Plan (one PR, two Conventional Commits) 1. `test(conformance): run the suite in the VM lowered for the debugger` - add the leg to tier B as a gate in lane `b2` (`lane_runtime_and_embedded`, 147 s on main against 399 s for lane `b1`), named `conformance suite in the VM, lowered for the debugger`: `env TORB_VM_DEBUGGED=1 TORB_CONFORMANCE_JOBS=... sh tools/conformance.sh --vm`. `conformance.sh` keeps its timings of that leg in its own file (`vm-debugged.txt` beside `vm.txt` and `native.txt`), so the longest-first order of the plain VM leg is not overwritten with the debugged times. Push this commit alone first and read the new gate's time and `tier B: green (Ns)` from the forge CI log (`ci-wait.sh` / job log). 2. `docs(debugger): record the debugged conformance gate` - DEBUGGER.md sections 19 (the measured time) and 20 (drop the open point), the tier B description in `compiler/CONTRIBUTING.md`, and the gate list comment at the top of `tools/gates.sh`. ## Acceptance criteria - [ ] `sh tools/gates.sh b` runs the debugged leg; the forge CI log of tier B shows the line `conformance suite in the VM, lowered for the debugger: <N>s` and it is green on every program of the suite and of `vm-only/` (leak gate and `.workers` runs included). A program that fails only when debugged is a bug of the lowering or the VM: fix it in this PR if small, else file a split-out issue and exclude nothing silently. - [ ] The time is measured in forge CI on the first commit and recorded in DEBUGGER.md section 19 with the plain VM leg's time beside it (75 s on the last main run read: https://git.torb.dev/torbscript/language/actions/runs/710). - [ ] Decided with the numbers: the gate stays in lane `b2` if that lane (147 s + the debugged leg) stays below lane `b1` (399 s), i.e. the leg is under about 250 s and `tier B: green` does not grow. Over that, the gate is not merged as is: record the numbers in a comment and re-plan (for example a sample of the suite) before going on. - [ ] `tools/conformance.sh --vm` with and without `TORB_VM_DEBUGGED=1` writes two different timings files (checked by running the script twice with `TORB_CONFORMANCE_TIMINGS` pointing at a scratch directory and listing it; the check is one quick local run with `--filter`, not the suite). - [ ] DEBUGGER.md section 20 no longer lists the gate; `compiler/CONTRIBUTING.md` names the third conformance leg; `torb docs skill docs skills --check` and `pdisc` stay green. ## Proving tests The gate is its own proof: the forge CI run of the PR (tier B) with the debugged leg green; plus the timings-file check above. ## Model sonnet / medium (tooling and docs, no `compiler/src` change). ## Dependencies None. #43 (the cheaper attached run) is independent of this one.
Author
Collaborator

[loop:torbscript] refine: ready, split out of #43; decisions and numbers are in the comment on #43 (tier B is 507 s with lanes b1 399 s and b2 147 s; the debugged leg goes into b2). Acceptance: the debugged leg is a green gate of tier B with its own timings file, its time read from the forge CI log of the first commit and recorded in DEBUGGER.md section 19, lane b2 stays shorter than b1, docs and CONTRIBUTING updated. Seed impact none. Model sonnet/medium. next: implement

[loop:torbscript] refine: ready, split out of #43; decisions and numbers are in the comment on #43 (tier B is 507 s with lanes b1 399 s and b2 147 s; the debugged leg goes into b2). Acceptance: the debugged leg is a green gate of tier B with its own timings file, its time read from the forge CI log of the first commit and recorded in DEBUGGER.md section 19, lane b2 stays shorter than b1, docs and CONTRIBUTING updated. Seed impact none. Model sonnet/medium. next: implement
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261010 until 2026-10-10T04:42Z (#43 waits: it shares the debugger code with PR #289)

[loop:torbscript] claim implement by session:loop-torbscript-20261010 until 2026-10-10T04:42Z (#43 waits: it shares the debugger code with PR #289)
Author
Collaborator

[loop:torbscript] implement: PR #291, CI green (bootstrap, tier A, tier B incl. the new debugged conformance leg, all hosts), worker usage not known, next: waiting (review by the merge gate argus)

[loop:torbscript] implement: PR https://git.torb.dev/torbscript/language/pulls/291, CI green (bootstrap, tier A, tier B incl. the new debugged conformance leg, all hosts), worker usage not known, next: waiting (review by the merge gate argus)
argus closed this issue 2026-10-10 08:04:30 +00:00
Sign in to join this conversation.
No labels
loop
ready
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
torbscript/language#290
No description provided.