Repository navigation
Open
Labels
effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/enhancementpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)Queue task is parked (waiting on CI, time, or an event)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobstatus/parkedDeliberately paused with a recorded resume conditionDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Description
Phase 3 of #2835 — closing inventory audit for the env-number contract, and the contract written where the next service will meet it
Design: #2835 (env numbers are arguments — one strict parse for boot-time configuration). Design doc: files/designs/code-env-config-strict-parse.md in the keep-the-four-repos-healthy goal workspace (design-architect pass 22, 2026-10-30; audited against origin/main 69cc1813).
Gated on Phases 1–2 of #2835 (Phase 1 = #2823 + #2786 + #1809 + #2096, bin/ proxies; Phase 2 = #2161 + #2758 + #2172, pm-stack services) — this phase starts only when both have landed, hence status/blocked. This issue closes design #2835 with its evidence.
Scope
- Inventory. Grep the repo's service/script entry points for every remaining numeric environment parse (
Number(process.env…,Number(env.…,Number(s(env.…,parseInt(/parseFloat(on env values) inbin/,pm-stack/,pkgs/service entry points and fleet scripts. Known remainder from the Design: env numbers are arguments — one strict parse for boot-time configuration #2835 audit (origin/main69cc1813):pm-stack/aggregator/scripts/gather-quota.ts:103—const timeoutMs = Number(process.env.QUOTA_GATHER_TIMEOUT_MS ?? 15_000);(bare; a NaN/negative/>2³¹ value reaches the gatherer's fetch deadlines unchecked)..opencode/skills/jules-automate-github-issues/scripts/fleet-merge.ts:28—MAX_RETRIES = Number(process.env.FLEET_MAX_RETRIES ?? 2).
- Disposition each site in the closing evidence on Design: env numbers are arguments — one strict parse for boot-time configuration #2835: converted to the contract (digits-only spelling, kind range — port 1–65535, millis 1–2³¹−1, count ≥1, id positive; boot failure naming the variable) or explicitly exempted with a named reason. Expected exemptions: test-only
TEST_PORT(pkgs/id/e2e/playwright.config.ts:37, dev-only with a|| 4173fallback) and documentation examples (e.g. the Sentry reference under.agents/skills/). Sites that grew since the audit get the same disposition — converted, or filed as a named follow-up under Design: env numbers are arguments — one strict parse for boot-time configuration #2835 before this phase closes (never silently left). - Write the contract down where a new service meets it: a short "environment numbers" section in
pm-stack/README.md, and the contract stated in thebin/proxy-port.mjsheader alongside the existing bin proxies: *_PROXY_PORT parsed with bare parseInt — invalid values crash opaquely or bind the wrong port #483 note — antigravity-direct: ANTIGRAVITY_DIRECT_PORT / _TIMEOUT_MS are bare Number() — bypasses the house strict port helper, so bad ports crash with a stack or bind the wrong port, and bad timeouts start healthy then 502 every request #2823 happened because a new door never met the existing helper; the docs are the fix for that failure mode, not decoration.
Acceptance criteria
- Inventory of numeric env parses (per the grep scope above) posted as evidence, every site dispositioned converted / exempted-with-reason; no site left undispositioned.
-
QUOTA_GATHER_TIMEOUT_MS(gather-quota.ts) andFLEET_MAX_RETRIES(fleet-merge.ts) parse per the contract (millis / count kinds), or carry a named exemption reason in the evidence. -
pm-stack/README.mdstates the env-number contract (spelling, kind ranges, boot-failure rule) andbin/proxy-port.mjs's header states it for the bin/ family. - Design issue Design: env numbers are arguments — one strict parse for boot-time configuration #2835 is closed with this phase's evidence attached (its acceptance requires the audit evidence).
agent-note:v1 — filed by design-architect pass 22 (2026-10-30) as Phase 3 of #2835; status/blocked + queue/queued with a triage packet enqueued this pass — triage records the gating on Phases 1–2 and does not re-scope.
Metadata
Metadata
Assignees
Labels
effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/enhancementpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)Queue task is parked (waiting on CI, time, or an event)source/design-architectFiled by the repo design architect jobFiled by the repo design architect jobstatus/parkedDeliberately paused with a recorded resume conditionDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Activity
dezren39 commentedon Oct 30, 2026
agent-note:v1 — design-architect pass 22 (2026-10-30): filed this pass as Phase 3 of design #2835 (env numbers are arguments). Gated on Phases 1–2 (Phase 1 = #2823 + #2786 + #1809 + #2096; Phase 2 = #2161 + #2758 + #2172), hence
status/blocked; linked as a sub-issue of #2835 (verified in its sub_issues list). Triage: record the gating and the phase structure, do NOT re-file/re-scope/split, and do not start the audit until both phases have landed — the inventory is only meaningful once the covered sites are converted. The known remainder sites (gather-quota.ts:103, fleet-merge.ts:28) and expected exemptions (test-only TEST_PORT, docs examples) are named in this issue's body.dezren39 commentedon Oct 30, 2026
agent-note:v1 — triage verdict, queue task 3987 (repo-worker-code, openchamber-scheduled-lane, 2026-10-30).
Verdict: scope confirmed against current main; gating holds — issue stays
status/blocked, no follow-up enqueued yet.Revalidated against origin/main
07448571(freshgh+git grep, 2026-10-30):Number(): agy-proxy.mjs:168,453,456,457; antigravity-direct.mjs:60,62; commandcode-proxy.mjs:60; opencode-route-proxy.mjs:51.pm-stack/aggregator/scripts/gather-quota.ts:103(QUOTA_GATHER_TIMEOUT_MS) and.opencode/skills/jules-automate-github-issues/scripts/fleet-merge.ts:28(FLEET_MAX_RETRIES).pkgs/id/e2e/playwright.config.ts:37is test-onlyTEST_PORTwith|| 4173fallback;bin/proxy-supervise.test.mjs:33(FAKE_PROXY_PORT) is likewise test-only.pm-stack/README.mdpresent;bin/proxy-port.mjsheader carries the bin proxies: *_PROXY_PORT parsed with bare parseInt — invalid values crash opaquely or bind the wrong port #483 strict-parse note the contract statement must sit alongside.Gating recorded: this phase starts only when Phases 1–2 have landed. Per the design-architect note above (do NOT re-file/re-scope/split; do not start the audit early), the implementation follow-up packet is specified here but NOT enqueued while the gate is closed — a queued implementation task could be claimed and start the audit early. Enqueue the follow-up (acceptance criteria per this issue body, verification via repo test suites on CI) once #2823+#2786+#1809+#2096 and #2161+#2758+#2172 are all closed.
Labels: triage complete; in-flight labels removed,
status/blockedretained until both phases land.26 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
opencode; handed off to the laptop claimant (opencode-claimant), which launches the bound session that drives task 8615 to its terminal state.dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
Re-claimed by lane code-k as task 8615 after the previous handoff lease lapsed unlaunched, and handed off to the opencode execution lane again: the laptop claimant will launch a bound session for task 8615. Issue #2837 is OPEN, labels already show queue/claimed + status/in-progress. Caution: task 8615 is at attempt 11 of 12 — one lapse from its cap; if this lease expires unlaunched, the attempt cap will need a raise before the task becomes unclaimable.
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
opencode; handed off to the laptop opencode claimant, which launches the bound session that drives task 8615 to its terminal state.dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
Agent note — task 8615 handed off to opencode execution lane
repo-queue lane task 8615):opencodeopencode-claimantlaunches a session bound to task 8615 to drive it to a terminal state.handed_off. If the claimant has not launched by lease expiry, task 8615 returns to the queue.dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off