Commit Graph
9 Commits
Author SHA1 Message Date
Cline 00daa6b903 docs: update project-status with completion of bounded catalog contract and explicit grouping 2026-10-18 17:55:35 -05:00
Cline 9dd8c07e66 docs: add issue/evidence reconciliation table (2026-10-14) 2026-10-13 20:22:15 -05:00
Cline 4d10f4fb2b docs: update project-status with merge and issue closure (2026-10-14) 2026-10-13 20:14:18 -05:00
Cline 46d347b2d2 docs: update project-status with integration status (2026-10-14) 2026-10-13 19:45:48 -05:00
Cline a829d6e8c6 feat: catalog shared contracts (Tasks 1-4)
Task 1: Establish catalog identity and atomic file ownership
- CatalogService, CatalogServiceInterface, ModelMetadata DTO
- PdoCatalogRepository with atomic operations, savepoint support
- FOR UPDATE file locks in ascending order, FOR NO KEY UPDATE for metadata
- FK-compatible lock composition documented (spec §6)

Task 2: M3 import & indexing engine delivery layer
- ImportService, ImportWorker with durable collision handling
- SpaceChecker, StreamingHasher, VerifiedCopier, StlValidator
- FileEnumerator, LocalFilesystem, PathSafety
- Console command wiring via ContainerWiringTest

Task 3: Importer integration and repair
- LegacyGuessedImportGroupingAdapter isolates first-directory guessing
- ImportService uses adapter; ImportWorker uses CatalogServiceInterface
- Null owners remain null; DomainException mapped to CATALOG_CONFLICT
- SQL failure after registration/path update with caller sentinel rollback

Task 4: PostgreSQL contention evidence and bounded acceptance
- 6 new PostgresCatalogContractsTest cases with independent sessions
- Generated schemas, 250ms lock timeouts, 5s statement timeouts
- Ascending file locks, FOR SHARE contention, stale-owner rejection
- Rollback/retry, nested transaction survival, root creation contention
- Negative controls: replay FOR UPDATE removal (11 failures), metadata FOR UPDATE (4 FK KEY SHARE timeouts)
- Fresh Docker PostgreSQL 17 / PHP 8.4.26: 473 tests, 2718 assertions, 10 skips, exit 0

All local: 474 tests, 2347 assertions, 54 skips, foundation/lint clean.
2026-10-13 19:41:03 -05:00
Cline 6b9fb54b4f feat: establish catalog identity and atomic file ownership 2026-10-12 19:38:38 -05:00
Cline 390a7a557a docs: reconcile milestone acceptance and propose catalog core design 2026-10-12 13:58:24 -05:00
Cline c1ef2ee97a test: validate M3 imports and locking on PostgreSQL
Add isolated PostgreSQL fixtures, two-session locking coverage, and a disposable remote Docker test runner. Correct the canonical-root fixture and document verified SQLite and PostgreSQL results.
2026-10-12 13:19:10 -05:00
Cline 9d277d9e72 feat: M3 import & indexing engine delivery layer with durable collision handling, space checking and console 2026-10-12 11:29:17 -05:00