Skip to content

epic(usage-hub): SaaS/cloud services completion — v2 live collectors, daily console reads, v3 reconciliation #1047

Open
2 of 10 issues completed

Description

@dezren39

Epic for the remaining Usage & billing hub work (goal_4bd599c9ab26). Filed 2026-10-26 at Drew's direction ("make issues for all these and update all relevant locations; ensure all is documented") after the SaaS/cloud services status review in the SaaS side chat.

State this epic starts from (verified 2026-10-26)

Cadence ruling (Drew, 2026-10-26)

The design's Q8 default — a WEEKLY console-reads block — is superseded: weekly is too slow. New cadence (implemented by the console-reads child issue):

  • stewardship (hourly) checks staleness every cycle and flags any card past its cadence;
  • full console-read refresh DAILY;
  • immediate re-read on a wall hit, at >=85% of a window, or whenever the measurement gate needs a <=60-minute-old read for placement.

Design / sources

  • Design: hatch-personal workspace/goals/usage-billing-hub-token-quotas-per-service-saas-limits/files/hub-design-2026-10-25.md (§2 sources, §5 phasing: v2 live collectors, v3 reconciliation)
  • Research record: ~/workspace/ai-subscriptions/master-tracker.md + evidence-and-interpretation-baseline-2026-10-20.md
  • Presentation source: stewardship hidden_files/visibility/quota-view.md Parts (a)/(b)

Tracked elsewhere — link, do not duplicate

  • Plaid Citi linking: account-connection campaign Bump build/buck/preludes/buck2-prelude from 3a02ea3 to d956689 #15 (goal_6f48d745f802) + plaid-nudge crons; Drew's own browser only.
  • OCI signup: OCI servers thread + CPCOE-29381 follow-up (due 2026-10-27); PAYG decided 2026-10-22.
  • GitHub Actions/Codespaces efficiency: goals goal_49a7f35a16de / goal_86b7469e123e / goal_fbdde57a43cd (the GitHub billing collector child feeds these).
  • Laptop repeat of the account campaign: account campaign goal end-state.

Acceptance for the epic

Every child issue closed or explicitly re-scoped by Drew; /quota shows live or daily-refreshed values (with measured-at + source) for every held service; the dashboard links the research record (baseline, tracker, free-services list) instead of leaving it only in workspace files.

Children (native sub-issues — curated 2026-11-01 via #1217, task 4928)

This epic's child set is now native sub-issues (previously body-text links only). Attached, all OPEN at curation:

Already closed at curation (program history, not attached — the fix scope covers open issues): #1114, #1117, #1119.

#1149 ruling: #1149 is attached as a sub-epic of this epic, per its own body ("Stage-2 epic under #1047", Drew's direction 2026-10-26). Scope boundary: this epic (#1047) owns the usage-hub program as a whole — v2 live collectors, daily console reads, v3 reconciliation, hub presentation; #1149 owns the quota-plane Stage-2 slice inside it (15-minute quota gathering, token adapters, automated pool decisions). Quota-plane implementation issues belong under #1149, not directly under this epic.

Excluded, deliberately: #1054 (blocked(usage-hub): Open Design quota instrumentation) carries user/owned — a hard-stop label — so fleet curation does not touch it; it stays unattached until Drew rules otherwise. #1217 is the curation fix itself and closes when this curation completes.

Acceptance for the epic (measurable restatement)

This epic closes when every native sub-issue above is closed (or explicitly re-scoped by Drew), AND: the v2 collectors are live (#1049, #1111), the daily console reads run at the cadence ruled above (#1055), and v3 reconciliation is operating (#1056, #1057) — i.e. /quota shows live or daily-refreshed values, with measured-at + source, for every held service.

Activity

  1. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  2. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Child issues filed 2026-10-26 (Drew's directive in the SaaS side chat):

    Docs updated in the same pass: hub design doc header (status + cadence + collector-host correction), goal GOAL.md (status/next/roadmap + this index), quota-view refresh protocol, master-tracker header.

  3. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Second filing pass 2026-10-26 22:24 CDT (Drew: "continue building this out, designing it, and finding individual tasks that have not been documented yet"). Design: hub-v2-v3-design-2026-10-26.md in the goal files. New children:

  4. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Stage-2 child epic filed as #1149 (quota plane). Its children 2026-10-26 (priority order; horizons on org Project #4):

    1. feat(quota-plane): quota-gatherer service in the PM stack — 15-minute tick, quota-current contract #1151 P0 — Gatherer service (15-min tick, quota-current) · Week
    2. feat(quota-plane): browser-token adapter framework — managed credentials, fail-closed dashboard-API clients #1153 P0 — Browser-token adapter framework · Week
    3. audit(quota-plane): name the two token-exception providers definitively #1155 P0 — Exceptions audit: name the two · Week
    4. feat(quota-plane): OpenCode pools consume quota-current — measured placement, rotation, demotion #1157 P1 — OpenCode consumption contract · Week
    5. feat(quota-plane): adapter — ClinePass via dashboard session token #1159 P1 — ClinePass adapter · Week | feat(quota-plane): adapter — OpenCode Go console, per-workspace windows #1161 P1 — OpenCode Go adapter · Week | feat(quota-plane): adapter — Claude via claude.ai session (usage API) #1163 P1 — Claude adapter · Month | feat(quota-plane): adapter — Command Code via CLI/app credential #1165 P1 — Command Code adapter · Month
    6. plan(quota-plane): exception integration — Meta (login, token capture, console API) #1167 P1 — Exception integration: Meta · Month
    7. plan(quota-plane): exception integration — Google/Antigravity (login, token capture, panel API) #1169 P1 — Exception integration: Google/Antigravity · Month
    8. feat(quota-plane): aggregator lazy refresh — pull on page load when data >5 min old #1171 P1 — Aggregator lazy refresh (>5 min) · Week
    9. feat(quota-plane): daily model + route audit — latest models incorporated, route rules cover all needs #1173 P1 — Daily model + route audit · Week
    10. feat(quota-plane): quota-plane status view on /quota — gatherer health + per-provider freshness #1175 P2 — Quota-plane status view · Month
    11. design(quota-plane): Stage 3 — predictive, self-tuning quota operations #1177 P2 — Stage-3 design (predictive quota ops) · Month
      Design: files/quota-plane-design-2026-10-26.md in the usage-billing-hub goal workspace.
  5. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    PRIORITIZATION PASS (2026-10-27, per Drew: "make sure our tasks are updated to use the more efficient pattern and that all issues are prioritized"). Every issue under this epic and the quota-plane epic #1149 now carries a Horizon on Project #4. The working queue, in order:

    Today

    • code#1344 DONE (benchmark + decision: attach-first) → code#1357 attach-first client helper — the enabler for the new default pattern; stewardship-cycle, jules-review and orchestration-pass bodies already updated to it (2026-10-27).

    Week (dated pressure first)

    Month

  6. added
    epicMeta-issue grouping multiple items (org Project Type=Epic)
    kind/featureNew feature or capability request
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    nowOrg Project gate: active priority — orchestrator adds to the board
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 1, 2026
  7. 10 remaining items

  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    Labels added (kept existing meta/follow-up + epic): kind/feature, status/needs-triage, source/human, priority/normal, now, effort/l, meta/enriched, app/pm-stack, mode/online — the #1184 set.

    Children attached as native sub-issues (10, verified via the sub_issues API): #1049, #1055, #1056, #1057, #1111, #1115, #1116, #1118, #1149, #2990.

    #1149 ruling — ATTACHED as sub-epic. Its own body declares it the "Stage-2 epic under #1047" (Drew's direction 2026-10-26), so the boundary is: #1047 owns the usage-hub program (v2 live collectors, daily console reads, v3 reconciliation, hub presentation); #1149 owns the quota-plane Stage-2 slice within it (15-minute gathering, token adapters, automated pool decisions). Quota-plane implementation issues attach under #1149, not directly here. Neither epic is closed or merged into the other.

    Exclusions (deliberate, with reasons):

    No child issue's content or labels were changed — the only change to each child is the sub-issue link itself.

  9. 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
  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

  11. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  12. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged
    Verdict: still live — keep open. This is a program tracker with no code work of its own; it closes when its children close. Triaged at current main 2026-11-03 (queue task 7621).

    Child state (fresh, sub_issues API + per-issue gh reads): 10 native sub-issues attached, 8 open / 2 closed since the 2026-11-01 curation.

    Child State Last activity
    #1049 Turso collector closed closed since curation
    #1057 charges auto-matching closed closed since curation
    #1055 master-tracker open checks open — parked 2026-11-03T05:11Z, blocked on signed-in reads
    #1056 invoice reconciliation open — blocked/escalated 2026-11-03T09:19Z
    #1111 Modal + Bitwarden SM collectors open — blocked (owner-only vault) 2026-11-03T01:18Z; collector itself landed via PR #2987
    #1115 managed quota-credential pattern open — triaged, blocked 2026-11-03T12:50Z
    #1116 self-monitoring open — in progress 2026-11-03T13:48Z
    #1118 OpenCode Go lapse handling open — queued routed to time-gated task 3018
    #1149 quota-plane Stage 2 open — sub-epic own child set
    #2990 #1116 remainder 4+5 open — blocked on collector-stop acceptance 2026-11-03T13:46Z; stale-feed threshold slice on main via PR #4914

    Coverage check: every open attached child has a live queue task (claimed, parked or blocked today) — no orphan child needs a new task from this triage. #1054 stays unattached by design (user/owned, hard stop); #1059 is an independent research triage.

    Ordering / date pressure (the one thing worth acting on):

    Body accuracy: the curated 2026-11-01 body section says the attached set was "all OPEN at curation" — that remains a true historical statement, so no body edit made. The epic's measurable acceptance still matches the live child set.

    No blocker for this epic itself. Open children carry the blockers; nothing about this issue needs escalation.
    Found via: queue claim (coverage triage)

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/lLarge: multi-day or open-ended; expect staged check-insepicMeta-issue grouping multiple items (org Project Type=Epic)kind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedmeta/follow-upFollow-up spun out of earlier workmode/onlineFully doable remotely: design, config, code, cloudnowOrg Project gate: active priority — orchestrator adds to the boardpriority/normalOrdinary priority (the default)source/humanFiled directly by a humantask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions