refactor(surface): delete twelve modules stranded by the barrel tiering - #643
Conversation
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 7a96f33e
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-18T20:06:39Z
|
@tangletools review now |
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 7a96f33e
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-18T20:06:58Z
0.145.3 tiered the root barrel to consumer-imported symbols and documented front doors. Twelve modules lost their last export path in that pass and kept their source files. Each one is unreachable from all 28 build entry points, so none has shipped in dist for three published versions, and the only importer each retains is its own test. Deleted with their tests: reviewer, analyst/knowledge-capture, multi-toolchain-layer, dual-agent-bench, workspace-inspector, golden-matcher, ui-finding, slo, adapters/langchain, judge-runner, cost-report, worker-driver-seed. The public export surface does not move: a build of the parent commit and a build of this commit both declare 3,447 export entries, and the two lists are identical. dist loses 753 bytes, all of it doc-comment text that named a deleted symbol. Four doc comments named a deleted symbol and now describe the surviving behaviour instead: multi-layer-verifier (twice), fuzz/types, contract/self-improve, plus the docs/feature-guide feature map. fuzz/explorer-cost asserts the ledger total directly rather than through the deleted cost-report projection. Evidence for the deletion: 106 canonical checkouts under ~/code, 98 after deduplicating by origin remote, each fetched and grepped at refs/remotes/origin/HEAD on word boundaries. 84 clean, 12 hits, 1 self, 0 unresolved failures. Eleven of the twelve hits define the name locally or import it from their own module. The twelfth, starter-foundry, imports runAssertions, WorkspaceAssertion and WorkspaceSnapshot from this package while declaring no dependency on it, and has been incompatible since 0.145.3 removed them from dist. Eleven published dependent tarballs at current latest were extracted and grepped with 0 extract failures; starter-foundry is the only hit.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 7fd1dfec
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-18T20:20:46Z
Version locked across package.json, clients/python/pyproject.toml, clients/python/src/agent_eval_rpc/__init__.py and clients/python/uv.lock. The analyst dependency-lock digest is repinned because all four manifests it covers moved. The implementation digest does not move: the deletion touched no file in the analyst benchmark manifest.
7fd1dfe to
347d934
Compare
|
@tangletools review now |
✅ No Blockers —
|
tangletools
left a comment
There was a problem hiding this comment.
✅ Approved — 4 non-blocking findings — 7a96f33e
Full multi-shot audit completed 8/8 planned shots over 11 changed files. Global verifier still owns final merge decision.
Full immutable report for this review: trace
Summary comment for this run: full summary
tangletools · 2026-08-18T20:36:23Z · immutable trace
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 347d9345
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-18T20:42:39Z
✅ No Blockers —
|
tangletools
left a comment
There was a problem hiding this comment.
✅ Approved — 6 non-blocking findings — 347d9345
Full multi-shot audit completed 8/8 planned shots over 11 changed files. Global verifier still owns final merge decision.
Full immutable report for this review: trace
Summary comment for this run: full summary
tangletools · 2026-08-18T21:22:05Z · immutable trace
tangletools
left a comment
There was a problem hiding this comment.
🟢 Value Audit — sound
| Verdict | sound |
| Coverage | 1 of 2 lenses (usefulness) |
| Concerns | 1 (1 weak-concern) |
| Heuristic | 0.0s |
| Duplication | 0.0s |
| Interrogation | 903.6s (2 bridge agents) |
| Total | 903.6s |
⚠️ Partial audit — the verdict covers only usefulness. value: agent returned no usable verdict. Treat the missing lens as unexamined, not as clear.
💰 Value — error
value agent produced no parseable value-audit JSON.
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 2
- Bridge error: opencode/kimi-for-coding/k2p7: opencode: opencode error
🎯 Usefulness — sound
A verified-clean deletion of twelve zero-importer modules that completes a pass this repo already ran, with the export surface provably unmoved and every collateral edit (doc fixups, test rewrite, lock digest) consistent with the deletion and version bump.
- Integration: Deletion-only change; nothing new to integrate, and I verified reachability of the removal itself. All twelve modules have zero remaining importers: grep for module paths and exported symbols across src/, tests/, clients/ returns clean (the 30 word-hits for 'reviewer' are generic prose, none are imports). None of the deleted files appear in the 28 build entries (tsdown config), the root barrel (sr
- Fit with existing patterns: Fits the codebase's established grain exactly: the PR body cites #581's sibling commit deleting 30 zero-importer modules in the same barrel-tiering pass, and this finishes the set. The four surviving-file edits follow that same pattern — they strip doc-comment references to deleted symbols (src/contract/self-improve.ts:144, src/fuzz/types.ts:309, src/multi-layer-verifier.ts) rather than leaving da
- Real-world viability: Verified against the real artifacts: pnpm typecheck passes; pnpm build completes (needed RAYON_NUM_THREADS=1/GOMAXPROCS=1 only because this audit sandbox caps OS threads — an environment limit, not a code issue); the PR-rewritten src/fuzz/explorer-cost.test.ts passes; the two failures in benchmark-implementation.test.ts are the same sandbox thread cap hitting their tsgo subprocesses, unrelated to
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 1
🎯 Usefulness Audit
🟡 explorer-cost test rewrite asserts strictly less than the deleted costReport assertion [robustness] ``
src/fuzz/explorer-cost.test.ts:94-98 replaced
expect(costReport(ledger).perModel).toEqual([{ model: 'gpt-4o', usd: 1, entries: 2, unpriced: false }])with an inlinesum(entry.costUsd) === 1. The old form also pinned per-model rollup, entry count, and the unpriced flag; the new one only checks the total. Coverage nit only — CostLedger itself retains its own tests — and it does not gate shipping. Also note the PR-body claim 'the only importer each module retained was its own test' is slightly
What this audit checks
It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.
| Pass | What it asks |
|---|---|
| Heuristic | Vague title? Whitespace-only or cruft-bearing diff? (content signals only) |
| Duplication | Do added function/class names already exist elsewhere in the repo? |
| Value Audit | What does it do? What goal does it achieve? Is it good? Better architecture or already-exists? |
| Usefulness Audit | Does it integrate and fit? Will it hold up in real use and actually get used? |
Findings are concerns, not blocks — the human reviewer decides what to do with them.
What
0.145.3 tiered the root barrel to consumer-imported symbols and documented front doors. Twelve modules lost their last export path in that pass and kept their source files. This deletes them with their tests, and cuts 0.148.0.
reviewer,analyst/knowledge-capture,multi-toolchain-layer,dual-agent-bench,workspace-inspector,golden-matcher,ui-finding,slo,adapters/langchain,judge-runner,cost-report,worker-driver-seed.This completes a pass this repository already ran: #581's sibling commit deleted 30 zero-importer modules outright. These twelve have zero importers and were left behind.
The public export surface does not move
A build of the parent commit (0.148.0,
99ed9b8) and a build of this branch each declare 3,447 export entries, and the two lists are identical.distloses 753 bytes across the same 107 files — all of it doc-comment text that named a deleted symbol. The modules themselves were never indist.Evidence for the deletion
Each module is unreachable from all 28 build entry points, so none has shipped in
distsince 0.145.3 — three published versions. Verified directly against published tarballs: every listed symbol is present indistfor 0.135.1, 0.140.1 and 0.143.0, and absent for 0.145.3 and 0.147.0.The only importer each module retained was its own test.
Canonical checkouts. 106 under
~/codewith.gitas a directory, 98 after deduplicating by origin remote. Each fetched, then grepped atrefs/remotes/origin/HEADon word boundaries. 84 clean, 12 hits, 1 self, 0 unresolved failures. One repository initially failed to fetch (persona-labs-sdk); it has no origin remote and nopackage.json, and its sibling fetched clean.Eleven of the twelve hits define the name locally or import it from their own module —
blueprint-agenthas its own./shot-reviewer/contextand./toolchain-adapters,agent-runtimedefines its ownUI_LENSES,supervisor-labits ownmatchGoldens.Published dependents. 11 tarballs at current latest, extracted and grepped, 0 extract failures. One hit.
The one real finding
starter-foundryimportsrunAssertions,WorkspaceAssertion,WorkspaceSnapshotandfileExistsfrom this package and pins it to exactly0.135.1(indevDependencies). At that pin those symbols still exist, so it builds today and this PR does not change that.The constraint it already carries is narrower: it cannot move past 0.145.3 without porting them, and that predates this PR by four releases. Recorded in the CHANGELOG migration note.
(Corrected during review — an earlier revision of this description said starter-foundry declared no dependency at all. That check read only
dependenciesandpeerDependenciesand missed the devDependency.)Release
Cuts 0.149.0. (An earlier revision of this branch cut 0.148.0; #641 took that number while this PR was in review, so the branch was rebased onto it and the release renumbered. The deletion commit cherry-picked clean — no code changed in the rebase.)
Proof
Version locked across
package.json,clients/python/pyproject.toml,clients/python/src/agent_eval_rpc/__init__.py,clients/python/uv.lock. The analyst dependency-lock digest is repinned (all four manifests it covers moved); the implementation digest does not move, because the deletion touched no analyst benchmark file.