Repository navigation
Keep only the metadata of any idle conversation, sent or not - #71
Merged
Merged
Conversation
Retention removed the landed files only of a conversation that was sent. One collected with no endpoint, or not sent yet, kept every byte, so a root that only collects grew for ever. Whether to remove now follows the conversation's idle time and the setting alone, never an endpoint or what was sent. A conversation never sent loses its content everywhere, and its skeletons say that no receiver confirmed them. storage.retention becomes a section, so the level that removes the session itself can take its place beside it later. Its first setting, metadata_only_after, is what storage.retention was: how long a conversation may be idle before only its metadata is kept, to save disk. The single value it was is refused, with an error that names storage.retention as a section. Metrics are derived only while an endpoint is set, so a conversation that kept only its metadata with none set reaches a deriver enabled later with none of its executions counted. A skeleton keeps no execution record's protocol or server, so no MCP call is derived from it. The first pass of a process that saves its state now says, for each session, how many distinct execution observations its skeletons keep that no pass counted. It reads only execution files, and a file it cannot read keeps its session for another pass.
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.
Retention removed the landed files only of a conversation that was sent. One collected with no endpoint, or not sent yet, kept every byte, so a root that only collects grew for ever. Whether to remove now follows the conversation's idle time and the setting alone, never an endpoint or what was sent.
What changes
storage.retentionbecomes a section. Its first setting ismetadata_only_after: how long a conversation may be idle before only its metadata is kept, to save disk. What was said and run is removed from every landed file. Who did what, when, in what order and at what cost stays, so new activity continues the same conversation.-1is off, the default, and only off keeps everything. The level that removes the session itself,retire_after, comes in its own change together with what it does, so no setting exists before its behavior.retention: 30dis a load error that namesstorage.retentionas a section, not a Go type.asz pushprint it. The count reads only execution files. A file it cannot read keeps its session for another pass. A pass whose state was not saved says the count again on the next pass.asz.yaml, the configuration page, the storage-root Retention section, the command-line page, the skeleton format (an absentowner), the scenario guide, the glossaries and the changelog. Each statement that a session is never removed now says "whole", since retention removes content in any root without_scenario/.Tests
tests/chain,TestASessionKeepsOnlyItsMetadataSentOrNot, five cases:Each reads back the skeletons' receiver states and owner,
asz verify, the document route and the files route. The cases with an endpoint push afterwards.tests/chain,TestLateMetricsSayWhatTheyCannotDerive: overmcp-calls, the tokens match an intact root and no MCP point comes from skeletons.internal/metrics, the count:cmd/asz:asz showandasz verify;asz push, and the quiet next pass.internal/config: the section throughLoad, including the old single value.Each new guard was proven by reverting it.
make test, the JSON v1 step (GOEXPERIMENT=nojsonv2),make scenarios, lint, and the Windows build and vet pass.