rdmbair15m5-changelog-20260922-0309-dec-20260901-02-rdreceipt-vault-schema-v2
rdmbair15m5-changelog-20260922-0309-dec-20260901-02-rdreceipt-vault-schema-v2
Implemented DEC-20260901-02 Option 1: nullable vault schema for admitted unknowns and migration v2 with field_confidence tracking in RDReceipt.
Summary
Faithfully persists admitted unknowns in SQLCipher vault storage without fabricating today's date or 0.00 totals, matching the PRD contract ("an admitted unknown beats a confident wrong total"). Adds per-field confidence score tracking versioned by extraction source and parser version via MigrationV2.
Scope
- Hosts:
rdmbair15m5(implementation & verification),rdmsm4x(canonical dev root). - Repos:
apps/RDReceipt(git.ecs0.net:git/apps/RDReceipt.git&https://github.com/richhdoty/RDReceipt.git).
Files Touched
Packages/rdRECEIPT/Sources/rdRECEIPTVault/Schema/Tables.swift: Mademerchant_name,transaction_date, andtotal_amountnullable inVaultTables.createReceiptsTable; addedcreateFieldConfidenceTableand indexidx_field_confidence_receipt_id.Packages/rdRECEIPT/Sources/rdRECEIPTVault/Schema/Migrations.swift: AddedMigrationV2_FieldConfidenceAndNullableUnknowns(PRAGMA user_version = 2); registered inSchemaMigrationManager.registeredMigrations.Packages/rdRECEIPT/Sources/rdRECEIPTVault/SQLCipherDatabase.swift: UpdatedhydrateReceiptto handle nullables gracefully; implementedsaveFieldConfidence,fetchFieldConfidences, andgetSchemaVersion().Packages/rdRECEIPT/Sources/rdRECEIPTVault/RDReceiptVault.swift: AddedsaveFieldConfidence,fetchFieldConfidences, andgetSchemaVersion()toEncryptedVaultProtocol.Packages/rdRECEIPT/Sources/rdRECEIPTVault/EncryptedVault.swift: Forwarded field confidence and schema version methods to database actor.Packages/rdRECEIPT/Tests/rdRECEIPTVaultTests/FieldConfidenceAndNullableUnknownsTests.swift: New verification suite covering migration version assertion, confidence scores round-trip, admitted unknowns hydration, and cascade deletion.
Commands Run
swift test --filter FieldConfidenceAndNullableUnknownsTests(4/4 passed)swift test -c release --filter rdRECEIPTVaultTests(62/62 passed in 0.321s)swift test -c release --filter rdRECEIPTParserTests(54/54 passed in 7.286s)bash build.sh(built universal2x86_64+arm64release binaries forrdreceipt,rdreceipt-mcp, andRDReceipt.app)git commit -m "feat(vault): implement DEC-20260901-02 nullable schema and field_confidence migration v2"(0d4c91c)git push origin main && git push backup mainssh rdmsm4x "cd ~/dev/apps/RDReceipt && git pull"(fast-forward to0d4c91c, clean tree)ssh rdmsm4x "cd ~/dev && ./issues/bin/ticket comment DEC-20260901-02 ..."
Verification Evidence
FieldConfidenceAndNullableUnknownsTests: 4/4 tests passed in 0.027s.rdRECEIPTVaultTests: 62/62 tests passed in 0.321s.- Universal2 lipo check:
lipo -archs dist/rdreceipt dist/rdreceipt-mcp dist/RDReceipt.app/Contents/MacOS/RDReceipt-> all reportx86_64 arm64. - Canonical status:
rdmsm4x:~/dev/apps/RDReceiptclean at HEAD0d4c91c. - Ticket status:
DEC-20260901-02resolved with--chosen "Option 1".
How to Undo
- Revert commit
0d4c91c:git revert 0d4c91c - Push revert to
fleetandbackupremotes and pull tordmsm4x.
Outstanding Owner Actions
- None. All tasks completed autonomously.