Repository navigation
Description
Program
Drew's directive (2026-11-06 12:00 CST): "ensure appropriate user agent is used for each different provider. verify with binary itself then once a week or so pull down the latest version if different then diff the binaries look for mechanisms that could change the wire format. ensure tools calls etc all work for each provider."
This issue is the program's home. The weekly job weekly-binary-wire-check (Mondays ~08:12 America/Chicago, repo copy in the code/docs tree under the nix/mcpx/opencode goal) executes the recurring spec:
- Versions + binary diff — per in-scope binary (claude, agy, vibe, commandcode, muse, codex): installed version (the install the fleet depends on, not just PATH) vs latest upstream. Unchanged → one line. Changed → download the new binary to scratch (never install it), diff old-vs-new (strings, embedded endpoints, UA/version patterns, header names, auth/refresh flows, quota endpoints, signing/telemetry mechanisms) and judge whether the wire format our provider imitates could change.
- Re-capture on relevance — if wire-relevant or uncertain: re-run the ground-truth capture (real binary vs a local recording listener — the capture-first method) and the fork-side capture; on drift, file an issue in this repo with the diff findings, update the fork's stamps in a worktree → PR → merge, and update the scorecard below + the Wire identity fidelity: direct providers must present their binary's User-Agent #1834 baseline table.
- Functional probes — per provider route, cheap, plan seats only, never funds: a minimal live session proving completion + a tool-call round-trip + streaming. Wall-aware: one attempt on a walled pool; its own quota response is the reachability proof; legs marked pending-reset.
- Digest — one compact report to the job's delivery chat (changed binaries, wire verdicts, scorecard deltas); a single all-clear line when literally nothing changed and every probe passed.
Ground-truth rule for everything in this program: the binary's actual outgoing request is the only source of truth — not docs, not release notes, not a previous audit's capture (v1 below contains a case where the previous audit's capture method itself produced a wrong baseline).
Baseline wire table: #1834. Muse-specific findings live on #1825 (the muse-direct rebuild lane owns those files). Captures from the v1 pass: laptop /home/user/wire-conformance-2026-11-06/.
Wire-identity conformance — scorecard v1 (2026-11-06 conformance pass)
Method (Drew's directive, 2026-11-06 12:00 CST): for every provider, ground truth is the real client binary's actual outgoing request, captured on the laptop against a recording listener (base-URL/config override, MITM where no override exists, grep -a byte scans as corroboration) — never docs or memory. The fork side is captured the same way from the deployed build (2.0.30+5e9b135, fastlane) or from source where a fix was made. Functional legs: one minimal live session per route (plan seats only, never funds) proving completion + a tool-call round-trip + streaming; a walled pool's own quota response over the correct wire counts as the reachability proof and the legs are marked pending-reset. Raw captures: laptop /home/user/wire-conformance-2026-11-06/<provider>/.
| Provider | Genuine client (captured against) | Identity | Tool call | Streaming | Notes |
|---|---|---|---|---|---|
| claude-code | Claude Code CLI 2.1.306 (credential-owning install ~/.local/share/claude/versions/; PATH install is 2.1.293; latest upstream 2.1.319) |
✅ match — deployed wire: claude-cli/2.1.306 (external, cli), x-app: cli, identity betas claude-code-20250219+oauth-2025-04-20, OAuth Bearer; auth-layer stamp verified winning over the session UA |
⏳ pending — probe hit Anthropic 429 rate_limit_error (authenticated, real request_ids — identity accepted, quota-classified); retest on pool recovery |
⏳ partial — SSE session events flowed; no token stream under the 429 | Judged non-identity with evidence: print mode's (external, sdk-cli) entrypoint label, X-Stainless-* set (SDK-generated; not gated; would assert a false runtime), ?beta=true path suffix. On upgrade to 2.1.319: stamp → claude-cli/2.1.319 and drop beta prompt-caching-scope-2026-01-05 (genuine default list changed; verified by controlled captures of both binaries) |
| antigravity-direct | Antigravity CLI (agy) 1.5.0 (~/.gemini/bin/agy, keyring owner; PATH install 1.4.8; latest upstream 1.5.2) |
✅ match — MITM capture of genuine 1.5.0: antigravity/cli/1.5.0 (aidev_client; os_type=linux; arch=amd64; cl=1013440158; auth_method=consumer); fork's FALLBACK_UA identical, 12/12 fork captures |
✅ pass (gemini-3.8-flash, shell tool round-trip) |
✅ pass | No literal UA exists in either installed binary (grep -a verified) — fallback is the effective identity. Body delta (non-identity): genuine sends enabledCreditTypes, fork omits. Production unit sets AGY_BIN to the 1.4.8 install (secret-scan path only; UA unaffected). On upgrade to 1.5.2: FALLBACK_UA → antigravity/cli/1.5.2 (… cl=1015175089 …) — already MITM-captured from a scratch-updated copy |
| vibe-direct | Mistral Vibe CLI 3.1.0 (= latest upstream) | 🔧 fixed in main — genuine wire: mistral-client-python/Mistral-Vibe/3.1.0 (built-in mistral backend prepends mistral-client-python/); fork stamped Mistral-Vibe/3.1.0. PR #1873 merged (0cd3069b); from-source re-capture shows the corrected UA on 12/12 requests with the stamp winning post-merge. Deployed build still emits the old UA until the next deploy |
✅ pass (deployed build, plan seat) | ✅ pass | |
| commandcode | Command Code CLI 1.74.1 (latest upstream 1.88.4) | ✅ exact match — re-verified both sides on the wire: User-Agent: cli, x-command-code-version: 1.74.1, x-cli-environment: production, POST /alpha/generate |
✅ pass on fixed code / ❌ deployed build fails (see notes) | ✅ pass on fixed code / ❌ deployed | Functional defect found by this pass, live in production: the native provider inherited models.dev's seeded baseURL (https://api.commandcode.ai/provider/v1) → /provider/v1/alpha/generate 404s (production route_attempt rows confirm). PR #1875 merged (d8212e27) — seeded hosted-API base dropped in configuredRoute, regression test added; post-fix live run vs the real backend passed all legs. Deployed build keeps failing until the fix is built + switched in. Non-blocking deltas: genuine also sends x-project-slug, x-taste-learning: true. On upgrade: x-command-code-version → 1.88.4 (1.88.4 wire-captured in scratch; identity shape otherwise unchanged) |
| openai.main | Codex CLI 0.160.0 (latest 0.167.0 — acceptance surface verified identical) | ✅ accepted as declared — the doors deliberately declare originator: opencode + the harness UA rather than impersonating codex_exec; every backend acceptance element matches the genuine client: /codex/responses path, Responses shape, store:false, x-codex-beta-features: remote_compaction_v2 verbatim, WS-first (responses_websockets=2026-02-06), per-seat chatgpt-account-id |
✅ pass (pool had reset early — not walled at probe time) | ✅ pass | Minor deltas vs genuine Codex, noted: no thread-id / x-client-request-id / x-codex-window-id / x-codex-turn-metadata |
| openai.alternate | Codex CLI 0.160.0 (as above) | ✅ as declared (as above); backend answered the probe with its quota response — identity accepted, seat walled | ⏳ pending-reset | ⏳ pending-reset | Verbatim wall: usage_limit_reached, weekly (secondary) window 100%, resets_at 2026-11-09T17:04:02Z — recorded as this seat's reachability proof |
| muse-direct | Muse CLI 1.4.13 (Nix-pinned; no public release feed) | ❌ divergent — genuine: muse-build/1.4.13 (non-interactive; linux-x86_64; build 39490bd065c800195489caec34473582f7650b54) + x-client-id: tbh:exec + x-tbh-* set. Deployed leg (muse-proxy direct path): User-Agent is literally node, no identity headers at all. Full record on #1825 (comments 6691871047 + 6691959167) for the in-flight wire-native rebuild |
⏳ rebuild in flight | ⏳ rebuild in flight | Meta pool also walled until Sun 2026-11-08 18:00 CST. The proxy's warm/exec fallbacks do produce genuine-shaped traffic, but only when the direct leg gets no upstream response |
| meta (fork-native) | n/a-binary — first-party API surface (api.meta.ai), no consumer binary to imitate |
n/a (scratch capture: harness UA on Responses shape) — currently in disabled_providers; its conformance lands with the muse-direct rebuild |
⏳ disabled | ⏳ disabled | See #1825 record |
| mistral (official) | n/a-binary as an API door (the Vibe identity lives on vibe-direct) | harness UA opencode/prod/2.0.30+5e9b135/cli (wire capture) |
— not probed (pool = Mistral API budget, exhausted; live calls would be funds) | — | — |
| opendesign | n/a-binary (hosted gateway, no first-party client binary) | harness UA (wire capture) | ⏳ pending-reset (pool walled to 2026-11-10) | ⏳ pending-reset | Body-shape record: max_completion_tokens + store |
| cline-pass | n/a-binary for UA purposes (api.cline.bot is Cline's backend, but this door is OpenAI-compatible API traffic, not Cline-client imitation) | harness UA (wire capture). Observation: in a listener scratch shape the door sent no Authorization header (config carries no apiKey; auth-store entry not attached by that path in scratch) — observation only, not a production claim | ⏳ pending — probe returned 401 provider.auth (see notes) |
◐ partial — SSE session events flowed; the step failed before any deltas | Verbatim error: Unauthorized: Please make sure you're using the latest version of Cline and re-authenticate your Cline account. Quota was NOT the blocker (fresh read at probe time: 5h 6% / weekly 2% / monthly 1%). Two live hypotheses, not yet disambiguated: the stored ClinePass credential is stale/rejected, or auth is not attached outside the full production shape (the listener capture's missing Authorization header points this way; serve-shape scratch servers could not be made to both redirect and verifiably attach). Next step: one session in full production shape (real data home + config, scratch DB/port) to test the credential as production attaches it, or re-authenticate the ClinePass account |
| opencode-go.drewrypope / .popesdrew | OpenCode itself (OpenCode Go gateway) — the genuine client is our own lineage | ✅ harness UA is the honest identity (wire captures; both doors byte-shape identical) | ⏳ pending-reset (weekly windows walled) | ⏳ pending-reset | — |
| deepseek | n/a-binary (official API only; no first-party coding client) | — (provider disabled; PAYG reserve) | n/a — never funds | n/a | — |
Cross-cutting observations
- The harness discloses itself additively on emulated doors (
x-opencode-*,b3/traceparent,x-session-*headers ride along even where the UA stamp is correct). No evidence any provider gates on them today; recorded as an open observation for the weekly check, not fixed in this pass. - Two of today's three real defects were not UA strings: a wrong UA in the baseline record itself (vibe — the audit's capture method was flawed) and a functional break with a correct UA (commandcode baseURL seeding). Identity conformance has to include the baseline's own capture method and a functional leg, or it certifies fiction — both are now in the weekly spec.
- Deployed-build caveat: production runs
5e9b135f. PRs fix(ai): vibe-direct presents the Mistral backend's real User-Agent #1873 (vibe UA) and fix(ai): commandcode provider must not inherit the catalog hosted-API baseURL #1875 (commandcode route) are merged on main but not yet deployed; the scorecard marks identity/functional per build accordingly.
Acceptance criteria
- The weekly
weekly-binary-wire-checkjob runs on its Monday cadence and records one line per in-scope binary (claude, agy, vibe, commandcode, muse, codex): unchanged, or changed with a wire-relevance judgment. - For every changed binary, the diff covers strings/endpoints, User-Agent and version patterns, header names, and auth/refresh, quota, and signing/telemetry mechanisms, with the conclusion recorded on this issue or a linked weekly record.
- When a change is wire-relevant or uncertain, the ground-truth capture is re-run for the affected provider and any User-Agent / wire-format mismatch found is filed as its own issue and linked here.
- Tool-call probes pass for each in-scope provider after any wire-format adjustment.
Activity
dezren39 commentedon Nov 6, 2026
cline-pass 401 — verdict: probe-shape artifact; the credential is healthy
Re-ran cline-pass in full production shape (2026-11-06), per the open question on this issue: attached to the production opencode server on the laptop, session created with the model set at creation (
cline-pass/glm-5.3-flash), one minimal prompt ("Reply with exactly: PROBEOK"). No config changes, no provider flips.Result: SUCCESS.
ses_e5e4dcfc464ffePSPfRi8b6k7w: assistant completed, finish=stop, reply "PROBEOK", no error.cred_10c5d7f81001ItXj8WYivvzWX5) — production presented the stored cline-pass credential and api.cline.bot accepted it. No 401 anywhere in the production-shape attempt.So the conformance probe's scratch 401 ("Unauthorized: Please make sure you're using the latest version of Cline and re-authenticate your Cline account") was the probe's own defect — consistent with its listener capture showing no Authorization header leaving. The scratch shapes never attached the credential, and Cline's API answers a credential-less request with that re-authenticate wording. Quota was never the blocker either (fresh read 6%/2%/1%).
Caveat for the weekly conformance set: cline-pass legs must run in production shape (through the production server, model set at session creation). Scratch/listener shapes cannot attach auth for this provider and will report false auth failures.
No credential failure, no re-auth needed, no Drew involvement.
dezren39 commentedon Nov 6, 2026
Fastlane deploy 2026-11-06: wire-identity fixes #1873 + #1875 LIVE in production
Production opencode (laptop, user unit
opencode.service, 127.0.0.1:13420) cut over at 13:07:10 CST from fork5e9b135fto a build of fork main1b27880fb0e27ad9b1bce00ac77b1e4295734d1e./nix/store/k4i0332q8kd912a4196a5mgs8r30laqb-opencode-2.0.30+dirty-wrapped(inner:sqlsccrkvc2rd0pb1h3c4z4d04hi1q75-opencode-2.0.30+dirty)~/.config/systemd/user/opencode.service.d/20-fastlane.conf(ExecStart override only), new GC root~/.local/state/opencode/fastlane-gcroot-1b27880. Old 5e9b135 GC root and the other drop-ins (10-vibe-keyring-fix, queue-broker 20-fastlane-6450) untouched; fix: desktop app worktree collision - use separate ID per worktree anomalyco/opencode#5647 switch cleanup unchanged./nix/store/mldzbxia2djz7wy2s0kkzjk5qrhwv7d5-opencode-2.0.30+5e9b135-wrapped(prior drop-in backed up at/tmp/20-fastlane.conf.bak-5e9b135; its own rollback, 22c0a6d, recorded in the new drop-in's comment).nixosConfigurations.amd.config.home-manager.users.user.services.opencode.packagewith the opencode input overridden to fork main. This build also carries muse-direct: native Meta wire provider (#1825) #1872 (muse-direct native Meta wire) and fix(core): provider ownership hardening — package seating + unscoped baseURL rewrite warnings (#1858) #1874 (Plugin/provider ownership hardening: conflicting-package settings folding + unscoped model.request baseURL rewrites #1858 plugin/provider ownership).Blocker found and fixed en route: stale node_modules FOD hash
Fork main did not build at all:
nix/hashes.jsonpinned x86_64-linux nodeModulessha256-an3N7l..., stale for the current bun.lock; the FOD fails with a hash mismatch. The correct valuesha256-WLI1jWYltgPZEWQ4LqseuEXA6DoC1FDfyw4iULldLIA=was produced independently by CI's nix-hashes compute job (2026-11-06T17:42Z, run 42263623640 — its update-hashes commit never landed because the aarch64-darwin leg was cancelled) and reproduced byte-identically by a local fake-hash build. This build's source is fork main 1b27880 with exactly that one line restamped; all program code is byte-identical to fork main. (Version string renders2.0.30+dirtybecause the input was a local tree.) The same one-line fix has since landed upstream as PR #1880 (main now08eca393d6d1), and a dispatched nix-hashes run (42276082160) completed green — so a switch/pin build from current main converges on identical package content.Verification
opencode-claudeappears 0 times in the live global config and the runtime overlay.meta/muse-spark-1.3-contributor, "Not found. Check the docs for available routes."). Post-deploy probe sessionses_e5e4db51124ffe62reCOAd1p10, pinned to the commandcode provider in production shape: route_attempt success (3,234 ms), assistant completed with finish=stop. Binary contains the corrected wire constants (https://api.commandcode.ai+/alpha/generate).ses_e5e4db008bbffeLVZvVBri9qQG(mistral-small-latest) completed finish=stop, attempt success (925 ms). The outbound UA itself is not recorded server-side; the corrected literalmistral-client-python/Mistral-Vibe/3.1.0(the fix(ai): vibe-direct presents the Mistral backend's real User-Agent #1873CLI_USER_AGENT) is verified present in the deployed binary.dezren39 commentedon Nov 6, 2026
Supersession note (same day, 13:17 CST)
Ten minutes after the cutover recorded above, the muse-direct lane completed its own deploy and production moved to a pure build of fork main
08eca393d6d1(which by then included PR #1880's hash fix):/nix/store/dy8kimkyrdb9byppbwnbd4x4hpapqxm0-opencode-2.0.30+08eca39-wrapped(code pinafdad961, GC rootfastlane-gcroot-08eca39, unit restarted 13:17:19 CST). The two builds' program code is identical —08eca393differs from1b27880fb0only by the hashes.json line the 13:07 build already carried as a local restamp — so the verifications above carry over; additionally, on the current build: a commandcode probe session (ses_e5e4dab273affe2uJ122X4OpQ5) completed finish=stop with a successful attempt (3,591 ms), and vibe-direct is succeeding organically. All three GC roots (08eca39, 1b27880, 5e9b135) are retained; rollback chain intact.fastlane/state.jsonupdated to the current state.dezren39 commentedon Nov 6, 2026
Pin bump landed — the pending anomalyco#5647 switch now makes the current production build permanent.
afdad96108(2026-11-06T19:13:19Z): flake.lock opencode pin 5e9b135 → 08eca39 (08eca393d6d169d853e2c04416ae8b42df99fe34), the build production already runs via the fastlane drop-in.dezren39 commentedon Nov 7, 2026
🤖 Intake review — fleet monitor
kind/infrastructure,priority/normal,effort/l,status/needs-triage) and an Acceptance criteria section appended; original body preserved verbatim above it.dezren39 commentedon Nov 7, 2026
Wire-conformance review:
muse-directnative provider (PR #1872)Commit:
f4514086e5(merged in #1872, ancestor of deployed build08eca393d6)Scope: Wire-conformance review under the Wire-Identity Conformance Program (#1876) and Audit B (#1825). Ground-truth baseline from
/home/user/wire-conformance-2026-11-06/muse/(partA-capture.jsonl,partB-scratch-capture.jsonl). Full analysis archived at/home/user/gemini-burn-2026-11-06/REVIEW-FORK.md.Conformance Verdict
Zero binary commands (
secret-tool,museCLI) and zero subprocesses (child_process,execa,Bun.spawn) anywhere inpackages/ai/src/providers/muse-direct*. The loopback proxy (muse-proxyon:18747) is retired and dead. Auth and inference run entirely in-process over HTTPS.The native provider faithfully ported the direct leg of
bin/muse-proxy.mjsverbatim (Option B). Because the proxy direct leg never stamped identity headers and sentuser-agent: node(audit follow-up: antigravity + vibe credential paths spawn secret-tool; antigravity refresh requires the agy binary #1825 comment 6691871047), the merged provider reproduces that divergence: it sets noUser-Agentand none of the genuine Muse CLI identity headers (x-client-id: tbh:exec,x-tbh-*). Session traffic presents the OpenCode harness UA (opencode/.../cli), and key exchange presents the runtimenodefetch default.Code Evidence Table
partA-capture.jsonl)muse-direct(PR #1872)muse-build/1.4.13 (non-interactive; linux-x86_64; build 39490bd065c800195489caec34473582f7650b54)opencode/prod/<version>/cli(harness UA)packages/ai/src/providers/muse-direct-auth.ts:241(only setsauthorization; harness UA frompackages/core/src/session/model-request.ts:291reaches wire)node(Node/undici default fetch UA)packages/ai/src/providers/muse-direct-auth.ts:146-150(nouser-agentset on fetch)x-client-idtbh:execpackages/ai/src/providers/muse-direct*x-tbh-contributor-mode0packages/ai/src/providers/muse-direct*x-tbh-session-id01a1b207-...)x-opencode-session-idinstead (model-request.ts:286)x-meta-ai-gateway-session-idx-tbh-session-id)x-tbh-thread-idx-tbh-root-session-idx-tbh-agent-rolemain(orreminder:skill-reminder)x-tbh-parent-thread-idx-opencode-parent-session-idinstead (model-request.ts:287)traceparent00-<32 hex trace id>-<16 hex span id>-01POST https://api.meta.ai/responsesPOST https://api.meta.ai/v1/responsespackages/ai/src/providers/muse-direct.ts:28,82(retains proxy's/v1/responses)api_key; skips exchangeaccess_tokenat/muse-code/keypackages/ai/src/providers/muse-direct-auth.ts:197-205Detailed Findings
1. What User-Agent and headers does the native muse-direct provider actually send now?
POST https://api.meta.ai/muse-code/key):packages/ai/src/providers/muse-direct-auth.ts:147-150sends:authorization: Bearer <accountToken>x-api-version: 1.0.0content-type: application/jsonUser-Agent. In Node.js / undici fetch, this sendsuser-agent: node(wire-captured inpartB-scratch-capture.jsonl:1).POST https://api.meta.ai/v1/responses):packages/ai/src/providers/muse-direct.ts:77-86registers the route with{ providerOptions: { store: false, include: ["reasoning.encrypted_content"] } }and no custom headers.packages/ai/src/providers/muse-direct-auth.ts:240-242applies auth via:loadKeyEffect(sources).pipe(Effect.map((key) => Headers.set(authInput.headers, "authorization", Bearer ${key})))Only
authorizationis set. Unlikeclaude-code-auth.ts,vibe-auth.ts, orantigravity-auth.ts, it does not callHeaders.setAllto stamp a provideruser-agent.packages/core/src/session/model-request.ts:285-295:User-Agent: opencode/prod/<version>/cli,x-opencode-session-id,x-session-affinity,x-opencode-project,x-opencode-client.2. Does it match the genuine client's identity shape?
No. It diverges in 12 distinct aspects from the genuine client identity captured in
partA-capture.jsonl:node) and falls through to the harness UA on inference (opencode/.../cli).x-client-id: tbh:exec,x-tbh-contributor-mode: 0).x-tbh-session-id,x-meta-ai-gateway-session-id,x-tbh-thread-id,x-tbh-root-session-id,x-tbh-agent-role,x-tbh-parent-thread-id).traceparentis omitted./v1/responsesrather than the CLI's/responses.3. Does the provider still depend on spawning the Muse binary or a proxy process anywhere?
No.
packages/ai/src/{providers,protocols}/muse-direct*returns 0 occurrences ofchild_process,execa, orBun.spawn.node:fs/promises(readFile) inmuse-direct-auth.ts:121-128. Nosecret-toolhelper is called.:18747is dead and unreferenced;muse-proxyservice is retired and unlinked indeveloping-today/codePR feat: Add kotlin lsp integration anomalyco/opencode#6601/[FEATURE]: MCP Tool Output anomalyco/opencode#6604.Remediation Path
To close the wire-identity gap, follow the pattern established in #1873 / #1875 / #1835:
CLI_USER_AGENT = "muse-build/1.4.13 (non-interactive; linux-x86_64; build 39490bd065c800195489caec34473582f7650b54)"andCLIENT_ID = "tbh:exec"inpackages/ai/src/providers/muse-direct-auth.ts.museDirectAuth(muse-direct-auth.ts:241), useHeaders.setAllto stampuser-agent,x-client-id, andx-tbh-contributor-mode: 0after the transport merge.exchangeMintedKey(muse-direct-auth.ts:146), passuser-agent: CLI_USER_AGENTandx-client-id: CLIENT_ID.muse-direct-responses.tsor auth, injectx-tbh-*session headers mapping OpenCode session IDs.10 remaining items
developing-today commentedon Nov 8, 2026
Triage (task 11858, lane opencode-a): prior triage verdict CONFIRMED — this is the standing program home, not a fix item; no new packet.
Re-verified fresh 2026-11-07 (America/Chicago) against current state:
weekly-binary-wire-check(Mondays ~08:12 America/Chicago); its first scheduled run is Mon 2026-11-09 — still ahead, so no run record is due or missing yet. The v1 conformance pass (scorecard in the body) was executed 2026-11-06 ahead of that first run.task/small-fixwithout a live packet).This issue stays OPEN as the program tracker. It should not be re-enqueued as a triage/fix item by done-task audits; its cadence is the weekly job, and per-finding issues are filed by that job when drift is found.
dezren39 commentedon Nov 8, 2026
Triage (task 12946, lane opencode-a): re-triage CONFIRMS task 11858 — standing program home, no fix packet, issue stays open.
Re-verified fresh 2026-11-08 against current GitHub state:
weekly-binary-wire-check(Mondays ~08:12 America/Chicago) has its first scheduled run Mon 2026-11-09 — still ahead as of this triage, so no run record is due yet. The v1 conformance pass in the issue body was executed 2026-11-06 ahead of that run.Outcome for queue task 12946: triaged — verdict recorded here, no follow-up packet, issue remains OPEN as the program tracker.