fix(api,web): resolve dismissal cleared field, ended header tense, and unobservable ends - #358
Merged
Merged
Conversation
…d unobservable ends - dismissals: reject Claude session IDs longer than 8 characters to prevent unbounded unmatchable keys from evicting legitimate dismissals. - http_api: remove the obsolete cleared field from the POST /api/dismiss response payload. - next-session.js: yield present-tense state phrases and active duration to observed session ends in session meta header. - aggregate and next-observed.js: report ends unobservable when the session-ends store is not observable. - tests: update byte oracle pins and add unit coverage across dismissals, http_api, next_session, next_observed, and next_attention. Fixes DRC-4179, DRC-4554, DRC-4555. Signed-off-by: Jared Scott <jared.scott@variable.team>
Contributor
CoverageThreshold: |
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.
Summary
Reconciliation and bug fixes for three issues in the "Nothing dies quietly" milestone:
DRC-4179:
cargento_runtime/dismissals.py: reject Claude session IDs longer than 8 characters (len(sid) > 8) so unmatchable scripted keys (such as 36-character UUIDs) are not admitted into the LRU or allowed to evict legitimate dismissals. Drop unmatchable entries on load.cargento_runtime/http_api.py: drop the obsoleteclearedresponse field fromPOST /api/dismiss. The response contract is strictly{"ok": True, "persisted": bool}.DRC-4554:
cargento_runtime/web/next-session.js: session header description yields present-tense state phrases ("awaiting your message") and active duration phrases to an observed session end ("ended X ago").DRC-4555:
cargento_runtime/aggregate.py: publishends_observableboolean flag incollect()payload indicating whether the session-ends store is observable.cargento_runtime/web/next-observed.js: update coverage gates to display "ends unobservable" whenpayload.ends_observable === false, while preserving "ends observed on N sessions" when observable.Test plan
AGENTS.mdPre-PR Checks (ruff, ruff format, mypy,lint_embedded.py,validate_plugins.py,bump_version.py --current, behavior-focused dashboard tests under coverage via discovery) and it is clean. A prose-only diff is not exempt: thevalidatecheck is unfiltered and runs the same testsruntime-floorjob launches the shipped entry point on that floorsync-docsskill: no docs drift introducedserver.pyorcargento_runtime/include a regression testversion-guardfails any PR that bumps one)git commit -s, DCO)claude plugin validate ./cargento --strictandagy plugin validate ./cargento)