refactor: modernize TypeScript and Biome policy - #44
Merged
Conversation
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit cb41b1c94292094ea43e916a854e9af2765ae9fc) (cherry picked from commit 305ddd58a554a08991686eda33a6408045ae2c3d)
…ration 0, bound recovery-first starvation Fix A: the terminal fold's generation-match gate treated every NULL manifest_generation stamp as historical, even for connections whose durable generation has never advanced past 0 — the only generation such pre-provenance history could ever belong to. The gate now accepts NULL as generation-0 evidence exactly while the connection has never advanced; a genuine transition (generation >= 1) still refuses NULL and mismatched stamps forever. STREAM_FACTS_FOLD_LOGIC_VERSION bumps 3 -> 4 so every stored terminal map replays under the corrected rule via the existing version-behind self-heal — no data migration. Fix B: resolveRecoveryFirstMode's implicit-unscoped branch had no forward bound, letting an unbounded non-pressure recovery backlog starve forward (fact-carrying) collection indefinitely. Adds a forwardEvidenceDebt input (debt = terminal facts not current, or aged past max(4 * scheduleIntervalMs, 1h)) consumed at both the scheduler dispatch governor and the controller's manual runNow seam, each reading the connection's own durable evidence via a fail-closed probe. Explicit recoveryOnly/scoped-resource precedence is unchanged. Adds the OpenSpec change fix-pre-provenance-terminal-generation-semantics with both requirements, SQLite/Postgres parity tests for the fold generation transition and straddle cases, a recovery-decision truth table, and dispatch-governor debt-bound cases. A pre-existing, orthogonal defect was found and pinned (not fixed, out of scope): a generation transition with zero new terminal events since the boundary incorrectly reports terminal_facts.state=current instead of preserving the transition's historical write. Reproduced with this commit's changes fully reverted. Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit e712d63779d9c649c51caf54642a3bb4d574988c)
…ero-new-event generation transition Correction to the prior commit on this branch. The fold's write phase defaulted an instance's generation-currency verdict to true whenever no qualifying terminal event was read for it this pass (`generationCurrentByInstance.get(instanceId) !== false`, true on a missing map entry) — so a connection whose evidence had just been durably marked historical by a genuine manifest-generation transition (`terminal_facts_historical` / `manifest_generation_changed`), with no new terminal events since the boundary, silently healed back to `current` on the very next converged fold pass instead of preserving the transition's write. seedFoldState now seeds each participant's generation-currency verdict from its own incoming terminal_facts_reason_code: false only for the two genuine generation-refusal reasons (terminal_facts_historical, manifest_generation_changed), true otherwise — including the orthogonal terminal_fold_incomplete case (a still-in-progress budgeted replay of a generation-CURRENT row), where seeding false would have frozen the checkpoint and broken the bounded-resume convergence contract (caught by connector-summary-evidence-fold-budget-resume.test.js during verification and fixed in the same pass). Replaces the two "KNOWN BUG" assertions (SQLite + Postgres) in spine-events-connector-instance-id-backfill.test.js with assertions for the correct stale/terminal_facts_historical behavior. No broader refactor. Re-ran only the discriminating fold/generation/ recovery test files (13 files, 167 tests, both backends) plus typecheck, strict OpenSpec, git diff --check, and touched-file lint — all clean, zero new findings. Did not repeat the full suite per instruction. Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit f4e436c8ad37541a61a419d7e6578785aaf10db7)
…, never vetoes recovery into a do-nothing tick Fixes two P1 defects found by Fable's adversarial re-review of commits 395f1689/72bfb5b9 (PART 2, execution-confirmed repros). P1-A: hasForwardEvidenceDebt read terminal_facts.as_of, which is row.computed_at — the projection's own observation/repair timestamp, refreshed by the very reconcileDirtyConnectorSummaryEvidence call each probe site makes immediately before the read. This made the bound unable to fire once evidence healed to `current` (e.g. via Fix A), regardless of how stale the underlying terminal event actually was — a no-op in the exact scenario that motivated Fix B. The predicate now takes the whole evidence row and derives the newest per-stream `evidence_as_of` from `stream_latest_facts` (stamped once at fold time from the terminal event's own occurred_at, never refreshed by later observation); a current-but-empty fact map is also debt. One canonical shape threaded through all three probe sites (scheduler dispatch governor, both scheduler wiring sites, controller runNow). P1-B: the dispatch governor's debt branch only suppressed recovery-only; `eligible` stayed gated by the failure-backoff/cooldown check computed earlier. When the recovery cadence had elapsed but a failure-backoff-inflated forward-walk interval had not — the exact live deadlock shape the surviving legacy test documents — a debt-true tick dispatched neither recovery nor forward. Debt now selects forward only when forward dispatch is otherwise permitted; when it is not, the governor falls back to recovery-only on its own independent cadence, exactly as if no debt were present. The controller seam needed no change (runNow has no separate forward-eligibility gate to bypass). OpenSpec: rewrote the recovery-first requirement to state the corrected predicate shape and the otherwise-permitted fallback; added a scenario pinning the zero-new-event post-transition resting state (stale/historical until a new-generation fact-carrying event, distinct from a genuinely never-collected connection's checkpointed-empty current state) and fixed the contradictory comment in rowNeedsFoldParticipation; added a requirement spec-pinning the existing fail-closed-to-no-debt probe-error degradation as an observable-but-logged residual (no new escalation subsystem this tranche, per explicit scope). Tests: lifted both of the review's execution repros into permanent regressions (dispatch-governor do-nothing case; a new forward-evidence-debt-wired-probe.test.js exercising the real reconcile-then-read pipeline old/fresh/empty-evidence, SQLite + real Postgres); rewrote recovery-decision.test.js's hasForwardEvidenceDebt unit cases against the real evidence-row shape (including a multi-stream newest-wins case); repaired controller-run-now-state-namespace.test.js's seedCurrentRecoveryConnection fixture, which had fabricated a `current` evidence row with no backing terminal event — the fold's own bootstrap logic wipes such a row, and under the corrected predicate an empty fact map is debt, so the fixture now seeds and folds a real terminal event. Verification: two lifted repros, 13 discriminating files (14 with the new probe file) run sequentially against a genuinely fresh, uniquely- named ephemeral Postgres container (the shared dedicated test container was stopped for the duration, never written, and restarted unchanged afterward — no shared-DB mutation), tsc --noEmit, strict OpenSpec validate, git diff --check, touched-file lint (11 findings, identical in category/location to the pre-change baseline). No full suite re-run per instruction. Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit 7868d1c3b383f8cd40ebb686ca335b2ba525e637)
…o the Collection Report read-side overlay
Fable's live residual diagnosis (PART 4, post-deploy audit against
7868d1c3) isolated a distinct, pre-existing read-layer defect that
produces the same runtime_evidence_missing symptom the landed
generation closure (e712d637/f4e436c8/7868d1c3) already fixed at the
store layer. resolveEffectiveStreamFacts (ref-control.ts) overlays a
classifying run's own per-stream facts onto the durable latest-attempt
store, and the classifying run unconditionally won for any stream it
attempted — even when its own fact does not prove durable coverage and
the stored fact already does. Both ChatGPT connections' most recent
terminal run is a run.failed whose own facts read not_staged for all
six streams; the durable store (healed by the landed fix) already
holds committed checkpoints for all six from the last succeeded run.
The classifying run's not_staged facts shadowed the stored committed
facts, so the served Collection Report read unknown/unmeasured even
though the store itself read complete — the same "connection-health
runtime_evidence_missing defect class" the fold's own
mergeEventStreamFacts monotonicity guard already defends against one
layer down.
resolveEffectiveStreamFacts now enforces the identical floor: a
classifying fact may shadow a stored fact for the same stream unless
the stored fact proves durable coverage (checkpoint committed or
disabled) and the classifying fact does not — in that case the stored
fact and its own provenance (evidence_as_of, run_id) are kept instead.
A classifying fact that itself proves durable coverage still replaces
the stored fact normally (forward progress unaffected); a stream with
no durably-proven stored fact is unaffected by the floor (a
never-proven stream keeps surfacing its newest, possibly unresolved,
attempt). Reuses the existing checkpointProvesStreamCoverage boundary
rather than inventing a new predicate. Rewrote the misleading doc
comment ("the classifying run wins for streams it attempted") to
describe the floor.
Two pre-existing tests in collection-report-projection.test.js had
pinned the buggy shadowing behavior as "existing behavior unchanged" —
both are the exact failed-preprogress shape (not_staged classifying vs.
committed stored) and now assert the corrected floor. Added: forward
progress (a newer proving classifying fact still replaces stored
proof), never-proven stream (an unresolved classifying attempt still
replaces an unresolved stored fact — the floor is not a green-wash),
and proof-predicate parity (a stored `disabled` checkpoint proves
durable coverage exactly like `committed` at this third site,
mirroring the store-layer fold guard and connector-coverage-policy.ts's
checkpointProvesCoverage).
Also closed the incidental latent P3 Part 4 flagged: deriveGapFreeStreamCoverageCondition
treated an undefined (not null) considered denominator as a known
denominator, which could read a zero-collected fact as complete.
Unreachable via the typed read path (readRuntimeCollectionFact always
normalizes to number | null) but a one-line defensive `?? null`
normalization with a direct test closes it without new abstraction.
OpenSpec: extended fix-pre-provenance-terminal-generation-semantics
with an ADDED requirement for the read-side floor (three scenarios:
failed-classifying-cannot-unprove, forward-progress-unblocked,
never-proven-not-frozen), updated the proposal's Why/What
Changes/Impact, and added tasks 2A/2B.
Hygiene correction (independent LAND gate): two comments cited a
stream-facts-checkpoint-proof-parity.test.js that does not exist in
this repo — one pre-existing (connector-summary-read-model.ts, the
factCheckpointProvesDurableCoverage docstring) and one introduced by
this change (collection-report-projection.test.js, the proof-predicate
parity test). Both now cite the tests that actually pin the
committed/disabled checkpoint-proof boundary at each layer:
connector-summary-stream-facts.test.js's "monotonic guard" cases
(store layer) and connector-coverage-policy.test.js (coverage-
derivation layer). No behavior change, no new test file.
Verification: focused tests only (226 passing across
collection-report-projection, collection-report-projection-e2e,
connector-coverage-policy, slack-collection-report,
stream-evidence-shipped-manifests, ref-connectors-connection-projection,
ref-connectors-local-coverage-green, connection-health-acceptance —
all SQLite, no Postgres/live/shared DB touched), tsc --noEmit, strict
openspec validate, touched-file lint (16 pre-existing findings,
identical count/category to the unmodified baseline — zero new), git
diff --check. The hygiene correction re-ran only the directly named
parity tests (connector-summary-stream-facts.test.js,
connector-coverage-policy.test.js, collection-report-projection.test.js
— 94 passing) plus git diff --check. No process, database, or
credentials touched; no pushes/deploys.
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
(cherry picked from commit 9b9d803ec21fc2b0b333c449f7298e71aa934cbc)
…tates the page Saved live evidence (run_1784062643752) showed the USAA transactions export ladder losing its page before a durable structural fixture could be captured. Reading driveExport's dialog-not-open branch found the concrete cause for that one phase: openExportDialog pressed Escape to dismiss the dialog before its caller ran the checkpoint capture, so the capture could observe an already-mutated surface. Thread options into openExportDialog and capture before Escape instead of after return. Added a mutation-grade test that fails against the pre-fix call order (Escape before capture) and passes against the fix. No change to export_affordance_missing classification, other checkpoint labels, or Chase, which required no code change (its parse-first fix is already correct and tested; only live post-deploy acceptance evidence is missing). Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit 8ebd11911d3f1daec0bec18d38e8cce860171a74)
…chment and Amazon order-item recovery Live-instance investigation on pdpp-postgres-1 found the two already-landed recovery changes (fix-gap-recovery-page-starvation, add-connector-neutral- recovery-governor) correctly implemented but with two residual defects keeping real work stranded: 1. Gmail attachments: a subset of pending gaps pinned past the quarantine no-progress threshold, untouched for days while the rest of the backlog kept cycling. The aging-bucket selection rank (attempt_count - age_bonus, age_bonus capped at 8 buckets) has no ceiling on attempt_count, so a row repeatedly re-attempted past the quarantine threshold sinks to a permanently-worsening rank and is never selected again — which also means it can never reach quarantine evaluation. Fixed by clamping the attempt_count term at the quarantine threshold in both SQLite and Postgres listPendingGaps ORDER BY. 2. Amazon order_items: health stuck degraded/partial indefinitely despite the recovery governor reporting zero pending work: the connector's forward walk re-fetched detail for every listed order on every run (current year never freezes), burning its per-run budget on already- covered orders instead of new ones. Fixed by tracking hydrated order ids in the orders STATE cursor and skipping already-covered orders. Both fixes are additive, proven mutation-resistant (each new test fails on the pre-fix code), and pass full verification. Revision (independent gate review, same branch, same design): an adversarial review found the first-cut Amazon fix had a confirmed data regression — the already-hydrated skip still let the order flow through the existing orders-stream fingerprint gate with detail:null, silently downgrading already-good enriched records (recipient/payment/status_detail nulled) on the very next run. The proof was also effectively permanent (no re-hydration after a real list-surface change) and unscoped by wantsItems (an orders-only run could falsely mark order_items covered). The review also found the Postgres half of the Gmail rank-clamp fix had zero test coverage (the live incident instance runs Postgres) and the all-frozen trailing-STATE guard's comment overclaimed what it covered. This revision closes all of that: - Promotes the known-hydrated store to Record<orderId, listSurfaceFingerprint> (reusing the existing recordFingerprint primitive). A fingerprint match skips the fetch AND skips re-emitting either stream entirely (no downgrade possible — nothing is re-emitted). A fingerprint mismatch invalidates the entry and fully re-hydrates both streams, so detail-driven fields never go stale behind a permanent proof. - Gates the forward-walk write on wantsItems, mirroring the recovery pass's existing scope gate, so an orders-only run can never fabricate order_items coverage. - Adds the Postgres twin of the rank-clamp regression test (dedicated throwaway Postgres container, live database untouched), independently verified to fail when only the Postgres clamp is reverted while the SQLite twin stays green. - Replaces the years.length===0 trailing-STATE guard with an ordersStateEmitted flag (extracted as the pure, testable shouldEmitTrailingOrdersState), correctly covering "every planned year was frozen" (years.length > 0, loop never emits) which the old guard missed. - Adds mutation-grade regressions for every fix above, each independently verified to fail pre-revision and pass post-revision. - Recovery-path hydrations no longer fabricate known-hydrated proof (the recovery path has no list-page row to fingerprint against); the next forward walk establishes real proof normally. Updates fix-gap-recovery-page-starvation and add-connector-neutral-recovery- governor OpenSpec changes: corrected proof semantics, new scenarios, the near-miss on record, and task sections for both the original diagnosis and the gate-review revision. Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit 5b2b0d55fa5b05ab53577a0f030fbc1d63ea4916)
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
…e promotion pendingBrowserSurfaceLaunches is an in-memory Map cleared on every process restart. A waiting_for_browser_surface lease queued before a restart has no surviving Map entry, so promoteBrowserSurfaceLease fell through to an empty options object and runNow defaulted connectorInstanceId to connector_id — resolving credentials and sync state against the wrong (default) connection. Restore connectorInstanceId from the persisted lease's surface_subject_id (falling back to connector_id for connector-wide runs), mirroring the existing inverse encoding in acquireInitialBrowserSurfaceLease. Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Compose the TypeScript 7 and Next.js 16.3 canary upgrade with the Node 26 type declarations and test annotations it requires. Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit cee333c5f2e3cdfcd6270d43f39c4c3b93e0d648) Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
…-health-audit .mjs target reference-implementation/test/fleet-health.test.js and reference-implementation/server/index.js both import scripts/stream-health-audit/audit.mjs, which the merged root-script migration deleted (renamed to audit.ts). Neither file existed yet on the root migration branch's own history, so its own caller-edge sweep could not have found them; they only surface now that both branches are integrated. Both files already import other .ts modules directly, confirming they already run under --import tsx. Assisted-by: Claude <noreply@anthropic.com> Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
mcp-server's own separate TypeScript migration (already on this branch's history before this reconciliation) renamed packages/mcp-server/test/ *.test.js to *.test.ts and smoke-stdio.mjs to smoke-stdio.ts, but test-accounting.manifest.json's mcp-server suite entry was never updated in lockstep -- confirmed byte-identical on pre-merge HEAD (0122bab), so this is a pre-existing defect unrelated to the root-script reconciliation, surfaced only because this session needed a full pnpm test-accounting:inventory run to prove the merge didn't regress selection authority. Assisted-by: Claude <noreply@anthropic.com> Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
…t gate 1. scripts/check-railway-template-artifacts.test.ts (Blocker 1): the merge's modify/delete conflict resolution took the root branch's .ts rewrite verbatim and silently reverted CURRENT's (0122bab) GHCR org rename (vana-com -> pdp-connect). Ported CURRENT's fix onto the .ts file: GHCR_VANA_COM_RAILWAY_CORE_PATTERN -> GHCR_PDP_CONNECT_RAILWAY_CORE_PATTERN, pattern updated to /ghcr\.io\/pdp-connect\/pdpp\/railway-core/. 10/10 tests now pass in this file (previously 7/10). 2. scripts/test-accounting/inventory.ts EXECUTABLE_SMOKES (Blocker 2): the prior mcp-server manifest-glob fix restored 22 of 23 mcp-server test files, but packages/mcp-server/test/smoke-stdio.ts was still classified helper-or-fixture (EXECUTABLE_SMOKES still held the deleted .mjs name), so it was include-matched but never planned or executed -- silently, since the suite as a whole no longer selects zero files. Repointed EXECUTABLE_SMOKES at the .ts path and fixed the now-vacuous assertion in inventory.test.ts:236 that classified a path which no longer exists. Added validateIncludeGlobsClassifyExecutable, a fail-closed oracle wired into checkInventory's --check path: every suite's include list (as a whole) must match >=1 tracked file, and every include-matched file must classify executable. Scoped per-suite rather than per-glob so ri-default's deliberate multi-extension (.js/.mjs/.ts) future-proofing globs -- which legitimately match zero files today -- do not false-positive. Three new regression tests reproduce the exact defect shape (misclassified include-matched file, fully-dark suite, and the multi-extension non-regression case) plus updated the pre-existing "empty suite" test's expected message to match the oracle's earlier, more specific fail-closed point. 3. .releaserc.yaml (Blocker 3): publishCmd still invoked the deleted scripts/semantic-release-github-output.mjs with a bare node invocation. Fixed to `node --import tsx scripts/semantic-release-github-output.ts` (needs the loader since there is no other .ts import in that spawn to carry it). Live release-time ERR_MODULE_NOT_FOUND avoided. Also fixed the 3 cosmetic stale-.mjs-name references the gate flagged (non-blocking, folded in per its own recommendation): the usage comment in packages/mcp-server/test/smoke-stdio.ts, and two apps/console test file doc-comments referencing scripts/manual-action-stream-smoke.mjs. Mechanically swept all 78 .mjs/.cjs files deleted between the merge base and HEAD against every tracked file including dotfiles (not just the migration's own boundary) for stale executable references -- confirmed zero remain outside historical prose in two openspec/changes/**/*.md|json files. Assisted-by: Claude <noreply@anthropic.com> Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Biome's useTopLevelRegex flagged the three inline regex literals added in the prior commit's new fail-closed-oracle regression tests. Hoisted to named module-level constants, matching this file's existing pattern. Assisted-by: Claude <noreply@anthropic.com> Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Complete the repository TypeScript migration, restore behavior lost in the Biome conversion, make test accounting and retained runtime boundaries fail closed, and commit canonical generated artifacts. Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
tnunamak
force-pushed
the
review/typescript-biome-modernization
branch
from
July 28, 2026 21:16
5fc3627 to
a0e612a
Compare
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit 151e830ed252f1c0a09f08d2f0c1653548b2427a)
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> (cherry picked from commit 531aa7d71fe13d9c975821a8dc36623cabb05be1)
Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
tnunamak
marked this pull request as ready for review
July 28, 2026 21:39
This was referenced Jul 28, 2026
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com> Assisted-by: AI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prior art checked
Checks
better-sqlite3opened a database inside the running reference service.pnpm console:buildpassed. The Vercel preview is green.git diff --checkpass.The 25 remaining JS/MJS files are documented and checked. Generated files and captured provider fixtures remain JavaScript by design. Lint exceptions are listed and checked; follow-up policy work is #43. This PR supersedes #28 and #31. It does not authorize a deployment or merge.
Assisted-by: AI