Add Claude Opus 5 capabilities#123
Conversation
|
Final integration refresh (2026-07-25): current main dab9b6d was merged normally into this branch; no rebase or force-push. Exact hosted head: ada9658. Focused Claude adapter 98/98, web unit 198/198, and browser 42/42 passed. git diff --check passes and the task worktree is clean. Fresh hosted CI run https://github.com/ScientFactory/scient-desktop/actions/runs/30160243875 completed successfully, including format, lint, typecheck, full bun run test, stable browser, Linux geometry, desktop build/preload, release smoke, Linux and Windows HTML-preview smoke, and Windows process regression. No unresolved review threads remain. Existing documented manual limitations are unchanged and non-blocking. This candidate is integration-ready against main dab9b6d; this is not merge or release authorization. |
Native slash-command discovery now participates in the same renderer-owned discovery-generation scheme already used for model and agent discovery, so a command catalog fetched under one auth/runtime generation can never leak into a newer one. - contracts: add optional discoveryGeneration to ProviderListCommandsInput - server: fold discoveryGeneration into the listCommands in-flight cache key so a later auth generation never joins an older CLI's discovery - client: bind the commands query to the current generation (query key, RPC arg, post-resolve stale discard, fail-fast retry, no stale placeholder for claudeAgent) and invalidate commands alongside agents on auth-sensitive provider changes - route the configured Claude binary through every command-discovery call site (ChatView, kanban composer, /fast availability check) - tests: cover generation separation for command discovery on both the server adapter and the React Query layer Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…snapshot Migration 035 imported the live modelSelectionCompatibility, whose DROID_ONLY_MODEL_SLUGS is derived from @synara/contracts' MODEL_OPTIONS_BY_PROVIDER. That coupled shipped migration history to the evolving model catalog, so adding a model (e.g. Claude Opus 5) to model.ts tripped the append-only migration-lineage guard through the contracts barrel. Give migration 035 its own self-contained frozen v0.5.13 snapshot (migration035FrozenModelSelectionCompatibility) with the DROID_ONLY set hardcoded as the exact v0.5.13 catalog-derived literal, and repoint the migration's import to it. All other normalization logic is byte-identical to the live helper; the live helper stays in place for its runtime consumers. The snapshot is proven behaviorally identical to the v0.5.13 migration: - an equivalence test asserts frozen ≡ live across a persisted corpus that spans every branch (canonical, provider-less ambiguous slugs incl. claude-opus-5, instance-label inference, legacy Gemini, option-row arrays, provider-scoped options) and every catalog Droid-only slug, and - the hardcoded DROID_ONLY literal is an exact match to the droid-only set derived from the origin/release/stable (v0.5.13) MODEL_OPTIONS_BY_PROVIDER. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Repointing migration 035 to its frozen snapshot changes the shipped migration dependency graph: severing the sole import of the live modelSelectionCompatibility removes the only bridge from migration history into @synara/contracts, so modelSelectionCompatibility and the entire contracts barrel legitimately leave the migration dependency closure while the frozen snapshot enters it. It also changes migration 035's own content (the import line). Bless exactly this delta with exact, path-and-blob-pinned, one-time audited allowances — not a general bypass and without advancing the release baseline or touching the protected release-tag manifest: - RELEASED_CONTENT_ALLOWANCES gains the 035 old→new blob pair. - RELEASED_DEPENDENCY_GRAPH_ALLOWANCES (new) pins 29 removed baseline blobs and the 1 added frozen-snapshot blob. Each allowance pins a Git blob, so the guard fails closed on any other change: editing the frozen snapshot voids its added-blob allowance, and a dependency that stays reachable but changes content is never blessed (that branch remains a hard violation). Violation messages now emit the exact allowance key so future audited deltas are self-documenting. Guard self-tests cover both content and removed/added graph suppression. This precise closure also unfreezes unrelated contract files (e.g. providerDiscovery.ts) that were only frozen transitively through the barrel, and lets model.ts add Opus 5 without editing shipped history. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update PR #123 onto current main (ecca291) so the migration-lineage guard and full suites re-run against the real base and the PR is truly mergeable. main did not touch the migration guard, migration 035, contracts/model.ts, or providerDiscovery.ts since the fork point, so the blob-pinned allowances remain valid; the incoming provider/catalog churn is re-verified below. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…60725 Catch up to current main so the branch is up-to-date (strict protection). The incoming commit touches only workspace filesystem code — orthogonal to this PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
Adapt Claude Opus 5 support onto Scient-owned provider, model-capability, discovery, and composer seams.
[1m]context suffixes and Scient's staticultracodecapability{cwd,binaryPath}Donor provenance and disposition
Selected bounded concepts:
83b685234b2c474ea4d9a6ce593ac730ca95f8f7: Adapt the Opus 5 capability/version-gating concept; do not import donor lifecycle, persistence, identity, or broad provider architecture.41a430a88e8dde9c428f59d54dd328aa6a66a8fd: Reimplement the static Opus 5 capability facts on Scient-owned seams; do not import T3 product or architecture assumptions.The complete newly observed awareness ranges were dispositioned separately during the steward run (Synara 14 commits through
3f66f8ee5b1e5d8aa682029b31b4b89b797a5e7f; T3 5 commits through38cfc25e5422e468303f2010f639cf3de9ad89ba). Other lanes were rejected, deferred, or retained as future design/reliability lessons. Synara's final3f66f8erelease-metadata and donor-branded What's New content were rejected for direct intake because Scient already owns curated, identity-safe release notes. This PR does not advance either durable review boundary or integration base.Exact candidate
341055d518cafabaa71f6a4c9a4ea42a9dc8cb8d3249ab8732669cd53499d27a6115db76840804cdmaintenance/upstream-opus5-20260725Protected lanes
No migrations, persistent-data changes, credential/session policy changes, approval or permission broadening, dependency changes, updater controls, release authority, telemetry, or Scient identity changes. Configured executable selection is respected for both model and subagent discovery. Temporary discovery uses strict empty MCP isolation, no persisted session, managed-executable updater disabled, and closes in
finally.Verification
Exact-head local certification:
bun run scient:upstream-check --intakebun run testgit diff --checkA prior candidate also passed the cross-repository Scient agent smoke against
scient-agent709a26002c697f06cbaebeb8fac40e87de0ab6b3; subsequent changes are confined to Claude provider/web discovery and do not alter the shared OpenCode agent contract.Independent review
Exactly three read-only reviews covered:
Review findings were resolved before publication, including runtime capability lookup, CLI version gating, composer normalization,
[1m]preservation, configured-binary discovery, and executable/cwd-scoped agent caching. All three reviewers recertified exact candidate3249ab8with no remaining P0-P2 findings.Manual evidence and limitations
An isolated actual-app run verified the unauthenticated Claude recovery state. The credentialed positive Opus 5 row and live send path were not exercised because the review did not use production credentials; deterministic component/browser/adapter tests cover availability, fallback, switching, and option normalization.
Rollback and dependencies
Rollback is one revert of
3249ab8732669cd53499d27a6115db76840804cd. There is no migration or cleanup step. No cross-repository PR dependency and no checkpoint/evidence PR.This PR must remain draft until hosted CI is classified. It is not release authorization.