cli: torb check, build, run and test parse their command line with std/cli (step 2 of #124) #502

Closed
opened 2026-10-26 14:00:15 +00:00 by orion · 18 comments
Collaborator

Context

Step 2 of #124 (torb parses its command line with std/cli). Step 1 (#492, PR #493) landed: std/cli has optional, repeatable and pass-through arguments. This step puts the skeleton in compiler/src/main.trb and moves the four commands that matter most; the rest of the commands follow in later steps.

Source

  • CLI.md slice 2 (sections 1 and 2: help and errors generated from the declaration, typed options, an extend for program types)
  • std/cli/src/command.trb, docs/standard-library/cli.md
  • compiler/src/main.trb (the match arguments at the bottom), compiler/src/cli/{check,build,run,test,usage}.trb

Design (decided by the loop, internal)

  • New compiler/src/cli/declaration.trb: the command tree (program torb, description) with the commands check, build, run, test. --version stays a special case in main.trb; --color stays stripped before parsing (colorArguments).
  • main.trb parses with Command.parse and one match parsed.path (no Command.run handlers: the commands use ? on Result and top-level Tasks). It does so only when the first argument names one of the four migrated commands; every other line goes through the old match unchanged, so no later command is touched here. The top-level torb --help / help and the usage block of unmigrated commands stay on cli/usage.trb until step 5; the usage blocks of the four commands are removed from it, and torb --help keeps listing them (text may be shorter only if every flag stays listed in the per-command help).
  • The existing CheckOptions, BuildOptions, RunOptions, TestOptions records stay; the new code fills them from Input. checkOptionsOf, buildOptionsOf, runOptionsOf, testOptionsOf and their private helpers are deleted once nothing reads them. run uses the pass-through arguments of #492 (torb run tool.trb --emit-c still hands --emit-c on). Repeatable --filter of test, optional --output/--target of build use repeatable/optional.
  • Profile and target values become Argument instances via extend in the compiler (CLI.md section 2 item 1), no stringly checks left in the readers.
  • Wrong line: exit 2 and a message naming command and argument (CliError); wording may change where the new one names both.

Acceptance criteria

  • torb check, build, run, test parse their command line with std/cli through one declaration in compiler/src/cli/declaration.trb; every flag and option each has today is still accepted with the same meaning and listed in torb <command> --help.
  • torb run <path> ... still passes everything behind the path on, flags included; -- and --color behave as before.
  • A wrong line (unknown flag, missing or invalid value) exits 2 and the message names the command and the argument.
  • Every other command (new, repl, format, docs ..., add, ...) behaves byte-identically: same help, same errors (existing tests untouched and green).
  • Tests in compiler/tests/ with argument lists per migrated command: parsed options, --help, wrong lines; the tests that asserted the old usage/option errors of these four commands move with them.
  • The four commands' readers and usage blocks are removed from cli/{check,build,run,test,usage}.trb and main.trb; no dead code left behind.

Seed

Does not touch the seed (see the refine comment on #124): no syntax, native, driver flag or looked-up name; std/cli is in the newest published seed. If the seed cannot compile the import in CI, stop and comment on this issue, do not force it.

Size

One PR, two Conventional Commits at most: feat(compiler): torb check, build, run and test parse their command line with std/cli and, if needed, docs(cli): ... (CLI.md status line for step 2, docs/standard-library/cli.md cross-link). Checks: torb format --check on touched files, tier A in forge CI via ci-wait.sh; no local bootstrap.

Dependencies

None open (#492 landed). Blocks the next step of #124.

Part of #124 (the PR says Refs #124, not Closes).

## Context Step 2 of #124 (`torb` parses its command line with `std/cli`). Step 1 (#492, PR #493) landed: `std/cli` has `optional`, `repeatable` and pass-through `arguments`. This step puts the skeleton in `compiler/src/main.trb` and moves the four commands that matter most; the rest of the commands follow in later steps. ## Source - [CLI.md slice 2](https://git.torb.dev/torbscript/language/src/branch/main/docs/design/CLI.md) (sections 1 and 2: help and errors generated from the declaration, typed options, an `extend` for program types) - `std/cli/src/command.trb`, `docs/standard-library/cli.md` - `compiler/src/main.trb` (the `match arguments` at the bottom), `compiler/src/cli/{check,build,run,test,usage}.trb` ## Design (decided by the loop, internal) - New `compiler/src/cli/declaration.trb`: the command tree (program `torb`, description) with the commands `check`, `build`, `run`, `test`. `--version` stays a special case in `main.trb`; `--color` stays stripped before parsing (`colorArguments`). - `main.trb` parses with `Command.parse` and one `match parsed.path` (no `Command.run` handlers: the commands use `?` on `Result` and top-level `Task`s). It does so **only when the first argument names one of the four migrated commands**; every other line goes through the old `match` unchanged, so no later command is touched here. The top-level `torb --help` / `help` and the usage block of unmigrated commands stay on `cli/usage.trb` until step 5; the usage blocks of the four commands are removed from it, and `torb --help` keeps listing them (text may be shorter only if every flag stays listed in the per-command help). - The existing `CheckOptions`, `BuildOptions`, `RunOptions`, `TestOptions` records stay; the new code fills them from `Input`. `checkOptionsOf`, `buildOptionsOf`, `runOptionsOf`, `testOptionsOf` and their private helpers are deleted once nothing reads them. `run` uses the pass-through arguments of #492 (`torb run tool.trb --emit-c` still hands `--emit-c` on). Repeatable `--filter` of `test`, optional `--output`/`--target` of `build` use `repeatable`/`optional`. - Profile and target values become `Argument` instances via `extend` in the compiler (CLI.md section 2 item 1), no stringly checks left in the readers. - Wrong line: exit 2 and a message naming command and argument (`CliError`); wording may change where the new one names both. ## Acceptance criteria - [ ] `torb check`, `build`, `run`, `test` parse their command line with `std/cli` through one declaration in `compiler/src/cli/declaration.trb`; every flag and option each has today is still accepted with the same meaning and listed in `torb <command> --help`. - [ ] `torb run <path> ...` still passes everything behind the path on, flags included; `--` and `--color` behave as before. - [ ] A wrong line (unknown flag, missing or invalid value) exits 2 and the message names the command and the argument. - [ ] Every other command (`new`, `repl`, `format`, `docs ...`, `add`, ...) behaves byte-identically: same help, same errors (existing tests untouched and green). - [ ] Tests in `compiler/tests/` with argument lists per migrated command: parsed options, `--help`, wrong lines; the tests that asserted the old usage/option errors of these four commands move with them. - [ ] The four commands' readers and usage blocks are removed from `cli/{check,build,run,test,usage}.trb` and `main.trb`; no dead code left behind. ## Seed Does **not** touch the seed (see the refine comment on #124): no syntax, native, driver flag or looked-up name; `std/cli` is in the newest published seed. If the seed cannot compile the import in CI, stop and comment on this issue, do not force it. ## Size One PR, two Conventional Commits at most: `feat(compiler): torb check, build, run and test parse their command line with std/cli` and, if needed, `docs(cli): ...` (CLI.md status line for step 2, `docs/standard-library/cli.md` cross-link). Checks: `torb format --check` on touched files, tier A in forge CI via `ci-wait.sh`; no local bootstrap. ## Dependencies None open (#492 landed). Blocks the next step of #124. Part of #124 (the PR says `Refs #124`, not `Closes`).
Author
Collaborator

[loop:torbscript] decided by the loop: only four commands move in this step and the old match serves the rest, because one PR over ~30 commands would exceed one worker and review; no seed refresh needed (std/cli is in the newest seed). next: implement

[loop:torbscript] decided by the loop: only four commands move in this step and the old match serves the rest, because one PR over ~30 commands would exceed one worker and review; no seed refresh needed (std/cli is in the newest seed). next: implement
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261026-1044 until 2026-10-26T22:05:01Z

[loop:torbscript] claim implement by session:loop-torbscript-20261026-1044 until 2026-10-26T22:05:01Z
Author
Collaborator

[loop:torbscript] implement: checkpoint, no code written yet (context guard), nothing pushed, no PR. Worktree code/wt/torbscript-language-502-cli-declaration on loop/502-cli-declaration (from main 0e91170e, clean). Done: read issue, LOOP.md, std/cli (command.trb, docs/standard-library/cli.md), main.trb readers (profileChoiceOf, buildOptionsOf, testOptionsOf, runOptionsOf), cli/check.trb, cli/usage.trb, cli/test.trb. next: implement (a fresh worker continues from the findings below).

Findings for the implementation:

  • Command.parse takes the line without the program name; path[0] is torb. Flags are looked up per command; -x short flags are an UnknownFlag; help as a word is only a help request where the command has subcommands.
  • --help/-h for the four commands now come from parsed.helpRequested (parsed.help()), so helpAskedOf/commandUsageText at the top of main.trb must skip check/build/run/test; ["test","help"] branch is dropped (help becomes a path; note it in the PR). Remove testUsage and the four blocks in usage.trb only where torb --help still lists them (keep one block each there if the top-level text is not generated, as the issue says).
  • Old check: --statistics --timings --every-target --partial --deny deprecated + paths (default .). --deny -> optional<Deny> with an Argument extend (only deprecated). compiler/tests/deprecation.test.trb (l.13, 106-108, 545-558) and driver.test.trb (l.10, 95: usageOf) read the old readers: they move to the declaration tests.
  • Old build: --profile dev|release / --release (default release), --emit-c --embed-vm --timings --explain-copies --debug, --output <file>, --target <os>-<arch> (targetNamed, everyTarget), positional: paths vs one program name (isPathArgument; two names is an error, message "builds every program or one of them"). Default paths ["."].
  • Old test: --native --vm --profile/--release --shard k/n (testShardNamed) --shards n (>=1) --filter (repeatable) --report json --jobs N (ignored), default path defaultTestPath(). Cross checks to keep: --report json with --shards>1, --shard with --shards, --shards>1 needs --native. usesMachine = default true; --native false, a profile/--release means native when not --vm... (check testOptionsOf: usesMachine = choice.rest.length() == arguments.length(), i.e. a profile flag means native, --vm/--native last one wins).
  • TRAP: the runtime (runtime/test.c, and the VM for torb test default) reads --shard, --filter, --report off the process's own command line as two arguments. std/cli also accepts --filter=a, which the runtime would then ignore silently. Keep the old refusal of --filter=, --shard=, --report= with the old messages (small pre-check on the test line, stop at --), exit 2.
  • Old run: flags only in front of the path (--vm --native --release --profile <p> --timings), --profile/--release imply native unless --vm/--native was said (chosen), path or program name (isPathArgument), default .; use arguments "program", passthrough: true (--emit-c behind the path passes on). The first positional is the path/name, rest the program's arguments.
  • Profile/BuildTarget get extend ... with Argument in the compiler (argumentName, fromArgument; profileNamed, targetNamed exist), so option<Profile>("profile", default: Profile.Release) etc.; --release stays a flag.
  • Tests: new compiler/tests/cli-declaration.test.trb with cli.parse([...]) per command (options, --help, wrong lines); tests/command-line/arguments.expected has exact-wording lines for torb check|build --frobnicate etc. (gate tools/command-line.sh, tier A): update the wording of the migrated ones (torb check: unknown flag '--frobnicate'), do not touch the others. Seed: not touched; std/cli is in the seed; if CI cannot compile the import, stop and comment.
  • Unverified: whether the top-level torb --help text must keep listing the four commands from usage.trb blocks (issue says yes); torb format --check needs a torb binary (not available here).
[loop:torbscript] implement: checkpoint, no code written yet (context guard), nothing pushed, no PR. Worktree `code/wt/torbscript-language-502-cli-declaration` on `loop/502-cli-declaration` (from main 0e91170e, clean). Done: read issue, LOOP.md, `std/cli` (`command.trb`, `docs/standard-library/cli.md`), `main.trb` readers (`profileChoiceOf`, `buildOptionsOf`, `testOptionsOf`, `runOptionsOf`), `cli/check.trb`, `cli/usage.trb`, `cli/test.trb`. next: implement (a fresh worker continues from the findings below). Findings for the implementation: - `Command.parse` takes the line without the program name; `path[0]` is `torb`. Flags are looked up per command; `-x` short flags are an `UnknownFlag`; `help` as a word is only a help request where the command has subcommands. - `--help`/`-h` for the four commands now come from `parsed.helpRequested` (`parsed.help()`), so `helpAskedOf`/`commandUsageText` at the top of `main.trb` must skip check/build/run/test; `["test","help"]` branch is dropped (`help` becomes a path; note it in the PR). Remove `testUsage` and the four blocks in `usage.trb` only where `torb --help` still lists them (keep one block each there if the top-level text is not generated, as the issue says). - Old `check`: `--statistics --timings --every-target --partial --deny deprecated` + paths (default `.`). `--deny` -> `optional<Deny>` with an `Argument` extend (only `deprecated`). `compiler/tests/deprecation.test.trb` (l.13, 106-108, 545-558) and `driver.test.trb` (l.10, 95: `usageOf`) read the old readers: they move to the declaration tests. - Old `build`: `--profile dev|release` / `--release` (default release), `--emit-c --embed-vm --timings --explain-copies --debug`, `--output <file>`, `--target <os>-<arch>` (`targetNamed`, `everyTarget`), positional: paths vs one program name (`isPathArgument`; two names is an error, message "builds every program or one of them"). Default paths `["."]`. - Old `test`: `--native --vm --profile/--release --shard k/n (testShardNamed) --shards n (>=1) --filter (repeatable) --report json --jobs N (ignored)`, default path `defaultTestPath()`. Cross checks to keep: `--report json` with `--shards>1`, `--shard` with `--shards`, `--shards>1` needs `--native`. `usesMachine` = default true; `--native` false, a profile/`--release` means native when not `--vm`... (check `testOptionsOf`: `usesMachine = choice.rest.length() == arguments.length()`, i.e. a profile flag means native, `--vm`/`--native` last one wins). - TRAP: the runtime (`runtime/test.c`, and the VM for `torb test` default) reads `--shard`, `--filter`, `--report` off the process's own command line as two arguments. `std/cli` also accepts `--filter=a`, which the runtime would then ignore silently. Keep the old refusal of `--filter=`, `--shard=`, `--report=` with the old messages (small pre-check on the `test` line, stop at `--`), exit 2. - Old `run`: flags only in front of the path (`--vm --native --release --profile <p> --timings`), `--profile`/`--release` imply native unless `--vm`/`--native` was said (`chosen`), path or program name (`isPathArgument`), default `.`; use `arguments "program", passthrough: true` (`--emit-c` behind the path passes on). The first positional is the path/name, `rest` the program's arguments. - `Profile`/`BuildTarget` get `extend ... with Argument` in the compiler (`argumentName`, `fromArgument`; `profileNamed`, `targetNamed` exist), so `option<Profile>("profile", default: Profile.Release)` etc.; `--release` stays a flag. - Tests: new `compiler/tests/cli-declaration.test.trb` with `cli.parse([...])` per command (options, `--help`, wrong lines); `tests/command-line/arguments.expected` has exact-wording lines for `torb check|build --frobnicate` etc. (gate `tools/command-line.sh`, tier A): update the wording of the migrated ones (`torb check: unknown flag '--frobnicate'`), do not touch the others. Seed: not touched; `std/cli` is in the seed; if CI cannot compile the import, stop and comment. - Unverified: whether the top-level `torb --help` text must keep listing the four commands from `usage.trb` blocks (issue says yes); `torb format --check` needs a torb binary (not available here).
Author
Collaborator

[loop:torbscript] release implement: lease of session:loop-torbscript-20261026-1044 expired after the checkpoint, no worker alive, nothing pushed. next: implement (fresh worker from the checkpoint)

[loop:torbscript] release implement: lease of session:loop-torbscript-20261026-1044 expired after the checkpoint, no worker alive, nothing pushed. next: implement (fresh worker from the checkpoint)
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:02:34Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:02:34Z
Author
Collaborator

[loop:torbscript] implement: checkpoint 2, no code written yet (context guard hit again after reading), nothing pushed, no PR, tokens used ~110k. Worktree code/wt/torbscript-language-502-cli-declaration (recreated via ws wt new, branch loop/502-cli-declaration, clean on main 0e91170e). Claim released. next: implement (a fresh worker continues; it should NOT re-read std/cli, main.trb or the usage blocks in full: the facts below are enough to start writing).

Additional findings on top of checkpoint 1:

  • std/cli API as used here: command "torb" { description ...; command "check" { description ...; flag "x", help: ...; option<T>("n", help:, default:); optional<T>("n", help:); repeatable<T>("n", help:); arguments "paths", help:, passthrough: true; run { input => ... } } } (run handler is required or parse answers MissingCommand; use a no-op run { _ => }). Command.parse(args) returns Result<Parsed, CliError>; Parsed has path, command, input, helpRequested, help(). Reads: input.flag("x"), input.option<T>("n"), input.optional<T>("n") (a T?), input.repeated<T>("n"), input.arguments("paths"). CliError.show() reads torb check: unknown flag '--x', torb build: option '--target': 'x' is <reason>, ... needs a value, ... unexpected argument. Argument needs static fn argumentName(): String and static fn fromArgument(text: String): Result<Self, String> (error is the reason, e.g. "not a profile: dev or release"); Show is required (a default is written with show()).
  • Flags are per command, there is no inheritance, -h/--help is honoured anywhere before -- (and before the first positional with passthrough), -x short flags are UnknownFlag, a token -- ends options. Command.help(path) generates the page; colorUsageLines() (from cli/usage.trb) can be appended after a blank line so --color stays documented per command.
  • usage.trb blocks of check/build/run/test are only used for torb --help (printUsage, commandUsages) and commandUsageText -> usageOf for --help; compiler/tests/driver.test.trb l.95 reads usageOf(command) for the four commands (check what it asserts and move it). helpAskedOf (usage.trb) must skip check/build/run/test so the generated help is used. colorArguments (color.trb l.291 comment mentions runOptionsOf, update the comment).
  • Readers to delete when nothing reads them: in main.trb ProfileChoice, profileChoiceOf, buildOptionsOf, testOptionsOf, runOptionsOf; isPathArgument stays (build/run still need it to tell path from program name); reportUnknownFlag stays for the other commands (refuseUnknownFlag); in cli/check.trb checkOptionsOf; in cli/test.trb testUsage (testShardNamed stays, --shard value is typed via an Argument extend or checked after parse). CheckOptions, BuildOptions, RunOptions, TestOptions, TestShard, TestReport stay.
  • Behaviours to keep: --vm/--native last-one-wins in the old readers; flags are booleans in std/cli and lose their order, so decide (recorded as the loop's decision): both given together is a wrong line, exit 2, torb test: --vm and --native contradict each other (same for run); say so in the PR. A profile flag (--profile, --release) means native unless --vm/--native was said (run) / unless --vm (test). --release after --profile dev wins (release): with an optional profile option plus a release flag, the flag wins. --jobs N of test is accepted and ignored (option<Int>, --jobs=N too). --shards needs >= 1 (an Argument type or a check after parse).
  • Entry in main.trb: after colorArguments and before the old helpAskedOf, if arguments.first() is one of check|build|run|test -> cli.parse(arguments.skip(1)); on Fail(problem) print printErrorMessage problem.show() and Process.exit 2; on helpRequested print parsed.help() (+ color lines) and exit 0; else a match parsed.path over ["torb", "check"] etc. building the existing option records and calling the existing run functions. The old match arms for the four commands are removed (the old ["test", "help"] arm too: torb test help becomes the path help, note in the PR). declaration.trb exports the tree and the Argument extends.
  • tests/command-line/arguments.expected lines for the four commands change wording; the rest stays. Tests: new compiler/tests/cli-declaration.test.trb plus moving the checkOptionsOf tests of deprecation.test.trb (l.13, 106-108, 545-558) and the usageOf use of driver.test.trb.
  • No torb binary in the worker's environment: torb format --check is not possible locally; write the layout by hand per the canon (120 columns, command calls) and let tier A's format gate decide.

CONTINUE: torbscript/language#502

[loop:torbscript] implement: checkpoint 2, no code written yet (context guard hit again after reading), nothing pushed, no PR, tokens used ~110k. Worktree `code/wt/torbscript-language-502-cli-declaration` (recreated via `ws wt new`, branch `loop/502-cli-declaration`, clean on main 0e91170e). Claim released. next: implement (a fresh worker continues; it should NOT re-read std/cli, main.trb or the usage blocks in full: the facts below are enough to start writing). Additional findings on top of checkpoint 1: - `std/cli` API as used here: `command "torb" { description ...; command "check" { description ...; flag "x", help: ...; option<T>("n", help:, default:); optional<T>("n", help:); repeatable<T>("n", help:); arguments "paths", help:, passthrough: true; run { input => ... } } }` (`run` handler is required or `parse` answers `MissingCommand`; use a no-op `run { _ => }`). `Command.parse(args)` returns `Result<Parsed, CliError>`; `Parsed` has `path`, `command`, `input`, `helpRequested`, `help()`. Reads: `input.flag("x")`, `input.option<T>("n")`, `input.optional<T>("n")` (a `T?`), `input.repeated<T>("n")`, `input.arguments("paths")`. `CliError.show()` reads `torb check: unknown flag '--x'`, `torb build: option '--target': 'x' is <reason>`, `... needs a value`, `... unexpected argument`. `Argument` needs `static fn argumentName(): String` and `static fn fromArgument(text: String): Result<Self, String>` (error is the reason, e.g. "not a profile: dev or release"); `Show` is required (a default is written with `show()`). - Flags are per command, there is no inheritance, `-h`/`--help` is honoured anywhere before `--` (and before the first positional with `passthrough`), `-x` short flags are `UnknownFlag`, a token `--` ends options. `Command.help(path)` generates the page; `colorUsageLines()` (from `cli/usage.trb`) can be appended after a blank line so `--color` stays documented per command. - `usage.trb` blocks of check/build/run/test are only used for `torb --help` (`printUsage`, `commandUsages`) and `commandUsageText` -> `usageOf` for `--help`; `compiler/tests/driver.test.trb` l.95 reads `usageOf(command)` for the four commands (check what it asserts and move it). `helpAskedOf` (usage.trb) must skip check/build/run/test so the generated help is used. `colorArguments` (color.trb l.291 comment mentions `runOptionsOf`, update the comment). - Readers to delete when nothing reads them: in `main.trb` `ProfileChoice`, `profileChoiceOf`, `buildOptionsOf`, `testOptionsOf`, `runOptionsOf`; `isPathArgument` stays (build/run still need it to tell path from program name); `reportUnknownFlag` stays for the other commands (`refuseUnknownFlag`); in `cli/check.trb` `checkOptionsOf`; in `cli/test.trb` `testUsage` (`testShardNamed` stays, `--shard` value is typed via an `Argument` extend or checked after parse). `CheckOptions`, `BuildOptions`, `RunOptions`, `TestOptions`, `TestShard`, `TestReport` stay. - Behaviours to keep: `--vm`/`--native` last-one-wins in the old readers; flags are booleans in std/cli and lose their order, so decide (recorded as the loop's decision): both given together is a wrong line, exit 2, `torb test: --vm and --native contradict each other` (same for run); say so in the PR. A profile flag (`--profile`, `--release`) means native unless `--vm`/`--native` was said (run) / unless `--vm` (test). `--release` after `--profile dev` wins (release): with an optional `profile` option plus a `release` flag, the flag wins. `--jobs N` of test is accepted and ignored (`option<Int>`, `--jobs=N` too). `--shards` needs `>= 1` (an `Argument` type or a check after parse). - Entry in `main.trb`: after `colorArguments` and before the old `helpAskedOf`, `if arguments.first() is one of check|build|run|test` -> `cli.parse(arguments.skip(1))`; on `Fail(problem)` print `printErrorMessage problem.show()` and `Process.exit 2`; on `helpRequested` print `parsed.help()` (+ color lines) and exit 0; else a `match parsed.path` over `["torb", "check"]` etc. building the existing option records and calling the existing run functions. The old `match` arms for the four commands are removed (the old `["test", "help"]` arm too: `torb test help` becomes the path `help`, note in the PR). `declaration.trb` exports the tree and the `Argument` extends. - `tests/command-line/arguments.expected` lines for the four commands change wording; the rest stays. Tests: new `compiler/tests/cli-declaration.test.trb` plus moving the `checkOptionsOf` tests of `deprecation.test.trb` (l.13, 106-108, 545-558) and the `usageOf` use of `driver.test.trb`. - No `torb` binary in the worker's environment: `torb format --check` is not possible locally; write the layout by hand per the canon (120 columns, command calls) and let tier A's format gate decide. CONTINUE: torbscript/language#502
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:13Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:13Z
Author
Collaborator

[loop:torbscript] implement: checkpoint 3, compiler/src/cli/declaration.trb written and pushed (commit 99a04745 on loop/502-cli-declaration, unchecked: no torb binary), nothing else edited yet, no PR, tokens used ~110k. Claim released. next: implement (continue; do NOT re-read the issue's earlier checkpoints' sources, read only declaration.trb (about 300 lines) and the hunks below).

Written in declaration.trb (public): Deny, Count plus Argument extends for Deny, Count, Profile, BuildTarget, TestShard, TestReport; declaredCommands(), declaredUsageLines() (one line per command for torb --help), torbCommand() (tree with check/build/run/test, no-op run { _ => }), attachedValueIn(arguments): String? (refuses --filter=, --report=, --shard= with the old messages, the runtime reads them as two arguments), checkOptionsFrom/buildOptionsFrom/runOptionsFrom/testOptionsFrom(input) (the last three Result<_, String>, messages start torb <command>:). isPathArgument was MOVED there as a private fn.

Left (in this order):

  1. main.trb: use ... from "./cli/declaration"; delete ProfileChoice, profileChoiceOf, isPathArgument (l.446-496), buildOptionsOf, testOptionsOf, runOptionsOf (l.498-811), the imports checkOptionsOf, testUsage, profileNamed, TestShard, TestReport, testShardNamed, BuildTarget/everyTarget/targetNamed/Profile if unused (check with grep before). Replace the four old arms (["check"..] l.946, build, run, ["test","help"], test, l.946-994) by one arm [first, ...more] if declaredCommands().contains first => { ... } placed before the new arm: if attachedValueIn(more) is Some -> printErrorMessage + exit 2; torbCommand().parse(arguments.skip(1)...) — NOTE Command.parse takes the line WITHOUT the program name (cli.parse(["check", "--jobs=8"])), so pass the whole arguments and parsed.path is ["torb", "check"]; on Fail(problem) -> printErrorMessage problem.show(), exit 2; on parsed.helpRequested -> print parsed.help() then a blank line and colorUsageLines(), exit 0; else match parsed.path: check -> endWith checkProjects(checkOptionsFrom(parsed.input)), countsProblems: true; build -> buildEmbedded/buildParsedAhead as today; run -> runProgram; test -> runTests; Fail(message) of the readers -> printErrorMessage message, exit 2.
  2. The arm must come before the help check at main.trb l.936: skip helpAskedOf for declared commands (make helpAskedOf return None when declaredCommands() contains the command, or guard in main) so the generated help is used.
  3. cli/usage.trb: remove the four CommandUsage blocks (l.18-66); printUsage in main.trb l.86-102: print declaredUsageLines() first, then commandUsages() (so torb --help still lists the four). Fix the doc comment of usage.trb (mentions test page). cli/check.trb: delete checkOptionsOf, keep CheckOptions (update doc comment [checkOptionsOf]). cli/test.trb: delete testUsage (l.33-56), update the module doc if it mentions it; main.trb commandUsageText loses the "test" => testUsage() arm. cli/color.trb l.291 comment: runOptionsOf -> runOptionsFrom. docs/standard-library/cli.md cross-link and docs/design/CLI.md status line (second commit docs(cli): ..., regenerate skills/ per CLAUDE.md if docs change).
  4. Tests: new compiler/tests/cli-declaration.test.trb (argument lists per command via torbCommand().parse(...): parsed options through the ...From readers, --help, wrong lines incl. --vm --native, --shards 0, --release beats --profile dev, run tool.trb --emit-c passes it on, --filter repeated); move the checkOptionsOf tests of compiler/tests/deprecation.test.trb (l.13, 106-108, 545-558, 567) onto checkOptionsFrom; compiler/tests/driver.test.trb l.93-98 asserts usageOf(command) lists --explain-copies: only for build: rewrite against torbCommand().help([...]) text (only build mentions --explain-copies).
  5. tests/command-line/arguments.expected: new wording torb <cmd>: unknown flag '--frobnicate' (exit 2) for the 8 lines of check/build/run/test (run --frobnicate, run --native --frobnicate tests/test-report/suite, ...); the --help lines keep the usage of torb <cmd> check in tools/command-line.sh (look at how it greps the help, l.120-end, and adapt to the generated help which starts with the description). tests/test-report/arguments.expected lines 1-17: --filter=/--report= keep their wording (handled by attachedValueIn), --report xml becomes torb test: option '--report': 'xml' is not a report: ..., missing values become torb test: option '--filter' needs a value; run tools/test-report.sh --update is impossible locally (no torb): edit by hand and let CI decide.
  6. Hand-format to the canon (120 cols); in declaration.trb the long Fail "torb build: ... \n ..." line and the optional<Deny>("deny", help: ...) line may exceed 120 columns, break them.
  7. Then tools/check-commits.sh, push, open PR (Refs #124, mention #502, note the --vm+--native decision and that torb test help is now a path), ci-wait.sh, fix tier A gates, write-back comment.

Unverified risks to look at first when CI answers: extend of types from other modules with Argument (orphan rule?), .takeWhile/.find({ a => ... })? in attachedValueIn, input.optional<Count>("shards")?.value, tree.subcommand(name).map({ _.summary }) ?? "" (Option.map with a field closure), run { _ => } as an empty handler.

CONTINUE: torbscript/language#502

[loop:torbscript] implement: checkpoint 3, `compiler/src/cli/declaration.trb` written and pushed (commit 99a04745 on `loop/502-cli-declaration`, unchecked: no torb binary), nothing else edited yet, no PR, tokens used ~110k. Claim released. next: implement (continue; do NOT re-read the issue's earlier checkpoints' sources, read only `declaration.trb` (about 300 lines) and the hunks below). Written in `declaration.trb` (public): `Deny`, `Count` plus `Argument` extends for `Deny`, `Count`, `Profile`, `BuildTarget`, `TestShard`, `TestReport`; `declaredCommands()`, `declaredUsageLines()` (one line per command for `torb --help`), `torbCommand()` (tree with check/build/run/test, no-op `run { _ => }`), `attachedValueIn(arguments): String?` (refuses `--filter=`, `--report=`, `--shard=` with the old messages, the runtime reads them as two arguments), `checkOptionsFrom/buildOptionsFrom/runOptionsFrom/testOptionsFrom(input)` (the last three `Result<_, String>`, messages start `torb <command>:`). `isPathArgument` was MOVED there as a private fn. Left (in this order): 1. `main.trb`: `use ... from "./cli/declaration"`; delete `ProfileChoice`, `profileChoiceOf`, `isPathArgument` (l.446-496), `buildOptionsOf`, `testOptionsOf`, `runOptionsOf` (l.498-811), the imports `checkOptionsOf`, `testUsage`, `profileNamed`, `TestShard`, `TestReport`, `testShardNamed`, `BuildTarget`/`everyTarget`/`targetNamed`/`Profile` if unused (check with grep before). Replace the four old arms (`["check"..]` l.946, build, run, `["test","help"]`, test, l.946-994) by one arm `[first, ...more] if declaredCommands().contains first => { ... }` placed before the `new` arm: if `attachedValueIn(more)` is Some -> `printErrorMessage` + exit 2; `torbCommand().parse(arguments.skip(1)...)` — NOTE `Command.parse` takes the line WITHOUT the program name (`cli.parse(["check", "--jobs=8"])`), so pass the whole `arguments` and `parsed.path` is `["torb", "check"]`; on `Fail(problem)` -> `printErrorMessage problem.show()`, exit 2; on `parsed.helpRequested` -> `print parsed.help()` then a blank line and `colorUsageLines()`, exit 0; else `match parsed.path`: check -> `endWith checkProjects(checkOptionsFrom(parsed.input)), countsProblems: true`; build -> `buildEmbedded`/`buildParsedAhead` as today; run -> `runProgram`; test -> `runTests`; `Fail(message)` of the readers -> `printErrorMessage message`, exit 2. 2. The arm must come before the help check at main.trb l.936: skip `helpAskedOf` for declared commands (make `helpAskedOf` return None when `declaredCommands()` contains the command, or guard in main) so the generated help is used. 3. `cli/usage.trb`: remove the four `CommandUsage` blocks (l.18-66); `printUsage` in main.trb l.86-102: print `declaredUsageLines()` first, then `commandUsages()` (so `torb --help` still lists the four). Fix the doc comment of usage.trb (mentions `test` page). `cli/check.trb`: delete `checkOptionsOf`, keep `CheckOptions` (update doc comment `[checkOptionsOf]`). `cli/test.trb`: delete `testUsage` (l.33-56), update the module doc if it mentions it; `main.trb commandUsageText` loses the `"test" => testUsage()` arm. `cli/color.trb` l.291 comment: `runOptionsOf` -> `runOptionsFrom`. `docs/standard-library/cli.md` cross-link and `docs/design/CLI.md` status line (second commit `docs(cli): ...`, regenerate `skills/` per CLAUDE.md if docs change). 4. Tests: new `compiler/tests/cli-declaration.test.trb` (argument lists per command via `torbCommand().parse(...)`: parsed options through the `...From` readers, `--help`, wrong lines incl. `--vm --native`, `--shards 0`, `--release` beats `--profile dev`, `run tool.trb --emit-c` passes it on, `--filter` repeated); move the `checkOptionsOf` tests of `compiler/tests/deprecation.test.trb` (l.13, 106-108, 545-558, 567) onto `checkOptionsFrom`; `compiler/tests/driver.test.trb` l.93-98 asserts `usageOf(command)` lists `--explain-copies:` only for build: rewrite against `torbCommand().help([...])` text (only `build` mentions `--explain-copies`). 5. `tests/command-line/arguments.expected`: new wording `torb <cmd>: unknown flag '--frobnicate'` (exit 2) for the 8 lines of check/build/run/test (`run --frobnicate`, `run --native --frobnicate tests/test-report/suite`, ...); the `--help` lines keep `the usage of torb <cmd>` check in `tools/command-line.sh` (look at how it greps the help, l.120-end, and adapt to the generated help which starts with the description). `tests/test-report/arguments.expected` lines 1-17: `--filter=`/`--report=` keep their wording (handled by `attachedValueIn`), `--report xml` becomes `torb test: option '--report': 'xml' is not a report: ...`, missing values become `torb test: option '--filter' needs a value`; run `tools/test-report.sh --update` is impossible locally (no torb): edit by hand and let CI decide. 6. Hand-format to the canon (120 cols); in `declaration.trb` the long `Fail "torb build: ... \n ..."` line and the `optional<Deny>("deny", help: ...)` line may exceed 120 columns, break them. 7. Then `tools/check-commits.sh`, push, open PR (`Refs #124`, mention #502, note the `--vm`+`--native` decision and that `torb test help` is now a path), `ci-wait.sh`, fix tier A gates, write-back comment. Unverified risks to look at first when CI answers: `extend` of types from other modules with `Argument` (orphan rule?), `.takeWhile`/`.find({ a => ... })?` in `attachedValueIn`, `input.optional<Count>("shards")?.value`, `tree.subcommand(name).map({ _.summary }) ?? ""` (`Option.map` with a field closure), `run { _ => }` as an empty handler. CONTINUE: torbscript/language#502
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:37Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:37Z
Author
Collaborator

[loop:torbscript] implement: checkpoint 4, steps 1-3 and half of 4 done and pushed (commit ab2a6e7f on loop/502-cli-declaration, worktree code/wt/torbscript-language-502-cli-declaration, still no torb binary so unchecked), no PR yet, worker tokens ~150k. Claim released. next: implement (continue).

Done:

  • main.trb: old readers (ProfileChoice, profileChoiceOf, isPathArgument, buildOptionsOf, testOptionsOf, runOptionsOf) deleted, imports trimmed, the four arms replaced by ONE arm [first, ...more] if declaredCommands().contains first (attached-value refusal, torbCommand().parse(arguments), generated help + colorUsageLines(), then match parsed.path check/build/run/test); printUsage prints declaredUsageLines() first.
  • cli/usage.trb: the four CommandUsage blocks removed (so usageOf("check") is None and helpAskedOf falls through to the generated help; no change needed in helpAskedOf); module doc updated. cli/check.trb: checkOptionsOf removed. cli/test.trb: testUsage removed. cli/color.trb comment fixed.
  • compiler/tests/deprecation.test.trb ported to torbCommand().parse(["check", ...]) + checkOptionsFrom (new local helpers checkOptionsOf, refusalOf; --deny=deprecated is now accepted, wording torb check: unknown flag '--bogus', 'warnings' in single quotes).

Left (in this order):
4b. compiler/tests/driver.test.trb l.93-98 (usageOf(command) lists --explain-copies: only for build; usageOf no longer has check/build/run/test, .expect would panic): rewrite against torbCommand().help(["torb", command]) of torbCommand().subcommand(command); text --explain-copies only in build; drop the use usageOf import there.
4c. New compiler/tests/cli-declaration.test.trb (argument lists per command via torbCommand().parse(...): options through the ...From readers, --help, --vm --native refused, --shards 0, --release beats --profile dev, run tool.trb --emit-c passes it on, --filter repeated, attachedValueIn).
5. tests/command-line/arguments.expected (8 lines: new wording error: torb <cmd>: unknown flag '--frobnicate'; the torb test --explain-copies etc likewise) and tests/test-report/arguments.expected l.1-17 (--report xml -> error: torb test: option '--report': 'xml' is not a report: ..., missing values -> torb test: option '--filter' needs a value, --report json --native --shards 2 -> torb test: ... prefix); check how tools/command-line.sh greps --help output.
6. 120 col format of declaration.trb (the Fail "torb build: ..." line l.230 and optional<Deny>("deny", ...) l.133).
7. docs (docs/standard-library/cli.md cross link, docs/design/CLI.md status line, skills/ regenerate per CLAUDE.md) as 2nd commit docs(cli): ...; tools/check-commits.sh (the branch has 2 commits now, the first is the declaration; commit messages carry Refs #124, #502); push; PR; ci-wait.sh; fix gates; write-back.

Risks still unverified (CI will say): extend of types from other modules with Argument (types get Show generated), .takeWhile/.find({ a => ... })? in attachedValueIn, input.optional<Count>("shards")?.value, tree.subcommand(name).map({ _.summary }) ?? "", run { _ => } as empty handler (std/cli tests use run { input => print ... }; if it does not parse use run { _ => print "" } is wrong: use a handler that does nothing e.g. run { input => input.path } is not Void either; check the grammar), the trailing _ => {} arm of match parsed.path.

CONTINUE: torbscript/language#502

[loop:torbscript] implement: checkpoint 4, steps 1-3 and half of 4 done and pushed (commit ab2a6e7f on `loop/502-cli-declaration`, worktree `code/wt/torbscript-language-502-cli-declaration`, still no torb binary so unchecked), no PR yet, worker tokens ~150k. Claim released. next: implement (continue). Done: - `main.trb`: old readers (`ProfileChoice`, `profileChoiceOf`, `isPathArgument`, `buildOptionsOf`, `testOptionsOf`, `runOptionsOf`) deleted, imports trimmed, the four arms replaced by ONE arm `[first, ...more] if declaredCommands().contains first` (attached-value refusal, `torbCommand().parse(arguments)`, generated help + `colorUsageLines()`, then `match parsed.path` check/build/run/test); `printUsage` prints `declaredUsageLines()` first. - `cli/usage.trb`: the four CommandUsage blocks removed (so `usageOf("check")` is `None` and `helpAskedOf` falls through to the generated help; no change needed in `helpAskedOf`); module doc updated. `cli/check.trb`: `checkOptionsOf` removed. `cli/test.trb`: `testUsage` removed. `cli/color.trb` comment fixed. - `compiler/tests/deprecation.test.trb` ported to `torbCommand().parse(["check", ...])` + `checkOptionsFrom` (new local helpers `checkOptionsOf`, `refusalOf`; `--deny=deprecated` is now accepted, wording `torb check: unknown flag '--bogus'`, `'warnings'` in single quotes). Left (in this order): 4b. `compiler/tests/driver.test.trb` l.93-98 (`usageOf(command)` lists `--explain-copies:` only for build; `usageOf` no longer has check/build/run/test, `.expect` would panic): rewrite against `torbCommand().help(["torb", command])` of `torbCommand().subcommand(command)`; text `--explain-copies` only in build; drop the `use usageOf` import there. 4c. New `compiler/tests/cli-declaration.test.trb` (argument lists per command via `torbCommand().parse(...)`: options through the `...From` readers, `--help`, `--vm --native` refused, `--shards 0`, `--release` beats `--profile dev`, `run tool.trb --emit-c` passes it on, `--filter` repeated, `attachedValueIn`). 5. `tests/command-line/arguments.expected` (8 lines: new wording `error: torb <cmd>: unknown flag '--frobnicate'`; the `torb test --explain-copies` etc likewise) and `tests/test-report/arguments.expected` l.1-17 (`--report xml` -> `error: torb test: option '--report': 'xml' is not a report: ...`, missing values -> `torb test: option '--filter' needs a value`, `--report json --native --shards 2` -> `torb test: ...` prefix); check how `tools/command-line.sh` greps `--help` output. 6. 120 col format of `declaration.trb` (the `Fail "torb build: ..."` line l.230 and `optional<Deny>("deny", ...)` l.133). 7. docs (`docs/standard-library/cli.md` cross link, `docs/design/CLI.md` status line, `skills/` regenerate per CLAUDE.md) as 2nd commit `docs(cli): ...`; `tools/check-commits.sh` (the branch has 2 commits now, the first is the declaration; commit messages carry `Refs #124, #502`); push; PR; `ci-wait.sh`; fix gates; write-back. Risks still unverified (CI will say): `extend` of types from other modules with `Argument` (types get `Show` generated), `.takeWhile`/`.find({ a => ... })?` in `attachedValueIn`, `input.optional<Count>("shards")?.value`, `tree.subcommand(name).map({ _.summary }) ?? ""`, `run { _ => }` as empty handler (std/cli tests use `run { input => print ... }`; if it does not parse use `run { _ => print "" }` is wrong: use a handler that does nothing e.g. `run { input => input.path }` is not Void either; check the grammar), the trailing `_ => {}` arm of `match parsed.path`. CONTINUE: torbscript/language#502
Author
Collaborator

[loop:torbscript] implement: collected worker result of checkpoint 4 (commit ab2a6e7f verified in the comment above, no PR yet). Three Sonnet continuations are used (delegation 3 cap), and no worker slot is free this tick. next: implement (the next tick with a free slot starts ONE fresh worker on Opus/high per delegation 2 escalation, brief = checkpoint 4, steps 4b-7, and it must not re-read earlier checkpoints or sources beyond declaration.trb and the named hunks).

[loop:torbscript] implement: collected worker result of checkpoint 4 (commit ab2a6e7f verified in the comment above, no PR yet). Three Sonnet continuations are used (delegation 3 cap), and no worker slot is free this tick. next: implement (the next tick with a free slot starts ONE fresh worker on Opus/high per delegation 2 escalation, brief = checkpoint 4, steps 4b-7, and it must not re-read earlier checkpoints or sources beyond declaration.trb and the named hunks).
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:47Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T05:47Z
Author
Collaborator

[loop:torbscript] implement: checkpoint 5, step 5 done and pushed (commit c4266120 on loop/502-cli-declaration, amended into the second feat commit, force-pushed with lease; still no torb binary or C compiler in the worker, so unchecked), no PR yet, worker tokens ~120k (Opus continuation, stopped by the context guard). Claim released. next: implement (continue).

Done this round:

  • main.trb: the attached-value refusal (--filter=, --report=, --shard=) runs only for torb test, as before; a CliError now prints error: <show()>, see --help``, so every wrong line names command and argument and points at the command's own help.
  • declaration.trb: the three attachedValueIn messages start with torb test: .
  • tests/command-line/arguments.expected: the 12 lines of check/build/run/test now read error: torb <cmd>: unknown flag '--x', see torb --help``; the other commands untouched. --help/-h of the four still pass the grep (Usage: torb <cmd> ... on stdout, nothing on stderr).
  • tests/test-report/arguments.expected: new wording for all torb test refusals (option '--report': 'xml' is not a report: ..., option '--filter' needs a value, torb test: prefix) and the torb test --help block replaced by the generated help (summary, Usage: torb test [options] [paths...], Arguments, Flags, Options with (optional)/(repeatable), then a blank line and colorUsageLines()), computed by hand from Command.help: CI will tell whether the padding is exact.

Checked by reading std/cli: { _ => } is a closure with an empty block (parser accepts zero statements); extend of the compiler's own types with Argument is coherent (same package); Argument with Show relies on the generated Show.

Left (in this order):
4b. compiler/tests/driver.test.trb l.93-98: usageOf(command) no longer has check/build/run/test; rewrite against torbCommand().subcommand(command)?.help(["torb", command]), --explain-copies only in build; drop the usageOf import.
4c. New compiler/tests/cli-declaration.test.trb (per checkpoint 4).
6. 120-column format of declaration.trb (l.230 Fail "torb build: ...", l.133 optional<Deny>(...), l.234/258/278 the const profile = if ... lines).
7. docs commit docs(cli): ... (docs/standard-library/cli.md cross link, docs/design/CLI.md status line, regenerate skills/), tools/check-commits.sh (2 commits now; squash the declaration commit into the feat commit with the issue's title as subject so the docs commit is the second), push, PR (Refs #124, Closes #502), ci-wait.sh, fix red gates, write-back.

CONTINUE: torbscript/language#502

[loop:torbscript] implement: checkpoint 5, step 5 done and pushed (commit c4266120 on `loop/502-cli-declaration`, amended into the second feat commit, force-pushed with lease; still no torb binary or C compiler in the worker, so unchecked), no PR yet, worker tokens ~120k (Opus continuation, stopped by the context guard). Claim released. next: implement (continue). Done this round: - `main.trb`: the attached-value refusal (`--filter=`, `--report=`, `--shard=`) runs only for `torb test`, as before; a `CliError` now prints `error: <show()>, see `<command> --help``, so every wrong line names command and argument and points at the command's own help. - `declaration.trb`: the three `attachedValueIn` messages start with `torb test: `. - `tests/command-line/arguments.expected`: the 12 lines of check/build/run/test now read `error: torb <cmd>: unknown flag '--x', see `torb <cmd> --help``; the other commands untouched. `--help`/`-h` of the four still pass the grep (`Usage: torb <cmd> ...` on stdout, nothing on stderr). - `tests/test-report/arguments.expected`: new wording for all `torb test` refusals (`option '--report': 'xml' is not a report: ...`, `option '--filter' needs a value`, `torb test: ` prefix) and the `torb test --help` block replaced by the generated help (summary, `Usage: torb test [options] [paths...]`, Arguments, Flags, Options with `(optional)`/`(repeatable)`, then a blank line and `colorUsageLines()`), computed by hand from `Command.help`: CI will tell whether the padding is exact. Checked by reading std/cli: `{ _ => }` is a closure with an empty block (parser accepts zero statements); `extend` of the compiler's own types with `Argument` is coherent (same package); `Argument with Show` relies on the generated `Show`. Left (in this order): 4b. `compiler/tests/driver.test.trb` l.93-98: `usageOf(command)` no longer has check/build/run/test; rewrite against `torbCommand().subcommand(command)?.help(["torb", command])`, `--explain-copies` only in build; drop the `usageOf` import. 4c. New `compiler/tests/cli-declaration.test.trb` (per checkpoint 4). 6. 120-column format of `declaration.trb` (l.230 `Fail "torb build: ..."`, l.133 `optional<Deny>(...)`, l.234/258/278 the `const profile = if ...` lines). 7. docs commit `docs(cli): ...` (`docs/standard-library/cli.md` cross link, `docs/design/CLI.md` status line, regenerate `skills/`), `tools/check-commits.sh` (2 commits now; squash the declaration commit into the feat commit with the issue's title as subject so the docs commit is the second), push, PR (`Refs #124`, `Closes #502`), `ci-wait.sh`, fix red gates, write-back. CONTINUE: torbscript/language#502
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T06:00Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T06:00Z
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T06:58Z

[loop:torbscript] claim implement by session:loop-torbscript-20261027 until 2026-10-27T06:58Z
Author
Collaborator

[loop:torbscript] implement: PR #521 is open (all steps of checkpoint 5 done by an earlier worker); tier A of the first CI run was red on 3 gates (one test, one colored line of tests/command-line/arguments.expected, format of declaration.trb). Fixed in 84bd6d14 (test asserts the MissingValue wording, escape codes in the expected line, attachedValueIn and one Fail message simplified to avoid formatter ambiguity); CI re-running on b8bd779c.

[loop:torbscript] implement: PR #521 is open (all steps of checkpoint 5 done by an earlier worker); tier A of the first CI run was red on 3 gates (one test, one colored line of tests/command-line/arguments.expected, format of declaration.trb). Fixed in 84bd6d14 (test asserts the MissingValue wording, escape codes in the expected line, attachedValueIn and one Fail message simplified to avoid formatter ambiguity); CI re-running on b8bd779c.
Author
Collaborator

[loop:torbscript] claim implement (fix round, red tier A on PR #521 head b8bd779c) by session:loop-torbscript-20261027 until 2026-10-27T08:30Z

[loop:torbscript] claim implement (fix round, red tier A on PR #521 head b8bd779c) by session:loop-torbscript-20261027 until 2026-10-27T08:30Z
Author
Collaborator

[loop:torbscript] release implement: lease expired (08:30Z) with no live worker and no result lost. PR #521 (head 7d9b6459) has review requested from argus; forge CI is queued behind the saturated runner pool. next: waiting (CI on PR #521)

[loop:torbscript] release implement: lease expired (08:30Z) with no live worker and no result lost. PR #521 (head 7d9b6459) has review requested from argus; forge CI is queued behind the saturated runner pool. next: waiting (CI on PR #521)
argus closed this issue 2026-10-27 10:23:27 +00:00
Sign in to join this conversation.
No labels
loop
ready
No milestone
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#502
No description provided.