composite-system: devices + QICK, amico-run verbs, substrate memory, composite skeletons, chat/model UX - #135
Closed
Rchari1 wants to merge 57 commits into
Closed
composite-system: devices + QICK, amico-run verbs, substrate memory, composite skeletons, chat/model UX#135Rchari1 wants to merge 57 commits into
Rchari1 wants to merge 57 commits into
Conversation
Introduce the `amico` verb-router surface over the existing amico-run launch path, non-destructively. No package rename, no removed behavior. - Extract the launch body of cli.ts verbatim into src/launch.ts (`main` → `launch`); cli.ts becomes a thin `amico-run` bin wrapper. This lets BOTH the `amico-run` bin and the new `amico run` verb call the SAME launch path with no behavior fork. - Add src/amico.ts — the verb router. `run`/`resolve`/`sandbox` delegate verbatim to launch (`amico <verb> <args>` ≡ `amico-run <equiv-args>`). `--help` lists the full verb surface; unknown verb → exit 64. - Add src/verbs.ts — spine bookkeeping verbs (catalog/vault/device/note) as B1 STUBS: print intent + the module/slice each will generalize, exit 0. Real bodies are B2/B3/B5. - Add src/mcp_serve.ts — the optional MCP facade over the same verbs. STUB seam only: `--list` renders the verb↔tool mapping; the transport carries ZERO MCP SDK dependency so it stays within the S31 no-MCP guard (landing the real transport needs an explicit S31 amendment, as spec C did). - esbuild builds both dist/amico-run.js and dist/amico.js; package.json adds the `amico` bin; launcher/amico mirrors launcher/amico-run. - test/amico.test.ts covers router dispatch: --help surface, unknown-verb →64, verbatim run/resolve/sandbox delegation, stub verbs, mcp-serve facade. All existing amico-run tests stay green (106 → 120 with the 14 new router tests). Spec-20260708-112732 §7.3; plan-20260708-214610 slice B1. Closes #108 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Component/Coupling/CompositeSystem types + closed enums (Role/CouplingKind/ Topology/DriveArch); validateCompositeSystem (open platform, per-component levels>=2, unique ids, coupling id-refs, mode-mediated exactly-one-mode) + soft compositeSystemWarnings. Alongside the flat SystemEntity (untouched) so each commit compiles. +10 vitest (47/47). Spec §2.1/§2.3/§7.1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
platformDefaultRole/Arch (spec §2.1 table); normalizeSystem read-shim (idempotent on composite, notes carried); updateCompositeSystem normalizes a flat existing first (F1 — flat on-disk + composite patch merges cleanly); compositeSystemToml (AoT + inline params, smol-toml round-trip verified); canonicalJson unchanged (drops notes). +6 vitest (53/53). Spec §6/§2.3. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
expandTopology (single-pair->1 edge, linear-chain->N-1, custom->[], deferred presets throw §9); replicateHomogeneous (q1..qN, deep-copied params). Pure. +7 vitest (60/60). Spec §2.3/§4.2/§7.3/§7.4. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pick_system seeds an N=1 composite (platform-default role/arch, known-platform levels=3 on components[0]); set_model accepts components/couplings/topology/ drive_arch (+ levels/drive_max/params back-compat onto the first component). F1: normalizes a flat on-disk existing before merge, and recordEntity normalizes the system before-snapshot -> no spurious flat->composite diff. F2: a non-custom topology preset expands to edges via expandTopology (coupling_kind-stamped). Array args use nested-optional-safe schemas (item required omits levels; never type:[..,null] inside items). Verified: 60/60 entities vitest + bun parse/resolve (plugin not tsc-covered by design). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… interview AGENTS.md + SCORE.md MODEL stage rewritten for the composite System: ask STRUCTURE first (count / homogeneous? / topology / drive-arch, singly), then batch the mechanical per-component params in one question form (homogeneous -> ask once, replicate to N); record via ONE composite amicode_set_model call (components upserted q1..qN; topology preset + coupling_kind expands to edges; drive_arch). Single-qubit stays the N=1 flow. Adds the frontier-batching policy (batch mechanical, keep semantic singular; value/relevance guardrails) and the stage-gate note (STRUCTURE/COMPONENT-PARAMS/COUPLINGS are model sub-steps, gate sequence unchanged). SCORE version NOT bumped (guidance prose, not a stage-contract change). Prose; verified by Task 9 fixtures + Task 10 live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…xtures
AGENTS.md gains the Composite authoring map (components/couplings/drive ->
Piccolo constructor: TransmonSystem / MultiTransmonSystem / {Global,LocalDetune,
Zoned}RydbergSystem / bosonic / mode-mediated; free_phase=N; EmbeddedOperator on
the subspace) with the free-tier honesty caveat (authoring-aware, NOT tier-
wired). Three golden reference skeletons (2-transmon CZ, Rydberg CZ global,
cavity+qubit) + a snapshot presence-check vitest (3/3) — structural only, NOT a
mapping function (F3; §9 non-goal). Spec §5/§7.7.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ewrite Restore the exact **MODEL** stage marker (was **MODEL (structure-first…)** → broke the stage-chain assertion) and un-wrap "scalar gate time" onto one line (the T-vs-N guardrail regex needs it contiguous). Behavior/content unchanged; agents_md.test.ts 19/19 green again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the B1 `catalog` stub with a working spine bookkeeping verb backed by
the pulse repertoire (~/.amico/vaults/armonissima/catalog/pulses/<id>/metadata.toml,
the amico-catalog skill's Phase-0 schema). Two subcommands, both deterministic
filesystem work callable via bash by either runtime, the harness, or cron/CI:
amico catalog query --platform <p> --kind <g>
→ the incumbent pulse metadata for (platform, gate) + the ranked candidate
list (fidelity desc; ties broken by shorter duration). This is the
warm-start lookup the interview does before authoring a solve.
amico catalog ingest --platform <p> --kind <g> [--from-run <dir>]
[--artifact <file.jld2>] [--fidelity <f>] [--agree …] …
→ the PROMOTION path, GATED on verification.agree (matching the existing
semantics — a run is promotable only when the independent re-rollout
agreed: verification.toml `agree = true`; --from-run reads it, or pass
--agree explicitly). When gated open it promotes iff the candidate beats
the incumbent (amico-catalog Version rule), writing a new
{platform}-{kind}-v{N+1} entry (metadata.toml + copied pulse.jld2) with
`warm_start` lineage back to the incumbent. agree≠true → blocked (64);
no beat → no-op (0); promoted → 0.
Design notes:
- Pure core in repertoire.ts (loaders never throw; a corrupt/missing catalog
degrades to empty, like src/catalog.ts's template/exemplar loaders); the verb
body (arg parsing + writes) in catalog_verb.ts. verbs.ts wires catalog.run to
it and marks it non-stub; vault/device/note stay B1 stubs. One impl backs both
the CLI (amico.ts) and the mcp-serve facade (unchanged).
- $AMICO_CATALOG_DIR overrides the pulses dir (tests point it at a temp catalog).
- FLAG NAMES honor the S31 guard (test/s31.test.ts bans the physics-knob
double-dash flags gate/pulse/system in src/): the gate discriminator is `--kind`
(issue #111's surface, maps to the `gate` field) and the pulse-artifact PATH is
`--artifact` (a file path, not a physics knob — same category as spec/from-run).
Tests: repertoire pure logic + query/ingest through the dist/amico.js bundle
(mirrors amico.test.ts / subcommands.test.ts); amico.test.ts's stub loop drops
catalog (now real) and asserts it routes to query/ingest. amico-run 141 green,
extension fast suite 435 green. Stacks on #118 (B1).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bring in Kate's Run Inspector redesign (PRs #116, #117): overlay pulse plot, metrics rail, fidelity≠objective fix, gated auto-open. No overlap with the composite-system files (entities.ts, amicode_tools.ts, AGENTS.md, SCORE.md, tests) — clean merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… verbs
Replaces the three remaining B1 stub verbs with real bodies, following the B2
pattern (pure core + `*_verb.ts` body + tests, wired into verbs.ts/amico.ts):
- `amico vault query` — read-only knowledge-graph retrieval. Ranks
insights/experiments by relevance (title > tags > body) to a `--q` query,
with `--type/--platform/--kind/--limit` filters. Pure core: vault_query.ts.
- `amico device status|next|lock` — the dispatcher successor (§3.1 / W-2). Pure
evaluate()/nextActions() over an acyclic calibration graph (ported from the
device-management branch, stripped of vscode/server coupling):
* status — DeviceStatus projection; honesty rule (uncharacterized/stale by
TTL, suspect on a moved dependency) — never a fabricated number.
* next — ranked actions, roots-first; qilc nodes surface the Intonatissimo
premium funnel (product + capability, never the method acronym) + standard
fallback.
* lock — benchmark-exclusivity: a device under a benchmark allocation
accepts no concurrent submission and suspends leaf fan-out; a concurrent
acquire by another owner is refused, same-owner re-acquire is idempotent.
`--now <iso>` pins the evaluation clock for deterministic replay. Pure core:
device_graph.ts.
- `amico note write|bump-best` — the librarian's deterministic bookkeeping half
(§3.1 / W-3): write a fully-templated experiment note; bump a system-context
note's best_gates only on strictly-higher fidelity (surgical frontmatter edit,
rest of the note untouched). Pure core: note.ts.
The dispatcher agent is retired: its lookup becomes the pure `device` verb.
All four spine verbs now have real bodies; only mcp-serve remains a seam.
S31: flag names sidestep the banned physics-knob double-dash flags
(gate/pulse/system) — the gate discriminator is `--kind` as in B2; test/s31.test.ts
stays green. Env overrides ($AMICO_VAULT_DIR, $AMICO_DEVICE_DIR) mirror B2's
$AMICO_CATALOG_DIR for testability.
Tests: +50 (vault_verb/device_verb/note_verb), amico.test.ts stub-block replaced
with real-routing assertions. Full amico-run suite 191 passed (was 141).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the hardcoded platform-skill name list with `surface: product` frontmatter discovery (spec-20260708-112732 §4.5/§7.1). `resolveLibrarySkills` now scans each library root and stages ONLY skills tagged `surface: product`; `internal` and untagged skills — the ~44 process skills in the same library — are dropped. The tag is now the least-privilege leak guard the hardcoded list used to be. Staging still copies only the selected set to the per-session stage dir; `skills.paths` never points at the library root. - readFrontmatter parses optional `surface` string - resolveLibrarySkills(roots, isEntitled?) — surface-tag discovery, first-root- wins, malformed/missing skipped, entitlement seam wired - GATED_PRODUCT_SKILLS + isProductSkillEntitled: §7.1 entitlement hook, empty today (all 10 product skills public) so a no-op, gated by a one-row edit later - call site wires isProductSkillEntitled; drops platformSkills option + the amicode.platformSkills setting; DEFAULT_PLATFORM_SKILLS kept as the golden reference set (now the 10 product skills) - tests: 10 product skills discovered from the real amico-plugin root; internal (pr/debugging/dream) explicitly excluded; untagged excluded; entitlement seam Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… Task 7) Legacy FormulationEntity → LegacyFormulationEntity; new structured FormulationEntity (trajectory_type/time_mode/parameterization/robustness/ free_phase/leakage facets + typed objectives[]/constraints[]) + closed-enum consts. Types-only scaffolding; validate/toml/tool bodies rewritten in Tasks 9/10/11 (tree intentionally inconsistent until then). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ation corpus spec §3.1.3,§8,§10 / plan Task 8. Legacy free-form → structured facets (idempotent, never throws); pure updateFormulation (normalize-then-upsert). Canonical corpus at test/fixtures/formulation-migration.json (fork mirrors it in Task 12). 14 tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (spec §3.2 / Task 9) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… tests spec §8 / plan Task 10. formulationToml emits the typed facets (inline robustness/time_params/leakage_params tables + [[objectives]]/[[constraints]] array-of-tables). Migrated the legacy FORM fixture + its TOML/validate/solve assertions in amicode_tools.test.ts to the structured shape. 79 tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ites + warnings spec §3.3 / plan Task 11. amicode_formulate takes typed facets (no legacy string args; legacyJsonSchema-safe item schemas), routes the merge through the pure updateFormulation, and surfaces formulationWarnings(merged, N) on the response (N from the sibling System). recordEntity now normalizes a formulation `before` snapshot too; amicode_solve normalizes its formulation read before re-serializing (spec §3.1.3 all-read-sites-normalize). Tool execute() is not vitest-importable (module side-effects) — behavior verified at Task 17 live; pure merge/warnings/normalize already covered. Parse-clean; suite 483 green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…g map (spec §7 / Task 16) AGENTS.md + SCORE.md formulate stages rewritten around the typed facets (trajectory/time/parameterization/robustness + free-phase/leakage flags; derived primary objective; typed constraints). New "Formulation authoring map" section (facet → Piccolo template/kwargs). SCORE version NOT bumped (guidance prose). agents_md.test.ts +1 marker; stage-chain + T-vs-N guardrails preserved. Full amicode suite green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ec A §2) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…e() (Spec A §4) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ory.jsonl (Spec A §4.2; C6/C7) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… + entitlement seam (Spec A §3,§5) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ent predicate (Spec A §2.3,§5.2) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…; Spec A §3) Host WebviewViewProvider + browser view + esbuild target, mirroring run_inspector.ts: device-keyed postMessage protocol, replay-on-reopen buffer, CSP+nonce shell, theme via VS Code CSS vars. Unit-tested under happy-dom (C4/C5). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…oop (Spec A §3,§5.1) Wires registerDeviceInspector alongside the Run Inspector; contributes the amicode.deviceInspector webview + openDeviceInspector/device.refresh commands + device.name/graph/card/endpoint settings. A guarded 2.5s poll reads the graph + state.json + (optional) job-server queue/health, builds the projection + ranked actions, and posts them. Dormant until a device is configured. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…rd fixture) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…dead grey-out
Aaron 2026-07-07: advertise the Intonatissimo product name + 'closed-loop
calibration' capability at the point of need (lead-gen), while the private
method stays gated. NextAction gains a premium{package,capability,invite} funnel;
user-facing copy names Intonatissimo, never the method acronym. +1 test.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… (logo atom) Kate's inspector-redesign (#117) replaced atoms/icon's mark() with atoms/logo's logo({variant}). Mirror the same substitution the Run Inspector made so the Device Inspector view typechecks on current main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…es + lock bump AGENTS.md: Voice "Atomic" bullet scoped to interview questions; "## Style: Terse" -> "## Style & formatting" (rich GFM, lead with outcome, readable-beats-brief, LaTeX for all math). Companion to fork patch #18 (anthropic.txt) — custom-prompt agents like pulse-designer bypass the provider prompt and only see these instructions. opencode.lock.json: ref -> b81fb756f2 (the patched fork commit). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tput port) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t prompt append) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gn to #117 idiom) Mirror the Run Inspector's reveal gate on the Device Inspector so the panel is strictly button-press-only and VS Code never restores/auto-opens it: - package.json: add "when": "amicode.deviceInspectorRevealed" to the view. - device_inspector.ts: add DEVICE_INSPECTOR_CONTEXT_KEY + revealDeviceInspector() (setContext true → focus), structurally identical to INSPECTOR_CONTEXT_KEY / revealInspector; reveal() now funnels through it instead of a bare focus. - extension.ts: amicode.openDeviceInspector calls revealDeviceInspector(). - test: assert the reveal order (setContext true → focus) and the package.json gate. No webview-internal (overlay/metrics-rail) changes — that lane is Kate's. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ecedence (vault-cli spec canonical order) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…recedence (spec-20260707-002846 C1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…a stack Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…60707-002846 C3/C4 read side) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…_intent fallback Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… prep (spec-20260707-002846 C1–C4 read side; C2's compaction knobs deliberately deferred) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…260707-002846 C4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The rebase onto the redesigned inspector idiom made device_inspector_webview import the logo atom (media/*.svg); the loader line existed only on the other two webview bundles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…erbs Layer 0 of spec-20260711-132200 (skill/verb/harness integration): - esbuild staging ships launcher/amico + dist/amico.js beside amico-run, so the existing PATH prepend resolves the spine verbs (catalog/vault/device/ note) — previously implemented but absent from the .vsix and never on PATH. - AGENTS.md gains a Bookkeeping-verbs section (catalog query + vault query before authoring; note write + catalog ingest after FINISHED; vault status/resolve) and the vault layout convention line (kills the invented flat-path read-error class — 16 occurrences in session mining). - Onset router: deprecated amicode_ask -> native question tool (matches AGENTS.md L176 and pulse-designer SCORE.md). Evidence: 6-session probe study + 194-session mining, 2026-07-11. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…vault context 'What can Amico do?' previously rendered a fixed template. Now the section instructs composition from the splices already in context (recent problems, pulse bank, mount stack, skill index): open with the user's own results by the numbers, personalize the menu and the closing next-moves, sell the flywheel to fresh users. Probe sessions showed the agent already cites spliced fidelities accurately — the template was the only thing keeping the answer generic. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The agents_md test pins 'How I work (author-first)' — correctly: it is the product's posture statement. The composed answer must always include it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n stack)
Fold the other sessions' amicode work (local/night-preview-20260711) into
composite-system so a single rebuild carries everything. Clean auto-merge —
the two tracks touched largely disjoint files.
Brings in:
· Device Inspector (Spec A) — webview, QICK HTTP client, calibration graph
loader, device-status projection, registry, entitlement seam, poll loop;
gated to open-on-button-press per the #117 inspector idiom
· amico verb router (#108) + catalog (#111) + vault/device/note bookkeeping
verbs (#113)
· Armonia mount-stack resolver + per-mount grants + memory-index/user splice
at session prep; distiller typed memory store + MEMORY.md index
· pitch: capability answer composed live from spliced vault context
· library skills staged by surface:product tag
Already present on composite-system (unchanged): composite System + typed
Formulation entities, the pulse-designer SCORE/AGENTS authoring map.
NOT included (separate call): aaron/scores-runtime (20 commits, not in
night-preview). backup/* and b4/b5 prototypes intentionally excluded.
Verify: packages/extension tsc --noEmit exit 0; vitest 568 pass / 57 files
(incl. device_inspector_view, substrate/*, scores/*).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…model knob
The default model was resolvable only in code (resolveModelPin: global
~/.config/opencode/opencode.json model, else a creds-based fallback) — no
Settings entry, so users couldn't find where to set it.
Add `amicode.defaultModel` ("provider/model-id", e.g. anthropic/claude-sonnet-5)
to contributes.configuration. When non-empty it wins as the injected config
model pin; empty preserves today's behavior (resolveModelPin). The in-chat
picker still overrides per session.
Precedence: amicode.defaultModel > global opencode.json model > creds fallback.
Verify: tsc --noEmit exit 0; package.json valid; opencode_config + packaging
tests 21 pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…odel
Handle the iframe→parent {source:"amicode", kind:"set-default-model", model}
message from the dashboard model control: update amicode.defaultModel (Global).
Added to the renderHtml relay allowlist. Validated "provider/model-id" only,
≤200 chars — the payload is untrusted. Pairs with the fork-side dashboard
control that also sets the live opencode model store.
Verify: packages/extension tsc --noEmit exit 0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…choice Report: "set to qwen but defaults to deepseek-v4-flash-free". Root cause: the extension injected a hardcoded fallback into config.model, and opencode resolves the session model as configuredModel() ?? recentModel() ?? default — so config.model (the forced fallback) OUTRANKED the user's recent pick, permanently overriding it. resolveModelPin() now returns undefined — no forced pin. The only pin is an explicit amicode.defaultModel (caller passes it first). Empty → opencode uses the user's recent selection, else the provider default. Removed preferredModel (the deepseek/claude fallback). A user wanting a fixed default sets amicode.defaultModel (or a model in their global opencode.json). Verify: tsc --noEmit exit 0; opencode_config tests 18 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add docs/ (getting-started, features, hardware) and rewrite the README from a docs-authority pointer into a product-facing overview: conversational solves, platform skills, Armonia mounts, Run Inspector, Pulse Catalog, and the QICK/RFSoC hardware path via IntonatoQICK.jl. Open-core framing throughout; closed-loop hardware calibration named as an entitled capability only (method scrubbed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The framed opencode app can't reach the OS clipboard directly. Add two paths mirroring the existing paste bridge: - clipboard-write: in-chat copy posts text to the host, written via vscode.env.clipboard so the paste bridge reads fresh content (visibility gated; payload bounded to 5 MB since it is LLM-rendered/untrusted). - clipboard-image-request: answered client-side in the outer webview, where navigator.clipboard.read is granted (the sandboxed iframe and text-only vscode.env.clipboard can't). Reads the first image/* item, replies as a data URL; on any failure replies dataUrl:null so the app falls back to text paste. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Aaron's integration branch, opened as a PR so CI finally runs over the whole stack (62 commits, 80 files, +10,930/−625 — none of it has ever been through CI). Fast-forwards over pre-#127 main; merges conflict-free over #127.
What's in it (five streams, consolidated)
cz-2transmon.jl,cz-rydberg-global.jl) + SolveSpec formulation migration.amicode.defaultModelsetting + in-chat set-default-model bridge, bidirectional clipboard bridge (copy-back + image paste), user-facing docs/open-core README rewrite.⛔ Gates before merge
clipboard-write,clipboard-image-request/clipboard-image, andset-default-modelfrom the framed app — nothing in the fork emits them yet (only the olderclipboard-requestpaste bridge, kate PR 0.1c — Ship the amico-validate CLI and gate the schema set in the CI fast tier #17). Until a fork PR lands and a new binary is vendored, those three features are dead listeners. @aarontrowbridge — do you have this on your machine unpushed? If not, say so and we'll write it extension-repo-side.(Everything else in the branch — devices, QICK, substrate, amico-run, skeletons — has no fork dependency and works as-is.)
f482031deletespreferredModel()entirely (fixes "set to qwen but defaults to deepseek" — the pin stomping user choice). Real bug, right instinct — but full deletion also removes (a) the sane fresh-install default (the hanging-preview-model bug this function originally fixed) and (b) the planned auto-switch toanthropic/claude-sonnet-5once Anthropic creds land. Proposal to discuss: restore as fallback-only (pin only when the user's global config has no model), which fixes the report and keeps both behaviors.preferredModeldeletion coexists with solver: issimo entitlement switch — watcher, config re-prep, server restart, AGENTS solver-mode #127'ssolverModeSectionadditions in the same file (textual merge is clean; typecheck/tests are the proof).Review pointers
🤖 Generated with Claude Code