Document C1 codemod recipe + C6 wave boundaries + N-scan TODO deadlines (T2 iteration)

Address T2 review asks from Karpathy (request_changes) + Jobs
(approve with minor asks) without touching published commits:

- scripts/codemod/README.md (new): records remove-appdatabase-passthrough.mjs
  usage, the completeness proof for METHOD_TO_MODULE (typecheck-clean +
  524 tests green at 118e3d8 = no orphaned call sites), and the sequential
  revert recipe for C1 (3 -> 2 -> 1, not independent because 118e3d8
  bundled vault simplification).

- CONTRIBUTING.md (new): pass-through ban + codemod usage + sequential
  revert recipe + file-size ceiling + C6 wave cap. Whitelisted in
  .gitignore alongside the existing doc exceptions.

- docs/proposals/C6.2-error-taxonomy-phase2.md: wave 2 scope boundary
  names renderer-adjacent / api-server / browser / automation / skills
  explicitly and excludes src/main/database/** + src/main/worker/runtime/**
  (B2 / M10 high-churn zones). Wave 2 and wave 3 each capped at 30
  catch sites so C6 cannot expand without bound.

- src/main/agent-runtime/artifact-projector.ts, runtime-bridge.ts:
  N-scan TODOs now carry a death date ("TODO(M-followup by 2026-05-20)").
  If the date passes without decomposition, a follow-up session MUST
  revisit or justify the exception.

Karpathy T2 asks #1 and #2 (split part 3 / "independent revert" language)
are addressed in CONTRIBUTING + codemod README as documentation, not
history rewrites, because 118e3d8 is already published.

Typecheck clean. No structural code changes; pure docs + comment edits.
This commit is contained in:
ZacharyZhang-NY committed 2026-04-20 13:48:25 -04:00
1 parent 69d03312e6
commit ded707d960
6 files changed
+256 -14

No files matched your search

+25 -7
View File
@@ -77,21 +77,39 @@ Buckets:
**Estimated effort**: 2 days, one PR. Run `pnpm test:eval` and
`pnpm test:unit` after each file. Commit per module.
### Wave 2 — IPC surfaces + service layer (≈90 sites)
### Wave 2 — renderer-adjacent + api-server + browser + automation + skills (≤30 catches)
**Scope boundary (hard)**: Wave 2 covers `src/main/{renderer-adjacent,api-server,browser,automation,skills}/*`
plus top-level `ipc-*.ts` and `*-service.ts` files. Wave 2 explicitly
**avoids** `src/main/database/**` and `src/main/worker/runtime/**` —
those are the high-churn B2 (tasks state-machine) and M10 (agent-runtime
hooks) zones, and overlapping edits produce diff storms that lose both
sides' intent. Database and worker/runtime catches are deferred to
Wave 3 under the coordination gate below.
**Scope cap (hard)**: Wave 2 migrates **at most 30 catch sites**. If the
live count in the listed modules exceeds 30, stop at 30 and move the
remainder to Wave 3. This prevents C6 from expanding into an unbounded
sweep.
Buckets:
| Module | Approx sites | Dominant kind | Notes |
| Module | Approx sites (capped) | Dominant kind | Notes |
|---|---|---|---|
| `src/main/ipc-*.ts` (excl. already-done credentials + support) | ~50 | `user_input` (zod fails), `upstream` (downstream handler fails) | Uniform shape — candidate for a `registerHandle`-level classifier wrapper |
| `src/main/*-service.ts` | ~25 | Mixed | Each service owns one subsystem; classify per service |
| `src/main/automation/**` | ~15 | `recoverable` (rule eval), `user_input` (bad config) | Small; can ride wave 2 PR as final commit |
| `src/main/ipc-*.ts` (excl. already-done credentials + support) | ~15 | `user_input` (zod fails), `upstream` (downstream handler fails) | Uniform shape — candidate for a `registerHandle`-level classifier wrapper |
| `src/main/*-service.ts` + `src/main/api-server/**` | ~8 | Mixed | Each service owns one subsystem; classify per service |
| `src/main/automation/**` + `src/main/skills/**` + `src/main/browser/**` | ~7 | `recoverable` (rule eval), `user_input` (bad config), `upstream` (Electron session) | Small; ride wave 2 PR as final commit |
**Estimated effort**: 2-3 days, one PR with one commit per file group.
**Estimated effort**: 2 days, one PR with one commit per file group.
Depends on Wave 1 only insofar as `registerHandle` wrapper lives in
`ipc-support.ts` and was partially migrated in C6.1.
### Wave 3 — database + credentials + browser + leftovers (≈58 sites)
### Wave 3 — database + worker/runtime + credentials + leftovers (≤30 catches)
**Scope cap (hard)**: Wave 3 migrates **at most 30 catch sites**. Any
residue beyond 30 gets punted to a follow-up proposal (C6.3) rather than
expanding Wave 3. C6 does not get to grow without bound.
**⚠️ Coordination gate (hard)**: Wave 3 touches `src/main/database/**`
(Linus's domain — backup hook, migrations, state-machine work) and