Skip to content

epic(quota-plane): Stage 2 — 15-minute quota gathering in the PM stack, token adapters, automated pool decisions #1149

Open

Description

@dezren39

Stage-2 epic under #1047, per Drew's direction 2026-10-26 22:41 CDT. Design: quota-plane-design-2026-10-26.md (usage-billing-hub goal files), Stage 2. Parent context: epic #1047.

Direction, in Drew's terms: quotas and plan details gathered routinely at every regular interval (~15 minutes) by a process inside the PM stack; that data informs automated decisions the OpenCode pools make; Muse may change the plumbing so the stack reaches quota data directly — for browser-only dashboards, pull from a file or use the browser token directly against the undocumented API the dashboard page calls; all but two providers are reachable that way, and the two exceptions carry their own integration-plan issues (login -> capture token -> undocumented dashboard API); visibility stays fully current, with a pull on page load when data is older than ~1-5 minutes.

Priority order (children filed in this order; horizons on org Project #4):

  1. P0 Gatherer service (15-min tick, quota-current)
  2. P0 Token-adapter framework
  3. P0 Exceptions audit — name the two
  4. P1 OpenCode consumption contract
  5. P1 Adapters: ClinePass / OpenCode Go / Claude / Command Code
  6. P1 Exception integration: Meta
  7. P1 Exception integration: Google/Antigravity
  8. P1 Aggregator lazy refresh on page load
  9. P1 Daily model + route audit (stewardship block LIVE 2026-10-26)
  10. P2 Quota-plane visibility (gatherer health on /quota)
  11. P2 Stage-3 design (predictive quota ops)

Acceptance for the epic: every held provider's quota arrives via the gatherer at 15-minute cadence (or its exception issue closes with the file-export fallback live); OpenCode placements consume the fresh data; /quota freshness is self-evident per provider.

Acceptance criteria

  • Every held provider's quota arrives via the gatherer at ~15-minute cadence, or its exception issue closes with the file-export fallback live.
  • OpenCode placements consume the fresh quota data.
  • /quota freshness is self-evident per provider.

Activity

  1. developing-today commented on Oct 27, 2026

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

    @dezren39
    MemberAuthor

    Children filed 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.
  3. added
    kind/featureNew feature or capability request
    source/humanFiled directly by a human
    priority/highImportant and time-sensitive
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    meta/epicEpic / bundle of related 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 (protocol §5), 2026-10-28.

    • Related: Stage-2 epic under epic(usage-hub): SaaS/cloud services completion — v2 live collectors, daily console reads, v3 reconciliation #1047 (quota plane); design: quota-plane-design-2026-10-26.md (usage-billing-hub goal). Stage 1 context lives on the parent epic.
    • Still live: the 15-minute gatherer + placement consumption is not live; the body's own acceptance line (gatherer cadence, placements consuming fresh data, /quota freshness self-evident) is unmet.
    • Body edit: the acceptance existed only as prose — appended a structured ## Acceptance criteria section distilled verbatim from it; original body preserved above.
    • Risks: the two browser-only provider exceptions can silently stall the epic — their exception issues need to exist and be named here before the cadence work starts, or Stage 2 reads done while two providers are dark.
    • Suggested approach: gatherer cadence first with per-provider freshness surfacing, then wire OpenCode placement consumption, then close out the two exception paths (integration or file-export fallback).
    • Labels normalized: kind/feature, source/human, status/needs-triage, priority/high, effort/l, app/pm-stack, meta/epic, meta/enriched.
  5. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Epic leg filed: #2490 — unify(quota-plane): one quota read path — server endpoint, CLI, and aggregator gatherer must share the direct credential-store read.

    This is the read-path unification leg of this epic, filed at Drew's direction 2026-10-29 ("there was supposed to be a unification in the 3 quota read methods"). It names the three divergent readers (OpenChamber server credential projection / CLI server-first+store-fallback / gatherer direct store read), tonight's divergence evidence (developing-today/openchamber#858 Antigravity, #1301 Meta exporter), and the acceptance test that all three surfaces return identical windows in the same tick. It absorbs #1169's read-path half by reference (token capture stays with #1169) and depends on the #1167/#1301 Meta leg, expedited tonight.

  6. 2 remaining items

  7. 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
  8. 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 7205 (triage, queued, priority 50) 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

  9. added
    work/assignedAn agent holds this item via the queue (claimed task)
    queue/claimedA queue worker has claimed the task for this item
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: handed_off (task 7205)

  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: picked_up (task 7205)

  12. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged (task 7205)

  13. removed
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    on Nov 3, 2026
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, cloudpriority/highImportant and time-sensitivesource/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