Skip to content

All versions since 12.42.0

12.42.0

Aug 02, 2026

Worktree Guard & DNS Rebinding Fix

The monitor’s reply endpoint now validates Origin against a trusted allowlist of loopback addresses, local hostnames, and non-loopback IPs — closing a DNS rebinding hole where an attacker-controlled page could post Linear comments as the operator. Separately, every shell-side git worktree remove --force call now runs a safety check that refuses removal if your current directory is inside the target or any process holds an open handle under it, protecting against accidental self-deletion that the Node reaper never covered.

PRs

  • dev: CTL-1417 — worktree-removal self-protection guard (#2556) (24b9a76)
  • dev: CTL-1573 validate reply Origin against a trusted allowlist, not the request Host (#2857) (10ecce7)

12.43.0

Aug 03, 2026

Deployment Mode Resolver & Credential Hardening

This release introduces a unified deployment-mode resolver (single-host, cluster, or cloud) that reads identically in bash and JS, with advisory doctor checks and gated tunnel/webhook behavior wired across execution-core, orch-monitor, and catalyst-join.sh. It also fixes a live credential outage: daemon processes now re-arm their GitHub token from disk on every cluster-sync tick rather than inheriting a frozen env at boot, and linear-reconcile-cli correctly falls back to LINEAR_API_KEY when LINEAR_API_TOKEN is absent. Several reliability fixes round out the release: stale needs-human/blocked labels can no longer be re-applied to tickets already terminal in Linear, escalated recovery intents no longer latch permanently past their 7-day TTL, and the board no longer shows zero tickets for teams registered only in cluster.json.

PRs

  • dev: CTL-1603 — fix board showing zero tickets for cluster-only teams (#2868) (47a8c78)
  • dev: CTL-1610 — fix escalated-intent permanent latch and actuation-liveness blind spot (#2882) (69dd8ad)
  • dev: CTL-1616 secret-contract registry pair + cluster-sync derivation (PR1) (#2902) (1275440)
  • dev: CTL-1617 deployment-mode resolver in isolation (PR1 of 7) (#2895) (581ad4f)
  • dev: CTL-1617 doctor deployment-mode tunnel-consistency check (PR6 of 7) (#2906) (4ac3bea)
  • dev: CTL-1617 execution-core wiring + advisory deployment-mode doctor checks (PR2 of 7) (#2899) (374c1b3)
  • dev: CTL-1617 gate catalyst-join webhook wiring on declared deployment mode (PR5 of 7) (#2913) (1b983f3)
  • dev: CTL-1617 gate orch-monitor smee tunnels on deployment mode (PR3 of 7) (#2900) (a73ce21)
  • dev: CTL-1605 — route worker-status labels through a terminal-aware chokepoint (#2872) (8855c10)
  • dev: CTL-1612 arm daemon credentials from the shared secret files at boot (#2884) (ea5d031)
  • dev: CTL-1617 jq-exact lone-surrogate acceptance in the deployment-mode reader (#2907) (84e7682)
  • dev: CTL-1617 whole-document lone-surrogate parity + architecture-doc precision (#2904) (6b1cfd8)
  • dev: CTL-1619 adopt LINEAR_API_KEY fallback in linear-reconcile-cli —graphql (#2893) (bb0fff5)
  • dev: CTL-1620 resolve the rescue prompt template from plugins/dev/templates (#2892) (cf13213)

12.44.0 (2026-08-04) Latest

Features

  • dev: CTL-1616 cloud-token name-resolver unification + Groq resolveApiKey adoption (PR5) (#2927) (be673ea)
  • dev: CTL-1616 doctor cloud-guard escalation + shadow-diffed Layer-2 stragglers (PR6) (#2929) (56fbe72)
  • dev: CTL-1616 doctor secret-contract shadow pass (PR2, zero grade change) (#2916) (0377813)
  • dev: CTL-1616 fold the 9-file Linear read into the secret contract + doctor cutover (PR3) (#2919) (01294fc)
  • dev: CTL-1616 fold the OAuth-mint trio + read-only 4th onto the secret contract (PR4) (#2924) (22afee0)
  • dev: CTL-1622 setup-catalyst prompts for and persists catalyst.deployment.mode (#2912) (3af40d2)
  • dev: CTL-1628 catalyst-runtime-root resolver — fold Tier 1 duplicates + 4 latent resolver bugs (Phase A2) (#2946) (c01ef76)
  • dev: CTL-1628 root bun workspace + turbo (Phase A1) (#2945) (a61c8a8)

Bug Fixes

  • dev: CTL-1616 clear the sticky export attribute on the value breadcrumb (#2926) (ea1e474)
  • dev: CTL-1616 declare the split-brain Layer-2 layout unsupported + finish the observe-only story (#2931) (ca7ec68)
  • dev: CTL-1616 divergence check round 3 — reject relative paths, per-service remedy, no committed ticket prefix (#2939) (6c134b1)
  • dev: CTL-1616 divergence check round 4 — prefix-agnostic assertion + no dead-end remedy (#2941) (b811eb0)
  • dev: CTL-1616 harden the layer2-path-divergence check (#2931 round-2 Codex x2) (#2938) (694dc20)
  • dev: CTL-1616 keep the resolved secret VALUE out of child-process environments (#2925) (2c6901c)
  • dev: CTL-1616 PR6 follow-up — observe-only Layer-2 shadow + doctor coherence (#2929 Codex x4) (#2930) (64dddf5)
  • dev: CTL-1617 align doctor webhook-ingestion with the declared deployment mode (#2918) (d1d66e9)
  • dev: CTL-1617 close the three late #2918 Codex findings on the mode-aligned doctor grant (#2920) (905dbaa)
  • dev: CTL-1617 harden the join webhook-wiring gate (Codex follow-up to #2913) (#2914) (0bd14f8)
  • dev: CTL-1628 A1 isolate bun sniff from project config (Codex #2966 post-merge) (#2967) (ef09cb4)
  • dev: CTL-1628 A1 multiline-tolerant jq-less packageManager sniff (Codex #2948 post-merge) (#2964) (bac5434)
  • dev: CTL-1628 A1 post-merge hardening (Codex #2945 threads) (#2948) (c3f6944)
  • dev: CTL-1628 A1 retry TMPDIR when safe-cache mktemp fails (Codex #2972 post-merge) (#2975) (14bd0b6)
  • dev: CTL-1628 A1 sniff scratch-dir hardening + tier fallthrough (Codex #2967 post-merge) (#2972) (92226cb)
  • dev: CTL-1628 A1 tiered packageManager detection (Codex #2964 post-merge) (#2966) (1f22f0e)
  • dev: CTL-1628 A1 verify TMPDIR parent + scratch-dir before trusting it (Codex #2975 post-merge) (#2977) (27517ec)
  • dev: CTL-1628 A2 post-merge hardening (Codex #2946 threads) (#2947) (831a469)
  • dev: CTL-1628 comment-wake emission accounting + cross-host dedup reset (Codex #2970 post-merge) (#2973) (36e4cf4)
  • dev: CTL-1628 credit survives throw + early-path needs-input dedup clear (Codex #2974 post-merge) (#2976) (666044d)
  • dev: CTL-1628 delete unreachable catalyst-filter daemon body (keep alias) (#2949) (6a7d4cd)
  • dev: CTL-1628 freeze-cause telemetry mirror, legacy hydration default, persist retry (#2968) (8fffff5)
  • dev: CTL-1628 heartbeat publisher — require Linear anchor only in linear read-source mode (#2958) (3247e76)
  • dev: CTL-1628 orch-monitor roster readers → cluster.json roster (stop-worker fence + cross-node tail) (#2959) (7d5b93d)
  • dev: CTL-1628 retire ADR-018 JSON-shadow scaffolding + unused recordWorkerTransition module; document CTL-532 as the live projection (#2961) (3600198)
  • dev: CTL-1628 single-consume early-write credit + disposition-scoped dedup reset (Codex #2973 post-merge) (#2974) (c877a25)
  • dev: CTL-1628 surface eligible-set projection-write failure as health event (#2960) (c04f1a7)
  • monitor: mint app-actor Linear token on monitor start (supersedes #2905) (#2978) (f6fdeb9)
  • monitor: post-merge hardening — scan reachability, stop-cancels-remint, bash probe status (#2979) (34c5467)