Skip to content

laptop hatch-tool copies drift from the sandbox primaries: quota-recorder FLEET path broken on laptop, hatch-dispatch-clone runtime-db-export is a stale partial copy #6830

Open

Description

@dezren39

Found during the 2026-11-07 DB rename program (#6619), while repointing runtime-db-export and quota-recorder across machines.

  1. The LIVE copies are the sandbox ones. The paused runtime-db-export cron is a sandbox agent job whose body drives ~/tools/runtime-db-export (sandbox). The quota recorder's working home is also the sandbox (its FLEET path ~/tools/bin/fleet resolves there via symlink). Both were repointed to fleet-mirror / fleet-platform on 2026-11-07 and the sandbox hatch commits pushed; the laptop ~/hatch clone fast-forwarded cleanly to the same code.

  2. Latent break: laptop ~/hatch/tools/quota-recorder.py resolves its secrets via FLEET = ~/tools/bin/fleet, which does NOT exist on the laptop (the laptop binary is ~/.local/bin/fleet). A manual laptop run on 2026-11-07 failed with turso-error FileNotFoundError: '/home/user/tools/bin/fleet' and left its record pending. Harmless today (the laptop copy is not the live home; the JSONL is backup-of-record and the record stays pending), but anything that ever runs the recorder on the laptop silently stops landing quota records. Its shipped systemd unit is also stale (HOME=/home/hatch, 'Supabase landing' description, timer not installed).

  3. ~/git/hatch-dispatch-clone/tools/runtime-db-export on the laptop is a stale PARTIAL copy: no turso_client.py at all (pre-Turso layout), docstrings still naming muse-mirror. It cannot run standalone, but its presence invites exactly the 'which copy is live?' confusion the rename program had to burn time settling.

Fix direction: decide per tool which clone is canonical, delete or clearly mark the stale copies (dispatch-clone is a test fixture — if it must stay, pin it and label it), and make quota-recorder resolve the fleet binary by PATH lookup with a ~/tools/bin/fleet fallback instead of one hardcoded absolute path.

Acceptance criteria

  • Each named tool (quota-recorder, runtime-db-export) has one explicitly named canonical clone, recorded in the issue resolution, and stale copies are deleted or clearly marked as non-live fixtures.
  • quota-recorder resolves the fleet binary by PATH lookup with a ~/tools/bin/fleet fallback (no single hardcoded absolute path), and a manual laptop run lands a quota record without FileNotFoundError.
  • The stale partial copy in ~/git/hatch-dispatch-clone is removed, or pinned and labelled as a test fixture that cannot be mistaken for the live copy.
  • The shipped quota-recorder systemd unit is corrected (HOME, description) or removed if the timer is not installed.

Activity

  1. developing-today commented on Nov 7, 2026

    @developing-today
    Contributor
  2. added
    kind/infrastructureInfrastructure / host-portability work
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/sSmall: expected under 2 hours of work
    area/infraInfrastructure, deployment, and operations
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 7, 2026
  3. dezren39 commented on Nov 7, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: #6619 (DB rename program, where this was found). No merged PR found in this pass that resolves the drift — the repointing in #6619 fixed DB names, not the laptop path/canonical-copy problem described here.

    Notes: the failure is latent (the laptop copy is not the live home today), so normal priority. The concrete break is the hardcoded ~/tools/bin/fleet path in the laptop quota-recorder copy; the rest is canonical-copy hygiene.

    Risks: deleting the dispatch-clone copy could break a test fixture that depends on its shape — verify before removal, otherwise pin + label it.

    Suggested approach: decide canonical clone per tool first, fix the fleet-binary resolution in quota-recorder, then remove/mark stale copies and fix or drop the stale systemd unit.


    🤖 Agent note · handed off

  4. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 7, 2026
  5. dezren39 commented on Nov 8, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  6. developing-today commented on Nov 8, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

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

    area/infraInfrastructure, deployment, and operationseffort/sSmall: expected under 2 hours of workkind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/needs-triageNot yet triaged; needs a first looktask/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