Skip to content

Adopt provider-neutral OpenCode kits and verify both backends #601

Closed
8 of 8 issues completed
Closed

Description

@mogul

Goal

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.

Relationships

Cross-repository milestone parent: GSA-TTS/agentic-coding-patterns#357.

Includes #547 and #552. Depends on the provider projection and a released Patterns cutover.

AI-assisted issue drafting (OpenCode). Human review required.

Activity

  1. mogul commented on Oct 21, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  2. mogul commented on Oct 23, 2026

    @mogul
    ContributorAuthor

    🤖 Current adoption status:

  3. mogul commented on Oct 23, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  4. mogul commented on Oct 24, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  5. 2 remaining items

  6. mogul commented on Oct 24, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  7. mogul commented on Oct 24, 2026

    @mogul
    ContributorAuthor

    🤖 Final positive live matrix observed on 2026-10-24 against the combined v1.17.0 adoption worktree:

    • SBX: PASS — 13 passed, 0 failed, 1 skipped. Provider facts projected, USAi reachable, OpenCode installed, global config generated, opencode models listed projected usai/ models, and reattach --version succeeded. Transcript: tmp/provider-neutral-validation.lK64ypzb/sbx.log.
    • 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.

  8. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  9. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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 models listed projected USAi models, and reattach --version passed. 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.

  10. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  11. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  12. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  13. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  14. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

  15. mogul commented on Oct 25, 2026

    @mogul
    ContributorAuthor

    🤖 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.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions