Repository navigation
feat(history): preserve ordinary durable updates in immutable temporal history - #61
Open
DivyamTalwar wants to merge 1 commit into
Conversation
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.
Original ZIP gap
Implements C03 / GAP-03, refs #52. Stacked on #58 for a reproducible reviewed sequence; no dependency on another user product. The earlier manual J09 perspective store is retained, but ordinary durable writes now have their own supported historical path.
Implementation
snapshot_at()reads by transaction revision/time and valid time, immutable historical-page lookup, and an explicit structured correction path throughcommit_temporal().outbox_events()andget_event()for independently delivered consumers, regardless of the reference consumer's delivered bit.Review-driven corrections
An independent frozen-source review found import/migration provenance gaps, a compatibility regression, and incomplete corruption detection. The final candidate reconciles fact/page scope, preserves split provenance, validates immutable effects and indexed payload identity, rejects overlapping migration baselines atomically, and bounds event/page acquisition before loading payloads. Current corrected validity is distinct from independent page expiry/TTL.
Applicable independent probes pass; two older probe expectations are explicitly superseded by stronger migration rejection/unknown-coverage contracts, not silently deleted. Exact findings, replacement controls and limitations are in
docs/closure/C03-remediation.md.Actual assembled verification
Candidate:
5dc8e4855d74042964fdbfa8074350d4ea372af3.Parent:
3803a448bb4dfa493a2d8e43999f73cf9a23443c.Supervisor rerun on unchanged source bytes:
Tests use actual SQLite, ordinary MemoryAgent/store APIs, deterministic local generation fixtures, real parser regressions and owned child-process failure/restart tests. Counts include inherited tests, not independent benchmarks.
Compatibility and operations
New databases use the history-enabled schema. Existing v1 data requires explicit quiesced migration; earlier experimental unpublished v2 layouts require reviewed reconciliation rather than silent adoption. Historical raw APIs are trusted-host surfaces, and the integrated request facade must authorize them. History retirement is not physical erasure of source pages, backups or external copies. DELETE/FULL local SQLite is the tested path; no hardware-power-loss, live-provider or universal platform claim.
See
docs/transactional-history.mdanddocs/closure/C03-interfaces.mdfor APIs, seven-query example, migration, bounds and recovery. C01/C02/C07/C09 final composition and release gates remain separate tracked work. No automatic merge.