Skip to content

design(pm-stack): SLOs + self-healing for the PM stack itself — freshness SLOs with error budgets, watchdog remediates before alerting #1260

Open

Description

@dezren39

Part of epic #1184 (PM stack coherence — ideal-system design series, 2026-10-26).

Why

The stack's own reliability is currently vibes: pages degrade silently, the watchdog concept (#1148) alerts after the fact, and common failures (collector stopped, feed not pushed, a facet down) wait for a human or an hourly job. The ideal stack declares per-facet freshness SLOs with error budgets on the health page, and the watchdog remediates the known failure classes itself — restart the collector, re-push the feed, re-render config — escalating to Drew only when remediation fails or budget burns.

Design questions to answer

  • SLO definitions per facet (feed age, quota read age, orchestration freshness, per-service up): targets, windows, and how budget remaining is computed and displayed.
  • Remediation catalogue: which failures are auto-fixable (collector restart, feed re-push, aggregator restart, tunnel restart), with what guardrails, attempt caps, and cooldowns?
  • Verification after remediation: how does the watchdog prove the fix worked before standing down, and where is the attempt logged?
  • Escalation: what pages Drew (via the PWA/push design) vs lands in NEEDS ORCHESTRATOR, and how does a burning error budget change that threshold?
  • Safety: what the watchdog must never do (data writes, deploys, credential changes) and how its own failure is detected.

Acceptance

Acceptance criteria

  • A design note answering every question listed under "Design questions to answer" is landed in the repo doc/ tree and linked from this issue.
  • Implementation issues are filed and linked as sub-issues of epic epic(dashboard): PM stack coherence - single-URL, fresh data, triage-able, hierarchical #1184 (developing-today/code), each with its own acceptance criteria — this design issue does not itself carry implementation work.
  • Every open question that needs Drew is named explicitly in the design note (not buried in prose).
  • The remediation catalogue carries per-action guardrails, attempt caps, and cooldowns, and the design names what the watchdog must never do (data writes, deploys, credential changes).

Activity

  1. added
    kind/featureNew feature or capability request
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. added
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 28, 2026
  4. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    Intake review

    Fleet-monitor intake pass (2026-10-28T02:40:00Z): this issue was missing a priority/* label and/or the standard ## Acceptance criteria section and was not yet meta/enriched. The criteria section has been appended to the body (original text preserved verbatim above it) and labels normalized.

    Related: Epic: #1184 (PM stack coherence design series). Siblings in the same series were intake-enriched in prior monitor runs (#1264–#1277).

    Notes: Design-series issue (SLOs + self-healing), filed 2026-10-27 by Drew as part of the #1184 batch; body is well-formed (Why + design questions + its own Acceptance section). Still live: merged-PR search this run returns only unrelated PRs whose text coincidentally contains the number — none resolves or implements this design.

    Risks: Design-only stall risk (see tail).

    Suggested approach: This is one of the #1184 PM-stack coherence design series; its own "Acceptance" section already states the bar (design note in doc/ + implementation sub-issues), and the appended criteria restate that in the fleet's standard heading so the monitor and queue can gate on it. Risks: design-only items can sit silently — per house rules a design with no implementation link is flagged by the next sweep, so the follow-through that matters is the sub-issue filing, not the note alone. Suggested approach: answer the design questions against the current aggregator/orchestrator code (cite file:line), land the note, file the implementation sub-issues in the same pass.

    🤖 Agent note · state: handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-27 21:19 CDT
    • Found via: monitor reconciliation (intake enrichment duty)
    • Task: Intake enrichment — acceptance criteria appended, labels normalized, this review posted; the item itself is not being worked by the monitor.
    • Expectation: unenriched → enriched; routing/work happens through the normal queue/sweep paths.
    • Links: n/a
  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · state: picked up

  6. 7 remaining items

  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Agent note — picked up / fresh triage (queue task 2521, openchamber-scheduled-lane, 2026-11-03)

    Issue remains OPEN with the original design acceptance: a doc/ design note answering five SLO/remediation questions plus implementation sub-issues under epic #1184. Revalidated current state: watchdog detector exists (pm-stack/aggregator/src/watchdog.ts, PR #2431 / issue #1148), but no design note or implementation issues for #1260 exist. The prior task’s blocker was accurate: no bounded implementation fix should be improvised from this design issue.

  8. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    status/blockedQueue or user escalation state
    queue/blockedQueue or user escalation state
    queue/claimedQueue worker lifecycle state
    on Nov 3, 2026
  9. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Agent note — blocked on packet type (2026-11-03)

    Fresh triage confirmed the design work remains and is not resolved by the existing watchdog detector. The repo-queue task packet schema allows only triage, small_fix, pr_shepherd, and ci_investigation; it has no design/documentation execution kind, so a correct follow-up packet cannot be enqueued. Blocked with packet_defect pending queue design-kind support or direct design-workflow routing. No code or design was improvised.

  10. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  11. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 2521 (triage, blocked, priority 40) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  12. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Specialization filed: #6031 (browser-dependent quota watchdog) is this issue's remediation-catalogue pattern applied to quota sources whose only read path is a logged-in console (Mistral first). Its catalogue entries — CDP session re-validation, browser re-login via standing SSO, escalate-to-browser-agent — with attempt caps (2/rung/incident), disk-persisted cooldowns, and the never-list (no quota-data writes, no credential changes beyond re-storing a session under its registered name, allowlist origins only) are written to fold into this issue's catalogue rather than live as a parallel framework. Escalation split follows this issue's rule: remediation first, Drew only on human-blocked or failed remediation.

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

Metadata

Metadata

Assignees

Labels

app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/blockedQueue or user escalation statequeue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions