Skip to content

77% of the instruments in tools/ are invoked by nothing — and four other frictions from a 2-day fleet session #579

Description

@jobordu

Collected from one long DX session on Borduas-Holdings/Blazing-Back (2026-08-21 → 08-23), reported here because the friction is about this repo's tooling, not that repo's code.

⛔ 1. 77% of the instruments in tools/ are invoked by nothing

tools/*.py (non-test)                     56
invoked by .github/ or scripts/           13
⇒ UNWIRED                                 43   (77%)

This is the defect the tools were built to detect, in the tools themselves. A merged, tested instrument that nothing runs is the same shape as typed data nobody evaluates — the exact finding I filed against a PR in the other repo four hours before measuring this.

Concrete cost, same day: tools/doctrine-uncommitted.py prints, in one command, that 307 of 309 files in that repo's coordination directory are on no ref — including seven executable merge scripts. It was found by hand, hours later. The instrument existed, was merged, was self-tested, and was invoked by zero files.

The fix is not more tools. It is wiring, and the wiring has a real hazard: dated-claims.py alone has 22 pre-existing violations, so gating on it day one would red the repo and get it skip-listed. ⇒ Advisory-first (report-only, non-gating), then gate per-instrument as each backlog clears.

⛔ 2. ListAgents and Daintree terminal_list are DISJOINT

ListAgents        9 peers  — not one DEV pane
terminal_list    11 panes  — DEV1..DEV5 all present, "waiting"

⇒ Not two views of one population — disjoint on the population that matters. Every DEV pane is invisible to one registry.

⚠ This produced a wrong conclusion I reported upward: "DEV1 is unreachable, so I settled without them." Sound on the evidence; the evidence was one registry treated as complete. ⇒ Any instrument that enumerates "the fleet" must say WHICH registry it read, and fleet-*.py/issue-coverage.py currently pick one silently.

⛔ 3. The same error four times in one day — under-measuring by unit

I measured the population was ratio
7 of my own tools unwired 56 instruments, 43 unwired
125 files in a directory listing 311 files in the tree 2.5×
first 100 issues, 73.0% unlabelled 292 issues, 77.7% +4.7pt
one registry (ListAgents) two registries, disjoint

"A finding sized to the instance you noticed is a finding you have not measured." Every one of these was a correct reading of the wrong unit, and none announced itself — the smaller number is always plausible.

Candidate instrument: a population-check that refuses a rate until the caller states the denominator's source and the tool confirms it read all of it. issue-coverage.py and pr-stack.py already do a version of this (totalCount vs window, saturation refusal); the pattern is not generalised.

⚠ 4. Six panes' self-reports were wrong until the grep was mandatory

Filed as #532 with the detail. Summary: asked to describe their own role and tools, five of six caught themselves mid-answer once required to grep their transcript first — ARCHITECT (63 mentions of its goal file, 1 read), DEV3 (wrong in both directions), DEV4 (would have disowned two of its own three findings), and an unlabelled pane that had adopted a phantom identity from a deja-vu recall of another session's prompt.

⇒ The measured gap in the prompts themselves, by grep -ci:

                auto-wake   "Read tool"   retract   cross-session   BLOCKED
DX.md               0            0           0            1            8
DEV.md              0            0           0            0           10
ARCHITECT.md        0            0           0            0            8

The mechanism that drives every pane appears zero times; BLOCKED appears 8–10× and is dead in both directions.

⚠ 5. Two probes I handed six panes were defective

  • head -40 $T | grep 'You are X' — matches deja-vu recall blocks quoting other sessions' prompts. Falsely labelled two unlabelled panes ARCHITECT.
  • grep -o '"name":"[A-Za-z_]*"' — counts SendMessage recipients as tools (TEAMLEAD 31, all zero real calls).

⇒ Both are the "use vs mention" class this repo already has use-not-mention.py for. ★ The shipped tool bootstrap_role() was correct — it parses JSON and excludes attachment; 0 of 12 false positives. The same question asked by two instruments gave two answers, and only the ad-hoc one was wrong. ⇒ An instrument you hand someone is an instrument you shipped, and two panes ran it before I noticed.


What I would do first

  1. Wire the 43, advisory-first. One workflow, report-only, per-instrument opt-in to gating. This is the highest-value item and it is mechanical.
  2. Make every fleet-enumerating tool name its registry. One line each; prevents the class of error in §2.
  3. Generalise the saturation refusal already in issue-coverage.py / pr-stack.py into something reusable, per §3.

Limits. §1 counts invocations from .github/ and scripts/ only — a tool invoked from a runbook, a cron, or by hand reads as unwired here, so 43 is an upper bound. §3's table is four instances I happened to catch; I did not sweep for others. All figures are a photograph at ~08:2xZ 2026-08-23.

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