Repository navigation
Give every configuration manifest a history - #51
Merged
Merged
Conversation
A configuration's manifest now carries `history`, as the root lib's
manifest already did. The history of the childless manifest is the
history of its parent, then the events the evaluation records, which
an integration's `evaluate` returns as `events`. Each event is stamped
with the manifest's name path, its type and its index within its
operation. The history of the full manifest is the history of the
childless manifest, then what each configuration beneath adds after
the history it began with, and the system above a configuration
evaluated per system adds what its evaluations add. So a child's
history always begins with its parent's childless history.
The name path is the `{ type, name }` of each manifest beneath the
top, which is the address under `children` of the top's manifest. An
integration's `record` may not name `history`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 20, 2026
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.
A configuration's manifest now carries
history, as the root lib's manifest already does. design section 5 describes the history as the flat list of events on the way to a manifest's value, derived from the tree. topside'shistoryandmodulesverbs read it.evaluatereturns those asevents, each withoperation,keyandorigin. caisson-core stamps each event with the manifest's name path, its type, and its index within its operation.{ type, name }of each manifest beneath the top, which is the address underchildrenof the top's manifest. The top, including a top evaluated per system, has the empty path.recordmay not namehistory.Test.
lifecycleEveryConfigurationHasAHistorybuilds a structural top, with a per-system machine inside it and a configuration inside that, each recordingdeclarationevents through the stub integration. It checks that each childless and full history follows the prefix rule, with the right name paths, types and indices. The hermetic suite passes, 128 tests, and so doesnix flake check.nix-caisson/caisson#126 fills the events in from what each evaluator receives.
🤖 Generated with Claude Code