55 changelog bullets checked against real ork surfaces. latest_known 2.1.227 → 2.1.229; floor stays frozen at 2.1.220 (manual_override expires 2026-09-20).
| Ver | Change | Verdict | ork surface / evidence |
|---|---|---|---|
| 2.1.227 | All 5 bullets | No-op | Closes the deliberate limit from the 2026-08-11 binary-diff triage, which covered the contract surface only. Feature-flag tier on expired token, claude-code-action allowed_non_write_users, /tui rewind, slash-menu rendering, event-loop stalls. No ork surface. |
| 2.1.228 | Session cleanup deleted the project memory folder | Floor | Hits ~/.claude/projects/<slug>/memory/, the operator memory store. No ork change makes this safe; only running >= 2.1.228 does. |
| 2.1.228 | Plugin-cache cleanup deleted symlinked dev checkouts | Floor | A plugin whose only version is a symlinked dev checkout lost its cache. That is ork's own dev loop, where CLAUDE_PLUGIN_ROOT points into the cache. |
| 2.1.228 | Write no longer needs a prior Read | No-op | Measured: src/hooks/src/pretool/write/ holds architecture-change-detector.ts + security-pattern-validator.ts; neither gates on a prior read. No doc encodes the rule either. |
| 2.1.228 | Marketplace entries merge as whole entries | No-op | .claude-plugin/marketplace.json declares no custom headers, so no tier bleed to inherit. A consumer redefining the ork entry in user settings is now safe. |
| 2.1.228 | Synced-skill hardening (no ! exec, no @ expansion) | No-op | Applies to skills synced from claude.ai. ork skills ship inside the plugin bundle and are never synced. |
| 2.1.229 | ListAgents marks offline / cloud | Adopt | The liveness primitive #3316 was missing. Forced a correction: measured at HEAD 23 of 37 agents grant SendMessage and 19 grant ListAgents, not the "34 of 36 / 0" recorded 2026-08-08. 4 agents send without being able to check liveness: code-quality-reviewer, component-curator, eval-runner, security-auditor. |
| 2.1.229 | Sandbox domain lists fail closed; IPv6 bracketed | Adopt | Starter config in doctor/references/sandbox-posture.md is unaffected (4 plain hostnames, no IPv6 literal, no port), but its "no detection API" limit was partly stale: /doctor now flags the ambiguous-spelling class. Strengthens #3322. |
| 2.1.229 | CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS | Adopt | Same-prefix siblings stagger so later ones read the cached prefix. Direct token win for audit-full-mapreduce and skill-fitness. dynamic-workflow-patterns.md carried zero concurrency or cost content before this. |
| 2.1.229 | Workflows honour container CPU limits | Adopt | Concurrency was sized from the host core count, over-parallelizing in CI runners and Docker. CI fan-outs now run narrower, which is correct, not a regression. |
| 2.1.229 | Marketplace command sources, mode: "link" | Opportunity | Re-resolved each session, applied without a restart. .claude-plugin/marketplace.json ships two git-subdir entries; a command source would give contributors a local-build channel with no reinstall. Recorded, not built. |
| 2.1.229 | /commit-push-pr stops auto-approving dangerous flags | No-op | Converges with ork's guards but subtracts nothing: ork's guards key off the Bash command string across every command, not one slash command. |
| pipeline | Adoption issue filer died on a bare HTTP 422 | Fixed here | Milestone lookup used the API defaults (state=open, one page of 30). "CC adoption" is milestone #154, closed with 304 issues, so the probe missed it and the script POSTed a title that already exists. Now queries state=all&per_page=100 --paginate and reopens a closed rolling milestone. |
| pipeline | SOP claimed a daily cron that does not exist | Fixed here | The schedule: trigger was removed 2026-07-28 under the weekly-quota policy. docs/cc-release-integration-sop.md still described a daily cron, so nobody knew detection had stopped. |
The detect stage has not been automatic since 2026-07-28, when the schedule: trigger was deliberately removed from claude-release-watch.yml. cc-triage.mjs makes real claude -p calls, which cost nothing in dollars on a Max plan but draw on the shared weekly quota, competing with the operator for their own capacity. That trade is defensible. The silence about it was not.
The manual dispatch on 2026-08-13 then failed after extraction succeeded, so the snapshots it had already computed were discarded before the commit step:
watch LLM-assisted feature extraction cc-triage: gate RECALL-BOOST 2.1.229/listagents_offline_cloud_labels 5->10 watch LLM-assisted feature extraction cc-triage: updated 68 version entries in shared/cc-adoption-gaps.json watch File adoption issues gh: Validation Failed (HTTP 422) watch File adoption issues ##[error]Process completed with exit code 1
One context-free line, because gh api prints the top-level message to stderr and the informative errors[] payload to stdout, where $( ) swallows it. Snapshots for 2.1.227-229 were regenerated locally and committed in this PR.
Source of truth. shared/cc-support.json latest_known 2.1.227 → 2.1.229 with the full triage recorded in manual_override.reason; propagated by scripts/stamp-cc-support.mjs into cc-version-matrix.ts. Floor, latest, and drop_after are untouched.
Docs. 12 new rows plus one corrected row in doctor/references/version-compatibility.md; a domain-list spelling section in sandbox-posture.md; a fan-out cost and concurrency section in chain-patterns/references/dynamic-workflow-patterns.md.
Pipeline. scripts/cc-file-adoption-issues.sh milestone lookup fixed at root. scripts/cc-consolidate-milestones.sh:57 carries the same latent bug and is not fixed here; it is called out in the code comment so the next person does not have to rediscover it.