You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Adopt provider-neutral OpenCode kits and verify both backends #601
Adopt the released provider-input and OpenCode-kit ownership changes, remove transitional provider-owned OpenCode paths, and verify the real flow on SBX and MSB.
Scope
Pin the Patterns release containing the provider contract and OpenCode-owned renderer.
Remove or disable transitional probes that treat the USAi provider kit as the OpenCode config owner.
Make backend verification report real reachability failures.
Derive credential names and provider hosts from loaded provider facts.
Exercise fresh OpenCode startup through the agent kit on both supported backends.
Acceptance criteria
A fresh sandbox renders OpenCode config through the OpenCode kit.
opencode models exposes expected models from projected neutral catalogs.
Reachability checks validate actual command status and HTTP output.
Credential and host checks use provider facts rather than hard-coded USAi names.
Removing a provider kit removes its provider on fresh creation.
Malformed provider input cannot replace active configuration.
Live SBX and MSB results are recorded as PASS, FAIL, or BLOCKED; mocks are not presented as end-to-end evidence.
🤖 Deferred verifier cleanup identified during the final review of green PR #602:
Replace the remaining AWK range extraction for check_usai_reachability with the production-equivalent test seam so future nested braces cannot silently truncate the tested function.
Make load_provider_facts return cleanly when sourcing acq fails, instead of suppressing the source error and falling through to a command-not-found diagnostic.
These are low-severity maintainability and diagnostic-quality findings; the reviewer found no correctness or security blockers in #602. They belong to the broader verification/adoption work tracked here rather than reopening the completed #547/#552 fixes.
Draft PR test(verify): prepare provider adoption validation #611 is restacked on current main at f34c2a8; it contains only the source-safe verifier seam, focused provider verification tests, and the live validation procedure. Offline CI is green.
Remaining acceptance work is real SBX/MSB execution and recording each row as PASS, FAIL, or BLOCKED. The PR remains draft until those gates are complete.
🤖 Live host validation produced a real shared failure on both SBX and MSB: provider projection rejects macOS /var -> /private/var before backend creation. Recorded as #620. Current live rows remain FAIL until that fix lands and the matrix is rerun; this is not an environmental BLOCKED result.
🤖 Second live validation run (tmp/provider-neutral-validation.TxBrUAUJ) confirms #622 advances both backends past the macOS /var path failure. New observed shared failure: host validator runtime dependencies are unavailable in the #611+#622 checkout (PyYAML=missing, jsonschema=missing), matching tracked installed-user regression #618/#619. SBX additionally reports vendored Bats uninitialized. Both rows remain FAIL pending validation from a combined #611+#622+#619 checkout with initialized submodules and isolated validator setup.
🤖 Draft #611 CI currently fails because its base main does not yet include the trusted canonicalizer from #622. This is an expected dependency failure, not a regression in the consolidated #594/#629 fixes. The local validation worktree tmp/validate-601-with-622 includes #611 + #622 + #619 and passes focused backend/verifier tests; rerun the real host matrix there. After #622 merges, restack #611 and CI should exercise the same combined state.
MSB: PASS — 18 passed, 0 failed, 1 skipped. Same provider/OpenCode checks passed, plus OCI engine checks. Transcript: tmp/provider-neutral-validation.qJrzRYY1/msb.log.
Draft #611 preserves these results durably at current head 8e692a8. The skipped row on each backend was private playbook fetch because gh was unavailable/not logged in; it does not affect provider-neutral OpenCode evidence. Literal fresh credential flow, provider removal, and malformed-input rejection remain explicitly BLOCKED/unobserved and are not inferred from the positive run.
🤖 Latest final-state SBX run is FAIL: verify-backends timed out after 900 seconds while SBX sandbox creation was booting and applying kits. Provider pin validation completed before the stall. Transcript: tmp/provider-neutral-validation.49SxDvpP/sbx.log. This is tracked as #634 and is structurally linked under this issue. MSB was not evaluated in this run after the separate SBX-only command.
The #634 SBX boot stall is resolved by the fix consolidated into draft PR #611. Literal fresh credential validation, provider removal, and malformed-input rejection remain unobserved/BLOCKED.
🤖 Literal real-credential MSB acceptance evidence: PASS. From the final validation worktree, bash ./acq --backend msb run opencode . created opencode-validate-601-final-r2, launched an interactive OpenCode session, listed USAi models, and completed a successful model request. This evidence is preserved in draft PR #611 at 91f3d1a.
The same literal SBX row remains BLOCKED by owner choice: no USAi key rotation was requested for a real-credential SBX run. It is not a product failure.
🤖 Literal real-credential acceptance evidence is now PASS on both backends. From the final validation worktree, bash ./acq --backend msb run opencode . and bash ./acq --backend sbx run opencode . each launched interactive OpenCode, displayed USAi models, and completed a successful model request. SBX used the supported key-rotation flow; no credential value, placeholder, or session identifier is retained. Evidence is preserved in draft PR #611 at 47ac658.
Only provider removal and malformed provider-input rejection remain unobserved/BLOCKED.
🤖 Malformed provider-input host procedure was executed on both backends. Both correctly failed before backend creation, but the host kit parser emitted a raw Python JSONDecodeError instead of an actionable provider-input diagnostic. The runner classified both as FAIL because the expected diagnostic contract was not met. This is being folded into draft PR #611; do not treat it as a backend failure.
🤖 Malformed provider-input acceptance is now PASS on both backends. The bounded non-interactive runner rejected malformed provider-input.json before backend creation with the actionable diagnostic acq: invalid provider input manifest ... invalid JSON at line 1 column 2. Transcripts: tmp/malformed-provider-validation.fFFNukSX/sbx.log and tmp/malformed-provider-validation.GQGSRccw/msb.log. Evidence is preserved in draft PR #611 at 6a9186a.
Provider removal remains the only blocked #601 row; it is tracked by #635.
🤖 Correction to the provider-removal live result: the first SBX omission run is not accepted as PASS. The transcript contains repeated Bash nounset errors (provider_refs[@]: unbound variable) during host-side kit selection. The runner accepted an empty opencode models transcript incorrectly. This is being fixed in draft PR #611; no provider-removal acceptance row is changed until a clean SBX/MSB rerun completes.
🤖 Provider-removal acceptance is now PASS on both backends. The supported --no-provider-kits path created fresh OpenCode sandboxes with an authoritative empty immutable provider generation. SBX and MSB both omitted usai-provider, skipped the USAi credential gate, and ran opencode models successfully with no USAi model, endpoint, or credential marker. Result files: tmp/provider-omission-validation.4AJo3ZKd/results.tsv and tmp/provider-omission-validation.fO13wRpW/results.tsv. Evidence is preserved in draft PR #611 at 1d243dc.
All #601 host acceptance rows are now observed as PASS. The issue remains open until draft #611 final CI/review completes and the PR is merged.
Activity
mogul commentedon Oct 21, 2026
🤖 Deferred verifier cleanup identified during the final review of green PR #602:
check_usai_reachabilitywith the production-equivalent test seam so future nested braces cannot silently truncate the tested function.load_provider_factsreturn cleanly when sourcingacqfails, instead of suppressing the source error and falling through to a command-not-found diagnostic.These are low-severity maintainability and diagnostic-quality findings; the reviewer found no correctness or security blockers in #602. They belong to the broader verification/adoption work tracked here rather than reopening the completed #547/#552 fixes.
fix(verify): make provider backend verification fail closed (#602)
feat(acq): project provider inputs read-only (#608)
mogul commentedon Oct 23, 2026
🤖 Current adoption status:
mainatf34c2a8; it contains only the source-safe verifier seam, focused provider verification tests, and the live validation procedure. Offline CI is green.mogul commentedon Oct 23, 2026
🤖 Live host validation produced a real shared failure on both SBX and MSB: provider projection rejects macOS
/var->/private/varbefore backend creation. Recorded as #620. Current live rows remain FAIL until that fix lands and the matrix is rerun; this is not an environmental BLOCKED result.fix(common): canonicalize macOS /var,/tmp,/etc aliases before O_NOFOL…
mogul commentedon Oct 24, 2026
🤖 Second live validation run (
tmp/provider-neutral-validation.TxBrUAUJ) confirms #622 advances both backends past the macOS/varpath failure. New observed shared failure: host validator runtime dependencies are unavailable in the #611+#622 checkout (PyYAML=missing,jsonschema=missing), matching tracked installed-user regression #618/#619. SBX additionally reports vendored Bats uninitialized. Both rows remain FAIL pending validation from a combined #611+#622+#619 checkout with initialized submodules and isolated validator setup.2 remaining items
mogul commentedon Oct 24, 2026
🤖 Draft #611 CI currently fails because its base
maindoes not yet include the trusted canonicalizer from #622. This is an expected dependency failure, not a regression in the consolidated #594/#629 fixes. The local validation worktreetmp/validate-601-with-622includes #611 + #622 + #619 and passes focused backend/verifier tests; rerun the real host matrix there. After #622 merges, restack #611 and CI should exercise the same combined state.mogul commentedon Oct 24, 2026
🤖 Final positive live matrix observed on 2026-10-24 against the combined v1.17.0 adoption worktree:
opencode modelslisted projectedusai/models, and reattach--versionsucceeded. Transcript:tmp/provider-neutral-validation.lK64ypzb/sbx.log.tmp/provider-neutral-validation.qJrzRYY1/msb.log.Draft #611 preserves these results durably at current head
8e692a8. The skipped row on each backend was private playbook fetch becauseghwas unavailable/not logged in; it does not affect provider-neutral OpenCode evidence. Literal fresh credential flow, provider removal, and malformed-input rejection remain explicitlyBLOCKED/unobserved and are not inferred from the positive run.mogul commentedon Oct 25, 2026
🤖 Latest final-state SBX run is FAIL:
verify-backendstimed out after 900 seconds while SBX sandbox creation was booting and applying kits. Provider pin validation completed before the stall. Transcript:tmp/provider-neutral-validation.49SxDvpP/sbx.log. This is tracked as #634 and is structurally linked under this issue. MSB was not evaluated in this run after the separate SBX-only command.mogul commentedon Oct 25, 2026
🤖 Final SBX validation after consolidating the #634 positional fix: PASS — 13 passed, 0 failed, 1 skipped. Provider facts projected/readable, USAi reached, OpenCode installed/configured,
opencode modelslisted projected USAi models, and reattach--versionpassed. Transcript:tmp/provider-neutral-validation.TCY2fZvE/sbx.log.Final MSB validation: PASS — 18 passed, 0 failed, 1 skipped. Transcript:
tmp/provider-neutral-validation.8MP6vbkX/msb.log.The #634 SBX boot stall is resolved by the fix consolidated into draft PR #611. Literal fresh credential validation, provider removal, and malformed-input rejection remain unobserved/BLOCKED.
mogul commentedon Oct 25, 2026
🤖 Literal real-credential MSB acceptance evidence: PASS. From the final validation worktree,
bash ./acq --backend msb run opencode .createdopencode-validate-601-final-r2, launched an interactive OpenCode session, listed USAi models, and completed a successful model request. This evidence is preserved in draft PR #611 at91f3d1a.The same literal SBX row remains BLOCKED by owner choice: no USAi key rotation was requested for a real-credential SBX run. It is not a product failure.
mogul commentedon Oct 25, 2026
🤖 Literal real-credential acceptance evidence is now PASS on both backends. From the final validation worktree,
bash ./acq --backend msb run opencode .andbash ./acq --backend sbx run opencode .each launched interactive OpenCode, displayed USAi models, and completed a successful model request. SBX used the supported key-rotation flow; no credential value, placeholder, or session identifier is retained. Evidence is preserved in draft PR #611 at47ac658.Only provider removal and malformed provider-input rejection remain unobserved/BLOCKED.
mogul commentedon Oct 25, 2026
🤖 Malformed provider-input host procedure was executed on both backends. Both correctly failed before backend creation, but the host kit parser emitted a raw Python
JSONDecodeErrorinstead of an actionable provider-input diagnostic. The runner classified both as FAIL because the expected diagnostic contract was not met. This is being folded into draft PR #611; do not treat it as a backend failure.mogul commentedon Oct 25, 2026
🤖 Malformed provider-input acceptance is now PASS on both backends. The bounded non-interactive runner rejected malformed
provider-input.jsonbefore backend creation with the actionable diagnosticacq: invalid provider input manifest ... invalid JSON at line 1 column 2. Transcripts:tmp/malformed-provider-validation.fFFNukSX/sbx.logandtmp/malformed-provider-validation.GQGSRccw/msb.log. Evidence is preserved in draft PR #611 at6a9186a.Provider removal remains the only blocked #601 row; it is tracked by #635.
mogul commentedon Oct 25, 2026
🤖 Correction to the provider-removal live result: the first SBX omission run is not accepted as PASS. The transcript contains repeated Bash nounset errors (
provider_refs[@]: unbound variable) during host-side kit selection. The runner accepted an emptyopencode modelstranscript incorrectly. This is being fixed in draft PR #611; no provider-removal acceptance row is changed until a clean SBX/MSB rerun completes.mogul commentedon Oct 25, 2026
🤖 Provider-removal acceptance is now PASS on both backends. The supported
--no-provider-kitspath created fresh OpenCode sandboxes with an authoritative empty immutable provider generation. SBX and MSB both omittedusai-provider, skipped the USAi credential gate, and ranopencode modelssuccessfully with no USAi model, endpoint, or credential marker. Result files:tmp/provider-omission-validation.4AJo3ZKd/results.tsvandtmp/provider-omission-validation.fO13wRpW/results.tsv. Evidence is preserved in draft PR #611 at1d243dc.All #601 host acceptance rows are now observed as PASS. The issue remains open until draft #611 final CI/review completes and the PR is merged.
test(verify): prepare provider adoption validation (#611)