ci: tag-triggered VSIX release (v* tags) - #93
Merged
Conversation
Full package chain + channel-gate check on the vendored binary + packaging-manifest gate, then a GitHub release with amicode.vsix.
aarontrowbridge
added a commit
that referenced
this pull request
Jul 28, 2026
…bricating roles The System card re-derives the Hamiltonian in the renderer from (role, levels, platform) with hardcoded tables, so it is only ever right for platforms someone hardcoded — and silently wrong for the rest. It showed the transmon ladder, and asked for an anharmonicity, on an exchange-only spin qubit. Two changes here; the renderer half is harmoniqs/opencode#93. 1. `amicode_set_model` gains `hamiltonian` — the model term by term ({kind: drift|coupling|drive, latex, acts_on?, label?}) plus `hamiltonian_notes` for frame/unit/basis conventions. The agent already understands the model well enough to author the Julia solve; this is where that understanding gets written down instead of evaporating into the script. It knows what an exchange-only spin qubit is — the renderer's table never will. Full path: validation (closed kind set, non-empty latex, acts_on ids must exist, brace balance since the plugin can't parse LaTeX but the card renders it straight into KaTeX), TOML round-trip, wholesale patch-replace, hashing, normalizeSystem read-through. 2. `role` gains `other`, and `platformDefaultRole` stops inventing one. Only platforms we model get a role from the string (rydberg→atom, transmon→qubit, bosonic→mode); everything else is `other` until MODEL asks. The old blanket "unknown → qubit" was also wrong for photonic and bosonic, which are modes. AGENTS.md tells the interview to record the Hamiltonian — mandatory off-template, worth confirming even on template — and to use `other` over a near-miss. Note for the reviewer: this lands the recording side. The card only renders it once the fork release carrying #93 is pinned via `pnpm opencode:pin`, so there is no lock bump here. Verified: 782 tests pass (78 files), tsc clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
jack-champagne
added a commit
that referenced
this pull request
Jul 29, 2026
Carries the fork side of the Hamiltonian work: #93 system card renders the recorded Hamiltonian, and stops inventing one #98 prompt-agnostic cassette matching for the transport tests The renderer half is what makes amicode#220 (the recording half) do anything — until this pin lands, a recorded Hamiltonian is stored and never displayed. Built by the amicode-release workflow from the tag @ 9bd4649c86, base opencode 1.17.3, OPENCODE_CHANNEL=dev with the UI gate verified ON in both binaries. darwin-arm64 fe38d3e2956b5e84af5b2f8513f9c28d473484e84ab714d367f920e76b6fade2 linux-x64 0bdf69998ce5dc8c26a79a071ff04f8b82a6329700f177926501a16e3c4885d3 Note darwin-arm64 is cross-compiled from Linux and not natively smoke-tested; only linux-x64 gets a smoke test in the release workflow.
jack-champagne
pushed a commit
that referenced
this pull request
Jul 29, 2026
…bricating roles (#220) The System card re-derives the Hamiltonian in the renderer from (role, levels, platform) with hardcoded tables, so it is only ever right for platforms someone hardcoded — and silently wrong for the rest. It showed the transmon ladder, and asked for an anharmonicity, on an exchange-only spin qubit. Two changes here; the renderer half is harmoniqs/opencode#93. 1. `amicode_set_model` gains `hamiltonian` — the model term by term ({kind: drift|coupling|drive, latex, acts_on?, label?}) plus `hamiltonian_notes` for frame/unit/basis conventions. The agent already understands the model well enough to author the Julia solve; this is where that understanding gets written down instead of evaporating into the script. It knows what an exchange-only spin qubit is — the renderer's table never will. Full path: validation (closed kind set, non-empty latex, acts_on ids must exist, brace balance since the plugin can't parse LaTeX but the card renders it straight into KaTeX), TOML round-trip, wholesale patch-replace, hashing, normalizeSystem read-through. 2. `role` gains `other`, and `platformDefaultRole` stops inventing one. Only platforms we model get a role from the string (rydberg→atom, transmon→qubit, bosonic→mode); everything else is `other` until MODEL asks. The old blanket "unknown → qubit" was also wrong for photonic and bosonic, which are modes. AGENTS.md tells the interview to record the Hamiltonian — mandatory off-template, worth confirming even on template — and to use `other` over a near-miss. Note for the reviewer: this lands the recording side. The card only renders it once the fork release carrying #93 is pinned via `pnpm opencode:pin`, so there is no lock bump here. Verified: 782 tests pass (78 files), tsc clean. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.
Folded into #90's branch per Jack. Push a
v*tag → full package chain (pnpm package: amico-run + extension + exemplars +fetch:opencode), hard-fail channel-gate check on the vendored binary (same check the fork's newamicode-releaseworkflow runs — harmoniqs/opencode#4),AMICODE_REQUIRE_VSIX=1packaging gate, then a GitHub release withamicode.vsix.Note: the tag trigger only fires for tags whose commit contains this workflow file — live on
mainonce #90 merges.A lock bump to
v1.17.3-amicode.4(built by the fork workflow) will be added to this PR once harmoniqs/opencode#4 merges and the tag is pushed.