fix(sqlite): isolate transactions per request (HC-CORTEX-002) - #452
Conversation
f149b91 to
9faa80d
Compare
HC-CORTEX-002 sealed evidence — readiness decisionThe preregistered 18-cell protocol (
From
The two readiness conditions this PR set for itself ("two clean SQLite ladder runs" and "the matched PostgreSQL reference cell") are met by the sealed evidence. Non-claims stay as declared: macOS host only, same-user local execution, no maturity score, no winner. Decision: promoting this draft to ready-for-review. Merge still requires its own review verdict on this repository; the harness evidence closes the capstone condition, not the code review. |
Resolves the CHANGELOG.md [Unreleased] conflict: main's "### Added" block (HOL scanner, Codex package, package-lock) is kept, and the HC-CORTEX-002 entry joins main's test_pg_schema_provision_live.py entry under a single "### Fixed" heading. No code conflict; the SQLite transaction-isolation diff is byte-identical to 9faa80d. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
ZETETIC-REVIEW: APPROVE Revue de code — PR #452 « fix(sqlite): isolate transactions per request (HC-CORTEX-002) »Commit de tête revu : VerdictAPPROVE. Aucun constat bloquant. Deux issue-candidates non bloquants (dette préexistante, ni introduite ni aggravée par ce diff) et un nit couvert par une clause de non-garantie explicite de l'ADR-0055. Périmètre revuDiff Calibration des enjeux (Move 7)Classification : High. Le diff touche la primitive de concurrence/transaction de la couche de stockage et le chemin de composition MCP central ( Vérification du câblage handler → production (exigée explicitement)
Conclusion : le correctif est bien câblé jusqu'au chemin de production — vérifié par lecture complète du fichier
Constats détaillés (file:line, sévérité, confiance)BloquantsAucun. Should-fixAucun. Nits
Issue-candidates (dette préexistante, ni introduite ni aggravée par ce diff — non bloquant, périmètre de revue = le diff)
Audit SOLID (Move 2) — synthèse
Adéquation des tests (Move 4)15 tests neufs (4 dans Jugées mutation-résistantes par raisonnement qualitatif (pas de mutateur configuré dans le dépôt) : les assertions sur compteurs exacts (0/1) et types d'exception exacts résisteraient à des mutations plausibles (inversion de Vérification adversariale (CR-4, avant tout APPROVE)
Aucun constat bloquant confirmé sur les quatre focales → APPROVE licite. Move 0 — Réconciliation et anti-esquive (§13.2 + §14)
Sécurité et hygiène (Move 6)Aucune entrée utilisateur non validée dans ce diff (plomberie interne de connexion). Aucun secret, aucune donnée sensible journalisée. Portée de commit unique (isolation transactionnelle). ADR-0055 sourcé (citations précises de la documentation Python Sorties brutes des gates (exécutées dans le worktree
|
…ner CI, registry-complete Codex package (#456) Moves all 16 version surfaces (scripts/check_version_surfaces.py) from 4.18.0 to 4.19.0 and dates the Unreleased CHANGELOG section. Contents since v4.18.0: #452 (HC-CORTEX-002, SQLite transaction isolation per request), #454 (HOL plugin scanner workflow, registry-complete Codex package, package-lock.json surface, test-role password literal), plus the Dependabot bumps #432-#441, #450, #451 and the rank badge refresh #453. Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Summary
Fixes the locally reproduced cross-request SQLite transaction interference tracked by HC-CORTEX-002.
The previous fallback store shared one process-wide connection with thread checks disabled. A concurrent acknowledged request could therefore commit unfinished writes from a rejected supersession. This change gives active execution threads separate native handles, tracks the exact handles used by a handler and nested offloads, finalizes unfinished work at the request boundary, quarantines failed cleanup, and releases non-anchor request handles. It also freezes relative database paths at construction and fails closed if the last named-memory keeper cannot roll back.
This is deliberately a draft. It proves the local correction and regression slice only. HC-CORTEX-002 remains pending until the preregistered SQLite ladder has run twice and the matched PostgreSQL reference cell has been published.
Type of change
Test plan
Frozen local evidence
Audit notes
Coding-standards compliance
Breaking changes
None declared. Nested safe-handler scopes now fail closed because independent nested request transactions are unsupported; registered MCP handlers do not use that pattern.
Screenshots / logs
No UI surface changed. Raw benchmark artifacts will be published by harness-comparison after preregistration, not embedded post hoc in this source PR.
Reviewer checklist