Skip to content

corpus-report scores nix develop -c bash as an interpreter hand-roll, so BUILD NEXT names the sanctioned path #335

Description

@thedavidmeister

Run against the current producer corpus, corpus-report recommends:

BUILD NEXT: interpreters

with the series behind it:

metric first peak latest runs shape
interpreters 19 28 28 4 holding
probes 5 6 4 4 falling
raw gh api 1 1 0 1 quiet
tarball / harness scaffold / dispatcher source 0 0 0 0 absent

The count is the prescribed pattern

Across the 4 traces that have tool calls (20260816T170156Z, 20260817T000148Z, 20260817T050103Z, 20260817T110404Z):

total Bash calls                      1293
nix develop … -c bash                   49
any -c payload naming an interpreter    49

The two are the same 49. CORPUS_INTERPRETERS includes bash and sh, and interpreter_runs deliberately resolves wrappers so bash --norc -c is caught — which means nix develop .#x -c bash -c "…" scores as reaching for an interpreter rather than for a tool.

That shape is what the prompt INSTRUCTS:

forge/cargo/node via nix develop

Command-position interpreters across the same 4 traces are 5 python3 and 4 bash — and at least one of those python3 strings is a call block-python.sh REFUSED, recorded in the trace as an attempt (blocked: Python … This org’s tooling is Rust), not as an invocation.

So the metric’s headline number is ~49 sanctioned toolchain accesses plus a handful of interpreter reaches, most of which the guard already stopped. Acting on BUILD NEXT: interpreters means removing the prescribed way to reach the flake.

Why this matters beyond one wrong line

BUILD NEXT exists so a reader does not have to re-derive the ranking. A recommendation that names the sanctioned path spends a session’s attention on a non-problem, and the corpus’s real message — that probes are falling and tarball / scaffold / dispatcher are absent, i.e. the hand-rolls previous readings targeted are gone — is buried under it.

Suggested fix

Count what the metric is named for: a run reaching for an interpreter INSTEAD of a tool.

  • Exclude an interpreter that is the -c payload of a nix develop / nix shell invocation. That is toolchain access, and it is what the prompt asks for.
  • Consider whether bash/sh belong in the list at all, given a compound shell command is how the harness invokes everything. python/node/ruby/perl/deno are the reaches the issue behind this metric was about.
  • A blocked attempt should not count as a hand-roll the tooling failed to absorb — the guard absorbed it. If attempts are worth counting they should be reported as a separate column (refusals are their own cost: the denial sits in context and is re-read every turn), not folded into the same number.

Done when

  • BUILD NEXT does not name a pattern the prompt prescribes.
  • The interpreter count distinguishes toolchain access, a genuine interpreter reach, and a reach the guard refused.
  • A test pins each of those three against a fixture trace, since all three are one number today and nothing would show them diverging.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions