This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryFixed production-ref derivation failure on symlinked paths, apply_archetype_renames deleting calls_index.json, OAuth/subscription correctness judge deadlock, duplication gate starvation, repo unsafe-root guard bypasses, and doctor false‑passing dead installs.
Full changelog
Remediation of the qa28 real-user campaign: ~80 live claude -p sessions drove every tool, command, and hook from scratch on never-profiled GitHub clones (vercel/swr, thoughtbot/administrate), plus an A/B effectiveness battery and a v2.12.0 upgrade simulation. The campaign confirmed the upgrade path loses nothing for existing users, and found five P1s that no scripted test layer had caught; all ship fixed here, each regression-verified from its original repro. Full unit suite 3,544 passing.
Fixed
- Production-ref derivation silently died behind symlinked paths. Extractors emit symlink-resolved file paths while the prodtree scan root was used unresolved, so any symlinked data-dir component (macOS
/tmp, relocated~/.local/share) made everyrelative_tofail: archetype buckets became absolute-path garbage, per-edit advisories never fired, and bootstrap, doctor, and status all reported healthy. The prodtree root is now resolved before derivation, and a pinned test asserts no committed artifact may ever carry a prodtree path fragment. apply_archetype_renamesdeletedcalls_index.json. The rename transaction re-emitted every artifact except the calls index, and the protocol-file posture drops whatever is not re-emitted - so/chameleon-init's auto-rename shipped fresh profiles without caller facts. The transaction now carries the artifact forward verbatim, like the partial-refresh path.- The correctness judge was dead on OAuth/subscription installs.
claude --bareno longer inherits OAuth credentials, so every reviewer spawn exited "Not logged in" with only the attestation file aware. The first bare spawn now doubles as a functional auth probe (cached 24h); on failure the judge retries without--bare, and because that spawn pays the session primer and cannot fit the 45s sync budget, known bare-auth failure auto-routes the spawn through the detached async path (newCORRECTNESS_JUDGE_FALLBACK_TIMEOUT_SECONDS, default 180) with findings delivered at the next prompt.CHAMELEON_JUDGE_ASYNC=0still forces sync. - A failing judge starved the duplication gate forever. Deferral now requires a spawn that actually produced a reviewable result; degraded spawns run the duplication review in the same turn.
bootstrap_repoandrefresh_repobypassed the unsafe-root guard. Both now refuse temp/world-writable roots with the same policy as the hooks and name theCHAMELEON_ALLOW_TMP_REPO=1opt-out;detect_repocarries the refusal reason instead of a bareno_repo.- Doctor passed dead installs. Three new checks, each failing open: generated-artifact completeness for the profile's language, judge-spawn health from recent attestations, and advisory-emission sanity (trusted edits resolving no archetype). A failed reviewer spawn also surfaces as a one-line SessionStart banner instead of living only in the attestation ledger.
- Every edit wrote two drift rows (preflight and verify both recorded), doubling drift statistics and banner pressure; only the verify-side row remains.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Chameleon
All releases →Beta — feedback welcome: [email protected]