Skip to content

Phase 3 (audit) of #3352 — closing argv-parser inventory + argument contract statement #3353

Open

Description

@dezren39

Phase 3 of design #3352 (unknown means stop — one strict argument contract for the repo's operator scripts). Design doc: files/designs/code-operator-argument-contract.md in the keep-the-four-repos-healthy goal workspace.

Gated on Phases 1–2 of #3352 (Phase 1 = #3264 + #3252, #3287, #3281, #3278, #3296, #3297; Phase 2 = #3333, #3330, #3295, #3312) — do not start the inventory until they land.

Scope

Closing inventory audit + contract statement:

  1. Inventory every remaining hand-rolled argv parser in bin/, pm-stack/*/scripts/, pkgs/*/deploy*.mjs, pkgs/*/install*.mjs, infra/*/worker/deploy.mjs, nixos/services/*/worker/deploy.mjs, and the Go tools under pkgs/mcpx/tools/ — every process.argv / args.includes( / argv.indexOf( consumer not covered by Phases 1–2.
  2. Disposition each, in the closing evidence on this issue: (a) covered by Phases 1–2; (b) strict — fix it under this design before closing, or file it as a named follow-up issue; (c) deliberately lenient — named, with its reason (documented pass-through of trailing arguments; interactive surfaces).
  3. Named starting candidates (disposition, do not pre-judge): pm-stack/aggregator/scripts/compact-usage-snapshots.ts (validates its --months value, membership-parses unknowns), bin/provider-catalog-sync.mjs, pm-stack/aggregator/scripts/collect-fleet-feed.ts, bin/record.mjs, pm-stack/aggregator/scripts/confirm-charges-surfaced.ts.
  4. Explicit dispositions required: the pkgs/id REPL parsers (id(repl): find/search/show/peek parsers silently swallow unknown and mistyped flags — a typo'd flag vanishes and its value becomes a query #2274 — interactive, its hard-error-vs-warn pin is its own; expected disposition is deliberately-local, recorded with the reason); pkarr-worker RETENTION_SECONDS (pkarr-worker(retention): RETENTION_SECONDS is parsed with a bare Number() and no guard — '0'/'7d'/' ' schedule the deletion alarm at/before now (or NaN), so stored packets vanish right after a 204, and '1e9' never expires #3261 — an env value, expected to belong to Design: env numbers are arguments — one strict parse for boot-time configuration #2835's env contract / Phase 3 of #2835 — closing inventory audit for the env-number contract + contract docs #2837's audit; confirm and record, do not adopt).
  5. Check callers (systemd units, timers, docs, wrapper scripts) of every parser newly made strict in this phase for arguments that were previously ignored — a caller that relied on an ignored argument gets its call fixed and named in the evidence.
  6. Write the contract where operator tools are documented (script header-comment conventions / contributing docs — name the exact places in the evidence), and post the closing evidence on design issue Design: unknown means stop — one strict argument contract for the repo's operator scripts #3352.

Acceptance criteria

Activity

  1. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    status/blockedQueue or user escalation state
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 1, 2026
  2. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    Phase 3 of design #3352, filed this pass. Gated on Phases 1-2 (Phase 1 = #3264 + #3252, #3287, #3281, #3278, #3296, #3297; Phase 2 = #3333, #3330, #3295, #3312) and labelled status/blocked accordingly. Triage packet enqueued → pilot task 5061 (queue=repo-health-code-pilot, status=queued, verified by dedupe re-read). Triage: confirm scope per #3352, record the gating, enqueue the implementation follow-up once the gating clears — do not start the inventory early.

  3. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    Triage (queue task 5061, lane F, 2026-11-01T05:41Z): scope confirmed against design #3352 and the design doc (files/designs/code-operator-argument-contract.md, present in the goal workspace). This phase is a closing audit only — no implementation in the triage task, and the inventory must not start until Phases 1–2 land.

    Gating check — NOT cleared (fresh gh states, 2026-11-01T05:37–05:41Z):

    Because the gating has not cleared, the implementation follow-up packet is NOT enqueued yet (the packet conditions it on the gating clearing). Task 5061 is parked with the resume condition: all Phase 1 and Phase 2 issues above closed → enqueue the implementation follow-up packet (or split) carrying this issue's acceptance criteria intact → work the closing inventory (surfaces: bin/, pm-stack/*/scripts/, pkgs/*/deploy*.mjs, pkgs/*/install*.mjs, infra/*/worker/deploy.mjs, nixos/services/*/worker/deploy.mjs, pkgs/mcpx/tools/; explicit dispositions owed for #2274 and #3261; caller checks for newly-strict parsers; contract statement into the operator-tool docs; closing evidence also posted on #3352). Verification for the follow-up: repo test suites via CI per fleet policy; no builds on the sandbox.

  4. added
    work/assignedQueue worker lifecycle state
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 1, 2026
  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    Correction (lane F): the gating table in my triage comment above listed #3287, #3296, and #3330 as CLOSED. A fresh direct API check (2026-11-01T06:14Z) shows all three are OPEN — in fact all 11 gating issues are currently OPEN (Phase 1: #3264 #3252 #3287 #3281 #3278 #3296 #3297; Phase 2: #3333 #3330 #3295 #3312). The wrong states came from corrupted chunked tool output during my shift. The triage conclusion is unchanged and stronger: gating NOT cleared, inventory not started, follow-up packet not enqueued, task 5061 parked until every Phase 1 + Phase 2 issue closes.

  6. 34 remaining items

  7. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  8. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 2, 2026
  9. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  10. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

  11. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    on Nov 2, 2026
  12. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

  13. 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 5061 (triage, blocked, 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

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

Metadata

Metadata

Assignees

Labels

effort/mMedium: expected under 1 day of workkind/enhancementmeta/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/design-architectFiled by the repo design architect 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