Skip to content

[AUTOMATED] fix(brief): a probe is one argv and there is no shell — 6 of 26 were lost to this - #443

Merged
mahaloz merged 3 commits into
mainfrom
fix/brief-probe-is-one-argv
Sep 6, 2026
Merged

[AUTOMATED] fix(brief): a probe is one argv and there is no shell — 6 of 26 were lost to this#443
mahaloz merged 3 commits into
mainfrom
fix/brief-probe-is-one-argv

Conversation

@mahaloz

@mahaloz mahaloz commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Round 4's gate: 20 admitted, 6 UNRUNNABLE. That is 23% of the round's evidence
discarded, and the discarded set includes "Misspelled option is silently accepted",
one of the two most interesting findings of the round.

The cause is not a bug. Four of the six wrote their probe as sh -c '<pipeline>' and
the allowlist refused it:

ProbeError: probe may not execute 'sh': it runs code passed as an argument,
which would make the allowlist meaningless

Two more used timeout, refused for the same reason. The guard is correct and stays --
probes are LLM-authored and replayed in the main tree outside the sandbox, which is
exactly why argv[0] is allowlisted by resolved realpath.

The brief was the gap. It showed a worked example whose cmd happens to need no shell
and never said a shell is impossible, so a tester reaching for | grep to check output
had no way to know the probe would be thrown away rather than run. Same shape as the
--assert quoting trap: the tool is right, the instruction is incomplete, and evidence
is lost silently.

Adds the rule with a translation table, because "no shell" alone would leave testers
stuck: | grep X is stdout_matches, | grep -v X is stdout_absent, | jq .count
is a json path clause, and timeout 60 is the timeout_s field that already exists.
Also says plainly that a weaker probe which RUNS beats a perfect one the gate discards --
the failure here was testers writing better assertions than the format accepts.

tools/repipe/smoke.sh 138/138.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

🤖 Generated with Claude Code

https://claude.ai/code/session_01YcFmfZndNjgfqLQVBZCdkY

mahaloz and others added 3 commits September 6, 2026 03:39
…e round's gate

A tester report whose probe arrived as a JSON string that will not parse
crashed `verify --gate`, so no observation in the round got gated at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Fails on the unpatched tree with the AttributeError, passes as `unrunnable`
with the guard.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… of 26 were lost to this

Round 4's gate: 20 admitted, 6 UNRUNNABLE. That is 23% of the round's evidence
discarded, and the discarded set includes "Misspelled option is silently accepted",
one of the two most interesting findings of the round.

The cause is not a bug. Four of the six wrote their probe as `sh -c '<pipeline>'` and
the allowlist refused it:

  ProbeError: probe may not execute 'sh': it runs code passed as an argument,
  which would make the allowlist meaningless

Two more used `timeout`, refused for the same reason. The guard is correct and stays --
probes are LLM-authored and replayed in the main tree outside the sandbox, which is
exactly why argv[0] is allowlisted by resolved realpath.

The brief was the gap. It showed a worked example whose `cmd` happens to need no shell
and never said a shell is impossible, so a tester reaching for `| grep` to check output
had no way to know the probe would be thrown away rather than run. Same shape as the
`--assert` quoting trap: the tool is right, the instruction is incomplete, and evidence
is lost silently.

Adds the rule with a translation table, because "no shell" alone would leave testers
stuck: `| grep X` is `stdout_matches`, `| grep -v X` is `stdout_absent`, `| jq .count`
is a `json` path clause, and `timeout 60` is the `timeout_s` field that already exists.
Also says plainly that a weaker probe which RUNS beats a perfect one the gate discards --
the failure here was testers writing better assertions than the format accepts.

tools/repipe/smoke.sh 138/138.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mahaloz
mahaloz merged commit b6fec4b into main Sep 6, 2026
9 checks passed
@mahaloz
mahaloz deleted the fix/brief-probe-is-one-argv branch September 6, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant