feat(sota): the staged router + SOTA watcher — SIDECAR streams + the PI acceptance stamp (#834) - #835
Draft
aarontrowbridge wants to merge 6 commits into
Draft
feat(sota): the staged router + SOTA watcher — SIDECAR streams + the PI acceptance stamp (#834)#835aarontrowbridge wants to merge 6 commits into
aarontrowbridge wants to merge 6 commits into
Conversation
…ving-sota slice 2) Per spec-20260905-103000 D3 / S3 (living-sota slice 2): per-campaign append-only transition streams beside the session ledger (<stem>.sota- staging.jsonl under sessions/, the hopper under the reserved stem 'hopper'), event-id idempotent, PIPE_BUF+O_APPEND line-atomic; stage/drop/accept are all appended transition lines — entries never mutated, state always derived by replay. The acceptance stamp is the sole sanctioned non-job append (PI-instructed, instruction provenance required). Expiry drops with the recorded expired-without-review line; O2 compaction pinned at 28 days (recorded by an appended compact line, accepted/pending never removed). The papers router enumerates active campaigns via the session-ledger parse target (session-*.md titles + verdict tables, per-file named degradation) and stages matches with review-by/expiry stamps; below-threshold and no-campaign matches go to the hopper. The campaign ledger itself is never touched (the nine-section grammar holds unamended).
…g-sota slice 2) Per spec-20260905-103000 D3 / S3: release/changelog/issue events from the watched-repo registry ride the IDENTICAL staged path as papers — the slice-1 codebase lens provides the fetch (canonical repos, one-fetcher seam), the watcher adds the routing (campaign enumeration -> stage lines / hopper fallback, github: event ids, repo+surface provenance). Verb surface: amico sota watcher (the job driver), accept (the PI-instructed stamp, the sole sanctioned non-job append, --note required, idempotent, refusals named), awaiting-the-eye (derived-state pending listing + expired-without- review counts), sweep (the weekly job's expiry drops + O2 compaction pass). Fetch-failed surfaces are named failures; the survey never blocks.
…ng-sota slice 2) Per spec-20260905-103000 D3 / S3: 'amico papers digest --route' routes the lab-corpus picks against the active campaigns — matches stage into the campaign sidecar, below-threshold/no-match into the hopper, idempotent by event id. Routing is explicit (never a side effect of a dry run) and never fatal (a routing failure is a named routed.errors entry; the survey never blocks). --feed-xml is the deterministic fixture seam (zero transports in tests); --sessions overrides the personal-vault sessions dir.
…tamp schema rides the bridge fixtures (living-sota slice 2, O3) Per spec-20260905-103000 D3 / S3 (extends the SEAM 4 bridge fixtures): the canonical sota-staging record dir (fixtures/bridge/2026-09-05-sota-staging) carries the per-campaign SIDECAR transition stream — stage lines with provenance + review-by/expiry stamps, the watcher release riding the identical shape, the PI-instructed accept stamp (instructed_by PI + the recorded instruction — the O3 schema), an expired-without-review drop, one pending stage — plus the hopper stream with a below-threshold stage and an unknown-ev opacity probe. validate_bridge_replay.mjs gains the sota-staging kind: stage unique by event id (double-delivery reds), transitions must reference their stage, accept XOR drop terminal, accept carries the PI instruction record, stamps and provenance required, unknown ev carried. docs/ledger-bridge-contract.md gains the (d) record-kind section.
…ses fetch and report, they never append (living-sota slice 2) Per spec-20260905-103000 D3: the skill's honest-scope section now names the staged routing as its own layer with enumerated writers (digest --route, the watcher, the PI-instructed accept stamp, the awaiting-the-eye listing); the on-demand lenses stay read-only. The skill lint strengthens with the slice-2 surfaces: the new modules join the scraping-pattern and sanctioned- host greps, the stage-before-count rule and the enumerated writer commands are pinned in the text.
…he identical staged path (living-sota slice 2) Closes the S3 cell list: release AND changelog AND issue events all ride the identical staged fixtures (kind mapping changelog; the releases endpoint serves the changelog surface on GitHub-shaped data — slice 1's githubApiUrl).
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Closes #834.
Full detail in the issue. The load-bearing points for review: the SIDECAR streams keep the nine-section ledger grammar unamended (the router test asserts the session ledger byte-identical after routing); stage/drop/accept are appended transition lines (entries never mutated, derived state); the acceptance stamp is the sole sanctioned non-job append and refuses anything not instructed_by: PI with the recorded instruction; the awaiting-the-eye listing renders from derived state, never as currency; the bridge
sota-stagingrecord kind reds 12 corruption directions; the watcher rides the identical fixtures. O2 pinned: 28-day compaction (four weekly cycles keeps the expired-without-review health stamp computable; recorded as its own appended compact line — nothing lost); a number for the flywheel campaign to ratify.Director-run verification: 2462 passed / 0 failed (61 new tests), smoke PASS, typecheck clean, no live network.
Design of record: spec spec-20260905-103000-living-sota-review (D3/D4, S3/S6). Campaign ledger: session-20260905-living-sota-review.