Skip to content

docs: ADRs on spec identity and file identity; log format, store, and retention stated - #192

Merged
SimonHeybrock merged 2 commits into
mainfrom
184-adr-what-is-durable
Nov 13, 2026
Merged

SimonHeybrock merged 2 commits into
mainfrom
184-adr-what-is-durable

Conversation

@SimonHeybrock

Copy link
Copy Markdown
Member

Step 3 of #184: what a workspace keeps on disk, decided. Two new ADRs and two edited ones. Implementation follows in PRs stacked on this branch.

ADR 0009: a record names its spec by name, version, and digest, and a record of another spec stays readable. Not implemented yet. Today an outputs class can change under the same version and a stored value is read into the changed class without an error (Centre.x renamed to x_mm: float = 0.0 reads back as x_mm=0.0), while a version bump makes old outputs unreadable. Decided: callers keep writing name and version; the log records a digest of each spec's params and outputs models (field names, types, requiredness, nested groups; not titles, descriptions, or defaults). A record whose spec is not the one bound now stays readable without its classes: params as the stored dict, outputs as plain scipp data. It cannot be referenced by a new request. A technique package's tests catch a model change without a new version.

ADR 0010: a file is identified by its catalogue identifier, or else by its path. Not implemented yet. Today a folder source identifies a file by its absolute path, so a moved folder makes a trigger loop reduce its runs again, and one run seen through two file sources has two identities. Decided: pid:<catalogue identifier> for a file the catalogue lists, formed from the identifier a raw file carries where the source has no catalogue access; otherwise the path, relative to the workspace's folder if the file is inside it.

ADR 0004 (history). States the log's format header as a decision: a log reads only files of its own format, and older formats are not read. This replaces "old event formats must stay readable". Adds the list of starts. Limits the rule "a history is dropped once its proposal is idle" to a history that no person holds, such as that of the automatic reduction; the framework deletes nothing in a folder a person opened. The title changed accordingly.

ADR 0002 (values and the store). States that Store is the interface and that a file format belongs to each stored value, with what a format must allow so that a part of a value can be read later.

Left open, and why. How a batch shows a row whose record is of another spec, together with what a batch is and how its definition is tied to its records, is #191. Whether every raw file carries the identifier, and whether a file the catalogue lists can still be unreadable, has to be asked of the teams that run the file writer and the catalogue.

Review. A fresh reviewer checked a first draft against the code with probes. Changed from it: the digest as first defined did not see a renamed field inside an outputs group, which is the motivating case; several decisions read as if implemented; the draft held five decisions in one ADR and is now split by decision.

🤖 Generated with Claude Code

SimonHeybrock and others added 2 commits November 13, 2026 07:11
… retention stated

ADR 0009: a record names its spec by name, version, and digest. A record
whose spec is not bound stays in the history and its outputs read as plain
scipp data; a new request cannot reference them.

ADR 0010: a file the catalogue lists is identified by its catalogue
identifier, any other file by its path, relative to the workspace's folder
when inside it.

ADR 0004: the log's format header and the starts list are decisions, and
dropping an idle proposal's history applies only to a history no person
holds. ADR 0002: the store is read and written through Store, and a
value's file format must allow reading one array, or its metadata, alone.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@SimonHeybrock

Copy link
Copy Markdown
Member Author

LGTM

@SimonHeybrock
SimonHeybrock merged commit 69d3655 into main Nov 13, 2026
2 checks passed
@SimonHeybrock
SimonHeybrock deleted the 184-adr-what-is-durable branch November 13, 2026 08:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant