Skip to content

append-usage-snapshots.ts fails on laptop: quota-view.md path ENOENT under ~/workspace #4889

Open

Description

@dezren39

Found by stewardship cycle 238 (2026-11-03 06:36 CST) during the daily console-reads refresh.

Running on the laptop per the stewardship job body:
~/tools/laptop-ssh.sh 'cd ~/git/code/pm-stack/aggregator && bun run scripts/append-usage-snapshots.ts'

exits 1 (verified twice):

ENOENT: no such file or directory, open '/home/user/workspace/goals/stewardship-commission-recurring-review-and-dispatch/hidden_files/visibility/quota-view.md'
    at async main (scripts/append-usage-snapshots.ts:79)

The script's stewardship-cycle branch reads quota-view.md from a ~/workspace/goals/... path on the laptop; that tree does not exist on the laptop (the goal workspace lives on the sandbox). The same step succeeded at stewardship cycle 215 on 2026-11-02 (20 records appended), so the laptop-side path state changed since, or the script's expected sync of the view to the laptop stopped.

Effect: dated quota reads written by the daily refresh are not being appended to the hub writers' outbox / laptop snapshot store until this is fixed.

Related: #1205 (usage snapshots ingestion / writer health). Fix options: point the script at the actual view location, restore the laptop-side copy/sync it expects, or have the writer report this as unhealthy under #1205's health reporting.

Activity

  1. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  2. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    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 7922 (triage, queued, priority 30) 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

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

    @dezren39
    MemberAuthor

    agent-note:v1
    state: picked-up
    task 7922 (triage, lane code-j, direct) claimed 2026-11-03T13:44Z. Revalidating issue #4889 fresh at current main: script path logic in pm-stack/aggregator/scripts/append-usage-snapshots.ts and the laptop-side quota-view.md location.
    Next: root-cause verdict comment, scoped fix task if live, then complete task 7922.

  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged
    task 7922 (triage, lane code-j) — verdict: LIVE, root cause verified fresh 2026-11-03.

    Evidence:

    • Script at laptop main 4c75cc8, pm-stack/aggregator/scripts/append-usage-snapshots.ts: quotaViewPath defaults to ~/workspace/goals/stewardship-commission-recurring-review-and-dispatch/hidden_files/visibility/quota-view.md (QUOTA_VIEW_PATH overrides); registry / provider-usage / outbox defaults all sit under ~/workspace/goals/keep-the-four-repos-healthy/hidden_files. The quota-view read is the only non-tolerant one (registry read already falls back to empty on error).
    • Laptop today: ~/workspace/goals contains ONLY keep-the-four-repos-healthy, and its hidden_files holds only lane-handoff / queue-signal JSON — no quota-view.md, no provider-quota-registry.md, no provider-usage-snapshot.json. The stewardship goal tree does not exist on the laptop at all.
    • Sandbox today: all inputs exist; quota-view.md refreshed 2026-11-03T13:41Z.
    • The stewardship cron definition (USAGE SNAPSHOT APPEND step) mandates running the script ON THE LAPTOP per Drew 2026-11-02 (no sandbox-local execution) and contains no sync or env step — so the laptop run hits ENOENT at the view read before deriving any records. Prior successes were under the pre-ruling execution arrangement. The laptop outbox location itself is intended (collect-fleet-feed.ts uses the same default there and the script mkdir-creates it) — only the INPUT view (and optionally the registry) never arrives on the laptop.

    Scoped fix enqueued as task 8039 (small_fix, repo-health-code-pilot, packet packet-4889-fix.json): sync the just-written quota-view.md (and registry if cheap) from the sandbox to the laptop at the default paths, or invoke with QUOTA_VIEW_PATH / QUOTA_REGISTRY_PATH pointing at synced copies — updating the stewardship cron definition + live job per the cron-definitions-are-truth rule; optional hardening so a missing view exits with a one-line actionable error naming QUOTA_VIEW_PATH. Moving execution back to the sandbox is excluded (barred by the 2026-11-02 ruling). Related: #1205 (writer health generally; this break is tracked here).
    Next: task 8039 implements; this issue closes with evidence when the laptop append run exits 0 in a cycle-shaped run.

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

    @dezren39
    MemberAuthor

    agent-note:v1
    state: done (triage)
    task 7922 completed as triaged 2026-11-03 (lane code-j). Verdict comment 6605555878 stands; scoped fix is task 8039 (queued). Claim labels removed; queue/queued now mirrors task 8039.

  8. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: blocked (host access — fix must run from the sandbox host)
    worker: repo-worker-code (lane c8b9355e-319a-4640-8096-7ad19480d151, openchamber scheduled lane)
    task: 8039 (small_fix)

    What I verified on the laptop (this run, fresh):

    • pm-stack/aggregator/scripts/append-usage-snapshots.ts:44-49 still defaults quotaViewPath to ~/workspace/goals/stewardship-commission-recurring-review-and-dispatch/hidden_files/visibility/quota-view.md; ~/workspace/goals on the laptop contains only keep-the-four-repos-healthy. So the ENOENT is exactly as triaged by task 7922.
    • The only quota view on this host is ~/.local/state/pm-aggregator/quota-view.md, mtime 2026-10-31 21:25, header "Built: 2026-10-25". Repointing the default there would append three-day-old reads as current — worse than failing, so I did not do it.
    • This lane runs on the laptop and has no path back to the sandbox: ~/tools/laptop-ssh.sh does not exist here (it is a sandbox-side tool), ~/.ssh/config has no host entry, and no sandbox peer is reachable. The code half of this fix (a clear actionable error naming QUOTA_VIEW_PATH) does not make the step work, so shipping it alone would close nothing.
    • The definition half is sandbox-side by design: hatch-personal holds workspace/goals/stewardship-commission-recurring-review-and-dispatch/crons/hourly/stewardship-cycle__interval@1h.md, and the cron-definitions-are-truth rule needs the live job changed with cron.update — a tool this host does not have. The laptop's ~/git/hatch-personal worktree is also not usable right now (every tracked file staged as deleted), so I left it alone rather than risk that state.

    What the sandbox lane needs to do (exact, per this task's scope):

    1. In stewardship-cycle__interval@1h.md, in the USAGE SNAPSHOT APPEND step, add a copy before the laptop run: push the just-written quota-view.md (and provider-quota-registry.md if cheap) to the laptop at the script's default paths — e.g. ~/tools/laptop-ssh.sh 'mkdir -p ~/workspace/goals/stewardship-commission-recurring-review-and-dispatch/hidden_files/visibility && cat > ~/workspace/goals/.../quota-view.md' < <sandbox file>.
    2. cron.update the live job from the edited definition, commit the definition in hatch-personal.
    3. Optional hardening: in append-usage-snapshots.ts, catch the view read and exit non-zero with a one-line error naming QUOTA_VIEW_PATH instead of the raw ENOENT stack.
    4. Verify end-to-end on the laptop: bun run scripts/append-usage-snapshots.ts exits 0 and appends (or reports no new records) against the freshly copied view.

    Blocking task 8039 with reason class blocked and this text so the queue can route it to a sandbox lane; it is not a packet defect and not a worker failure.

  9. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    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

queue/blockedQueue or user escalation statesource/creatorFiled by the new-issue-creator jobstatus/blockedQueue or user escalation statetask/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