Operator Brief
July 1, 2026 · View on GitHub
author: operator-claude-opus-4-8-001
2026-07-01 delta - architecture-review remediation campaign shipped
The 2026-07-01 architecture-review remediation campaign is closed; see docs/operator/plans/architecture-review-remediation-campaign-2026-07-01.md.
Workstreams landed on main through 4eeb9df3: migration
hash-mismatch parking, Claude provider-auth doctor checks, blob-boundary docs,
route-budget metadata, escalation notification, verdict model identity, doctor
planes, RFC 0170 P1 citation/liveness fixes, the first clients
column-scoped read slice, deprecated-route retirement, placement posture
adoption, sweep trip latching, retired-runtime wording cleanup, and audit
follow-through rules. Live closeout was green (doctor ok=true,
problem_count=0, six advisory warnings; no active runs/jobs/blockers). The
daemon had not yet restarted onto the new doctor-plane binary, so live
availability_ok / provenance_ok fields were absent though source/tests
landed.
2026-07-01 delta - architecture-review remediation campaign planned
The 2026-07-01 deep architecture review and the immediately prior 2026-06-28
deep architecture review have been triaged into
docs/operator/plans/architecture-review-remediation-campaign-2026-07-01.md.
No source behavior lands with this planning delta. The campaign's first
execution barrier is to land the migration-hash-mismatch typed exit-79 park
before any follow-up that adds runtime migrations or owner bundles.
Live preflight for the plan was green: operator bootstrap reported daemon
reachable/authorized on main, status --json --run-limit 0 reported no
active runs, and doctor reported ok=true with advisory worktree warnings.
Use isolated worktrees and Plane work items for fanout; do not strand branches.
2026-07-01 delta - RFC 0165 accepted; RFC 0173 build RFC proposed
RFC 0165 is now accepted by D277. This is an acceptance-state and build-contract
change only; no source behavior lands with the decision. The accepted form is
the rfc-0165-design-v5 proposal plus the cycle-3 accept_with_findings
ledger from run_efde0bcac1a8712b90c94e22e9f5db97.
The build target is RFC 0173 and the successor rfc-0165-build workflow. The
build must preserve the v5 floors and the added ADHD stress-pass constraints:
one generated projection contract as the source for storage/RPC/CLI/supervisor
launch/authority-map/docs obligations; one immutable launch credential binding
used by recovery before any latest lane-user readiness row; and one
side-effect-free pre-spawn planner that production launch consumes before
scratch, FIFO/ACL, session-token, supervisor, helper/tmux, receipt, or provider
process side effects. Provider-auth debt must remain separate from generic
recovery budget, and lane credential samples are downgrade-only evidence.
Live preflight for this doc/status change was green: operator bootstrap
reported daemon reachable/authorized on main, and doctor --json reported
ok=true with problem_count=0.
2026-06-30 delta - RFC 0165 v5 design accepted and integrated
RFC 0165 design v5 completed as
run_efde0bcac1a8712b90c94e22e9f5db97 from
docs/operator/workflows/rfc-0165-design-v5/ and was integrated to main
through run.integrate at 0fe4f398. The revision-routing checkpoint
blk_85998f9a8f5fd45b7f358617912cf99c was resolved with continue; no human
checkpoint remains.
The cycle-3 ledger
docs/operator/artifacts/rfc-0165-design-v5/dialogue/adjudicator/COLLABORATION_LEDGER_cycle_3.md
returned accept_with_findings. The downstream proposal is
docs/operator/artifacts/rfc-0165-design-v5/commit/proposal/PROPOSAL.md; the
final summary is
docs/operator/artifacts/rfc-0165-design-v5/commit/final/FINAL_SUMMARY.md.
C1 launch-generation-bound recovery freshness, C3 projection-off unknown-kind
closure, and C2 same-user/provider-auth ordering are all discharged with
carry-forward constraints. The successor build must preserve the C3
fail-closed classifier for missing, unknown, or unmodeled Claude credential
kinds; preserve the C2 rule that credential-domain violations outrank same-user
remediation while same-user refusal outranks the generic provider-auth gate
when no credential-domain violation exists; and open explicit source, SQL,
generated-contract or authority-map, test, and product-doc write scope.
This design run is not source-build authorization. The next legitimate step for
GH #583 is a successor rfc-0165-build workflow that implements the accepted
access-token-only projection, launch credential binding, provider-auth debt, and
redaction/custody invariants on main.
The run also exposed two runner frictions. The checkpoint/reseal durability gap
was repaired on main before the revision: review checkpoints now
porter-commit and anchor published repo-write artifacts before entering
waiting_human, and recovery reseal can restore an already-open checkpoint
instead of requeueing into a same-attempt immutable-artifact conflict. During
the final revision, an adjudicator worktree reset hit lane-owned directory ACLs;
a targeted ACL repair of that daemon scratch worktree unblocked the supported
checkpoint continuation path. final_summary published its artifact but exited
unsealed, then was accepted through recovery accept-quarantined; the run state
is completed. After run.integrate, doctor surfaced five older completed
worktrees whose HEAD had followed the newly advanced mainline without a durable
job anchor; each was repaired through the daemon-supported worktree anchor
path. Live doctor is green again with problem_count=0.
2026-06-29 delta - doctor warning channel bounded
Live warning cleanup ran through daemon recovery rather than manual worktree or
database edits: 58 terminal-run artifact debris rows were pruned, 62 terminal
worktree rows were cleaned/quarantined, and the remaining completed unanchored
worktrees were anchored through worktree anchor. The recoverable warning
classes (artifact_debris_terminal_run, worktree_debris_terminal_run, and
worktree_unanchored_on_default_branch) are cleared.
The residual 52 findings are not daemon-recovery work: 20 legacy pre-blob
artifact rows, 19 curated acknowledged losses, 10 superseded-on-default-branch
artifact rows, two archived terminal fan-in barrier debris rows, and one local
Codex env notice where the runtime token file exists but the current shell did
not export STRIATUM_MCP_TOKEN. D276 now keeps those visible as top-level
notices/notice_records and reserves top-level warnings for actionable
operator work. The subsystem blocks still expose their local advisory counts for
forensics. job_stuck_no_live_session now skips jobs that are already legible
through an open blocker or unfinished dependency, so RFC 0143 Slice B's known
write-scope blocker remains a status/why item instead of a duplicate doctor
warning.
2026-06-29 delta - doctor artifact problems cleared
Live doctor was red after the docs information-architecture consolidation
exposed three uncatalogued historical dogfood artifacts whose recorded content
is no longer present on a durable ref, run branch, or the current default-branch
history. Those rows were verified as immaterial historical runner-development
provenance: two were earlier synthesis drafts superseded by later same-run
artifacts, and one was an old restart-survival proof from a completed dogfood.
They are now added to the sha-bound
docs/operator/doctor-acknowledged-loss.json baseline, so a future different
hash at the same artifact id still reds.
doctor --verbose --json after installing and restarting system
striatumd.service from 61b81220 returned ok=true, problems_count=0,
with advisory warnings only. generated_record_integrity checked all 2,096
indexed rows with problem_count=0, and artifact_anchor_integrity checked all
608 artifact rows with problem_count=0. The remaining high-volume
artifact/worktree findings are warnings from the D204/D205 legibility classes:
terminal-run debris, legacy unverifiable records, superseded default-branch
records, and curated acknowledged losses.
The generated-record integrity check still performs full blob body verification; source now runs those per-record blob checks through a bounded worker pool so the indexed generated-record table can complete without weakening corrupt or missing blob detection. The artifact-anchor subcheck remains bounded and now has enough headroom to finish the current 608-row baseline.
RFC 0143 Slice B remains a blocked live run
(run_448c756fc1ca401172a2cf19c57baa2f,
blk_7050883e550f7a8bc2bd006228d1983a) because its frozen write scope omitted
contracts/. STRIATUM-25 is already accepted for the workflow-validation
prevention fix; do not use recovery resolve-blocker on this run. The daemon
surface says the legitimate path is cancel/supersede and rerun with corrected
scope.
2026-06-29 delta - RFC 0172 accepted as proof-only supervision
RFC 0172 is accepted as D275 after the health gate that blocked the earlier
closeout recovered: operator bootstrap, doctor --json, and daemon status
all returned successfully. The accepted boundary is still proof-only /
recommendation-only. Campaign arcs, authority receipts, replay checks,
quarantine rows, contradiction reports, tracker mirrors, and portfolio rows are
provenance and stop pressure, not permission.
No daemon schema, RPC, route-map, CLI, dashboard, tracker-backend,
workflow-launch, sequencing, promotion, acceptance-state update, or done-seal
authority lands from this acceptance alone. Build remains a later Wave 4 roadmap
item after reliability-spine sequencing, and any future RPC/route-map slice must
update docs/reference/command-authority-matrix.md plus authority guardrail
tests.
2026-06-29 delta - RFC 0172 multi-campaign supervision drafted
The MULTI_CAMPAIGN_SUPERVISION falsification gate completed and cleared only
the RFC/product-decision next step. RFC 0172 was initially proposed at
docs/rfcs/0172-proof-only-multi-campaign-supervision.md; it preserves the two
binding floors from the gate: provenance/status surfaces are stop pressure, not
permission, and replay/done proof must be same-boundary fresh. No architecture
or build plan was accepted by that draft alone. D275 now accepts the proof-only
direction, but no daemon schema, RPC, UI, tracker backend, implementation
ticket, workflow-launch authority, or build plan is authorized until the RFC is
roadmap-sequenced.
2026-06-29 delta - RFC 0171 operator generated-doc bulk deletion shipped
RFC 0171 now classifies historical Markdown under docs/operator/artifacts/
and docs/operator/workflows/ as daemon-indexable generated records. The
authorized bulk deletion removed 1,755 tracked Markdown bodies from git after
importing and proving byte-identical reconstruction through Garage-backed
generated_records: 500 artifact docs and 1,255 workflow docs.
Proof batches: rfc0171-bulk-artifacts-20260629,
rfc0171-bulk-workflows-a-20260629, and
rfc0171-bulk-workflows-b-20260629. Verification checked all 1,755 records with
problem_count=0; materialization wrote all 1,755 under ignored scratch; SHA
comparison found 0 source/manifest/materialized mismatches. Proof files live at
/tmp/striatum-rfc0171-bulk-deletion-manifest-2026-06-29T0255Z.json and mismatch report
/tmp/striatum-rfc0171-bulk-sha-mismatches-2026-06-29T0255Z.tsv.
Doctor now treats indexed generated_records rows at the same artifact path as
the durable revised-form body for imported historical artifact records, with
exact path/hash matches clean and revised-form path matches downgraded to
warnings. The old artifact-anchor check no longer requires those retired
Markdown bodies to stay in git; corrupted or missing generated-record blobs
still red through generated_record_integrity.
The earlier five-file dogfood OPERATOR_REPORT.md deletion pilot remains valid.
Broad historical deletion outside explicitly scoped generated-record classes is
still blocked until a future proof-backed operator scope names the next class.
2026-06-28 delta - RFC 0143 Slice B build run blocked
RFC 0143 Slice B CapabilityReseal build run
run_448c756fc1ca401172a2cf19c57baa2f is still running but blocked at the
draft job (job_run_448c756fc1ca401172a2cf19c57baa2f_draft) behind
blk_7050883e550f7a8bc2bd006228d1983a
(write_scope.contract_missing). The published draft artifact
art_d5767dfd04aee3d33fc08e413741322f is attested and its on-disk worktree
body hash matches the artifact row (8a852866...), but the body is not durable
outside the per-job worktree wt_b1d10e64644ae80a061de836c5cfb87e.
Recovery was inspected through daemon surfaces rather than manual worktree
capture. recovery reseal run_448c756fc1ca401172a2cf19c57baa2f job_run_448c756fc1ca401172a2cf19c57baa2f_draft --json refused with
"published artifact content is not durable outside the per-job worktree";
recovery complete-stalled ... --force --dry-run --json refused because the job
state is blocked; recovery resume blk_7050883e550f7a8bc2bd006228d1983a --json refused because this blocker is not a supported process-adapter blocker.
recovery resolve-blocker was intentionally not used: current source shows that
verb only closes the blocker row and does not mutate job/run state, which would
hide the live block without sealing the work.
The frozen packet wp_0e480f22f30e3414acc1959fd3a3171c omitted
contracts/ from write_scope.allowed_paths, while the lane's own draft says
the implementation changed contracts/daemon_methods.json. Treat the current
run as blocked provenance, not a candidate for hand-finishing. Next action is a
daemon-legible replacement path: cancel or supersede the blocked run through
Striatum, scaffold a corrected Codex-only Slice B build with contracts/ in the
repo-write scope, and rerun review/apply from that corrected workflow. Do not
copy or cherry-pick the dirty lane worktree into main.
2026-06-28 delta - Multi-campaign supervision Level-1 completed
MULTI_CAMPAIGN_SUPERVISION Level-1 ideation completed as
run_7899e132bf7996d49c9b81d0df905962 and was integrated to main through
run.integrate at 8ac96c62. The workflow scaffold lives at
docs/operator/workflows/multi-campaign-supervision-level1.json and
uses Striatum's supported divergent_ideation shape with direct codex
agent-loop pty_helper lanes and per-job worktree isolation. The seed
explicitly carries the Level-0 live-human artifacts, the current operator brief, and
docs/how-to/how-to-agent.md as required context.
The completed artifacts are recorded under
docs/operator/artifacts/multi-campaign-supervision-level1/ with 11/11 jobs
attested as supervised lanes. Artifact naming is normalized by treating the
feature-specific directory as the slug prefix; the run-owned directory-local
basenames remain canonical, with the mapping recorded in
docs/operator/artifacts/multi-campaign-supervision-level1/README.md. The
shortlist is authority receipt expiration, fresh-context replay tests, deferral
quarantine / scope-drift refusal, and a cross-surface contradiction gate. No
architecture is accepted, and no product code, schema, route, daemon method, UI,
or build ticket was created. The next legitimate step is to run the validated
falsification scaffold at
docs/operator/workflows/multi-campaign-supervision-falsification.json
before any design-to-build readiness claim.
2026-06-28 delta — RFC 0168 P0 build v3 integrated; RFC 0143 Slice B unblocked
RFC 0168 P0 build v3 is reviewed, accepted, integrated, and pushed to main.
The accepted Codex-only run was run_aa4e1c988eddb78b255afa0e63a75e6c, merged
through run.integrate at b7f48ab1; follow-up test isolation landed at
42d9579c, and current main includes later cleanup commits through
3ad69236. Runtime schema 47 adds lane_uid_leases; owner bundle 0023
reasserts its runtime authority. supervise.start can allocate a concrete OS
user from STRIATUM_LANE_UID_POOL, writes the uid lease id/generation into
supervisor metadata and lane env, and the active-supervisor
control/attestation/report path fails closed if that generation no longer
matches the active lease row.
This v3 pass closes the final v2 blockers: uid return is gated on S1-S3 cleanup
plus complete P1-P5 proof (including kill failure fail-closed, provider/home
store absence, supervisor scratch absence, and no active lease worktrees or
workspaces); supervise.report validates the live lease generation before
heartbeat or terminal metadata writes; and relative provider credential
selectors are resolved against the lane launch root / repo root before the
in-repo refusal.
The build also moves MCP bearer config files under private
.striatum/scratch/<supervisor_id> directories, refuses provider-owned
credential/cache selectors that resolve inside the target repository while
allowing ordinary non-credential lane env, grants created job
worktrees/workspaces to the selected lane user, and surfaces stuck/quarantined
uid leases through recovery and doctor. Post-integration verification in the
operator session passed go test ./..., make check-docs, make lint, and
make typecheck; doctor is green with no active runs, blockers, or
checkpoints. RFC 0143 Slice B (CapabilityReseal) is now unblocked and is the
next roadmap item.
2026-06-29 delta — RFC 0143 Slice B build accepted and apply-verified
The reviewed rfc-0143-slice-b-build implementation adds a daemon-internal
CapabilityReseal path to the recovery sweep for the exact
session_unrecoverable_across_rotation class. It does not add a public reseal
method, does not mint a general reseal bearer, and does not make the daemon
admin/runtime token lane-readable. The sweep may finalize an authored or
already-published expected artifact only after daemon expected-artifact and
reconstructability checks pass, the owning supervisor metadata still matches an
active RFC 0168 lane_uid_leases row by run id, lease id, generation, session
id, supervisor id, and uid, and the work lease belongs to the same run and is
active or inside the short reseal grace window.
Failure remains the Slice A typed floor: stale generation, missing uid lease,
sibling-lane lease replay, foreign-run lease replay, inactive session, or work
lease beyond grace records capability_reseal_unavailable and falls back to the
existing typed requeue/escalate path. Focused tests are added for the success
case, stale generation, sibling replay, foreign-run replay, beyond-grace
refusal, and expected-artifact-only finalization. The apply pass for
run_20d2fb3e999d1b5ae4e5de6b180d86a3 re-ran the full local Go/doc/lint/smoke
gate; PostgreSQL-backed live recovery fixtures still require an operator-provided
STRIATUM_PG_TEST_URL.
2026-06-28 delta — RFC 0171 accepted, first build slice shipped
RFC 0171 is accepted as D273. It addresses the 2026-06-28 architecture-review finding that generated operator records and run-shaped docs are now the main repo-cognition drag: bodies should move to daemon-indexed blob storage, while git keeps compact dockets, pointer manifests, accepted product docs, source/doc changes, and intentional publication indexes.
The first build slice shipped runtime schema 46 (generated_records),
the deterministic record docket domain, daemon-backed records.docket /
striatum records docket <run-id>, blob-required publish fail-closed posture,
workflow-generator placement defaults, records migration inventory, opt-in
check-docs Striatum URI and generated-body hygiene checks, and reference-doc
updates. striatum:// materialize/hydrate, historical import reconstruction
proof, and doctor record/docket integrity checks remain pending. Broad
historical deletion remains blocked until byte-identical reconstruction proof
exists.
2026-06-28 delta — RFC 0171 historical import proof implemented
RFC 0171 now has the proof-first historical import path for the
safe_to_blob_index inventory subset. striatum records migration import
routes each selected manifest entry through daemon RPC
records.migration.import, uploads the body through the daemon blob client, and
upserts striatumd.generated_records without deleting tracked files.
striatum records migration verify compares the original inventory manifest to
daemon-fetched blob bytes, and striatum records migration materialize writes
verified bodies only under ignored .striatum/scratch.
doctor --verbose --json now includes generated_record_integrity with stable
problem codes for missing blobs, corrupt/unreadable bodies, swapped blob
key/hash metadata, duplicate source rows, and missing blob metadata. This moves
RFC 0171 from "inventory only" to "imported and reconstructable"; broad
historical deletion remains blocked until a separately authorized pilot uses
that proof to retire source files.
2026-06-27 delta — v2.39.0 release
v2.39.0 (2026-06-27) cuts the post-v2.38.0 reliability and RFC 0170 P0
release. It includes the bundle-0022 runs projection outage fix, terminal
fan-in debris doctor downgrades, RFC 0168 P0 design acceptance (D272), and RFC
0170 P0 observe-only culling substrate/runtime schema 45. GitHub main CI
is green at 3b4ef294 before tagging; striatum doctor --json is green with no
problems, stale leases, waiting humans, or operator-needed items.
Deploy note: this release includes runtime migration 0045 and no new owner
bundle. Install/restart the v2.39.0 binaries to move the host from v2.38.0 to
v2.39.0; verify with striatumd -describe, striatum doctor --json, and the
live release workflow result for tag v2.39.0.
2026-06-27 delta — RFC 0170 P0 built, verified, and integrated
RFC 0170 P0 is on main as runtime schema 45 (02a15e83). The original
Claude-backed build run run_8ff1498595f29cee792314080e9606de was canceled
because Claude credits are unavailable until 2026-06-30 15:59 UTC. The
workflow was switched to Codex lanes, README scope was added, and the corrected
Codex-only run run_992bd797fc136f1e3d782f443f9fb2ad completed with
accept_with_findings and integrated through run.integrate.
Implemented P0 surface: runtime migration 0045_cullable_entity.sql,
read/write authority inventory rows, the read-only DecayTickSweep attached to
the recovery scheduler off the wait-gating path, README schema 45 status, and
operator artifacts under docs/operator/artifacts/rfc-0170-p0-build/.
Verification: strict verifier builtin:go-build/builtin:go-vet passed with
agreement; builtin:go-test passed as ASSERTED with exit 0; make lint passed;
make typecheck passed with live MCP endpoint env stripped; make check-docs
passed; live two-role PG tests for runtime migration apply and forbidden owner
FK passed under STRIATUM_PG_TEST_URL=postgres://halbritt@/postgres?host=/var/run/postgresql.
striatum doctor --json is green.
Issue #615 can close for the P0 design→build→verify tracer. P1 remains tracked by #618 (whole-tree frozen citation exactness) and #619 (non-cooperative filesystem-hang cull-slot fence). Do not launch Claude lanes before 2026-06-30 15:59 UTC unless credentials/credits are explicitly restored; use Codex-only lane sets or wait.
2026-06-27 delta — RFC 0168 design accepted; v6 run wedge cleared
RFC 0168 P0 (per-lane pooled OS uid as lane security principal) is accepted
with follow-up as D272 after the v6 falsification gate converged. The
decision artifact is
docs/operator/artifacts/rfc-0168-design-v6/decision/DECISION_override_to_build.md.
The v6 run run_010c81ec8ca17ffd182e0bd7be3f28cc was canceled after D272 to
clear the Claude spend-limit / stale daemon-socket wedge and its stale
adjudicate worktree row was retired through recovery quarantine-lane.
striatum doctor --json is green (ok=true, no problems, no stale leases).
Next RFC 0168 stage is BUILD from the v6 HOLDER spec plus D272's binding constraint: the OQ4.1.2 coverage-gap gate must discriminate provider-owned credential selectors from ordinary lane env selectors, keeping the typed provider credential-dir refusal while proving legitimate in-repo non-credential lane env still launches. Do not launch Claude lanes before 2026-06-30 15:59 UTC unless credentials/credits are explicitly restored; use a Codex-only lane set or wait.
2026-06-26 delta — active RFC 0170 v2 false-red barrier diagnostic fixed
Fresh RFC 0170 P0 design v2 is live as
run_3506471695cec27400eda2f3f33d4f6f on
striatum/rfc-0170-p0-design-v2; the holder lane is alive and revising the
cycle-1 SPEC. doctor went red while the holder was still running because
barrier_status counted the downstream falsifier_1/falsifier_2
jobs.state='blocked' rows as hard BARRIER_BLOCKED seats. That state is also
the scheduler's ordinary pre-queue state for dependency-blocked jobs, so the
barrier was only pending on the live holder, not intervention-blocked.
Fixed in this change: the doctor barrier invariant and blocked manifest now
normalize dependency-blocked seats to PENDING; a blocked seat is a hard barrier
blocker only when its own dependencies are satisfied or it carries an open
blocking/human-checkpoint blocker. doctor and join verify normalize the old
deployed view shape so upgraded databases stop false-reddening without rewriting
an applied DDL migration. Verification: make -C go build,
STRIATUM_PG_TEST_URL=postgres:///postgres go test ./pkg/reads -count=1, and
STRIATUM_PG_TEST_URL=postgres:///postgres go test ./pkg/db -count=1 pass; the
full make -C go test target also passes when the live Striatum daemon runtime
environment is stripped from the test process.
2026-06-26 delta — SEV-1 runner outage fixed (rowByID SELECT * vs bundle 0022)
The v2.38.0 restart (2026-06-25 19:17 UTC) silently took the whole workflow
engine down for ~12h: every run-scoped mutation returned
permission denied for table runs (SQLSTATE 42501) and zero events were
recorded. Root cause: owner bundle 0022 (RFC 0167 P0) REVOKEs table-level SELECT
on striatumd.runs from striatumd_rw and re-GRANTs all columns except
created_by_principal_id, but the mutation surface's shared mutations.rowByID
helper still issued SELECT * (≈55 run-load call sites). The reads package had
been migrated to explicit projections; mutations was missed, and the verify
pgtests run as the owner pool so the runtime-role grant never bit in CI.
Fixed + deployed (this session): rowByID projects explicit runs columns
(commit 82bb94c2); hermetic + two-role-grant regression guards added;
2c6add5a fixes a test matcher. System daemon rebuilt/restarted 2026-06-26
07:08 UTC — mutations succeed, events flow, recovery sweep active. Post-mortem:
#614 (open for the prevention follow-up: run mutations pgtests under the
two-role grant). doctor ok=true after clearing the 5 pre-existing integrity
problems via daemon paths (worktree anchor, accept-quarantined + force-release,
and acknowledged-loss entries for two branch-cleanup-orphaned cc_rfc0142_p0
process artifacts). VERSION stayed v2.38.0 for that same-day bugfix window;
v2.39.0 later packaged it with the RFC 0170 P0 migration. RFC 0170
design→build→verify (the session's original mission) was NOT started — the
outage took precedence.
2026-06-26 delta — RFC 0170 P0 design cycle-1 + a stranded-barrier runner defect (#616)
Drove RFC 0170 P0 (self-culling repo) into a falsification_gate design run
(scaffold landed 13fd54fd; issue #615; roadmap 14b). Cycle-1 ran fully to
a rigorous needs_revision (run_85afe0ff): G3 substrate (migration
0045_cullable_entity.sql + read/write authority-inventory + no SELECT *) and
G4 forward-compat MET; G1 + G2 unmet with two precise binding constraints —
G1' reconcile the supersession predicate so a still-live-cited superseded RFC
(rfc:0097, cited by 0101/0103) isn't nominated, G2' add a sub-cadence
cull-fold deadline + HANG regression test so a blocked DecayTickSweep can't
stall the recovery goroutine. v1 dialogue snapshot /tmp/rfc0170-v1-snapshot/.
Friction resolved by #616: the #587 cycle routed needs_revision to a
futile falsifier re-attack; I run cancel-ed it mid-strict-fanin-re-stage,
which stranded the fan-in barrier (barrier_committed_manifest_mismatch +
strict_fanin_required_seat_unrecoverable) against a canceled run and left the
dead seat's worktree row pointing at an already-deregistered orphan directory.
Substantively benign (artifacts durably anchored), but the old daemon kept
doctor red. Fixed + deployed 2026-06-26: terminal-run fan-in barrier
debris now reports as barrier_debris_terminal_run warnings, not ok-reddening
problems, and recovery quarantine-lane retires already-unregistered worktree
rows. Live recovery of
job_run_85afe0ffd067616db27edf0a3c4e4afa_falsifier_2 returned
already_removed=true / worktree_cleanup=already_unregistered; striatum doctor --json is ok=true, problem_count=0. Lesson: never run cancel a
strict fan-in mid-revision-cycle — let it reach needs_operator. Next:
fresh -v2 revising holder discharges G1'/G2' → D271 → BUILD→VERIFY.
2026-06-25 delta — v2.38.0 release
v2.38.0 (2026-06-25) cuts the D270 subtraction release over v2.37.1.
The supported cross-repo product surface is retired: go/pkg/crossrepo,
cross_repo.* daemon RPC methods, striatum cross-repo ... CLI routes,
daemon handlers, generated method tables, and current reference-doc support
are removed. RFC 0128's single-repo write-scope guardrail remains.
Deploy note: this release has no new DDL, runtime migration, or owner bundle.
Upgraded databases may still contain historical RFC 0032 cross_repo_* tables
and runs.cross_repo_run_id; those are compatibility/provenance schema only.
Install/restart the v2.38.0 binaries to move the host from v2.37.1 to v2.38.0.
2026-06-24 delta — v2.37.0 / v2.37.1 (superseded by v2.38.0)
v2.37.0 cut the post-v2.36.0 source state: RFC 0167 P0 operator
identity/run attribution + session-bound operator.bootstrap + owner bundle
0022, RFC 0143 Slice A recovery legibility, the D269/#527 fan-in
default-live cutover, the D264-D269 audit closeout gates, and the
scripts/check_release_version.py README/VERSION/CHANGELOG agreement gate.
v2.37.1 hotfixed a deploy skew where the 0022
operator_identity_run_attribution read-projection stamp was in
readScopeReasserts but missing from SupportedAuthorityCapabilities(), so the
daemon refused the schema after the DDL applied; v2.37.1 adds the capability +
a parity guard. (Note: bundle 0022's runs SELECT-revoke later surfaced the
SEV-1 rowByID outage above — see the 2026-06-26 delta / #614.)
2026-06-24 delta — audit closeout gates
The 2026-06-24 architecture-audit closeout added D264-D269. Operators must not
launch new feature-wave RFC design/build work while striatum doctor is red.
Use direct sync-guarded operator commits, not daemon dogfood flows, for narrow
source/truth fixes until integrity is green again. docs/operator/rfc-roadmap.md
now carries the active WIP cap, self-hosting-tax classification, and
subtraction-release checklist. D269 closes the #527 source cutover with PG/unit
proof: fan-in is live by default, STRIATUM_BARRIER_FANIN=0 is the kill switch,
and live deployment equivalence is now the post-green validation path.
2026-06-24 delta — RFC 0167 P0 built + verified + integrated
RFC 0167 P0 (operator identity & run attribution, D260/D263) is on main
(525c4696), landed autonomously through Striatum's own design → build → verify
workflows. Design: a falsification_gate committee ran 4 cycles, each
surfacing a real, source-verified, build-breaking defect (pre-run session
impossible under sessions.run_id NOT NULL; the run-origin stamp hitting the
0006 token read-scope 42501; the operator token lacking run.prepare admin;
the operator-session token over-granting + a composed client_id→principal_id
re-leak) before clearing accept_with_findings with two binding §F constraints.
Build: a code_change run implemented all ten §9 items — owner bundle
0022 (operator_handles + operator_sessions + runs.created_by_principal_id
/created_by_handle_id write-once trigger + the SECURITY DEFINER identity
projections run_origin_identity/runs_for_origin_client/runs_missing_origin
- the
runsREVOKE/re-GRANT +operator_handles/operator_sessionscolumn-scoped grants + the threerunsstar-reader conversions),mintOperatorSessionToken, theoperator.bootstrap/heartbeat/closeRPCs with thestriatum operator bootstrapCLI as their client,striatum whose,status --mine, and theattribution_unknowndoctor advisory. Verify: all 10 live two-role pgtests PASS under the non-superuser owner DSN (the C2″ composed-route closure, the write-once trigger, the two-mayadisambiguation, the operator-token authorization, the drift reassert);go build/go vetgreen.
Bundle 0022's deployable release is v2.37.1. Apply it only with a binary that
declares operator_identity_run_attribution in
SupportedAuthorityCapabilities(), then restart the daemon; after that, whose,
status --mine, and the operator-bootstrap mint RPC are live. P1–P3 (custody
log; honest bylines + handoff naming + chips + opt-in OSC title; lineage) are
sequenced behind this P0 release/deploy.
Older deltas (≤ v2.37 — superseded; see CHANGELOG + decision log)
- v2.37.0 / v2.37.1 (superseded by v2.38.0): RFC 0167 P0 operator
identity/run attribution + owner bundle 0022, RFC 0143 Slice A, the
D269/#527 fan-in default-live cutover, the D264-D269 audit closeout. v2.37.1
added the
operator_identity_run_attributioncapability + a parity guard. (Bundle 0022'srunsSELECT-revoke later surfaced the SEV-1rowByIDoutage above — #614.) - RFC 0167 P0 (D260/D263) is on
mainand deployed via bundle 0022; P1-P3 (custody log / honest bylines + handoff naming / lineage) are sequenced — roadmap row 21, issues #609/#610/#611. - Audit closeout D264-D269: the WIP cap, self-hosting-tax classification, and
subtraction-release checklist live in
docs/operator/rfc-roadmap.md. - v2.34-v2.36 releases, the owner-bundle 0020 watermark hotfix (#581), RFC
0165 v2 quarantine (#583), #311 per-job quarantine (D209), and the 2026-06-16
reliability-reset closeout are historical — see
CHANGELOG.mdanddocs/decisions/decision-log.md.
State
Latest release is v2.39.0 (2026-06-27) — ships runtime schema 45 with the
RFC 0170 P0 observe-only culling substrate, RFC 0168 P0 design acceptance, and
the post-v2.38.0 reliability fixes. v2.38.0 (2026-06-25) retired the D270
cross-repo product surface without new DDL while preserving the single-repo
write-scope guardrail. v2.37.1 (2026-06-24) hotfixed the v2.37.0 owner-bundle 0022
capability-parity deploy skew after shipping operator identity/run attribution
(RFC 0167 P0, owner bundle 0022), session-bound operator bootstrap, RFC 0143
Slice A recovery legibility, D269 fan-in barrier default-live cutover, and the
audit closeout gates. v2.36.0 (2026-06-23) was a bugfix-only cut over
v2.35.0 (#581 owner-bundle watermark deploy crash-loop, #582 release publish
pipeline, doctor superseded-artifact false-red, checkpoint artifact-integrity;
owner bundle 0020).
v2.34.1 (2026-06-18) was a docs/maintenance cut (no code change). v2.34.0
(2026-06-18) packaged six reliability/security fixes +
the RFC 0135 sealed-barrier primitive (opt-in/shadow). The earlier
v2.33.0 (2026-06-16) tag at 564a8209 packaged the post-v2.32.0 landing set:
doctor integrity legibility P0+P1 (D204/D205, #300), #290/D206 fan-in
run-branch integration, #296 codex push-lane loud-fallback, #301/#307
workflowgenerate fixes, #304 dangling-blocker resolution, and #311
recovery-escalation legibility (details in CHANGELOG v2.33.0). The prior
v2.32.0 (2026-06-13) packaged RFC 0118/0119/0120 plus session-recovery edge
fixes; the v2.10.0 → v2.31.0 release burst is indexed in CHANGELOG and the
decision log. Historical open sets such as #212/#263-#267 are no longer current.
Deep architecture review 2026-06-11 — mostly closed in v2.34.0
STRIATUM_DEEP_ARCHITECTURE_REVIEW_CLAUDE_FABLE_5_2026-06-11.md (0e8671ed):
verdict ROUGHLY RIGHT-SIZED · ON TRACK. v2.34.0 closed the ranked blocker,
untested spine, scoped deletion pass, conformance honesty, truth mechanization,
and boundary-hygiene batch. STILL OPEN: P1 token-out-of-argv and
docs/operator/ exhaust relocation (#364, ready-for-human).
Current Frontier
- Reliability reset gate is green enough for release.
striatum doctoris green andmainCI passed at3b4ef294; keep the remaining recovery defects ahead of feature growth and do not launch new dogfood runs on a red doctor. - Recovery fixture gate: #302/#308/#309 are closed, but their failure class
remains load-bearing evidence: prove
agent_exited_unsealedplus durable, valid artifacts reaches completion without renewed-lease waiting, then keepstriatum doctor --jsongreen. - Docs/current-state truth: this brief, README status, docs index, and roadmap/todo references must share one current issue frontier. This revision updates the brief/README/index; roadmap/todo guardrails remain follow-up work.
- RFC 0120 (await-packet idle exit + wake boundary, D180) — LANDED.
Phase 1 terminal idle envelopes carry
idle_behavior=exit_session; bootstrap no longer tells lanes to poll afterno_work; the PTY receiver exits the lane cleanly. Phase 2 landed on main in81b51959: the notify-only wake bus adds read-shapedwake.wait, post-commit wake hints for work/message/turn availability, andrun drivewake waits with bounded missed-notification fallback. Wake events stay hints over committed state, never authoritative. The earlierissue-248-wake-bus-implementationruns were canceled/superseded dogfood attempts; do not drive them as live work. - RFC 0119 (warm-tier memory boundary, D179) — accepted; hot tier
implemented. Authorizes the
hippo/fornixwarm-tier adjunct (separate repo,~/git/hippo) + a striatum-native read-only hot tier (recall.*over the daemon's own artifact stream, scaffold-time digest injection, default-off redactedlane_trajectoryexport,progress_note-only git eviction). The hot tier shipped (recall.*,RecallMemory, commit80dc82e7) with C1-C4 discharged; only the runtime evictor (D193) remains deferred. Nomemory.*capability, no retrieval-dependent state transition. - RFC 0118 (#240) implementation is on main and the issue is closed:
frozen verdict provenance stamps, override posture/basis, completion
provenance gate +
needs_operatorescalation, durablerun_completion_record, andrecovery.invalidate_jobsupersede receipts. The accumulated post-v2.31.0 work shipped in v2.32.0. - Live housekeeping:
doctoris OK (0 problems) but still warns that the local Codex config points at a stale MCP endpoint unless launched throughstriatum codex. The worktree-ref-safety/run-drive residue in #259/#260/#261, the config crash-loop recovery in #262, and the blob-gated artifact-anchor doctor check in #217 are closed onmain.
Next Actions
- Keep current-state docs truthful: after every issue-closeout or release,
refresh this brief, README status, docs index summaries, and any roadmap/todo
surface that claims to list current open work; the README version row is now
mechanically gated by
make check-docs. - Work the active defect frontier first: #612, #579, #576, #512, and #506 are the current operator-facing recovery defects.
- Bound doctor warnings: keep
problem_count=0, but turn the warning channel into named classes with allowed baselines/deltas.
Blockers / Open Issues (24)
Open GitHub tracker state rechecked on 2026-06-27 before the v2.39.0 release.
- Active defects / recovery: #620 adjudicate ledger published but not anchored, #617 running-run barrier mismatch variant, #612 cross-user falsifier handoff publish wedge, #579 idle-stalled builder lane blocks downstream jobs, #576 lease-warmed lane never completes, #512 boot-epoch rotation reseal Slice B now unblocked by RFC 0168, #506 reviewer over-rejection/blob-exhaust legibility.
- Reliability/security follow-ups: #592 RFC 0142 P4 activation/verify run, #590 gate-compute timing, #589 structural-root precheck, #588 falsification recursion tripwire, #587 auto-bank/rescaffold clean revision cycles, #585 RFC 0143 Slice B build now unblocked by per-lane security principal.
- Feature/design backlog: #619/#618 RFC 0170 P1 follow-ups, #611/#610/#609 RFC 0167 P3/P2/P1, #578 schema-drift refuse-to-serve flip, #577 verified-stale rung, #572 RFC 0142 P5 rehearsal receipt, #569 provider-auth absence-of-success alerting, #387 events/audit-log partitioning, #380 remaining git-hoist lock holders.
Hazards / Do Not
- Operators scaffold dogfoods; they do not implement role artifacts.
- Hold the anti-bets (review §F.4 + decision log): no new shapes while the RFC 0106 freeze holds; no daemon auto-spawn before the D175 evidence trigger; no Engram/memory absorption (D179 boundary is narrow and test-gated); no hosted/multi-tenant anything.
- Stay on the daemon boundary: no direct Postgres, no tmux/marker-file state, no telemetry/transcript capture without a product decision.
- Trust only returned JSON; verify every state-changer with a read; state-changing calls sequential.
- The daemon runs as the system unit (
/etc/systemd/system/striatumd.service); restart withsudo systemctl restart striatumd(NOT--user).make installdoes NOT restart it; build from a clean worktree offorigin/main(not the contended shared tree), then verify the running/proc/<pid>/exesha. - The user-scope
striatumd.serviceis masked/removed — do NOT recreate it viastriatum daemon install. It lacks the owner-DB env (STRIATUM_OWNER_DB_URL…) so it crash-loops ondaemon_pg_owner_bootstrap_failedand conflicts with the system unit (recurring daemon-down incidents). Fix the install path before un-masking — see #509. - CI always runs pgtests; check
gh run listbefore assuming green. Reproduce lint locally with golangci-lint v2.12.2 (pinned ingo/Makefile; absent binary = invisible red). - Concurrent agents sweep the shared tree: commit deliverables same-turn;
land code via isolated worktrees off
origin/main.
Pointers
STRIATUM_DEEP_ARCHITECTURE_REVIEW_CLAUDE_FABLE_5_2026-06-11.md— the standing work-list (§E missing pieces, §G recommendations)docs/rfcs/0118-gate-run-completion-on-attested-provenance.mddocs/rfcs/0119-warm-tier-memory-boundary.md(+ hippo RFC 0001)docs/rfcs/0120-await-packet-idle-exit-and-wake-boundary.mddocs/rfcs/0116-zero-operator-touch-dag.md/0117-worktree-branch-ref-safety.mddocs/decisions/decision-log.md(D161–D181 cover this brief's span)CHANGELOG.md(v2.10.0 → v2.39.0 + Unreleased)docs/reference/command-authority-matrix.md(lags 16 live methods — reconcile on contact, per AGENTS rule)