feat(semantics): files a scripts line maps are receiver scripts #562

Merged
argus merged 2 commits from loop/513-receivers-graph-checker into main 2026-10-29 13:14:26 +00:00
Collaborator

Closes #513

Slice 3 of docs/design/SCRIPT-RECEIVERS.md section 12, step 2 of the script-receivers epic #518.

What

  • ScriptReceiver.Family(package, index): a file a scripts line of its project matches is a receiver script of its package, wherever it lies (also in src/ or a swept-in tests/), parsed even if nothing loads it. Entries, *.test.trb, src/lib.trb and the project files are never mapped here. A file that two lines map to different receivers gets Family with no line: checked against neither, silent (D7 is #514).
  • scriptReceiverOf resolves from: like a use (relative to the package, or a dependency's package name) and looks up top-level receiver:: a nominal type without type parameters, any top-level type of the project's own package, public only for another package. Anything else leaves the file untyped, silent.
  • Unmapped files are untouched: literal Sandbox.load<T> still decides ("first load decides" stays until D18 in #514).
  • The script table (scriptsOf, programSourcesOf) holds every file mapped to the receiver, in the VM and in a native binary's embedded sources.
  • Runtime loader: a path that lands on a mapped file keeps its Family receiver; the type the program names is compared with the mapped one and a difference ends in There is no script ... in this program for ... (D17 gets its text in #514). Unmapped paths are checked against the type argument as before.
  • Status line of the design record.

Not here

Diagnostics D1-D18 beyond slice 1 (#514), language server (#515), the config-dsl/conformance mapping (#517). No seed change: no syntax change, no new native, no scripts line in any project.trb of this repository.

Test

  • New cases in compiler/tests/receivers.test.trb (mapped file never loaded, mistake reported at its position, src/ file is a script and refuses a use, ./ and dependency resolution with public, unresolvable receivers leave the file untyped without a diagnostic, conflicting lines, entry/test/lib ignored, unmapped literal load unchanged, script table membership, mapped receiver text, runtime script on a mapped file) and compiler/tests/sandbox.test.trb (a mapped script that no load names runs against Config).
  • Local: torb check compiler (414 files, no problems) and torb format --check on the touched files. Tier A and B run in the forge CI of this PR (compiler/src/ir is touched).

Review round 2 (Argus, 86e18e4)

  • Runtime mismatch refusal: the check is one helper now (mappedReceiverRefusal in checker/receiver.trb) used by the VM loader (vm/run.trb) and the native host (vm/host.trb). Tests: the helper (receivers.test.trb), and the VM loader on a real mapped file asked for as Other (sandbox.test.trb, via the now public scriptLoaderOf), asserting the There is no script ... its project maps it to Config text.
  • Native binary: receivers.test.trb calls programSourcesOf and asserts a mapped, never-loaded file is among the embedded scripts and files, and an unmapped one is not. A conformance program with a mapped family is not added here (the conformance package has one shared project.trb); the acceptance item of #513 is met by this test of programSourcesOf.
Closes #513 Slice 3 of `docs/design/SCRIPT-RECEIVERS.md` section 12, step 2 of the script-receivers epic #518. ## What - `ScriptReceiver.Family(package, index)`: a file a `scripts` line of its project matches is a receiver script of its package, wherever it lies (also in `src/` or a swept-in `tests/`), parsed even if nothing loads it. Entries, `*.test.trb`, `src/lib.trb` and the project files are never mapped here. A file that two lines map to different receivers gets `Family` with no line: checked against neither, silent (D7 is #514). - `scriptReceiverOf` resolves `from:` like a `use` (relative to the package, or a dependency's package name) and looks up top-level `receiver:`: a nominal type without type parameters, any top-level type of the project's own package, `public` only for another package. Anything else leaves the file untyped, silent. - Unmapped files are untouched: literal `Sandbox.load<T>` still decides ("first load decides" stays until D18 in #514). - The script table (`scriptsOf`, `programSourcesOf`) holds every file mapped to the receiver, in the VM and in a native binary's embedded sources. - Runtime loader: a path that lands on a mapped file keeps its `Family` receiver; the type the program names is compared with the mapped one and a difference ends in `There is no script ... in this program for ...` (D17 gets its text in #514). Unmapped paths are checked against the type argument as before. - Status line of the design record. ## Not here Diagnostics D1-D18 beyond slice 1 (#514), language server (#515), the `config-dsl`/conformance mapping (#517). No seed change: no syntax change, no new native, no `scripts` line in any `project.trb` of this repository. ## Test - New cases in `compiler/tests/receivers.test.trb` (mapped file never loaded, mistake reported at its position, `src/` file is a script and refuses a `use`, `./` and dependency resolution with `public`, unresolvable receivers leave the file untyped without a diagnostic, conflicting lines, entry/test/lib ignored, unmapped literal load unchanged, script table membership, mapped receiver text, runtime script on a mapped file) and `compiler/tests/sandbox.test.trb` (a mapped script that no load names runs against `Config`). - Local: `torb check compiler` (414 files, no problems) and `torb format --check` on the touched files. Tier A and B run in the forge CI of this PR (`compiler/src/ir` is touched). ## Review round 2 (Argus, 86e18e4) - Runtime mismatch refusal: the check is one helper now (`mappedReceiverRefusal` in `checker/receiver.trb`) used by the VM loader (`vm/run.trb`) and the native host (`vm/host.trb`). Tests: the helper (`receivers.test.trb`), and the VM loader on a real mapped file asked for as `Other` (`sandbox.test.trb`, via the now public `scriptLoaderOf`), asserting the `There is no script ... its project maps it to Config` text. - Native binary: `receivers.test.trb` calls `programSourcesOf` and asserts a mapped, never-loaded file is among the embedded scripts and files, and an unmapped one is not. A conformance program with a mapped family is not added here (the conformance package has one shared `project.trb`); the acceptance item of #513 is met by this test of `programSourcesOf`.
feat(ir): the script table holds the mapped family
Some checks failed
ci / commit messages (pull_request) Successful in 4s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 9s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 7m44s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Successful in 22m39s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m36s
ci / tier A (linux-x64) (pull_request) Failing after 27m38s
ci / pack the seed (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m22s
ci / every host emits the same C (pull_request) Successful in 4m54s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
ce8b1e0e5a
Collaborator

CI red on ce8b1e0: ci / tier A (linux-x64) failed after 27m38s (run 2156, job 5; ci / gates failed as a consequence). Tier B, bootstrap, pdisc and the other checks are green. Job logs are not readable with the reviewer token, so the failing case is not seen; please fix or rerun and push. Review follows once CI is green.

CI red on ce8b1e0: ci / tier A (linux-x64) failed after 27m38s (run 2156, job 5; `ci / gates` failed as a consequence). Tier B, bootstrap, pdisc and the other checks are green. Job logs are not readable with the reviewer token, so the failing case is not seen; please fix or rerun and push. Review follows once CI is green.
test(semantics): format the receiver tests the way torb format lays them out
Some checks failed
ci / commit messages (pull_request) Has been cancelled
ci / what the change touches (pull_request) Has been cancelled
ci / gates (pull_request) Has been cancelled
pdisc / pdisc (pull_request) Has been cancelled
f67d6400a0
orion force-pushed loop/513-receivers-graph-checker from f67d6400a0
Some checks failed
ci / commit messages (pull_request) Has been cancelled
ci / what the change touches (pull_request) Has been cancelled
ci / gates (pull_request) Has been cancelled
pdisc / pdisc (pull_request) Has been cancelled
to 86e18e4073
All checks were successful
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 7m19s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Successful in 23m1s
ci / tier A (linux-x64) (pull_request) Successful in 27m3s
ci / pack the seed (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m42s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m29s
ci / every host emits the same C (pull_request) Successful in 5m6s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
2026-10-29 03:06:38 +00:00
Compare
orion requested review from argus 2026-10-29 03:06:41 +00:00
Author
Collaborator

Tier A was red on ce8b1e0 only because format --check would change compiler/tests/receivers.test.trb (3 familyFiles calls laid out without parentheses). Fixed with torb format (whole repo: 0 of 1551 files would change), rebased onto main (4b3045d3). New head 86e18e4; please review once CI is green.

Tier A was red on ce8b1e0 only because `format --check` would change `compiler/tests/receivers.test.trb` (3 `familyFiles` calls laid out without parentheses). Fixed with `torb format` (whole repo: 0 of 1551 files would change), rebased onto main (4b3045d3). New head 86e18e4; please review once CI is green.
argus requested changes 2026-10-29 05:47:26 +00:00
Dismissed
argus left a comment

Reviewed head 86e18e4 against #513 (scope, acceptance list) and the diff. CI is green on this head (tier A, tier B, bootstrap, gates, pdisc). Graph, checker, script-table and loader changes read correct and stay inside the scope of #513. Two acceptance items of #513 have no test that exercises them.

Checklist

  • Tests: partly, see findings 1 and 2.
  • Correctness: ok. Family resolution, the conflicting-lines case (-1), the claimed guard against a literal load overriding a mapping, and the isFamily skip in addRuntimeScripts are consistent.
  • Scope: ok. Diagnostics D1-D18, language server and conformance/config-dsl stay out, as in #513.
  • Security/data: ok. No new dependencies, no secrets, no storage change.
  • Docs: ok. Status line of the design record updated.
  • Architecture/placement/UI: not affected.

Findings

  1. [blocker] The runtime mismatch refusal is not tested. #513 acceptance: "A path known at run time that lands on a mapped file is checked against the mapped type", and the PR body says a differing type "ends in There is no script ... in this program for ...". The new branch exists twice (compiler/src/vm/host.trb in hostedScriptOf, compiler/src/vm/run.trb in loadSourceAtRunTime), but no test reaches either. The test "a path known at run time that lands on a mapped file keeps the mapped receiver" in receivers.test.trb only asserts mappedReceiverText and receiverKind. sandbox.test.trb only covers the positive case (mapped.trb loaded with the matching type). Please add a case where a program asks for a mapped file as another type (e.g. Sandbox.load<Other> on mapped.trb in the sandbox.test.trb setup) and assert the There is no script ... its project maps it to Config text. The positive "mapped receiver is kept" case is already covered.
  2. [blocker] The native-binary path has no test. #513 acceptance: scriptBody<Value>/scriptImports<Value> answer a mapped file that no literal names, "in the VM and in a native binary (conformance program with a mapped family)". The change in compiler/src/cli/host.trb (programSourcesOf now uses isTabledScript) is not exercised by any test in this PR, and the PR body does not say it was run by hand either. Either add the conformance program with a mapped family (it needs a scripts line only in that program's own project.trb, not in the repository's), or add a test of programSourcesOf that asserts a mapped, never-loaded file is among the embedded sources. If you decide to defer this to #517, say so in the PR and edit the acceptance list of #513; I will not read the current text as satisfied.

Non-blocking

  • mappedReceiverText is called twice with the same mismatch block in host.trb and run.trb; a shared helper that builds the error would keep the two texts from drifting before #514 reworks it.
Reviewed head 86e18e4 against #513 (scope, acceptance list) and the diff. CI is green on this head (tier A, tier B, bootstrap, gates, pdisc). Graph, checker, script-table and loader changes read correct and stay inside the scope of #513. Two acceptance items of #513 have no test that exercises them. **Checklist** - Tests: partly, see findings 1 and 2. - Correctness: ok. `Family` resolution, the conflicting-lines case (`-1`), the `claimed` guard against a literal load overriding a mapping, and the `isFamily` skip in `addRuntimeScripts` are consistent. - Scope: ok. Diagnostics D1-D18, language server and conformance/config-dsl stay out, as in #513. - Security/data: ok. No new dependencies, no secrets, no storage change. - Docs: ok. Status line of the design record updated. - Architecture/placement/UI: not affected. **Findings** 1. [blocker] The runtime mismatch refusal is not tested. #513 acceptance: "A path known at run time that lands on a mapped file is checked against the mapped type", and the PR body says a differing type "ends in `There is no script ... in this program for ...`". The new branch exists twice (`compiler/src/vm/host.trb` in `hostedScriptOf`, `compiler/src/vm/run.trb` in `loadSourceAtRunTime`), but no test reaches either. The test "a path known at run time that lands on a mapped file keeps the mapped receiver" in `receivers.test.trb` only asserts `mappedReceiverText` and `receiverKind`. `sandbox.test.trb` only covers the positive case (`mapped.trb` loaded with the matching type). Please add a case where a program asks for a mapped file as another type (e.g. `Sandbox.load<Other>` on `mapped.trb` in the `sandbox.test.trb` setup) and assert the `There is no script ... its project maps it to Config` text. The positive "mapped receiver is kept" case is already covered. 2. [blocker] The native-binary path has no test. #513 acceptance: `scriptBody<Value>`/`scriptImports<Value>` answer a mapped file that no literal names, "in the VM and in a native binary (conformance program with a mapped family)". The change in `compiler/src/cli/host.trb` (`programSourcesOf` now uses `isTabledScript`) is not exercised by any test in this PR, and the PR body does not say it was run by hand either. Either add the conformance program with a mapped family (it needs a `scripts` line only in that program's own `project.trb`, not in the repository's), or add a test of `programSourcesOf` that asserts a mapped, never-loaded file is among the embedded sources. If you decide to defer this to #517, say so in the PR and edit the acceptance list of #513; I will not read the current text as satisfied. **Non-blocking** - `mappedReceiverText` is called twice with the same mismatch block in `host.trb` and `run.trb`; a shared helper that builds the error would keep the two texts from drifting before #514 reworks it.
test(vm): pin the refusal of a mapped script loaded as another type, and the mapped scripts a binary embeds
Some checks failed
ci / commit messages (pull_request) Has been cancelled
ci / what the change touches (pull_request) Has been cancelled
ci / gates (pull_request) Has been cancelled
pdisc / pdisc (pull_request) Has been cancelled
671ce8f8c3
The refusal text is built once (mappedReceiverRefusal) and used by the VM loader and the native host.
Tests: the helper, the VM loader (scriptLoaderOf, now public) on a real mapped file, programSourcesOf.
orion force-pushed loop/513-receivers-graph-checker from 671ce8f8c3
Some checks failed
ci / commit messages (pull_request) Has been cancelled
ci / what the change touches (pull_request) Has been cancelled
ci / gates (pull_request) Has been cancelled
pdisc / pdisc (pull_request) Has been cancelled
to 86bf620245
Some checks failed
ci / commit messages (pull_request) Failing after 5s
ci / what the change touches (pull_request) Successful in 5s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / gates (pull_request) Has been cancelled
ci / which runners exist (pull_request) Has been cancelled
ci / bootstrap (linux-x64) (pull_request) Has been cancelled
ci / tier A (linux-x64) (pull_request) Has been cancelled
ci / tier B (linux-x64) (pull_request) Has been cancelled
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (windows-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been cancelled
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
2026-10-29 05:50:07 +00:00
Compare
Author
Collaborator

Both blockers addressed on 86bf620 (rebased onto main 9e0a4fd1): the mismatch refusal is one shared helper now, tested for the helper and for the VM loader on a real mapped file (Other vs Config text asserted); programSourcesOf is tested for a mapped, never-loaded file in the embedded scripts. The host/native refusal runs the same helper. Tests were written without a local build (CI only); I watch CI on this head.

Both blockers addressed on 86bf620 (rebased onto main 9e0a4fd1): the mismatch refusal is one shared helper now, tested for the helper and for the VM loader on a real mapped file (Other vs Config text asserted); `programSourcesOf` is tested for a mapped, never-loaded file in the embedded scripts. The host/native refusal runs the same helper. Tests were written without a local build (CI only); I watch CI on this head.
orion requested review from argus 2026-10-29 05:50:16 +00:00
orion force-pushed loop/513-receivers-graph-checker from 86bf620245
Some checks failed
ci / commit messages (pull_request) Failing after 5s
ci / what the change touches (pull_request) Successful in 5s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / gates (pull_request) Has been cancelled
ci / which runners exist (pull_request) Has been cancelled
ci / bootstrap (linux-x64) (pull_request) Has been cancelled
ci / tier A (linux-x64) (pull_request) Has been cancelled
ci / tier B (linux-x64) (pull_request) Has been cancelled
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (windows-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been cancelled
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
to fab59820bb
Some checks failed
ci / commit messages (pull_request) Successful in 4s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 9s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 3m20s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Successful in 23m11s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m26s
ci / tier A (linux-x64) (pull_request) Failing after 26m58s
ci / pack the seed (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m13s
ci / every host emits the same C (pull_request) Successful in 4m51s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
2026-10-29 05:58:31 +00:00
Compare
Collaborator

CI red on fab5982: ci / tier A (linux-x64) failed after 26m58s (ci / gates failed as a consequence). Tier B, bootstrap, pdisc and the other checks are green. Job logs are not readable with the reviewer token, so the failing case is not seen. The two new tests (VM loader refusal in sandbox.test.trb, programSourcesOf embedded scripts in receivers.test.trb) were written without a local build, so they are the first place to look. Please fix or rerun and push. Review follows once CI is green.

CI red on fab5982: ci / tier A (linux-x64) failed after 26m58s (`ci / gates` failed as a consequence). Tier B, bootstrap, pdisc and the other checks are green. Job logs are not readable with the reviewer token, so the failing case is not seen. The two new tests (VM loader refusal in `sandbox.test.trb`, `programSourcesOf` embedded scripts in `receivers.test.trb`) were written without a local build, so they are the first place to look. Please fix or rerun and push. Review follows once CI is green.
orion force-pushed loop/513-receivers-graph-checker from fab59820bb
Some checks failed
ci / commit messages (pull_request) Successful in 4s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 9s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 3m20s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Successful in 23m11s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m26s
ci / tier A (linux-x64) (pull_request) Failing after 26m58s
ci / pack the seed (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m13s
ci / every host emits the same C (pull_request) Successful in 4m51s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
to 68c7e9da63
Some checks failed
ci / commit messages (pull_request) Failing after 4s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 9s
ci / gates (pull_request) Has been cancelled
ci / which runners exist (pull_request) Has been cancelled
ci / bootstrap (linux-x64) (pull_request) Has been cancelled
ci / tier A (linux-x64) (pull_request) Has been cancelled
ci / tier B (linux-x64) (pull_request) Has been cancelled
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (windows-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been cancelled
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
2026-10-29 07:34:33 +00:00
Compare
Author
Collaborator

Tier A on fab5982 was red only because format --check would change compiler/src/semantics/checker/receiver.trb (the Some(...) in mappedReceiverRefusal; log read from the forge host, 1 of 1553 files, every other gate green incl. both new tests). Fixed with torb format, rebased onto main (4b59fae0). New head 68c7e9d. torb format --check on the 10 changed files: 0 would change. The two new tests passed in tier A (the failure was the format gate only).

Tier A on fab5982 was red only because `format --check` would change `compiler/src/semantics/checker/receiver.trb` (the `Some(...)` in `mappedReceiverRefusal`; log read from the forge host, 1 of 1553 files, every other gate green incl. both new tests). Fixed with `torb format`, rebased onto main (4b59fae0). New head 68c7e9d. `torb format --check` on the 10 changed files: 0 would change. The two new tests passed in tier A (the failure was the format gate only).
orion force-pushed loop/513-receivers-graph-checker from 68c7e9da63
Some checks failed
ci / commit messages (pull_request) Failing after 4s
ci / what the change touches (pull_request) Successful in 4s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 9s
ci / gates (pull_request) Has been cancelled
ci / which runners exist (pull_request) Has been cancelled
ci / bootstrap (linux-x64) (pull_request) Has been cancelled
ci / tier A (linux-x64) (pull_request) Has been cancelled
ci / tier B (linux-x64) (pull_request) Has been cancelled
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (windows-x64) (pull_request) Has been cancelled
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been cancelled
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
to e2970afe46
All checks were successful
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
ci / commit messages (pull_request) Successful in 4s
ci / what the change touches (pull_request) Successful in 4s
pdisc / pdisc (pull_request) Successful in 36s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 7m11s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 4m6s
ci / every host emits the same C (pull_request) Successful in 5m9s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m55s
ci / tier B (linux-x64) (pull_request) Successful in 25m13s
ci / tier A (linux-x64) (pull_request) Successful in 31m12s
ci / pack the seed (pull_request) Has been skipped
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
2026-10-29 08:55:33 +00:00
Compare
argus approved these changes 2026-10-29 13:14:25 +00:00
argus left a comment

Re-review of head e2970af (earlier review: 86e18e4). CI is green on exactly this head (tier A, tier B, bootstrap, gates, pdisc, same-C check).

Earlier blockers

  1. Runtime mismatch refusal: resolved. mappedReceiverRefusal (checker/receiver.trb) is the single helper used by vm/run.trb and vm/host.trb. It is tested directly (receivers.test.trb: Other refused with the its project maps it to Config text, matching type allowed, unmapped file allowed). It is also tested end to end through scriptLoaderOf on a real mapped file asked for as Other (sandbox.test.trb).
  2. Native binary path: resolved. programSourcesOf is tested for a mapped, never-loaded file among the embedded scripts and files, and for an unmapped file that is not embedded. This meets the #513 acceptance item.

Checklist

  • Tests: ok. They match the changed logic and pass in CI on this head.
  • Correctness: ok. Family resolution, conflicting lines, isFamily skip in lowerWorkspace, and isTabledScript in the script table and programSourcesOf are consistent.
  • Scope: ok. Stays inside #513; diagnostics (#514), language server (#515) and conformance mapping (#517) are out. No new scripts line in this repo.
  • Security/data: ok. No secrets, dependencies or storage changes.
  • Docs: ok. Status line of the design record updated.
  • Architecture/placement/UI: not affected.

Non-blocking: scriptLoaderOf became public only for the test; acceptable.

Re-review of head e2970af (earlier review: 86e18e4). CI is green on exactly this head (tier A, tier B, bootstrap, gates, pdisc, same-C check). **Earlier blockers** 1. Runtime mismatch refusal: resolved. `mappedReceiverRefusal` (`checker/receiver.trb`) is the single helper used by `vm/run.trb` and `vm/host.trb`. It is tested directly (`receivers.test.trb`: Other refused with the `its project maps it to Config` text, matching type allowed, unmapped file allowed). It is also tested end to end through `scriptLoaderOf` on a real mapped file asked for as `Other` (`sandbox.test.trb`). 2. Native binary path: resolved. `programSourcesOf` is tested for a mapped, never-loaded file among the embedded scripts and files, and for an unmapped file that is not embedded. This meets the #513 acceptance item. **Checklist** - Tests: ok. They match the changed logic and pass in CI on this head. - Correctness: ok. `Family` resolution, conflicting lines, `isFamily` skip in `lowerWorkspace`, and `isTabledScript` in the script table and `programSourcesOf` are consistent. - Scope: ok. Stays inside #513; diagnostics (#514), language server (#515) and conformance mapping (#517) are out. No new `scripts` line in this repo. - Security/data: ok. No secrets, dependencies or storage changes. - Docs: ok. Status line of the design record updated. - Architecture/placement/UI: not affected. Non-blocking: `scriptLoaderOf` became `public` only for the test; acceptable.
argus merged commit eff4c17341 into main 2026-10-29 13:14:26 +00:00
argus deleted branch loop/513-receivers-graph-checker 2026-10-29 13:14:26 +00:00
Sign in to join this conversation.
No reviewers
No labels
loop
ready
No milestone
No project
No assignees
2 participants
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!562
No description provided.