Files

5.0 KiB

Filbert review, row 125 round 2: approve

Candidate manifest 71c55638fc1abe29024c4511e75b4c1e73fd9aa1a289c663d15d3600eb8388a8 (38 paths), build.patch (0efb5cb6...) applied with --index to 19fe85c3e. The manifest matched before and after every run. Against my round 1 manifest, the 36 shared paths changed in 7 files, and docs/TOOLS.md and packages/cli/README.md are new to the manifest. Those are the nine paths BUILD.md "Packet, round 2" lists.

Both of my round 1 changes are fixed. One doc-only follow-up is below.

Change 1, fixed: token limits at schema depth only

  • launch-settings.mjs:19: DEPTH and tokenLeaves walk only tokens.instances.X, tokens.providers.X, tokens.keys.X and tokens.models.P.M.
    • stamp (:40) sets since only on those leaves.
    • reset (:52) accepts only a path that is exactly one of them.
    • An entry that isn't an object is left for the schema to refuse.
  • packages/bus/src/limits.mjs:32: limitLeaves uses the same table, so the core and the writer agree.
  • The shipped token-limit check (index.mjs:24-33) reads the same four kinds at the same depths.
  • Tests:
    • token-limit-settings.test.mjs:61 covers the four base-valid shapes from my table, token limits named limit beside concurrency limits of the same name (stamped and reset), and a reset of a concurrency path or of a path above a token leaf (refused, with the file bytes unchanged).
    • limit-checks.test.mjs:102 covers limitLeaves.
    • :303 covers a token limit for a provider named limit that is counted and refuses a launch.
  • Dewey reports that the round 1 candidate fails the new tests (token-limit-settings 3/4, limit-checks 14/16); that was not my run. S08, S09 and L16 put the any-depth walk back, and each targets the right line.

Choosing the depth walk over reserved names keeps files that are valid on base valid, which is what I asked for. I accept the untested instance named limit: instances go through the same DEPTH walk, and a fixture for it would need a role of that name.

Change 2, fixed: the CLI docs

packages/cli/README.md:786 and docs/TOOLS.md:609 now cover where token limits sit, since, limits reset WORD..., not enforced, fail closed, and plain output that isn't JSON as a whole. I checked each against packages/cli/src/limits.mjs:42-82:

  • reset reads the revision, then sends one reset path.
  • set and reset print the same plain shape as view.

host.test.mjs, which reads the CLI README, passed 41/41.

Round 1 survivors and the no-source note

  • f2: limits-runtime.test.mjs:83, mutant R05.
  • f3: limit-checks.test.mjs:176, mutant L17.
  • f4: limits-browser.test.mjs, mutant W11.
  • No usage source under a limit of 1: limits-runtime.test.mjs:68, mutant T12.

I read each test and each mutant in mutants.mjs; each mutant edits the line my survivor named.

Doc-only, follow-up

  • docs/TOOLS.md:621 writes limits reset WORD... --business ID without brackets, but the CLI and packages/cli/README.md:811 treat --business as optional ([--business ID]). No test reads docs/TOOLS.md (grep of packages/*/tests and scripts/test-*.sh), so under decision 137 this doesn't block.

Base drift

Row 129 (850484a7d) touches four of the 38 paths: bus.js, serve.mjs, shell.test.mjs and docs/TOOLS.md. I reviewed and ran on 19fe85c3e only, and did not try --3way at HEAD. Sage's landing gate covers this (sage-0829).

Ran by me

Slot from sage-0842. The busy check was CLEAR before each step. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and the manifest was checked before and after.

  • Singles, 18:53:16Z to 18:54:11Z, one node --test per file:

    • bus: limit-checks 16/16, limit-stop 5/5, limits-runtime 5/5, process 8/8, usage 14/14;
    • business: token-limit-settings 4/4, launch-settings 8/8;
    • cli: launch-limit-checks 4/4, launch-limits 1/1, limits-tokens 4/4, limits 4/4, host 41/41, thread-launch 10/10;
    • harness: runner 26/26, tools 20/20;
    • plugins: kinds 5/5, loader 17/17, token-limit 10/10;
    • webui: limits-browser 1/1, limits-route 4/4, shell 5/5.

    The awk sum is 212/212 over 21 files, 0 skipped.

  • Probe, 18:54:17Z, my round 1 probe (launchSettings(...).set on a fixture business) with three more cases. On the round 2 candidate:

    • {providers:{anthropic:3}}, {providers:{limit:3}}, {models:{limit:{m:2}}} and {models:{anthropic:{limit:2}}} all save as sent;
    • {tokens:{providers:{limit:{limit:5}}}} saves with since;
    • concurrency and token limits all named limit together save, and only the three token leaves get since;
    • {tokens:{providers:{anthropic:5}}} is refused (... must be a JSON object);
    • {tokens:{roles:{...}}} is refused (unsupported ... tokens key: "roles").

I ran no mutants of my own this round.

Not mine

Dewey's round 2 run (BUILD.md "Runs, round 2"):

  • the round 1 candidate failing the new tests;
  • gate: 17 singles 145/145, 16 packages 2241/2241, 10 scripts rc=0;
  • 81 of 81 mutants killed.

I read mutants.mjs and did not rerun it.