0008: The cleanup after the ports drops the local real-client path and keeps the limit at 3,785¶
Status: Proposed · Oct 28, 2026 · KAN-93 (#23)
Context¶
ADR 0005 closed the post-v0 batch at 3,785 counted lines with none to spare. Its ratification says a line added before #20's ADR is paid for by a line cut, starting with #23's cleanup.
ADR 0005 also left one cut to #23: the local runner's real-client path (claude-code@<version>). ADR 0004 said to drop
it if it never qualified. It has not been run against a live model since the port, and CI never runs it.
Both removals have merged: ai-dlc's evaluation code (ai-dlc#195) and hangar's evals/ (hangar#405, KAN-86). So
ported/ now holds the only copies, and anything in it that nothing calls is dead code.
Options¶
| Option | What it is | For | Against |
|---|---|---|---|
| A. Keep the real-client path | Leave claude-code@<version> in the local backend |
A local model trial stays possible | About 55 unqualified counted lines, a credential and an egress proxy in a fixtures-only backend |
| B. Drop it, keep the limit | The local backend runs deterministic only; LIMIT stays 3,785 |
Frees counted lines for #20's follow-ups; model trials have one home, hangar | A local model trial needs hangar |
| C. Drop it, lower the limit | As B, with LIMIT at the new total |
No headroom at all | The ratification banks cuts to pay for later lines |
Decision¶
B.
- The local backend runs only the
deterministicdriver. Any other harness is refused before anything runs; model trials run on hangar. - Removed with it, in
runners/local.py: the Claude Code stream parser, the credential check and redaction, the run budget and the egress set-up. Measured: 3,785 to 3,719 counted lines (-66). - Removed from
ported/, uncounted (1,795 to 1,237 lines):budgets.py,test_proxy.py, the Claude Code driver, the attempt's egress proxy, credential redaction andevaluate_git_assertion.task import-aidlcmaps those assertions onto specs instead. - ai-dlc contract models no flightdeck path reads are removed, with their schemas. They are
Profile,Event,ReportandBaseImage, and their parts.ScenarioandSuitestay for the importer. - Every remaining file under
ported/is listed as kept, with its caller, inported/__init__.py. LIMITstays 3,785, so 66 lines are banked. Lines added before #20's ADR merges are paid from them.
Consequences¶
--backend localneeds no secret and no network, which matches what it is for: fixtures and CI.ANTHROPIC_API_KEYis gone from the CLI reference;runsrows from a local run set always haveharness = deterministic.- A local model trial would need a new ADR, a qualification run against a live model and its own lines.
- Revisit if hangar can't run a trial that a team decision needs, and only a local run could.