Files
thePR0M3TH3ANandClaude Opus 5 72b3e52f50 Delete 38 assertions that were never necessary, and the bug one was hiding
I expected the 35 remaining findings to need a VaultIndex remodel. They did
not. `vaultIndexSchema` and every entry schema are `.loose()`, which already
gives both types an index signature — so `index["_system"]`, `entry["label"]`
and assignment to `Record<string, unknown>` all compile with no cast at all. I
checked before rewriting anything, and the answer was that 38 of the 44 were
simply redundant, copied from each other rather than needed.

That is the linter's real value here: it did not find a design flaw, it made
me test an assumption I would otherwise have acted on. The remodel would have
been work done to satisfy a belief that was false.

Removing them let the compiler see three things the casts had been hiding:

- `nextTotpIndex` filtered on `type === "totp" || kind === "totp"`, and TS
  reported the second half as unreachable. It is: withKind() populates kind
  from type at parse time and the union is discriminated on kind, so the
  fallback could never fire. Now filters on the discriminant alone.
- `ensureIndex0Payload` always ran normalizeIndex0 and then returned `Dict`,
  throwing the guarantee away, so all three callers asserted it back with
  `as unknown as Index0`. It now returns an `Index0Payload` that carries what
  the function established, built in that shape rather than asserted into it,
  and the type propagates through compactIndex0Payload and
  rebuildCanonicalViewsPayload.
- `sign()` in recoveryDrills declared a DrillRecord parameter it never used
  as one — it HMACs a canonical serialization — which forced the verifier to
  assert a shape it had not established while checking a signature.

Also `rebuildIndex0Checkpoints` typed to the one field it reads, and
console.ts asking `"isTTY" in this.out` rather than asserting a shape onto a
WritableStream.

One assertion remains, in entrySchema, and it is structural rather than
evidential: z.preprocess types its output from an inner union deliberately
wider than Entry, and no zod spelling expresses "parses to a superset, hands
back the narrow type". Disabled inline with that written down.

44 -> 0. The lint step is now in ci_prepush.sh, and the gate runs green in
44.5 seconds. 689 tests still pass.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01Vtx94nXDmNgXEeThUZP4QN
2026-08-20 13:40:42 -04:00
..
2025-07-19 19:11:59 -04:00
2025-07-11 10:41:33 -04:00