Packet agents/rocko/work/queue-78/ (packet manifest 9e067f40, 32 files, candidate manifest 3016dbf1), Rocko's BUILD-LOG and SESSIONS appends. Committed by Sage for Rocko, who has no credential. Co-Authored-By: Claude Opus 5.5 <[email protected]>
81 lines
3.8 KiB
Markdown
81 lines
3.8 KiB
Markdown
# Row 78 (#1572): Claude pin default-path tests, candidate packet, round 1
|
|
|
|
Author: Rocko. Reviewer: Filbert. Brief:
|
|
`docs/plans/2026-10-11_claude-pin-and-coder-grant.md`, section "Claude pin
|
|
default-path tests" (blob 4784ee65, re-pinned by Sage at revs 567-568). This
|
|
covers Filbert's row 72 note N1, comment 27460 on #1566. Base: `bbd22f1b`
|
|
(`base.txt`). The packet is uncommitted. I made no commits, pushes or Gitea
|
|
calls and read no token or private binding.
|
|
|
|
## Files (`files.txt`, `candidate-manifest.sha256`)
|
|
|
|
| File | Change |
|
|
|---|---|
|
|
| `packages/cli/tests/host.test.mjs` | +1 test: "bus-service.sh refuses a default claude without the execute bit, or in a PATH dir with a space" |
|
|
| `agents/rocko/work/queue-78/mutants.sh` | the mutant rerun: `mutants.sh <tree>` |
|
|
|
|
There's no change to `scripts/bus-service.sh` or `adapters/claude/adapter.sh`.
|
|
|
|
## What the test does
|
|
|
|
It runs `bus-service.sh render` with no `--claude` under `bash`. `PATH` is
|
|
the test's own bin dir plus a tools dir holding links to node, dirname, sed
|
|
and readlink. This is the isolation row 72's test uses, and here it matters:
|
|
this host has a real `/usr/bin/claude`. With `/usr/bin` on `PATH`,
|
|
`command -v claude` skips a file without the execute bit and returns that
|
|
real binary instead. I checked this in a throwaway directory before the
|
|
build.
|
|
|
|
1. The only `claude` on `PATH` is a regular file, mode 0644. bash's
|
|
`command -v` still returns it when no executable `claude` exists.
|
|
Render exits 1, stderr says "not an executable file", and stdout is
|
|
empty.
|
|
2. `claude`, mode 0755, sits in a `PATH` dir named `spaced bin`. Render
|
|
exits 1, stderr says "cannot carry" and names the full path, and stdout
|
|
is empty.
|
|
|
|
As the brief expected, the code refuses both cases. There is no deviation,
|
|
unlike row 72's directory case.
|
|
|
|
## Mutants (`out/mutants-candidate.txt`, `out/mutants-base.txt`)
|
|
|
|
The existing `--claude` tests already exercise both checks for a given pin.
|
|
Dropping either check outright is killed on the base, so it says nothing
|
|
about the default path. Each mutant here instead makes one check skip only
|
|
the default (`CLAUDE_SET=0`) and keeps it for `--claude`:
|
|
|
|
| Mutant | Edit in `scripts/bus-service.sh` | Base `bbd22f1b` | Candidate |
|
|
|---|---|---|---|
|
|
| `default-skips-exec-check` | `[ "$CLAUDE_SET" = 0 ] \|\| { [ -f "$bin" ] && [ -x "$bin" ]; } \|\| die …` | **survived** | killed: host.test.mjs:640 (case 1's exit status) |
|
|
| `default-skips-char-check` | `case "$bin" in *[!A-Za-z0-9/._+-]*) [ "$CLAUDE_SET" = 0 ] \|\| die … ;; esac` | **survived** | killed: host.test.mjs:647 (case 2's exit status) |
|
|
|
|
The script saves the file, applies the sed and checks it changed something.
|
|
It then runs `packages/cli/tests/host.test.mjs` and restores the file from
|
|
the saved copy. The base run used a clean detached worktree at `bbd22f1b`,
|
|
which I removed afterwards. `out/mutants-*/` holds each diff and log. The
|
|
script exits 1 on the base, as it should when a mutant survives.
|
|
|
|
I didn't add a mutant for the absolute-path check. `command -v` returns an
|
|
absolute path unless a `PATH` entry is relative, and the brief doesn't name
|
|
that case.
|
|
|
|
## Gate (`out/gate/`, sequential, scratch worktree at bbd22f1b with the candidate, `node_modules` linked)
|
|
|
|
Run 00:05:37Z-00:09:03Z.
|
|
|
|
| Suite | Result |
|
|
|---|---|
|
|
| cli `node --test 'packages/cli/tests/*.test.mjs'` | 114 pass, 0 fail, 0 skipped |
|
|
| test-auth | 15 passed, 0 failed |
|
|
| test-conductor | 17 passed, 0 failed |
|
|
| test-config | 24 passed, 0 failed |
|
|
| test-discord | 66 passed, 0 failed |
|
|
| test-extension-package | 18 passed, 0 failed |
|
|
| test-foundation | 44 passed, 0 failed |
|
|
| test-queue | 27 passed, 0 failed |
|
|
| test-release | 14 passed, 0 failed |
|
|
| test-task | 98 passed, 0 failed (Docker) |
|
|
|
|
The cli count is 114 against 113 at row 72's landing; the one added test is
|
|
this row's. After the gate I removed the `rocko-r78_default` network.
|