chore(claude): re-pin the Claude Code capability contract 2.1.250 → 2.1.260 - #542
Merged
Merged
Conversation
🦋 Changeset detectedLatest commit: 986da71 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
ScriptedAlchemy
added a commit
that referenced
this pull request
Sep 4, 2026
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
commit: |
ScriptedAlchemy
added a commit
that referenced
this pull request
Sep 4, 2026
ScriptedAlchemy
force-pushed
the
chore/claude-capability-2-1-260
branch
from
September 4, 2026 07:50
924db34 to
662639b
Compare
ScriptedAlchemy
enabled auto-merge (squash)
September 4, 2026 07:50
ScriptedAlchemy
added a commit
that referenced
this pull request
Sep 4, 2026
ScriptedAlchemy
force-pushed
the
chore/claude-capability-2-1-260
branch
from
September 4, 2026 08:17
662639b to
e820248
Compare
…2.1.260 Diff the CLI surface against a scratch-installed 2.1.250 and the 2.1.259 / 2.1.260 native binaries (help text of every plugin and marketplace subcommand, plugin validate --json report shape, plugin list --json row shape, hook event list, marketplace source wording) and record it in PROVENANCE.json repinNotes, the capability table, and fixtures/contracts/claude/cli-help.txt. - observedCliVersion / hostCli.version 2.1.260; claude-2.1.260.json; every schemas/claude/* $id and sha256 re-pinned; adapterRevision 1.28.0 (claude), 1.29.0 (plugin). - hooks.schema.json admits PreModelSwitch and PostModelSwitch (2.1.251+) with the command/http/mcp_tool partition; hooks-schema fixtures re-recorded from 2.1.250 (text reporter) and 2.1.260 (--json). - New canonical event families model-switch/before (PreModelSwitch: permissionDecision allow|ask|deny) and model-switch/after (PostModelSwitch: observation + additionalContext); Codex, Cursor, portable carry dated unavailable rows; decode fixtures from the documented example input. - claude plugin validate --json is the primary path; text parsing is the fallback when the CLI rejects the flag or predates 2.1.259. - Agents capability rows record what 2.1.260 --strict --json accepts for color, initialPrompt, experimental.cacheTtl (no value validation). - Native proofs: help pin no longer asserts 2.1.257; the marketplace short-sha wording is the 2.1.260 text (2.1.250 said only 'Invalid input').
ScriptedAlchemy
force-pushed
the
chore/claude-capability-2-1-260
branch
from
September 4, 2026 08:59
e820248 to
2810197
Compare
ScriptedAlchemy
added a commit
that referenced
this pull request
Sep 4, 2026
… native envelope (#466) (#545) * feat(events): give event routes a canonical per-family payload beside the native envelope (#466) AgentEventRouteProps<E>.canonical.payload carries the fields at least two hosts report for the route's family — tool name/input/response, session id, transcript path, cwd, prompt, agent id/type, stop re-entry, … — each as { value, nativeKey } naming the host key it was read from and absent when the host did not send it. The per-family table (agentEventPayloadFields) and the per-host key table (agentEventPayloadNativeKeys) live in routes/events.ts; events/payload.ts projects through them inside createCanonicalEventProps, so the standalone wrapper, the shared runtime, agent-bundle/test, and the Workbench replay all agree. Each pinned capability table mirrors its host's mapping under hooks.eventRoutes.<event>.payload (held equal by tests/event-payload.test.ts) and the generated events reference renders the field × host → native key matrix per family. agent-bundle/test gains createEventRouteInput; worktree-proximity and rsc-agent-runtime read canonical.payload instead of hand-parsing native; host-test keeps recording native as the host-specific example. * fix(events): freeze the exported payload tables through and mark the required canonical.payload a minor bump (review) * feat(events): admit the 2.1.260 model-switch families to the canonical payload and pin the HookEvent field overlap (rebase over #542, #533)
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.
Re-pins the
claudehost contract from Claude Code 2.1.250 to 2.1.260, following the documented re-pin process (hostCliblock inschemas/claude/PROVENANCE.json=observedCliVersion, checked byscripts/host-cli-pins.mjs;docs/local-ci.md"Real-host install proofs").CLI surface diff 2.1.250 → 2.1.260
Captured with an isolated
CLAUDE_CONFIG_DIR/HOMEagainst a scratchnpm install --prefix /tmp/host-cli-250 @anthropic-ai/claude-code@2.1.250and the native 2.1.259 / 2.1.260 binaries (never touching~/.claude). Recorded inPROVENANCE.json→repinNotes, the capability table, andfixtures/contracts/claude/cli-help.txt(redacted 2.1.260 capture).claude plugin --help,plugin marketplace --help, everyplugin <sub> --helpandmarketplace <sub> --help2.1.257, asserts a semver plus the verified command listplugin validate --help--json--json Output the validation report as JSON (same exit codes)--jsonis now the primary path; text parsing only when the CLI rejects the flag or the probed version predates 2.1.259plugin validate --strict --jsonreporterror: unknown option '--json'(exit 1){success, strict, target, manifest{file,type,errors,warnings,notes}, contents[]};contentslists only files with findings; findings{path, message, code: null}hooks/hooks.json)PreModelSwitch/PostModelSwitch(Invalid key in record)prompthandler onPostModelSwitch, which the reference excludeshooks.schema.jsonadmits both with thecommand/http/mcp_toolpartition; 52-case fixtures re-recorded for 2.1.250 (text) and 2.1.260 (--json)--plugin-dir … plugin list --jsonrow{id: "<name>@inline", version, scope: "session", enabled, installPath}+errors[]only when refusedhooksmanifest pointer (#470/#479)validate --strict --jsonstillsuccess: truegithubshaplugins.0.source: Invalid inputplugins.0.source.sha: Invalid input+plugins.0.source.sha: Must be a full 40-character lowercase git commit SHAcolor,initialPrompt,experimental.cacheTtl)--jsonabsent)colour: red,cacheTtl: 2h, andhooks/mcpServers/permissionMode; only finding is thedescriptionwarningNothing observed on 2.1.260 contradicts the uploaded
hooks-2.md,plugins-reference-1.md,sub-agents-3.md, orplugin-marketplaces-0.md; the validator is looser than the documents (unknown hooks.json keys, cross-type fields, per-event handler partition, agent frontmatter vocabulary) in the places recorded inPROVENANCE.json.What changes
claude-2.1.250.json→claude-2.1.260.json;observedCliVersion/hostCli.version2.1.260; everyschemas/claude/*.schema.json$idand sha256 re-pinned; ClaudeadapterRevision1.27.0 → 1.28.0, compositeplugin1.28.0 → 1.29.0.model-switch/before(→PreModelSwitch:outcome: 'allow' | 'ask' | 'deny'→hookSpecificOutput.permissionDecision+permissionDecisionReason; noupdatedInput/additionalContext) andmodel-switch/after(→PostModelSwitch: observation +additionalContext). Codex, Cursor, portable carry datedunavailablerows;PreModelSwitch/PostModelSwitchleavedeferredNativeEvents. Decode fixtures are the reference's documented example input (tests/fixtures/events/claude-{pre,post}-model-switch.json); no live envelope has been captured yet, and the capability evidence says so.host-contracts/claude-plugin-validation.ts:--jsonfirst, runtime fallback to the text reporter onunknown option '--json'for every run of that validation.2.1.257help-pin assertion and the 2.1.250 marketplace wording (both noted in fix(build,validate,doctor): run the Claude host validator and --plugin-dir load check; doctor reads enabled (AB7327) (#475, #476) #504) now pass on 2.1.259 and 2.1.260.guide/authoring/{hooks,index}.mdx,guide/distribution/validation.mdx,docs/diagnostics.md,docs/framework-mode.md, example README event matrix,eval-hosts.mjsexpected version. Generated hosts/events pages follow from the JSON.patch— new families and the wider hooks schema are additive; no accepted manifest field changes shape for existing users;hostContractRevisionmoving 2.1.250 → 2.1.260 is the same kind of metadata bump every prior re-pin shipped as a patch.Not changed:
src/schemas/skill-hosts/PROVENANCE.jsonstill records the Skill frontmatter schemas as derived against the 2.1.250 pin (a separate, documentation-derived contract; the skills page was not part of this re-pin's uploaded evidence).Verification
Local, this worktree:
pnpm typecheck,pnpm lint,pnpm test:unit(3253 passed),test:route-unit(59),test:projection(158), integrationapi/doctor/artifact-validator/route-graph/generated-route-server/hooks(197),pnpm docs:site:build(parity ok).Host proofs,
PATHshimmed to each binary,check:host-cliok on 2.1.260:test:host-installtest:host-install:packedtest:packed:native(AGENT_BUNDLE_PACKAGE_PREBUILT=1)host-adapters.native.test.ts(AGENT_BUNDLE_NATIVE_HOST_CONTRACTS=1)Baseline before this change on 2.1.260: 28/29 (the
2.1.257pin); on 2.1.250: 27/29 (pin + marketplace wording).Review status
dbbd794(PR opened) — completed with no findings (no review threads).924db34(unreviewed) differed fromdbbd794only by the changeset's(#542)PR reference. Heads662639b(ontod11213a, feat(test): mountTestState/withTestState — one mounted state across several renderRoute calls #525),e820248(ontodacb5b0, ci: run required checks on merge_group for the merge queue #536), and the current head (onto123c487, refactor(effect): yieldable framework error classes via Data.Error bases #543) are that same two-commit diff rebased so the branch stays up to date withmain;git diffagainst the base is byte-identical (52 files, +688/−199). Merging on green CI per the reviewer-fallback rule. No PR comments are posted from this worker.