The eight modules under `src/lib/skills/` that import nothing from their
own layer, plus `uiConfig`, which imports only `surfaces`. Renamed and
annotated; no logic touched.
All eight emit byte-identical minified JavaScript, and the production
bundle still hashes to `74d17e2d…`. Four of them are R100 — not one
character changed beyond the extension.
The annotations are four fixes of the same two kinds:
- `Object.entries<any>` / `Object.values<any>` at three sites. Passing
an `any` value to either yields `unknown`, not `any`, because
inference into the union parameter of their signatures does not
distribute — so `weightsOf`'s entries arrived unsortable and two
`reduce` accumulators arrived un-addable. The explicit type argument
restores what JavaScript had. No cast, no runtime change.
- `FlowReply` as `assignmentPreview`'s return type. Two of its five
branches genuinely return no `followUp` — "already fully staffed"
and "nobody is both qualified and free" are answers with nothing to
offer next — so `followUp` is optional, which is what `headcountSet`
has always passed through.
One inert `/** @param {any} */` in `saveFeedback` became a real
annotation. Left as a comment it would have read as if it still did
something.
Measured against `eaa677f`, all unchanged:
typecheck 20 errors, same files
lint exit 0, 0 errors, 289 warnings
npm test 1684/1691, the same 7 failures verbatim
build exit 0, identical bundle hash
emitted JS 8/8 byte-identical
One number moved and it is a reporting artifact, recorded here so it is
not misread next time: ESLint's file count went 269 -> 261. `src/lib/**`
is in `ignores` for both config blocks and always has been, so no rule
has ever run on these files. A `.js` file there is still walked by
ESLint's default `**/*.js` glob and then ignored, which produces an entry
with zero messages; a `.ts` file matches no `files` pattern, so it is
never walked and produces no entry at all. Confirmed directly: linting
`registry.js` reports nothing, linting `yaml.ts` reports "File ignored
because no matching configuration was supplied." Zero rules applied
before, zero after. The counts that carry signal — 0 errors, 289
warnings — did not move.
No baseline artifact touched.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HBG1wnuRfJKCstGB8Fekr8