Skip to content

[Epic] Backlog burn-down: live stability, sibling waits, operational conformance (2026-10) #154

Open

Description

@gregoryfoster

The whole open backlog of CannObserv/replicator, burned down one child at a time: live stability first, then the work sibling repos wait on, then operational conformance. Done when the host's disk is under a canonical GC, the capture consumer is live, the co-core pin tracks the current minor, and Dependabot proposes action bumps. Every other open issue is then either parked with a trigger or waits on a named external with an observable unblock condition.

Order

The operator's rule, verbatim: "Prioritize bug fixes, issues other repos are waiting on, operational conformance and stability. Older issues may need to be re-evaluated for continued relevance."

Tiebreaks the coordinator added, numbered so the operator can challenge one:

  1. A hazard measured live on the host ranks as a bug. Host disk GC: adopt provisioner#61's canonical GC + headroom sensor on co-replicator (root hit 97%) #148 is the only one: root at 81% and rising (see Measured state).
  2. Unblocked before blocked. A blocked child's interim (a hand step) can still run ahead of its turn.
  3. A multi-minor co-core pin move lands alone, in an isolated venv, before any behaviour that needs the new version (the Converge storage on the cluster content-addressed model #114 rule, kept from [Epic] content.fetch-policy producer moves to Archiver (parked until F1) #135).
  4. A shared runtime is built once, by the child with the most sibling waits. Viewport capture: consume the capture command, render headless, store, publish the stored-capture fact #138 builds the browser runtime and Headless-browser fetch path for JS-rendered pages (re-sited from watcher#3) #63 reuses it.
  5. Context freshness: the child whose surface just changed goes next.

Overrides:

Boundary decisions

Exit criterion

#148, #153, #138, #76, and the bugs #159 and #156, are closed and verified live (bugs added 2026-10-26). Every other open issue is parked with a trigger, or waits on a named external with an observable unblock condition.

Verify recipe

Tier 1 — live stability

Tier 2 — sibling waits

Tier 3 — operational conformance

Waits

Ref Who waits On what Asked Unblock condition
gregoryfoster/skills#469 #151 the release-deploy template on the issue the template merged and vendored here
CannObserv/cannobserv#554 #76 (uv half), and the red security-update runs an index Dependabot's uv updater can resolve on the issue the index is served and declared as a registries: entry
CannObserv/broker#116 us (verification) broker's acladmin read-back of replicator.capture and an ACL LOG check 2026-10-26, on the issue the read-back posted there
CannObserv/archiver#380 us (verification); them for the rest Archiver issuing content.capture go-ahead posted 2026-10-26 the first stored a capture and published capture_stored in our journal
CannObserv/archiver#411 them #138 (met) and their own design — —
CannObserv/archiver#379 them #63 — the render path deployed

Parked

Ref Re-entry trigger Last re-read
#64 WACZ/WARC capture research CannObserv/archiver#408's design settles the producer and the trigger. Then rescope #64 to it, or close it for the Replicator issue that design files 2026-10-24
#135 [Epic] content.fetch-policy producer moves to Archiver its own parked epic and thread. This epic doesn't re-hold it 2026-10-24
#144 After F1: retire the "until F1" wording held by #135: CannObserv/watcher#374 closed and CannObserv/archiver#366's producer live. CannObserv/archiver#366 closed 2026-10-26, deployed dark (ARCHIVER_FETCH_POLICY_PRODUCER unset until F1); CannObserv/watcher#374 open 2026-10-26

Sibling replies owed

Verification debt

What is unverified Why it was skipped How to discharge it Discharged by
A real capture end to end (capture_stored on content.artifacts) Replicator can't XADD to content.capture; Archiver hasn't issued yet the journal shows stored a capture and published capture_stored, and XPENDING content.capture replicator.capture returns to 0 (open) — CannObserv/archiver#380
replicator.capture read back, and ACL LOG clean XINFO GROUPS is denied to replicator broker posts its acladmin read-back (open) — CannObserv/broker#116

Accepted limitations

Standing checks

Watching

  • Broker-unreachable windows. One on 2026-10-22, 04:13–04:16Z: 8 failed cycles, then recovered with no restart. Threshold: a window that exhausts the boot budget, or recurs daily. Since 2026-10-24.

Measured state

Rewritten from scratch at each check-in, never appended to.

  • Production runs build 9b37afe (Viewport capture: consume the capture command, render headless, store, publish the stored-capture fact #138), active since 2026-10-26T16:42:31Z with NRestarts 0. Capture has been enabled since 16:42:36Z (REPLICATOR_CAPTURE_ENABLED=true). The unit matches deploy/replicator.service: Delegate=yes, DelegateSubgroup=worker, KillMode=mixed. The browser/ cgroup has memory.max 1610612736, swap 0, oom.group 1 and 512 pids, and is empty at idle. main is at 9b37afe. Measured 2026-10-26.
  • Since go-live the journal is 26 lines, all INFO, including 2 stored blobs. No capture command has arrived yet. Measured 2026-10-26.
  • The blob backend is the object store, so no retention sweeper runs in production: 0 sweep lines in 30 days. Measured 2026-10-26.
  • Root is 80%, 3.8G free. Viewport capture: consume the capture command, render headless, store, publish the stored-capture fact #138's runtime added about 416M; the client installs have been flat since 2026-10-24. Measured 2026-10-26.
  • Context: AGENTS.md is at 5989 of 6000 [estimate]. These reference docs are within 3% of their 10000 budget: COMMANDS 9997, ENVIRONMENT 9964, replicate issuer contract 9893, fetch outcome reference 9840, boundaries 9838, CONVENTIONS 9761, STREAMS 9754, fetch issuer contract 9723. Measured 2026-10-26.
  • Dependency advisories: dev-only virtualenv 21.7.1 (23) and filelock 3.32.2 (3), from OSV against uv.lock. Measured 2026-10-26.
  • The skills submodule is at ab26209b, which predates maintaining-host-disk (upstream at 5f3a3dd0). Measured 2026-10-26.

Overlaps

Surface Items
the near-budget reference docs (see Measured state) #156, #63, #159 (STORAGE.md)
AGENTS.md (5989 of 6000) #63, #151, #148 (skills list)
pyproject.toml, uv.lock #160, #76 (pyyaml), #63
.github/workflows/ci.yml #76, #151
the browser runtime #63 (reuses #138's)
src/worker/egress.py DestinationGuard #156, #63
skills-vendor/ submodule #148, #151

Log

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions