Skip to content

[ Release / changelog ]

Changelog ​

Was sich zwischen Releases geändert hat. Neueste Version zuerst. Mit devkit sync auf das aktuelle Release aktualisieren. Maßgeblich ist die englische Fassung; diese Seite folgt derselben Release-Historie auf Deutsch.

Ein Eintrag steht hier, sobald die Version getaggt ist; auf dem Kanal stable liegt sie erst, wenn der Publish-Job durch ist — die oberste Überschrift kann also ein Release weiter sein als das, was devkit sync holt. Welche Version läuft, sagt devkit status.

Unreleased ​

Was du nach devkit sync tun musst

  • Projekte mit einer Projekt-.mcp.json, die auch Codex oder OpenCode nutzen: einmal devkit init ausführen, damit diese Server gespiegelt werden; devkit doctor listet danach die nötigen Env-Variablen je Server.
  • Shopify-Themes, die devkit liquid-settings genutzt haben: nach devkit skills pull das Script theme:settings in package.json ergänzen.

Sessions bekommen jetzt einen zweiten Kontext-Hinweis bei 300k Tokens (61,5 % der gemessenen Calls liefen über 200k) und einen Hinweis gegen sed -n-Bereichslesen (273 davon gegen 75 Read-Calls), /offload übergibt Specs an einen verbundenen Orca-Server, ohne deine Session bei jedem Heartbeat zu wecken, und Projekt-.mcp.json-Server erreichen endlich Codex und OpenCode. Update mit devkit sync.

119 commits since v0.50.0 · Specs 013, 688, 702, 703, 705

✨ Highlights ​

📡 Specs an einen Orca-Server auslagern ​

/offload startet pro Spec einen Worker auf einem verbundenen Orca-Server und holt das Ergebnis per SSH, sodass kein Branch auf GitHub landet. Aus einem Wegwerf-Terminal gestartet, wecken Heartbeats deine Session nicht mehr (vier Weckrufe im Spec-702-Lauf), und collect nutzt das Review des Servers, statt ein zweites zu fahren, das bis zu 164k Tokens gekostet hat.

bash
bash
/offload 702
/offload collect 702

🔌 Projekt-MCP-Server in Codex und OpenCode ​

Codex und OpenCode lesen die Projekt-.mcp.json nicht, deshalb sahen Agenten dort Server wie das MCP-Gateway nie. devkit init trägt jetzt jeden fehlenden Server in .codex/config.toml und opencode.json ein (nur ergänzend; Klartext-Credentials werden übersprungen und nie geschrieben), und devkit doctor warnt bei fehlender Env-Variable.

bash
bash
devkit init
devkit doctor

🧭 Zwei Hinweise gegen teure Sessions ​

Ein zweiter Kontext-Hinweis feuert bei 300k Tokens auch ohne sauberen Schnitt, weil der 150k-Hinweis einen fast nie fand: In einem 7-Tage-Audit liefen 61,5 % der Calls über 200k, der 400k+-Bucket trug 22 % des Inputs. Das dritte aufeinanderfolgende sed -n-Bereichslesen einer Datei bekommt einen einzeiligen Hinweis (273 Bereichslesen gegen 75 Read-Calls, 85 % Ein-Tool-Calls); keiner blockiert.

bash
bash
export DEVKIT_SESSION_COMPACT_TOKENS=300000

🛡️ Secret-Guard: weniger Fehl-Sperren, eine Umgehung geschlossen ​

Ein Regex-Anker wie </ul>$ oder ein gequotetes Heredoc-Wort gilt nicht mehr als .env-Glob, das schreibgeschützte Befehle gesperrt und einen Delegate zwei Turns gekostet hatte. Dafür rutscht cat <<EOF mit $(cat .env) im Body nicht mehr am Guard vorbei, und der Sperrtext nennt jetzt das auslösende Token.

text
text
(matched: `<token>`)

🥧 Pi implement auf macOS, Sonnet-5.5-Tiers ​

delegate-exec verpackt pi auf macOS in ein Seatbelt-Profil (Worktree, Git-Dir, ~/.pi/agent und tmp beschreibbar, Credential-Verzeichnisse nicht lesbar), sodass pi implement ohne DEVKIT_PI_SANDBOX=off wählbar ist; ein echter Lauf schrieb im Worktree und bekam außerhalb EPERM. Alle vier Pi-Tiers laufen jetzt auf anthropic/claude-sonnet-5-5 mit mittlerem Effort.

bash
bash
devkit runtime-route --inventory implement

⚖️ Offene AC entscheiden, neue Flächen doppelt prüfen ​

spec-work-run <ID> judge hakt eine judgement:-AC ab, die bei Exit 3 hängt, und hält Evidence-Pfad und sha256 fest, sodass Runner Specs nicht mehr von Hand editieren. Eine Spec, die einen Skill oder Devkit-Befehl hinzufügt, wird erst abgeschlossen, wenn zwei verschiedene Review-Runtimes bestanden haben, eine mit dem Ponytail-Abschnitt; Spec 702 hatte sechs Defekte an einen einzelnen Reviewer verloren.

bash
bash
devkit spec-work-run <ID> judge <AC-id> --evidence <file>

🔧 /index speichert nur noch, was nicht im Code steht ​

In 26 A/B-Läufen auf zwei Boilerplates lasen die Agents in jeder Variante zuerst package.json und git ls-files, öffneten nie eine Context-Datei auf Abruf, und der vorbereitete Kontext kostete bei gleicher Qualität 5–16 % mehr. /index schreibt deshalb kein STRUCTURE.md mehr (ein vorhandenes generiertes wird gelöscht) und keine Verweiszeile mehr, und SUMMARY.md enthält höchstens 25 Zeilen Fakten außerhalb des Codes: Kunde, Deploy, externe Systeme, unsichtbare Entscheidungen. Veralteten Kontext repariert /index selbst statt „manuell aktualisieren“ zu empfehlen, und context-drift-check läuft jetzt im Quality-Gate.

bash
bash
/index

Was sich für dich ändert ​

Neu verfügbar

  • /offload <id> und /offload collect <id> übergeben Specs an einen verbundenen Orca-Server (DEVKIT_OFFLOAD_ENV und DEVKIT_OFFLOAD_SSH setzen); es ist ein reiner Nutzer-Skill.
  • devkit sync installiert node als Pflicht-Tool (brew auf macOS, apt auf Linux; nvm oder volta genügt), weil dreizehn per npm installierte Tools ohne node stillschweigend fehlten.

Verhalten geändert

  • In Orca läuft /spec-work … per /delegate mit dem claude-Implementer als beobachtbarer Child-Worktree statt als unsichtbarer nativer Agent, was etwa 3 Minuten gegen Sichtbarkeit tauscht.
  • Delegate-Läufe bekommen das nur für Main gedachte ADHD-Regelset nicht mehr, dessen Fünf-Punkte-Limit Review-Findings aus dem Blick drängen konnte; Ponytail bleibt.
  • core.md und das Delegate-Routing bevorzugen jetzt ein selbstprüfendes Script statt N Modell-Turns und halten Wegwerf-Scripts aus dem Repo.
  • Die Ponytail-Leiter steht jetzt in der /spec-Authoring-Phase und im Implementer-Prompt von /spec-work.
  • devkit commit-prep druckt bei fehlgeschlagenem gitleaks-Scan file:line und RuleID (nie das Secret), und spec-verify listet bei rotem Gate neu eingeführte fallow-Findings, auf 20 begrenzt.
  • Die Spec-Validierung nennt bei review_focus_unpinned, verify_vacuous_at_head, AC_EVIDENCE=missing und falscher Spec-Version die akzeptierte Form, meldet deutsche Prosa unter Strict-Authoring und akzeptiert Legacy-Complexity small/large.
  • devkit spec-renumber benennt jetzt Legacy-Specs um, deren Titel keine ID trägt, sodass die von duplicate_spec vorgeschriebene Reparatur auf allen 20 kollidierenden Dateien greift.
  • Spec-Review-Pakete erkennen Commits anderer Specs an jeder ID-Schreibweise (Spec 013, Spec #13, spec_13, nur im Body), und eine native Claude-Runde zählt nicht mehr als zweite Runtime.
  • Der Delegate-Preflight nennt bei codex-Host-Skew host_path und cli_path und ignoriert fremde Installationen; return überspringt einen Symlink, der auf Mains eigenen Pfad zeigt.
  • Der cd-guard-Hinweis sagt jetzt, dass der Befehl im Verzeichnis des entfernten cd lief, damit Subagents ihn nicht mehr mit absoluten Pfaden wiederholen.
  • Die Tool-Installation führt für pnpm und opencode das Install-Script aus, statt Platzhalter-Binaries zu hinterlassen, und der Plugin-Abgleich repariert das rpiv-todo-Manifest, sodass Pi nur eine typebox-Kopie lädt.
  • pi-goal-x entfällt (kein Release deckt Pi 0.99.1 ab); bestehende Installationen bleiben bis pi uninstall pi-goal-x. pi-mcp-adapter wechselt von 3.2.0 auf 4.0.0 für den Pi-0.99-Peer-Bereich.
  • tool-review und die Dependency-Prüfung funktionieren wieder mit npm 12, das npm view --json in ein Array wickelt.

Umgezogen

  • devkit liquid-settings ist ins Shopify-Boilerplate umgezogen: npm run theme:settings (sp-theme-scripts); --unused und die JSONL-Zeilen bleiben gleich.

🚀 Neue Funktionen ​

  • rules — one self-checking script, no look-first or verify turn (93c4bdd)
  • spec-work — run the claude implementer visibly inside Orca (6198a73)
  • quality-gate — route context-drift-check as a scanner (b7317fa)
  • rules — prefer one script over N model turns (b4449ae)
  • index — turn the stale-context hint into a truth pass (83a112a)
  • delegate — sandbox pi implement with Seatbelt on macOS (bed2fd4)
  • tools — drop pi-goal-x (Spec 688) (89df20f)
  • review — gate new-surface specs on two review runtimes (Spec-703) (628c867)
  • hooks — nudge on the third sed -n range read of one file (3c1f20d)
  • hooks — second context hint at 300k without a clean cut (68425b9)
  • skill-lint — fail stale step and anchor pointers in skill references (1902681)
  • review — gate new-surface specs on Codex and Pi reviews (Spec-703) (Spec 702) (8a93d67)
  • tools — install node as a required tool (9fa6998)
  • offload — hand specs to a connected Orca server (Spec-702) (ba02081)
  • mcp — mirror project .mcp.json servers into Codex and OpenCode (57c3fa1)
  • spec — carry the ponytail ladder into spec authoring and implementers (244af10)
  • spec-work — add judge to settle an unresolved judgement AC (b548abe)
  • devkit-issues — decide requests via the ponytail ladder (dd4fa33)

🐛 Fixes ​

  • tool-pin-audit — read the darwin platform block, never query gh without a repo (e86eb10)
  • tools — bump pi-mcp-adapter to 4.0.0 for the Pi 0.99 peer range (e9bc43e)
  • delegate — keep throwaway scripts out of the repo (de4d76c)
  • commit-prep — print redacted gitleaks findings on scan failure (b3a6697)
  • spec-verify — list introduced fallow findings on gate failure (9ea47a5)
  • context-drift-check — ignore history logs and home/env-rooted refs (cebd8d5)
  • drift — attribute foreign committed deletions as foreign (42a4eca)
  • spec-review-prep — a native Claude round is not the second runtime (Spec 703) (f84d29f)
  • tool-registry-check — cover dshPlugins, fail on unregistered, check peer ranges (7db6761)
  • offload — have the worker run the affected suites before committing (Spec 703) (adb7a5e)
  • offload — scan every Run by id, delete the server branch via git (Spec 703) (82c722b)
  • offload — mark the skill explicit-only for Codex (45f9c41)
  • spec-review-prep — classify other specs' commits by any id spelling (Spec 013) (89e87e5)
  • spec-meta — say Spec-Version is a format version, not a revision (2ef2e3b)
  • spec-renumber — rename legacy specs whose title has no ID (bfe72b8)
  • dev-sync — keep dev versions younger than 12h when pruning (d6a3b81)
  • offload — surface a stopped worker instead of a silent ask (Spec 703) (4726aee)
  • spec-validate — repair the unit test and clippy after #369 and #370 (bb653b3)
  • offload — refuse a half-done result, add collect --wait (e5074f9)
  • offload — search live workers across every Run, unbound (cad4090)
  • offload — read every Run page before trusting no live worker (2d979e2)
  • hooks — keep the main-only ADHD ruleset out of delegate runs (d7d95b7)
  • spec — repoint stale step and heading references (7d1f25a)
  • offload — gate cleanup and restart on the worker's Orca state (a8d020e)
  • offload — stop server terminals before the cleanup HEAD check (64998ce)
  • offload — close the Pi delta-review follow-ups (a75a8b0)
  • offload — close the Pi and Codex review blockers (d6b533d)
  • offload — start from a throwaway shell terminal (Spec 702) (dbf87a0)
  • spec-validate — name the missing Review Focus part and the evidence route (6dee299)
  • spec-meta — accept legacy Complexity small and large (5863047)
  • offload — reuse the server review instead of reviewing twice (7ba2a1b)
  • offload — close the four Spec 702 review follow-ups (e8f1654)
  • delegate — end the frozen-codex repair hint with codex update (743fd6d)
  • offload — accept a cherry-picked result in collect --cleanup (Spec 702) (7614b24)
  • hooks — stop reading a regex $ anchor as a live expansion (352af41)
  • mcp — skip mirroring servers whose url or args need ${VAR} (327c760)
  • spec-validate — flag German prose in a spec under strict authoring (99a59be)
  • spec-validate — name the accepted shapes in verify_vacuous_at_head (9f1ebdd)
  • cd-guard — say the command still ran in the stripped cd's directory (ac5bd17)
  • devkit-issues — ask the maintainer only process questions (31e6cdd)
  • devkit-issues — put devkit on the worktree agents' PATH (889cb11)
  • delegate — return skips a symlink that points back at main's own path (d7aa849)
  • delegate — host-skew names host and cli paths, skips foreign installs (381ed56)
  • delegate — state pi's real MCP reach in the runtime notes (ff05af4)
  • tools — run install scripts for npm bins that are placeholders (b20638f)
  • spec-verify — audit only the declared TS/JS files with fallow (b2678cb)
  • lint-prep — drop --diff from php-cs-fixer check; name the red gate in freeze-ready (4554f71)
  • spec-validate — give per-runner ANSI advice for piped PHP tests (618c86d)
  • pen-design — fit the cdp mobile-import step into its budget (ec777aa)
  • hooks — stop reading a quoted heredoc word as a .env glob (fe2866c)

♻️ Refactoring ​

  • test-runner — drop the static shell checks (1f4fef9)
  • review-prep — filter go.mod, Gemfile and requirements natively (4e23e82)
  • review-prep — use support::git for verify and cat-file (7b4bdc1)
  • review — share the review package dir and publish steps (ad69fbd)
  • scripts — one markdown fence/heading scanner (b1498b3)
  • skills — drop prose the scripts already enforce (c37c810)
  • review — share lens_for and sort_unique, factor dependency projections (420f2ef)
  • spec — reuse shared helpers instead of private copies (6211266)
  • liquid-settings — move the audit into the Shopify boilerplate (ef2aabe)

📖 Dokumentation ​

  • tools — review agy 1.2.13 now that the binary is installed (5a9cde0)
  • tools — record that cb has no newer release than its 0.1.0 pin (31031b6)
  • tools — review shellcheck v0.9.0 to v0.11.0 (5eec5f4)
  • tools — review ripgrep 14.1.0 to 15.2.0 (f6faf3f)
  • tools — review pandoc 3.1.3 to 3.11 (e092590)
  • tools — refresh the gitleaks review, no upstream movement (2dd3702)
  • tools — review gh v2.45.0 to v2.102.0 (ec17299)
  • tools — review delta 0.16.5 to 0.19.2 (9f7497e)
  • tools — review claude-code 2.1.261 to 2.1.286 against the wired surfaces (fbd5cee)
  • specs — add Spec-705 codegraph gate exempts running spec files (8ecdfc6)
  • delegate — run the bulk script unasked (69123a6)
  • accept the spec-work runner change (9d76bcd)
  • workflows — accept the docs-source digest (c139e63)
  • workflows — /index now repairs stale context (c8fa33b)
  • stack — test-prep no longer runs static shell checks (cea2745)
  • context-bundles — name the native commands, not retired .sh scripts (1cf4788)
  • context — rotate oversized DECISIONS entries into the archive (2c65808)
  • agent-browser — fold the profile note into the existing login step (55be110)
  • context — drop stale shell facts and dead gotchas (6ed51d9)
  • spec-work — disambiguate phases 0-3 in runner prompt (181bf04)
  • agent-browser — per-project profile convention for logins (76ba6f2)
  • accept the spec-work drift-rule wording (8506fd2)
  • devkit-issues — fix every issue through pi in a visible Orca child (26f6078)
  • agents — move test procedure and language detail out of AGENTS.md (5eb3801)
  • spec-703 — re-cut to two distinct review runtimes (7b2ebd7)
  • spec-703 — record the review block on three contract defects (73cc11a)
  • run-cost-prep — name the --agents TSV columns in help (912411c)
  • accept the spec and review pointer refactors (Spec 703) (78fd972)
  • spec — add Specs 703 and 704 for the new-surface review gate (Spec 702) (3ce0815)
  • conventions — say where script subcommands are registered (6f5ec68)
  • ponytail — name a revisit trigger on three deferrals (a6e353c)
  • optional-tools — list ponytail among the default plugins (3246553)
  • accept the spec skill drift after the ponytail sentence (4bf48be)
  • spec-work — say where judge evidence files belong (9bc8d9c)
  • agents — make the ponytail ladder the first step of every change (a67d313)

🧪 Tests ​

  • share-render — pin the argv of pandoc, mmdc and archify (dc82c04)

🏗️ Wartung ​

  • todo — add delegate-visible-a-report-only-implement-run-rea (4f44cd0)
  • content-language — accept the archived DECISIONS German line (6243082)
  • todo — park the pre-committed-surface gap of the new-surface gate (5dbb975)
  • spec-703 — rustfmt the new-surface suite (80801a9)
  • improve — stamp an empty friction worklist run (801aa9f)

No commit type ​

  • Route Pi tiers to Sonnet 5.5 and repair the rpiv-todo manifest on sync (128c202)

v0.50.0 — 2026-09-30 ​

Was du nach devkit sync tun musst

  • Projekte, die prettier auf *.md laufen lassen (.prettierignore oder prettier in package.json): einmal devkit init ausführen, damit prettier versiegelte Specs unter devkit/ nicht mehr umschreibt.
  • Wer kimi, codex oder opencode als Delegate-Runtime auf diesem Host will: devkit sync --optional, danach zeigt devkit runtime-route --inventory implement, welche Runtime bereit ist und warum nicht.

Ein kleiner Fix in Pen gibt ein Design jetzt frei, statt eine ~20-minütige Agent-Neuzeichnung (75–140 Tool-Calls) zu kosten, das Spec-Review-Paket bettet keine 550 KB fremden Diff mehr für eine 15-KB-Änderung ein, und 8 von 17 pi-Fanout-Rückgaben, die als „missing“ galten, landen jetzt. Update mit devkit sync.

146 commits since v0.49.0 · Specs 681, 698, 699, 700, 701

✨ Highlights ​

✏️ In Pen korrigieren, Frame nennen, fertig ​

Der Owner darf einen Frame direkt in Pen.app korrigieren, speichern und die Nummern nennen („12 und 13 angepasst“) — diese Nachricht gibt die Frames frei, und design-read --diff zeigt nur geänderte, neue und entfernte Nodes, sodass der Agent den Diff umsetzt statt neu zu zeichnen (Spec 701).

bash
bash
node content/skills/pen-design/scripts/design-read.mjs 12 13 --diff

🪶 ponytail prüft bei jedem Review mit ​

/review lässt ponytail-review über denselben Diff laufen und listet jeden neuen ponytail:-Marker als Follow-up mit Todo-Angebot; der Audit-Modus nimmt ponytail-audit dazu. Die Hinweise stehen in einem eigenen Block und machen aus keiner sauberen Runde ein PASS_WITH_FOLLOWUPS, und /todo kürzt damit den eigenen Diff vor dem Commit.

text
text
/review

🏃 /spec-work übergibt den Lauf an einen frischen Runner ​

Main steuert nur noch: Steps 0–3 gehen an einen frischen Agenten, der umsetzt und bei freeze-ready zurückgibt, das unabhängige Review macht Main selbst. Inline ist die benannte Ausnahme.

text
text
/spec-work 712 --in-place

🔀 Todos parallel ​

/todo next --parallel N wählt bis zu N bereite Todos, deren Refs und Pfade sich nicht überschneiden, überspringt Entscheidungs-Todos und gibt sie an einen delegate-fanout-Lauf; /todo next ohne Flag bleibt seriell.

bash
bash
devkit todo list --ready --disjoint 3

🧾 Der Spec-Freeze blockiert nicht mehr auf fremder Arbeit ​

freeze-ready wird nicht mehr rot durch devkit sync-Ausgaben, generierten Agent-State, einen Commit nach dem Start außerhalb des Spec-Scopes, einen per /spec-update wieder geöffneten Vertrag oder eine Progress-Log-Zeile, die ein Verify zitiert; spec-verify-Ergebnisse zählen jetzt. Das eingefrorene Review-Paket nennt Pfade außerhalb des Scopes nur noch beim Namen (550 KB → Umfang einer 15-KB-Änderung) und trennt frühere Spec-Commits ab.

bash
bash
devkit spec-work-run <ID> freeze-ready

🤝 Delegate-Rückgaben landen, was das Kind getan hat ​

Acht von siebzehn pi-Fanout-Kindern druckten am 2026-09-30 einen vollständigen Handoff, der als fehlend galt; Fanout liest jetzt pis echte Formen und zeigt pro Kind den ganzen Block. Gestagte Löschungen landen, additive Änderungen an einer Datei, die ein anderes Kind gerade gelandet hat, werden 3-Wege-gemergt, ein leerer Implement-Lauf stoppt mit DELEGATE_RETURN_EMPTY, und --commit nimmt den Betreff aus der ersten Zeile des Briefs.

bash
bash
devkit delegate-fanout pi implement --commit --brief a.md --brief b.md

🧰 Runtimes installieren sich auf jedem Host ​

kimi installiert sich gepinnt (2.1.1) über ein per sha256 geprüftes Vendor-Skript, codex und opencode kommen auf Linux über npm, devkit sync schreibt pis mcp-adapter.json, damit interaktives pi die MCPs bekommt, und runtime-route sowie devkit doctor --target pi nennen die fehlgeschlagene pi-Bereitschaftsprüfung samt Fix.

bash
bash
devkit sync --optional && devkit runtime-route --inventory implement

🧹 Idle-Sessions und tote Worktrees ​

worktree-gc --sessions listet untätige Orca-Agent-Terminals als safe/ask/keep und schließt mit --apply nur die sicheren; SessionStart nennt die Zahlen einmal täglich. Gemessener Anlass: 13 tagelang untätige Claude-Sessions brachten einen Mac an die Swap-Grenze, ein Linux-Host hielt 6,3 GB tote Delegate-Worktrees (Spec 698).

bash
bash
devkit worktree-gc --sessions --apply

🛍️ Liquid-Settings-Audit ​

devkit liquid-settings liest Schemas, Templates, Section-Groups und settings_data.json und gibt pro Vorkommen einer Option eine JSONL-Zeile aus; --unused nennt reine Default-Optionen sowie tote Section- und Block-Typen. Liquid-Graph und Component-Inventory halten jetzt einen Datensatz pro Zeile, sodass rg ganze Datensätze liefert (Specs 699, 700).

bash
bash
devkit liquid-settings --unused

🛡️ Guards blockieren weniger vom Richtigen ​

Ein cat auf eine 14-Zeilen-Datei passiert das Codegraph-Gate wie ein kleines Read, ein Env-Dateiname in einer Commit-Nachricht gilt als Daten, das vom Doctor empfohlene chmod 600 .env passiert den Secret-Guard, macOS bekommt eine Timeout-Form, die der Wait-Guard akzeptiert, und Subagents sind vom Background-Wait-Guard ausgenommen.

bash
bash
chmod 600 .env

Was sich für dich ändert ​

Neu verfügbar

  • pen-design pinnt @pen.dev/cli 0.3.10 (.pen-Format 2.20) und versucht beim 390-px-Mobile-Import zuerst cdp-Viewport-Emulation statt das Fenster von Hand zu verkleinern. Wo du designst: devkit sync --optional; meldet tool-pin-audit einen älteren Canvas, ihn einmal über pen interactive neu speichern.
  • pen-design hat einen Next.js- + shadcn/ui-Adapter neben den bestehenden Stack-Adaptern.
  • design-sheet-fill importiert Icons im Lucide-Stil (<circle>, <line>, gestrichenes <g>) und nennt die Regel hinter jeder UNSUPPORTED-Zeile.
  • --from-template markiert jede Starter-Komponente mit Template: ersetzen, und design-status listet die noch übrigen.
  • design-sort --renumber nummeriert mehr als acht Zeilengruppen, statt abzubrechen.
  • Die strikte Spec-Validierung lintet inline php -r- und node -e-Verify-Bodies schon beim Schreiben, ohne sie auszuführen.

Verhalten geändert

  • Alle GPT-Plätze von Codex und Pi, Prime-Implement und die Codex-Eskalation laufen auf gpt-6.1-sol/medium; Prime fällt auf die nächste Runtime zurück, bis es das Modell kennt.
  • Vertrauliche Projekte starten eine Vorschau nur noch mit Fixture- oder synthetischen Daten; ein Screenshot hatte echte Tabellendaten ans Modell geschickt.
  • lint-prep nutzt php-cs-fixer check --diff, weil PHP CS Fixer 3.95 fix --dry-run ablehnt und das Gate in jedem PHP-Projekt rot war.
  • /fetch-task schreibt einen Brief aus dem Digest und fragt einmal: direkt oder Spec, mit /spec-update, wenn schon eine Spec den Task trägt.
  • git stash ist in der Git-Regel verboten, die jeder Agent liest; sein Stack reicht über Worktrees hinweg.
  • Das Review-Paket streicht Definition-of-Done-Punkte für Stacks, die der Diff nicht berührt, und die Verdict-Wörter des Reviewers werden auf spec-finish-Verdicts abgebildet.
  • design-check zählt deklarierte Variant:-Frames in B2 einmal, ignoriert Zeilen aus Komponenten-Instanzen und schneidet gepipte --json-Reports nicht mehr ab.
  • Eine übrig gebliebene @storyblok/nuxt-Abhängigkeit macht ein reines Nuxt-Projekt nicht mehr zu nuxt-storyblok; das Modul in nuxt.config ist Pflicht.
  • devkit init meldet Skill-Kategorie-Ordner nicht mehr als kaputte Skills (29 Fehlwarnungen in zwei Vaults), und der Doctor überspringt Env-Dateien und Codegraph-Indizes eines anderen Accounts.
  • Der Doctor nennt ein älteres devkit weiter vorn im PATH als Ursache eines Versions-Skews.
  • Ein Delegate, der an seiner Zeitgrenze abgebrochen wird, druckt DELEGATE_TIMEOUT, und das Review nennt REVIEW_DISPATCH_TIMEOUT statt einer leeren Antwort.

🚀 Neue Funktionen ​

  • pen-design — cdp-Viewport-Emulation für Mobile-Importe (d56c050)
  • tools — @pen.dev/cli 0.3.10 gepinnt (0866355)
  • mcp — write pi's mcp-adapter.json so interactive pi gets the MCPs (fe76fba)
  • tools — install kimi through a pinned vendor script (56a13df)
  • tools — roll out codex, opencode and runtime hints on every host (775f4aa)
  • pen-design — add a Next.js + shadcn/ui adapter (26c01cd)
  • runtime-route and devkit doctor --target pi now name the failed pi readiness check and its fix (cdc7de0)
  • B2 no longer flags rows of component instances, and B4 no longer matches frames on a coarse type fingerprint (5c29273)
  • session-foreign untracked files are no longer inlined, and markdown lines no longer show up as removed symbols (ba9653a)
  • #326 and #333 are fixed, and #329 was already fixed in HEAD (f37b3ee)
  • pen-design — owner edits in Pen approve, design-read --diff shows them (Spec 701) (8b5a13a)
  • spec — lint php -r and node -e verify bodies at authoring (4a24d18)
  • review — drop DoD bullets of stacks the diff does not touch (ea26669)
  • pen-design — count declared variant frames once in B2 (6366928)
  • pen-design — mark starter components and list the leftovers (2f94a4d)
  • pen-design — import Lucide-style shapes in sheet-fill (0c87c30)
  • liquid — add liquid-settings usage and unused query (Spec 699) (8b9bc3c)
  • worktree-gc — add session inventory and daily hygiene hint (Spec 698) (b6b4f95)
  • index — write one record per line in Liquid graph and inventory (Spec 700) (2dacda9)
  • fetch-task — route the fetched task on instead of suggesting /spec (3a2a91a)
  • spec-work — hand every run to a fresh runner by default (dba77e9)
  • todo — /todo next --parallel N over delegate-fanout (5c32842)
  • pen-design — number more than eight row groups (54c93c7)
  • todo — trim a todo's diff with ponytail-review before finish (53eecfd)
  • review — feed ponytail-audit and ponytail: markers into /review (87776e9)
  • review — run ponytail-review alongside every diff review (1d98e1e)

🐛 Fixes ​

  • npm — npm 12s Ein-Element-Array aus view --json auspacken (ffb4986)
  • ci-cleanroom — drop the global git identity CI does not have (324c101)
  • doctor — don't call a foreign-owned codegraph index damaged (c8a047e)
  • doctor — don't call a foreign-owned codegraph index damaged (337cf55)
  • init — name why the legacy removal was blocked (b7dc098)
  • init — treat a skill category folder as intact (93babf9)
  • sync — build the dev worktree at a fixed path with its own target (9ade28e)
  • doctor — report a lagging dev build as a note (8b70204)
  • pen-design — survive imported .pen libraries in the scripts (bcadb45)
  • doctor — skip env files another account owns (59417b3)
  • delegate — end a final-message handoff at its open list (920d331)
  • hooks — let a lone chmod on an env file pass the secret guard (b92ed1b)
  • delegate-fanout — take the commit subject from the brief (eafc221)
  • sync — build a dirty maintainer checkout's HEAD from a worktree (e707ed5)
  • spec — keep the template within its token budget (7a4c488)
  • doctor — detect skew by a shadowing devkit on PATH (40a7a1f)
  • delegate — accept finding lines under open: in a handoff (87b1deb)
  • doctor — stop steering a maintainer checkout off dev mode (dbdc9fa)
  • pen-design — keep the owner-edit example phrase in English (f66c2af)
  • hooks — give macOS a timeout form the wait guard can pass (5409804)
  • review — separate prior spec commits from the reviewed diff (7018dc1)
  • spec-work — keep the start baseline across a contract reopen (7f22bb0)
  • rules — preview confidential projects on fixture data only (e39aefb)
  • spec-work — let review-memory ingest record a native review round (6927f7a)
  • spec-work — keep devkit sync output out of spec drift (0fb357f)
  • pen-design — name why sheet-fill rejects an icon (a1836f8)
  • pen-design — record --icons Source on an existing icons sheet (16d717a)
  • review — list foreign paths by name and bind nested-repo files (b56d464)
  • delegate-return — compare against the mirror base, not HEAD (515697a)
  • spec — read verify commands only from Step and AC rows (400f622)
  • spec-work — let freeze-ready accept spec-verify step results (897a033)
  • lint-prep — run php-cs-fixer check instead of fix --dry-run (7861e74)
  • review — map the reviewer verdict words to spec-finish verdicts (61fdb30)
  • spec-work — keep review-verdicts rule anchors after the delta fix (887d5ab)
  • spec-work — name both paths a delta review dispatch takes (Spec 698) (ba3f323)
  • fetch-task — drop the todo route from the hand-off (632bcfb)
  • spec-work — count commits after start outside scope as foreign (bfb6ac2)
  • delegate — print the full handoff block per fanout child (1c9ab8f)
  • review — collapse the nested entry split for clippy (7346202)
  • rules — fit the git stash rule into the always-on budget (e171c83)
  • hooks — treat an env-file name in a commit message as data (0c90abd)
  • hooks — let small Bash reads past the codegraph gate (7f0e02c)
  • design-inventory — rebuild before rendering design tables (a0f8e30)
  • delegate — keep the fallback Orca log and name pi write roots (2158ebc)
  • runtime-route — name why pi implement is not ready (44b505b)
  • review — fill PROJECT CONTEXT from numbered and path gotchas (2f47942)
  • spec-work — keep generated agent state out of spec drift (c2b6049)
  • pen-design — prove variable-count grids at every count (ad64423)
  • rules — forbid git stash in core git hygiene (d50c712)
  • sync — route dev-build homes on a devkit checkout to dev-sync (e213b2f)
  • delegate — read pi's real handoff shapes, name the pi sandbox root (6162a45)
  • review — name dispatch timeouts and stop citation bleed (f44f388)
  • spec-reconcile — accept root-level files from Files to Modify (ed1ca10)
  • delegate-return — land deletions, merge additive edits, flag empty (063c3e6)
  • hooks — exempt subagents from the background-wait guard (964457e)
  • detect-stack — need the Storyblok module, not only the dependency (6d7d854)
  • pen-design — stop truncating piped --json reports (1afc07f)
  • review — keep ponytail advice outside the review verdict (cb14e2c)
  • init — keep prettier off the devkit/ directory (4256a27)

♻️ Refactoring ​

  • last dead item and temp-name helper copies (e3ca629)
  • drop release-cleanroom, date shell-outs and dead wrappers (63b2ed9)
  • scripts — drop SpecLayout and last identical helpers (2c68043)
  • spec — one Files-to-Modify parser and one spec resolver (5ef81bb)
  • scripts — share last identical json, text and git helpers (5fe25b4)
  • maint — drop legacy .sh aliases and unset env overrides (f45d0a9)
  • maint — compile shared maint helpers once, drop dead entries (1c348fb)
  • scripts — merge identical helper copies into support (6de4c19)
  • drop blanket dead_code allows and delete what they hid (678af6a)
  • scripts — share cmdsub and is_regular_file via support::fs (c1f4b0c)
  • scripts — share duplicated spec helpers via spec_meta (0bd5922)

📖 Dokumentation ​

  • reference — decision rows for Specs 698, 699, 700, 701 (f897907)
  • harnesses — keep the German page under the prose limit (2ea25a9)
  • design — accept the pen-design import and adapter changes (3cf12b6)
  • workflows — accept the delegate-fanout commit-subject change (0cc34ad)
  • design — name owner edits and design-read --diff on the page (c0f179d)
  • spec — add spec 701 owner edits in Pen as approval (cbaf96a)
  • accept the specs page digest after the spec-work fixes (b340767)
  • accept the design page digest after the pen-design fixes (14fc5df)
  • design — fit the icons sheet row into the prose limit (5672be0)
  • accept docs-source digests after the issue fixes (23aa481)
  • spec — add specs 699 and 700 for Liquid audit artifacts (8d9172c)
  • spec — add spec 698 worktree and session hygiene (fd9a08a)
  • install — name OpenSSL 3 as the first-install trust anchor (5702e77)
  • re-set docs-source markers after the fix wave (3503e48)

🧪 Tests ​

  • delegate-return — give the fixture repo its own git identity (7754f3e)
  • pi — give the doctor --target pi test a fake pi and no sandbox (2984a1e)
  • delegate — retry the bridge exec on ETXTBSY (e978cfe)
  • one env-cleared git helper for the skills-pull tests (3d32cef)
  • share spec-reconcile and git helpers via parity::support (36cd562)

🏗️ Wartung ​

  • todo — narrow project leftovers to the onedot-os vault (7e646de)
  • todo — add projekt-reste-nach-devkit-init-dangling-skills-o (6b147ef)
  • todo — complete devkit-issues-326-342 (279b0df)
  • fanout codegraph (116a554)
  • fanout secretguard (2cea247)
  • fanout todo (665debd)
  • fanout commitprep (60c251f)
  • fanout authoring (55e9655)
  • fanout skew (6f78822)
  • todo — add devkit-issues-326-342-17-issues-from-2026-09-30 (7a18c6a)
  • todo — add spec-finish-completed-spec-701-although-freeze-r (f122f48)
  • todo — add design-read-diff-follow-ups-spec-701-review-diff (33e11e3)
  • todo — add flaky-unit-tests-under-parallel-load-session-sta (309f3bc)
  • todo — add spec-699-follow-up-liquid-bodies-keep-and-commen (f43e247)
  • todo — add spec-700-follow-ups-design-inventory-test-for-em (a3bc96c)
  • todo — add worktree-gc-help-row-lacks-sessions-main-rs-208 (54ad7ad)
  • todo — close delegate-fanout todo, fixed in 063c3e6e and 6162a458 (1a005b7)
  • todo — record 2026-09-30 decisions on three parked todos (c779087)
  • todo — close cost-transparency todo as obsolete (e1a25ac)
  • todo — close four stale todos after maintainer decision (Spec 681) (e557991)
  • todo — close five todos already done on main (41019c8)
  • todo — record lost deletions and empty pi returns (17748f2)
  • todo — note recurring read-only pi fanout child (487ad9f)
  • todo — add delegate-fanout-3-way-merge-additive-returns-ins (b764b3e)
  • devkit — restore audit, research, brainstorm and evaluation evidence (8105476)
  • delete uncalled maint commands and dead test scaffolding (63b815c)
  • devkit — drop committed artifacts nothing reads (dba32cb)

No commit type ​

  • Switch routing to gpt-6.1-sol/medium across all GPT seats (ce3d46a)

v0.49.0 — 2026-09-29 ​

Was du nach devkit sync tun musst

  • Shopify-Projekte, deren Hooks devkit path skill stack-shopify-liquid aufrufen: einmal devkit skills pull ausführen, damit der Name auf sp-theme-scripts auflöst.
  • Eine bereits laufende Spec behält für Drift-Checks die alte merge-base; gib ihren Start-Commit explizit an: devkit spec-drift-check <id> <start-sha>.

Drift-Checks vergleichen jetzt gegen den Commit, mit dem eine Spec gestartet wurde, reine Claude-Hosts bekommen eine Review-Route statt NO_ROUTE, und Lite-Specs enden nach einer Review-Runde. Update mit devkit sync.

27 commits since v0.48.0 · Specs 677, 696

✨ Highlights ​

🎯 Drift-Checks messen die Spec, nicht die Branch-Historie ​

spec-drift-check und freeze-ready nehmen standardmäßig den HEAD, den spec-work-prep --start festhält; ein Branch von anderer Basis oder mit älteren gepushten Commits flutet den Check nicht mehr mit fremden Dateien. Eine explizite base-ref gilt, Änderungen paralleler Sessions zählen als fremd.

bash
bash
devkit spec-drift-check <id> <base-ref>

🧭 Review-Route auf reinen Claude-Hosts ​

Ohne codex, kimi oder dsh löst die Review-Stufe auf claude auf, markiert als Same-Harness-Ersatz, statt mit Friction-Signal zu scheitern; ein verpflichtendes unabhängiges Review meldet weiter not_reviewed.

bash
bash
devkit runtime-route review   # RUNTIME=claude RUNTIME_FALLBACK=claude:same-harness

🔁 Lite-Review-Pfad erzwungen ​

Eine Spec mit Effort und Risk low oder medium bekommt eine Review-Runde: Nach einer Runde mit nur nicht-qualifizierenden Findings (kein Security-, Datenverlust- oder AC-Befund) wird ein neuer Dispatch abgelehnt statt eine weitere Fix-Schleife zu starten.

text
text
REVIEW_LITE_PATH_CLOSED

🎨 pen-design führt freigegebene Entwürfe in die Master zurück ​

Nach der Freigabe wandert der Entwurf in seinen Master-Frame oder seine Komponente und wird gelöscht; design:marker meldet einen Entwurf, der seinen ausgelieferten Master überlebt.

bash
bash
node content/skills/pen-design/scripts/design-marker-check.mjs

🛍️ Shopify-Projekte finden stack-shopify-liquid wieder ​

Der alte Skill-Name löst auf das gezogene sp-theme-scripts auf, ein fehlender Ersatz verweist auf devkit skills pull, und ein Clone ohne Zugriff aufs private Boilerplate sagt das, statt still zu scheitern.

bash
bash
devkit skills pull --check

Was sich für dich ändert ​

Neu verfügbar

  • devkit spec-finish <id> --phases prep=3m,implement=12m schreibt in die COMPLETED-Zeile, wohin die Zeit einer Spec ging.
  • devkit token-audit --project <slug> filtert jetzt auch die Prune-Ersparnis auf dieses Projekt.
  • /research bietet ein optionales Evaluation-Receipt, das festhält, wogegen der Lauf die lokale Abdeckung verglichen hat.

Verhalten geändert

  • Ein AC mit nur judgement: bricht spec-work-run check --phase acceptance nicht mehr ab; es geht ans Review, die Phase endet mit exit 3.
  • spec-work-prep --start gibt REFUSE=readiness_unresolved aus, wenn ungeklärte Pfade den Start blockieren, statt still mit exit 2 zu enden.
  • Jedes not_reviewed von devkit review-quick nennt REASON_CLASS und einen DIAGNOSTICS-Logpfad; ein aufgebrauchtes Kontingent wird benannt.
  • devkit quality-gate schlägt fehl, wenn eine geänderte Rust-Testdatei ein #[ignore] hinzufügt.
  • Der Post-Edit-Lint prüft auch Dateien, die ein Bash-Befehl geschrieben hat (sed -i, Heredoc, cat >), nicht nur Shell-Skripte.
  • Die Spec-Validierung ignoriert zitatähnlichen Text in Progress- und Review-Log und meldet eine leere Hälfte einer verketteten Verify.
  • Dateizuordnungen eines Delegates im Hintergrund landen bei der echten Session, Review-Fingerprints mischen keine Sessions mehr.
  • devkit sync meldet eine frische pen-Installation nicht mehr als PATH-Schatten ihrer selbst; devkit doctor überspringt einen MCP ohne sein Tool.
  • /boilerplate-feedback steht neben /friction-feedback, damit wiederverwendbare Kundenänderungen es auch ohne expliziten Aufruf erreichen.
  • devkit delegate-fanout --commit nimmt die Commit-Betreffzeile aus der HANDOFF-Zusammenfassung des Delegates statt einer generischen Zeile.
  • devkit design-tidy --images listet jedes behaltene Bild als KEEP design/<datei>.
  • devkit index-prep nennt Datei und OS-Fehler, wenn es AGENTS.md oder das Index-Manifest nicht schreiben kann, statt still mit exit 1 zu enden.

🚀 Neue Funktionen ​

  • quality-gate — fail on a newly added #[ignore] (7600b1f)
  • delegate-fanout — commit subject from the handoff (1e017e7)
  • token-audit — scope prune ledger to --project (7a12e07)
  • spec-finish — record phase times in the COMPLETED line (c7eda0c)
  • review-runtime — enforce the lite review path (473e778)
  • pen-design — consolidate approved drafts into masters (7500648)

🐛 Fixes ​

  • index-prep — name why the AGENTS.md block write failed (be3e9ef)
  • design-tidy — close the Spec 696 image follow-ups (740c638)
  • spec-validate — skip log sections, report vacuous chain halves (8d1c9f0)
  • post-tool — session identity and lint for Bash edits (1cc38bd)
  • runtime-route — same-harness review fallback on claude hosts (2c667f3)
  • spec-work-run — defer judgement-only ACs to review (5bbe997)
  • skills — resolve replaced skills and name access failures (45ecc68)
  • spec-work-prep — print REFUSE= on unresolved readiness (08af7e8)
  • spec-drift-check — honor base-ref and foreign sessions (803e4db)
  • review-quick — name the reason behind not_reviewed (facfaff)
  • skill-lint — flag paths: on an explicitly invoked skill (1a249ef)
  • rules — trigger /boilerplate-feedback outside explicit calls (fe46fd0)
  • tools — probe version subcommand when --version fails (f2d6386)

📖 Dokumentation ​

  • changelog — Unreleased head for the issue and todo batch (2758307)
  • accept drift markers after the issue and todo batch (8b1b840)
  • site — English labels on generated skill pages (5b3d6a0)
  • specs — point specs README at specs-and-todos (4ca7dc1)
  • research — optional evaluation receipt (e054121)

🧪 Tests ​

  • statusline — render-level todo and plan-line tests (129782f)

🏗️ Wartung ​

  • todo — add delegate-return-counts-the-mirror-commit-as-dele (4f5aa72)
  • todo — close six todos already done on main (Spec 677) (56e46a4)

v0.48.0 — 2026-09-29 ​

Pi erhält gemeinsame Skills ohne Codex, Pen-Importe mit 121 MB PNGs schrumpfen zu WebP, und Review-Batches schicken nicht mehr 24–42 Aufrufe Datei für Datei nacheinander. devkit sync und devkit doctor reparieren verdeckte Tools und bieten ihre Fixes selbst an. Update mit devkit sync.

154 commits since v0.47.0 · Specs 685, 688, 689, 691, 692, 693, 694, 695, 696, 697

✨ Highlights ​

🧭 Pi bekommt gemeinsame Skills ohne Codex ​

Eine Pi-only-Installation erhält jetzt die gemeinsamen od--Skills; Pi kann für /spec-work eine eigene Implementierungsroute vorbereiten. Vorher wurden diese Skills nur mit aktiviertem Codex installiert.

text
devkit config pi on
devkit apply

📋 Worktree-Pläne bleiben über Sessions sichtbar ​

devkit todo plan speichert Schritte pro Worktree auch über Runtimes und Kompaktierungen hinweg. Die Statuszeile zeigt Fortschritt, aktiven Schritt und verfügbare Todos; offene Schritte lassen sich als Todos parken.

text
devkit todo plan add "Changelog-Kopf schreiben" "Doku bauen"
devkit todo plan

⚡ Schnellere Implementierungs-Fallbacks mit Sonnet 5.5 ​

Implementierungsrouten bevorzugen jetzt Pi und danach Claude vor Prime; in drei einmaligen Replay-Aufgaben war Pi 2,2–5,1× schneller als Prime, ein richtungsweisendes Ergebnis. Beide Sonnet-Plätze nutzen 5.5 mit mittlerem Effort; Pi löst den Familienalias auch bei neuen Versionen auf.

text
devkit runtime-route implement

🔎 Weniger aufeinanderfolgende Review-Dispatches ​

Bei großen Diffs schickte review-quick bisher jede Datei separat an Codex: 24–42 Dispatches nacheinander mit je ungefähr 40 Sekunden. Jetzt werden Dateien innerhalb des Byte-Limits gruppiert; die finale Scope-Prüfung bleibt.

text
devkit review-quick --own

📦 Spec-Work behält Run-Status und Review-Blocker ​

spec-work-run liefert nächsten Schritt, passenden Brief, Verifikation und Freeze-Bereitschaft aus einem Run-Ledger. Review-Memory nimmt offene bestätigte Findings in Fix-only-Briefs auf statt die ganze Implementierung neu zu starten.

text
devkit spec-work-run 688 next
devkit spec-work-run 688 brief --fix-blockers

🩺 Pi-Setupfehler werden sichtbar ​

devkit doctor --target pi prüft verwaltete Anweisungen und Hook-Bridge gegen die Dateien, die die Bridge wirklich ausführt. Fehlende Pi-MCP-Imports erscheinen jetzt in Doctor und SessionStart statt im Hook-Output zu verschwinden.

text
devkit doctor --target pi

🧹 Browserprüfungen schließen nur eigene Tabs ​

/agent-browser und der Design-Live-Ablauf schließen nach der Prüfung die selbst geöffneten Orca-Seiten, ohne deine eigenen Tabs anzutasten.

text
/agent-browser

📤 Große DSH-Briefs erreichen den Delegate ​

Ein Review-Brief über 128 KiB scheiterte zuvor schon beim Prozessstart; Briefe über 100.000 Bytes gelangen nun über eine private Datei zum Delegate. Ein Brief mit 146 KB wurde live geprüft.

text
/delegate dsh review

🖼️ Pen-Importe schrumpfen zu WebP ​

Ein Pen-Browserimport speicherte jedes Bild als PNG in voller Größe; ein Lauf hinterließ 121 MB. design-tidy --images listet zu verkleinernde Bilder und Waisen; --write wandelt jedes referenzierte Bild in WebP mit doppelter Zeichenbreite und löscht verwaiste Dateien; bei in Pen.app geöffnetem Canvas bricht es ab.

text
devkit design-tidy --images --write

🎨 Pen-Designchecks finden Importreste und kosten weniger Tokens ​

design-check benennt, was ein Live-Import zurücklässt: eingefrorene Marquees, unsichtbare Text-Strokes und Icons ohne Namen. Die Prüfung des aktiven Editors ist eine Einzeilen-Probe statt einer Komponentenliste von rund 3k Tokens pro Aufruf, gemessen bei 36 Aufrufen in einem Importlauf.

text
/pen-design

🔧 Sync und Doctor beheben, was sie finden ​

Ein fremdes Binary, das ein gepinntes Tool verdeckt, bricht devkit sync nicht mehr mit einem manuellen which -a-Schritt ab: eine veraltete brew-Kopie wird entlinkt, jede andere wird zum umkehrbaren Umbenennen angeboten. devkit doctor bietet jeden genannten Fix direkt an, statt ihn zum Kopieren hinzuschreiben.

text
devkit doctor

🌊 Wave-Worker überstehen einen kalten Codex-Start ​

Der Slice-Dispatch gab dem Agenten 3 Sekunden bis zur Bereitschaft, sodass ein kalter Codex-Start mit reason=timeout scheiterte, während er noch lud. Das Fenster beträgt jetzt 120 Sekunden, und ein Timeout nennt die Befehle zur Wiederaufnahme.

text
export DEVKIT_WAVE_READY_TIMEOUT_MS=180000

🧾 Spec-Läufe behalten ein unabhängiges Review ​

Der Standard-Runner von /spec-work ist ein Subagent ohne Agent-Tool und reviewte deshalb seinen eigenen Risk:medium-Diff. Er stoppt jetzt bei freeze-ready, und Main führt das unabhängige Review; freeze-ready akzeptiert zudem Judgement-Kriterien und nennt den veralteten Check, der blockiert.

text
/spec-work 697

Was sich für dich ändert ​

Neu verfügbar

  • Nutze /od-spec-work in einer Pi-only-Installation nach devkit config pi on und devkit apply; Codex muss für gemeinsame Skills nicht mehr aktiv sein.
  • Mit devkit todo plan siehst du die Schritte deines Worktrees auch in späteren Sessions; devkit todo plan park speichert offene Schritte als Todos.
  • Prüfe mit devkit doctor --target pi die verwalteten Pi-Anweisungen und die Hook-Bridge.
  • --help funktioniert an jeder Stelle: 46 devkit-Befehle beantworteten 78 --help mit einem Usage-Fehler und einem Friction-Code.

Verhalten geändert

  • /delegate implement ohne Spec und die Standard-Implementierungsroute beginnen jetzt mit Pi; als Fallback folgt Claude vor Prime.
  • /spec-work liest den aktuellen Claude-Berechtigungsmodus für einfache Entscheidungen; STOP- und destruktive Aktionen bleiben geschützt.
  • /agent-browser schließt nur Orca-Tabs, die seine Prüfung selbst geöffnet hat.
  • devkit init ignoriert Pi-Goal-Dateien in Zielprojekten statt sie als untracked anzuzeigen.
  • /pen-design teilt Designprüfungen jenseits des 64-KB-Ausgabelimits auf, damit keine Findings verloren gehen.
  • /review --quick liefert die Belege für Diff-Reviews und nennt bei einer Ablehnung den Grund statt nur not-reviewed.
  • Der Prompt-Hook ignoriert Friction-Codes aus fehlgeschlagenen Rust-Testfixtures und fordert dafür keinen fremden Issue-Report mehr.
  • devkit quality-gate meldet bei grünem Lauf TESTS_NOT_RUN; die Suites zu deinem Diff startet devkit test-prep --affected-only.
  • Der SessionStart-Index-Hinweis fordert /index nicht mehr in jedem indexierten Projekt; index-prep --report zählt nur Marker, die Fill auflösen kann.
  • Ein wiederholter spec-finish hängt keinen zweiten identischen REVIEWED-Beleg mehr an, und spec-seal stürzt nicht mehr bei einem Gedankenstrich nach einem verify-Befehl ab.
  • Der Secret-Env-Guard blockiert keine Befehle mehr, deren zitierter Text maskierte Backticks enthält, und blockiert weiterhin eine echte Substitution hinter einem maskierten Backslash.
  • Always-on-Regeln finden ihre Referenz-Begleiter über devkit path rule auch auf Codex, OpenCode und Pi, nicht nur unter ~/.claude.
  • index-prep nennt Pfad und Fehler, wenn das Manifest nicht geschrieben werden kann, statt still mit Exit 1 zu enden.

🚀 Neue Funktionen ​

  • doctor — offer the named fixes and classify legacy context7 entries (1661387)
  • tools — offer to move a foreign binary that shadows a tool (3a4a2a1)
  • design-tidy — Spec-696 shrink import images to WebP, clear orphans (84e1588)
  • pen-design — Spec-695 report live-import residue in design-check (2a27425)
  • pi — materialize od-skills for Pi without Codex (f3b5bfb)
  • spec-work-prep — accept --runtime pi (8ea5046)
  • routing — claude ahead of prime in the default implement rule (224c3ea)
  • todo — show plan and backlog in statusline and list (Spec-694) (Spec 693) (8e77ba9)
  • todo — add worktree plan shared across sessions (Spec-693) (e504fe8)
  • print affected suites in spec-route-prep (Spec 692) (567b4c1)
  • add brief-gate --check for spec-work briefs (Spec 691) (4f0ac3b)
  • add review-memory to spec-work-run (Spec 689) (4a4bb8d)
  • tool-review — delta for sha pins and vanished release refs (d8bb25f)
  • tool-pin-audit — audit piPlugins against npm (3e0a8ea)
  • routing — run the second Claude escalation on Opus 5.5 at max (078b41b)
  • routing — let pi route by Claude family alias (cd153d0)
  • routing — move Sonnet tiers to Sonnet 5.5 at medium effort (66be041)
  • add spec-work run helper (Spec 688) (12ceb4d)
  • pi — add doctor target (206ccc0)

🐛 Fixes ​

  • spec-work — default runner hands back before the review (f3e80ca)
  • spec-finish — do not append a receipt that is already the last one (451be50)
  • spec-validate-prep — no panic on multibyte text after a verify command (b937aab)
  • cli — accept --help anywhere in the argument list (c58fb60)
  • todo — plan park skips items a failed run already parked (8e5f684)
  • ci-cleanroom — test the committed HEAD by default (a4aca1d)
  • quality-gate — say on a green run that no tests ran (e320a03)
  • index-prep — name why the manifest write failed (1bfb75d)
  • design-tidy — never delete an image behind a percent-encoded url (02311e7)
  • spec-work-run — name the criterion behind a verification block (Spec 696) (d3513b3)
  • tools — unlink a stale brew copy that shadows a pinned install (e78b88e)
  • spec-work-run — let freeze-ready accept a judgement criterion (Spec 695) (029a2e1)
  • pen-design — state how execute routes filePath, tighten the probe (589daf9)
  • design-tidy — refuse an open canvas before printing the plan (fd34249)
  • pen-design — insert no group label during an --ids apply (9d620b1)
  • spec — accept a symlinked absolute candidate run dir on cleanup (6123e17)
  • hooks — pair backslash escapes before judging a quoted span live (90c1b2f)
  • hooks — treat escaped backticks in double quotes as prose (1c0ef0b)
  • wave — match a leftover worktree through its resolved path (b466818)
  • pen-design — break text-size ties in rebind by line-height, weight and viewport (a95bf7d)
  • pen-design — wrap the system row at 10000 px on every canvas (4d0b1d4)
  • pen-design — wrap a new system frame at the system row's wrap width (56c1193)
  • hooks — name the bounded wait when the second sleep-poll is blocked (543a049)
  • pen-design — confirm the active editor with a one-line probe (c397ef5)
  • design-seed — make the seeded canvas pass the commit-prep secret scan (4a1755c)
  • design-tidy — refuse --write while Pen.app holds the .pen in front (11657d9)
  • pen-design — reset omitted instance properties to their default in rebind promote (6efc2d8)
  • pen-design — never hand a freed number to a new frame (7b98da8)
  • pen-design — place a new column frame below its group's last unit (f55825f)
  • pen-design — place a new row frame beside the frames that stay (5e9bc1b)
  • wave — give worker-start a real agent-readiness window and name the recovery (0c9886c)
  • index — count only coverage markers the Fill step can clear (c97f044)
  • rules — resolve rule companions through devkit path rule (0346940)
  • issues-prep — quote the --show jq filter (e582eea)
  • pen-design — page design-check output past the 64 KB CLI cap (e272a27)
  • spec — shorten cargo filter rule to fit the template budget (bfa0d3f)
  • spec-finish — say where DECLINED-RULING lines must sit (3dd4da8)
  • brief-gate — let --check honor --override (dc60a77)
  • agent-browser — close Orca tabs the agent opened (148cee2)
  • satisfy clippy in tool_review rust_segments (3ecfb14)
  • model-benchmark-pull — name routed models Epoch has not measured (6677e4c)
  • runtime-route — read prime's model list from stderr (76d4a4f)
  • routing — lead the spec-less implement route with pi (3228276)
  • todo — name the worktree route when claim refuses a dirty tree (1640d27)
  • tools — hold dsh at 0.1.5-rc.3 until memsearch#763 is fixed (0ddd728)
  • delegate — hand a dsh brief above the argv limit over as a file (b3bfa79)
  • skills — read /spec-work auto mode from the live permission mode (bc824fe)
  • mcp — surface missing Pi MCPs in doctor and SessionStart (37028c1)
  • hooks — ignore OD_FRICTION codes inside cargo test output (8c83255)
  • tool-review — match name-prefixed surfaces in every consumer kind (475b6b4)
  • tool-review — read Rust and JSON consumers through string literals (ca1f6af)
  • mcp — name the exact Pi import instead of pi-mcp-adapter init (5a0a83b)
  • agent-state — gitignore Pi goal state in target projects (0fd395d)
  • codegraph-gate — a $(grep -n …),+N sed window is targeted (fe85f3d)
  • mcp — read pi-mcp-adapter 3.x config from mcp-adapter.json (90fa266)
  • orca-detect — read a sandbox-denied status answer as blocked socket (1ca4662)
  • tool-review — drop punctuation and comment lines from surfaces (6c2a200)
  • spec-candidate-dir — cleanup accepts an absolutized run path (e1cceb9)
  • maint — drop pre-5.5 and GPT-5.6 model defaults from maint tools (bec7749)
  • tools — review record for pi-goal-x, registry check reads piPlugins (e6641a6)
  • spec-work — keep Goal/Out of Scope reads, spec-verify needs --phase (31cdeae)
  • doctor — Pi bridge check mirrors what the bridge executes (4be6cf5)
  • friction — maintainer repo parks todos instead of filing issues (5dcb218)
  • skills — stop devkit-claude-changelog from triggering ultrathink (b39ccf5)
  • spec-checks — same-day identical AC-EVIDENCE is not appended twice (Spec 688) (3ef4c1b)
  • review-quick — brief carries ACs/manifest, refusals name the cause (835e76d)
  • skills — treat an unconfigured interactive session as auto mode (0755f2f)
  • docs — say AGENTS.md reaches Claude Code via the CLAUDE.md import (ca0dad6)
  • retain dsh fanout logs on failure (Spec 688) (b9b3a0c)
  • test — retry transient busy executable launch (1e58276)
  • release — publish approved GitHub page through native gate (46234b9)

⚡ Performance ​

  • review-quick — pack codex batches greedily under the byte cap (292a7a0)

📖 Dokumentation ​

  • reference — decision rows for Specs 695, 696 (db96760)
  • specs-and-todos — accept markers after the spec-work runner fix (cd4da28)
  • specs-and-todos — accept marker after the plan-park fix (ca6965a)
  • accept design page drift after design-tidy --images (74b59c0)
  • spec — Spec-696 shrink Pen import images to WebP, clear orphans (a4c6ad7)
  • accept drift markers after the issue fixes (ca8e44c)
  • reference — decision rows for Specs 688 689 691 693 694 (ca1bef8)
  • adapters — align Pi skill guidance in German (6843380)
  • describe the worktree plan in specs and todos (3af5145)
  • spec — cargo test filters name the function, not the module path (Spec 685) (9db1452)
  • audit — implement route benchmark, pi vs prime vs claude (5873e64)
  • spec — owner-scoped plan, JSON status and progress bar (693, 694) (96413f1)
  • spec — plan worktree todo plan and its visibility (693, 694) (cab3531)
  • audit — record published harness benchmarks (ae2f2f2)
  • delegate — cite the V4.1 Flash Pi/DSH comparison (e07664b)
  • tools-changelog — probe the consumer route twice (c7646e7)
  • tools — record the adoption checks for jscpd, fallow and orca (2ec76c2)
  • tools-changelog — install order, shared-checkout rules, release handoff (69ea898)
  • spec — fold 690 into 692 as the /spec wording step (e4f87ee)
  • spec — 691 builds on spec-work-run brief via brief-gate --check (Spec 688) (488364e)
  • spec — 690 shrinks to /spec wording over route-prep output (1003d3a)
  • spec — 692 route-prep owns path-to-suites, drop affected-explain (c78e91e)

🧪 Tests ​

  • sync — cover the ponytail always-on opt-out transition (e0cbfda)
  • init — assert the legacy-setup restore under root too (df2b891)
  • pen-design — end the design-check stub output with ROWS_END (5519ebf)
  • follow Spec 695/696 changes that CI turned red (Spec 696) (fc32be8)
  • design-guard — cover the two design-tidy --images forms (120cd68)
  • skills — follow the reworded pen-design lines in the moved fixture (8adf519)
  • make five suites pass on macOS (252ae5f)
  • delegate-fanout — edit the fixture with portable sed (bb4baa2)
  • run true from /usr/bin, which macOS still ships (e733c73)
  • pen-design — end the design-check pen stub with ROWS_END (7f3b5c0)
  • session-start — expect only fillable markers in the index hint (ccc8011)
  • refs — accept rule companions under rules/references (2b4c29c)
  • own suites for spec-lifecycle scripts, gate unmapped scripts (5b824bf)

🏗️ Wartung ​

  • todo — close the rust-toolchain pin todo (2083e45)
  • pin Rust 1.98.1 and fmt-check the devkit crate in CI (53400cb)
  • todo — close six pre-release todos and one stale one (ed75bc9)
  • todo — add pin-the-rust-toolchain-so-local-rustfmt-matches (53cc737)
  • todo — add run-the-k2b-design-check-test-against-the-real-p (dbab143)
  • todo — add design-tidy-images-close-the-spec-696-review-fol (1c56390)
  • todo — add find-why-spec-finish-learning-capture-exits-1 (9d8c496)
  • tests — rustfmt the runtime-inventory skip assertions (ed8005a)
  • tests — drop a needless borrow clippy denies (b1d7058)
  • tests — rustfmt runtime_inventory (4838526)
  • format four integration tests (c5b4847)
  • todo — add render-level-tests-for-statusline-todo-segment-a (c22565b)
  • todo — park prime-run turn-stream gap (fd6c375)
  • format brief_gate_check test (be6f570)
  • todo — add todo-plan-park-two-phase-commit-and-plan-removal (fb2db17)
  • todo — add spec-verify-drift-gate-counts-parallel-sessions (1a35bef)
  • format pi_delegate test (b72b9ce)
  • todo — add delegate-fanout-commit-derive-the-commit-message (1345b49)
  • todo — add dsh-delegate-stdin-brief-and-json-event-capture (7b95994)
  • tools — bump pins after changelog review (184cfe8)
  • todo — add friction-counter-counts-od-friction-lines-from-t (37f08ef)
  • todo — add spec-work-auto-mode-detection-ignores-a-permissi (34c85c9)
  • todo — add review-quick-long-batched-codex-review-invalidat (fe2a6c9)
  • ledger — resolve sonnet-5-5-model to 66be0418 (a334ad8)
  • git — ignore the claude-changelog stamp lock file (22f2390)
  • ledger — record Claude Code 2.1.281-2.1.284 verdicts (4661f1c)

No commit type ​

  • Add spec 697 for native release signature verification (7e3f351)
  • Update (1e0ef77)

v0.47.0 — 2026-09-28 ​

Was du nach devkit sync tun musst

  • Führe /index in Projekten mit Setup-Hinweis aus; nimm in Schritt 0 das Angebot für devkit init an, um verifizierte alte Setup-Dateien zu entfernen.

Der Setup-Hinweis erreicht jetzt 17 von 19 zuvor übersehenen Projekten, Browser-Prüfungen bündeln rund 12 Aufrufe in zwei, und Review und Delegate bekommen direkte Abläufe. Update mit devkit sync.

352 commits since v0.46.0 · Specs 334, 560, 570, 616, 652, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687

Breaking Changes ​

  • /backlog heißt jetzt /todo, der eine Todo-Skill (c4d9eba) Migration: /todo <text> legt ein Todo an, /todo listet oder arbeitet sie ab; „backlog“ führt weiterhin dorthin.

✨ Highlights ​

📋 Offene Arbeit wird automatisch zum Todo ​

Offene Arbeit wird jetzt bei jeder Abschlussfrage als Todo angeboten. Nach rund 30 Tool-Calls oder nach einer Kompaktierung prüft die Session devkit todo list und parkt ungetrackte Arbeit; PreCompact nennt den Resume-Schritt zuerst.

text
devkit todo list
/todo <text>   # legt ein Todo in einer Zeile an
/todo          # holt geparkte Arbeit in einer neuen Session zurück

⏱️ Auto-Compact-Override gestrichen, Bash hängt später in den Hintergrund ​

Der feste Override blockierte /autocompact und ließ Sessions bis ~767k Kontext wachsen; über 200k verursachte schon 71 % der Input-Tokens. devkit sync entfernt ihn; Bash-Befehle wandern erst nach 120s statt 30s in den Hintergrund (zuvor 785 in drei Tagen).

text
devkit sync
# zieht CLAUDE_CODE_AUTO_COMPACT_WINDOW zurück, /autocompact übernimmt

🌙 Ein kalter Cache-Rewrite wird benannt, bevor er kostet ​

Nach einer Pause über einer Stunde schreibt der nächste Prompt oft den Kontext neu; das waren 35 % der Cache-Write-Tokens (17,4M) über 200 Sessions. Der Hinweis nennt Tokenzahl und TTL, damit du die nächste Pause mit /clear oder /compact beginnst.

text
# UserPromptSubmit nach einer Pause über 1h:
# HINT_COLD_CACHE rewrite=482000 tokens ttl=3600s

📬 Subagenten liefern ein Handoff, kein Report ​

Subagenten-Reports waren die größte gemessene Rückgabequelle — 401 in 14 Tagen, Median 3295 Zeichen, 83 % über 1200, Reviews allein 44 % des Volumens. Jeder native Subagent, Delegate und Wave-Slice bekommt jetzt den Handoff-Vertrag beim Dispatch und antwortet kompakt: eine Zeile pro Finding, keine PASS-Zeilen.

text
HANDOFF status: done — <ein Satz>
changed: <path:line> - <was> · open: <none oder Blocker>

🔀 Wave und Delegate teilen sich einen Routing-Pfad ​

Wave-Slices übersprangen zuvor Preference-, Readiness- und Limit-Checks und ein Retry fiel immer auf Codex zurück. Dispatch und Retry nutzen jetzt denselben Routing-Pfad wie /delegate; --runtime <name> überschreibt die Auswahl ausdrücklich.

text
runtime-route --in-place --runtime <name>

📣 Jeder dispatchte Agent meldet Friction, nicht nur Erfolg ​

Ein Blocker-Hinweis erreichte bisher nur die Transkript-UI, nie den Agenten selbst. Der Hinweis landet jetzt im Kontext des Modells, und jeder dispatchte Agent (Wave-Slice, Delegate, Prime) schließt seinen Report mit einem DEVKIT-FEEDBACK-Block oder meldet sein eigenes Friction-Signal sofort, statt stillzubleiben.

text
DEVKIT-FEEDBACK
- <Skript/Skill/Gate/Regel> — <was schiefging> — <path:line>

📊 devkit token-audit + /token-check — sieh, wohin deine Tokens gehen ​

devkit token-audit liest lokale Transkripte für Kosten, Kontext und Projekte, ohne Prompt- oder Tool-Inhalt zu senden; apply setzt gewählte Hebel direkt. /token-check rankt die Senken und wendet nur deine Auswahl an.

text
devkit token-audit --days 14
devkit token-audit apply enabledPlugins ponytail

🧹 devkit-prune — lokale Kompaktierung statt verlustreicher Zusammenfassung ​

Ab 200k Kontext läuft jetzt eine lokale Prune-Engine statt einer Zusammenfassung, per Opt-in über CLAUDE_CODE_ENABLE_FUNCTION_HOOKS. Sie kürzt jedes Ergebnis älter als die letzten 6 Nachrichten auf einen 300-Zeichen-Kopf, überspringt Läufe unter 25 % Reduktion, und token-audit zeigt den Break-even-Turn pro Modell.

text
devkit hook compact-prune --trigger

✂️ Skill- und Regeltexte um rund ein Drittel gekürzt, nichts entfernt ​

Nur-verzweigte Abschnitte von acht Skills und drei Pfad-Regeln wanderten hinter einzeilige Referenz-Pointer statt komplett neu zu laden: 160,7k auf 108,6k kombinierte Bytes, rund 32 % weniger Ladegewicht, jede Zeile bleibt in einer Referenz auffindbar. AGENTS.md selbst fiel von 10.665 auf 6.379 Bytes.

text
# spec, spec-work, wave, delegate, spec-update, review, index, agent-browser
# gleicher Inhalt, hinter rules-references/*.md-Pointern

🧭 devkit init schließt die alte Setup-Migration ab ​

Der Session-Hinweis bleibt bis zum aktuellen Setup-Stand sichtbar; 17 von 19 älteren lokalen Projekten hatten ihn zuvor verpasst. devkit init entfernt nur verifizierte, unveränderte ai-setup-Reste und kann seine Änderungen selbst committen.

text
devkit init --yes --commit

🔎 Review und Re-Review in einem Aufruf ​

Ein Diff-Review brauchte bisher 5–7 manuelle Aufrufe. review-quick beschränkt das Paket auf eigene Pfade, dispatcht es, speichert das Urteil und kann nur vorige Findings erneut prüfen; kleine Specs bekommen ein kleineres Paket.

text
devkit review-quick --own
devkit review-quick --own --delta

📦 Spec-Review bekommt begrenzte Belege ​

Eine abgeschlossene Spec erzeugte ein Review-Paket von 1,95 MB, davon 97 % aus einem fremden Commit-Block. Prep begrenzt die Historie auf die Spec und liefert passenden Projektkontext, Caller und Tests; ein kompaktes Delta geht nur raus, wenn es kleiner ist.

text
devkit spec-review-prep 686

🌐 Browser-Prüfungen bündeln Vorbereitung und Belege ​

Der agent-browser-Ablauf brauchte nach einem Frontend-Edit rund vier Vorbereitungs- und acht Beleg-Aufrufe. browser-prep und browser-evidence erledigen diese Stufen je einmal und prüfen die tatsächlichen PNG-Daten.

text
devkit browser-prep
devkit browser-evidence --url http://localhost:3000

📬 Parallele Delegates landen in Brief-Reihenfolge ​

Sechs von zehn parallelen Delegate-Rückgaben verweigerten Änderungen an benachbarten Zeilen gemeinsamer Dateien. delegate-fanout startet die Briefs und landet die Ergebnisse in Reihenfolge; delegate-return akzeptiert identische Zeilen und verbindet getrennte Änderungen.

text
devkit delegate-fanout codex implement --brief briefs/a.md --brief briefs/b.md

🧩 Spec-Autorenschaft und Worktree-Landung haben direkte Befehle ​

Die Vorbereitung einer Spec brauchte rund sechs Aufrufe, das Versiegeln vier pro Änderung. spec-author-init und spec-seal bündeln sie; spec-work-prep --land prüft die Zuständigkeit vor dem Landen von Worktree-Änderungen.

text
devkit spec-author-init --slug my-feature
devkit spec-seal --candidate /tmp/spec.md --target devkit/specs/001-my-feature.md

🚀 /release veröffentlicht das Projekt-Changelog ​

Projekte mit Tags und Changelog können mit /release den Unreleased-Eintrag abschließen, die Manifest-Version erhöhen, einen annotierten Tag pushen und GitHub-Release-Notizen veröffentlichen.

text
/release

🎨 Design-Abnahme hat eine native Prüfung ​

/pen-design nutzt jetzt devkit design-check mit einem Baseline-Vergleich für die Abnahme; Browser-Belege prüfen dekodierte PNG-Daten.

text
devkit design-check design/main.pen --baseline design/baseline.json

🧹 Abgeschlossene Worktrees lassen sich sicher aufräumen ​

Unterbrochene Delegate- und Prime-Läufe ließen in einem Projekt 17 Worktrees zurück. worktree-gc findet bereits gelandete Branches per Patch-Vergleich und entfernt sie mit --apply; schmutzige, ungemergte und unter zwei Stunden alte Worktrees bleiben erhalten; zugleich verschwinden 12 von 12 falschen Aufräumfehlern.

text
devkit worktree-gc --apply

✅ Todos lassen sich mit einem Befehl abschließen ​

Ein Todo zu parken brauchte drei Aufrufe, der Abschluss rund zehn manuelle Git-Befehle. todo add --commit committet nur die neue Datei; todo finish prüft die Zuständigkeit, committet eigene Pfade und schließt den Worktree.

text
devkit todo add "Meine Aufgabe" --commit
devkit todo finish <id> --token <token> --message "feat: complete task" -- path/to/file

Was sich für dich ändert ​

Neu verfügbar

  • /release macht aus dem Unreleased-Changelog eines Projekts ein getaggtes GitHub-Release.
  • devkit init --yes --commit entfernt verifizierte alte Setup-Dateien und committet genau diesen Lauf.
  • devkit browser-prep und devkit browser-evidence bündeln die Frontend-Prüfung.
  • devkit delegate-fanout startet parallele Briefs und landet deren Ergebnisse in Reihenfolge.
  • devkit design-check vergleicht die Design-Ausgabe mit ihrer Baseline.
  • devkit spec-review-prep <id> erstellt begrenzte Review-Belege und sendet ein kompaktes Delta nur, wenn es kleiner ist.
  • devkit worktree-gc --apply räumt gelandete Delegate- und Prime-Worktrees auf und lässt offene Arbeit bestehen.
  • devkit todo add --commit und devkit todo finish bündeln die Git-Schritte für Todos.
  • devkit token-audit [--days N] [--project dir] [--json] [--save-baseline] | apply <lever> <name> — Token-Verbrauch aus deinen eigenen Transkripten, plus direktes Setzen von skillOverrides/enabledPlugins/deniedMcpServers/disableClaudeAiConnectors.
  • /token-check — rankt die gemessenen Token-Senken und wendet nur die gewählten Hebel an.
  • devkit hook compact-prune [--trigger] plus das devkit-prune-Plugin — lokales Pruning veralteter Tool-Ausgaben ab 200k Kontext, Opt-in über CLAUDE_CODE_ENABLE_FUNCTION_HOOKS.
  • /todo <text> legt ein Todo in einer Zeile an; /todo (vorher /backlog) holt auch die offene Arbeit zurück, die eine Session ungefragt geparkt hat.

Verhalten geändert

  • Ein Setup-Hinweis bleibt in jeder Session sichtbar, bis die aktuelle devkit init-Migration gelaufen ist.
  • Codex-Reviews nutzen für reguläre Stufen medium effort; Astra bleibt der Architektur-Eskalation vorbehalten.
  • Specs mit geringem Risiko werden nativ geprüft: 18 % von 434 abgeschlossenen Läufen fanden Blocker, gegenüber rund 50 % bei mittlerem Risiko.
  • /review nutzt einen begrenzten Diff Mode mit gespeichertem Urteil; Änderungen am Baum machen alte Review-Belege ungültig.
  • Wave-Retry startet einen neuen Dispatch, wenn ein verfrühtes worker_done den alten als abgeschlossen festhält.
  • devkit token-audit --levers --top N rankt auch installierte, noch ungenutzte Skills.
  • Gepullte Projekt-Skills behalten ihre Namen; Stack-Skill-Skripte werden nur in Projekten des passenden Boilerplates eingerichtet.
  • /pen-design nimmt mit devkit design-check und Baseline-Vergleich ab.
  • Der bisherige Skill stack-shopify-liquid liegt jetzt im Shopify-Boilerplate.
  • devkit sync zieht den festen Auto-Compact-Override zurück; /autocompact und Claude Codes nativer Default gelten, statt dass eine Session auf ~767k Kontext wächst.
  • Ein langer Bash-Befehl wandert erst nach 120s statt 30s in den Hintergrund.
  • Ein Prompt-Cache-Rewrite nach einer Pause über einer Stunde nennt jetzt die neu geschriebene Tokenzahl, damit du /clear oder /compact weißt.
  • Subagenten laufen standardmäßig auf Sonnet statt Opus, nachdem 15 % des gemessenen Token-Volumens dort liefen.
  • Jeder native Subagent, Delegate und Wave-Slice liefert ein kompaktes Handoff — eine Zeile pro Finding, keine PASS-Zeilen — statt eines vollen Reports.
  • Eine Antwort, die Arbeit offen lässt, bietet sie jetzt in ihrer Abschlussfrage als Todo an; nach rund 30 Main-Tool-Calls oder direkt nach einer Kompaktierung prüft die Session devkit todo list und parkt den ungetrackten Rest ungefragt.
  • Jeder dispatchte Agent (Wave-Slice, Delegate, Prime) schließt seinen Report mit einem DEVKIT-FEEDBACK-Block oder meldet sein eigenes Friction-Signal sofort, statt stillzubleiben.
  • Waves Slice-Dispatch und -Retry laufen über denselben Routing-Pfad wie /delegate, inklusive Preference-, Readiness- und Limit-Checks; --runtime <name> überschreibt explizit jede registrierte Runtime.
  • /spec-work dispatcht die Implementierung standardmäßig an einen frischen Agenten statt in derselben Session weiterzumachen.
  • Skill- und Regeltexte, die die meisten Sessions neu laden, verloren rund ein Drittel ihres Ladegewichts; jede Zeile bleibt in einer Referenz auffindbar.

🚀 Neue Funktionen ​

  • native design-check, dsh handoff contracts, and delegate-return me (7dcd283)
  • routing — codex tiers on medium, astra only for escalation (d70105c)
  • token-audit — skill-name-only lever ranks unused installed skills (926d752)
  • skills — pull names a project skill sharing a pulled skill's trigger (f38e7d5)
  • spec-work — managed worktree lands through spec-work-prep --land again (5bb34ee)
  • prep — index-prep --report, readiness later-step suites, spec-work --worktree (2a17cb2)
  • delegate — delegate-return --expect and brief-gate --closure (43d6676)
  • review-quick — batch oversized packages, pass refusal reasons through (b23c075)
  • gate — tamper-check in quality-gate, advisory added-comment lint (617f0a7)
  • maint — issues-prep --close-covered, run-cost --base auto (78a357b)
  • prep — arch-prep, share-prep --verify, learning-capture-prep --ref (5362caf)
  • token-audit — --levers --top N for /token-check (b9f0e8e)
  • debug-prep — --mutate runs the red-check and always restores (33a3c17)
  • skills — wire stack skill npm scripts on pull (bd7145b)
  • delegate — delegate-fanout runs N briefs and lands returns in order (d97f869)
  • review — /review Diff Mode runs through devkit review-quick (fecde81)
  • review — review-quick, scoped review-prep and delta re-review (dfc6068)
  • agent-browser — browser-prep and browser-evidence (e6ebaca)
  • rules — script-first — deterministic steps run through devkit/CLI (320a516)
  • prep — wave slice steps, checkin/research/workspace prep folds (07ff2e1)
  • spec-work — spec-verify and spec-review-prep --freeze (9c9d0c3)
  • spec — spec-author-init and spec-seal bundle authoring steps (6d3675d)
  • scripts — feedback-issue --search, release-prep and release-publish (d54dd1b)
  • spec-review-prep — review-ready package — bounded diff base, dropped Main-only sections, project context and related symbols (Spec 570, 686) (57d36a2)
  • codegraph-db — add symbols_in_files, callers and callees queries (73f04c6)
  • git — shared scoped-git helpers and commit-prep --stage (ee812cb)
  • init — remove ai-setup leftovers and commit the run (Spec-687) (54b7808)
  • todo — add --commit and finish bundle the todo git steps (fd85f88)
  • cli — group and align devkit help output (e44c9ad)
  • spec-review-prep — diff-focused package for compact specs (Spec 686) (0a06037)
  • review-runtime — low-risk and light specs review natively (2ebfa33)
  • release — release notes lead with the user-facing head (02e5498)
  • init — nag every session until devkit init has run (f426584)
  • skills — add /release for CHANGELOG-driven GitHub releases (4647cb2)
  • spec-update — --add-file narrowing flag for caller-migration files (Spec 681) (17d5229)
  • worktree-gc — clean merged delegate and prime leftovers (747ea1e)
  • skills — rename /backlog to /todo, the one todo skill (c4d9eba)
  • review-runtime — derive dispatch sections and require AC-EVIDENCE (Spec 675) (Spec 669) (05bcd4c)
  • rules — every bug fix hunts siblings and fixes the cause (a8ed3b4)
  • hooks — precompact carries untracked open work into todos (9a296ed)
  • rules — always offer open work as a todo, park it before limits (7e26651)
  • spec-validate — warn when an AC verify reaches only a helper (Spec 680) (8e2c9a8)
  • wave — wave coordinator waits on worker_done/escalation (Spec 677) (ffedca8)
  • brief-gate — honor a spec's own Cut-Rationale as implicit override (Spec 679) (cea3511)
  • spec-work — dispatch to a fresh agent by default (Spec 682) (1aafd33)
  • plugins — add devkit-prune function-hook plugin (Spec-666) (33e9523)
  • always-on — keep the Claude session prompt cache warm (Spec 672) (74704d8)
  • spec-work — let Main apply a small exact fix list itself (fcdf0be)
  • spec-validate — require a registry file for every new tools.json pin (Spec 666) (00e6a43)
  • spec-deps-check — exempt friction-sites.tsv from wave overlap gate (Spec 676) (7733413)
  • spec-validate — warn on a path named only in a Files-to-Modify reason (58875ec)
  • spec-work — implementer self-reviews the recurring review blockers (7d7859c)
  • codegraph-first — exempt small whole-file reads from the gate (Spec 683) (dcd3fbf)
  • spec-route-prep — print SUBSYSTEMS=<n> before the first authoring review (Spec 678) (cb52862)
  • spec-validate — block undefined thresholds and outer-only input bounds (Spec 665) (584c368)
  • hooks — add compact-prune engine and PRUNE token-audit records (Spec-665) (Spec 666) (9dcfd38)
  • friction — emit OD_FRICTION on runtime-route no-usable-route (Spec 669, 674) (705c198)
  • friction — instrument Prime Agent lifecycle with OD_FRICTION codes (Spec 669, 673) (d503785)
  • friction — wire the friction hint into agent context, ship feedback rule (Spec 670) (b09ebc9)
  • friction — instrument delegate-dispatch lifecycle with OD_FRICTION codes (Spec 669, 671) (273be11)
  • friction — one shared OD_FRICTION emitter, panic code, site test (Spec 669) (85b7514)
  • core — offer small unfinished work as a todo (ad4ca86)
  • routing — send small deferred work to todos, land before done (0fa4508)
  • wave — slices route through runtime-route like /delegate (Spec 668) (149a3de)
  • feedback-issue — add --comment mode for a follow-up on a filed issue (435f146)
  • hooks — inject the handoff contract into every native subagent (754907a)
  • agents — return only a handoff from subagents, delegates and slices (d350f2d)
  • skill-lint — reject high effort outside the four listed skills (a58d968)
  • token-check — rank token sinks and apply the levers you pick (Spec-664) (30a76ce)
  • token-audit — measure Claude Code token spend and apply settings levers (Spec 663) (79d9530)
  • sync — accept model: inherit in skill frontmatter (1671496)
  • hooks — cold-cache hint from 300k, switch entry and tests (8bf4c1b)
  • hooks — name the cache rewrite after a pause over an hour (bed89ea)
  • session-start — trim an oversized auto-memory index automatically (deaa4a1)

🐛 Fixes ​

  • token-audit — skill lever reads decoded frontmatter name and description (6689605)
  • delegate-return — sibling appends that share a row refuse, never guess (331c7b6)
  • tamper-check,delegate-return — close heuristic gaps, no duplicate appends (a73a4a4)
  • sync — seed cb and gh into sandbox.excludedCommands (308be2e)
  • ci-cleanroom — refuse a second concurrent run on the shared work dir (817fd83)
  • gate — tamper-check stays advisory; park its heuristic gaps (902a4cb)
  • close round-2 re-review findings (debug-prep, tamper-check, review-quick, delegate-return, issues-prep, token-audit) (8df6302)
  • skills — skip line names an older boilerplate layout as a migration (c58505d)
  • init — remove ai-setup generated Codex agents as legacy leftovers (d1d6266)
  • learning-capture-prep — use support::git instead of a private git_stdout (d5199f1)
  • guard — gh api PATCH/DELETE blocks only the git/refs endpoint (80c0858)
  • index-prep,spec-work-prep — real init markers, --land ownership, resumable landing (828e58e)
  • skills — pull boilerplate skills only into boilerplate-based projects (d06dae8)
  • gate — tamper-check advisory again until its re-review lands (c1a4ec2)
  • delegate-return,brief-gate — committed diffs, dir prefixes, honest closure coverage (7d65232)
  • delegate — no union merges, no symlink writes, no pending-merge commits (2fd8da3)
  • token-audit — path-frontmatter advice only for rule files (caac8b9)
  • learning-capture-prep — keep explicit short spec IDs (533e05d)
  • review-quick — batching verifies the tree, invalidates stale receipts (6b5a9c4)
  • maint — issues-prep scope and landing checks, run-cost base on history (6c5eb54)
  • guard — keep command context across backslash-newline, allow -S (42c333b)
  • tamper-check — fixture-aware skips, untracked files, exceptions, fail closed (679744a)
  • debug-prep — mutate reports restore failures, kills the process group (9101300)
  • spec-work — keep managed-worktree on the hand path until --land checks ownership (ddb92d1)
  • guard — message exemption needs a real, separate -m value (71d74b0)
  • delegate-fanout — stage new files, delta-only commits, merge-aware appends (24824c7)
  • hold tamper-check advisory and /review off review-quick batching (15db410)
  • tests — rebuild delegate_return tests after a broken union merge (6eb30de)
  • guard — message prose naming the dotenv file is not a read (5f7bec2)
  • skills — confine wiring files to agent context, refuse bad scripts (5a986cb)
  • delegate-return — already-present check is a context-aware reverse apply (60b052e)
  • review-quick — delta per source file, private temp, scope-keyed results (fbd7761)
  • review-quick — enforce prep gates, scoped delta history, true identities (425cf75)
  • close re-review findings in browser-prep, browser-evidence, freeze (802676b)
  • release — bind confirmation to HEAD and target, remote default branch (c68d0eb)
  • agent-browser — safe evidence dir, dotenv precedence, no query secrets (94eb1df)
  • spec-work — freeze validates first, spec-verify keeps gates and evidence (e070721)
  • prep — friction fixture rows, isolated research payload, restart cleanup (b8d1ab1)
  • spec-seal — use the metadata parser for the digest field (7c9bebf)
  • test-prep — no rtk condensing around devkit's own runner (d00d79e)
  • spec-review-prep — codex native-review — 5 P2 findings in the related-symbols/project-context excerpts (1f75e90)
  • spec-review-prep — never dispatch a compact delta bigger than the package it rides beside (Spec 686) (be3e9d0)
  • init — stale REBASE_HEAD no longer skips the legacy phase (d535477)
  • delegate — dsh briefs keep the report in the handoff (e730d5b)
  • friction-hint — move helper above the test module for clippy (4b3cb0c)
  • friction-hint — count only emitted OD_FRICTION lines (9754768)
  • spec-work — dsh implementer reports inline (e06896b)
  • skills — pull updates untouched skills changed upstream (c24ded8)
  • cli — drop help row, bare devkit already prints it (c57f536)
  • release — first release without a tag starts at 1.0.0 (42aca22)
  • todo — accept the title as a bare argument in todo add (75c187c)
  • release — push the release tag atomically with the branch (b02d653)
  • wave — slice-retry names a live dispatch instead of failing raw (a8b77bb)
  • skills — no stack-skill pull inside the boilerplate itself (73c1589)
  • design — reuse-only fast path skips preview and canvas reads (7b93eb7)
  • wave-prep — slice-retry redoes a dispatch stuck at completed (e70ae34)
  • docs-drift-check — accept hashes a foreign dirty source from HEAD (9113c91)
  • review-dispatch — prompt-size refusal, killed-process diagnostic, sibling-write attribution, citation-literal fix (Spec 685) (45ee70f)
  • worktree-gc — no FAILED row when orca already removed the branch (9665dec)
  • worktree-gc — keep worktrees created or moved in the last 2 hours (39ecd9b)
  • content-budget — gate the always-on rules by bytes (3ce91ce)
  • rules — bring always-on rules back under the byte budget (789f0be)
  • rules — never commit around a foreign pending merge (8585359)
  • rules — load quality rules on Rust files (d9ff30a)
  • rules — dedupe todo checkpoint, fire once per turn end (654be63)
  • brief-gate — mixed space/tab indentation cannot smuggle a Cut-Rationale (Spec 679) (25a2bad)
  • docs — revert docs/workflows.md docs-source reset for Spec 682 (Spec 677) (d821857)
  • devkit-prune — drop the unused options parameter from register (fe54095)
  • wave-accept — a moved declared file or a file under a listed dir is owned (Spec 334) (68ada08)
  • session-scope — prefer transcript-path identity over payload session_id (Spec 684) (9f541a3)
  • tool-pin-audit — accept a path-sourced marketplace plugin without sha (1ea6d33)
  • spec-readiness — stop verify-span parser from re-reading judgement notes (Spec 678) (633fa11)
  • delegate-visible — no friction for a run outside any checkout (e13781c)
  • spec-wave-approve — validate evidence in the slice worktree (f00b4ce)
  • delegate-exec — report unattributed read-only drift without friction (8c4ca3c)
  • spec-drift-check — list another active spec's files as foreign (8939984)
  • spec-readiness — count a Step-named missing path as created (Spec 665) (7f160b7)
  • rules — bring the always-on rules back under the 5566-byte budget (f6704fd)
  • spec-contract-apply — print help after the mode argument (f1b05e0)
  • spec-readiness — a spec editing the affected map may own unmapped paths (Spec 669) (2ebd3ad)
  • todo — fold umlauts in ids, clean up landed worktrees (3803c6e)
  • backlog-lint — count todo files instead of a doubled zero (37d7dcd)
  • spec-review-prep — warn when AC-EVIDENCE is missing before the freeze (Spec 668) (f816197)
  • spec-validate — a cargo --manifest-path is no AC product (Spec 668) (54ce55f)
  • prime-run — wait longer for worker-start under --require-orca (Spec 667) (e1e0136)
  • wave — a baseline that never reached its tests is incomplete (fbfc976)
  • spec-dead-refs — accept a Files entry the spec itself deletes (Spec 667) (aeaa0a7)
  • review-runtime — say --context is Diff Mode only (848022b)
  • review-runtime — never size-refuse an authoring candidate (05b8f57)
  • close the delta-review findings on the handoff and split fixes (65d05f8)
  • delegate — read-only delegates return findings, not a report file (1d6054c)
  • hooks,token-audit — close review findings on today's Rust changes (565a493)
  • skills — restore every-run rules the skill split hid behind pointers (a5d3fd0)
  • token-audit — refuse skill-name-only for plugin skills (a7b3bf4)
  • runtime-route — mark pi implement not ready without the hook bridge (997269c)
  • tests — retry the skills_smoke token count with a private uv cache (dd1b7d8)
  • delegate — send panel briefs without the context pack (b178c3e)
  • content-budget — retry the exact count with a private uv cache (50c082c)
  • tests — pin the pi sandbox off in runtime-route inventory tests (fcf397f)
  • pen-design — design-sort suggests a fix and keeps numbers (b22cfd8)
  • devkit-issues — brief agents on fmt order and api node_modules (4840102)
  • rules — trigger credential/quality rules on .mjs and .cjs scripts (3145aa8)
  • init — seed the shopify-plugin Claude plugin for shopify-liquid projects (c0cf3ba)
  • runtime-route — probe the pi bwrap sandbox before reporting implement ready (8ee6458)
  • devkit-issues — classify bug vs request before any fix (74453c0)
  • delegate — chain per-spec Spec Mode review after a spec implement (23b6905)
  • quality-gate — run native scanners from a worktree build when stale (18fef5c)
  • plugins — enforce plugin pins in the daily background auto-upgrade (dd1ec06)
  • sync — prune dangling devkit links that state.json lost (b13b09c)
  • plugins — retry a pin reinstall whose uninstall or install failed (b6c50cd)
  • skills — step devkit-claude-changelog effort down to medium (7ae6205)
  • model-benchmark — map fable alias to Claude Fable 5.1 (a967bcf)
  • rules — drop removed content/scripts path from script contract (Spec 560) (b7f1b00)
  • content-language — scan .agents/skills and translate codex-changelog (6accdde)
  • skills — step pen-design and workspace effort down to medium (1493c0f)
  • token-audit — write deniedMcpServers entries as serverName objects (ac89c51)
  • spec-dead-refs — accept absent-asserted paths and planned parent dirs (733432b)
  • spec-validate — never flag vendor manifest names as path twins (9be6d77)
  • rules — bring skill-editing rule back under its token budget (c0b1359)
  • hooks — time the cold-cache hint by the TTL the session uses (f85b1a2)
  • skills — run the remaining inline skills on opus (0772f04)
  • rules — bring core.md back under the always-on budget (dff238a)
  • usage — count a streamed message once in model_mix (44a69b5)
  • skills — run /delegate on opus (1b18cf7)
  • skills — run the maintainer skills on opus (72b4eef)
  • skills — run /wave, /test, /debug, /friction-feedback on opus (a49d39a)
  • skills — keep /commit and /fetch-task on the session model (7f3e901)
  • ci-cleanroom — say when a green run records no release evidence (75155dd)
  • sync — stop managing the compact window, default subagents to sonnet (78306f6)

⚡ Performance ​

  • routing — run codex/pi architecture at high instead of xhigh (9957cde)
  • skills — move branch-only sections of four more skills to references (d9b4176)
  • skills — move branch-only sections of four large skills to references (1ae1940)
  • session-start — keep maintainer notes out of wave slice workers (c60e3a0)
  • rules — move branch-only sections of three path rules to references (36002d2)
  • cd-guard — shorten the rewrite note to one clause (77af55f)
  • agents — move seven maintainer procedures out of AGENTS.md (116915c)
  • canon — read VISION only before a design or cut decision (556d781)
  • hooks — send the verbosity reminder once per session (c69465e)
  • rules — batch tool calls, move long chains to subagents (f3110b3)
  • env — auto-background Bash after 120s instead of 30s (9c266f9)
  • env — compact at 300k instead of 800k context (590e8e0)

♻️ Refactoring ​

  • skills — retire stack-shopify-liquid into the boilerplate (Spec 652) (0eb7e88)
  • devkit — consolidate Orca binary resolver (R030) (44896af)
  • support/git — share the repo-env scrub and no-prompt config (37d7b65)
  • tools — reuse mcp::parse_json for the first JSON-stream value (c407213)
  • support — share the Euclidean civil-date conversion (43aad7c)
  • workflows — drop output-format prose that schema already enforces (9cb8e5c)

📖 Dokumentation ​

  • release — align publish guide with current gates (4e854bc)
  • reference — record completed spec decisions (906d5d4)
  • agents — repository-canon is read as a file, not a skill (50e3d8f)
  • spec-review-prep — reviewer-prompt package is complete, no bootstrap read (6a13be2)
  • todos — refresh docs-source marker after todo finish (c38907b)
  • todos — where finished todos go, bulk parking vs. working (cf07176)
  • explain specs, todos and every skill with examples (2012846)
  • spec-work — spec-finish --harness is the implementer, not the reviewer (Spec 686) (f45eb85)
  • spec-work — resolve the review runtime per spec (b763c44)
  • wave — slice-retry recovers a premature worker_done itself (54e2578)
  • workflows — accept docs-source digest after wave standing orders (f29fb08)
  • wave — redo a falsely-done slice, spec-complete only, shared markers (bbfbd4e)
  • workflows — accept docs-source digest after worktree-gc (f88ea8e)
  • prime-agent — show --provider with --model in the dispatch example (114fe88)
  • changelog — /todo rename as breaking change in Unreleased (6168276)
  • workflows — accept docs-source digest after /todo rename (89f53d7)
  • changelog — Unreleased head for 187 commits since v0.46.0 (2e7c594)
  • workflows — agent offers and parks open work as todos (b3a8acc)
  • conventions — scripts/ unit tests are bin-only too, like maint/ (Spec 675) (3b2352c)
  • workflows — refresh docs-source digest after spec-work fix-direct rule (4c7a73f)
  • specs — add approved specs 675, 677, 680, 681, 682, 685 for wave dispatch (3b04de0)
  • spec — name the MODIFIED and REMOVED fields in the compact skeleton (b2821b0)
  • workflows — refresh docs-source digest after wave/delegate edits (225b1d8)
  • skills — align wave/delegate routing prose with Spec 668 (Spec 616) (c18339a)
  • specs — ground 665's head rule in the replay evidence (c994caf)
  • research — record the Julia-1 distillation result (39c5e4b)
  • spec — add Spec 672 devkit-owned always-on rulesets (5201ac4)
  • fix routing-prose redundancy (R032, R034, R049, R050) (451f984)
  • audit — redundancy audit of the whole setup (3fe989f)
  • audit — keep the Jev selector replay evidence (3ae3f67)
  • research — record the isolated replay rerun and the conclusion (dcd9742)
  • re-accept the workflows page marker after the wave baseline fix (a4f42ec)
  • research — add a zero-shot Julia-1 check on the replay candidates (fea282a)
  • spec — author Spec 667 cross-session todos (854f332)
  • research — record Laya fine-tune, Kev-27B and the replay confound (1969b54)
  • brainstorm — converge lightweight todos across sessions (c0d96a3)
  • research — add the planning-with-files comparison (212cc78)
  • research — record the panel-driven Laya recheck (25818be)
  • research — replace the invalid Laya comparison with a replay test (88dabe9)
  • research — compare Laya with Jev on the replay candidates (203da1c)
  • research — record the pruning replay pilot and the Jev concept (0699752)
  • design — accept the pen-design drift and mirror the rows row (df26012)
  • research — map awesome-jev patterns onto the token baseline (9fd088b)
  • research — record the Codex audit of the Jev eval (ecadaee)
  • workflows — accept drift from the spec-work IMPLEMENT_RUNTIME note (7ab86dd)
  • spec-work — clarify IMPLEMENT_RUNTIME is not the implement route (5f6760d)
  • research — record the corrected Jev eval against a local rule (ed7b8ab)
  • research — retract the Jev AUC verdict after a label defect (4e99675)
  • research — record the Jev AUC eval and drop the model (fc04384)
  • research — compare fast-jev with the TypeSafe cookbooks (1a79092)
  • research — add Jev prefix runs and the jev-pruner check (9e3433a)
  • research — record the live Jev run on a devkit transcript (b39580b)
  • agents — drop history narratives from the always-loaded context (c8a2bda)
  • specs — author 665 prune engine and 666 devkit-prune plugin (d4623f0)
  • research — evaluate fast-jev-compaction against the token baseline (6242c9a)
  • backlog — park the switch of inline skills to model: inherit (3b614c0)
  • spec — add specs 663 and 664 for devkit token-audit and /token-check (454a05e)
  • harnesses — cut the DeepSeek cell back to what a reader acts on (281f9a2)

🧪 Tests ​

  • wave-prep — accept --task integration test with a fake orca (370641b)
  • delegate-exec — oversized-prompt test ignores inherited DEVKIT_DELEGATE_* (255a684)
  • tamper-check — assert advisory gate output again instead of #[ignore] (34322fd)
  • tamper-check — regression tests from the round-2 fix, gate-red test active (773e461)
  • tamper-check — assert the advisory gate output instead of #[ignore] (0aaf637)
  • tamper-check — park the gate-red test while the gate call is advisory (7bb5836)
  • skills-smoke — browser session pin follows browser-prep (07d7cd1)
  • affected-map — map spec_route_prep.rs to its own suite (Spec 678) (273f348)
  • devkit — serialize process-global env mutation in unit tests (Spec 674) (f79f7b9)
  • friction — close the two Spec 669 review follow-ups (281eb4b)
  • affected-map — route devkit-codex-changelog skill to the refs suite (c41f5ff)
  • affected-map — route tools/rust-only.tsv to the rust_only suite (50d8e83)
  • affected-map — route repository-canon edits to the refs suite (8704003)
  • give every clock-stamped fixture directory a sequence (64663ae)
  • pi-delegate — give every fixture its own directory (4705e4e)
  • pi-delegate — let the bwrap stub run its probe on macOS (37bacfe)

🏗️ Wartung ​

  • todo — add ci-cleanroom-tests-the-dirty-tree-not-the-commit (6f506e4)
  • todo — add guard-ignored-rust-tests-at-edit-time (cd77351)
  • guard — drop the commit-message exemption, keep REV:<dotenv> (cc7aff0)
  • todo — add test-isolation-oversized-review-prompt-test-inhe (7fff537)
  • todo — merge stray review-quick note into its todo (39ac225)
  • todo — add script-review-quick-batches-an-oversized-package (1eff745)
  • review — keep /review off review-quick until its gate fixes land (51ba19e)
  • todo — add script-arch-prep-share-prep-verify-learning-capt (5f41d82)
  • todo — add script-spec-readiness-accepts-suites-a-later-ste (3ca9baa)
  • todo — add script-flag-added-comment-lines-in-lint-delta (16dc448)
  • todo — add script-devkit-tamper-check-inside-quality-gate (49a8251)
  • todo — add script-index-prep-report (11aa801)
  • todo — add script-maint-run-cost-base-auto (fab4841)
  • todo — add script-maint-issues-prep-close-covered (64f47a6)
  • todo — add script-debug-prep-mutate-for-the-red-check (74327cb)
  • todo — add script-brief-gate-closure-lists-callers-outside (3bffae7)
  • todo — add script-delegate-return-expect-files-stray-missin (70dc33b)
  • todo — add script-token-audit-levers-top-n-for-token-check (48e0e99)
  • todo — fanout must land parallel returns without DIRTY refusals (3c5c3ea)
  • todo — add script-spec-work-worktree-create-and-patch-back (464b0cb)
  • todo — add script-delta-re-review-from-the-previous-round-s (7816160)
  • todo — add script-review-prep-scope-to-the-session-s-own-pa (31d2edc)
  • todo — add script-one-call-diff-review-devkit-review-quick (bba2cb7)
  • todo — add devkit-delegate-fanout-plus-todo-next-parallel (97ccad1)
  • set up devkit (53ca240)
  • todo — add secret-env guard false positive (0658d38)
  • todo — add script-bundling candidates from skill sweep (7a9e228)
  • todo — add bulk todo mode idea (934bc52)
  • todo — add docs follow-ups (2693eb6)
  • todos — close the first boilerplate releases todo (5bbc2cc)
  • todos — first boilerplate releases published (4595e63)
  • todos — park first /release of the sb and sw boilerplates (cc7773d)
  • todos — park the spec-path/Files-to-Modify parser consolidation (96ee6e7)
  • delegate-visible — rustfmt json.rs and mirror.rs (2044301)
  • skills — rustfmt the boilerplate origin test (fed2170)
  • todos — park always-on budget unit mismatch (25af728)
  • todos — park mechanical enforcement of the review lite path (d41463e)
  • todos — park a fast spec-work-prep and phase-level duration metric (e25e829)
  • todos — park three friction clusters from the 14-day log (8d33d23)
  • todo — add measure-jev-as-a-completion-gate-before-building (9215b85)
  • todos — park the four spec-flow optimizations the maintainer picked (ae07281)
  • todos — park the four wave speed-ups the maintainer picked (4f4f14c)
  • tests — rustfmt the wave baseline regression test (55a8002)
  • tests — rustfmt the plugin-seed init tests (42b4a63)
  • token-audit — rustfmt the deniedMcpServers assertion (7145c50)

No commit type ​

  • Update Unreleased changelog with init migration guidance and full 0.46 r (4dd41b6)
  • add usage snapshot for 2026-09-28 (30-day window) (15a0550)
  • Spec-667: complete cross-session todos after review PASS (6d275f4)
  • Spec-667 fix 4: detect open backlog entries structurally (7ea6eba)
  • Spec-667: record run 2 delta BLOCK on padded open rows (2d087ec)
  • Spec-667 fix 3: raw attempt patches, lossless migration, safe retry (954066d)
  • Spec-667 fix 2: keep saved attempts, bind migration to source rows (0bac392)
  • Spec-667: drop the obsolete test count from Step 3 verify (3f99cc1)
  • Spec-667: record review round 2 BLOCK and the open findings (f82c240)
  • Spec-667 fix 1: close the ten review findings (5430bc4)
  • Spec-667 Step 5-7: route capture and backlog through todo files (d44f5ad)
  • Spec-667 Step 1-4: add devkit todo with worktree-visible claims (9bf96f6)

v0.46.0 — 2026-09-26 ​

Ponytails Lazy-first-Regelwerk läuft jetzt als sha-gepinntes Plugin in jedem Agenten, den devkit startet, und ersetzt die devkit-eigene Ladder, die es duplizierte; Pi fällt bei einem limitierten Primäranbieter jetzt über eine geordnete Kandidatenliste auf DeepSeek V4.1 Flash zurück (20–26s statt dshs 43–56s), und ein hängender Delegate wird jetzt schon während des Laufs gemeldet statt erst nach dem vollen Bound (8 von 115 Dispatches trafen ihn). Update mit devkit sync.

58 commits since v0.45.0 · Specs 181, 657, 659, 660, 661, 662

✨ Highlights ​

🐎 Ponytail: gepinntes Plugin, doppelte Ladder gestrichen ​

Das Upstream-DietrichGebert/ponytail (sha-gepinnt, 1622 Tokens) erreicht jetzt Claude, Codex, OpenCode, Pi und jeden delegierten Agenten (Prime, Kimi, DeepSeek Harness) als Lazy-first/YAGNI-Regelwerk; devkits eigene doppelte Ladder in code-reuse.md und quality.md ist raus — Upstream-Updates kommen jetzt per sha-Bump statt per Rewrite.

text
devkit sync
# installiert ponytail@devkit-pins, wenn node im PATH liegt

🔀 Pi läuft nie trocken — Modell-Fallback pro Tier ​

Ein limitierter oder nicht eingeloggter Anbieter nahm bisher den ganzen pi-Sitz aus dem Routing. Pi probiert jetzt zuerst sein Primär-Tupel, dann eine geordnete pi_fallbacks-Liste je Tier (zuerst DeepSeek V4.1 Flash, bei implement danach Codex) und trägt das Limit unter dem Anbieter ein, der tatsächlich lief.

text
runtime-route pi implement
# PROVIDER/MODEL/EFFORT plus MODEL_SKIPPED=<provider>/<model>:<reason>,… für übersprungene Kandidaten

🤫 Stille Delegates fallen jetzt während des Laufs auf ​

8 von 115 Delegate-Dispatches verbrannten ihren ganzen Wrapper-Bound ohne Ergebnis. Ein streamender Delegate (codex, opencode), der aufhört Ausgabe zu produzieren, druckt jetzt DELEGATE_SILENT bei jedem Stillstand-Intervall, während er noch läuft, und eine Bound-Hit-Zeile nennt jetzt, wie lange die letzte Ausgabe zurückliegt.

text
DELEGATE_SILENT runtime=codex silent=300s elapsed=612s bound=900s

🔁 /spec-update läuft von selbst, keine Rückfrage mehr ​

/spec-update stoppte bisher und fragte nach, sobald ein Gate oder ein Skript es als nächsten Schritt nannte; ein veralteter Approved-Digest stoppte /spec-work und /review genauso. Alle drei rufen es jetzt selbst auf und laufen weiter.

text
# kein "soll ich /spec-update ausführen?" mehr — es läuft einfach

📊 Subagent-Kostenbericht pro Agent-Typ ​

devkit run-cost-prep --agents gruppiert die Subagent-Transkripte, die Claude Code ohnehin schon führt, nach Agent-Typ — Runs, Cache-Writes, Output-Tokens, Median-Turns und Wall-Time — ohne zweite Logdatei; ein Doppelzähl-Bug, der eine über mehrere Content-Blöcke aufgeteilte Nachricht doppelt zählte (2838 Records für 1599 eindeutige Nachrichten in der Stichprobe), ist dabei mitbehoben.

text
devkit run-cost-prep --agents --days 14

🔐 Codex-Hooks vertrauen sich selbst ​

devkit sync schreibt jetzt die trusted_hash-Einträge, die Codex 0.156 verlangt, sodass eine Codex-Session nie mehr den Trust-Prompt für devkit-eigene Hooks beantworten muss. devkit config codex-hook-trust devkit|all|off wählt den Geltungsbereich.

text
devkit config codex-hook-trust devkit

🧹 Post-edit-shfmt-Sweep bleibt im Rahmen ​

Der Fallback von post-edit-lint für einen Bash-Befehl, der nur einen .sh-Pfad nannte, fegte bisher jede in den letzten 60 Sekunden angefasste Shell-Datei im ganzen Repo und formatierte sie um — das löste bei einem gemeldeten Projekt in 3 von 4 Wave-Slices den Fremd-Datei-Schutz aus. Er rührt jetzt nur noch eine Shell-Datei an, die der Befehl selbst nennt und die Git als geändert zeigt.

⏳ Nutzungslimits routen jetzt um sich selbst herum ​

runtime-route wählte einen bereits limitierten Runtime/Provider immer wieder neu — 18+ Transkripte zeigen dieselbe Retry-Zeit erneut getroffen, jedes Mal mit manuellem Fallback. Ein Treffer wird jetzt mit der geparsten Reset-Zeit vermerkt, und das Routing überspringt diesen Runtime/Provider bis dahin — sowohl bei try again at als auch bei resets <Datum>.

text
# kein manueller Fallback mehr nach einem Weekly-Limit-Treffer — der nächste Routing-Aufruf überspringt automatisch

Was sich für dich ändert ​

Neu verfügbar

  • devkit run-cost-prep --agents [--days N] — Subagent-Kostentabelle pro Agent-Typ, sortiert nach Cache-Write.
  • devkit config codex-hook-trust devkit|all|off — Geltungsbereich für Codex' automatisches Hook-Vertrauen.
  • Ponytail-Lazy-Dev-Regelwerk, automatisch installiert von devkit sync, wenn node im PATH liegt.

Verhalten geändert

  • /spec-update läuft überall dort, wo es genannt wird, statt vorher zu fragen; /spec-work und /review rufen es bei veralteter Freigabe selbst auf.
  • Pi-Routing fällt über pi_fallbacks zurück (zuerst DeepSeek V4.1 Flash, dann weitere Kandidaten), statt den ganzen Sitz bei einem Nutzungslimit zu überspringen.
  • Ein hängender streamender Delegate (codex, opencode) druckt jetzt DELEGATE_SILENT, während er noch läuft, und eine Bound-Hit-Zeile nennt das Alter der letzten Ausgabe.
  • Der shfmt-Fallback von post-edit-lint rührt nur noch Shell-Dateien an, die der Befehl nennt, nicht jede kürzlich angefasste Datei in der Nähe.
  • /spec sucht vor dem Entwurf einer neuen allgemeinen Fähigkeit über gh und Context7 nach einer bestehenden Lösung und trägt in jedem Fall eine Build-vs-Buy-Zeile ein.
  • Der Klon-Scan von /improve-codebase-architecture deckt jetzt über jscpd auch Rust, PHP, Twig, Liquid, Vue und Python ab, nicht nur TS/JS.
  • /capture hat zwei weitere Keep-Filter (reads-alone, not-derivable) und eine Merge-Aktion neben supersede/dedupe bekommen.
  • delegate-return cherry-pickt die eigenen Commits eines Delegates auf das Rückgabeziel, statt sie zu verwerfen, wenn der Delegate seine Arbeit committet hat.
  • Waves ensure-deps installiert jetzt jedes gelockte npm-Paket eines Workspace-losen Monorepos (ein Lockfile pro Paket-Verzeichnis), statt die ganze Baseline am abhängigkeitsfreien Root-package.json scheitern zu lassen.

🚀 Neue Funktionen ​

  • runtime-route — Pi falls back to the next model per tier (Spec-662) (1f7b03d)
  • rules — auto-invoke /spec-update wherever it is named (ce7a2dd)
  • spec-work,review — run /spec-update on stale approval unasked (ae65deb)
  • spec-661 — extend always-on rulesets to Pi and delegated agents with scope filtering (db9fef5)
  • plugins — pin ponytail and cut the duplicated YAGNI ladder (Spec-659) (bf98e62)
  • delegate — report silent streaming runs and last-output age (Spec-660) (57bc9bd)
  • codex — pre-trust Codex hooks so sessions never ask (aff1152)
  • codex — wire maintainer dev-sync hooks for Codex (87cb194)
  • improve-codebase-architecture — clone scan beyond TS/JS (cd1c38b)
  • pen-design — component-reuse rule for canvas drafts, plus a B4 probe (26afe74)
  • run-cost — per-agent-type subagent cost report (Spec-657) (3bd2462)
  • capture — four keep filters and a merge action before writing (3c3bd5a)
  • spec — search finished solutions before designing a new capability (e05937d)

🐛 Fixes ​

  • spec-dead-refs — keep --test targets visible inside (cd rust && …) (6122ddb)
  • spec-dead-refs — resolve verify operands after cd against that dir (Spec 181) (284280e)
  • spec-reconcile — treat legacy '# Spec:' title as title, not provenance (23a7743)
  • wave — install each locked npm package of a workspace-less monorepo (1451caa)
  • runtime-route — skip a runtime/provider until its usage limit resets (252b2c0)
  • docs — migrate the remaining Prime and Opus model names (0967d95)
  • pen-design — surface the CLI's raw reply when get_app_state disagrees with the app (0162393)
  • pen-design — design-sort keeps the board's own row/column shape by default (823441e)
  • pen-design — page View starts from the standard hero, not a campaign hero (d4f0520)
  • delegate-return — cherry-pick delegate commits instead of deleting the branch (803a22c)
  • wave — correct swallowed-Enter recovery, orca remedy is not runnable (b39ad70)
  • post-edit-lint — never shfmt a clean script a command only runs (a27bacc)
  • post-edit-lint — scope shell-file fallback to named command operands (b2ba3dc)
  • model-runtimes — migrate prime route off superseded gpt-5.6-sol (e14046d)
  • review-runtime — name why the package identity was refused (b94d5fb)
  • delegate-exec — read the reset time from Claude's weekly-limit line (b7d8cdc)
  • spec-validate-prep — name the unresolved evidence citation (a33253f)
  • spec-review-prep — ignore session claims older than the path's commit (Spec 657) (8103d90)
  • spec-work — hand the reviewer the lint results or SKIPPED reasons (Spec 657) (fe43966)
  • spec-review-prep — lens from touched files, add manifest freshness (Spec 657) (c5eedf8)
  • delegate-exec — classify Claude's weekly limit as a usage limit (25387e1)
  • docs-drift-check — no false "no marker" after a dirty-source refusal (7422470)

♻️ Refactoring ​

  • improve-codebase-architecture — stack checks for structure (fefa403)
  • session-scope — consolidate four duplicate classifiers into one module (ddb1960)

📖 Dokumentation ​

  • reference — decision rows for Specs 657, 658, 659, 660, 661, 662 (ef063d5)
  • workflows — re-set the docs-source marker after the spec-update edits (e0dd7ae)
  • research — record the Jev routing tools and queue Spec 662 (8e28dab)
  • audit — add the implement run to the Pi DeepSeek Flash trial (c2c509f)
  • team setup for agy and Pi on DeepSeek V4.1 Flash (aea9a92)
  • research — record measured verdicts for the Pi candidates (Spec 660) (5946649)
  • pi — map AskUserQuestion to rpiv's ask_user_question (9423017)
  • research — evaluate twelve Pi packages against the delegate path (5834b13)
  • devkit-issues — make the sibling hunt a gate, not a paragraph (a7d1d5f)
  • devkit-issues — brief agents against issue-narrative comments (885bac5)
  • design — name the reuse order and the board-keeping sort default (e17a132)
  • design — document sort shape, page-View hero and B4 check (505d6b3)
  • changelog — note the changed-file rule of the shfmt fallback (4cdaadd)
  • changelog — record the post-edit shfmt sweep scope fix for #202 (2fad15a)
  • audit — session-scope classifier deepening proposal (13bc01f)
  • trial — keep Context7, decline a vendor llms.txt-first docs rule (1ed8862)

🧪 Tests ​

  • rules — allow the deliberately extended /spec-update routing row (8839e0d)

🏗️ Wartung ​

  • tests — map claude-marketplace and plugins payload paths (Spec 659) (b533300)
  • pen-design — drop issue-narrative comments from the reuse and save fixes (05bab33)
  • tests — rustfmt the evidence-citation test (eecc2b4)
  • devkit-release — announce only a new skill or a manual step (d18de38)

v0.45.0 — 2026-09-25 ​

Eine erzwungene Tool-Search-Einstellung hat die MCP-Token-Kosten unbemerkt verdoppelt — der Wegfall senkt den First-Call-Context von 72k auf 28k Tokens und die Kosten pro Task um bis zu 45%. Update mit devkit sync.

52 commits since v0.44.0

✨ Highlights ​

💸 Tool-Search-Zwang zurückgenommen ​

ENABLE_TOOL_SEARCH=auto:5 aktivierte Tool-Search bei einem 1M-Token-Fenster erst ab 50k Tokens verschiebbarer Definitionen, sodass trotzdem ~44k Tokens MCP-Tool-Definitionen in jeden Request gingen. Nach dem Wegfall: First-Call-Context von 72k auf 28k Tokens, Kosten von 0,89 auf 0,55 $ (Nuxt) und 1,01 auf 0,80 $ (Shopify) auf zwei fixierten Benchmark-Tasks.

text
devkit sync

🤖 Agent schließt die eigene Änderung selbst ab ​

/test und /review --quick sind jetzt modellaufrufbar — der Agent führt sie nach einer kohärenten Codeänderung selbst aus, statt auf den Befehl zu warten. Gemessen: 0 von 6 Benchmark-Läufen riefen zuvor einen dieser Befehle auf.

text
# läuft automatisch nach einer Codeänderung; review bleibt auf
# mehrdateige oder riskante Diffs gegated, da es auf Opus läuft

📉 Leichtere Regeln bei jedem Code-Touch ​

agent-graph.md (10,3k → 3,4k Zeichen), code-reuse.md (9,8k → 3,8k) und design-system.md (6,5k → 5,2k) laden beim ersten Touch einer Quelldatei in jeder Session — der Schnitt entfernt Narrativ und doppelte Routen, die der durchsetzende Hook bereits abdeckt, nicht die Normen oder Befehle.

🔒 Headless-Sessions verlieren keine Arbeit mehr ​

Eine claude -p-Session endet mit dem Turn, sodass ein blockierendes Warten auf einen Background-Task (git stash, langer Build) nie eine Benachrichtigung zum Fortsetzen bekam — gemessen als Verlust einer fertigen Änderung in 2 von 3 headless Shopify-Benchmark-Läufen. Headless-Sessions warten jetzt per timeout selbst auf ihre Background-Tasks statt auf dem blockierenden Guard.

🎨 Pen-Design-Skripte stimmen überein ​

design-check, design-verify, design-rebind, design-adapter-check, design-sort und design-fonts lasen Variablenfamilien- und Gruppen-Layout-Regeln bisher aus eigenen Kopien, sodass ein Bindestrich-Tokenname (space-4), ein Canvas über 8 View-Gruppen oder --write/--apply --all in einem Skript durchging und in einem anderen still fehlschlug. Alle sechs teilen sich jetzt lib/adapter.mjs/lib/tw.mjs als Quelle.

🌊 Wave und spec-deps verweigern schlechten Zustand früher ​

Waves Slice-Dispatch verweigert einen nicht genehmigten Spec jetzt vor dem Anlegen des Worktrees statt danach (WAVE_SLICE_DISPATCH_UNAPPROVED); der Plan meldet einen durch veraltete oder fehlende Genehmigung zurückgehaltenen Spec als BLOCKED: <id> — <reason>; und eine doppelte Spec-ID listet jetzt jeden kollidierenden Pfad statt nur beim ersten zu stoppen.

text
devkit maint spec-deps-check --plan

Was sich für dich ändert ​

Neu verfügbar

  • devkit --version und devkit -V antworten jetzt mit der Version statt mit einem Unbekanntes-Kommando-Fehler.

Verhalten geändert

  • Session-Start nennt jetzt eine lokale Update-Quelle, deren Checkout älter als 7 Tage ist, mit dem Befehl zum Wechsel auf http.
  • Die Bash-Auto-Background-Schwelle wechselt von 5s auf 30s, sodass kurze git/test/docker-Aufrufe im Haupt-Turn bleiben (gemessen: 16 von 330 Bash-Aufrufen in einer Benchmark-Session betroffen).
  • Shopify-Preflight lässt jetzt einen Section- oder Block-Schema-Namen über 25 Zeichen und einen Theme-Namen über 50 Zeichen durchfallen — beide gingen zuvor still durch und führten produktiv zu 404.
  • Die Authoring-Probe von /spec-work warnt jetzt, wenn eine negierte Suche (! rg ...) noch nicht deklarierte Dateien treffen würde — bevor der Spec genehmigt wird.
  • Planungsartefakte (Drafts, Brainstorms, Research, Audit-Dateien) einer parallelen Session in einem geteilten Checkout lösen kein SPEC_DRIFT_DETECTED mehr aus.
  • Ein Codegraph-Read-Guard blockiert einen sed -n-Bereich aus einem Variablen-Offset (${N},$((N+40))p) nicht mehr als Whole-File-Read.
  • Headless-Sessions (claude -p) bekommen den interaktiven Nutzer-Hinweis nicht mehr angezeigt, da niemand da ist, ihn anzunehmen.
  • /index lässt eine bewusst gelöschte CLAUDE.md gelöscht, statt sie beim nächsten Lauf neu anzulegen.
  • devkit sync installiert ein gedriftetes Plugin jetzt neu, wenn dessen Update ein No-op ist (gleicher gepinnter Commit), statt den Drift unrepariert zu lassen.

🚀 Neue Funktionen ​

  • telemetry — report why an install does not auto-update (0d446b7)
  • pen-design — let Pen's agent file devkit friction without asking (117dfeb)
  • routing — let the agent close Flow 1 with /test and /review --quick (322f6b7)

🐛 Fixes ​

  • session-start — name a frozen local update source (51f2793)
  • shopify — fail a schema name over the documented 25 characters (2e4ebf8)
  • constraints — stop loading on every JSON and XML edit (cc454a6)
  • cli — answer --version and -V instead of an unknown-command error (6dc4743)
  • spec-drift — planning artifacts from parallel sessions are not drift (9cd19ac)
  • content-audit — re-check delegated findings before reporting (87e97b4)
  • wave — refuse an unapproved spec in slice-dispatch (bee343d)
  • pen-design — report an unknown groups layout in adapter-check (96e1736)
  • pen-design — accept hyphenated token names in design-check and verify (59ebf1b)
  • spec-validate — name undeclared files a negated search still matches (1eab0c8)
  • spec-deps — hold a spec without a valid approval out of the wave plan (1ba4a82)
  • spec-deps — point the duplicate-ID hint at spec-renumber (8680a59)
  • hooks — treat a sed range around a grep line as a targeted read (2619226)
  • sync — retry the codex guard probe on ETXTBSY and say why it failed (1052cf2)
  • spec-deps — list every duplicate spec ID with its paths (2d8b8f5)
  • index — leave a CLAUDE.md deleted when the history deletes it (4c21bfc)
  • sync — reinstall a plugin whose update keeps the drifted commit (d43d2b9)
  • pen-design — keep the file's serialization on design-fonts --write (c038a51)
  • pen-design — let design-rebind match hyphenated variable families (2299dc4)
  • pen-design — report a rows list beyond eight view groups in adapter-check (40fbc75)
  • pen-design — keep a lane note's own text on design-sort --apply --all (0144e36)
  • parity — spawn cp by absolute path in write_exec (419d028)
  • index — keep gitignored directories out of STRUCTURE.md (0d34d43)
  • hooks — skip user-offer hints in headless sessions (f21d21c)
  • hooks — let headless sessions wait on their background tasks (b9dd0b9)
  • sync — stop forcing ENABLE_TOOL_SEARCH=auto:5 and withdraw it (16968da)

⚡ Performance ​

  • rules — cut code-reuse.md and design-system.md on first code touch (d9469d7)
  • sync — raise the Bash auto-background threshold to 30s (8b693e1)
  • rules — cut agent-graph.md from 10.3k to 3.4k characters (ab40282)

♻️ Refactoring ​

  • rules — move claude -p automation out of tooling-inventory (6e71490)
  • wave — table the slice-dispatch markers and exit stages (421d127)
  • content — drop restated contracts from capped payload files (040e129)

📖 Dokumentation ​

  • usage — record the spec-drift diagnosis and the 3-day snapshot (9573540)
  • devkit-usage — work rollout first and prove a finding is current (4c02da1)
  • spec-work — name devkit init where the route said project-migrate (12bec4a)
  • workflows — re-mark the page after the wave plan change (da52bc3)
  • dev-mode — name dev-sync by its maint subcommand (9fa01d3)
  • workflows — bring the German page back under the prose limit (5a9e559)
  • vision — calibrate the signal to cost parity at equal quality (55464bf)
  • workflows — say the agent runs /test and /review --quick itself (09bbdcb)
  • decisions — record the devkit-vs-native outcomes (29c76f7)
  • evaluation — record the tool-search variant and the lost-work mode (5f77bcf)
  • evaluation — state that the pilot covers the autopilot layer only (c7bc6ad)
  • evaluation — record the first devkit-vs-native pilot campaign (335b773)

🧪 Tests ​

  • usage-report — record the update-cause column in rollout rows (a3565d5)
  • hooks — give each wait-guard test marker a unique directory (348a398)
  • affected-map — route rust_only.rs to its own suite (61d57f0)

🏗️ Wartung ​

  • devkit-issues — hunt the siblings of every fixed issue (47d3cdc)
  • sync — cargo fmt the env withdrawal change (75e96d4)

v0.44.0 — 2026-09-25 ​

Boilerplate-Skills synchronisieren sich jetzt selbstständig im Hintergrund, die stack-shopify-liquid-Regression, die jeden Shopify-Vite-Build brach, ist behoben, und ein Bündel pen-design-Fixes aus zehn echten Friction-Reports landet: Canvas-Änderungs-Erkennung, Renumbering, Zeilen-Layouts und ein Subpixel-Clip-Falschbefund. Update mit devkit sync.

33 commits since v0.43.0 · Specs 652

✨ Highlights ​

🔄 Boilerplate-Skills synchronisieren sich selbst ​

Eine Umbenennung oder ein Fix im Boilerplate erreichte ein Kundenprojekt bisher erst, wenn jemand devkit skills pull von Hand ausführte — ein Shopify-Projekt konnte wochenlang einen stillgelegten Skill-Namen auflösen. Der Sessionstart zieht die Boilerplate-Skills eines Projekts jetzt einmal täglich im Hintergrund und nennt beim nächsten Start, was sich geändert hat; ein stillgelegter Name löst weiterhin über die replaces-Map der Registry auf:

bash
bash
devkit path skill stack-shopify-liquid   # -> löst über replaces zu sp-theme-scripts auf

Ein Skill, den das Boilerplate selbst entfernt hat, wird jetzt auch lokal entfernt, solange er nie von Hand bearbeitet wurde, und ein Clone über SSH fällt jetzt auf HTTPS zurück, wenn der Host keinen SSH-Schlüssel eingerichtet hat.

🩹 Shopify-Vite-Builds laufen wieder ​

0.43 löschte den Skill stack-shopify-liquid in der Annahme, jeder Aufrufer sei migriert; sp-alpensattel und jedes andere Shopify-Vite-Projekt lösten seine Skripte weiterhin über devkit path skill stack-shopify-liquid in vite.config.js, mehreren package.json-Skripten und dem Pre-Commit-Hook auf, sodass npm run build und preflight mit diesem Release brachen. Die Skripte sind wiederhergestellt — devkit path skill stack-shopify-liquid löst ohne Workaround wieder auf:

bash
bash
devkit path skill stack-shopify-liquid

devkit skills pull im betroffenen Projekt danach ausführen, um endgültig auf die eigene Kopie des Boilerplates umzusteigen (#172).

🎨 pen-design: Canvas-Änderungen driften nicht mehr unbemerkt ​

Der Stempel eines ausgelieferten Frames kann jetzt einen Inhalts-Hash seines Teilbaums tragen, inklusive jedes referenzierten Masters und jedes gelesenen Token-Werts — eine Fill-, Abstands- oder Text-Änderung direkt in Pen nach dem Ausliefern liess den Code-Stempel bisher aktuell aussehen. design-status.mjs --hash <nr> gibt das Feld für einen Frame aus; eine Abweichung danach meldet CANVAS GEAENDERT mit der betroffenen Code-Datei:

bash
bash
node "$(devkit path skill pen-design)/scripts/design-status.mjs" --hash 24

🖌️ pen-design: zehn Friction-Reports in einem Durchgang behoben ​

design-sort.mjs --renumber schreibt jetzt jede @frame-Schreibweise um (nicht nur Komma-Listen) sowie die erste Zeile von Konzeptdateien, und hält Mobile/Desktop-Paare gerade/ungerade; design-rebind.mjs akzeptiert zitierte Suffix-Framenummern; design-save.mjs behält das bestehende Pretty- oder Minified-Format einer Datei; ein neuer Adapter-Key legt View-Gruppen als Zeilen statt Spalten an; die K2-Clip-Prüfung toleriert jetzt bis zu 0,5 px Rundungsfehler statt sie als Clip zu melden; die Inventar-Tabelle in design/AGENTS.md zeigt Typ, erlaubte Werte und Default jeder Einstellung sowie welche Kind-Blöcke eine Komponente akzeptiert; der damit verdrahtete Design-Guard-Hook trägt keine absoluten Pfade dieser Maschine mehr; und setup.md stimmt jetzt mit der Code:-Zeile überein, die das Inventar-Skript tatsächlich liest (ein Projekt nach der alten Schreibweise paarte 6 statt 47 Komponenten).

Was sich für dich ändert ​

Neu verfügbar

  • /boilerplate-feedback meldet eine wiederverwendbare Änderung aus einem Shopify-, Nuxt/Storyblok- oder Shopware-Kundenprojekt als Issue im Boilerplate des jeweiligen Stacks — selbstständig oder auf Anfrage.

Verhalten geändert

  • Guard-Hooks (Branch-Switch, Restore/Checkout, Wait-Poll, Secret-Env) blockieren keinen Befehl mehr, der ein Trigger-Wort nur in einem String, einer Commit-Message oder einem Heredoc-Body zitiert — jeder wurde in diesem Zyklus mindestens einmal getroffen.
  • /vision liest jetzt eine Vision-Datei ausserhalb von .agents/context (z. B. docs/VISION.md) als reichhaltigste Quelle, statt das Projekt als ohne Vision zu behandeln.

🚀 Neue Funktionen ​

  • skills — migrate clients to boilerplate skills with the update (f7ade2b)
  • skills — add /devkit-boilerplates to keep the boilerplates current (5754853)
  • pen-design — report a canvas edit made after a frame was stamped (a2432ce)
  • maint — audit the boilerplates against the current payload (cd2d3e2)
  • skills — remove skills the boilerplate dropped on the next pull (2cd3db5)
  • boilerplate-feedback — file reusable client changes into the boilerplate (0638a20)

🐛 Fixes ​

  • guard — judge a whole-tree restore by its own git segment (373fb26)
  • vision — pick up a vision file kept outside .agents/context (2f8212c)
  • index — name devkit index-prep in the STRUCTURE header (a4af705)
  • guard — ignore loop words inside quoted text in the wait guard (dcb9b9d)
  • skills — warn when removing a retired skill fails (ea88474)
  • pen-design — tolerate sub-pixel overflow in the K2 clip check (5f1a13c)
  • devkit-issues — comment before closing, the trailer close is async (58a22c6)
  • design-inventory — show setting types, values and accepted blocks (933ed83)
  • design-inventory — write a portable design-guard hook and name it (6ebc0fc)
  • guard — ignore branch switches named inside quoted text (6ecd4d8)
  • devkit-issues — comment when a Fixes trailer already closed the issue (f20a1ae)
  • pen-design — pair components on Code: and flag missing design setup (54e2554)
  • guard — treat a quoted grep pattern naming .env as data (3c3cbc8)
  • pen-design — point setup.md at the generated inventory file instead of a stale index frame (#175) (5c815d3)
  • pen-design — trim canvas-lifecycle.md wording to clear content-budget and content-language (#173) (3b9544a)
  • pen-design — broaden @frame marker rewrite, fix mobile/desktop parity, accept suffix rebind numbers (#173) (a6a9ffc)
  • pen-design — add adapter groups: rows layout option to design-sort.mjs (#174) (4cb5d22)
  • skills — restore stack-shopify-liquid scripts devkit path still resolves (Spec 652) (2659a86)
  • skills — fall back to HTTPS when the boilerplate SSH clone fails (6c7bd60)
  • help — point dev-sync at its maint subcommand (da009c9)
  • boilerplate-feedback — keep client identity out of shared issues (6abce07)

📖 Dokumentation ​

  • readme — state the glibc 2.39 floor of the Linux binary (271900c)
  • evaluation — warn that Harbor drops devkit's user payload (b833837)
  • vision — add the repo north star with alignment test (e8ad829)
  • design — re-review the design page after the groups adapter key (6860bdc)
  • publish — relay token covers the boilerplate repos (ee78fda)

🧪 Tests ​

  • rust-only — count the restored stack-shopify-liquid category (2d7dac7)

v0.43.0 — 2026-09-25 ​

Was du nach devkit sync tun musst

  • Einmal devkit init ausführen (/index erledigt das jetzt für dich und fragt vorher), danach erneut /index — es wandelt einen älteren CLAUDE.md -> AGENTS.md-Symlink in den einzeiligen @AGENTS.md-Import um, den Claude Code für Repos mit mehreren Agents dokumentiert.

devkit sync trägt einen fehlenden codegraph/context7-MCP-Server jetzt selbst ein, statt einen Befehl zum Abtippen auszugeben, und fragt bei jedem fehlenden optionalen Tool einmal mit einer kurzen Begründung, statt alle neun hinter --optional zu verstecken. Update mit devkit sync.

34 commits since v0.42.6

27 Commits seit v0.42.6

✨ Highlights ​

🔌 Sync richtet MCP-Server und optionale Tools selbst ein ​

Ein Sync endete bisher mit MCP-Befehlen zum Abtippen und optionalen Tools, die niemand kannte. Sync führt jetzt selbst mcp add des Clients aus, bietet bei einem widersprüchlichen Eintrag einen funktionierenden Fix an und fragt pro optionalem Tool mit einer Zeile Begründung:

text
$ devkit sync
✓ MCP claude/codegraph hinzugefügt
Optionale Tools — 3 noch nicht installiert. Ein Nein merkt sich devkit.
  1/3  codex
        zweite Meinung von einem anderen Modell bei Reviews
        Installieren? [y/N]

📇 /index richtet das Projekt ein, nicht nur den Kontext ​

/index führt jetzt zuerst devkit init --dry-run aus, nennt jede geplante Änderung und wendet sie nach einem Ja an — damit ist es der eine Befehl nach jedem devkit-Update, nicht nur beim ersten Checkout:

text
/index
→ Projekt-Setup: CLAUDE.md wird zum @AGENTS.md-Import. Jetzt anwenden? [Y/n]

CLAUDE.md besteht jetzt aus der einen Zeile @AGENTS.md, wie Claude Code es für ein Repo mit mehreren Agents dokumentiert, statt eines Symlinks, der auf ACL-geschützten oder synchronisierten Checkouts überraschte. Ein Vault-, Marketing- oder Doku-Projekt bekommt keine STACK.md mehr voller Runtime-/Deploy-Fragen, die es nicht beantworten kann.

🤖 devkit-Doku für Agents abfragbar ​

https://devkit.one-dot.io/llms.txt und /llms-full.txt gibt es jetzt — der Volltext hat rund 95 KB, der 700 KB große Changelog ist nur verlinkt —, damit ein Agent eine Setup-Frage aus der veröffentlichten Doku beantwortet, statt zu raten:

text
curl https://devkit.one-dot.io/llms-full.txt

🎨 Pen-Canvases sortieren und gruppieren sich selbst ​

/pen-design gruppiert Canvas-Frames automatisch nach ihrer Spur und nummeriert jede Gruppe in einem Durchgang — ein einfaches „sortier das Canvas“ reicht jetzt, und es läuft auch, wenn Pen.app geschlossen ist:

text
/pen-design sortier das Canvas

Was sich für dich ändert ​

Neu verfügbar

  • devkit tools --missing-optional listet noch nicht installierte Tools mit Beschreibung; devkit tools --install <name> holt eins gezielt nach.

Verhalten geändert

  • Ein Plugin, dessen installierter Commit vom Pin abweicht, bekommt automatisch ein claude plugin update statt nur eine Warnung.
  • Ein Konflikt bei einem Pflicht-MCP stoppt weiterhin den Sync, bietet aber jetzt den Reparaturbefehl direkt an, statt ihn nur zu nennen.
  • /index schreibt AGENTS.md und STRUCTURE.md mit den bisherigen Dateirechten statt 0600, das hatte einen zweiten Dienst-Nutzer aus dem Repo ausgesperrt.
  • Jede Ja/Nein-Frage im CLI lautet [Y/n]; j und ja zählen weiter als Ja.
  • Der Renummerierungs-Report von /pen-design schrumpfte auf einem 168-Frame-Canvas von 36 KB auf 601 Byte — er zeigt nur noch die Aktionszeilen plus eine Zählzeile, --verbose für alles.

🚀 Neue Funktionen ​

  • pen-design — a plain 'sortier das Canvas' is enough (edcbb27)
  • index — seed STACK.md only where a stack exists (709cddd)
  • index — /index brings the project up to date, /onboarding goes (ab0e9fe)
  • init — CLAUDE.md becomes a one-line @AGENTS.md import (fd358ac)
  • pen-design — put the group name in every view frame name (eb1e445)
  • pen-design — run canvas scripts headless when Pen.app is closed (e4111aa)
  • pen-design — group canvas frames by Spur with group-block numbers (deb6976)
  • design — slop-check flags four taste-skill tells (af970ea)
  • docs — publish llms.txt and llms-full.txt (3808d88)
  • skills — /onboarding walks a colleague through the full setup (0d9d1b9)
  • sync — ask per optional tool and end on the /index hint (f8e0a4b)
  • sync — add missing MCPs itself and offer the rest as a prompt (bff298c)

🐛 Fixes ​

  • init — satisfy clippy's byte-string lint in the fence scan (cef17ac)
  • scaffold — allowlist Pencil's fileToken in the project gitleaks config (0af63fb)
  • pen-design — close Codex's second-round findings on renumbering (6fe59ae)
  • pen-design — close Codex's review findings on canvas renumbering (bde33ed)
  • close Codex's third-round findings on migration and STACK.md (ace25c1)
  • pen-design — make group renumbering hold on a real 168-frame canvas (fe30c48)
  • close Codex's second-round findings on init, index and sync (a83ae0c)
  • index — publish AGENTS.md and STRUCTURE.md with a readable mode (65c1868)
  • design — drop noisy slop patterns, find the ignore file (72db1d0)
  • docs — llms-full.txt resolves links against their source page (8a399a9)
  • sync — close the gaps Codex found in the auto-setup (19cf2f0)
  • maint — content-language names its real command (02704cb)
  • maint — rust-only names the real remedy for a shell spawn (197c3a8)

⚡ Performance ​

  • pen-design — design-sort prints only what needs action (54ffc5a)

📖 Dokumentation ​

  • optional-tools — name the per-tool question a plain sync asks (fa3a9df)
  • workflows — re-set the source marker after the STACK.md fix (fadd972)
  • pen-design — name group sorting and renumbering in the skill body (9296013)
  • bundles — fit the STACK.md seed note into the content budget (b657f23)
  • workflows — re-set the source marker after the STACK.md change (064bac3)
  • workflows — re-set the source marker after the /index fix (a7bef5b)
  • workflows — re-set the source marker after the /index change (14a4834)

🏗️ Wartung ​

  • content-language — accept the German CLI output quoted in the 0.43.0 entry (318a1b2)

v0.42.6 — 2026-09-25 ​

Die fünf stack-*-Skills sind entfernt, nachdem vier Messungen in Folge 0 von 237 Sessions fanden, die einen geladen haben — ihre Fakten stehen jetzt automatisch über /index zur Verfügung. Die Zehn-Spec-Wave, die das gebracht hat, hat auch Wave selbst zuverlässiger gemacht: Die Acceptance liest jetzt das volle Log eines Slices statt nur seiner letzten Zeile, und eine Prüfung, die einen Slice früher 8h21m blockiert hatte, ist jetzt auf 30s begrenzt. Update mit devkit sync.

66 commits since v0.42.5 · Specs 647, 648, 649, 650, 651, 652, 653, 654, 655, 656

✨ Highlights ​

🧹 Die stack-*-Skills sind weg — ihre Fakten stecken jetzt in deinen Context-Bundles ​

stack-laravel, stack-nuxt, stack-python, stack-shopify-liquid und stack-shopware wurden nie geladen: vier Team-Telemetrie-Messungen in Folge (1/185, 2/234, 0/216, 0/237) fanden keine Stack-Datei-Session, die einen davon gezogen hat. Was sie über öffentliches Framework-Wissen hinaus trugen — die Handvoll Umgebungsfakten, die keine Herstellerdoku nennt — landet jetzt automatisch in der STACK.md eines Laravel- oder Shopify-Liquid-Projekts, sobald du indexierst, in einem neuen wie in einem bereits indexierten Projekt:

text
devkit index-prep
# .agents/context/STACK.md bekommt einen ## Agent Environment Abschnitt

devkit skills pull verlinkt auch keine stack-*-Skills mehr in ein Projekt und entfernt die Symlinks, die es früher angelegt hat; der Implementer, /spec-work und /improve-codebase-architecture lesen stattdessen einen projekteigenen Skill oder .agents/context/STACK.md/CONVENTIONS.md.

📇 Ein CrewBuddy-Fetch-Skill statt drei ​

fetch-project-task und fetch-my-project-task sind weg; /fetch-task deckt jetzt eine einzelne Aufgabe, alle offenen Aufgaben eines Projekts und nur deine eigenen ab:

text
/fetch-task 50131
/fetch-task --project 42
/fetch-task --project 42 --my

📊 Die Nutzungstelemetrie zählt, was du wirklich tippst und befolgst ​

Ein getippter /name-Befehl zählt zu typed_commands, egal ob er als reine Textzeile oder als Claude Codes <command-name>-Block ankommt, und ein Hint wandelt jetzt auch dann, wenn du ihm von Hand folgst — nicht nur, wenn das Modell den Skill-Tool-Call macht. Der Checkin- und der Context-Usage-Hint schreiben erstmals eigene Events, ihre Konversionsrate wird damit ab 2026-10-24 messbar.

🛠️ Wave hat acht Zuverlässigkeits-Fixes aus einer Zehn-Spec-Wave auf sich selbst bekommen ​

Acceptance und die Wave-Baseline lasen bisher nur die letzte Zeile eines komprimierten Testlogs — ein echter rust_only-Fehlschlag eines Slices erreichte so main, bevor das auffiel. Sie folgen jetzt dem rtk recall <id>-Link, den test-prep hinterlässt, und sehen jede rote Suite. Dazu: Ein Review-Paket trägt jetzt seine eigene Stack Lens, statt auf eine von Hand geschriebene Brief-Zeile angewiesen zu sein, der ganze Diff eines Slice-Worktrees wird dem Slice zugerechnet auch wenn ein Headless-Delegate ihn geschrieben hat, und der Wave-Plan nennt eine freigegebene, aber nicht committete Spec, bevor sie einen Worktree verschwendet:

text
devkit spec-deps-check --plan
# UNCOMMITTED: <id> — commit the spec before a wave dispatch

⏱️ Ein Wave-Slice verliert keine Stunden mehr an ein stilles Hängenbleiben ​

spec-validate-preps beratender Reuse-Detect-Aufruf lief ohne Zeitlimit; wenn seine Suche hängen blieb, stand ein ganzer Wave-Slice 8 Stunden 21 Minuten blockiert. Der Aufruf ist jetzt auf 30 Sekunden begrenzt. Ein separater Fix im offiziellen Plugin-Marketplace-Audit hat auf demselben Weg ein anderes mehrminütiges Hängenbleiben (20+ min) auf rund 30 Sekunden verkürzt — ein Pipe-Deadlock durch volle Puffer, kein langsamer Server.

🧭 /vision fragt jetzt, warum das Projekt existiert, nicht nur was es tut ​

Eine neue Stufe liest die ältesten Commits und Entscheidungen für den Ursprung und fragt nach dem Wert, den das Projekt über die heutige Behelfslösung hinaus bringt. Ein --idea-Modus führt dasselbe stufenweise Interview für eine Geschäftsidee ohne eigenes Repo, mit Fakten aus dem Pitch und einer zitierten Marktrecherche statt aus einer Codebasis. Eine Herausforderung, die nur du entscheiden kannst, kommt jetzt als Rückfrage zurück, statt still in den Entwurf geglättet zu werden, und die Begründung jeder Stufe bleibt in einer Depth-Datei erhalten, statt beim Kürzen auf die Zusammenfassung zu verschwinden.

Was sich für dich ändert ​

Neu verfügbar

  • /fetch-task --project <id> [--my] ersetzt /fetch-project-task und /fetch-my-project-task.
  • /vision --idea interviewt eine Geschäftsidee außerhalb jedes Git-Repos.
  • /capture bekommt einen proaktiven Hint, sobald ein Prompt erstmals eine Projektregel nennt oder ein noch nicht verlinktes verwandtes Repo erwähnt.
  • „grill this" routet jetzt zu den Frontier-Runden von /brainstorm; der eigenständige /grill-Skill ist weg.

Verhalten geändert

  • Die fünf stack-*-Skills, /ai-setup-update, /failure-learn, /find-skills und /design-preview sind aus dem Payload entfernt; devkit sync und /devkit-retro decken ab, was sie taten.
  • Codex-SessionStart wird jetzt ohne turn_id erkannt (dessen Schema schickt nie eine); eine Codex-Session bekommt dadurch zuverlässig core.md und den Rest des Payloads, statt still als Claude behandelt zu werden.
  • Ein taggleiches lokales Experiment mit devkit-eigenen ADHD-Modus-Ergänzungen (eine Längenbremse bei Stop, eine Vorrangzeile für Claude-Sessions) wurde zurückgenommen; der i-have-adhd-Plugin läuft jetzt byteidentisch zum gepinnten Original, nur die Subagent-/Codex-Übergabe desselben Texts bleibt.
  • devkit skills pull legt keine stack-*-Symlinks mehr an und räumt selbst angelegte alte auf.
  • devkit tools versucht es einmal mit aufgefrischtem apt-Index erneut, wenn die Installation eines Pflicht-Pakets an einem veralteten Mirror scheitert (getroffen auf einem frischen Runner bei git-delta), statt den ganzen Lauf abzubrechen.

🚀 Neue Funktionen ​

  • spec-deps — name uncommitted specs in the wave plan (9968014)
  • telemetry — count typed commands and measure every prompt hint (Spec-656) (d9c8c99)
  • capture — prompt hints for project knowledge and related repos (324973d)
  • hooks — enforce the adhd length budget at Stop (a43d170)
  • vision — capture why a project exists and the value it adds (3218014)
  • vision — interview business ideas without a repo (7ab2aea)
  • vision — grill unresolved challenge hits as follow-up questions (74bf82e)
  • index — seed an Agent Environment section for Laravel and Shopify (Spec-647) (d31eb03)
  • vision — keep the interview's reasoning in on-demand depth files (64d058a)
  • skills — route 'grill this' to /brainstorm (8ba5b3f)

🐛 Fixes ​

  • cleanroom — run the spec lifecycle check CI's shard 1 runs (2c389a6)
  • tools — refresh the apt index once when a package install fails (8933c1e)
  • wave — read the full test log behind an rtk recall link (088195e)
  • design-inventory — keep pre-648 recipes working after the generator move (Spec 648, 652) (b1497fe)
  • wave — stage a slice whose worker already staged a deletion (33ff68a)
  • tools — realign the memsearch pin and the i-have-adhd consumer rows (339d000)
  • wave — count a slice worktree's whole diff as the slice's own (6c209e4)
  • review — carry the stack lens in the review package itself (b6e5c6a)
  • spec-validate-prep — bound the advisory reuse-detect call (3b43796)
  • i-have-adhd — stop focus mode from overriding reply length (751d76a)
  • wave — accept a Files to Modify glob such as <suite>.*.obs (541a014)
  • tool-pin-audit — compare prerelease versions instead of dropping them (b131122)
  • wave — name failing suites from a compressed test-prep report (fcb41ba)
  • tests — follow the design-preview and warp-skill-doctor removals (c29c905)
  • index-prep — accept ./AGENTS.md and absolute CLAUDE.md links (86422d0)
  • tool-pin-audit — read marketplace.json raw instead of piping base64 (533b224)
  • wave — keep the coordinator's own replies out of the sweep inbox (a6db6e5)
  • wave — classify a contract error before any baseline keyword (0573e2e)
  • wave — read a turn parked on a background shell as active (1673322)
  • wave — refuse an uncommitted spec before the slice worktree exists (101b6c6)
  • hooks — recognize Codex SessionStart without a turn_id (5e83c4b)
  • hooks — carry the adhd precedence line into Claude sessions (c0bd7c8)
  • tests — route the skill-lint and first-seen baselines to a suite (9f0f3ea)
  • tools — name python3's real consumers in tools.json (7b2cf62)
  • tests — route the devkit-usage maintainer skill to skills_smoke (d9d9860)
  • telemetry — trim the devkit version sent with each upload (a7b6e8c)
  • guard — stop blocking a double-quoted regex as a .env glob (f53947d)

⚡ Performance ​

  • test-prep — run only the changed map rows' suites on a map edit (95c3c90)

♻️ Refactoring ​

  • skills — fold /failure-learn into /devkit-retro (Spec-654) (5e3e293)
  • skills — delete the five stack-* skills (Spec-652) (9667db2)
  • skills — fold the project fetch skills into fetch-task (Spec-655) (6fa06d6)
  • skills — stop linking stack-* lenses and remove old links (Spec-650) (a110b4c)
  • routing — take stack knowledge from project context, not stack skills (Spec-651) (29e9a93)
  • adhd — ship the pinned plugin as-is, drop devkit additions (1abf9ef)
  • pen-design — own the Nuxt component-registry generator (Spec-648) (41fca8e)
  • usage — retire the Stack-Lens metric (Spec-649) (da318b1)
  • skills — remove /ai-setup-update (Spec-653) (3359226)
  • skills — remove grill, find-skills and design-preview (0d0e56d)

📖 Dokumentation ​

  • specs — mark archived 638 completed for its location (520b2bd)
  • reference — decision rows for Specs 638, 647-656 (36c09bc)
  • specs — archive 638, stopped by its own measurement gate (001a310)
  • spec-work — stop asking Main to hand-write the review stack lens (0b91e08)
  • wave — brief Rust slices to run cargo fmt --check before worker_done (12f79a3)
  • tools — record the codegraph deprioritize adoption (67e4712)
  • specs — add 647-652 from the 2026-09-24 skill and hint audit (029b6ed)
  • specs — add 653-656 from the 2026-09-24 skill and hint audit (9a7831e)
  • brainstorm — 009 hints that convert (Spec 656) (4c61e94)
  • reference — drop ten watch-list repos and thirteen native parks (653774a)

🧪 Tests ​

  • hooks — write post_tool's fake executables without a leaked write fd (f952ffa)
  • rules — exempt the removed grill, find-skills and design-preview rows (98a9ec8)

🏗️ Wartung ​

  • tools — record the i-have-adhd review at upstream 839872f (c1a43dc)
  • tools — i-have-adhd pin to upstream 839872f (9097881)
  • codegraph — deprioritize parity harness and skill scripts in ranking (a9d250c)
  • tools — rtk 0.50.0, prime-agent 0.9.6, memsearch 0.4.21 (8ecab40)
  • maint — drop warp-skill-doctor and candidate-audit-check (6b03a04)
  • usage — 2026-09-24 snapshot and expectation review (f7580ff)

v0.42.5 — 2026-09-24 ​

devkit sync zeigt im Terminal jetzt pro Phase einen Spinner und eine Ergebniszeile plus eine nummerierte To-do-Liste mit je einem Befehl — das 53-Zeilen-Log, das ein Kollege mit 0.42.3 bekam, schrumpft auf 20 Zeilen. Update mit devkit sync.

5 commits since v0.42.4 · Specs 646

✨ Highlights ​

🧭 Sync zeigt Phasen und eine To-do-Liste ​

Update, Skills & Regeln, Tools, Editor-Plugins, MCP-Server und Upgrades bekommen je einen Spinner und eine ✓/!/✗-Zeile; npm-Ausgaben, Installer-JSON und Plugin-Inventar bleiben verborgen, und jede Aufgabe landet unter Zu tun mit genau einem Befehl, etwa gh auth login && devkit sync bei fehlendem GitHub-Login.

bash
bash
devkit sync            # Phasenansicht
devkit sync --verbose  # die bisherige zeilenweise Ausgabe

Was sich für dich ändert ​

Neu verfügbar

  • devkit sync --verbose zeigt im Terminal die bisherige zeilenweise Ausgabe.

Verhalten geändert

  • Fehlende MCP-Server werden zu einem To-do pro Runtime, dessen Befehl alle claude mcp add …- (oder codex mcp add …-)Aufrufe mit && verkettet.
  • In Pipes, CI, mit NO_COLOR und DEVKIT_PLAIN=1 gibt devkit sync byte-gleich dasselbe aus wie 0.42.4.
  • /spec-work-Reviews starten nicht mehr ohne Reviewer-Brief, statt ein Pass zu melden, das nur einen Checklisten-Abschnitt geprüft hat.

🚀 Neue Funktionen ​

  • sync — phase view with spinner and to-do list (Spec-646) (63e9d4a)

🐛 Fixes ​

  • spec-work — name the review brief on stdin and its stack lens (Spec 646) (9d02825)
  • review-runtime — refuse a dispatch without a role brief (Spec 646) (e8a8adf)

📖 Dokumentation ​

  • reference — decision rows for Specs 646 (2034c73)
  • spec — Spec 646 — sync phase view and to-do list (8b207e7)

v0.42.4 — 2026-09-24 ​

Macs, die von devkit 0.40.0 aus aktualisieren, bekommen kein Linux-Build mehr: Der Legacy-Download enthält jetzt ein Binary für jede Plattform, und eine kaputte Installation repariert sich beim nächsten install.sh-Lauf. Update mit devkit sync.

3 commits since v0.42.3

Was sich für dich ändert ​

Was du tun musst

  • devkit bricht nach einem Update von 0.40.0 mit exec format error oder cannot execute binary file ab → einmal curl -fsSL https://devkit.one-dot.io/install.sh | bash ausführen; das installiert 0.42.4 für deine Plattform.

Verhalten geändert

  • Clients auf 0.40.0 laden jetzt ein Paket mit Binaries für macOS arm64/x86_64 und Linux arm64/x86_64 plus einem Starter, der das passende wählt, statt einer Kopie des Linux-x86_64-Builds.
  • devkit install/devkit sync ersetzen einen gleichnamigen Versionsordner, der sich nur in bin/devkit unterscheidet (beiseitegelegt als versions/.replaced-<v>.<id>), statt mit „existiert bereits mit anderem Inhalt" abzubrechen.

🐛 Fixes ​

  • release — publish a universal payload as the legacy alias (b0f7d08)
  • sync — restage a same-version folder whose only drift is bin/ (9248ea2)
  • release-prep — keep a tagged release's approval valid past new commits (9e89d87)

v0.42.3 — 2026-09-24 ​

Friction-Meldungen ohne Repo-Zugriff kommen jetzt an: Kann gh nicht anlegen, nutzt /friction-feedback das devkit-Relay. Update mit devkit sync.

3 commits since v0.42.2 · Specs 644, 645

Was sich für dich ändert ​

Verhalten geändert

  • devkit feedback-issue --confirm legt das Issue über das Relay an, wenn gh fehlt oder scheitert; die Issue-URL kommt mit Exit 0 zurück, Exit 3 mit dem manuellen Link heißt jetzt, dass gh und das Relay beide gescheitert sind.
  • Jede Friction-Meldung nennt ihren Absender (reporter: aus deinem git user.name), weil alle Relay-Issues denselben Autor tragen.

🚀 Neue Funktionen ​

  • feedback-issue — file through the relay when gh cannot (Spec 645) (Spec 644) (5de7258)

🐛 Fixes ​

  • feedback-issue — name the reporter; harden the relay call and tests (Spec 645) (582ff54)

📖 Dokumentation ​

  • reference — decision row for Spec 645 (7ab1b69)

v0.42.2 — 2026-09-24 ​

Spec- und Review-Befehle messen wieder von der richtigen Basis, reuse-detect hängt bei großen Diffs nicht mehr, und pen-design liest große Canvases vollständig. Update mit devkit sync.

20 commits since v0.42.1 · Specs 644, 645

Was sich für dich ändert ​

Verhalten geändert

  • spec-drift-check, spec-review-prep, review-prep und das fallow-Audit messen ab dem Stand von main oder origin/main, dem dein Branch näher ist: Ein veraltetes lokales main meldet übernommene Arbeit nicht mehr als Drift, ungepushte lokale Commits auch nicht (#161).
  • review-runtime akzeptiert Spec-IDs mit führender Null wie 001 (#160), und /spec-work schickt REVIEW_RUNTIME=claude an die native Review statt an einen Aufruf, der sie ablehnt (#159).
  • spec-review-prep hängt nicht mehr, wenn reuse-detect einen großen Diff bekommt (#158).
  • pen-design: design-status liest Boards über die 64-KB-Ausgabegrenze von pen hinaus, design-check beachtet PEN_FILE, und design-read bricht einen vollständigen Lesevorgang nicht mehr ab (#157).

🚀 Neue Funktionen ​

  • api — relay friction reports into issues server-side (Spec 644) (d16f9d1)

🐛 Fixes ​

  • release-prep — anchor on the newest release tag merged into HEAD (c01e9cb)
  • pen-design — design-read.mjs pagination stops itself, not a pre-count (62d4f72)
  • pen-design — design-check.mjs honors PEN_FILE without a positional arg (2412109)
  • pen-design — page design-status.mjs past the 64 KB pen CLI cap (882f6eb)
  • api — answer 502 when GitHub's 201 carries no issue number (Spec 644) (fab450c)
  • reuse-detect — write child stdin on a thread to stop pipe deadlock (090e5e1)
  • git — measure diffs from the fresher of main and origin/main (b409df4)
  • review-runtime — route REVIEW_RUNTIME=claude to native dispatch (3397671)
  • review-runtime — normalize zero-padded --spec IDs (9f5e312)
  • spec-drift-check — anchor base on origin tracking branch, not stale local main (4c5b39a)

📖 Dokumentation ​

  • reference — decision row for Spec 644 (ae61147)
  • workflows — re-set the marker after the review-runtime routing fix (e90a85f)

🧪 Tests ​

  • design_guard — tolerate a hook that exits before reading stdin (4e7f4f9)
  • write executable stubs through parity::support::write_exec (dd6cbab)
  • pen-design — follow the windowed status read; satisfy clippy 1.98 (b67399e)
  • parity — write executable stubs through an external cp (655bf77)
  • spec-complete — cover closing a reviewed nested-repo spec (7d04998)
  • pi_materialize — sync a private payload copy, not the live checkout (7c9af04)

No commit type ​

  • Add specs 644 and 645 for a public feedback relay endpoint (Spec 644, 645) (fb3bc94)

v0.42.1 — 2026-09-24 ​

Installationen auf 0.40.0 lehnten jedes Release seit 0.41.0 an der Codex-Guard-Prüfung ab; 0.42.1 liefert die geprüften Dateien mit, sie updaten wieder. Update mit devkit sync.

3 commits since v0.42.0

Was sich für dich ändert ​

Verhalten geändert

  • devkit sync auf einer 0.40.0-Installation nimmt dieses Release an, statt es an der Codex-Guard-Prüfung abzulehnen (#163).

🐛 Fixes ​

  • release-build — ship shims so 0.40.0 installs accept new releases (e3e0fc3)

🧪 Tests ​

  • pi_materialize — name the sync error when Pi AGENTS.md is missing (6b955df)
  • release_workflow — write executables through an external cp (cf8ac2f)

v0.42.0 — 2026-09-24 ​

Was du nach devkit sync tun musst

  • In jedem Projekt devkit init, danach /index ausführen: AGENTS.md wird die Instruktionsquelle, CLAUDE.md ihr Symlink (Spec 630) — sync migriert das nicht, devkit doctor warnt nur.
  • Pi implementiert für dich: bubblewrap (bwrap) installieren — ohne verweigert pi implement den Dispatch (Spec 642).
  • Codex: devkit doctor ausführen; meldet es [features] hooks = false in ~/.codex/config.toml, die Zeile entfernen, sonst läuft kein devkit-Hook.
  • Du hast DEVKIT_RUNTIME_IMPLEMENT=autohand oder interpreter gesetzt: eine andere Runtime wählen, beide sind entfernt.

Einen Spec verdient jetzt Komplexität, ein Handoff oder eine offene Entscheidung, Risiko allein bekommt eine unabhängige Review — über 161 Specs traf BLOCK 7/7 bei 7+ Steps, aber 7/22 bei 1-3 Dateien. Pi implementiert unter Hooks und bwrap-Sandbox, /vision verankert den Nordstern. Update mit devkit sync.

238 commits since v0.41.0 · Specs 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 641, 642

✨ Highlights ​

📏 Ein Spec wird verdient, nicht vorausgesetzt ​

Mehr als 5 Steps oder 6+ Dateien über 2+ Subsysteme, ein Handoff, eine offene Entscheidung oder eine Bitte verdienen einen Spec; alles andere läuft direkt oder per /delegate. Parser-, Secret-, Permission-, Write-Pfad- und Release-Änderungen bekommen eine unabhängige /review — 16/21 Specs mit 7+ Dateien wurden geblockt, 14 kleine liefen 2+ Runden ohne BLOCK.

text
/review

🧭 /vision — der Nordstern eines Projekts ​

Ein gestuftes Interview schreibt Ziel, Nicht-Ziele und Entscheidungsprinzipien nach .agents/context/VISION.md, und /spec, /brainstorm und /challenge prüfen dagegen; --calibrate öffnet nur, was ein benannter Konflikt berührt.

text
/vision
/vision --calibrate "ein Nicht-Ziel wurde zweimal getroffen"

🔒 Pi-Delegates laufen abgesichert ​

pi implement lädt jetzt die devkit-PreToolUse/PostToolUse-Hooks (ein git reset --hard aus Pi wird geblockt), läuft in einer fail-closed bwrap-Sandbox und kann keinen neuen MCP-Server in Pis globale Konfiguration schreiben.

text
DEVKIT_PI_SANDBOX=off   # nur als bewusstes Opt-out

🏎️ Routing auf schnelleren, günstigeren Modellen ​

Pi auf anthropic/claude-sonnet-5 führt leichte, mittlere und Effort-high-Specs (ein Fix-Brief: 14 s statt 124 s auf Claude implement); Codex und Pi wechseln zu GPT-6 Sol und Luna zum halben GPT-5.6-Preis; pi implement überspringt Context-File- und Skill-Discovery (1390 s statt 1562 s über drei Specs, 39 Verifies grün).

text
devkit runtime-route implement

⚡ Schlankere Spec- und Wave-Läufe ​

Leichte und mittlere Specs bekommen eine Review-Runde und fixen nur Security-, Datenverlust- oder Failed-AC-Findings (Slice 637 brauchte 64 min und 298 Tool-Calls für 12 Edits). Wave-Slices orientieren sich am Readiness-Block, dessen Neu-Lesen 877k von 1,08M Output-Tokens in zehn Transkripten kostete, und laufen das Gate einmal statt 56-mal.

text
/spec-work 642

🌐 Browser-Checks schreiben nie in Produktion ​

Vor der ersten zustandsändernden Aktion ermittelt agent-browser, mit welchem Backend der Dev-Server spricht, und stoppt, wenn es nicht Loopback, .local/.test oder ein dokumentierter Dev-Host ist; reine Lese-Checks bleiben frei.

text
/agent-browser prüfe den Checkout-Flow

🎨 pen-design: Starter-Canvas und geschützte Canvases ​

Ein neues Projekt startet von einer fertigen Canvas (elf Section-Master auf 25 Standard-Variablen, 0 design-check-Findings) statt fünf Zeichenrunden, und kein Checker liest oder speichert eine andere Canvas als die vorne liegende.

text
design-seed.mjs --from-template starter

🖥️ Sichtbarer Fortschritt bei install, sync und tools ​

Interaktive Terminals zeigen Abschnitte, Spinner, Laufzeit und den echten Fehler einer gescheiterten Tool-Installation statt eines stillen Schritts; Pipe- und CI-Ausgabe bleiben byteidentisch.

text
devkit sync

Was sich für dich ändert ​

Neu verfügbar

  • /vision schreibt und kalibriert .agents/context/VISION.md.
  • devkit tools installiert das passende LSP-Plugin, wenn der Language-Server im PATH liegt (Spec 618).
  • devkit design-tidy --write sortiert design/ in sein Standard-Layout.
  • Die Doku hat je eine Setup-Seite pro gerouteter Harness — Installation, Anmeldung und Check für alle neun.

Verhalten geändert

  • /spec-work committet nicht mehr jeden grünen Step; einen bestandenen Spec schließt du mit /commit ab.
  • Jeder v2-Spec bekommt die unabhängige Implementierungs-Review (Spec 641); eine Review meldet eine Finding-Klasse einmal statt Runde für Runde.
  • Jede Frage an dich läuft über AskUserQuestion.
  • Kimi verlässt die Implement-Regeln, DSH bleibt Fallback; autohand und interpreter sind entfernt.
  • Der Secret-File-Guard blockt sichere rg-, jq- und Doku-Befehle nicht mehr.
  • devkit init nennt jeden Rest des alten npx ai-setup und fragt, bevor es einen Projekt-context7-Eintrag ersetzt.

🚀 Neue Funktionen ​

  • release-prep — a local clean-room pass replaces the hosted CI gate (2a7b813)
  • audit-gate — --append writes the missing decision rows (2c96b35)
  • release-prep — manual post-update steps open the changelog entry (e0b9a86)
  • vision — interview and calibrate a project's north star (4ca9a96)
  • init — devkit init names every legacy npx-ai-setup leftover (Spec 637) (5bcdca8)
  • init — report every legacy ai-setup leftover (Spec 639) (3ebb2f7)
  • review — report a finding class once, park only on real blockers (97bdcd2)
  • spec — every v2 spec gets the independent implementation review (Spec 641) (7406773)
  • spec-renumber — move a spec to a free ID without losing approval (5f53377)
  • design — agents sort design/ themselves with design-tidy --write (645a76c)
  • design — add devkit design-tidy to organize design/ folder structure consistently (ceda3fd)
  • rules — every question to the human goes through AskUserQuestion (266c7c7)
  • pi — pi implement runs inside a bwrap sandbox (Spec 642) (bc16ba6)
  • wave — slices implement through headless Pi/DSH when the route names it (Spec 616) (d9a0b4d)
  • spec-finish — refuse completion while declined review lines are unruled (Spec 623) (2cf0aee)
  • run-cost — report repeated tool calls with line anchors (Spec 621) (f6218c3)
  • spec — specs name up to five implied inputs, reviewer checks them (Spec 624) (3155766)
  • skills — read-only shell preload in skills, gated by skill-lint (Spec 619) (92b7704)
  • pen-design — canvas check covers every building block (Spec 627) (620bc65)
  • tools — install LSP plugins when the server is on PATH (Spec 618) (afe14df)
  • review — reviewer grades spec-silent behavior and lists declined (Spec 622) (672b199)
  • pi — pi implement skips context-file and skill discovery (Spec 625) (07eb41e)
  • pen-design — a new project starts from a starter canvas (6ecff16)
  • routing — Pi on Claude Sonnet also leads Effort high specs (Spec 630) (02561df)
  • routing — Pi on Claude Sonnet leads light and medium specs (8b44ae5)
  • routing — Claude leads light and medium-effort implement work (e28ea65)
  • init — AGENTS.md is the instruction source (Spec 630) (db38749)
  • hooks — a design guard keeps Pen's agent out of code (Spec 628) (e2af170)
  • pen-design — icon sheet reads a Liquid snippet (Spec 636) (590aa9f)
  • pen-design — sheets fill from the code (Spec 632) (027a497)
  • pen-design — shipped frames get their own zone (Spec 626) (fc41f34)
  • pen-design — an imported page becomes components (Spec 631) (55038a0)
  • pen-design — one rule source for every drawing agent (Spec 627) (b1c06b5)
  • quality-gate — a duplicate spec ID reddens the gate (Spec 634) (b9f973e)
  • tool-review — read an npm upstream, drop three false surfaces (Spec 633) (0cd9eb4)
  • pen-design — the canvas check covers every building block (Spec 625) (d2e9749)
  • pen-design — design-save saves the front canvas from the terminal (8011300)
  • design-inventory — pair numbered canvas masters with code (b02b9da)
  • pen-design — design-rebind binds an imported frame to the tokens (9893101)
  • delegate — block MCP installs in Pi delegates (05e5d4d)
  • tool-pin-audit — flag installs newer than their review (0eac4d9)
  • spec-validate — flag cargo test --lib over a bin-only module (Spec 620) (138efee)
  • skills — run failure-learn forked, lint forked AskUserQuestion (Spec 620) (8d4f1ac)
  • delegate — Luna explore at high, codex runs unattended (1fccd0f)
  • routing — move codex/pi to GPT-6 Sol and Luna (59de382)
  • agent-browser — block writes when the dev server talks to prod (0f0dbe9)
  • wave — sweep classifies every escalation into a fixed class (Spec 615) (b78579a)
  • devkit — add fancy terminal UI for install/sync/tools, fix pen-desi (5183bfa)
  • wave — the slice supervisor implements every slice (Spec 616) (193b6de)
  • wave — slice-dispatch binds the readiness pack at dispatch (Spec 614) (e17559c)
  • release-prep — assemble writes the changelog entry, not the model (a8116f4)
  • maint — session hint names the changelog backlog (8161fa4)
  • wave — reintegrate resolves docs-marker-only conflicts itself (b7bf5a2)
  • pen-design — components sheet of refs, checked by S1 (a7831d5)

🐛 Fixes ​

  • design-tidy — call support git_ok instead of a private copy (0b86b9f)
  • release-prep — match the German action-block title in assemble and card (6500dbb)
  • hooks — mask an rg pattern in any pipeline segment, not only the first (cab3733)
  • wave-prep — refuse a slice whose spec is blocked, paused or completed (Spec 638) (e88bf8f)
  • wave-prep — a working Codex slice reads as active, not idle (b51a750)
  • spec-review-prep — collect scoped paths from nested git repos (76c8467)
  • hooks — a sleep after reading a finished task is no background wait (82d0827)
  • grill — accept space-separated prerequisite ids (46bf981)
  • release-build — run the content contract before the target binary lands (83c0cbb)
  • wave-prep — a merge that could not write a locked index is no merge (6b6d852)
  • wave-prep — a slice retry keeps the implement tier's model and effort (Spec 637) (6a61aeb)
  • index — give framework-less Node repos their own stack profile (5cde0cf)
  • test-prep — print the failing output again (Spec 637) (bc57d1d)
  • specs — move the legacy-scan spec to 643 after a second 639 (e3a9b5c)
  • doctor — keep parallel codex_features_hooks tests in separate dirs (964d24a)
  • spec — complexity or a handoff earns a Spec, risk earns a review (0a570fb)
  • wave-prep — keep review ledgers at teardown, read only a real red list (9b9fe75)
  • init — remove the .mcp.json transaction dir after success (48db8dc)
  • init — show one plain usage line, move flags to special cases (93ac136)
  • spec — git takes code back, so direct and /delegate are the default (1291a53)
  • tools — register the four LSP plugins Spec 618 added (9345da8)
  • init — ask before replacing a project context7 entry (fb9b3be)
  • rules — ROUTE=judge means write the test, not open a Spec (5e44c42)
  • rules — route small work direct or via /delegate, not into a Spec (3a6169e)
  • review-runtime — a sentinel named inside a sentence is no verdict (Spec 641) (4b29687)
  • spec-wave-approve — name the slice's worktree to the overlap check (Spec 637) (7d46294)
  • specs — renumber three spec IDs another clone had taken (38383d1)
  • wave — coordinator owns task-update; turn budget counts Steps only (Spec 638, 639) (01be726)
  • spec-deps-check — never read the caller's own worktree as a sibling (Spec 637) (8df9584)
  • spec-validate — an unparsable verify blocks a v2 spec outside authoring (Spec 637) (05ea3df)
  • wave — catch a slice parked on a Codex dialog before it goes silent (3188990)
  • specs — carry the new IDs into the renumbered spec titles (fb25ca4)
  • specs — renumber this clone's duplicate spec IDs to 639-641 (1ee2a77)
  • wave — a blocked slice reports through worker_done, not task-update (5178d3c)
  • spec-review-prep — bound the Committed diff at HEAD (Spec 621) (9abd447)
  • spec-validate — a cargo --lib verify over a bin-only module is an error (d3ed877)
  • wave-prep — a numbered summary above an open prompt is no dialog (d30486d)
  • wave-prep — print the terminal a slice retry landed in (82f89eb)
  • reference — drop the notes folders of removed watch-list entries (c8297db)
  • sync — record an older release under a dev build as a no-op fetch (8b7d2c7)
  • hooks — let jq filters name the env key without tripping the guard (cff3dae)
  • wave-prep — refuse a slice whose files a live sibling still owns (6512b57)
  • pen-design — design-check flags a radius that ignores its frame (225ca31)
  • wave-prep — name the red targets of a baseline instead of hiding them (55c5bc2)
  • docs-drift — say the marker is a digest, name the real command (e18618b)
  • codex — name the frozen CLI copy behind a code-mode host skew (6eacb22)
  • delegate-return — skip main's own mirrored deletions (90926e6)
  • orca-detect — end the --print-bin output with a newline (8949220)
  • context-drift-check — satisfy clippy manual_contains in evidence skip (d8953d0)
  • test-prep — narrow node --test the same as vitest/jest/pytest (c7689b7)
  • index-prep — tell non-Claude agents to read the @-imports themselves (fb62f21)
  • index-prep — only @-import RELATED.md when it has real content (bd1ac77)
  • index-prep — rewrite the context-imports block in place (1dd58f1)
  • index-prep — detect a one-level-deep workspace stack profile (bf0d0de)
  • index-prep — detect docker-compose.yml and Coolify for Hosting & Deploy (3020d8a)
  • gotcha-recall — warn on Critical entries a non-## heading or missing Trigger hides (c7e1a9e)
  • context-drift-check — skip CLAUDE.md/AGENTS.md copies under a verification/evidence assets tree (5e393fe)
  • context-drift-check — resolve refs after cd <dir> && relative to that dir (79d1245)
  • context-drift-check — resolve nested AGENTS.md refs relative to its own directory (008cde1)
  • context-drift-check — dedupe scanned CLAUDE.md/AGENTS.md by realpath (Spec 630) (ee8b6b6)
  • sync — refuse a release payload that breaks the content contract (a9d7b0a)
  • sync — name repeated identical fetch failures in SessionStart (ee73d5c)
  • sync — prune retained stage candidates before a new attempt (77ebf03)
  • sync — rewrite stale devkit-owned Codex hook paths on wire (e01ffb3)
  • doctor — verify the Codex hooks feature flag and command resolution (47da436)
  • hooks — treat a regex escape in a quoted rg pattern as data (11f914b)
  • spec — check docs facts in review, no waiver for docs pages (Spec 631) (3e664be)
  • review — fall through Kimi quota and record the answering runtime (515abc1)
  • routing — keep dsh as an implement fallback (ae02b15)
  • hooks — let echo/printf prose name the secret env file (c3ad8d5)
  • tests — map content/switches.json to the refs suite (ea08866)
  • pi — refuse Claude subscription OAuth for pi delegates (149eb28)
  • pi — pi implement runs under the devkit tool hooks (a85cf09)
  • tests — retry a fixture's rustc compile before failing (40e3a65)
  • prime-run — name a provider usage limit as a quota setup defect (33de6a1)
  • sync — a fixture DEVKIT_HOME no longer rewires the PATH link (19a5ddd)
  • deps-check — a retry slice spec-628b maps to spec 628 (24a678a)
  • wave — a Rust slice runs clippy before worker_done (1258f0c)
  • pen-design — THEME FEHLT needs a themed variable (Spec 635) (e68e61d)
  • pen-design — --promote works in Pen, and a rolled-back block fails (aeb2228)
  • wave — a red acceptance names the suites that failed (c2b6822)
  • switches — register DEVKIT_SPEC_ID_FETCH_MINUTES (Spec 634) (5765fca)
  • delegate — a memsearch-dsh probe timeout is transient, not a verdict (54a5a79)
  • wave — reintegrate waits out a foreign index.lock and says why (b559608)
  • pen-design — design-check names a top-level parent "Ebene 0" (Spec 625) (ecaf575)
  • wave — a slice brief owns its own spec file for the lifecycle (f2b418a)
  • wave — the baseline names the suites a red runner failed (00638c6)
  • spec-validate — resolve symlinks before the repo-path check (b39c469)
  • tests — compare the physical path in the toolchain probe test (dc30394)
  • reference — drop notes folders whose watch-list rows are gone (0849184)
  • pen-design — bring the gate on main back to green (45411ae)
  • pen-design — design-status leaves system sheets out of the drafts (2fc577a)
  • design-inventory — an unknown profile names the starters that exist (406e693)
  • stack-nuxt — the registry scans srcDir/components first (d9389c7)
  • pen-design — an optional template key needs no form per stack (ac3be7a)
  • pen-design — the token seed is an execute call pen interactive runs (468d23b)
  • pen-design — design-fonts refuses a file Pen.app has open in front (cc55f18)
  • pen-design — count display-face lines per parent, add head-gap check (b1d6c32)
  • pen-design — design-tokens slashes a project's own namespaces (f599ba6)
  • pen-design — no checker reads or writes a canvas that is not in front (2d32fac)
  • design-verify — read page frames in windows, measure heading gaps (ccd0a3f)
  • spec-readiness — a missing affected map is advisory, not unresolved (4a31dc8)
  • pen-design — design-tokens slashes a project's own namespaces (b037d1a)
  • pen-design — no checker reads or writes a canvas that is not in front (d32f741)
  • tool-pin-audit — report a corepack shim's own version (0e4e8a3)
  • tests — isolate fixture repos from an inherited GIT_DIR (4bf67f7)
  • spec-update — name the command that prints the contract digest (Spec 620) (43d8005)
  • runtime-route — bound probes in-process instead of via timeout(1) (91a8547)
  • hooks — codegraph gate ignores paths absent from the checkout (bc86602)
  • runtime — resource lookups wait out a running sync (7f7dd72)
  • remote-exec — clarify SSH host allowlist and session restart requirement (21dce06)
  • spec-work — stop committing each green Step (ac6d9c8)

⚡ Performance ​

  • spec-work — a lite path for low and medium specs (918522c)
  • wave — cut the slice work that caught nothing in wave 2026-09-24 (1f36026)
  • release — reuse artifacts and build targets in parallel (Spec 617) (e515216)

♻️ Refactoring ​

  • roles — tune implementer and reviewer prompts to vendor docs (f6061ab)
  • spec-work — retire the native Claude implementer fork (8813d42)
  • delegate — retire autohand and interpreter runtimes (aef7679)
  • pen-design — prose on one spine (Spec 629) (7d132a4)

📖 Dokumentation ​

  • reference — decision rows for Specs 614-643 (f9f7107)
  • agents — make /devkit-retro on request, not a completion step (948d8ed)
  • workflows — re-set the marker after /vision wiring (0c0afaa)
  • workflows — re-set the marker after merging main (cd2aa25)
  • workflows — re-set the marker after the complexity route (f2a3d85)
  • workflows — re-set the marker after the spec route simplification (cb9c4c0)
  • workflows — re-set the marker after the spec routing edit (359d07c)
  • design — re-set the marker after the design-tidy agent rule (91e4871)
  • design — re-set marker after source changes (8afe537)
  • workflows — re-set the marker after the question-rule edit (78e0400)
  • spec — rebind the approval digest of Spec 641 after its renumber (9b0a890)
  • spec — park Spec 638 on its Step 0 measurement gate (9da24df)
  • workflows — re-set the marker after the wave watcher edit (282a560)
  • spec — bind the approval digests of Specs 637 and 638 (80d708c)
  • spec — gate Spec 638 on a 14/15 uncorrected-map measurement (689e262)
  • workflows — re-set the marker after the index skill edit (911d466)
  • index — name the RELATED.md gate and root-relative context paths (8ae2ebc)
  • spec — draft optional task-map generation phase for index-prep (Spec 638) (4416fab)
  • spec — Spec-637 contract to retire the review waiver (2397e06)
  • harnesses — Spec-631 one setup page per routed harness (98df5c3)
  • design — re-set the marker after the starter template (7330655)
  • specs — 630 runs pi implement inside a bwrap sandbox (a3672ad)
  • spec — draft init legacy ai-setup cleanup detection (#150) (615cf0b)
  • backlog — park the boilerplate canvas idea (859d9d2)
  • specs — renumber the pen-design drafts 617-620 to 626-629 (f993519)
  • workflows — re-set the docs-source marker after the wave auto rule (f05c731)
  • specs — 628 guards the drawing session with a hook (cb829b3)
  • specs — 630 AGENTS.md becomes the instruction source (26a476f)
  • specs — 629 pen-design prose on one spine (dd13eaf)
  • specs — draft 635 and 636 (5966c7d)
  • specs — draft 631-634 from the pen-design end-to-end run (328b8be)
  • specs — renumber the pen-design specs 617-620 to 625-628 (63b4de8)
  • specs — 617 retires the rules node everywhere, preamble moves (364ca97)
  • design — re-set the docs-source marker after the --pairs line (3065960)
  • specs — draft 617-620 for one pen-design rule set every agent keeps (993ff0f)
  • specs — draft 617-620 for one pen-design rule set every agent keeps (98bb524)
  • changelog — record unreleased changes including Spec 617 (a093b17)
  • reference — drop four zero-yield watch-list entries (f12f56d)
  • reference — drop three dead watch-list entries (78d72ea)
  • tools — review codex 0.148.0 -> 0.156.1 (534f26b)
  • context — name the cargo target for maint unit tests (Spec 620) (2e89904)
  • reference — scan obra/superpowers v6.4.1 (caeac19)
  • workflows — re-certify the marker after the spec-work commit rule change (1df174b)
  • specs — add specs 614-616 for wave slice hardening (74ab5a5)
  • changelog — v0.41.0 lists the digest fix it shipped (922 commits) (4c8965f)

🧪 Tests ​

  • map — drop the shim rows Spec 625 no longer creates (1fc4ace)
  • map — route pi argv and the Spec 625 implement shim to pi_delegate (16b67df)
  • map — content/switches.json maps to refs (Spec 628) (bafbad1)
  • content-language — a Rust target for the language baseline (Spec 629) (c1ff141)
  • make install, pi_delegate and runtime_inventory pass on macOS (fc370e9)
  • drop the 471 parity fixtures no target reads anymore (a2c5e2f)

🏗️ Wartung ​

  • hooks — rustfmt the design-tidy match arm (6b5f2a4)
  • hooks — rustfmt design_guard match arm (f04aeba)
  • tests — rustfmt two pen-design suites (cf26f47)
  • tools — pen 0.3.9, canvas on format 2.19 (e4e5dc4)
  • tools — review nine audit rows, bump four pins (e9dbda8)
  • ignore reference-ledger flock files (111c666)
  • autohand — untrack the machine-local memory log (37ebfe9)
  • autohand — untrack the machine-local memory log (b7bbab4)
  • release — skip test shards when ci.yml is green on the tagged SHA (f237dec)

No commit type ​

  • Revert "refactor(spec-work): retire the native Claude implementer fork" (bf42d59)
  • Reapply "feat(routing): Pi on Claude Sonnet leads light and medium specs" (9f1e784)
  • Revert "fix(pi): refuse Claude subscription OAuth for pi delegates" (903d685)
  • Revert "feat(routing): Pi on Claude Sonnet leads light and medium specs" (ecf529f)
  • Add specs 618–624 for LSP plugins, skill shell preload, run-cost repeats (ca76946)

v0.41.0 — 2026-09-23 ​

devkit ist jetzt ein einziges kompiliertes Rust-Binary: 51.000 Shell-Zeilen sind weg, ein Bash-Aufruf zahlt 22 ms Hook-Zeit statt 155, und jq und node werden nicht mehr gebraucht. Das Routing wählt den Harness pro Spec, pi kann implementieren, und ein Wave-Plan, der 7 Waves brauchte, braucht 3. Update mit devkit sync.

922 Commits seit v0.40.0 · Specs 426, 453, 454, 459, 460, 461, 464, 465, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 507, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613

Breaking Changes ​

  • Die Shell-Runtime ist gelöscht; das kompilierte Binary ist das einzige devkit (89ff391) Migration: ein Quell-Checkout trägt kein lauffähiges devkit mehr — bau es mit cargo build --release -p devkit oder installiere ein Release mit devkit sync.
  • Der Shell-Hook-Dispatcher und seine 16 Policy-Scripts sind gelöscht (77ca518) Migration: DEVKIT_HOOK_SHELL_DISPATCH entfällt; ein Checkout ohne gebautes Binary hat keine PreToolUse/UserPromptSubmit-Policies, bis cargo build --release -p devkit oder devkit sync gelaufen ist.
  • devkit project-migrate migriert keine npx-ai-setup-Projekte mehr (cbff4ce) Migration: Reste wie .ai-setup.json und die kopierten Template-Dateien von Hand entfernen.

✨ Highlights ​

🦀 devkit ist ein Rust-Binary — und jeder Aufruf wurde schneller ​

Der Bash-Einstieg, lib/, jedes content/scripts/*.sh, alle ausgelieferten Hooks und alle 57 Maintainer-Werkzeuge laufen jetzt in einem signierten Binary pro Plattform, 51.000 Shell-Zeilen sind gelöscht. Ein Bash-Aufruf zahlt 22 ms Hook-Zeit statt 155, ein Script-Aufruf über devkit run dauert 12 ms statt 98, und jq und node braucht die Maschine nicht mehr.

text
devkit sync

🧭 Smartes Routing wählt den Harness pro Spec ​

devkit runtime-route liest Effort, Risk und Class eines Specs und wählt den Harness: hohes Risiko an Claude oder Codex, leichte Arbeit an pi oder dsh, alles andere an Prime. Es verbindet die nativen Provider-Kataloge mit deiner eigenen Policy, und eine Runtime, die nicht startete, wird 24 h übersprungen.

text
devkit runtime-route implement --spec devkit/specs/<NNN>-<slug>.md

🤖 Mehr Harnesses implementieren, ein abgebrochener Lauf setzt fort ​

pi implementiert jetzt im eigenen Worktree mit 3.600 s Grenze, und --continue-from setzt einen abgebrochenen Lauf mit seinen Edits fort statt mit einem von Hand exportierten Patch. Mit codegraph brauchte ein pi-Lookup 3 Turns und ~31k Tokens statt 9 Turns und ~119k. Primes Runner ist nativ, seine Orca-Startgrenze fällt von 120 s auf 30 s.

text
devkit delegate-visible pi implement --continue-from <kept-worktree>

🧠 Opus 5.5 und günstigere Reviews ​

Das Routing wechselt auf Opus 5.5 und Fable 5.1, die Opus-Efforts der Spec-, Review- und Planungs-Skills sinken um eine Stufe. Die vierte Fix-Runde eskaliert zuerst auf Opus 5.5 ($4/$20), erst dann auf Fable ($10/$50). Ein Diff von pi, Prime, Codex oder dsh prüft Claude Sonnet medium statt Opus, und ein kleiner Befund wird sofort in einem Folge-Commit behoben.

text
devkit model-route review claude model

🌊 Waves planen dichter, Delegates starten mit Kontext ​

Specs, die nur an geteilte Registries anhängen, warten nicht mehr aufeinander, ein Plan fällt von 7 Waves auf 3. Die Wave-Freigabe blockiert nicht mehr fälschlich auf abgeschlossenen Specs, laufenden Slices oder Prime-Scratch-Trees. Jeder Delegate startet mit einem 8-KB-Kontextpaket des Projekts und einem codegraph-Index (0,04 s + 1,2 s zum Anlegen), und das Kosten-Gate nennt pro Slice Supervisor und Implementer.

text
/wave

🔌 pi ist jetzt ein vollwertiger Harness ​

pi kann Wave-Slices implementieren, erreicht jedes devkit-Tool über MCP und läuft mit denselben Hooks wie Claude und Codex — inklusive Guard gegen destruktive Befehle — über ein kompiliertes Manifest und einen TypeScript-Adapter. Bleibt opt-in, mit einem verwalteten Block in ~/.pi/agent/AGENTS.md.

text
devkit config pi on

✂️ Schlankere Skills, frische Sessions für die Umsetzung ​

Veraltete und doppelte Prosa ist aus den Skills gestrichen: agent-browser fällt von 2.427 auf 1.036 Wörter, delegate von 3.255 auf 2.540, challenge von 1.519 auf 885, prime-agent von 2.773 auf 2.113 und spec-update von 2.491 auf 2.051. /spec übergibt /spec-work jetzt an eine frische Session: 150–165k gecachte Tokens pro Turn statt 430–470k. Subagents bekommen das 7,2-KB-ADHD-Regelwerk nicht mehr.

text
/clear
/spec-work 603

⚡ Weniger Warten ​

Ein kalter Dev-Build braucht 42 s CPU statt 270 s. 80 codegraph-Caller-Lookups sind eine 4-ms-Abfrage statt 11,6 s, und der Sleep-Poll-Guard blockiert ein Muster, das ~180k Tokens pro Session kostete. Das Tool-Upgrade in devkit sync blockiert andere devkit-Befehle nicht mehr. /pen-design legt die feste Canvas-Struktur vorab an, statt sie zu zeichnen; eine solche Phase hatte 208k Tokens gekostet.

text
devkit sync

Was sich für dich ändert ​

Geändert

  • devkit init ersetzt devkit project-migrate: ein Befehl richtet einen Projekt-Checkout ein, neu oder aus einer älteren devkit-Version, und wendet den Plan direkt an — git ist das Rückgängig, devkit init --dry-run zeigt ihn nur. Im Terminal führt es durch: bietet git init an, fragt vor dem Anwenden, bietet die Stack-Skills und einen Commit chore: set up devkit an und endet mit dem nächsten Schritt (/index); --yes oder ein Lauf ohne Terminal wendet ohne Rückfrage an. Eine neue Session in einem git-Projekt ohne devkit-Kontext nennt devkit init einmal am Tag (DEVKIT_SKIP_INIT_HINT=1 schaltet das ab). --apply entfällt, und devkit project-migrate endet jetzt mit Exit 2 und nennt devkit init. Das Lauf-Log liegt jetzt unter ~/.onedot-devkit/project-init.log, das devkit doctor liest.
  • Die Maintainer-Testschicht ist nur noch Rust: jede tests/*.sh-Suite, tests/all.sh, tests/test-lib.sh und tests/lib/ sind gelöscht, jede Suite lebt als Rust-Integrationsziel weiter (die vier rust-targets-N.sh-Wrapper und der test-sandbox-Scanner entfallen ohne Port), und devkit maint test-prep [--suite <target>] [--shard i/n] führt sie aus. CI, der Release-Preflight, npm test und tools/ci-cleanroom.sh rufen es auf; in diesem Checkout gibt devkit run test-prep.sh --affected-only jetzt devkit maint test-prep --suite <target> aus tests/affected-map.txt aus, ein Zielprojekt behält sein bash tests/all.sh --suite unverändert.
  • Alle 57 Maintainer-Werkzeuge laufen jetzt als versteckte Befehle unter devkit maint <name>. Ihre Shell-Dateien sind gelöscht, Repository-Hooks, CI, Tests, Skills und Quality-Scanner rufen das Binary auf, und die eindeutigen alten Namen funktionieren weiter über devkit run <name>.sh.
  • Jeder ausgelieferte Hook läuft im Binary. Die letzten 25 Shell-Dateien unter content/hooks/ und hooks/ sind gelöscht, hooks.json trägt an jedem Eintrag ein nativeCommand, und devkit sync verdrahtet in Claudes Settings und in Codex' Hook-Config <home>/current/bin/devkit hook <name> — der Schalter DEVKIT_NATIVE_HOOKS ist weg, weil kein Skriptpfad mehr zur Wahl steht. Jede Entscheidung, die ein Skript getroffen hat, ist pro Fall aufgenommen (Prozess-Ausgabe plus die Dateien, die er hinterlässt) und wird in CI gegen das Binary nachgespielt. Für dich ändert sich am Prompt nichts: SessionStart-Hinweis, Guards, Advisories und ihre Kill-Switches behalten Namen und Wortlaut.
  • /index schreibt den od:context-imports-Block in AGENTS.md, wenn ein Projekt keine CLAUDE.md hat, und lässt ihn in CLAUDE.md, wo eine existiert. Claude Code liest AGENTS.md samt @-Imports seit 2.1.277 in jedem Ordner ohne CLAUDE.md (hier gegen 2.1.278 geprüft), Codex und OpenCode lesen die Datei ohnehin — ein neues Projekt bekommt also eine Instruction-Datei statt einer pro Runtime. Projekte mit vorhandener CLAUDE.md bleiben unverändert. Wo eine Session AGENTS.md gar nicht liest — Claude Code unter 2.1.277, erste Session nach dem Upgrade, Bedrock/Vertex/Foundry, Hooks aus — ist die dokumentierte Brücke eine CLAUDE.md mit @AGENTS.md.
  • context-drift-check.sh prüft AGENTS.md genauso wie CLAUDE.md auf tote Referenzen, doppelte @-Imports und eine Datei, die nur den managed Block enthält.
  • devkit ist ausschließlich das kompilierte Rust-Binary: der Bash-Einstieg, seine lib/-Runtime und jede content/scripts/*.sh-Hilfsdatei sind gelöscht. devkit sync, devkit run, devkit hook und die Automationsbefehle behalten ihre Namen, und devkit run <name>.sh löst <name> jetzt auf den nativen Subcommand des Binaries auf statt auf ein Shell-Skript. Ein Rechner, der das ausgelieferte Artefakt fährt, braucht keine Rust-Toolchain; wer aus einem Checkout baut, schon.
  • Releases liefern ein signiertes Tarball pro Plattform-Target (od-<version>-<triple>.tar.gz) mit einem latest.json.targets-Index, und devkit sync wählt das Host-Target aus, statt auf jeder Maschine dasselbe Linux-x86_64-Archiv zu prüfen.
  • devkit bin-reconcile, der prime-run-Lebenszyklus und die Orca-Hälfte von wave-prep laufen nativ, und Hooks und Statusline rufen das Binary statt content/scripts/*.sh.
  • install.sh baut das Binary aus einem Checkout, das kein bin/devkit mehr mitbringt (dann ist eine Rust-Toolchain nötig), sodass eine Quell-Installation denselben Einstiegspfad nimmt wie ein Release.
  • devkit has script <name> antwortet aus der Dispatch-Tabelle des Binaries, sodass ein Skill-Guard wie devkit has script research-cli.sh weiter funktioniert; devkit path script <name> hat keine Datei mehr zurückzugeben und schlägt geschlossen fehl. Das Quality-Gate führt backlog-lint und den Design-Token-Check aus dem Binary aus, statt sie bei fehlender Skriptdatei zu überspringen.
  • devkit run test-prep.sh --affected-only und --since <ref> grenzen nativ ein: die Ableitung aus tests/affected-map.txt, die --Ausnahme, das Ausblenden der Pfade einer parallelen Session, der CodeGraph-Fallback und der Changed-Tests-Notnagel behalten ihre exakte Ausgabe (AFFECTED_MODE:, AFFECTED_SCOPE_DROP:, AFFECTED_UNAVAILABLE:); eine Map-Zeile mit drei Feldern ist ungültig und schlägt wie bisher geschlossen fehl.
  • Die PreToolUse- und UserPromptSubmit-Hooks laufen im Binary (devkit hook pretool|prompt): der Shell-Dispatcher und seine 16 Policy-Skripte unter content/hooks/ sind gelöscht, jede Entscheidung ist durch den aufgezeichneten Hook-Korpus festgehalten, und ein Bash-Aufruf zahlt 22 ms Hook-Zeit statt 155 ms. Der Background-Wait-Guard blockt jetzt den zweiten Sleep-Poll einer Session, nachdem er beim ersten gewarnt hat (DEVKIT_SKIP_BG_WAIT_GUARD=1 schaltet beides ab).
  • devkit project-migrate bereinigt keine alten npx-ai-setup-Projekte mehr: die .ai-setup.json-Manifest-Phase, der Inhalts-Sweep und --force sind weg, und devkit sync entfernt keine npx-ai-setup-Hook-Kopien mehr aus ~/.claude/settings.json. Reste wie .ai-setup.json und die kopierten Template-Dateien entfernst du von Hand.
  • devkit design-inventory (--init/--check/--find/--show/--design-claude) baut pro Stack ein Komponenten-Inventar aus dessen eigenen Deklarationen (Liquid-Schema, Blade-@props, Twig-Blocks, ein Nuxt-Registry-Kommando) plus used_by aus Codegraph, dem Liquid-Graph oder einem Pattern-Scan, gesteuert von einem Rezept .agents/design-inventory.json; die Ausgabe .agents/context/component-inventory.json ist gitignored, weil used_by sich pro Maschine unterscheidet. /index führt es vor dem DESIGN.md-Fill aus und liest es statt der fünf größten Komponenten-Dateien; index --check/--map decken es ab, --find/--show antworten mit einer Zeile pro Treffer statt dem ganzen JSON, und pen-design sowie die Stack-Bundles prüfen vor dem Zeichnen, ob es aktuell ist.
  • Jeder delegierte Agent — /delegate, prime-agent, /wave — startet jetzt mit einem gedeckelten (8 KB) Context-Pack aus .agents/context: Run- und Testbefehle, Konventionen, Critical Gotchas und ein DESIGN-/design-inventory-Zeiger für UI-Dateien, dem Auftrag vor dem Credential-Scan vorangestellt (DEVKIT_CONTEXT_PACK=0 schaltet es ab). Der Testing-Abschnitt von STACK.md nennt jetzt den Befehl, den test-prep tatsächlich ausführt, mit einem node-losen Fallback nach der test:unit/test:ci-Präferenz, statt nur package.jsons scripts.test zu lesen; /test und /debug drucken bei NO_TESTS_DETECTED denselben dokumentierten Befehl, statt einen zu raten. Codex' Prompt-Hook ruft jetzt wie der Claude-Hook einen passenden Critical Gotcha ab, jeder Subagent wird auf die Critical-Überschriften verwiesen, und das Review-Paket trägt jetzt ebenfalls das Projekt-Context-Pack.
  • Der SessionStart-Kontext-Hinweis greift jetzt auch, wenn /index den Kontext eines Projekts als veraltet markiert hat (mit Grund) oder Kontext-Marker ungefüllt gelassen hat (mit Anzahl und erster Datei), nicht mehr nur bei Alter oder fehlendem Codegraph-Index. SubagentStart injiziert das ~7,2-KB-i-have-adhd-Regelwerk nicht mehr in jeden Subagenten — Subagenten-Output liest der Hauptagent, nicht du; der Hook heißt jetzt subagent-context, und adhd-subagent bleibt ein stiller Alias für Settings, die vor der Umbenennung geschrieben wurden.
  • pi kann jetzt implementieren (read/bash/edit/write im eigenen Child-Worktree auf gpt-5.6-sol/medium), sodass ein kleiner Spec nicht mehr auf Primes Orca-Start und kalten Build wartet; der dsh-Pin wandert auf 0.1.5-rc.3, nachdem 0.1.5-rc.1 beim Plugin-Laden starb (es startet wieder). runtime-route implement --spec liest Effort/Risk/Class eines Specs und wählt die Runtime — hohes Risiko zu claude/codex, leichte Arbeit zuerst zu pi/dsh, alles andere zu prime dann pi —, merkt sich eine Runtime, die nicht gestartet ist, und überspringt sie 24 h lang, und /spec-work dispatcht jetzt darüber statt über eine feste Kette und nennt die gewählte Runtime in der COMPLETED-Zeile.
  • Ein Diff von pi, prime, codex oder dsh wird jetzt von einem nativen Claude-Plan auf der Review-Stufe geprüft (von opus auf sonnet medium gewechselt); ein von Claude selbst geschriebener Diff behält den eigenen Sitz von review-runtime.sh. Ein kleiner Advisory-Befund wird direkt nach dem Review-Beleg als ein Folge-Commit behoben, statt nur protokolliert zu werden.
  • Der Dev-Build von devkit kompiliert nicht mehr auf Opt-Level 2: ein kalter Test-Build fällt von 270 s auf 42 s CPU (gemessen am 2026-09-23), was jeder Delegate-Worktree bei jedem Dispatch zahlt. Primes Orca-worker-start-Grenze fällt von 120 s auf 30 s — ein beantworteter Start kommt in ~10 s zurück, und ein stiller antwortet nie, sodass die alte Grenze den Headless-Fallback nur verzögerte.
  • package.json wird in Rust gelesen (serde_json) statt über node -e, sodass test-prep, lint-prep und das Quality-Gate auf einer Maschine ohne node nicht mehr "nichts" antworten. test-prep, review-prep, der Post-Tool-Hook und Context-Fill teilen sich jetzt ein Test-Pfad-Prädikat, statt sich uneins zu sein, was als Testdatei zählt. delegate-return wendet die Änderungen eines Delegates als einen git diff --binary über jeden getrackten Pfad an statt pro Datei, sodass ein Konflikt mitten im Apply nicht mehr einen Teil der Dateien angewendet lässt und den Rest nicht.
  • devkit runtime-route leitet die Wahl jetzt aus nativen Provider-/Modell-/Effort-Katalogen plus expliziter Auswahl und persönlicher Policy ab statt aus einer festen Stufentabelle; pi löst Provider aus dem eigenen Katalog und der eigenen Auth statt aus einem fest verdrahteten openai-codex-Sitz, und die Autopilot-Kernregeln behandeln getippte und transkribierte Absicht gleich bei der Wahl zwischen direkter Arbeit, Delegate oder Wave.
  • Die Wave-Planung merged Append-only-Registries (tests/affected-map.txt, maint/commands.tsv, tools/gate-affected-map.tsv) mit merge=union und überspringt Overlap auf jedem Pfad, den .gitattributes so markiert: ein Plan, der nur wegen Registry-Append-Konflikten 7 Waves brauchte, braucht jetzt 3.

Behoben

  • Das Quality-Gate wird rot, wenn backlog-lint, docs-locale-check, builtin-wiring-check, docs-drift-check oder comment-continuation fehlschlagen; das native Gate hatte nur deren grüne Ausgabe weitergereicht und QUALITY_GATE_PASSED über einen roten Scanner gedruckt.
  • devkit off und devkit unlink entfernen die Codex-Skill-Links und den verwalteten Block in Codex' AGENTS.md; der native Materialize-Lauf hatte diese Pfade aus state.json fallen lassen. Ein verweigertes devkit on lässt devkit aus, statt an ohne Runtime zu melden.
  • /pen-design speichert über printf 'save()\nexit()\n' | pen interactive --app desktop --in <datei> und schließt einen Canvas-Zyklus erst mit geänderter md5/mtime der .pen; design-status meldet einen Stempel, den die App zeigt, die Datei aber nicht trägt, als UNGESPEICHERT statt UMGESETZT. Der alte Weg open -a Pen + ⌘S konnte ein fremdes Fenster oder gar nichts speichern (#98, #103).
  • design-verify misst Badge-Hintergründe, Ränder und Icon-Füllungen, nennt zu jeder NICHT GERENDERT-Farbe den Node-Typ, bricht bei einem --selector ohne Treffer ab und sagt, wenn die Befunde eines Frames ohne Theme nur von einer Breite stammen (#99, #105, #106).
  • Die /pen-design-Referenzen dokumentieren die Guillemet-Konvention für Beispieldaten, drei pencil-API-Fallen (Unknown editId, leeres n.text, _-Suffix von Copy()), den Browser-Node-Weg zur exakten Live-Import-Breite und den update-festen Pfad ~/.onedot-devkit/current (#100, #101, #102, #104, #107, #108).
  • devkit run <name> und devkit path script <name> nehmen einen Script-Namen ohne .sh auch auf einer ausgelieferten Runtime an, und strenges Spec-Authoring behandelt verify: judgement: <judge> als Richter statt es als Kommando auszuführen (#109).
  • Der Implement-Lauf von pi wird nicht mehr bei 900 s als untätig abgebrochen: sein Textmodus druckt nur die finale Antwort, was bisher wie Stille wirkte und einen Lauf killte, der schon hunderte Zeilen geschrieben hatte.
  • Ein transienter „please try again"-Fehler eines Providers (beobachtet beim Provider openai-codex) wird jetzt erneut versucht, statt als auftragsbedingter Fehler eingestuft zu werden — das hatte bisher Retry und Hop übersprungen und die fertige Teilarbeit liegen gelassen.
  • devkit maint spec-wave-approve blockiert nicht mehr fälschlich auf einem Spec, der auf main abgeschlossen wurde, während ein übrig gebliebener Worktree ihn noch als Draft führte, auf einer laufenden Wave-Slice, deren Name nicht spec-<id> war, auf dem Scratch-Tree eines Prime-Implementers oder auf .memsearch//.claude/agent-memory*/-Buchhaltungspfaden — vier verwandte Fehlblocks in einem Wave-Lauf.
  • Hilfe- und Usage-Texte von devkit nennen bei jedem nativen Befehl jetzt devkit <name>, nicht <name>.sh, jetzt wo der Shell-Parity-Corpus weg ist.
  • design-verify leitet die dritte Inset-Breite aus der eigenen breitesten max-width der Seite ab (+240, 1,5× der breitesten Frame als Boden) statt aus einem festen 1,5×-Multiplikator, sodass ein selbstgepolsterter fluider Abschnitt den Check nicht mehr besteht (Closes #131).
  • Die eigenen .claude/agent-memory*/-Notizen eines Reviewer-Subagenten entwerten --verify-input-sha nicht mehr und verwerfen keinen ganzen Review-Durchlauf mehr (Fixes #130).
  • Codex kann sein eigenes eingefrorenes Review-Paket jetzt aus einem verlinkten Wave-Slice-Worktree lesen; der Guard nahm nur .git/od-spec aus, nicht .git/worktrees/<name>.
  • pi läuft mit demselben Hook-Manifest wie Claude und Codex, inklusive Guard gegen destruktive Befehle, sobald mit devkit config pi on aktiviert (Spec 543).
  • /wave merged einen Slice jetzt über devkit wave-prep reintegrate statt einer manuell gepflegten Abfolge, und erkennt eine Zeile, die eine merge=union-Registry sonst stillschweigend aus einer veralteten Slice-Basis wiederbeleben würde.
  • /spec-work baut sein Readiness-Pack (Dateien, Symbole, Caller, betroffene Suites, Verify-Ziele) beim Start gegen die aktuelle Basis neu auf, nicht nur beim Authoring (Specs 612, 613).

🚀 Neue Funktionen ​

  • wave — reintegrate a slice in one deterministic call (9eb6d69)
  • spec-work — readiness pack regenerated at /spec-work start (Spec 613) (3e05daa)
  • tools — cargo installs and audits through rustup on Linux (Spec 611) (d123194)
  • pi — devkit hook bridge for pi via compiled manifest (Spec 543) (37cbe0c)
  • spec — spec-readiness resolves every path and verify target (Spec 612) (1597ae3)
  • tools — recommended cb tier with GitHub access preflight (Spec 553) (9d57ef1)
  • mcp — pi as MCP target with pi-mcp-adapter provisioning (Spec 537) (99bfb73)
  • maint — deterministic tool-review subcommands (Spec 606) (579e206)
  • release — preflight before any push, bound to a private run (Spec 609) (cbe08f8)
  • spec — derive a Risk floor before granting the review waiver (e19115b)
  • spec — earned review waiver holds for wave and delegated diffs (ea15809)
  • rules — prepared project tools are required steps in every project (Spec 537) (1ddda33)
  • sync — pi as opt-in runtime target with a managed AGENTS.md block (Spec 536) (1c4b63c)
  • maint — content-budget --list (Spec 610) (98f2380)
  • gate — active specs with dead references redden the quality gate (5f3964d)
  • maint — reference-ledger decide and lift (Spec 608) (e05bd52)
  • pen-design — keep the canvas inventory current and implement from it (Spec 602) (3004aa0)
  • spec — strict authoring blocks a verify command that cannot run (Spec 579) (6aad7bb)
  • maint — claude-changelog delta and stamp subcommands (Spec 607) (a98f15c)
  • test — reuse a green suite result while its inputs stay unchanged (Spec 578) (af65ef1)
  • maint — tool-pin-audit names foreign packages and newer installs (Spec 605) (c592e1a)
  • wave — slice-retry resends the brief and standing orders (5f45585)
  • wave — slice-dispatch appends the standing orders to every brief (a16a3ad)
  • wave — slice-dispatch refuses a spec whose verify names a dead test target (ac9e477)
  • design — design-inventory reads the Pen canvas components (Spec 601) (742f7c2)
  • index — keep a cumulative retrieval-savings ledger (Spec 573) (944cdda)
  • gate — scan the distributed payload for secrets (Spec 561) (715e6a5)
  • maint — spec-outcome measures whether a completed spec held (8a893cc)
  • usage-report — filter to interactive current-version sessions (768ea2c)
  • maint — usage-trend compares the last usage snapshots (4cfd44d)
  • eval — report negative deltas and ablate steered tools (Spec 572) (cf833e5)
  • wave — name supervisor and implementer per slice at the cost gate (919251e)
  • routing — smart runtime routing with native Pi provider selection (36cb1d2)
  • install — install.sh and the SwiftBar shim move into the binary (366e6df)
  • delegate — pi reaches codegraph through pi-mcp-adapter (a3e199a)
  • delegate — every worktree delegate gets the codegraph index (6c7d45e)
  • delegate — pi implement gets 3600 s; --continue-from resumes a cut-off run (3e656ee)
  • review — cross-vendor Sonnet reviews, small findings fixed at once (a2715c4)
  • review — dispatcher records review rounds; prep and finish read them (b7018bb)
  • init — guide the project setup at a terminal (Spec 586) (343a2dd)
  • cli — devkit init replaces devkit project-migrate (d904b0d)
  • delegate — pi implements, dsh pin boots again (6ac8adc)
  • agent-browser — delta snapshots, load-state wait, aarch64 Chrome route (c97098f)
  • agent-browser — launch with --no-webmcp (10b9512)
  • hooks — trust the pasted Orca dispatch in wave slice worktrees (Spec 582) (d1255f1)
  • routing — resolve known task roles without Jev (7a9d157)
  • parity — parity-fixture edits frozen fixtures as text (da6e9c2)
  • delegate — keep unattended Claude runs going past status turns (251a4f5)
  • rust-only — sanctioned boundary for Python extensions (68c776f)
  • routing — scope native Jev runtime discovery to eligible targets (38ddaaf)
  • delegate — add read-only Pi tasks through Codex OAuth (2894d26)
  • review — bind explicit policy context to frozen reviews (8d47da4)
  • project-migrate — drop the npx-ai-setup legacy migration (Spec 569) (cbff4ce)
  • spec — hand off /spec-work into a fresh session (f885185)
  • support — one shared helper module and sha2 for SHA-256 (346a706)
  • evaluation — scaffold the native Jev client crate (Spec 571) (5e5e313)
  • review — reviewer seat runs medium, low-risk diffs step to low (83bc465)
  • routing — escalate the Claude fix loop to Opus 5.5 before Fable (86afef1)
  • maint — native skill-lint checks the frontmatter itself (b5fc8b3)
  • jev-route — bounded native runtime inventory for route picks (e203936)
  • routing — step Opus efforts down one level for Opus 5.5 (c2aad95)
  • skills — read a new model's vendor docs in devkit-claude-changelog (61fdee2)
  • maintainer — add replayable verification and learning loop (d8b23b2)
  • tools — ci-cleanroom.sh runs the Rust workspace like the CI test shard (Spec 560) (706845f)
  • hooks — delete the shell hook dispatcher and its 16 policy scripts (77ca518)
  • evaluation — transcript-failures lens ranks the turns where the human pushed back (d0390e1)
  • hooks — entries run devkit hook; repeated sleep-polls are blocked (Spec 560) (3d4b156)
  • test-prep — native affected-mode narrowing (3d1a609)
  • delete the shell runtime — the compiled binary is the only devkit (Spec 560) (89ff391)
  • devkit — last content/scripts dependencies run through the binary (Spec 560) (a72658c)
  • devkit — worktree-setup, backlog-lint and reuse-detect run natively (Spec 560) (e04360e)
  • cli — port remaining entry subcommands (db6703f)
  • port plugin reconciles to native devkit (1523247)
  • sync — native CLAUDE.md managed-block cleanup in materialize (e07d4f0)
  • wave — port Orca preparation natively (707f814)
  • prime — port runner lifecycle to Rust (c291b08)
  • spec-meta — --digest <file>; skills stop sourcing prep-lib.sh (796e3f5)
  • install — build the binary from a checkout that ships no bin/devkit (Spec 560) (1e115ba)
  • hooks — wire the statusline to the devkit binary (Spec 560) (82ab921)
  • sync — native devkit bin-reconcile (f4db2f6)
  • sync — select host release target (2b34a74)
  • release — build per-target artifacts (f92c1f6)
  • dev-sync — ship the compiled binary as the dev version's bin/devkit (3086dd7)
  • hooks — call the devkit binary instead of content/scripts (Spec 560) (7a61b96)
  • sync — native runtime hook wiring; devkit sync runs without the shell entry (87febf1)
  • sync — native devkit_env_reconcile (settings.json .env merge) (aa448ad)
  • rust — delete the shell runtime, make the binary the devkit entry (Spec 560) (4742736)
  • delegate-exec — dispatch prime into the native runner, drop the shell bridge (bafeead)
  • devkit — native config source arms and apply; decouple cli/run/resolver parity (Spec 559) (5799283)
  • rust — native context-fill and design-fill, drop the sourced_library_call bridge (6d0b77b)
  • entry — route devkit run through the native subcommand first (Spec 520) (b7e6203)
  • rust — native delegate panel, drop the shell bridge (fc8eb5d)
  • rust — port the remaining doctor shell_fn callers natively (a4fe098)
  • rust — native doctor MCP shadow and mcp_doctor checks (1dc968d)
  • rust — native review-runtime dispatch, drop the shell bridge (055c2ab)
  • rust — native delegate-visible orchestration, drop the shell bridge (d6119cf)
  • rust — native delegate-exec argv dispatch, narrow the shell bridge to prime/panel (37076e4)
  • rust — native hook prompt policies and policy scripts, drop the shell bridges (e1d6b6f)
  • rust — native review-runtime probe, drop the delegate-exec bridge (8b637c4)
  • rust — native Orca detect in delegate-return, drop the shell bridge (879c8d6)
  • rust — run spec completion validity in-process, drop the shell helper (1e05d64)
  • rust — native codegraph-first stack coverage, drop the detect-stack bridge (645e8dd)
  • jev — add route, verify and find probes with vendored TypeSafe docs (4c1bc72)
  • jev — document route, verify and find probes; exclude vendored docs (4d69513)
  • rust — native prime-run argument/status half, narrow the bridge (Spec 552) (f661361)
  • rust — native index-prep and workspace-run, remove the bridges (Spec 547) (46185c4)
  • rust — native doctor check, remove the lib-sourcing bridge (Spec 550) (6b3d4fb)
  • rust — native wave-prep filesystem/preflight/accept half (Spec 546) (445f090)
  • rust — native quality-gate scanner selection/execution, remove the bridge (Spec 545) (0ff8afd)
  • rust — native spec-work-prep halves, narrow the bridge (Spec 549) (7927172)
  • rust — native share-prep rendering, remove the bridge (Spec 548) (9139626)
  • rust — native test-prep runner, remove the shell bridge (Spec 544) (9012bbb)
  • release — per-platform binary build and release-chain fixture (Spec 542) (6b7b6c6)
  • rust — native project-migrate (Spec 541) (58633fa)
  • rust — native sync transaction (Spec 540) (a84a4d7)
  • rust — native codex/opencode materialization (Spec 539) (c154d0e)
  • rust — native MCP reconcile/unreconcile and state writers (Spec 538) (6cf12bd)
  • rust — native remote verify/fetch (Spec 535) (f7b19d5)
  • rust — native skills subsystem (Spec 534) (1ce52fb)
  • rust — native doctor (Spec 533) (23d78e1)
  • rust — native tools subsystem (Spec 532) (562c451)
  • hooks — native advisories and codegraph-first (Spec 530) (db7b8ac)
  • rust — native codex/opencode rendering (Spec 529) (e01cbea)
  • rust — native MCP manifest/desired/actual/status (Spec 528) (065da71)
  • rust — native state/config read and typed mutations (Spec 527) (56b157a)
  • rust — native version safety, rollback selection, markers, activation (Spec 526) (6cd9b02)
  • rust — native runtime resolver (Spec 525) (c701d70)
  • hooks — native devkit hook layer behind DEVKIT_NATIVE_HOOKS (Spec 521) (65db067)
  • index — make AGENTS.md the instruction file /index writes (62f735b)
  • tools — add the dsh spec fan-out runner (fbb0e90)
  • pen-design — the adapter says what a canvas variable becomes in code (940200b)
  • stack-nuxt — generate the component inventory the adapter asks for (f9cf07c)
  • pen-design — make the build order a gate — components before pages (6086153)
  • rust — complete partial port batch 499 (Spec 499) (a15ffe8)
  • rust — complete partial port batch 498 (Spec 498) (cc98e44)
  • rust — native parity batch 497 (Spec 497) (fb640e3)
  • rust — native parity batch 496 (Spec 496) (fe9c074)
  • rust — native spec-validate-prep (Spec 495) (9ef0019)
  • rust — native parity batch 494 (Spec 494) (bbe27e6)
  • rust — native parity batch 493 (Spec 493) (2282068)
  • rust — native parity batch 492 (Spec 492) (33591f8)
  • rust — native parity batch 491 (Spec 491) (f098de5)
  • rust — native parity batch 490 (Spec 490) (61753a7)
  • rust — native parity batch 489 (Spec 489) (61b1394)
  • rust — native parity batch 488 (Spec 488) (7981ac4)
  • rust — native parity batch 487 (Spec 487) (145d42f)
  • rust — native parity batch 486 (Spec 486) (ae433cc)
  • rust — native parity batch 485 (Spec 485) (7352f33)
  • rust — native parity batch 484 (Spec 484) (0283fab)
  • rust — native parity batch 483 (Spec 483) (6fce53e)
  • rust — native parity batch 482 (Spec 482) (ce700c6)
  • rust — native parity batch 481 (Spec 481) (d645909)
  • rust — native parity batch 480 (Spec 480) (ab0a8f7)
  • rust — native parity batch 479 (Spec 479) (bec6f8c)
  • rust — native parity batch 478 (Spec 478) (1a355cc)
  • rust — native brief-gate and friction-hint-prep (Spec 477) (72f9878)
  • rust — native spec-candidate-dir effect parity (Spec 476) (ee9cc63)
  • rust — native budget-prep and spec-reject-log effect parity (Spec 475) (8ac9742)
  • pen-design — seed the constant canvas structure instead of redrawing it (bb70f73)
  • rust — native spec-id-next effect parity (Spec 474) (ee158f2)
  • devkit — hard-wire migrated scripts into the run path (d8ba1e7)
  • quality — fail a change that introduces a raw colour beside a token source (500381a)
  • rust — native parity batch 473 (Spec 473) (89536ec)
  • rust — native parity batch 472 (Spec 472) (2737a9d)
  • index — point at DESIGN.md from the CLAUDE.md context block (0e6d60a)
  • pen-design — read one section of a frame instead of the whole thing (c143a2c)
  • rust — native parity for runtime-route, learning-capture-prep, orca-detect (Spec 471) (2087a8a)
  • tools — probe the contracts a version pin cannot see (8d02efb)
  • rust — native fast-path bridge and caller switch (08347d2)
  • rust — native parity for 12 scripts (Specs 466-469) (785fc75)
  • rust — native devkit detect-stack parity (Spec 465) (e3e683b)
  • rust — native devkit model-route parity (Spec 464) (9e85244)
  • rust — parity-verified devkit CLI core (Spec 461) (c36ee3d)

🐛 Fixes ​

  • release-prep — digest check reads only the target version's entry (63c72e1)
  • release-prep — preflight runs the audit gate before the tag (83b4075)
  • fix(release-prep,wave): point preflight fails at /devkit-docs, tidy form (a9db4de)
  • maint — docs-drift-check takes pages after --include-dirty (3c21d98)
  • wave — catch lines merge=union revives from a stale slice base (604e1ce)
  • spec — spec-readiness counts a symbol without callers as zero (c324432)
  • spec — spec-readiness reads verify commands only from Steps and ACs (Spec 613) (643af22)
  • prime-run — an unfinished run exits 7 instead of passing its patch (e52e71d)
  • wave — reintegration builds every test target, not only the binary (d9c4763)
  • tests — pi_mcp sets SyncEnv.pi_dir added by Spec 536 (6972a24)
  • rules — fit the mandatory-tools rule into the always-on byte budget (6f4e36b)
  • wave — one owner per slice rule; retries carry current standing orders (e8e7027)
  • prime — fall back locally when the caller is itself an Orca worker (54b62fa)
  • spec-work — give the implementer report an absolute, outside-tree path (a29bf46)
  • review — a fix round after a same-day BLOCK gets its delta package (Spec 608) (05ea416)
  • prime — place Prime worktrees under the main checkout from a slice (2ffb1de)
  • maint — run-cost reports a Codex transcript as unavailable, not zero (14b01e4)
  • tests — route content/pi/* to the refs suite (Spec 536) (0ed38f7)
  • wave — accept tests the whole slice, not the coordinator's session scope (2429978)
  • delegate — every session-less runtime resumes as a fresh round (0df22a7)
  • tests — route tools/gate-affected-map.tsv to a suite (Spec 561) (5d67b79)
  • spec — spec-work-prep overlap follows the wave approval skips (Spec 537) (e58819f)
  • delegate — run a fresh Prime round on resume instead of refusing (f78a29b)
  • spec — a spec completed on main no longer blocks wave approval (Spec 537) (c90b467)
  • spec — recognise Prime scratch trees regardless of HOME (e9a6a55)
  • spec-drift — plugin and agent-memory state is not scope drift (806e403)
  • spec — wave approval no longer fails closed on live slices (21f186d)
  • telemetry — count external reviews and keep hint conversions (61b879c)
  • hooks — let Codex read review packages in linked worktrees (31e4f2f)
  • pen-design — measure the third width above the layout max-width (e62388c)
  • review — agent-memory writes no longer void the review input SHA (0aae1dc)
  • docs — repoint tool evidence and workflows page to devkit <name> (c16d340)
  • cli — help and usage name devkit <name>, not <name>.sh (59463d9)
  • review — keep Claude verdicts out of plan mode (e1b9530)
  • install — reuse support::proc, rustfmt; test-prep floor follows the corpus cut (8007fee)
  • codegraph-first — a $VAR or ~ read path is outside the root checkout (b24deea)
  • tests — drop borrowed format! args clippy denies (c73f30e)
  • context-drift — report scripts a project skill runs that are gone (2d98901)
  • pen-design — design-seed stops when Pen.app fronts another canvas (a3a2d78)
  • pen-design — every stack adapter describes the naming key (11c39da)
  • delegate — treat a provider's 'please try again' as transient (97e42d8)
  • spec-work — keep the pre-move review-verdicts text intact (aca6e1e)
  • init — use support::git::git_toplevel, not a private copy (0f2e46f)
  • delegate-visible — never idle-abort pi (Spec 584) (0402aa5)
  • ci-cleanroom — print the compiler error when the build fails (512c32d)
  • usage-report — range-check Retry-After HTTP-date fields (Spec 581) (cc23eef)
  • spec-review-prep — deleted markup no longer demands a Frontend review (Spec 581) (43dbfde)
  • hooks — single-quoted regex is not a secret-env glob (81878f9)
  • maint — content-budget answers --help instead of rejecting it (7d92052)
  • spec-review-prep — package carries Progress Log decisions (Spec 577) (7aea6a9)
  • skills — tools-changelog surface grep and pre-install probe (87c0ff3)
  • maint — tool-pin-audit resolves codex, prime-agent and cargo honestly (94d5ba3)
  • rules — move the adhd precedence line into the adhd ruleset (0a5d3d0)
  • delegate — show why a visible delegate failed (Spec 590) (3fa4255)
  • spec-deps-check — a candidate no longer overlaps its own spec (c82bcd7)
  • spec-validate — split verifies with 2>&1 and a cd prefix (e4ae9cd)
  • hooks — put rustup cargo ahead of a distro cargo in Claude shells (5ee7656)
  • maint — docs-drift-check answers --help (763bed7)
  • wave — mark slice worktrees, name the trust prompt, skip plugin state (Spec 582) (bb9a055)
  • test-prep — detect Cargo projects (Spec 582) (a5b8841)
  • sync — read MCP state from $HOME/.claude.json (16022ff)
  • hooks — style reminder honors the typed stop adhd mode switch (c511c4c)
  • hooks — index-gap-hint refreshes its listing after the index changes (9e7f885)
  • wave — create slice worktrees in the main checkout's repo (64c91d6)
  • devkit-eval — list trials in name order before validating them (9a83e06)
  • spec-reconcile — keep Author as provenance, allow adding it (7031448)
  • codegraph-first — stay silent on reads outside the root checkout (2182133)
  • orca — drop the open-changed consumer row review no longer has (d854bf9)
  • spec-review-prep — completion-validity tolerates out-of-scope drift (6dd99e4)
  • fix(spec-review-prep,spec-drift-check): name and block nested-checkout scope (3161d52)
  • spec-review-prep — reanchor DIFF_BASE on a wave slice at main's tip (943b75b)
  • spec-update — allow green-at-head with an --ac-correction fix (4d758d6)
  • spec-update — rebind stale digest and preserve Author on reconcile (48ebac6)
  • orca — stop agents from opening editor tabs (18033eb)
  • delegate — dedicated exit for an expired Codex credential (a22f120)
  • delegate — delete the delegate branch with its worktree on removal (30c1cc6)
  • post-edit-lint — scope the shfmt sweep to real .sh/.bash operands (ed54ef0)
  • secret-env-guard — allow native --env-file loaders, mask literal heredocs (efda79f)
  • spec-work — resolve review runtime separately from implement runtime (3b32e41)
  • fetch-task — name the PAT fallback for a failing cb browser login (59423de)
  • pen-design — guard against pencil MCP ignoring filePath (7a6646d)
  • pen-design — remove frame-commit-check commit-msg hook (ad6df53)
  • pen-design — fix K\d project-criteria cap and name shape-first reuse (cd673dc)
  • rust-only — --accept takes a path relative to the working directory (Spec 576) (64b4343)
  • test-runner — prove a planted per-target temp dir is refused (Spec 570) (cfbe9de)
  • rule-effect — count a timed-out arm as invalid explicitly (Spec 569) (2f99e47)
  • maint — kill the whole process group when a harness timeout fires (Spec 569) (5552ce4)
  • test-prep — check-run evidence no longer waits for python3 (Spec 574) (aafd55e)
  • review — preserve Claude eligibility and scope architecture signals (27fad3e)
  • parity — isolate implicit runtime from the parent agent (d0a75cc)
  • spec-review-prep — the review package carries the ACs and their evidence (a4b926e)
  • parity — two recordings stop pinning the day they were taken (a27c098)
  • spec-work — implementer returns its report as text when the write is refused (Spec 570) (dbd05ba)
  • delegate — stream oversized Claude briefs through stdin (e0f2a74)
  • skill-usage-audit — read transcript dates with GNU stat too (5ff77f9)
  • agent-eval — skip files that vanish during the manifest hash (a9a8fd7)
  • ci-cleanroom — install rustfmt, clippy and the npm tree like CI (c1a0c6c)
  • content-budget — keep the skill-ceiling arm on one line (895185b)
  • ci-cleanroom — pass the prebuilt binary as an absolute path (acb5281)
  • ci-cleanroom — run tests/all.sh like the CI shard by default (7764301)
  • pin-check-reminder — emit the note on empty or non-JSON stdin (3d03bca)
  • docs-drift-check — name the de/ twin on the finding line (675201e)
  • content-language — only an unresolved scan root with rows is red (1cc1213)
  • content-budget — classify --measure-text from the candidate text (64f45b1)
  • skill-lint — port the shell gate's contract to devkit maint (Spec 569) (32bb42d)
  • wave-probe-check — port the rule engine and self-test (Spec 569) (13a1ce0)
  • docs-locale-check — check German-only and unlinked German pages (Spec 569) (8eee5c9)
  • tests — point skill references at real rule headings (5d1dbbe)
  • tests — re-baseline fixtures to the native devkit maint names (Spec 569) (08b68cf)
  • ci-cleanroom — put the home bin dir on PATH like the runner (20b98fb)
  • parity — statusline case renders reset times in UTC (ecaac69)
  • release-cleanroom — run spec-lifecycle-check through the built binary (Spec 569) (4938d1a)
  • parity — gate and budget-prep tests follow the native scanners (Spec 569) (81e3a7c)
  • parity — hook_corpus resolves json_value through the devkit crate (Spec 571) (2fca139)
  • parity — retrieval-savings help names devkit maint content-budget (Spec 569) (4d51344)
  • spec-finish — slice receipt dates on a char boundary (Spec 569) (422b88c)
  • gate — four red scanners back to green (Spec 571) (8a9f03d)
  • last30days — reject JSON false and null like jq -e did (5a122c1)
  • spec-review-prep — hash the strict JSON file, not its path (Spec 571) (0015198)
  • maint — compat-pen-file-format tolerates pen exiting before stdin (010baec)
  • prime-run — re-run every gate before publishing a patch (af18127)
  • cli — stop advertising project-migrate --force and .ai-setup.json (2aefc04)
  • hooks — a one-line sed print is not a whole-file read (621dff2)
  • spec — say who writes Approved-Digest after spec-meta --digest (Spec 577) (2985c09)
  • spec-validate — name a Step continued on indented lines (d911ac7)
  • spec-update — review-route headers are contract metadata (8a28a52)
  • run-cost — resolve the session transcript from the invoking checkout (dab9ce3)
  • review-prep — the design signal no longer fires on formatter_class= (ed75ea1)
  • cli — sync and tools answer --help instead of running (9c5a813)
  • spec — call model-route with its required model|effort argument (1ba2aae)
  • tests — skill-create fixtures follow the Opus 5.5 effort mapping (cfb9f58)
  • plugins — install i-have-adhd over https, not the github ssh source (e2c1b97)
  • spec-update — route revisions by /spec's full triggers, not a stale copy (042ad89)
  • spec-deps — a non-matching glob no longer aborts the overlap scan (cc0e92c)
  • content — restore both quality gates on committed main (5ec23e6)
  • parity — match the switches listing and the reverted help texts (a6f476a)
  • tool-pin-audit — drain the uv inventory instead of grep -q (Spec 569) (a20b620)
  • content — pay two budget overages the stubbed gate had hidden (bbbef65)
  • maint — bring the 57 shell tools and their call sites back (Spec 569) (71464f4)
  • maint — keep the release signing key 0600 and gone on every path (a8aef9e)
  • maint — drop the unspecified trial-preflight restore (11d6797)
  • skills — name validator-parsed delta labels; Python checks follow the project (4ecaea8)
  • eval — reject provisional Claude CLI stream usage (b7d0cde)
  • codex-guard — stop three false positives and a false fallback (32aa04c)
  • parity — follow the committed help and stop-gate texts (Spec 569) (6d0b117)
  • hooks — announce gate lets a turn wait on a background task (21be72a)
  • parity — refuse to record when the shell producer is gone (360ce9c)
  • hooks — codegraph-first no longer blocks an in-place sed edit (c5b2a34)
  • maint — point dev-sync hints at devkit maint dev-sync (Spec 569) (e7e4573)
  • maint — map opus/fable aliases to Opus 5.5 and Fable 5.1 (e6db45a)
  • spec-review-prep — a prefix filter needs no child process (Spec 569) (33d76e5)
  • maint — a blank line at end of file is a CI whitespace failure (e43d37a)
  • sync — the staged binary is not source drift (Spec 568) (a083061)
  • parity — git's own housekeeping is not a hook decision (570a2eb)
  • spec-review-prep — feed a child's stdin beside the read, not before it (Spec 568) (3ca5fa9)
  • delegate — host-skew preflight checks every code-mode host the CLI can load (6e6da22)
  • cli — a child that exits before reading stdin still counts as answered (0b9b9f3)
  • cli — keep SIGPIPE ignored, exit 141 quietly on a gone stdout reader (97e36a1)
  • last30days — feeding jq survives a jq that exits before reading (7f92cb9)
  • skills — pull visits registry skills in name order (5c274a4)
  • tests — prefer the rustup toolchain over a distro cargo (3faaa92)
  • sync — ensure_config creates DEVKIT_HOME and names a failed write (bd808fd)
  • devkit — gate reds relay scanners, off/unlink own the codex links (5b7cf78)
  • dev-sync — build the binary before staging it (Spec 560) (3e590de)
  • route native reconcile changes (a7ebfe0)
  • hooks — classify a Bash read per pipeline stage in codegraph-first (7aa3dc7)
  • rust — resolve the checkout for a debug binary built outside the tree (e2faa3f)
  • delegate — count the run's process-tree CPU as liveness in the idle watchdog (4e309d0)
  • tools — register cargo; repair the codex execpolicy evidence (a423d2b)
  • delegate — drop the worktree branch with it, prune settled branches at dispatch (ef85e64)
  • delegate — resolve dsh patch paths under content/dsh, not content/scripts/.. (7761d75)
  • review-prep — drop the content/scripts guards on the native design-slop/reuse calls (e399abd)
  • harness — robust idle watchdog and repo-marker; close delegate stdin (27bfb20)
  • delegate-visible — close stdin so codex does not block; decouple script_parity_472/473/475/476/477 (Spec 522) (36f78d3)
  • delegate — forward DEVKIT_DELEGATE_BOUND into fresh Orca terminal (98eebd7)
  • wave — match filename-prefix globs in the accept ownership check (Spec 554) (d25e01c)
  • delegate — find the mirror baseline by subject, not at HEAD (6ce2ca5)
  • delegate — return a delegate's committed work, not only its working tree (4299501)
  • rust — drop the unverified 471/481/488 conversions pending a reliable recorder flow (288a0c1)
  • pen-design — save through pen interactive, check the file on disk (8ef6e7e)
  • design-verify — measure non-text colours, name root and width gaps (e119d70)
  • spec-validate — treat verify: judgement: <judge> as a judge (308dc4e)
  • runtime — resolve a script name given without .sh (55abbce)
  • rust — avoid the clippy chunks_exact lint in the parity recorder (d806164)
  • rust — address independent-review findings (21d0e84)
  • rust — match the shell on Linux for home display and JSON errors (34ec1a3)
  • rust — make mcp_reconcile_parity env-hermetic (b79d852)
  • hooks — clear the clippy lints in the native guard (4e48229)
  • rust — format the parity test the batch merges left unformatted (1cb72f0)
  • rust — clear fmt and clippy regressions from the fan-out merges (840a621)
  • spec-validate — the probe's own scratch files are not a mutation (73b53b7)
  • pen-design — K2 reads the disabled flag, design-fonts separates its groups (9c9a57c)
  • rust — restore the minutes in the statusline's GNU date fallback (d28f16b)
  • pen-design — measure after hydration and name the element behind a value (2669d7a)
  • shopify-liquid — fail JSON inside a double-quoted HTML attribute (92bd8b7)
  • rust — remove fake library subcommands and fix a spec-review-prep unbound var (466e0a7)
  • lint-prep — the LINT_SCOPE_EMPTY branch was dead under set -e (Spec 482) (92f13bf)
  • mcp — an optional server's conflict no longer blocks the whole runtime (fdd99a0)
  • cli — let read-only resource commands wait for the mutation lock (7156fb5)
  • mcp — the blocking conflict names the two commands that clear it (19bc235)
  • hooks — graph-first as a gate, and every advisory keyed per agent (4cde37a)

⚡ Performance ​

  • test-prep — derive affected Rust targets from references, not workspace (44335cb)
  • wave — a low-effort slice skips the second implementer agent (428dcd5)
  • wave — one retro per wave instead of one per slice (3a6b1e6)
  • wave — a slice never runs the full suite (018780f)
  • wave — stop serializing specs on append-only registries (b129c5b)
  • build — drop opt-level 2 for the devkit package in dev (7c22768)
  • prime-run — worker-start bound 120 s → 30 s (ade0d19)
  • perf(prime,tests): stop five parallel runs from starving each other (ffaf813)
  • sync — run the tools upgrade after the mutation lock is released (85a2680)

♻️ Refactoring ​

  • rust-only — devkit spawns bash only where a shell is the contract (5f7e0ca)
  • usage-report — rustfmt the scratch-path normalize pattern (3cd6a16)
  • delegate — rustfmt the credential marker check (4c18b6d)
  • hooks — rustfmt the comment-mask guard in codex_guard (b05d33a)
  • routing — remove Jev and retire its specs (6d0536d)
  • spec-review-prep — rustfmt the nested-checkout and reanchor fixes (30a65e5)
  • delegate — rustfmt the branch-removal assertion (259f88e)
  • tests — share the suite support module through parity (7c7b7ed)
  • parity — rustfmt quality_gate_parity (a4b246b)
  • tests — rustfmt helper_dedup (0487c8f)
  • scripts — a–o helpers resolve onto crate::support (481f4d9)
  • core — core, doctor and hooks helpers resolve onto crate::support (8b2ba64)
  • scripts — p–r helpers resolve onto crate::support (Spec 571) (704148f)
  • scripts — spec_* and s–z helpers resolve onto crate::support (9c2f396)
  • skills — cut drift and duplicate prose from knowledge skills (9a2fa14)
  • skills — cut drift and duplicate prose from orchestration skills (43ef501)
  • skills — cut drift and duplicate prose from tool and stack skills (1017f17)
  • spec — cut duplicated prose from the spec skills (ade40d1)
  • tools — drop the last maintainer references to content/scripts (20c54e8)
  • release — inline the OpenSSL resolver into build.sh (Spec 560) (05788b8)
  • rust — satisfy clippy -D warnings in the newly decoupled parity tests (74cf3c2)
  • rust — run check-run in-process from test-prep (42c6ba2)
  • rust — auto-register script subcommands via build.rs (b6dde4c)

📖 Dokumentation ​

  • reference — decision rows for the 51 specs completed since 531 (a967a5a)
  • changelog — cover wave 1's 20 specs in Unreleased (139fac1)
  • wave — provider quota ends the implementer route in a slice (Spec 613) (f701334)
  • wave — one bounded fix past the review cap runs without asking (2451f27)
  • workflows — re-set drift marker after the Risk-floor note (058a11c)
  • spec — specs 612/613 resolve and hand over a readiness pack (170294c)
  • spec — name the derived Risk floor where /spec writes the waiver (ccc0d6f)
  • spec — simple specs skip the implementation review, in waves too (738a619)
  • agents — the prepared tools are required workflow steps (512d9eb)
  • workflows — re-set drift marker after review of today's skill edits (1701ab3)
  • wave — a refused nested implementer is fixed by the supervisor (92887fe)
  • wave — brief bounds review overruns, dependencies and setup waits (884c684)
  • wave — reintegrate after worker_done and start unblocked specs early (e401a7f)
  • wave — brief carries the four facts wave-1 workers asked for (2b44ad8)
  • devkit-docs — Unreleased gets the head, highlights filtered for users (4babeb4)
  • changelog — lead the Unreleased entry with the Rust move and routing (963c117)
  • spec — move Spec 553 tests off the retired tools_parity target (0b3d123)
  • tools — review orca 1.4.209 against our call surfaces (b60acdb)
  • tools — point i-have-adhd and memsearch evidence at live consumers (a839d73)
  • design — tighten the pen-design page to what each run writes (4292415)
  • changelog — native command names in skills and docs (d2de3b7)
  • teach devkit <name> instead of devkit run <name>.sh (aa1de29)
  • menu-bar — name the generated plugin without its .sh file name (58a94ee)
  • changelog — install.sh and the SwiftBar shim live in the binary (0ba4d99)
  • pi — record the Pi extensions reviewed and why only one was adopted (b6755a9)
  • sync — drop the shell-era comment block in the sync transaction (Spec 520) (5b30dfe)
  • specs — retarget 537, 543, 553, 561, 573 to the Rust-only code (df4682b)
  • specs — complete Spec 531 (b4252da)
  • changelog — bash-spawn removal and pi continue/bound (4accab9)
  • devkit-issues — format only own files in the shared checkout (15da510)
  • design — the seed names its foreign-canvas stop (a926dea)
  • changelog — today's design inventory, routing and speed work (0e92669)
  • specs — complete Spec 603 (2b2f756)
  • specs — Spec 603 in review, steps and AC evidence recorded (e1e4fd7)
  • design — re-set markers after the pen-design --check wording (393ca80)
  • specs — complete Spec 585 (5557324)
  • specs — complete Spec 587 (d71d255)
  • specs — complete Spec 588 (00e35c8)
  • specs — complete Spec 586 (739cbd0)
  • specs — complete Spec 584 (2ed7e41)
  • specs — complete Spec 591 (4698a3d)
  • specs — complete Spec 600 (71cad32)
  • specs — complete Spec 583 (19d02e2)
  • specs — complete Spec 596 (1c24d0e)
  • specs — complete Spec 593 (9e5a08f)
  • specs — complete Spec 598 (4c24f73)
  • specs — complete Spec 589 (4f35a36)
  • specs — complete Spec 594 (1f0c9e2)
  • specs — complete Spec 599 (8e31cf7)
  • specs — complete Spec 597 (60fcdbe)
  • specs — complete Spec 595 (d1d8d22)
  • specs — complete Spec 590 (2b19a0c)
  • specs — complete Spec 592 (9edb47f)
  • workflows — /spec-work chooses the harness per spec (Spec 604) (531d496)
  • spec — remote-service Steps verify failure paths through a stub (Spec 581) (9ebb467)
  • specs — add draft specs 578, 579, 601 and 602 (2045282)
  • re-set design and workflows markers after Spec 584 (6c11645)
  • design — /index builds the inventory; one command table (Spec 585) (41098c1)
  • specs — 596 owns hooks/prompt.rs for the module visibility (0ab3888)
  • specs — 603 routes light specs to pi and dsh (4fd85aa)
  • prime-agent — trap row for a brief whose premise forbids new files (Spec 594) (8ca8755)
  • specs — add spec 611 for a rustup installer arm on Linux (8f9f78d)
  • specs — add specs 605-610 for deterministic maintainer helpers (3048b33)
  • specs — add specs 603-604 for per-spec implement runtime choice (3fba07d)
  • design — list the files /index and the pen-design setup create (c7fcf82)
  • backlog — park the SwiftBar menu (572940d)
  • specs — add specs 583-600 for design inventory and context pipeline (c2fc2f3)
  • rules — i-have-adhd outranks report templates in the answer (e1ba967)
  • spec — two verify rules from the Spec 580 retro (d864443)
  • conventions — name parity-fixture for frozen fixture edits (07acdea)
  • agent-graph — name the nested-checkout exemption of the read gate (1aec52b)
  • devkit-issues — parallel worktree route and its integration duties (14ab4f6)
  • workflows — re-anchor after spec-update, review and wave edits (0872b8c)
  • content — adopt Opus 5.5 prompting guidance (e29087e)
  • eval — reject broad Jev effort-property batch (e6f4a8f)
  • eval — verify Jev recovery after provider outage (9316fba)
  • eval — retain routing integration and overhead experiment evidence (6972e2a)
  • eval — record green native verification after fixture repairs (2c18d2d)
  • eval — record native review context verification (e97e684)
  • decisions — Spec 570 retro — the review package carries its ACs (bdddf97)
  • evaluation — record catalog and canon delivery trials (35156fb)
  • workflows — acknowledge the corrected delegation reference (235683a)
  • eval — headroom-proxy README names devkit-eval usage (Spec 575) (90ceb99)
  • spec — pre-change recordings come from a base-commit binary (Spec 571) (f6678dd)
  • spec — parity recordings must pin a real-input case per port (Spec 569) (af39339)
  • spec — read SPEC_GATE_FAIL reason=none as telemetry, not failure (3d4f61c)
  • troubleshooting — say that native legacy apply stops before deleting (bd7672b)
  • stop promising a native legacy cleanup that does not run yet (593b937)
  • audit — instruments for implement tier and second opinion on Opus 5.5 (a2b2833)
  • audit — Rust harness overhead pilot and Gortex research (571b362)
  • spec — draft specs 572 and 573 for evaluation accounting (b0e69f6)
  • context — Rust-only and pinned crate allowlist (spec 571) (887f82f)
  • tools — codex host skew via the libexec twin, 2026-09-22 (4793377)
  • audit — CI green on 7f92cb9e, the five CI-only host classes named (9070e23)
  • audit — record the CI-only host classes and the verifying run (58dc740)
  • drop the clean-room section from the reader pages (3582724)
  • clean-room loop in AGENTS.md, tool consumers point at the Rust hooks (af4bf70)
  • audit — rust migration before/after at the Spec 560 end state (9f6ec8a)
  • handoff — native hook entries and the measured before/after (6ba020d)
  • conventions — no new shell — executable logic is Rust (02dfdaf)
  • research — Laya as open-weight judge behind the jev-probe scripts (91b500d)
  • research — ECC research and spec 561 payload secret scan (835ec7c)
  • workflows — re-set the docs-source marker after the skill path edits (Spec 560) (0904f37)
  • changelog — native affected mode, gate reds, off/unlink ownership (e6d0704)
  • handoff — D6 affected mode and the review fixes (09d202a)
  • changelog — has script, path script and the native gate arms (49b0233)
  • describe the binary-only runtime (9aa1b62)
  • delegate — keep the skill under its token budget (3e153ea)
  • workflows — re-set docs-source marker after the prep-lib decoupling of /spec (ee381fb)
  • gate follow-ups for the dev-sync binary and the pen-mcp subcommand (09f1517)
  • rust — handoff START HERE for session 2 (state, in-flight ports, E design) (70c4df8)
  • delegate — a dsh implement cannot commit in a linked worktree (430edb2)
  • rust — handoff START HERE for the next session (state, next steps, method) (62ca153)
  • rust — correct the record — 560 reverted; Codex audit findings and real scope (01edb5a)
  • rust — complete 560, mark 520 executed, record the finished migration (cc927cb)
  • rust — coverage map done; 522's last step is the gated 560 deletion (e6f03fc)
  • rust — full tests/all.sh gate green; record the six fixed reds (a4903b2)
  • decisions — backfill ledger rows for the enforced Rust-migration specs (Spec 523) (35d7b9b)
  • rust — the delegate/review bridges are native; name the remaining bash uses (f656e1b)
  • rust — name the Spec 520 blocker behind cli/run/resolver parity (fdac135)
  • rust — wave 554-558 complete, 5/5 merged; note the remaining live-shell targets (bb2eb84)
  • rust — wave 554-558 progress (4/5 merged) and the two setup fixes (abb8204)
  • rust — record the in-flight 554-558 wave handles (Spec 522) (9c4a2e6)
  • rust — record the 518 full-suite load flake (Spec 522) (73ea4d3)
  • rust — record the 522 enablers, progress and remaining target set (0d07542)
  • audit — Pi harness readiness inspection (a81b362)
  • design — list design-status's unsaved state on the reader page (24a4fd2)
  • changelog — unreleased entries for issues #98-#109 (3cebb87)
  • delegate — dsh reads brief inputs from $HOME, not /tmp (1b8228d)
  • pen-design — name the stable path for update-proof references (8842f29)
  • pen-design — three pencil API traps from the field (416bb20)
  • pen-design — set live-import width with a browser node (502be06)
  • pen-design — document the guillemet sample-data convention (0fd3c3b)
  • workflows — re-anchor the marker after the delegate-visible clarification (878d735)
  • delegate — make the delegate-visible child route explicit (fa94b9f)
  • rust — record wave 1 and the real dispatch route in the handoff (df923b9)
  • rust — close 551 as superseded and correct the handoff (Spec 551) (fe72b71)
  • specs — add spec 553 for cb as a recommended tool (f81e6b9)
  • jev — record the fast-jev-compaction re-check (unchanged, decline stands) (946334f)
  • rust — hand off the integration state to the next session (2c70484)
  • refresh the workflows page marker after the context-fill change (231043f)
  • reference — record the 2.1.275-2.1.278 changelog verdicts (3263f04)
  • design — re-set the docs-source marker after the naming key (40ff5cd)
  • audit — add the next-session handoff runbook (f014efb)
  • audit — record the fully-spec'd remaining plan (507-522) (4be5513)
  • design — re-set the docs-source marker after the build-order review (ee85caf)
  • delegate — record that the HTTP runtime shape is gone, add brainstorm 008 (bb819db)
  • audit — partial ports completed (498/499) (0a9e7cb)
  • audit — record wave 2 (specs 477-497, 62 native modules) (46d994a)
  • audit — close out the rust migration wave (43 native modules) (ce7818a)
  • audit — record spec-id-next (474) in the migration status (f456e9a)
  • audit — full before/after sweep for the 23 native subcommands (653ba0e)
  • audit — close out the read-only rust migration surface (ccfdf65)
  • pen-design — adopt three pen CLI surfaces the skill ignored (56ab38e)
  • how Pen's chat runs on a Claude subscription (1dd3180)

🧪 Tests ​

  • rules — sync from a private payload snapshot, not the live checkout (eb70a74)
  • rules — show devkit sync's output when the sync check fails (dde4d5b)
  • review — a refusal's closed stdin is not a test failure (413520a)
  • support — nested_repo_boundary test survives a stray ancestor .git (a38866f)
  • usage-report — record mode re-records from the native binary (ecbc3c8)
  • retire the shell-parity recording corpus (0ea6481)
  • context-pack — run the fake codex without the host PATH (b4b6642)
  • rules — tooling.md drops the project-migrate line on purpose (615fb52)
  • parity — jq recordings carry Spec 584's design-inventory step (9af1c44)
  • usage-report — normalize scratch paths under any temp root (f5ca916)
  • parity — switches recordings carry the Spec 577 guard text (38ae377)
  • parity — map the recorded adhd-subagent hook to subagent-context (Spec 597) (a72f779)
  • refs — check bare header pointers and fix the two dead ones (4a15b15)
  • delegate — claude_stdin allows the fixed unattended-turn prompt in argv (d457839)
  • usage-credentials — the hint names devkit maint usage-report (Spec 581) (ec19d3a)
  • devkit-eval — make the missing-acceptance case host-independent (04a75cc)
  • affected-map — run crate unit tests for every devkit source edit (dfd4230)
  • rules — accept the deliberate orca row rewrite in the pre-baseline (dc08be6)
  • rust-only — re-record the help fixture for the extension note (c96970e)
  • affected-map — route delegate and review-runtime sources (5d27ddf)
  • cleanroom — stub npm for the captured clean-room script (00effc1)
  • delegate — reproduce oversized Claude brief failure (2315a04)
  • support — gate against new private helper copies (43ccb84)
  • skew recordings carry the host path token, rust-targets slices may skip without cargo (215159d)
  • ci — optimized dev binary, Rust targets in four slices, real suite seconds (4d5de78)
  • rust — wave-prep and doctor fixtures stop reading the runner's arch and PATH (2277c52)
  • rust — the parity mirror never links tree (815ca71)
  • rust — entry fixture pins platform and arch (eeae1f5)
  • rust — hermetic tools fixtures (f9cad37)
  • rust — hermetic project-migrate fixtures (0754655)
  • rust — hermetic index-prep fixtures (a756b36)
  • rust — doctor fixture stubs npm so tool freshness stops reading the host (06efe5d)
  • rust — parity fixtures stop depending on the recording box (Spec 560) (4ec14a5)
  • rust — doctor broken-home fixture dangles a fixed workflow link (166262a)
  • rust — doctor parity fixtures no longer depend on the recording box (49a89cf)
  • fixture runners hand the prebuilt binary to their all.sh copy (a3a1e90)
  • run the survivor suites against the binary, drop the shell-mapped ones (0373eeb)
  • rust — script_parity_507 fixtures no longer freeze $TMPDIR (b21e480)
  • rust — re-record the switches --json runtime fixture (2191768)
  • rust — re-record the switches --json resolver fixture (62a051e)
  • rust — drop the caller's home PATH entries under the sandboxed test HOME (406f24b)
  • rust — mask age_days in the index-prep parity twins (3279d6d)
  • rust — hermetic PATH for the plugin reconcile fixtures (0e3b13f)
  • rust — hermetic PATH for the prime-run parity fixtures (3e08b83)
  • rust — hermetic doctor tools case; the shell twin stays on the shell (f52b71e)
  • rust — decouple runtime_hooks_parity from the live shell (110b2d9)
  • coverage — map env-block and release to native targets (685035c)
  • release — make the release chain standalone and Rust-gated (Spec 560) (3f3b361)
  • parity — mask calendar dates and derived digests in 475/490 (c10e83b)
  • rust — decouple index_prep_parity from the live shell (normalised modes/checkout/version) (f7afe18)
  • rust — drop orphaned index_prep fixtures after reverting its decoupling (3b0f5e6)
  • rust — decouple index_prep_parity from the live shell (018e51a)
  • rust — decouple doctor_parity (present-green; script-count lines remain a 560 item) (ae99f86)
  • rust — decouple prime_run, wave_prep and workspace_run parity from the live shell (9dbd10d)
  • rust — decouple script_parity_507 from the live shell (3cfdbfc)
  • rust — decouple skills, spec_work_prep and test_prep parity from the live shell (47d2c09)
  • rust — decouple quality_gate and share_prep parity from the live shell (dsh) (1c23195)
  • rust — decouple agents and agents_materialize parity from the live shell (39af197)
  • rust — decouple script_parity_499/514/515/516 from the live shell (7692d2a)
  • rust — decouple script_parity_498; mask path-dependent prompt byte count (f4ca0b5)
  • rust — decouple script_parity_494/495/496/497 from the live shell (5394452)
  • rust — decouple script_parity_487/489/490/491/493 from the live shell (e9ce2c3)
  • rust — decouple script_parity_480/482/483/485/486; tokenise repo root in recorded_shell (178173c)
  • gate — add tests/coverage-map.tsv for Spec 522 AC2 (cc0e284)
  • gate — clear the six pre-existing tests/all.sh reds (f6d9286)
  • rust — decouple project-migrate and generic script parity from the live shell (Spec 558) (f4b8d78)
  • rust — decouple state, sync, sync_transaction, rollback and config parity from the live shell (Spec 555) (c6df950)
  • rust — decouple detect-stack, runtime and tools parity from the live shell (Spec 557) (3b29cb8)
  • rust — decouple remote and openssl parity from the live shell (Spec 556) (f8971d8)
  • wave — use mk_sandbox in the glob case to stay under the raw-temp budget (e80b059)
  • rust — decouple mcp parity targets from the live shell (Spec 554) (11047f0)
  • rust — decouple model_route parity from the live shell (Spec 522) (f540aac)
  • rust — decouple script_parity 471/481/488 via the sequence recorder (Spec 522) (5883502)
  • rust — decouple script_parity 478/479/517/518/519 from the live shell (Spec 522) (19ec34f)
  • rust — give the parity recorder a call-order id API (bc57916)
  • rust — decouple script_parity 471/481/488 from the live shell (Spec 522) (d8fbd94)
  • rust — decouple nine more script_parity suites from the live shell (Spec 522) (e5f4c17)
  • rust — decouple script_parity 474/484 from the live shell (Spec 522 pilot) (890026b)
  • rust — add the parity recorder foundation for the Spec 522 migration (75e94f0)
  • rust — make the parity gate host-independent on Linux (7c237cb)
  • rust — gate the rust workspace in tests/all.sh (770f48c)

🏗️ Wartung ​

  • release — cross-build Intel macOS on the Apple Silicon runner (c7e520b)
  • run GitHub Actions only for a release (7bb7ebb)
  • rust-only — accept the pi hook adapter and its node test (Spec 543) (dee8a13)
  • usage — snapshot 2026-09-23 and mark the expectations ledger (5b9f636)
  • gitignore the component inventory in this checkout (Spec 586) (cb43489)
  • tools — bump eight tool pins and review six external rows (f70b8c1)
  • ledger — record the Opus 5.5 review, escalation and measurement rows (c283f3b)
  • index — refresh STRUCTURE and fix the placeholder grep (d32bf25)
  • maint — follow Spec-569's deleted shell tools in tests and maps (Spec 569) (3e8ab6e)
  • ledger — resolve Opus 5.5 effort step-down (98a5b79)
  • ledger — record Claude Code 2.1.280 verdicts (d444263)
  • cache rust/target per shard so the devkit crate is not rebuilt from zero (a7e6e93)
  • cache the cargo workspace across test shards and installer-smoke (9247807)
  • spec — complete Spec 560, record the executed switch, repoint the tool registry (ec6b788)
  • switches — point every script and lib source at its native reader (c9d9b04)
  • release — publish all platform artifacts (b422680)
  • install pinned CI tools through the compiled devkit binary (1a290e6)
  • rust — complete 559 (native config sources + apply) (c85ed50)
  • rust — author 559 (native config sources + apply) and 560 (delete shell runtime) (Spec 520) (d3d7180)
  • rust — author the 554-558 wave input for the remaining parity targets (Spec 522) (418f8d3)
  • specs — close 538-542/544-550/552 by owner decision (9416a26)
  • rust — add 551 (sync content contract) and 552 (prime-run bridge) (d178b96)
  • rust — add 549/550 (spec-work-prep, doctor checks) bridge slices (d4d5ab7)
  • rust — add 548 (share-prep bridge removal) (42dbd6d)
  • rust — add 546 (wave-prep) and 547 (index-prep/workspace-run) bridge slices (b0f2b1a)
  • rust — add 545 (native quality-gate runner), bridge removal (d59c702)
  • rust — add 544 (native test-prep runner), bridge removal slice (e7e3219)
  • rust — add 540/541/542 (sync transaction, project-migrate, release chain) (44712e3)
  • specs — close 525-529 by owner decision (8f0576e)
  • specs — close 530/532-535 by owner decision (f16ca4d)
  • rust — add 538 (MCP reconcile) and 539 (agents materialize) (ceb4834)
  • rust — add 530/532-535 (hook advisories, tools, doctor, skills, remote) (2d97004)
  • rust — add 529 (native codex/opencode rendering), chain slice (e021588)
  • rust — add 528 (native MCP read/normalize), chain slice (ab43f42)
  • rust — add 527 (native state/config), chain slice (8e5d8ff)
  • rust — refresh the 526 contract digest after the Out of Scope change (2928d93)
  • rust — add 526 (native sync/rollback core), supply-chain slice (349fa7d)
  • rust — add 525 (native runtime resolver), first slice of the CLI-core chain (565eb68)
  • specs — close the remaining five specs by owner decision (78fb16b)
  • specs — close the implemented specs by owner decision (09644f8)
  • specs — complete the 44 implemented rust parity specs (639c950)
  • rust — log the Spec 521 review-fix-4 round and landing (b3ba075)
  • repo — move the maintainer context into AGENTS.md (a14722b)
  • rust — ignore the hook-pilot prototype build dir (Spec 460) (7edf054)
  • rust — add 523 (audit-gate enforcement) and note it in the audit (f5a164d)
  • rust — add 522 (test layer migration) (81a973d)
  • rust — add specs 507,514-521 for the remaining runtime (next-session migration) (a9df45c)
  • rust — add 498-499 (complete partial ports) (0fefe85)
  • rust — add batches 496-497 (review engines) (2bbe354)
  • rust — add 495 (native spec-validate-prep) (94ffc5a)
  • rust — add batches 493-494 (read-only engines) (7a3a3ae)
  • rust — add batches 491-492 (4a466e0)
  • rust — add batches 488-490 (163e33e)
  • rust — add batches 485-487 (read-only) (9e348af)
  • rust — add batches 483-484 (58979c7)
  • rust — add batches 480-482 (read-only) (11659c6)
  • rust — add batches 478-479 (read-only) (6fd55f4)
  • rust — add 477 (native brief-gate, friction-hint-prep) (434cb36)
  • rust — add 476 (native spec-candidate-dir) (f697826)
  • rust — add 475 (native budget-prep, spec-reject-log) (9e6cc36)
  • rust — add 474 (native spec-id-next, effect parity) (5b5f68c)
  • rust — add batches 472-473 (read-only close-out) (500beed)
  • rust — add batch 471 (runtime-route, learning-capture-prep, orca-detect) (cf67026)
  • rust — add batches 466-469 and the candidate triage (c8b31a1)

No commit type ​

  • Refactor type alias for metric closures; format test conditional (6b55e98)
  • Spec-604: pi dispatch row, spec completed (55a8e06)
  • Spec-585 followup: pen-design names the exit-2 path of --check (18fd094)
  • Spec-585: adapter inventory line names the recipe on its first line (db1e94c)
  • Spec-584/600 followups: skip malformed inventory rows, fresh pointer test (c7ba79d)
  • Spec-591 followup: strip the documented block only on NO_TESTS_DETECTED (4625554)
  • Spec-600 followup: realign the graph.json row in agent-graph (9d3b8af)
  • Spec-596 followup: review context stays inside its 4096-byte budget (5ee849b)
  • Spec-593 fix: node-less fallback follows the test-script preference (5f3d62b)
  • Spec-593 fix: STACK.md names the npm test script without node on PATH (661657d)
  • Spec-590 followup: query codegraph references in 500-name slices (d82c50c)
  • Spec-587: index --check and --map cover the design inventory (a316aec)
  • Spec-604: /spec-work dispatches the implementer runtime-route picks (9ca6677)
  • Spec-595: package.json is read in Rust, not through node -e (917d241)
  • Spec-596: gotchas reach Codex, subagents and the review package (e537284)
  • Spec-603: runtime-route picks the implement harness per spec (96918d0)
  • Spec-584: /index builds the component inventory before the design fill (a524fcb)
  • Spec-581: completed — Rust migration closeout (09d8f22)
  • Spec-586: one agent-state list; the inventory is gitignored (2463d55)
  • Spec-585: bundles, pen-design and the adapter name design-inventory (c3b0526)
  • Spec-594: one test-path predicate for four callers (fa7d920)
  • Spec-581: evidence after fix round 7 (fa93f5c)
  • Spec-581 fix round 7: Retry-After accepts an HTTP date (f1ec537)
  • Spec-581: evidence after fix round 6 (cff1b85)
  • Spec-581 fix round 6: Blob retries honor Retry-After (89b92df)
  • Spec-581: evidence after fix round 5 (c97838f)
  • Spec-581 fix round 5: retry Blob requests without concatenated bodies (6a164c2)
  • Spec-588: design-inventory --find/--show, the rule queries it first (634adc4)
  • Spec-583: devkit design-inventory builds the component inventory (fa33b2f)
  • Spec-600: context imports name STRUCTURE.md, graph row names Nuxt (93968ec)
  • Spec-591: /test and /debug print the documented test commands (846016b)
  • Spec-589: every delegated agent starts with the project's context (7c54780)
  • Spec-592: SessionStart names context /index flagged stale or left unfilled (063b08a)
  • Spec-581: evidence after Spec-598 touched usage_report.rs (c6ebec4)
  • Spec-598: one stack table and one codegraph extension list (7a73249)
  • Spec-593: STACK.md names the test command test-prep actually runs (504b4ed)
  • Spec-599: delegate-return applies a delegate's changes all or nothing (72a50c3)
  • Spec-590: read codegraph's database with a pinned, bundled rusqlite (40162b2)
  • Spec-597: subagents no longer receive the ADHD ruleset (43eb849)
  • Spec-577: completed after Performance review PASS (cc5a8ba)
  • Spec-581: evidence after fix round 4 (7ae71a1)
  • Spec-581 fix round 4: usage-report reads the private Blob store (d3868c7)
  • Spec-577: evidence after fix round 1b (d707349)
  • Spec-577 fix round 1b: heredoc test name stays out of the task_wait filter (481d9da)
  • Spec-577: hook cost measurement and evidence after fix round 1 (a74a115)
  • Spec-577 fix round 1: a heredoc body is not a wait loop (889df74)
  • Spec-577: in review (2198823)
  • Spec-577: evidence, all steps and ACs green (05c9325)
  • Spec-577 Steps 1-4: deny wait loops on harness background tasks on first sight (2cbe7ec)
  • Spec-581: in review (6d274ec)
  • Spec-581 fix round 3: ci-cleanroom keeps its native help; AC2 scope (9e87976)
  • Spec-581: in review (c93e9d9)
  • Spec-581: evidence after fix round 2 (dae01a3)
  • Spec-581 fix round 2: maint_parity tables for the three new commands (630e8a3)
  • Spec-577: start (052e16a)
  • Spec-577: draft — block wait loops on harness background tasks (0e694d7)
  • Spec-582: completed — review PASS after one fix round (dbc9f3e)
  • Spec-581: evidence, all steps and ACs green (68f8031)
  • Spec-581 fix round 1: devkit-usage calls devkit maint usage-report (36fd3dd)
  • Spec-582 fix round 1: empty budget flag values are a usage error (c14543d)
  • Spec-581: all steps green (f962311)
  • Spec-581: start (80e5e92)
  • Spec-581: file list covers dispatch, sha1 and parity tables (63fa985)
  • Spec-582: acceptance evidence, all ACs green (0501820)
  • Spec-582 Step 4: A/B measurement of the wave time-budget signal (1d124e0)
  • Spec-581 Step 5: devkit menubar renders the SwiftBar menu, the plugin is a shim (5839939)
  • Spec-581 Step 7: rust-only exempts reasoned categories, baseline is empty (ef9fba3)
  • Spec-581 Step 2: devkit maint usage-report replaces tools/usage-report.mjs (31eaed3)
  • Spec-581 Step 3: devkit maint corpus-probe replaces both Python copies (9e854b0)
  • Spec-580: completed — move to devkit/specs/completed (dfa3a7c)
  • Spec-580: evidence after fix round 2 (36d989a)
  • Spec-580 fix round 2: bound JSON nesting in the verify scanner (b735423)
  • Spec-581 Step 4: the release chain test runs natively (fe0065c)
  • Spec-580: evidence after fix round 1 (7d2d3e2)
  • Spec-580 fix round 1: record temp file is random and removed only when created (f709279)
  • Spec-580: all steps and ACs green, in review (ec3c770)
  • Spec-580 Steps 1-6: the last live Jev probes become native binaries (bc49731)
  • Spec-581 Step 1: devkit maint ci-cleanroom replaces tools/ci-cleanroom.sh (67cb575)
  • Spec-582 Step 1-3: sweep reports elapsed time against a budget (fafc801)
  • Spec-582: start — wave time-budget signal (1f58f94)
  • Spec-581 Step 6: delete the dead non-Rust scripts (b5d2add)
  • Spec-581: drop the dependency on 580 for Steps 1-6 (ce93a1d)
  • Spec-581: draft — Rust migration closeout (75d1d2d)
  • Spec-580: start (e3d18f7)
  • Spec-580: draft — last Jev probes become native binaries (ac4f552)
  • Spec-576: completed — move to devkit/specs/completed (12360cf)
  • Spec-576: evidence after fix round 1 (84734aa)
  • Spec-576 fix round 1: rust-only scans from the worktree top (877219f)
  • Spec-576: steps and acceptance evidence, in review (5ad506f)
  • Spec-576: contract — the parity table and recordings the gate needed (acd8cc8)
  • Spec-576 Step 5: name the rust-only gate in the Rust-only convention (287e223)
  • Spec-576 Step 4: route non-Rust changes to rust-only, watch its baseline (6fe8c5e)
  • Spec-576 Step 3: run rust-only as the gate's 15th scanner (79889f2)
  • Spec-576 Step 2: freeze the 78 existing non-Rust files as baseline (b63df61)
  • Spec-576 Step 1: add devkit maint rust-only scanner (7b55630)
  • Spec-576: contract — reconcile scanner count after Specs 569/570 (cc32ab3)
  • Spec-570: completed — move to devkit/specs/completed (e17ad2c)
  • Spec-570: evidence after fix round 1, in review (2ad5909)
  • Spec-570: contract — Step 2 owns the private temp-root helper (69cb33a)
  • Spec-570 fix round 1: the runner's temp root is private and exclusive (f50089e)
  • Spec-570: acceptance evidence after the Step 2 fix, in review (b376774)
  • Spec-570 Step 2 fix: pin the tracked evaluation target, not a foreign one (e494b05)
  • Spec-570: steps and acceptance evidence (fec1d8d)
  • Spec-570 Step 8 fix: AC11 heading, dual help examples, runner case (17eec67)
  • Spec-570: contract — Steps 2 and 8 own the eleven files they touched (dbd0187)
  • Spec-570 Step 8: delete the shell test layer, repoint to test-prep (222c1da)
  • Spec-570 Step 3: fold the 15 gate-tool suites into maint_parity (82b044e)
  • Spec-570 Step 2: devkit maint test-prep runner, retire test-sandbox (9d1c566)
  • Spec-570 Step 1: record the shell suites' verdicts in suite_parity (fbcc3b6)
  • Spec-570 Step 5: port the evaluation/telemetry suites to Rust targets (5d9163b)
  • Spec-570 Step 4: port the Node/design skill-script suites to Rust (b7d65ca)
  • Spec-570 Step 6: port the content/reference suites to Rust targets (1fb998c)
  • Spec-570 Step 7: port api and context-tier suites to Rust targets (4dbfaf8)
  • Spec-575: completed — move to devkit/specs/completed (2b0003b)
  • Spec-575: steps and acceptance evidence, in review (af5cb10)
  • Spec-575 Step 6 follow-up: clippy-clean the devkit-eval targets (c84427f)
  • Spec-575 Step 6: delete the Python evaluation tools (324770f)
  • Spec-575 Step 5: point evaluation callers at devkit-eval (ced8df0)
  • Spec-575 Step 4: native devkit-eval usage (221ff70)
  • Spec-575 Step 3: native devkit-eval compare (2bc5cf3)
  • Spec-575 Step 2: native devkit-eval inventory and check (9499122)
  • Spec-575 Step 1: record devkit-eval Python observations (fad6647)
  • Spec-571: completed — move to devkit/specs/completed (d4e21a4)
  • Spec-571: acceptance evidence after fix round 1 (be53a8e)
  • Spec-571 fix round 1: jq 1.7 number printing and honest twins (e1f0b03)
  • Spec-570: contract — re-cut against the landed 568/569/571 tree (569ab43)
  • Spec-569: completed — move to devkit/specs/completed (132343e)
  • Spec-571 Step 9: jq-missing cases compare against jq-present runs (9afe79d)
  • Spec-569 fix round 1: credential rotation, clean-room build, timeouts (2577e78)
  • Spec-569 Step 8: delete the 57 shell tools, every consumer native (ed61682)
  • Spec-569: contract — Step 8 owns every consumer of a deleted script (02a6f40)
  • Spec-571: contract — Step 9 covers every jq-missing and jq-naming case (64e6448)
  • Spec-571 Step 5: the 15 script parsers give way to json_value (70bc5fa)
  • Spec-571 Step 7: the spec-lifecycle jq programs become Rust (b4b38b3)
  • Spec-571 Step 6: index-prep and the spec scripts parse and print once (bc4fc40)
  • Spec-571: contract — Step 5 owns the five nested Json callers (bd736be)
  • Spec-571 Step 8: the remaining jq programs become Rust (1ad2b0d)
  • Spec-569 Step 4: Slice C ports discriminate — all 57 tables green (8a15c52)
  • Spec-571 Step 2: mask ISO clocks and invented names in jq_parity (3736309)
  • Spec-571 Step 2: mask time-derived bytes in the index snapshots (3e6d90a)
  • Spec-569 Step 2: Slice A ports are real (b7831ea)
  • Spec-569 Step 3: Slice B ports discriminate, secrets written private (23ab29f)
  • Spec-569 Step 5: Slice D reference ports discriminate (e45ea10)
  • Spec-569 Step 6: Slice E ports discriminate, dev-sync works privately (342e440)
  • Spec-571 Step 3: the hook path runs without jq (a15cd3a)
  • Spec-571 Step 4: core JSON on the facade, jq gates gone (0362407)
  • Spec-571 Step 2: record with jq alone, re-record on the jq-era tree (f102c09)
  • Spec-569 Step 7: Slice F ports discriminate and write privately (8b3844f)
  • Spec-569 Step 2 (part): Slice A pairs recorded against the shell tools (9f33d27)
  • Spec-571 Step 2: record jq-era observations before any migration (b0aa480)
  • Spec-571 Step 1: serde_json facade with jq 1.7 reader and printer (22fdf06)
  • Spec-569 Step 1: discriminating recorder harness (d2c0e8c)
  • Spec-571: contract — every JSON parser and jq child onto one facade (acc2c2f)
  • Spec-574: completed — review PASS (Security), 5/5 steps, 4/4 ACs (ce07a3a)
  • Spec-569: contract — recordings must reject stubs, secret writers private (7532f89)
  • Spec-574 Step 5: docs generator counts 0 scripts when content/scripts is absent (634bb24)
  • Spec-574: contract — Step 5 keeps the docs generator working without content/scripts (8a52333)
  • Spec-574 Step 4: delete check-run.py and shopify-schema-lint.py (eba1f43)
  • Spec-574 Step 3: pipeline-bench-run trusts the sandbox natively (a78539d)
  • Spec-574 Step 2: regression test for spec-checks without python3 (f4f9589)
  • Spec-574 Step 1: spec-checks runs verifies through native check-run (0b9e1e2)
  • Spec-574: contract — spec-checks and pipeline-bench-run stop spawning python3 (2044f06)
  • Spec-576: contract — A rust-only gate turns a new non-Rust executable red (7642e70)
  • Spec-575: contract — The maintainer evaluation CLI becomes a native devkit-eval binary (e203ef4)
  • Spec-569: record the blocking state and the review's findings (bc3cbea)
  • Spec-568 retro: wire the two lessons the run paid for (7673a45)
  • Spec-569: record the run's lifecycle state (4f41ae5)
  • Spec-569 Step 8: a ported compat probe is a module, not an executable (38a8ce4)
  • Spec-569 Step 8: delete the 57 maintainer shell files and repoint every consumer (6542198)
  • Spec-568: move the completed contract into completed/ (e32462f)
  • Spec-569 Step 3: port Slice B, the CI, release and registry tools (ca06bcc)
  • Spec-569 Steps 5+6+7: port Slice D, E and F to devkit maint (3796d18)
  • Spec-569 Steps 2+4: port Slice A and Slice C to devkit maint (8a1c23f)
  • Spec-569 Step 1: name each recorder test after the slice that owns it (58ef2e6)
  • Spec-569 Step 1: record every maintainer script before it is ported (9844b0d)
  • Spec-568: close three guard holes the sections review found (40b3a96)
  • Spec-568: close the delta round's follow-ups (c1b7956)
  • Spec-568: close the review's five blocking findings (3e06c1a)
  • Spec-568 Step 5: the Codex guard rows name their subcommand in full (e95a990)
  • Spec-568 Step 7: the 25 shipped hook scripts are gone (5d4abf9)
  • Spec-568 Step 6: the wiring writes the binary, unconditionally (0cac621)
  • Spec-568 Steps 2/4/5: parity fix round — every recorded hook replays (92656d9)
  • Spec-568 Step 3: PostToolUse group ported natively (8293851)
  • Spec-568 Step 2: SessionStart group ported — parity fix round pending (f67d73a)
  • Spec-568 Step 4: Stop, PreCompact, SessionEnd, SubagentStart, spec-route-probe ported — parity fix round pending (adc06d4)
  • Spec-568 Step 5: Codex guard group ported — parity fix round pending (80ea1f2)
  • Spec-568 Step 1: deterministic fixture commits, hex runs tokenised before digit runs (a2bff12)
  • Spec-568 Step 1: record every shipped hook script into parity fixtures (74d1711)
  • Spec-570: contract — every shell test suite becomes a Rust target, the runner becomes devkit maint test-prep (6e488d5)
  • Spec-569: contract — every maintainer shell tool becomes a hidden devkit maint subcommand (9e3dec5)
  • Spec-568: contract revised — SwiftBar decoupled (owner decision 2026-09-22) (0aee6fd)
  • Spec-568: contract — every shipped hook, the update boundary and SwiftBar run inside the binary (6c4c902)
  • Revert "test(rust): decouple index_prep_parity from the live shell" (b263374)
  • Revert "feat(rust): delete the shell runtime, make the binary the devkit entry (Spec 560)" (36b2964)
  • Revert "docs(rust): complete 560, mark 520 executed, record the finished migration" (be98b95)
  • Spec-531: close review MEDIUM/LOW, record fix round (9fc0406)
  • Revert "test(rust): decouple nine more script_parity suites from the live shell" (d3e06be)
  • Spec-531: cover the caret pin form in the dsh idempotency fixture (4c6005a)
  • Spec-531: record independent review (BLOCK, 3 findings) (c9d57d3)
  • Spec-531: steps and ACs green, in-review (b050b3b)
  • Spec-531: dsh implement (7d80029)
  • Spec-531: fix AC1 verify, add pnpm registry page scope (2873c9d)
  • Spec-453: dsh implement (33aa5d5)
  • Spec-459: dsh implement (9d9804e)
  • Spec-454: dsh implement (08abd8a)
  • Spec-519: dsh implement (18b107a)
  • Spec-518: dsh implement (245a44d)
  • Spec-517: dsh implement (0e03745)
  • Spec-516: dsh implement (1005f9a)
  • Spec-515: dsh implement (9878f42)
  • Spec-514: dsh implement (2164d79)
  • Spec-507: dsh implement (e97a718)
  • Spec-523: dsh implement (b680a42)
  • Spec-460: dsh implement (a343b7c)
  • Add Spec 465: native devkit detect-stack parity (6109cce)
  • Add Spec 464: native devkit model-route parity (cd92839)

v0.40.0 — 2026-09-18 ​

/pen-design kommt als Arbeitsfassung — 203 auf 1.276 Zeilen, zwölf Prüfer, jeder Stack, den wir ausliefern. Specs verlieren zwei Gates: der Start von /spec-work ist die Freigabe, /spec-verify samt UAT-Durchgang ist weg nach 0 Aufrufen über 138 fertige Specs. Ein breiter Prompt kostete 1.760 Hook-Tokens und kostet jetzt ~618. Update mit devkit sync.

187 Commits seit v0.38.0 · Specs 065, 079, 084, 412, 444, 445, 449, 450, 451, 452, 454, 455, 457, 458, 460, 461

✨ Highlights ​

🎨 /pen-design kommt als Arbeitsfassung, auf jedem Stack ​

Der Skill wächst von 203 auf 1.276 Zeilen — die Fassung, die über vier Wochen auf einem laufenden Shopify-Redesign 122 gemessene Befunde geliefert hat — und seine zwölf Prüfer wandern jetzt mit in jedes Projekt, statt in einem Repo zu liegen. Nuxt, Nuxt/Storyblok, Shopware und Laravel kommen neben Shopify auf denselben Vertrag für Tokens, Inventar, Rows und Owner; der Index schrumpfte von 22.372 auf 2.934 Tokens plus 19 Referenzen.

text
node "$(devkit path skill pen-design)/scripts/design-adapter-check.mjs"

🖊️ /pen-design bringt seine Werkzeuge mit — CLI und MCP werden ausgeliefert ​

Der Skill bringt zwei Werkzeuge mit, die jeder selbst besorgen musste: npm i -g @pen.dev/cli von Hand und ein pencil-MCP-Block, handgeschrieben in ~/.claude.json, mit festem Pfad nach /Applications/Pen.app. Auf dem zweiten Rechner lagen 1.276 Zeilen Skill und nichts, womit man sie ausführen konnte. Beides ist jetzt deklariert — die CLI ist im Werkzeug-Manifest gepinnt, und der MCP startet die Server-Binary für die eigene Plattform aus genau diesem Paket, zur Laufzeit aufgelöst statt fest verdrahtet: arm64 wie x64, macOS wie Linux, mit oder ohne installierte Pen.app.

text
devkit sync --optional

Optional bleibt es, weil das Paket 732 MB groß ist (gemessen) — derselbe Grund wie bei mmdc. Pen.app selbst bleibt ein Download von pen.dev, ein Homebrew-Cask gibt es nicht. Ohne laufende App startet der MCP trotzdem und scheitert am ersten Design-Aufruf, statt die Session hängen zu lassen.

Der pencil-Eintrag gilt absichtlich nur für Claude: auf opencode gemessen hat ein Delegate, der ihn bloß geerbt hatte, 5 Tool-Aufrufe und 21,7k Tokens in der ersten Runde dafür ausgegeben, bevor er seinen eigenen Auftrag sah. Das dsh-Overlay spiegelt deshalb nur noch die Server, die auf Codex zielen.

🧰 Alle optionalen Werkzeuge auf einer Seite, mit Preis und Nutzen ​

Neun Werkzeuge werden deklariert, aber nicht installiert — zusammen 2,6 GB — und die einzige Stelle, die sie bisher nannte, war ein Satz im Quick Start, ohne zu sagen, was eines davon tut. Optionale Werkzeuge gibt jedem seinen Arbeitsablauf, seine gemessene Größe und den Schritt, der bei dir bleibt: codex will ein Login, dsh einen Provider-Key, pen ein Abo und Pen.app. Und es sagt, was ohne sie passiert, denn das ist nicht überall gleich — /share verweigert eine Markdown-Datei ohne pandoc, /commit ohne osv-scanner committet und meldet den ausgelassenen Scan.

text
devkit sync --optional

🚪 Der Start von /spec-work ist die Freigabe ​

/spec und /spec-update fragen kein Approve/Refine/Abort mehr — sie schreiben den validierten, reviewten Vertrag, und der Start von /spec-work bindet ihn. /spec-verify und das UAT-Commit-Gate sind mit weg (0 Aufrufe, 2 Dateien über 138 fertige Specs), und ein fehlgeschlagener AskUserQuestion-Aufruf — 28 der letzten 29 in Pens Agent — fällt auf eine Klartextfrage zurück.

text
/spec-work 452

🔄 Tools aktualisieren sich selbst ​

devkit tools --auto-upgrade aktualisiert jedes installierte Tool unter seinem eigenen Kernel-Lock, gedrosselt auf einmal pro 24 Stunden; devkit sync führt es jetzt mit aus (DEVKIT_TOOLS_AUTO_UPGRADE=0 schaltet ab). Sechs Benchmark-Runden beim Bau brachten den nativen Implementer von 29,5 auf 15,3 Minuten.

text
devkit tools --auto-upgrade

🛡️ Ein breiter Prompt begräbt den Turn nicht mehr unter Gotchas ​

gotcha-recall.sh hielt die einzige Ausnahme von der 300-Token-Grenze pro Turn, begründet damit, dass die Zahl der Trigger:-Treffer sie begrenze. Nichts begrenzte sie: ein Prompt mit sechs Critical-Treffern gab 1760 Tokens aus, 5,9× die Grenze. DEVKIT_GOTCHA_RECALL_MAX (Standard 2) begrenzt das jetzt auf ~618; ein zurückgehaltener Eintrag behält seine Markierung und kommt bei einem späteren Treffer — die Grenze verzögert, sie verwirft nie.

text
DEVKIT_GOTCHA_RECALL_MAX=2

🔁 Das Always-on-Regelwerk kommt im Takt zurück, nicht bei jedem Prompt ​

content/hooks/style-reminder.sh gab den gepinnten i-have-adhd-Pre-send-Check bei jedem Prompt neu aus. Jede Kopie kostet ~200 Tokens, das Transkript behält alle, und der N-te Turn zahlt für jeden früheren — gemessen an einer echten Session: 26 identische Kopien. Der Hook gibt jetzt erst wieder aus, wenn die letzte Kopie mehr als DEVKIT_STYLE_REMINDER_TURNS Turns zurückliegt (Standard 5); 0 stellt das alte Verhalten her, ein Tippfehler fällt auf den Standard zurück statt das Gate abzuschalten.

text
DEVKIT_STYLE_REMINDER_TURNS=5

🔁 Review-Nachprüfungen werden weiter kleiner ​

Ein Reviewer liest jetzt ein aufgezeichnetes Suite-Ergebnis statt es erneut auszuführen — ein Lauf verbrachte 4 seiner 8 Minuten damit, eine 191-Assertion-Suite erneut auszuführen, die bereits auf demselben SHA aufgezeichnet war. spec-checks führt ein identisches Whole-Verify-Kommando nur noch einmal statt bis zu achtmal pro Abnahmelauf aus, Drift außerhalb der deklarierten Dateiliste eines Specs macht das Review nicht mehr ungültig (Spec 451 verlor davor ein volles Re-Prep an einen byte-identischen Scoped-Diff), und die Diffs einer parallelen Session landen im Review-Paket nur noch als Stat-Zeile statt als vollständiger 72-KB-Dump.

text
/spec-work 450

🤖 /delegate implement wählt seine Runtime selbst und wartet nicht ewig ​

Die Implement-Kette fällt über prime → dsh → kimi → claude zurück, jeder Hop tiefenbegrenzt, damit ein Delegate nicht über sein Limit hinaus weiterdelegiert. Ein claude -p-Lauf schrieb 19,5 Minuten Code, ohne einen Test zu starten — implement übergibt jetzt --allowedTools Bash, läuft im Vordergrund und beendet sich nach 900 Sekunden Stille selbst.

text
runtime-route.sh --inventory implement

🔀 OpenCode tritt der Delegate-Registry für die Read-only-Tiers bei ​

opencode (oc) beantwortet Research- und Architektur-Fragen, isoliert von deiner eigenen OpenCode- und Claude-Code-Konfiguration — ohne diese Isolation beantworteten die eigenen MCP-Server eines Nutzers fünf Tool-Aufrufe mitten im Review, und der erste Turn kostete 21,7k statt 14,9k Tokens. Einen Review-Sitz hat er nicht: die freien Modelle antworten mit 403, sobald der devkit-review-Permission-Block dazukommt — review läuft weiter über codex → kimi → dsh.

text
/delegate opencode research

🧭 /spec druckt seine mechanische Route vor dem Urteil ​

spec-route-prep.sh liest die geplante Dateiliste gegen die Irreversibilitäts-Regeln und die Test-Suite-Zuordnung und druckt ROUTE=direct|spec|judge mit den entscheidenden Pfaden, bevor /spec seine eigene Routen-Tabelle zeigt. Zwei Fünf-Datei-Änderungen mit deterministischen Suiten waren zuvor nach Gefühl in einen vollen Spec gegangen und kosteten je ~25 Minuten Gates.

text
spec-route-prep.sh <path...>

📋 spec-checks.sh --evidence-from importiert einen Gate-Lauf von einem anderen Host ​

Ein Projekt, dessen Gate nur unter Linux-CI besteht, meldete ein falsches exit=1 für jedes von einem Mac geprüfte AC. --evidence-from <summary> importiert die Evidenz eines Gates aus einer auf dem anderen Host geschriebenen Summary, nach Prüfung von Phase, Digest und AC-Auswahl.

text
devkit run spec-checks.sh devkit/specs/452-*.md --run-dir /tmp/checks \
  --phase acceptance --section acs --append-evidence --evidence-from ci-summary.json

🧹 Ein fremder Linter zählt nur noch, was du geändert hast ​

96 vorbestehende theme-check-Fehler lasen sich nach einem Merge als 137 — wie 41 selbst verursachte Regressionen, die keine waren. lint-delta.sh filtert die Ausgabe eines beliebigen Linters auf die Dateien, die dieser Baum tatsächlich geändert hat; --baseline lintet zusätzlich einen sauberen Base-Baum und zeigt nur, was neu ist.

text
devkit run lint-delta.sh -- npx theme-check --path .

🎨 Der erste pen-design-Setup-Lauf übersteht sein eigenes Gate ​

Ein erster pen-design-Setup-Lauf erreichte 140.643 Tokens und kompaktierte mitten in der Aufgabe; an einen Fork übergeben, war derselbe Lauf bei 120.268 fertig. Der Fork ist jetzt der Standard fürs Setup, das auch seine zwei System-Sheets zeichnet und dafür nicht mehr am eigenen Abnahme-Gate scheitert.

text
node "$(devkit path skill pen-design)/scripts/design-check.mjs"

Was sich für dich ändert ​

Neu verfügbar

  • /delegate opencode research|architecture — OpenCode als Read-only-Delegate neben codex, kimi und dsh.
  • runtime-route.sh --inventory [tier] — listet den Zustand jeder Delegate-Runtime (ready, disabled, not-ready) für einen Tier.
  • devkit tools --auto-upgrade — gedrosseltes, selbstsperrendes Upgrade jedes installierten Tools; läuft auch in devkit sync mit.
  • ! cb tasks fetch <id> — die drei CrewBuddy-Fetch-Skills nennen den Shell-Prefix im Argument-Hinweis: die CLI läuft in Sekunden ohne Modell-Turn (ein Kollege maß 28 s über den Skill gegen 2–5 s im Terminal).
  • devkit tools --outdated erfasst jetzt dsh und prime-agent, wenn sie über ihre tools.json-Pins installiert wurden.
  • lint-baseline — meldet die neuen und behobenen Lint-Befunde einer Datei gegen ihre Basis und endet mit 0, wenn nichts dazukam; Wiederholungen lesen einen Cache pro Blob, statt neu zu linten.
  • design-tokens.mjs --diff — schreibt nur neue oder geänderte Canvas-Tokens und meldet einen wertgleichen Alias statt eines Duplikats (gemessen: 44 gleich, 0 zu schreiben, 3 Aliasse über 41 gebundene Nodes).
  • --evidence-from <summary> an spec-checks.sh — importiert die Acceptance-Evidenz eines Gate-Laufs von einem anderen Host (braucht --append-evidence, --phase acceptance --section acs).
  • DEVKIT_DELEGATE_MODEL, DEVKIT_DELEGATE_EFFORT, DEVKIT_DELEGATE_NO_RETURN, DEVKIT_DELEGATE_IDLE_ABORT_SECS — Overrides pro Delegate-Aufruf.
  • Stack-Referenzen für Nuxt, Nuxt/Storyblok, Shopware und Laravel unter /pen-design — derselbe Adapter-Vertrag, den Shopify schon hatte.
  • Optionale Werkzeuge — eine Seite für alle neun deklarierten, aber nicht installierten Werkzeuge (zusammen 2,6 GB), je mit Arbeitsablauf, gemessener Größe und dem Schritt, der bei dir bleibt.

Verhalten geändert

  • /spec und /spec-update fragen kein Approve/Refine/Abort mehr; der Start von /spec-work oder /wave ist die Freigabe.
  • /spec-verify und das UAT-Commit-Gate sind weg; /commit liest devkit/uat/ nicht mehr (0 Aufrufe in jedem Projekt seit Einführung am 2026-08-15).
  • Ein fehlgeschlagener AskUserQuestion-Aufruf fällt jetzt auf eine einzelne Klartextfrage zurück, statt den Turn anzuhalten.
  • /delegate opencode hat keinen Review-Sitz — die freien Modelle antworten unter dem Permission-Block des Review-Agents mit 403, review läuft über codex → kimi → dsh.
  • /delegate implement läuft unter Claude im Vordergrund, mit Bash standardmäßig erlaubt, und beendet sich nach 900 Sekunden Stille selbst.
  • /delegate implement läuft mit High- statt xhigh-Effort; der Implementer bündelt jeden Turn und verifiziert höchstens zweimal pro Step — 146 → 76 Turns, 22 → 2 Suite-Läufe auf einem Spec.
  • Die drei cb-Fetch-Skills verloren ihr Preflight und ihre Flag-Forward-Falle: gemessen 38,5 s / 7 Turns → 29,8 s / 4 Turns auf einer Aufgabe.
  • Die drei Fetch-Skills drucken devkit tools und halten an, wenn cb fehlt, statt auf MCP-Tools auszuweichen, die weder Digest noch Fence schreiben.
  • Ein Review wird nicht mehr ungültig, wenn Drift außerhalb der deklarierten Dateiliste des Specs landet — nur ein bewegter deklarierter oder Contract-Pfad führt noch zu exit 3.
  • Deine eigenen OpenCode-Sessions starten ohne Permission-Prompt für jedes Tool; Delegate-Läufe waren schon isoliert und bleiben unberührt.
  • Orca-sichtbare Delegate-Läufe stehlen nicht mehr die aktive Worktree-Ansicht und hinterlassen keine verwaisten Terminal-/Setup-Tabs mehr.
  • spec-id-next.sh zählt jetzt auch Specs auf ungemergten Branches, sodass zwei Autor:innen auf getrennten Branches nicht mehr auf derselben Spec-Nummer landen können.
  • /spec zieht den geschriebenen Spec nicht mehr in den Orca-Editor — es nennt den Pfad (in einer Session mit sieben Specs wurde eine Datei ein Dutzend Mal nach vorn gerissen).
  • spec-finish verweigert eine Beleglücke, bevor es irgendetwas anhängt, sodass ein zweiter Versuch kein frisches Prep und keine neue Reviewer-Bestätigung mehr braucht.
  • spec-validate akzeptiert einen deklarierten Pfad, dessen Löschung git nachvollzieht, und ein AC, dessen Verify das Quality-Gate fährt, braucht keinen Step, der eine Bearbeitung vortäuscht.
  • Ein rebasierter Commit liest sich nicht mehr als Design-Drift; design-status meldet einen umgeschriebenen Stempel und nennt den Ersatz beim Subject.
  • Ein /pen-design-Component-Frame (wiederverwendbar oder Ebene: Component|Block) braucht --selector an design-verify, sonst scheitert der Lauf mit einem Missing-Anchor-Befund statt mit einem seitenweiten Falsch-Bestanden.
  • Eine custom_*_class-Kette mit !important oder mehr als 8 Klassen an einer Shopify-Template-Instanz ist jetzt ein Preflight-Befund (CLASS CHAIN) — er benennt eine Komponente, die in einen eigenen Block gehört.
  • Die vier Shopify-Build-Helfer nehmen ihre Einträge und den Token-Pfad als Argumente oder aus dem Adapter und enden mit exit 2 samt Meldung statt mit einem Node-Trace.
  • .agents/design-check.project.js (K8 aufwärts) wird nur aus dem Projekt gelesen — der Kern-Prüfer trägt kein Vokabular eines einzelnen Projekts mehr.
  • Die Hook-Token-Policy lädt jetzt, während du einen Hook schreibst: content/rules/hooks-token-policy.md führt content/hooks/** neben .claude/hooks/**, per Test gepinnt.
  • Ein /pen-design-Frame-context über 600 Zeichen ist jetzt ein design-marker-check-Befund — das Feld trägt die Aussage des Frames gegen den Code, nicht Owner-Entscheidungen oder Entwurfshistorie (gemessen: 61k Zeichen über 108 Contexts in einem Projekt).
  • /agent-browser löst bei einer Live-URL-Prüfung aus, nicht nur bei einer Dateiänderung.
  • Ein angehobener Plugin-Pin landet jetzt wirklich: die Marketplace-Ref wird zuerst bewegt und der Update-Beleg bestätigt die neue Version (memsearch hing auf 0.4.18 fest).
  • /pen-design-Setup läuft jetzt standardmäßig in einem Fork und zeichnet zwei System-Sheets (Tokens, Icons), die das eigene Abnahme-Gate nicht mehr ablehnt.
  • design-tokens.mjs wandelt oklch/rgb/hsl/lab/lch/color() in Hex um statt sie durchzureichen; --diff meldet außerdem einen reinen Canvas-Token als NUR IM CANVAS.
  • design-adapter-check.mjs kürzt einen Monorepo-Pfad (dashboard/app/...) nicht mehr auf seinen bekannten Verzeichnisnamen und meldet ihn nicht mehr fälschlich als tot.
  • stack-shopify-liquid benennt die vite-tag.liquid-Falle: ein laufender shopify theme dev blockiert jeden Merge/Rebase/Pull, der die Datei berührt — mit dem Einzeiler zur Behebung.
  • Ein Workflow-Script bleibt unter 10 Agents: Claude Code 2.1.271 senkte die „medium"-Größenvorgabe von 15.
  • /spec-work sieht das verschachtelte Member-Repo eines Monorepos: Drift, Tests und Review lösen gegen das Member auf, nicht gegen den äußeren Checkout.
  • /pen-design leitet den Vollbund eines Abschnitts aus dem bleed-Key des Adapters ab, statt ihn anzunehmen, und misst Radius und Container im Wert-Gate.
  • spec-update blockiert die Validierung nicht mehr, wenn ein Review-Waiver installiert ist.
  • Ein blockierter Runtime-Reader gibt auf, statt endlos zu drehen.
  • Die Marker-Prüfung von /pen-design folgt einem Snippet zu jeder Render-Stelle: ein RENDER OHNE FRAME-Befund nennt jeden Aufrufer ohne eigenen Marker.
  • korrektur-check braucht --entry oder --ledger und endet ohne eins mit exit 2 — kein Default auf den neuesten Block mehr, der bisher einen veralteten Eintrag prüfte und als vollständig meldete.
  • skill-lint druckt bei einem grünen Lauf kein printf: write error: Broken pipe mehr — die acht printf | grep -q-Pipes, die unter Last rasten, sind jetzt Here-Strings.

Was du tun musst

  • Starte nach devkit sync eine neue Session — dieser Stand bringt neue Hooks und schreibt einen OpenCode-Permission-Eintrag, und beides erreicht keine laufende Session.
  • Auf einem Canvas, der schon Variablen hat, vor dem Schreiben design-tokens.mjs --diff fahren (nicht die einfache Form) — ein volles SetVariables kann tote Duplikat-Tokens neben die eigenen Namen des Canvas legen.
  • Der design-verify-Aufruf eines Component-Frames braucht jetzt --selector <element>; ergänze ihn überall, wo ein /pen-design-Kommando ihn ohne fährt.

🚀 Neue Funktionen ​

  • spec — The approve gate yields on direct work, opens the candidate, ends at completed (b2fd91b)
  • pen-design — The skill migrates completely, the stack checkers move with it (efa6376)
  • scripts — The twelve pen-design checkers now run in every project (20ee4e2)
  • delegate — Opencode joins the registry for the read-only tiers (Spec 444) (dd7b7de)
  • tools — dsh and prime-agent install optionally through tools.json (0867a90)
  • spec — spec-route-prep.sh prints the mechanical route before /spec judges (0a61f5b)
  • review — Drift confined to paths outside Files to Modify keeps the verdict (Spec 451) (4909540)
  • spec-id — Count specs on unmerged branches, name the check dir inline (10310c1)
  • delegate — a silent run ends early instead of burning its bound (657b644)
  • delegate — DEVKIT_DELEGATE_MODEL picks another opencode seat (1477e7e)
  • scripts — lint-baseline compares a file's findings with its base (3c55b82)
  • delegate — DEVKIT_DELEGATE_EFFORT overrides one claude call (Spec 452) (3d08e16)
  • spec-checks — import acceptance evidence from another host (856ff33)
  • opencode — start without permission prompts for every user (738e6bf)
  • pen-design — design-tokens --diff names aliases instead of writing (4176000)
  • delegate — DEVKIT_DELEGATE_NO_RETURN keeps a comparison run (Spec 452) (e7b996e)
  • routing — implement tier runs at high effort (Spec 452) (9f06466)
  • spec — starting /spec-work is the approval, no gate question (328c1ac)
  • pen-design — the design flow runs on every stack we ship (72be77c)
  • stack-shopify-liquid — the four build helpers move along (56af507)
  • run-cost — read dsh session usage as a cost source (b9db1e6)
  • telemetry — drain Codex rollouts on Codex session start (1d2c65a)
  • telemetry — Codex usage aggregate and runtime field (Spec 458) (ad3f274)
  • evaluation — add the skill-routing lens and repair the assertion extractor (5aad3d5)
  • delegate — opencode reviews on a free non-DeepSeek seat (465aaa8)
  • spec — warn on untracked consequence readers at authoring (Spec 455) (16f86db)
  • distinguish delegate work from elapsed time in run-cost (Spec 457) (cb9e2ba)
  • evaluation — qualify TypeSafe Jev and add two maintainer triage lenses (3166265)
  • tools — ship the pen.dev CLI and pencil MCP with the setup (055525c)
  • pen-design — a section's full bleed is earned, not assumed (0b1efa8)
  • pen-design — the section-geometry rules are decided, not just printed (7816008)
  • pen-design — measure radius and container in the value gate (d41d73c)
  • spec-work — drift, tests and review see a monorepo's nested member repo (ab76980)

🐛 Fixes ​

  • fetch-skills — Name the shell-prefix path that skips the model (14860a0)
  • pen-design — skillDir finds the shipped skill, not only a project copy (9bc7363)
  • fetch-skills — Remove the auth preflight and flag-forward trap (2813bd2)
  • delegate — A visible run no longer steals the Orca view or leaves stray tabs (7afaf6f)
  • spec-work — An implementer proves every negative case red on its own (Spec 450) (746b429)
  • spec-444 — Record retro and wire the write-path rule into the delegate skill (Spec 444) (0c441e1)
  • delegate — Forward CLAUDECODE and the depth cap into the Orca terminal (Spec 444) (4bbd8c0)
  • delegate — Resolve a relative --brief against the caller's checkout (Spec 444) (66ad596)
  • hooks — ship the background-wait-guard advisory its row already names (744d7a6)
  • docs-locale — docs/shared is a /share source, not a site page (56f11bc)
  • delegate — claude implement runs without background tasks (Spec 452) (3b7cef7)
  • spec-finish — refuse a receipt gap before appending anything (bea97e4)
  • spec-validate — accept deleted paths and gate-only acceptance ACs (91bbfc2)
  • content-language — skip agent worktrees under .claude/worktrees (38aeea5)
  • issues-prep — count only Closes/Fixes/Refs trailers as coverage (deacf47)
  • spec — stop opening the written spec in Orca on every run (fbc331c)
  • pen-design — slashed tracking/leading tokens, no pair for parts (6de0f43)
  • agent-browser — trigger on live-URL checks, not only edits (0aa4090)
  • fetch-task — name the install route when cb is missing (81a3647)
  • issues-prep — stop matching commit hashes as issue numbers (Spec 065) (d276795)
  • pen-design — six findings from the sp-alpensattel badge session (9675836)
  • delegate — claude implement may run Bash (Spec 452) (c700003)
  • rules — ask in plain text when AskUserQuestion errors (84caa07)
  • pen-design — kimi review — geometry fallback, adapter paths, stale rules (55a0555)
  • pen-design — third review round — complete reads, scoped sort, stack-neutral paths (f470692)
  • pen-design — second review round — rows, stamps, tokens, exit codes (62b8976)
  • plugins — confirm a pin bump from the update receipt (00c1bb2)
  • hooks — the policy guard survives macOS bash 3.2 (f5112ee)
  • plugins — move the declared marketplace ref before a pin bump (7e6b0d8)
  • tool-pin-audit — audit github-checkout pins by commit (d969f97)
  • tests — a content/skills change runs the refs suite (75bbf4f)
  • pen-design — checkers read the project's adapter, not one project's constants (66c0df7)
  • stack-shopify-liquid — helpers stop carrying one theme's rules (e29a1e0)
  • pen-design — flags are no canvas path, clean-assets cleans the project (631b385)
  • scripts — help and error messages no longer name the deleted project path (4c525b9)
  • tests — repair two defects this session introduced (f1bb253)
  • delegate — the idle watchdog only judges a streaming runtime (aa939ce)
  • tests — make the proof-store mode check run on macOS (8788686)
  • hooks — format shell scripts written through a Bash call (Spec 084) (5020d63)
  • telemetry — keep a forked Codex rollout's own session id (Spec 458) (d16029d)
  • rules — load the hook token policy where hooks actually live (b2bf0e8)
  • delegate — return named ignored artifacts and quiet the idle log read (e5c4b4c)
  • skills — name the /delegate → /prime-agent relationship, and test the context cap for real (d0f9900)
  • rules — forbid a manual browser checklist in place of the self-test (6acd2b4)
  • pen-design — --help on every checker, and a named project-file error (7d0ebe8)
  • spec-review — keep --completion-validity to one stdout line (77cafab)
  • delegate — drop opencode's review seat, cache lint-baseline against its base blob (991769e)
  • scripts — put stat GNU-first at three call sites that had it backwards (4e58ed4)
  • tools — restore the plugin update receipt Spec 452 removed (f689683)
  • reference-scan — corpus-probe ledger filter never matched a hash (c9359e5)
  • pen-design — path regex survives a monorepo app root (d222f91)
  • pen-design — colours reach the canvas as hex, --diff sees both sides (f62c161)
  • pen-design — setup forks, draws its sheets, and passes its own gate (a165988)
  • tests — restore the executable bit on tests/all.sh (a7b884f)
  • pen-design — the checkers resolve a scan root instead of assuming depth (a59f00c)
  • spec-update — an installed review waiver stops deadlocking validation (343bef6)
  • devkit — a blocked runtime reader gives up instead of spinning forever (5a80299)
  • tests — repair the three assertions that kept CI red (Spec 079) (b10e808)
  • pen-design — the frame marker check follows a snippet to every render site (d37b749)
  • pen-design — korrektur-check verifies the entry it is given, never a stale one (9bb8f1e)
  • tests — shard coverage counts which suites ran, not which passed (dac5987)
  • skill-lint — the gate stops writing EPIPE noise to stderr (025f400)

⚡ Performance ​

  • review — Keep a parallel session's diffs out of the review package (Spec 450) (4f87db3)
  • review — A reviewer reads a recorded suite, never re-runs it (a01224d)
  • checks — Run a byte-identical whole verify once per spec-checks run (Spec 449, 450) (b2372f5)
  • tests — refresh the shard weights from a measured run (a7cba20)
  • hooks — cap gotcha-recall at two entries per prompt (81636a3)
  • spec — skip the probe for single test-suite verifies (Spec 412) (094f6ad)
  • hooks — return the always-on ruleset on a cadence, not on every prompt (d23b5da)

♻️ Refactoring ​

  • pen-design — The checkers belong to the skill, not the shared pool (f2a46e2)
  • Remove /spec-verify and the UAT commit gate (f2c5e32)
  • pen-design — the skill fits its budget, the bundles carry every adapter key (38df965)
  • pen-design — English identifiers and comments in the checker scripts (f67b2a3)
  • design-check — K8+ belongs to the project, not the core (bd11450)
  • spec — move full-route authoring review to a reference (Spec 455) (57e6af5)

📖 Dokumentation ​

  • evaluation — Document headroom-proxy trial arm-a results and retry harness (559eef4)
  • release — Add release notes, headroom/pi trials, and verbosity sign (2307779)
  • Re-set the workflows.md marker for the /spec route line (5ca99c7)
  • de — Keep workflows.md under the reader prose limit (Spec 450) (94b7795)
  • devkit-docs — Rank user-side gains first and write their numbers into the lead (898119c)
  • decisions — the in-process Agent stays the spec-work implementer (97b9b5e)
  • reader — bring design and workflows back under the prose limit (3bea5d1)
  • re-set docs-source markers after #60 and the DESIGN.md abstract move (41d6e96)
  • spec-work — the implementer batches every turn (Spec 452) (7925bc3)
  • workflows — re-set docs-source marker after #64 (884b413)
  • spec-work — Spec 452 retro consequences (Spec 452) (d359f9e)
  • design — refresh the source marker (b6a4c16)
  • design — refresh the source marker (3ea9fda)
  • refresh source markers after the hook and pen-design fixes (086387e)
  • spec — 452/453 tools update themselves for every user (402d3af)
  • design — refresh the source marker (5026b99)
  • design — name the supported stacks and the token command (3b66e89)
  • design — a page for designing with Pen (e6c1dbc)
  • spec — Spec 452 Steps 1/2 verify against the lint baseline (34762c7)
  • spec — draft Spec 454 on context DESIGN fill status (4d93a55)
  • research — lavish-axi tool trial and research note (52e14fa)
  • changelog — fill Unreleased with the 65 commits since v0.39.0 (9726766)
  • pen-design — document context field length cap and table formatting (1737882)
  • reference — checkpoint the partial first-party scan (3786272)
  • changelog — extend v0.40.0 to the five commits after the prep (ae5f55d)
  • stack-shopify-liquid — name the vite-tag trap that blocks every merge (38ee31d)
  • pen-design — document stale-render trap on Move; add Rust hook pilot (8ca9a68)
  • tools — give the nine optional tools their own page (4b8d5a2)
  • design — keep both design pages under the reader byte limit (928f608)
  • design — the adapter's bleed key and what RAND now reports (429f17f)
  • pen-design — add anti-pattern for missing theme axis value (b606445)
  • pen-design — consolidate render-stale-state traps into one entry (63a93de)
  • pen-design — tighten setup.md wording to cut token budget (5f96ed5)

🧪 Tests ​

  • rules — Fixture and baselines follow the spec-verify removal and the tools.json pins (ec6b429)
  • skill-scripts — pin design-tokens --diff exit 1 on an alias (466f1a9)
  • affected-map — a content/skills change runs skill-scripts (a7f182c)
  • skill-scripts — shipped skill scripts take the project from the project (ae90bcc)
  • routing — follow the implement tier onto high effort (ef46549)
  • lint — report a foreign linter's findings for changed files only (9b521fd)

🏗️ Wartung ​

  • test-sandbox — accept the opencode PATH stub dir in delegate-exec (c853a55)
  • content-language — accept the OHNE ANKER marker in proof.md (7fffb6d)
  • ledger — Claude Code 2.1.267–2.1.274 reviewed (2e8baff)
  • tools — review and bump pins after the 2026-09-17 changelog run (2f580c9)
  • spec — re-verify Spec 452 after the parallel implementation (8ad3b7d)
  • tools — add the agent-internal exception list to the registry (31abb1f)
  • spec — complete Spec 458 (Claude review PASS_WITH_FOLLOWUPS) (1e4fbe8)
  • scripts — restore shfmt on four committed files so the full suite can run (3628f42)
  • spec — close Spec 458 as blocked pending the independent review (e1fce10)
  • tools — review python3, and repair the sweep that reported it (558c23d)
  • spec — Spec 452 carries the state its code is already in (3efde34)

No commit type ​

  • Spec 450 completion: review receipt and move to completed (ad0a01b)
  • Spec-450 fix 2: case (g) exercises the anchored id match, (f') pins the union (6b7fba3)
  • Spec-450 fix: closure over both snapshots, anchored line ids, intact --help (88d77bf)
  • Spec 449 completion: review receipt and move to completed (0f43dbb)
  • Spec-449 follow-up: pin that an exception-red AC earns no review waiver (1b31dec)
  • Spec 451 completion: review receipt and move to completed (88b4115)
  • Spec-450 Step 4: re-set the workflows.md marker for the spec-update change (593359a)
  • Spec-450 Step 1-4: spec-update reopens a named set plus its closure (f9b6916)
  • Spec-449 Step 1-4: strict validation names a verify that is red by exception (37340d1)
  • Spec 445 completion: record retro entry, wire consequences to docs-drift-check.sh (d5fe8b5)
  • Spec-451 fix: skip non-UTF-8 files with a diagnostic, accept a BOM, cover blocks (c32c3d6)
  • Spec-445 Step 4 fix: re-set the workflows.md marker after the delegate skill guard fix (f03e29b)
  • Spec-451 Step 1-5: shopify-schema-lint reports server-side schema rejections before push (3ab7b5b)
  • Spec-445 Step 3 fix: guard sentence names the implement exception (9302b58)
  • Spec-444: completed receipt (d6ab5f3)
  • Spec-445 Step 4: keep the /delegate cell under the 600-char reader limit (b27ec5b)
  • Spec-445 Step 4: workflows.md says /delegate picks the runtime itself (98e9ba4)
  • Spec-445 Step 3: /delegate resolves the implement runtime via runtime-route.sh (d51ef1b)
  • Spec-445 Step 2: seamed inventory cases for runtime-route.sh (4a88cc9)
  • Spec-445 Step 1: runtime-route.sh --inventory [tier] lists every runtime's state (d7d5df2)
  • Spec-444 Step 2+3: claude implement allowed from a Claude session, depth-capped (24cf2f8)
  • Spec-444 Step 1+4: implement chain prime→dsh→kimi→claude, runtime-route cases (c05ed76)
  • Update spec 452 tools auto-upgrade: rework lock/state handling and fix d (962f3c7)
  • Spec-452 Step 1: state write adds no shellcheck finding over the baseline (81dc71d)
  • Spec-452 Step 1-5: tools upgrade themselves via sync and --auto-upgrade (11e3680)
  • spec(reference-scan): add batch cap for freshness backlog (c2da720)
  • Update pen-design docs and changelogs for setup fork default, colour contrast and adapter keys (d1fcd4f)
  • Correct measured spawn-cost finding for the Rust spike audit (ea0c8e4)
  • Add Spec 461: Rust devkit core parity-verified CLI surface (5260924)

v0.38.0 — 2026-09-17 ​

Review-Runden sinken, die Harness wird schneller: Ein reiner Prosa-Fix trägt seinen PASS weiter statt einer vollen Runde, das Re-Review-Paket ist auf der Fixture 1.655 B statt 6.847 B groß, Hooks kosten 143 statt 365 ms pro Bash-Call, reuse-guard 15 statt 493 ms, und skill-lint im Quality Gate läuft in 10 statt 81 s. Update mit devkit sync.

73 Commits seit v0.37.0 · Specs 396, 406, 442, 443

✨ Highlights ​

🔁 Weniger Review-Runden ​

Ein reiner Prosa-Fix trägt jetzt seinen PASS weiter statt einen vollen Re-Dispatch auszulösen — Spec 396 zahlte davor drei volle Runden für drei Prosa-Fixes an einer Skill-Anweisung. spec-work committet jeden grünen Step als Spec-NNN Step k: und spec-review-prep re-reviewt nur diesen Step (1.655 B Delta gegenüber einem 6.847 B großen Vollpaket), Findings außerhalb des Steps landen auf einem deferred:-Ledger, das die Schleife nie verlängert, und ein überdimensioniertes Diff-Route-Paket wird mit REVIEW_PACKAGE_OVERSIZED vor dem bezahlten Codex-Call abgelehnt (Issue #46).

text
/spec-work 443

💸 Günstigerer Reviewer-Sitz, gemessen ​

Der Reviewer-Aufwand sinkt bei inferred-low, signalfreien Diffs auf medium — Spec 443s Reviewer verbrauchte davor 190k Token über zwei Runden auf dem High-Sitz (DEVKIT_REVIEW_LOW_RISK_EFFORT übersteuert) — und die Codex-Zweitmeinung läuft nur noch bei inferred-high-Risiko oder einem Architektur-Signal, nie mehr als Default. Eine kontrollierte Messung auf zehn eingefrorenen Paketen zeigte: Sonnet als Reviewer verpasste 8 bestätigte HIGH/MEDIUM-Findings und brauchte 5 % mehr Token, deshalb bleibt tiers.review.claude bei opus/high.

text
DEVKIT_REVIEW_LOW_RISK_EFFORT=high   # den High-Sitz bei jedem Diff behalten

📉 Schlankere Specs, kleinere Skill-Bodies ​

Ein kompakter, risikoarmer Draft, dessen ACs alle deterministisch verifizierbar sind, erlässt das Implementation-Review jetzt standardmäßig, seine Approval Capsule schrumpft auf Verstanden als + Ziel + Digest, und eine einzige Split-Schwelle (6 Steps / 5 Dateien) ersetzt die verstreuten. Die Skill-Bodies verlieren, was ein Skript ohnehin ausgibt: spec 4429 → 4116 Token, review 4591 → 4211, spec-work −2,2 KB wiederholter Vertragstext.

text
/spec   # kompakte Route: Implementation-Review: waived, wenn jedes AC deterministisch verifizierbar ist

🌊 Waves verlieren keine Stunden mehr an stille Fehler ​

Ein Dispatch, der beim Start stirbt, meldet jetzt WAVE_SLICE_STARTUP_BLOCKED mit Exit 7 statt eines falschen Grün — eine Wave verlor daran 9 h 23 min eines 15-h-Laufs (Issue #54) — und ein geparkter Slice gibt seinen Datei-Claim über Status: blocked frei, statt seinen Nachbarn zu blockieren (Issue #57). prime-run begrenzt Orcas Worker-Start auf 120 s und fällt in den Headless-Start, statt neun Minuten ohne einen Token zu hängen.

text
DEVKIT_PRIME_WORKER_START_SECS=120   # Schranke für orca worker-start vor dem Headless-Fallback

🎯 Review-Pakete ankern auf dem richtigen Diff ​

Das Review-Paket eines Wave-Slices ankert auf der Merge-Base des Branches mit main statt auf dem Intro-Parent des Specs — vorher trug es ~66.000 Fremdzeilen und gab ein PASS auf nichts (Issue #55), und ein Paket, dessen Fremdpfade die deklarierten überwiegen, warnt jetzt vor dem Dispatch. Ein auf main als Step-Commits umgesetzter Spec ankert auf seinem ersten Step: das Paket von Spec 442 fiel von 936 KB über 60 Fremd-Commits auf 33 KB.

text
SPEC_REVIEW_PREP_WARN reason=foreign-paths-dominate   # geht an den Worker, bevor der Reviewer es sieht

🔀 Die Zweitmeinung bleibt nicht mehr an Codex hängen ​

delegate springt bei einem vorübergehenden Codex-Ausfall (Exit 4, Read-only-Modus) selbst zu dsh, dann kimi — die Antwort trägt einen === <runtime> (<model>)-Header, damit du siehst, wer geantwortet hat; hermes verlässt die Registry und jeden Adapter.

text
DEVKIT_DELEGATE_NO_HOP=1   # Hop-Kette abschalten

🔒 devkit doctor erkennt einen blind laufenden OpenCode-Agenten ​

Ein OpenCode-Primary verliert ein Built-in, sobald irgendeine gemergte Config-Ebene es verweigert, und der Default subagent_depth von 1 verweigert den zweiten Delegations-Hop eines Skills — devkit doctor --target opencode nennt jetzt jedes verweigerte Built-in, die Datei, die es verweigert, und eine Tiefe unter 2; devkit apply schreibt den Fix.

text
devkit doctor --target opencode

🔔 SessionStart: ein Hinweis, und er kennt deinen Spec-Stand ​

SessionStart stapelte bisher bis zu vier Banner; ein einzelner Dispatcher läuft sie jetzt in Prioritätsreihenfolge und stoppt beim ersten mit Ausgabe, und er nennt Status, Step und AC-Zähler deines aktiven Specs (max. 3 Specs, 14 ms ohne aktiven Spec, 365 ms bei drei).

text
DEVKIT_SKIP_RESUME_HINT=1   # Spec-Status-Hinweis abschalten

⚡ Hooks kosten nur noch ein Drittel ​

Hook-Dispatch parst die Event-Payload einmal und lässt Advisory-Hooks parallel laufen — 10-Lauf-Mediane: hook-dispatch-pretool 365 → 143 ms, hook-dispatch-prompt 228 → 109 ms, reuse-guard 493 → 15 ms — und der Session-Scope-Hash bündelt sich in einen einzigen git-Call (102 → 54 ms bei 13 dirty files). Das ADHD-Regelwerk (rund 1.800 Token) wird nicht mehr in jeden Plan/Explore-Subagenten injiziert, und ein gepaartes Harness-On/Off-Benchmark setzt den Stack unter die Rauschgrenze (27,0 s vs. 28,9 s, N=2).

text
DEVKIT_REUSE_GUARD_LIVE=1   # Symbol-Detector auf dem Edit-Pfad wieder aktivieren

🧪 Maintainer-Loop: Gate und Suiten in einem Bruchteil der Zeit ​

Der Trigger-Kollisions-Check des Quality Gate fiel von 81 s auf 10 s — das waren 90 s von jedem Fünf-Minuten-Gate-Lauf. hook.sh ist in zehn Suiten je Hook-Familie aufgeteilt (114 → 41 s insgesamt, 4–27 s je Suite), und die Test-Payload nur noch einmal pro Suite statt pro Sandbox zu staged halbierte mehrere Suiten (runtime-hardening 350 → 143 s, safety 159 → 85 s, codex 159 → 110 s, hook 185 → 130 s, model-routing 98 → 92 s).

text
bash content/scripts/test-prep.sh --affected-only

🎯 /fetch-my-project-task: zuweisungsscoped CrewBuddy-Digests ​

Holt nur die offenen Tasks eines CrewBuddy-Projekts, die dir zugewiesen sind, statt aller offenen Tasks wie /fetch-project-task — cb 0.1.0 kombiniert bereits --project mit --my.

text
/fetch-my-project-task 42

🧭 /agent-browser überspringt Orca nicht mehr still ​

Vier der letzten 30 Tage /agent-browser-Läufe auf Orca-Hosts starteten mit einem bloßen command -v agent-browser-Check und riefen den Detector nie auf, sodass sie still auf die plain CLI statt den Orca-Browser zurückfielen (gemessen über 887 Transkripte). Orca-Routing ist jetzt ein expliziter Step 0 mit erweitertem Bash-Zugriff.

text
orca-detect.sh   # Step 0, läuft vor jedem agent-browser-Befehl

Was sich für dich ändert ​

Neu verfügbar

  • Hol nur deine eigenen zugewiesenen Tasks aus einem CrewBuddy-Projekt mit /fetch-my-project-task <project-id>; /fetch-task und /fetch-project-task laufen jetzt ebenfalls über cb tasks fetch.
  • Eine Dev-Mode-Seite erklärt, wie du das Setup aus einem Checkout fährst — devkit dev-sync, die tägliche Schleife, warum ein bloßes devkit sync das nicht kann, und wie du wieder rauskommst.
  • devkit doctor (jedes Target) meldet einen fremden MCP-Server-Eintrag, dessen Stdio-Kommando nicht mehr auflöst, statt beim Spawn still zu scheitern.
  • devkit doctor --target opencode bricht hart ab (exit 1), wenn ein OpenCode-Agent die gemeinsamen Skills blind ausführen würde: er nennt jedes Built-in (read, glob, grep, list, bash), das eine globale, OPENCODE_CONFIG-, Projekt- oder .opencode/-Ebene verweigert, die verweigernde Datei, agentenspezifische Verweigerungen, benötigte Tools in experimental.primary_tools, und einen subagent_depth unter 2. Dieselben Checks laufen in einem gewöhnlichen devkit doctor, solange der Adapter aktiv ist — siehe OpenCode-Voraussetzungen.
  • /friction-feedback meldet weiterhin aus einem Agenten ohne Shell: es entwirft die Eingaben, schreibt die Detail-Datei und reicht dir die zwei feedback-issue.sh-Befehle.
  • /friction-feedback reicht die Meldung jetzt ohne Rückfrage ein — der Dry-Run und sein bytebegrenzter SHA sichern bereits, was rausgeht, du siehst Titel, Text und URL im selben Turn.
  • /commit warnt mit SPEC_CONTRACT_DRIFT <path>, wenn eine gestagte Änderung einen Pfad betrifft, den ein freigegebener Spec deklariert — so kann eine repo-weite Umbenennung nicht still den Approved-Digest eines Specs entwerten.
  • spec-validate warnt, wenn ein Verify-Kriterium einen mktemp -d-Fixture-Pfad auflöst, der auf macOS nie matcht (/var vs. /private/var).

Verhalten geändert

  • /spec erlässt das Implementation-Review standardmäßig bei einem kompakten, risikoarmen Draft, dessen ACs alle deterministisch verifizierbar sind; die kompakte Approval Capsule schrumpft auf Verstanden als + Ziel + Digest.
  • spec-work committet jeden grünen Step auf dem aktuellen Branch, sodass du Commit für Commit reviewst und das Re-Review nur den neuen Step liest (Wave-Slices, verwaltete Worktrees und Workspace-Läufe bleiben commit-frei).
  • Der Reviewer-Aufwand von /review sinkt bei risikoarmen, signalfreien Diffs auf medium; die Codex-Zweitmeinung ist kein Default mehr — sie läuft nur bei inferred-high-Risiko oder einem Architektur-Signal. Prep baut das Re-Review-Delta jetzt selbst: Über 30 Tage lief MODE=delta in 11 von 33 Claude-Dispatches und in keinem Codex-Dispatch, weil Codex keinen Delta-Modus hatte. Zwanzig Reviewer-Durchläufe über zehn Commits dieser Woche bestätigten 11 Defekte, die die ursprünglichen Reviews übersehen hatten; alle sind in diesem Release geschlossen.
  • Indirekte Permission-Fragen ("sag mir", "ob ich", "darf ich", "soll ich" und ihre englischen Varianten) beenden den Turn jetzt statt vom Announce-Gate blockiert zu werden; das agent-state-ignore-Gate feuert jetzt auch bei State-Verzeichnissen und im Index, nicht nur beim Manifest (schließt #58).
  • devkit apply schreibt jetzt auch subagent_depth: 2 in ~/.config/opencode/opencode.json neben die Tool-Keys (ein persönlicher Wert bleibt erhalten); OpenCodes Default von 1 stoppte jeden gemeinsamen Skill, der zweimal delegiert, mit Subagent depth limit reached (1).
  • DEVKIT_DELEGATE_BOUND bemisst jetzt einen Delegate-Lauf, den die Tier-Tabelle nicht fassen kann.
  • /agent-browser prüft bei jedem Lauf zuerst das Orca-Routing, ein Orca-Host fällt nicht mehr still auf die plain CLI zurück.
  • devkit project-migrate meldet jeden hängenden .hooks-Eintrag — ein verdrahtetes .claude/hooks/<name>.sh-Skript, das nicht mehr existiert — als PROJECT_HOOK_DANGLING (Dry-Run ergänzt PROJECT_HOOK_PLAN … action=strip count=<n>) und entfernt ihn unter --apply; nur .hooks wird je umgeschrieben, und die Abschlusszeile zählt nur noch Drift, der noch existiert, statt eine Next: --apply --force-Zeile für gerade gelöschte Kopien auszugeben.
  • PROJECT_NPX_DRIFTED/PROJECT_LOCAL_SKILL benennen eine devkit-überschattende Kopie und eine lokale Skill-Datei, die ein bereits entferntes Skript referenziert; --apply --force fegt jetzt auch npx-gedriftete Kopien, außer .claude/settings.json, .claude/settings.local.json und .mcp.json.
  • Ein vollständiger Sonnet-ID-Pin (claude-sonnet-4-6, mit oder ohne [1m]) wird jetzt genau wie ein Opus-ID-Pin entfernt statt auf den bloßen sonnet-Alias umgeschrieben zu werden; Alias-Pins bleiben unberührt.
  • run-cost nimmt den letzten kumulativen Total pro Task-ID statt jeden Resume aufzusummieren (ein Lauf las 6,5 Mio. Token nach Event vs. 782k nach Handle) und meldet, wie lange ein Delegate gegen die Wall-Clock lief (54 % von 2 h 38 min bei diesem Lauf).
  • Jedes ausgelieferte Skript druckt bei --help seine Usage und beendet sich mit 0, bevor irgendein Seiteneffekt läuft — ein Usage-Audit über 159 Skripte, Hooks und Tools fand 28 mit kaputtem --help (zwei liefen bis zur Zeitgrenze ihre echte Arbeit) und 20 mit ShellCheck-Warnungen; 36 sind repariert, tests/script-help-contract.sh pinnt alle 119.
  • devkit dev-sync serialisiert parallele Läufe über ein Lock-Verzeichnis und setzt eine Quelle zurück, die auf ein gelöschtes od-dev-sync.*-Exportverzeichnis zeigt — zwei überlappende Läufe vertauschten bisher ihre Config-Backups und brachen jeden späteren Sync.

Was du tun musst

  • Unter OpenCode nach devkit sync devkit apply ausführen — sync liefert den Doctor-Check, aber nur apply schreibt subagent_depth: 2 und die Tool-Keys in die opencode.json; prüfen mit devkit doctor --target opencode.
  • Eine laufende Session übernimmt die Hook-, SessionStart- oder OpenCode-Config-Änderungen dieses Releases nicht von selbst — OpenCode liest seine Config einmal beim Start, also OpenCode neu starten oder nach devkit sync eine neue Claude/Codex-Session beginnen.
  • Falls ein Projekt jemals den Stop-Hook-Fehler hatte, führe dort devkit project-migrate . --apply --force aus, um den hängenden .hooks-Eintrag zu entfernen — devkit liefert den Fix, er läuft nicht von selbst im Zielprojekt.

🚀 Neue Funktionen ​

  • opencode — fail loud when an agent lacks the built-ins od-skills need (0ead033)
  • audit — Spec 442 — measure a lighter review tier, verdict reject (Spec 442) (f250ae5)
  • hooks,spec-review — one SessionStart hint dispatcher, contract-receipt carry behind a switch (4085388)
  • spec,delegate — waiver by default on compact, one-line compact capsule, second-opinion hop chain (b3b9fbb)
  • release — --repoint moves latest.json back to a published version (16d4296)
  • review — Step commits reach the reviewer once, deferred ledger, delta effort (ac4d551)
  • doctor — warn when an MCP server command no longer resolves (c080952)
  • spec-work — commit each green Step as the delta-review anchor, one split threshold (c1feccc)
  • cb — update task fetch commands for project scope (41cf844)
  • skills — add /fetch-my-project-task for assignee-scoped digests (9894cbf)
  • review-runtime — refuse an oversized diff-route package before the codex dispatch (719d63a)
  • review — the re-review delta package is built by prep, and the Codex dispatch takes it (1064f55)
  • review — the Codex second opinion is a measured package signal, never a default (2dd0ef3)
  • hooks — SessionStart names the active spec's status, step and AC counters (567e92b)
  • tools — script usage audit — every shipped script measured for use, tests and contract (434e583)
  • review — reviewer effort steps down to medium on low-risk, signal-free diffs (Spec 443) (b6c5295)
  • tools — paired harness-on/off benchmark, first measurement shows no slowdown (fa13e07)
  • spec-review-prep — classify the review intersection so prose-only edits carry the PASS (Spec 396) (ac2aa34)
  • devkit-issues — maintainer skill that triages open issues against specs and commits (e64e3a9)
  • commit-prep — warn when a staged edit voids an approved spec contract (5a35717)
  • spec-validate — warn on a mktemp -d fixture a verify never resolves (Spec 443) (504e29d)
  • run-cost — sum tokens per handle and measure delegate time against the wall clock (Spec 443) (476147f)
  • friction-feedback — file the issue without asking the human (46b9e05)

🐛 Fixes ​

  • scripts — docs-build-check honors --help, lifecycle usage drops the specs literal (e7ef106)
  • close the eleven findings the Spec 442 review-tier measurement surfaced (Spec 442) (a640ad9)
  • delegate — DEVKIT_DELEGATE_BOUND sizes a run the tier table cannot (fdf7b58)
  • spec-review-prep — anchor a main-branch spec's diff on its first Step commit (Spec 442) (c2e3e6a)
  • hooks — agent-state-ignore gates on state dirs and index, not only the manifest (794e586)
  • hooks — announce gate lets indirect permission request end the turn (0ce48c4)
  • dev-sync — serialize concurrent runs and heal a source left on a deleted export dir (4289fcf)
  • scripts — every shipped script honors --help — 36 repaired, suite pins all 119 (f5851db)
  • tools,hooks — honor the --help contract and clear ShellCheck warnings in 20 files (793901e)
  • prime-run — bound orca worker-start instead of waiting on it forever (26bc62b)
  • wave-prep — name a dispatch that dies on startup instead of reporting green (7c3d81e)
  • feedback-issue — anchor the credential-prefix screening at a token start (e327ae0)
  • spec-deps-check — a parked slice releases its file claim via Status: blocked (bb0f316)
  • spec-review-prep — anchor the fallback diff base on the merge-base with main (1eec840)
  • project-migrate — complete spec 443 — verdict after force sweep, docs, retro (Spec 443) (0e92824)
  • project-migrate — strip dangling hook wiring and drift-sweep with --force (Spec 443) (cbf8151)
  • agent-browser — make Orca routing the first command, pre-approve Bash (ea2e649)

⚡ Performance ​

  • tests — split hook.sh into one suite per hook family (63431f6)
  • tests — stage the payload once per suite and clone it into each sandbox (1ff83da)
  • hooks — parse the payload once, run advisories concurrently, reuse-guard off the Edit path (9f36290)
  • skill-lint — compute trigger collisions in one awk pass — 81 s to 10 s (7654444)
  • hooks — batch the session-scope hash, skip the ADHD ruleset for Plan/Explore, add hook-latency instrument (1570fa2)

♻️ Refactoring ​

  • skills — spec and review skills keep the decision, scripts keep the format (8ee0295)

📖 Dokumentation ​

  • agent-browser — diagnose a Design Mode picker hidden by page CSS (374cb0f)
  • skills — name the pull step for Pen's element picker (b7b2a97)
  • tools — close the lean-ctx question — personal install removed (Spec 442) (87541e9)
  • audit — close the lean-ctx benchmark brief with the Spec 442 result (Spec 442) (8287f79)
  • changelog — mirror the Unreleased block into the English page (Spec 443) (a03ef3f)
  • tools — record the lean-ctx trial as an external tool note and decision (0f7ce51)
  • changelog — record the 5 commits since v0.37.0 under Unreleased (1ec5742)
  • add the Dev Mode page so contributors can run the setup from a checkout (5562ec8)
  • audit — record the user-side findings beside the measured ones (b0c966d)
  • agent-browser — check a device-emulated screenshot before judging the page (54cb4e5)
  • agent-browser — headless is not the Orca vs agent-browser discriminator (ba6aeb1)
  • audit — caveman proxy trial — zero token compression on Claude Code 2.1.273 (e3a370b)

🧪 Tests ​

  • hook — own Codex homes per rotated sandbox, injection sandbox unprimed (74961d1)
  • spec-routing — GNU-first stat fallback in the four mode assertions (7be2417)
  • hook — pin the announce fixture and drop the inherited CLAUDE_PROJECT_DIR (069cd0f)

🏗️ Wartung ​

  • specs — Spec 406 stays paused until the release that carries this week's cuts (Spec 406) (ed68574)
  • tools — drop the lean-ctx tool note and neutralize its fixture names (e98e4e1)
  • gate — accept the announce-gate example phrase in the language baseline (50c7424)
  • share one test matrix between ci.yml and release.yml (0bc5a0d)
  • tools — remove five audit gates whose audits are finished; wire release-cleanroom into PUBLISH.md (896f5f6)
  • gate — clear the three reds the quality gate carried on main (Spec 443) (e568e6f)
  • delegate — remove hermes from the runtime registry and every adapter (0ed36fb)

No commit type ​

  • Spec-442 Step 3: record the reject verdict and its re-open bar (6ea94a0)
  • Spec-442 Step 2: run both review arms on ten frozen packages, one row per task and arm (5650a41)
  • Spec-442 Step 1: write the review-tier instrument before the run (5c124aa)
  • Add DEVKIT_SPEC_WORK_DRIVER=workspace signal so workspace members stay c (9a26ca8)
  • Add lean-ctx benchmark brief and Kasetto research note (a058557)

v0.37.0 — 2026-09-15 ​

GOTCHAS.md verlässt den Dauer-Import in CLAUDE.md — 2914 Token pro Session hier, 63 in einem frischen Projekt — und ein Critical-Eintrag kommt nur noch bei Trigger-Treffer. Das gepinnte i-have-adhd-Plugin ist die einzige Quelle der Antwortform für Claude, Codex und OpenCode hinter einem Flag, das devkit sync einmal anlegt und dessen Entfernung danach bestehen bleibt. Das neue Tool archify rendert Diagramme in /share-Seiten ohne Dauer-Kosten. Update mit devkit sync.

52 Commits seit v0.36.0 · Specs 001, 182, 435, 437, 438, 439, 441

✨ Highlights ​

🪶 GOTCHAS.md verlässt den Dauer-Import ​

/index importiert GOTCHAS.md nicht mehr per @ in CLAUDE.md — 2914 Dauer-Token pro Session in diesem Repo, 63 für das Skelett eines frischen Projekts (Spec 438); ein Critical-Eintrag erreicht dich nur, wenn der Trigger: von gotcha-recall.sh auf deinen Prompt passt, höchstens 654 Token in der Messung dieses Repos, und nur dann. Ein bestehendes Projekt verliert den Import beim nächsten /index.

text
/index
grep GOTCHAS CLAUDE.md   # nur noch auf der Zeile "Further context files on demand"

🎨 Das gepinnte i-have-adhd-Plugin ist die einzige Quelle der Antwortform ​

Die eigene 700-Zeichen-Paraphrase in core.md und die Per-Prompt-Kopie in style-reminder.sh sind weg (Spec 435); die sha-gepinnte Plugin-Kopie aus dem Payload erreicht jetzt Claude-Subagenten, Codex' SessionStart-Hook und OpenCodes verwalteten Block hinter demselben Flag .i-have-adhd-always, auch auf einer reinen Codex- oder OpenCode-Installation ohne claude-CLI.

text
stop adhd mode   # schaltet das Regelwerk für die Session aus

📐 archify: ein passives, sha-gepinntes Diagramm-Tool für /share ​

Ein ```archify <type>-Fence (architecture, workflow, sequence, dataflow, lifecycle), dessen Body die JSON-Spec ist, rendert über deliver zu einem eigenständigen, schema-bewussten SVG hinter einem Data-URI-<img>; die Seite bleibt skriptfrei, eine Seite ohne Fence rendert byte-identisch (Spec 437). Installiert wird es als github-checkout-Tool (blobless, sparse, sha-gepinnt), geroutet nur über die pfadgebundene Doc-Authoring-Regel — ein Skill-Eintrag hätte 132 Dauer-Token pro Session gekostet; der Trial maß ~7,6k Token je gerendertem Diagramm.

text
```archify workflow
{ "schema_version": 2, "diagram_type": "workflow", "meta": { "title": "Agent tool call" }, "nodes": [ … ], "edges": [ … ] }
```

📤 /share (Orca-Artifact) ist der Standard-Publikationsweg ​

core.md › Skill First nennt jetzt /share vor dem Claude-Artifact-Tool, das nur noch Fallback ist, wenn orca-detect.sh kein Orca findet: der Orca-Link erreicht Leute ohne Anthropic-Account und läuft durch die Secret-Prüfung von share-prep. orca artifacts --help ist der Beweis, dass die Gruppe existiert — orca --help (363 Zeilen) und orca agent-context listen sie nie.

text
orca artifacts --help

🧭 Stack-Lenses öffnen mit einem Imperativ und erreichen verschachtelte App-Verzeichnisse ​

Das Modell rief eine pfadgetroffene Lens in 5 von 280 Sessions auf, die in 30 Tagen eine geroutete Datei bearbeiteten; jede Beschreibung öffnet deshalb jetzt mit der Anweisung, die der Picker braucht. Laravel- und Nuxt-Globs bekommen Varianten für verschachtelte Apps, die Nuxt-Lens feuert auf app/storyblok/ (28–48 Dateien je sb-nuxt-Projekt, keine unter components/), die Shopify-Lens schützt die 87 committeten Vite-Builds unter assets/ und nennt blocks/.

text
paths: ["**/app/storyblok/**", "**/blocks/**", "**/src/entrypoints/**"]

🛡️ rm-, rsync- und Stash-Guards lösen auf, statt fail-closed zu blocken ​

Ein root-eigenes, nicht betretbares Vorgänger-Verzeichnis verweigert kein legitimes rm-Ziel mehr in jeder Schreibweise (Issue #48), ein Symlink-Alias eines geschützten Roots bleibt gesperrt, und die Block-Meldung nennt das abgelehnte Token und die geschlossene Menge der Gründe; rsync --info=*, --stats, -i, -u, -c und --verbose kommen auf die Read-only-Allowlist, ein einfaches git stash push gilt nicht mehr als Remote-Push (git -C <dir> stash push bleibt gesperrt).

text
git stash push -m "$(date +%F)"

🌳 Jeder sichtbare Delegate-Lauf bekommt sein eigenes Child-Worktree ​

delegate-visible.sh führt jeden Modus — nicht nur implement — in einem eigenen Orca-Child-Worktree aus, spiegelt für einen Read-only-Lauf deinen uncommitteten Stand hinein und entfernt das Worktree danach, statt im geteilten Checkout zu arbeiten; autohand 0.9.7 läuft mit --offline --plan, weil --bare einen Cloud-Key braucht und --restricted Lesezugriffe verweigert. Die Tier-Grenze hält jetzt auch auf Standard-macOS ohne coreutils timeout: TERM bei Ablauf, KILL 20 s später, Exit 124.

text
/delegate codex review

🔁 /checkin öffnet mit einer Statuskarte in Alltagssprache ​

Eine Eröffnung (was, wo, nächster Schritt — ohne Evidenz-Zeilen) steht jetzt vor den Evidenz-Abschnitten, damit ein Leser ohne Transkript den Session-Stand versteht, ohne Pfade, Zahlen oder Befehle zu entschlüsseln.

text
/checkin

🧹 dev-sync löscht nie mehr eine Version, aus der ein Prozess noch läuft ​

Der Prune einer parallelen Session löschte das Dev-Versionsverzeichnis, aus dem ein delegate-visible.sh-Lauf gerade ausführte; der Rückgabeschritt scheiterte und das fertige Worktree blieb liegen. Der Prune überspringt jetzt jede Version, deren voll qualifizierter Pfad in einem laufenden Prozess auftaucht; nur pgreps „kein Treffer" gibt den Weg frei.

text
bash tools/dev-sync.sh --worktree

Was sich für dich ändert ​

Neu verfügbar

  • Diagramme in /share-Seiten über ```archify-Fences, gerendert als Data-URI-SVG-Bild ohne Skript-Tag; devkit path tool archify löst den gepinnten Checkout auf.
  • /checkin öffnet mit einer Zusammenfassung in Alltagssprache vor den Evidenz-Abschnitten.
  • Audit-Reports haben ein benanntes Zuhause, devkit/audit/<name>.md, festgelegt in der pfadgebundenen Doc-Authoring-Regel und der Scaffold-README.
  • /delegate <runtime> architecture und Panel-Antworten öffnen mit SHIP IT, SHIP WITH CHANGES oder RETHINK und nennen den schwächsten Punkt; die Zusammenfassung behält jeden stärksten Einwand.

Verhalten geändert

  • Ein Critical-Eintrag aus GOTCHAS.md erreicht eine Claude-Session nur über den Trigger:-Treffer des Recall-Hooks auf deinem Prompt; Claude-Subagenten bekommen die Datei gar nicht mehr, Codex, Prime und dsh lesen sie weiter über den Canon.
  • Antworten nehmen ihre Form nur noch aus dem gepinnten i-have-adhd-Plugin, hinter .i-have-adhd-always — einmal von devkit sync angelegt, eine spätere Entfernung bleibt respektiert — in Claude-Subagenten, Codex und OpenCode gleichermaßen.
  • /share (Orca-Artifact) ist der Standard-Publikationsweg; das Claude-Artifact-Tool ist nur Fallback, wenn orca-detect.sh kein Orca findet.
  • Eine /share-Seite bevorzugt Inter und JetBrains Mono (sonst System-Stack) und die Docs-Palette; unter 64rem (Orcas ~955px-Browser) liegt die Kapitelleiste inline, der Canvas folgt dem Dark Mode.
  • Die Nuxt-, Shopify- und Shopware-Lenses führen mit dem profilweiten Default, machen jede Boilerplate-Eigenheit zu einer prüfbaren Bedingung und feuern nicht mehr auf Vendor-Bäume oder Skill-Beispiele.
  • Sechs Findings behoben, nachdem ein Skill-Doctor-Lauf 9 von 12 gesampelten Sessions durchfallen ließ: spec bietet vor dem ersten Edit an, research feuert auf deine Phrase, checkin nennt die Annahme.
  • CLAUDE.md nennt die echten Gate-Pfade, GOTCHAS sagt, dass ein Hintergrund-Task beim Exit meldet (5 Sessions bauten Waiter), skill-editing nennt, wer eine gestrichene Regel noch bekommt.
  • HINT_INDEX (623 Sessions, 1 Konversion in 30 Tagen) spricht einmal pro Projekt und Tag statt bei jedem Session-Start.
  • Der Usage-Report zählt das Review einer Spec über Sessions hinweg, geschlüsselt org/repo#NNN („Spec 001" vermischte 30 Sessions mehrerer Repos); ein externer review-runtime.sh-Lauf zählt als Review.
  • Eine kind: plan-Datei wird Zeile für Zeile abgearbeitet, ein Commit oder eine Spec je Zeile, und ein Finding wird im selben Slice in dem Artefakt behoben, das es anklagt.
  • friction-hint feuert auch, wenn ein Agent eine projektlokale .claude/rules/*.md schreibt, und /friction-feedback sagt, wann der Agent selbst meldet, statt auf dich zu warten.
  • Tests lösen kein echtes Kimi- oder Codex-Review mehr aus, spec-review-prep.sh verankert neu, wenn ein fremder Commit den Code vor der Spec landet, context-drift-check.sh überspringt gitignorierte Bäume.
  • Ein Legacy-specs/-Layout erzeugt keine SessionStart-Zeile mehr; devkit project-migrate nennt es weiter (der Hinweis feuerte in 534 Sessions in 30 Tagen, 0 Konversionen).
  • Die Skills spec, spec-work und review kosten je Aufruf 9–11 % weniger Token (4843→4385, 4399→3956, 4981→4433, tools/content-budget.sh --measure): Aufzählungen, die die Skripte ohnehin erzwingen, stehen jetzt bei den Skripten.
  • Ein abgelehntes /spec-verify-Urteil stoppt jetzt /commit zu dieser Spec, statt angezeigt und ignoriert zu werden; DEVKIT_ALLOW_REJECTED_UAT=1 geht darüber hinweg.
  • /review nennt /spec einmal und stoppt, wenn ein Diff ein Architektur-Signal trägt, aber keine Spec-Datei — Inline-Arbeit hat endlich eine Ausfahrt, und liest die AC-Evidenz, die /spec-work schon protokolliert hat, statt dieselben Befehle ein drittes Mal auszuführen.
  • /spec wird einmal pro Pfadklasse und Session angeboten, bevor du eine Release-Datei, api/, eine gepinnte Tool-SHA oder eine Credential-Fläche bearbeitest — die Probe bietet an, blockt nie (Spec 441).
  • Mit gesetztem Always-on-ADHD-Flag kommt der gepinnte Pre-Send-Check zusammen mit der Verbosity-Messung statt eines beratenden Hinweises.

Was du tun musst

  • Führe /index in jedem bestehenden Projekt aus: devkit sync liefert den Generator, aber die Zeile @.agents/context/GOTCHAS.md in deinem CLAUDE.md-Block verschwindet erst beim nächsten /index.
  • Prüfe, dass jeder ## Critical-Eintrag in .agents/context/GOTCHAS.md einen Trigger:-Regex trägt (/capture schreibt einen) — er ist jetzt der einzige Kanal des Eintrags in eine Claude-Session.
  • Entferne ein gesetztes DEVKIT_SKIP_GOTCHA_RECALL=1: ohne Import bedeutet ein abgeschalteter Recall-Hook, dass gar kein Critical-Eintrag mehr ankommt.
  • Installiere node, wenn du archify-Diagramme willst — das Tool ist gepinnt, seine Laufzeit ist node, und ein Sync ohne node überspringt den Renderer; prüfen mit devkit path tool archify.
  • Entferne ~/.claude/.i-have-adhd-always für einen dauerhaften Stil-Opt-out; „stop adhd mode" schaltet nur die laufende Session ab.

🚀 Neue Funktionen ​

  • hooks — offer /spec before an edit to a named irreversible surface (Spec 441) (defda38)
  • style — enforce the pinned pre-send check on every prompt behind the flag (b371ac0)
  • review — adjudicate the recorded AC evidence instead of re-running it (3cd7289)
  • commit — a rejected UAT verdict stops the commit prep (e4d020e)
  • review — name the inline path's exit to /spec (2644961)
  • hooks — retire the spec-layout SessionStart hint (Spec 439) (c915403)
  • maintainer — vendor Warp skill-doctor as a project-local skill (9100d4a)
  • share — Inter, the docs-site palette and a scheme-aware diagram canvas (a6eff29)
  • rules — Orca artifact is the publishing default, Claude Artifact the fallback (848aeb4)
  • skills — tell the model to load a stack lens before the edit it was surfaced for (cfe93cf)
  • telemetry — throttle two zero-yield hints and read the review gate per spec (Spec 001) (829c2f1)
  • plugins — ship the pinned i-have-adhd skill in the payload and reach every runtime from it (551129e)
  • tools — pin archify as a passive github-checkout tool with share-render fences (Spec 437) (407d657)
  • rules — make the pinned i-have-adhd plugin the only source of the response form (Spec 435) (ef9fc05)
  • stack-skills — lenses follow the boilerplates as of 2026-09-15 (b5863d2)
  • rules — name where an audit lives (4d421e0)
  • rules — route publishing to the Orca artifact before the Claude Artifact tool (6ab20d9)
  • checkin — open status card with plain-language summary (a7eb990)

🐛 Fixes ​

  • tests — record the UAT_REJECTED friction site in the fixture (03ea9e0)
  • content-budget — keep the exact tokenizer working without a writable HOME (710a080)
  • spec-validate — a deleted declared path is not its own twin (Spec 439) (bb85924)
  • spec-id-next — stop burning a spec ID on --help (4f0a79b)
  • test-prep — detect a Node project one directory down (96e265c)
  • index — stop @-importing GOTCHAS.md into CLAUDE.md, fix autohand 0.9 (510000b)
  • hooks — resolve rm-guard through non-enterable ancestors, surface un (0f35d85)
  • policy-guard — resolve rm targets past a directory the caller cannot enter (Spec 182) (beb4617)
  • content — six findings from the first skill-doctor run (a96d878)
  • dev-sync — never prune a dev version a process still runs from (3c1d6a8)
  • tools — close the four review findings on the archify integration (8ae7802)
  • delegate — bound the runtime on hosts without coreutils timeout (a519f90)
  • policy-guard — git stash push is a local stash, not a remote push (3064d48)
  • stack-skills — nuxt lens fires on app/storyblok, shopify lens guards Vite output (4e2cecf)
  • release-prep — card's trailing-blank filter runs on BSD sed too (2307506)

📖 Dokumentation ​

  • specs — author Spec 441 and 442 for the two open audit findings (ce4f04f)
  • specs — author Spec 439 — retire the spec-layout SessionStart hint (Spec 439) (a7b4941)
  • brainstorm — say how a living plan is worked, not only how it is written (07049be)
  • specs — complete Spec 437 — archify passive tool pin (Spec 437) (3ad3277)
  • audit — probe how a directory-source plugin behaves behind the current symlink (c044594)
  • specs — author Spec 437 — archify as a passive, sha-pinned diagram tool (Spec 437) (301a695)
  • audit — headroom verdict split into operational decline and unmeasured performance (3e53e2e)
  • tools — headroom proxy trial declined for the routed default (6e1cc41)
  • audit — record the archify trial against the Mermaid route (aea495a)
  • skills — tool-trial names the acquisition shape and measures a proxy on both sides (45d0046)
  • delegate — closed verdict and rejected-objection rule for opinion modes (c96bac2)

🧪 Tests ​

  • tests — satisfy shfmt in tests/plugin.sh (99ee407)
  • repair three pins that today's commits left red on macOS (f0ffd75)

🏗️ Wartung ​

  • audit — usage snapshots for 2026-09-15 and an expectations ledger (c752a0f)
  • tools — retire the watch-i-have-adhd blob pin (c8e09f6)
  • codex — drop the headroom init residue that failed on every Codex Bash call (ec41d16)

No commit type ​

  • Ich bin im Plan Mode – für einen reinen Commit-Message-Auftrag brauche i (6f75e8e)
  • Reconcile Spec 438 completion and follow-up fixes to review infrastructu (1d80ca8)
  • Erstelle Commit-Message ohne weitere Aktionen (6788cf8)

v0.36.0 — 2026-09-15 ​

Agents sind weg — 746 von 923 Dispatches in 30 Tagen nannten einen, Rollen sind jetzt Prompt-Dateien; die CrewBuddy-CLI installiert sich aus ihrem privaten GitHub-Release; der Spec-Lebenszyklus läuft aus drei Skripten statt aus Mains Handschritten; /delegate öffnet für Codex-, Kimi- und dsh-Läufe jetzt ein sichtbares Orca-Terminal, statt sie unsichtbar laufen zu lassen. Update mit devkit sync.

262 Commits seit v0.35.0 · Specs 198, 336, 375, 406, 409, 410, 411, 412, 415, 417, 418, 420, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 435, 436

✨ Highlights ​

🪦 Die Agents sind weg: Rollen sind Prompt-Dateien, keine Agent-Installation ​

746 von 923 Subagent-Dispatches in 30 Tagen nannten eine content/agents/-Rolle; die letzten drei sind stillgelegt, eine Rolle ist jetzt eine Prompt-Datei neben dem Skill, als nativer general-purpose- oder Plan-Subagent. devkit sync entfernt nur devkits eigene Links, die alten Befehle antworten AGENTS_RETIRED.

text
devkit sync
devkit has agent code-reviewer.md   # AGENTS_RETIRED use devkit path skill <name>, exit 2

🔁 /checkin hält eine laufende Session mit dir synchron, auf gemessenen Schwellen ​

Über 616 lokale Sessions lag die Folge ungefragter Edits bei p50 6, p75 15, p90 25, und 466 Sessions fragten nie. /checkin stellt nur die tragenden Entscheidungen in einer Frage, und checkin-hint.sh stupst nach 15 ungefragten Edits (DEVKIT_CHECKIN_HINT_EDITS) und danach alle 10 an.

text
/checkin

🔐 cb wird aus seinem privaten GitHub-Release über gh installiert ​

Die CrewBuddy-CLI ist auf macOS und Linux ein Pflicht-Tool, gepinnt auf 0.1.0 mit den vier sha256-Hashes aus der checksums.txt des Releases; ein github-release-Plattformblock darf jetzt download: gh tragen, und der Installer holt das Asset mit gh release download von github.com, während Pin, Archiv-Prüfung, Exec-Probe und atomares Umbenennen unverändert laufen (Spec 436). Ein fehlgeschlagener Download nennt die letzte Fehlerzeile von gh selbst, ein fehlendes oder abgemeldetes gh nennt gh auth login.

text
gh auth login    # einmalig, mit einem Account, der onedot-digital-crew/cli-crew_buddy lesen darf
devkit sync      # installiert cb 0.1.0 als Pflicht-Tool

🌳 Prime- und Wave-Worktrees hängen unter ihrem Aufrufer ​

prime-run.sh führt eine private Kopie seiner selbst aus, sodass ein Edit am Skript während eines Laufs den laufenden Wrapper nicht mehr mit Bytes an der falschen Stelle füttert und einen Worktree mit fertigem Patch abräumt (so ging am 2026-09-14 ein Vier-Dateien-Patch verloren). Sein Orca-Worktree ist ein Kind des aufrufenden Terminals statt --no-parent, und jeder /wave-Slice ist ein Kind des Haupt-Checkouts statt einer verstreuten Top-Level-Karte.

text
devkit run wave-prep.sh slice-dispatch --run <run_id> --spec-id <id> --name <slice> --main <main-checkout> --brief-file <path>

🧾 Bash-Edits gehören der Session, die sie gemacht hat ​

session-scope.sh zeichnete nur Edit-, Write- und MultiEdit-Payloads auf, also blieb jeder sed-, Heredoc- oder Python-Edit — und der Commit einer parallelen Session — unzugeordnet und verschob die Review input SHA einer anderen Spec (Spec 436: ein fremder Commit während des Reviews machte das Verdict ungültig). hook-dispatch.sh nimmt jetzt vor jedem Bash-Befehl einen Snapshot des Dirty-Trees, und der PostToolUse-Durchgang ordnet jeden Pfad zu, dessen Blob davon abweicht; ein vor dem Snapshot schon dirty Pfad bleibt fremd.

text
{ "name": "session-scope", "event": "PostToolUse", "matcher": "Edit|Write|MultiEdit|Bash" }

🧭 Jede Spec hält fest, welches Modell und welcher Harness dahinterstehen ​

Die AUTHORED/COMPLETED-Zeilen einer fertigen Spec tragen jetzt model: und harness:, aufgelöst von spec-agent-ref.sh aus der laufenden Session oder für delegierte Läufe an spec-finish.sh übergeben. Ein nicht auflösbarer Wert wird als — eingetragen, nie weggelassen.

text
devkit run spec-agent-ref.sh --model <id> --harness <id>
devkit run spec-finish.sh <ID> --verdict PASS … --model <id> --harness <id>

🍎 SwiftBars Plugin-Ordner registriert sich beim Sync — und bleibt stabil ​

Auf macOS trägt devkit sync das stabile $DEVKIT_HOME/swiftbar als SwiftBars PluginDirectory ein, wenn SwiftBar installiert und kein Ordner gesetzt ist — der manuelle ⇧⌘G-Schritt entfällt. Ein eigener Ordner wird nie überschrieben, ein vom Prune gelöschter versions/<v>-Pfad wird migriert.

text
devkit sync

⚙️ Der Menüleisten-Schalter ist ein Einstellungspanel geworden ​

Das SwiftBar-Menü zeigt und setzt jetzt jede config.json-Einstellung — Codex/OpenCode-Materialisierung, Update-Channel auf einer HTTP-Quelle, /review-Reviewer, Freigabe jeder /delegate-Runtime — und wendet eine Runtime- oder Channel-Wahl sofort an. devkit status --json liefert die Felder dahinter.

text
devkit status --json   # source_type, channel, staged_version, runtimes, review_runtime, registry_runtimes, missing_tools

🍎 CLI-Tools, Doctor und die Doku aus der Menüleiste ​

Das SwiftBar-Menü listet jeden Eintrag aus tools.json mit seinem Installiert- und Veraltet-Status, bietet die passende devkit tools-Aktion nur an, solange etwas fehlt oder veraltet ist, öffnet devkit doctor in einem Terminal-Fenster und verlinkt devkit.one-dot.io — alles aus devkit status --json, das tools[].{name,tier,installed,outdated} und tools_outdated_check ohne Netzwerkaufruf bekommt.

text
devkit status --json | jq '.tools, .tools_outdated_check'

👁️ /delegate öffnet standardmäßig sichtbar ein Orca-Terminal ​

delegate-visible.sh ist jetzt der Standardeinstieg von /delegate: ein Codex-, Kimi- oder dsh-Implement-Lauf bekommt ein Child-Worktree-Terminal in Orca, und nach einem grünen Lauf holt delegate-return.sh das Ergebnis selbst zurück und entfernt das Worktree. Ohne erreichbares Orca druckt es DELEGATE_VISIBLE_FALLBACK und fällt auf delegate-exec.sh zurück.

text
/delegate implement --brief brief.md   # öffnet ein Child-Worktree-Terminal in Orca, stderr live

🧠 Das i-have-adhd-Regelwerk läuft als gepinntes Plugin — für Claude, Codex und OpenCode ​

Das Upstream-Plugin ayghri/i-have-adhd legt seinen vollen 7,2-KB-Skill über den 700-Zeichen-Schnitt in core.md > Responses: per sha im devkit-eigenen Marketplace devkit-pins gepinnt, an Codex' SessionStart-Hook angehängt und in OpenCodes verwalteten Block geschrieben. Wer ~/.claude/.i-have-adhd-always löscht, ist dauerhaft raus; Kosten ~67 Always-on-Token plus 1747 pro SessionStart.

text
devkit sync

🧑‍⚖️ Review Level B: kompakte Specs brauchen kein Modell-Authoring-Review, ein Reviewer-Sitz pro Diff ​

171 von 225 Reviewer-Läufen in drei Wochen — 13 Reviewer-Stunden — galten Authoring oder Ideation, 10 von 31 Authoring-Reviews brauchten drei Runden oder mehr. Eine compact-Spec geht von Validierung und Approval Capsule direkt zu dir, full behält eine Runde plus Delta, jeder Diff hat einen Reviewer-Sitz.

text
devkit config review-runtime codex

⏱️ Verify-Ketten verwenden belegte Checks wieder, und test-prep überspringt die Suites einer parallelen Session ​

Spec 412 maß 1433 s für zwölf Läufe einer Suite; aufgeteilte &&-Verify-Ketten brachten dieselbe Phase auf 256–376 s mit 11–12 von 20–21 wiederverwendeten Segmenten, während die pauschale Suite-Wiederverwendung nach aufgetauchten alten Erfolgen wieder zurückgezogen wurde. --affected-only verwirft jetzt zuerst die Pfade einer parallelen Session und lässt deren Suites nicht mehr mitlaufen.

text
- [ ] AC3: … → verify: `grep -qF 'label' tests/spec-routing.sh && bash tests/all.sh --suite spec-routing`

🤝 /delegate führt Architektur, Prime und native Codex-Reviews durch eine Tür ​

Fortsetzungen brauchen eine explizite Session-ID, codex review-Ziele und eine architecture-Stufe existieren, Prime läuft durch delegate-exec.sh mit Credential-Scan, Review-Ergebnisse werden gegen result.schema.json validiert. Ein Brief über 100000 B geht per stdin, ein Host/CLI-Versatz warnt vor dem Dispatch.

text
devkit run delegate-exec.sh codex review --brief brief.md
devkit run delegate-exec.sh prime implement --brief brief.md --gate 'bash tests/all.sh --suite x'

🧠 Auto-Compact feuert an einem gepinnten Fenster ​

Die Kompaktierung landete bisher, wo das Kontextlimit des Modells gerade lag — die Statuszeile zeigte "0% until auto-compact" und die Zusammenfassung schnitt mitten in eine Anweisung. Der verwaltete env-Block pinnt jetzt CLAUDE_CODE_AUTO_COMPACT_WINDOW, das Vorrang vor /autocompact und der Einstellung hat.

text
CLAUDE_CODE_AUTO_COMPACT_WINDOW=800000   # verwalteter env-Block, gesetzt von devkit sync

🔍 Umbenannte Kopien entkommen der Reuse-Erkennung nicht mehr ​

jscpd 5.2.0s --ignore-identifiers fängt einen unter neuen Variablennamen eingefügten Block, den weder der Symbol-Detektor noch jscpds Wortabgleich traf; Type-3-Ähnlichkeit läuft im ungekappten Review-Scan. fallow-run.sh startet zuerst fallow doctor, ein leerer Report verbirgt keine unaufgelöste Config mehr.

text
devkit run reuse-guard.sh   # läuft mit --ignore-identifiers bei jedem Edit, 2s Budget
devkit run fallow-run.sh audit --format json   # warnt zuerst, wenn fallows eigenes Setup nicht bereit ist

🧰 Externe CLIs werden gegen ihre Upstream-Releases geprüft ​

Acht externe CLIs (kimi, hermes, dsh, orca, prime-agent, agy, context7, last30days) hatten keinen Upstream-Vergleich; kimi lag drei Minor-Versionen zurück (0.36.1 gegen 0.39.1). tool-pin-audit.sh vergleicht jeden kind: external-Eintrag mit dem neuesten Upstream-Release, auch Monorepo- und Pre-Release-Tags.

text
bash tools/tool-pin-audit.sh

🧱 dev-sync läuft aus einem verlinkten Worktree und das Gate baut die Docs-Site ​

tools/dev-sync.sh --worktree baut den HEAD des Worktrees, statt über den Haupt-Checkout zu springen — viermal in einer Completion-Kette —, und hält das Prune-Ledger im git common dir. Ein docs-build-Scanner ist rot bei totem Link oder Render-Fehler; baseline-widen und baseline-age wachen über Baselines.

text
bash tools/dev-sync.sh --worktree
devkit run quality-gate.sh

📏 Die Always-on-Regeln sind wieder stimmig ​

48 von 51 Redundanzvorschlägen des Regel-Audits betrafen pfadgebundene Regeln oder On-demand-Referenzen; der Antwortstil lebt jetzt an einer Stelle (core.md > Responses), 16 Referenzen in 10 Dateien auf zwei gelöschte Regeln sind umgehängt. Der Script-Contract behauptet nicht mehr, der Harness kürze Ausgaben.

text
devkit path rule core.md

🧰 spec-work läuft aus drei Skripten: Prep, Checks, Finish ​

spec-work-prep.sh <ID> erledigt Step 0 und 1 in einem KEY=value-Block, spec-checks.sh schreibt Checkboxen und Evidence-Zeile aus dem eigenen Lauf, spec-finish.sh <ID> schreibt beide Belege. Spec 415, die erste auf dem neuen Ablauf, brauchte 1 h 37 m für 5 von 5 Steps und ACs mit 17 Script-Aufrufen aus Main.

text
devkit run spec-work-prep.sh <ID> --start
devkit run spec-checks.sh <spec-path> --run-dir <dir> --phase acceptance --tick --append-evidence
devkit run spec-finish.sh <ID> --verdict PASS --review-input-sha <64hex> --reviewers <csv> --sections none

⌨️ cd-guard schreibt den Befehl um, statt einen Turn zu kosten ​

Ein führendes cd ins Verzeichnis, in dem der Bash-Aufruf ohnehin startet, kostete pro Treffer einen Retry-Turn; der Hook gibt den Befehl jetzt ohne Präfix über hookSpecificOutput.updatedInput zurück und meldet es in additionalContext. cd <cwd> || exit wird ebenso umgeschrieben.

text
cd /path/to/cwd && bash tests/all.sh --suite x   # läuft als: bash tests/all.sh --suite x

🔍 Eine Read-only-Delegation belegt jetzt, dass sie read-only war ​

Drei Runtimes können ihre Read-only-Stufe nicht erzwingen, und delegate-exec.sh hatte in 1138 Zeilen kein git status. Jeder Dispatch vergleicht jetzt git status --porcelain -uall plus Diff-Fingerabdruck vorher und nachher; ein Read-only-Modus mit geändertem Worktree druckt DELEGATE_READONLY_VIOLATION.

text
DELEGATE_READONLY_VIOLATION runtime=kimi mode=review new_entries=0 content_changed=1

💀 Ein Host-Kill wird nicht mehr als transienter Fehler verkauft ​

Ein vom Host gekillter Lauf endete mit Exit 4 und kaufte einen zweiten Dispatch an dieselbe Decke; ein SIGKILL innerhalb der Wrapper-Grenze ist jetzt Exit 2 (Brief teilen), timeout hat -k 20s. Eine 15-s-Probe <bin> --version weist ein hängendes Binary ab, ehe es 1800 s frisst (nach amElnagdy/delegate-skills).

text
devkit run delegate-exec.sh codex review --brief brief.md   # Exit 2 bei SIGKILL: Brief teilen; Exit 4 nur an der Wrapper-Grenze

Was sich für dich ändert ​

Neu verfügbar

  • Autohand delegiert Review, Research und Architektur mit im Runtime-Register gepinntem Modell; Implementierung wird verweigert, --bare isoliert vom Projektzustand, --path wählt das Repo.
  • Die macOS-Menüleiste ist ein volles Einstellungspanel, wendet eine Runtime- oder Channel-Wahl sofort an und synct auf Abruf — Einrichtung.
  • devkit run spec-agent-ref.sh löst Modell und Harness auf, spec-finish.sh --model <id> --harness <id> trägt sie in die AUTHORED/COMPLETED-Zeilen ein, — wenn unauflösbar.
  • kind: watched in devkit/tools/*.md pinnt einen upstream_path und Blob-SHA; bash tools/tool-pin-audit.sh meldet ok, behind, missing oder unknown.
  • DeepSeek-Harness-Delegation erhält die MCP-Server codegraph und context7 über --patch, geprüft gegen dsh 0.1.5-rc.1.
  • Plugin-Inventar-Änderungen werden bei Install und Update per Zählung gemeldet, ein Tausch bei gleicher Zahl bleibt unsichtbar; die Tool-Aufnahme hat jetzt sechs Kriterien.
  • /checkin stellt die tragenden Annahmen einer laufenden Session in einer Frage, und checkin-hint.sh stupst nach einer gemessenen Folge ungefragter Edits an.
  • devkit run delegate-exec.sh prime implement|status fährt Prime Agent über denselben Einstieg wie codex und claude, mit Credential-Scan; codex review und die architecture-Stufe sind neu.
  • devkit config review-runtime codex setzt den einen code-reviewer-Sitz pro Diff auf Codex gpt-6-astra und holt vor einer tragenden Entscheidung Codex' Meinung ein.
  • fallow doctor läuft automatisch vor fallow-run.sh audit|health|dupes|dead-code und warnt, wenn das Projekt-Setup nicht bereit ist.
  • Das Quality-Gate baut die Docs-Site (docs-build-Scanner), wenn node und node_modules/vitepress da sind, sonst unavailable; baseline-widen und baseline-age überwachen die Baselines.
  • Die eingefrorene Review input SHA deckt ein Change-Manifest ab — deklarierte Dateien plus jede Änderung außerhalb von ## Files to Modify, gemergte Spec-Commits inklusive — statt Worktree; 344 von 344 früheren Reviewer-Rückgaben hatten keine Scope-Prüfung.
  • tools/dev-sync.sh --worktree läuft aus einem verlinkten Worktree des Quell-Checkouts; das Prune-Ledger liegt im git common dir.
  • tools/content-budget.sh --measure <file> druckt exakte Token-Zahl, Cap und Headroom statt nur Verstöße.
  • tools/docs-drift-check.sh --accept <page...> nimmt mehrere Seiten pro Aufruf an, validiert vor dem ersten Rewrite.
  • bash tools/tool-pin-audit.sh prüft kind: external-CLIs gegen ihre Upstream-Releases und löst Monorepo- und Pre-Release-Upstreams je Tag-Familie auf (vier von fünf unknown geschlossen).
  • docs-page.sh find nennt den Begriff und das Alter des Caches, wenn es nichts findet, statt nichts zu drucken.
  • Die beiden Changelog-Skills fahren jedes Upgrade samt Verdrahtung in einem Durchgang; nur eine Routenänderung oder ein Schnitt fragt noch nach.
  • Die DESIGN.md jedes Kontext-Bundles trägt einen Adapterblock — Stack, Tokens, Inventar, Gate —, den ein Design-Skill zuerst liest; design-fill.sh füllt ihn aus dem Projekt.
  • /spec-work verlangt viel weniger Handarbeit: die Skripte tragen Step 0/1, Checkboxen und Belege; spec-work-prep.sh verweigert mit Exit 2 und Grund, Exit 3 ist Overlap, Exit 4 intern.
  • review-prep.sh hat --help und --all und nennt seine Caps als REVIEW_BATCH_HINT= und REVIEW_BATCHING=off neben REVIEW_COVERAGE=partial, statt 19 von 41 Dateien ohne Fortsetzungshinweis ungelesen zu lassen.
  • cb (CrewBuddy-CLI) 0.1.0 ist auf macOS und Linux ein Pflicht-Tool, das devkit sync aus seinem privaten Release über ein angemeldetes gh installiert (Spec 436).
  • cb update bewegt das Binary vom Pin weg; devkit tools --outdated meldet das, devkit tools --upgrade holt es zurück.
  • Ein github-release-Plattformblock in tools.json darf download: gh tragen; curl bleibt Default, ein unbekannter Transport scheitert vor jedem Netzwerkaufruf.
  • Das SwiftBar-Menü listet CLI-Tools mit Installiert- und Veraltet-Status, führt devkit doctor in einem Terminal-Fenster aus und verlinkt die Doku; devkit status --json trägt tools[] und tools_outdated_check.
  • AGENTS.md im Repo-Root gibt Codex, OpenCode und jeder anderen Runtime, die CLAUDE.md überspringt, die Canon-Lesereihenfolge und das Self-Repair-Mandat.
  • bash tools/tool-pin-audit.sh prüft ein marketplace_dir-Plugin gegen sein repo-lokales Manifest und nennt das abweichende Feld als mismatch:version oder mismatch:sha.
  • Die Doku-Seite fasst das Onboarding auf einer Workflows-Seite zusammen, beide Runtimes auf einer Runtime Adapters-Seite.
  • /fetch-task und /fetch-project-task bauen ihren Digest über cb — Pfadregel, .gitignore, Relationsmarken, der Untrusted-Content-Zaun, Anhänge — statt über zwei Prep-Skripte (777 Zeilen, 115 Assertions gestrichen) und laufen auch unter Codex.
  • Die Docs-Site rendert das Pen.app-Design 1:1: neue Navbar, nummerierte Schritte, Code mit Zeilennummern und Shell-Prompts, gerasterte Tabellen, Breadcrumbs und Footer, jede Landing-Zahl an counts.json gebunden.

Verhalten geändert

  • devkit sync registriert auf macOS den SwiftBar-Plugin-Ordner, wenn keiner gesetzt ist, auf dem stabilen $DEVKIT_HOME/swiftbar; ein eigener Ordner bleibt und bekommt den ln -s-Fallback.
  • devkit ignoriert Orcas OPENCODE_CONFIG_DIR in einem Orca-Terminal und fällt auf ~/.config/opencode zurück, statt in Orcas Hooks-Bundle zu schreiben; ein eigener Wert bleibt in Kraft.
  • Hetzner Inference ist aus Register, Panel und Docs entfernt (gemessen 1400–1800 s je Antwort), und mit ihm der HTTP-Dispatch-Pfad des Panels — ein Panel-Mitglied ist jetzt eine bin-Runtime.
  • /delegate öffnet standardmäßig ein sichtbares Orca-Terminal statt eines unbeobachteten Hintergrundprozesses; ohne Orca druckt es DELEGATE_VISIBLE_FALLBACK und nutzt delegate-exec.sh.
  • Die sechs Flow-Seiten sind eine Workflows-Seite, eine gemerkte docs/flows/<name>-URL liefert 404; die Site-Prosa fiel von 891 auf 513 Zeilen (66k auf 35k Zeichen), feature.md wuchs 1179→8273.
  • Alle sechs Flow-Karten der Landingpage öffnen ihre echten Guides; vier nutzten übersetzte Slugs, die auf die 404-Seite führten.
  • Der Required-Review-Fallback läuft Codex → Kimi → DeepSeek Harness vor Claude, Exploration wechselt auf medium effort in Codex und Sonnet in Claude — Routing, keine gemessene Beschleunigung.
  • Jeder gewählte Quality-Scanner nennt seine Coverage oder sagt, dass er keine gemeldet hat, und der Lauf druckt GATE_SCANNERS_SELECTED; Doku-Edits wählen den Docs-Build auch im Affected-Path-Modus.
  • Eine überlange Einzeldatei ist bei brief-gate.sh nur ein Hinweis (WARN=lines:<n>, Exit 0), weil eine Einzeldatei keine Trennstelle hat; Mehrdatei- und Check-Limits bleiben hart.
  • Regelkandidaten werden gemessen, ohne die Live-Regel zu überschreiben: --measure-text liest die vorgeschlagenen Bytes und wählt die Budgetklasse aus deren Frontmatter.
  • Ein Rollback auf ein agentbasiertes Release nutzt dessen eigene Runtime; der aktuelle Materializer verweigert Legacy-Agent-Inhalt, statt eine unvollständige Installation zu bescheinigen.
  • Review-Identitäten hashen echte Dateibytes, auch LF/CRLF-Änderungen hinter Git-Clean-Filtern, und der Delegations-Watcher erkennt Edits an vorhandenen untracked Dateien.
  • Review-Metriken erkennen native Plan-Reviewer und externe Runtime-Belege und zählen Befunde nach Tool-Identität, damit wiederholte Benachrichtigungen dedupliziert werden.
  • Das Spec-Authoring meldet verlorene oder unparsbare Dateideklarationen und Probe-Urteile je AC; sieben unparsbare Pfade passierten früher das strikte Authoring.
  • content/agents/ ist weg: devkit sync entfernt nur die Links, die devkit anlegte, und devkit has|list|path agent antworten ein Release lang AGENTS_RETIRED use devkit path skill <name>.
  • Eine compact-Spec bekommt kein Modell-Authoring-Review (18 von 31 brauchten eine Runde): strikte Validierung, Overlap-Preflight und Approval Capsule sind das Gate; full eine Runde plus Delta.
  • /spec-work erlaubt ein volles Implementierungsreview und eine Delta-Runde, danach setzt ein blockierender Rest blocked, sonst Follow-up.
  • Spec 412 brauchte neun Runden auf einem 486-Zeilen-Diff; über 245 Belege mit 443 Runden hätte eine Grenze von zwei 73 gespart.
  • Der Dispatcher prüft den eingefrorenen Input bei jeder externen Reviewer-Rückgabe, Main bei nativen; ein bewegter Baum ist REVIEW_INPUT_DRIFT, eine vertippte SHA REVIEW_INPUT_SHA_MALFORMED (Exit 1).
  • Spec 412 machte 37 Codex-Dispatches mit dieser Input-Prüfung von Hand, bevor der Dispatcher sie übernahm.
  • Ein AC-Verify darf deklarierte Checks in einer &&-Kette nur mit vollständigen Abhängigkeiten wiederverwenden; Repo-Suites laufen frisch, check-run.py leert BASH_ENV, ENV, SHELLOPTS.
  • spec-review-prep.sh zählt einen reinen Spec-Commit (Authoring, Statuswechsel) nicht mehr als gemergte Implementierung, und ein Pfad ohne Endung oder auf Root-Ebene landet jetzt im Review-Paket.
  • Der Policy-Guard liest rm-Flags und -Ziele je Shell-Segment, ein in einem anderen Befehl zitiertes rm leiht sich also kein -rf und kein Root-Ziel mehr von seinen Nachbarn.
  • review-runtime.sh --dispatch löst einen von dev-sync entfernten Checklist-Pfad auf, prüft Reviewer-JSON gegen result.schema.json, NO PERF VERDICT entwertet nur dispatchte Performance.
  • Ein Review-Brief über 100 KB stirbt nicht mehr mit Argumentliste ist zu lang (ein 220-KB-Brief tat es an Linux' 131072-Byte-argv-Limit): er geht als Brief-Datei und an codex per stdin.
  • /delegate scannt Briefs und Gates auf Credentials, eine Codex-Fortsetzung holt ihre komplette Endnachricht aus den JSON-Events, und die Versionsprobe erbt dein stdin nicht mehr.
  • /delegate an codex warnt bei Host/CLI-Versatz, braucht zum Fortsetzen eine explizite Session-ID, leitet schwere Diagnosen über die Architektur-Stufe und nimmt kimi aus dem zweiten Modell-Pool.
  • repo-explorer ist stillgelegt; breite oder laute Erkundung geht an den nativen Explore-Agent (Claude) oder den eingebauten Explorer (Codex).
  • Die Read-only-Grenze des Codex-Reviewers wird wieder erzwungen.
  • Live-Design-Extraktion ist an die Browser-Session ihres Worktrees gebunden und prüft die gefragte Seite; Recovery-Pins und Registry-Pfade passen zu den verteilten Tools.
  • Ein Payload ohne model-routing.json fällt in der Skill-Validierung fail-closed durch, ein vor den Manifesten signiertes Legacy-Payload validiert weiter, Rollback funktioniert also.
  • ## Files to Modify-Einträge auf Root-Ebene werden aufgelöst, und das Array-Handling dahinter ist auf Bash 3.2 (macOS-System-Bash) sicher.
  • reuse-guard.sh und der Klon-Scan im Review fangen beide eine umbenannte Kopie, die jscpd entging, und ein nicht lauffähiger Scan wird als unavailable statt clean gemeldet.
  • Der verwaltete env-Block pinnt das Auto-Compact-Fenster (CLAUDE_CODE_AUTO_COMPACT_WINDOW), die Kompaktierung feuert also an einer bekannten Schwelle statt dort, wo das Modell-Limit zufällig lag.
  • Lesbare Git-Ausgabe läuft hinter einer geschlossenen Befehlsgrammatik über RTK, und die Hooks halten Policy-Ausgabe und bestehende Trust-Routen beim RTK-Dispatch intakt.
  • /research verlangt einen begrenzten Agent-Runner, statt auf einen unbegrenzten zurückzufallen; Orca ist für verwaltete Worktrees und Tabs bevorzugt.
  • Unter den Regeln lebt der Antwortstil nur noch in core.md > Responses, 16 Referenzen auf zwei gelöschte Regeln sind umgehängt, und script-contract.md behauptet nicht mehr, der Harness kürze Ausgaben still.
  • Die Docs-Site baut wieder: der delegate-Skill nennt seine Task-Routing-Referenz als Backtick-Pfad wie jeder andere Skill.
  • shfmt ist auf Linux und macOS auf 3.14.1 aus dem sha256-geprüften mvdan/sh-Release gepinnt (apt lieferte 3.4–3.8 und widersprach brew), alle 279 Shell-Dateien formatieren sauber.
  • Der Install-Block eines Tools wird je Plattform (linux / darwin) aufgelöst, eine für CI gepinnte Version ist also auch auf macOS gepinnt, statt an brew zu hängen.
  • Der Session-Start-Hinweis meldet einen gescheiterten Hintergrund-Fetch — eine VERSION-Kollision hielt eine Maschine zwei Tage symptomlos auf 0.35.0; der nächste erfolgreiche Fetch löscht ihn.
  • Hoppe keine Delegation, die der Host gekillt hat: sie endet jetzt mit Exit 2, die Meldung sagt es — teile stattdessen den Brief.
  • Ein Review endet nach zwei Runden; braucht es scheinbar eine dritte, schneide den Scope neu, und das review:-Feld im COMPLETED-Beleg hält Runden und Blocks fest.
  • bash tests/all.sh druckt die Assertion-Zahl jeder Suite in ihrer Ergebniszeile, gelesen aus der .done-Datei der Suite, eine Zahl kostet also keinen zweiten Lauf mehr.
  • Der Verlustbeweis von Spec 375 hat eine zweite Ebene: tests/fixtures/skill-rules/ hält wörtliche Anker der Regeln, nur Zeilen unter 20 Zeichen verließen die Baseline (- Case 1 traf alles).
  • Der /spec-work-Text liegt nach zwei ergänzten Klauseln bei 4407 von 4500 Token, /review bei 5000 von 5000; lies beides mit devkit run content-budget.sh --measure <file>.
  • Die Edits einer parallelen Session entwerten dein Spec-Review nicht mehr: die Review input SHA deckt nur eigene und nicht zugeordnete Änderungen ab und bleibt ohne Session-Record fail-closed.
  • Der Implementation-Review-Waiver ist ein Prädikat für Routing und Completion: Header Implementation-Review: waived über dem ersten Abschnitt, jedes Kriterium ein deterministischer Verify.
  • Die Authoring-Probe stuft einen tests/all.sh-, test-prep.sh- oder quality-gate.sh-Verify als policy ein und überlässt ihn dem Implementierungslauf, statt einen 60-s-Timeout zu melden.
  • Ein Panel-Mitglied, das die dispatchte Stufe nicht mehr bedient, wird übersprungen, nicht befragt; heute ist kein Mitglied betroffen, codex, kimi und hermes tragen review in tiers; der Guard deckte 3 von 8 Runtimes ab.
  • Ein Kommentar-Edit, der nur einen Security-Begriff verschiebt, wählt den Security-Review-Abschnitt nicht mehr; eine passende Code-Zeile, ein neuer Begriff oder ein Security-Pfad tun es weiter.
  • bash tests/all.sh --suite runtime-route hängt nicht mehr an einem installierten prime-agent: die Baseline ist stub-gestützt, der eine ungeseamte Fall hält einen hermetischen PATH.
  • Review-Kosten werden getrennt von Gates gemessen: 242 fertige Specs hatten Median 2, p90 3, max 9 Runden, 18 % über zwei; Spec 425 brauchte 4 Runden, Spec 427 2, beide ohne Drift.
  • Der OpenCode-Adapter aktiviert die Session-Tools und entfernt nie einen Key, auch kein explizites null; devkit off lässt opencode.json unberührt, devkit doctor nennt Konflikte (Spec 429).
  • dsh- und prime-Delegates behalten die Tools, die ein Profil streichen würde: ein devkit-tools.patch.yml legt sich über den MCP-Patch, prime-run.sh weist ein fremdes --no-tools ab (Spec 430).
  • Ein Review überlebt einen unbrauchbaren Sitz und einen gewöhnlichen Commit: der Dispatcher läuft routes.review bis kimi/dsh ab, das Paket ankert am Authoring-Punkt der Spec, nicht am Subject.
  • test-prep.sh --affected-only verwirft nachweislich fremde Pfade mit einer Zählmeldung und fährt keine Suites einer anderen Session mehr; ein unbrauchbarer Store behält alles (Spec 431).
  • Das Spec-Implementierungsreview trägt Reuse-Kandidaten: reuse-detect.sh läuft über den gescopten Diff, und ein bestätigtes Duplikat ist ein Befund, der denselben Material-Impact-Test besteht wie jeder andere.
  • CodeGraph greift, wo es läuft: detect-stack.sh zählt *.jsx, *.mjs und *.cjs, brainstorm darf Grep/Glob/codegraph_explore nutzen, agent-graph.md nennt die echten Argumente.
  • Review blockt nur bei nachgewiesenem erreichbarem Versagen von Verhalten, Sicherheit, Daten oder Verifikation; kleine Befunde werden Follow-ups, spec-finish.sh nimmt PASS über zwei Runden an.
  • review-prep.sh --worktree reviewt die offenen Änderungen ohne ungepushte Commits (REVIEW_SCOPE=full|worktree), und ein codex-Brief über 16000 B wird vor dem Dispatch benannt (Issue #46).
  • review-runtime.sh --dispatch --candidate-sha reviewt einen Authoring-Kandidaten ohne Spec-Datei, und DELEGATE_READONLY_VIOLATION trennt geänderte Pfade in genannte und ungenannte (Issue #44).
  • spec-validate-prep.sh --strict-authoring lässt ein Zitat, dessen Zeile den Bezeichner nicht trägt, als evidence_off_line durchfallen statt zu passen (Issue #44); nach dem Draft ist ein Drift in eine Files to Modify-Datei nur eine Warnung.
  • devkit doctor nennt tote {file:...}-Referenzen in der opencode.json des Projekts, die opencode am Start hinderten, und warnt vor MCP-Einträgen im Schema vor type: "local" (Issue #43).
  • cd-guard schreibt cd <cwd> || exit 1 um wie cd <cwd> && …; jede andere ||-Alternative läuft unverändert mit Hinweis statt Block (Issue #47).
  • skill-lint druckt jeden Plugin-Skill, den es nicht prüfen kann, als plugin-skill <marketplace>/<plugin>/<skill>, ohne den Exit-Code zu bewegen; DEVKIT_SKILL_LINT_PLUGIN_ROOT lenkt um.
  • Ein Codex-, Kimi- oder dsh-Implement-Worktree kommt von selbst heim: nach grünem Lauf wendet delegate-return.sh den Diff an, verweigert in main dirty Pfade (DELEGATE_RETURN_DIRTY) und räumt auf; Prime liefert weiter einen Patch, den du selbst übernimmst.
  • Der Always-on-Plugin-Opt-in schreibt den Marker vor dem Flag, ein gelöschtes Flag wird also nie neu angelegt, und plugin list warnt, wenn der Pin keine User-Scope-Installation hat.
  • Ein Prime-Lauf unter Orca 1.4.201 stirbt nicht mehr nach einem Poll mit "no trustworthy worker state": die Settlement-Schleife akzeptiert den worker.dispatchId-Key, den Orca liefert.
  • Ein Prime-Lauf führt eine private Kopie von prime-run.sh aus; ein Edit am Skript während des Laufs lässt den Wrapper nicht mehr abstürzen und löscht seinen fertigen Worktree nicht mehr.
  • Ein Prime-Worktree ist ein Kind des aufrufenden Orca-Worktrees (--parent-worktree active) statt --no-parent, ein /wave-Slice ein Kind des per --main übergebenen Haupt-Checkouts.
  • Edits über Bash (sed, Heredoc, Python) werden der Session zugeordnet, die sie ausgeführt hat; eine parallele Session verschiebt die Review input SHA deiner Spec nicht mehr.
  • Der Stale-Index-Hinweis erreicht das Modell als additionalContext, sodass die erste Antwort einer Session /index selbst nennt, statt dir eine graue Zeile zum Übersehen zu lassen.
  • OpenCode bekommt das gepinnte i-have-adhd-Regelwerk bei jedem devkit apply in seinen verwalteten AGENTS.md-Block, solange ~/.claude/.i-have-adhd-always existiert, und verliert es beim nächsten Apply ohne das Flag.
  • delegate-exec.sh wertet ein stdout aus nur Whitespace als kein Ergebnis (Exit 2) und meldet, wenn ein Delegate einen schon dirty Pfad neu schreibt, statt eine leere Touched-Files-Liste zu liefern.
  • check-run.py schreibt das wirksame --timeout als timeout_s und benennt Records und Logs <criterion>-<execution-id>, sodass das Log eines fehlgeschlagenen AC über seine ID auffindbar ist.
  • Jeder Agent in diesem Repo, delegiert oder nicht, repariert einen Setup-Defekt, auf den er trifft, im selben Lauf und meldet Defekt und Fix zusammen, wie AGENTS.md es jetzt verlangt.
  • tests/check-run.sh und tests/tool-pin-audit.sh sind auf macOS grün, nicht nur in CI; keine Assertion hat ihre Bedeutung geändert.
  • delegate-exec.sh benennt einen Codex-Usage-Limit-Stopp jetzt als DELEGATE_USAGE_LIMIT runtime=<rt> retry_at=<when> statt eines nackten exited with 1 — kein verschwendeter Re-Dispatch mehr.
  • docs-drift-check.sh --accept nennt jetzt jede Quelle, die es zertifiziert, damit eine Drift-Annahme zeigt, welche Dateien sie genau abdeckte.
  • devkit doctor rät von $HOME aus nicht mehr zu codegraph init über das ganze Home-Verzeichnis oder einem toten memsearch-Reparaturbefehl; beide passen jetzt zum echten Projektzustand.
  • Lange autonome Implementierung routet von selbst zu Prime; die Regel lebte in einem Kopf und wurde in drei Läufen von Hand angewendet, bevor sie in agent-dispatch.md stand.
  • Delegation folgt den Tiers, Codex-Modi und routes des Registers statt hartcodierten Verboten; devkit config runtime <name> auto|on|off ist der Schalter.
  • Das Spec-Authoring streicht den Machinery-Precheck (256 Erwähnungen in 52 Sessions), und Validator-Warnungen blockieren auf der Compact-Route nichts: Fehler blocken, Warnungen wandern in die Freigabefrage.
  • Der Reviewer-Prompt meldet jeden Befund mit Konfidenz und Schwere, statt die unter 80 zu verstecken; Mains Blocking-Class-Entscheidung ist der Filter, das nie erzwungene 15-Turn-Budget ist weg.
  • Ungemessene Review-Zahlen lesen sich als null, nicht 0, und der Impact-Report nennt seine Unbekannten, statt sie als null zu summieren (Spec 417).
  • Die Docs-Gates werden rot bei einer Tabellenzelle über 600 Zeichen, einer Seite über 6000 Bytes Prosa, einem content/-Pfad in zwei Markern oder einer Seite ohne englisches Original oder Sidebar-Link.
  • Main baut keine bidirektionale Spec-Diff-Matrix mehr, und eine Prevalence:-Zeile ist nur noch für einen behaupteten wiederkehrenden Fehler oder ein zahlengebundenes Kriterium Pflicht.
  • Das Authoring-Review-Paket trägt eine Sources:-Zeile mit den Dateien, die der Reviewer öffnen darf, die ID-Eindeutigkeitsprüfung reserviert keine weiteren IDs, und spec-meta.sh --field liefert Fehler-JSON nicht mehr als Digest.
  • Ein Korrektur-Review beantwortet jeden ursprünglichen Blocker mit addressed oder unaddressed und meldet nur Regressionen, die der Fix eingeführt hat; eine fremde Beobachtung bleibt beratend, sofern sie den Material-Impact-Test nicht selbst besteht.
  • Ein Skill mit paths: bleibt aus der Liste, bis ein Read, Write oder Edit einen passenden Pfad berührt, und wird dann gelistet — sein Inhalt lädt nie von selbst, ein Prompt ohne Dateibezug macht so einen Skill also weniger auffindbar, nicht mehr.
  • /wave belegt die Freigabe eines Workers mit orchestration worker-list --run <run_id> --terminal-state reclaimable --json, und ein mehrzeiliger Terminal-Brief gilt erst als übermittelt, wenn --wait-submit 5 --json input_accepted meldet, nicht durch das Einfügen.
  • /devkit-tools-changelog liest je Upgrade jede Aufrufstelle ein zweites Mal und prüft den PR-Inhalt gegen die Felder, Exit-Codes und Zustände, die diese Aufrufer annehmen; ein unveränderter Befehlsname zählt nicht mehr als Kompatibilität.
  • Eine Claude-Session bekommt core.md einmal: das gepinnte Regelwerk lädt es schon always-on, der SessionStart-Hook gibt es jetzt nur noch an Codex aus, das keinen solchen Pfad hat.
  • Ein Pflicht-Tool, das über gh aus einem privaten Release kommt, bricht devkit sync auf einer Maschine ohne gh auth login nicht mehr ab: es zählt als fehlend, status, doctor und die Menüleiste zeigen es, der nächste Sync nach dem Login installiert es.

Was du tun musst

  • Nur wenn eigene Hooks code-reviewer, implementer oder repo-explorer nennen oder devkit has|list|path agent aufrufen: nutze einen nativen Subagent mit dem Prompt aus devkit path skill.
  • Nur wenn du Codex- oder Interpreter-Delegationen von Hand fortsetzt: behalte die Session-ID, die der Dispatch druckte — resume ohne sie wird verweigert.
  • Codex-Nutzer: der aktualisierte rtk-rewrite-Hook braucht deine native /hooks-Trust-Prüfung, bevor er läuft; bis dahin bleibt lesbare Git-Ausgabe ungeroutet.
  • Wenn /delegate code-mode host X against codex-cli Y warnt: gleiche beide vor dem Dispatch an — das Rezept, das 0.153.4 unter 0.154.0 löste, steht in devkit/tools/codex.md.
  • Wenn du /autocompact oder autoCompactWindow selbst gesetzt hast: das verwaltete CLAUDE_CODE_AUTO_COMPACT_WINDOW=800000 hat jetzt Vorrang.
  • Wenn du uv oder agent-browser von Hand installiert hast: die Pins sind gewandert, devkit sync verteilt Pins, keine Binaries — aktualisiere sie selbst.
  • Eine auf parallele Implementierer verteilte Spec braucht je Assertion einen Eigentümer, kein Arm fährt ein geteiltes Gate vor der Rückkehr aller — ein Dateischnitt auf Spec 415 kostete 190 s.
  • Ein Fix außerhalb von ## Files to Modify geht vor dem Review durch /spec-update: die Zeile ist digest-tragend, ein Edit an Ort und Stelle entwertet approval_valid nach verbrauchtem Review.
  • Eine Successor-Of-Spec auf einen blocked Vorgänger fällt als successor_predecessor_blocked durch: streiche den Header und seine depends_on-Kante, halte die Beziehung im Context.
  • Gib spec-checks.sh ein Check-Verzeichnis aus mktemp -d außerhalb des Baums, nicht Preps projektinternes RUN_DIR; die Ablehnung sagt es jetzt, statt einen Exit-4-Zyklus zu kosten.
  • Führe gh auth login mit einem Account aus, der onedot-digital-crew/cli-crew_buddy lesen darf; bis dahin bleibt cb fehlend — der Sync läuft durch und nennt gh auth login, der nächste devkit sync nach dem Login installiert es.
  • Melde dich einmal bei CrewBuddy an für /fetch-task und /fetch-project-task: cb druckt den Login-Hinweis selbst — nie einen Zugang in den Chat tippen.
  • Aktualisiere Lesezeichen auf die alten Flow-, Concepts-, Comparison-, Codex- und OpenCode-Seiten: Workflows, How it works, Runtime Adapters.
  • Für ein Projekt mit Design-Skill: Kontext neu bauen oder design-fill.sh laufen lassen, damit DESIGN.md den Adapterblock trägt, dann die TODO — confirm-Werte klären.
  • Eigene externe Review-Aufrufe müssen die eingefrorene Identität übergeben — --spec mit --review-input-sha, --review-tree-sha im Diff-Modus, --candidate-sha für einen Authoring-Kandidaten ohne Spec-Datei —, sonst verweigert der Dispatcher.
  • Wer das Always-on-Regelwerk i-have-adhd nicht will, löscht ~/.claude/.i-have-adhd-always; devkit legt es nie neu an, OpenCode verliert es beim nächsten devkit apply.
  • Ein grüner Codex-, Kimi- oder dsh-Implement-Lauf wendet seinen Diff an und entfernt das Worktree; behalten mit devkit run delegate-return.sh <worktree> --keep, bei DELEGATE_RETURN_DIRTY erst mains dirty Pfade klären.
  • Prime behält seinen eigenen Lebenszyklus und gibt dir einen Patch, den du prüfst und selbst übernimmst.
  • Wenn eigene opencode.json-Werte die ergänzten Session-Tools aussperren: devkit doctor laufen lassen, die genannten Konflikte auflösen und die ergänzten Keys selbst entfernen, falls sie je weg sollen — devkit off tut das nicht.
  • Wenn SwiftBar schon deinen eigenen Plugin-Ordner hat: einmal verlinken, ln -s ~/.onedot-devkit/swiftbar "<dein Ordner>/devkit" — die automatische Registrierung ersetzt nie einen konfigurierten Ordner.

🚀 Neue Funktionen ​

  • review — finding assessment owns the material blocking test and spec-finish drops the round cap (8b1c85e)
  • opencode — enable the session tools additively and report them (Spec 429) (9c6f258)
  • review — block on material impact, correction-only re-review, budget separate from completion (Spec 412) (8b16f1b)
  • review — the spec review package carries reuse candidates (0ec36d0)
  • spec-finish — refuse a PASS over the two-round review cap (40da4ee)
  • cli — add a macOS menu bar switch for devkit on/off (5756c33)
  • spec-validate — the authoring probe skips policy and suite verifies (b9d4755)
  • tools — report what a plugin update changes instead of discarding it (dc5e112)
  • delegate — MCP servers (codegraph, context7) on dsh via --patch overlay (8855e53)
  • tools — Watched blob pin for adopted upstream sources (Spec 424, WIP) (f6c8641)
  • delegate — Panel dispatch passes the tier choke point (Specs 422, 420) (c8c05c1)
  • review — One predicate decides the implementation-review waiver (Spec 423) (4ebbbdb)
  • review — A foreign session's edits do not void a spec review (Spec 418, WIP) (08e22c9)
  • delegate — Per-tier runtime resolver replaces the hardcoded refusals (Spec 420, WIP) (679f8f0)
  • spec-validate — Strict-authoring JSON discloses per-AC probe verdicts (7ff7c1a)
  • delegate — Measure the read-only claim instead of asserting it (8afb6b0)
  • delegate — Wire autohand as a read-only delegate runtime (50e1b5e)
  • dispatch — Route long autonomous work to Prime (9476aba)
  • routing — Foreign-vendor reviewer, explore at medium effort (fae6e95)
  • review — Review-prep names its batch caps, takes --all and --help (d2fec26)
  • review — Dispatcher re-verifies input, prep validates strictly (Spec 412) (42a7c44)
  • checks — Spec-checks --tick/--append-evidence, brief-gate advisory (Spec 412) (39f9048)
  • spec-work — Prep and finish scripts replace Main's plumbing (3eb1321)
  • spec-review-prep — Freeze the review on a change manifest (Spec 412) (b2afc87)
  • quality-gate — Build the docs site as a gate scanner (e0809a1)
  • dev-sync — Accept a linked worktree of the configured source (868d3b5)
  • tools — Pin shfmt to 3.14.1 on both platforms (5fadb7c)
  • tools — Resolve a per-platform block, not just linux (ee06e64)
  • routing — Codex review and architecture seats on gpt-6-astra, second opinion by default (0e25361)
  • agents — Retire content/agents and its projection (Spec 411) (911f401)
  • dispatch — Read roles from skill-local prompt files on native subagent types (Spec 410) (1decadb)
  • review — Verify the frozen review input after every reviewer return (Spec 409) (e822389)
  • tools — Content-budget.sh --measure prints count, cap and headroom (3751030)
  • index — DESIGN.md traegt den Adapterblock fuer Design-Skills (61d98ad)
  • spec — Review policy Level B — no authoring review on compact (7160e67)
  • quality-gate — Add baseline-widen and baseline-age advisory scanners (37c0f2b)
  • tools — Resolve monorepo and pre-release upstreams per tag family (450cce5)
  • skills — Drop the upgrade gate from both changelog skills (c9ad251)
  • reuse — Wire jscpd type-2/3 detection and a fallow doctor preflight (980c6a1)
  • skills — /checkin syncs a running session with the human (5dd7208)
  • tools — Audit kind:external CLIs against upstream releases (448c280)
  • env — Pin the auto-compact window in the managed env block (0b916d6)
  • hooks — Deliver the pinned i-have-adhd ruleset to Codex at SessionStart (0eb3608)
  • delegate — Run every delegate visibly in an Orca terminal by default (f71c1d1)
  • plugins — Pin i-have-adhd as a sha-pinned Claude plugin (Spec 435) (41a7fd1)
  • docs — Implement the devkit.pen landing and doc-page design (914e793)
  • swiftbar — Runtime, reviewer and channel settings in the menu (5baeb8e)
  • gates — Make docs accretion, shared sources and orphan pages red (16a5105)
  • swiftbar — Apply a runtime choice at once, add a sync entry (0056160)
  • delegate — Bring a delegate's worktree home and remove it; four workflow fixes (Spec 435) (d39fde6)
  • tools — install cb from its private GitHub release over gh (Spec 436) (d0d4a0e)
  • swiftbar — list CLI tools, run doctor and link the docs from the menu (7900e1a)
  • opencode — materialize the pinned i-have-adhd ruleset into the managed block (32021bc)
  • hooks — deliver the stale-index hint to the model, not only as a grey line (f9b27c6)
  • fetch-task — run the CrewBuddy digests through cb, retire the prep scripts (52532e1)

🐛 Fixes ​

  • devkit-tools-changelog — second read per call site, not a name-diff (fbd4cf2)
  • spec-review — a spec whose implementation predates its doc stays reviewable (Spec 420) (d78bd06)
  • issues — #43–#47 — material-impact test, scope propagation, SIGPIPE, dead references, unquoted whitespace (d437428)
  • spec-review — review input survives an ordinary commit (f3eda53)
  • review — parse a fenced or prose-wrapped verdict from a fallback runtime (84ceacd)
  • review — fail over to the next review runtime on an unusable seat (84776ef)
  • tooling — make CodeGraph usable where it applies (1122b64)
  • docs — Verlinkt die Ablaufkarten auf ihre vorhandenen Seiten (65d123e)
  • rollback — Stellt alte Agent-Dateien mit der Runtime der Zielversion wieder her (72b8182)
  • gates — Baut die Dokumentation bei Änderungen an ihren Eingaben (3cf6a2e)
  • docs — Liest Cache-Zeitstempel auch unter macOS korrekt (4931684)
  • budgets — Bestimmt das Regelbudget anhand des Kandidatentexts (68f828e)
  • metrics — Zählt native und externe Review-Ergebnisse (12b75e2)
  • delegate — Erkennt Änderungen an bereits vorhandenen unversionierten Dateien (5f30c26)
  • review — Behält den Security-Prüfumfang beim Entfernen von Kontrollen (84a3c5a)
  • review — Bindet Review-Nachweise an ungefilterte Datei-Bytes (bcdd30e)
  • checks — Führt Testsuiten mit unvollständigen Cache-Eingaben erneut aus (97cb89c)
  • menubar — ship the SwiftBar plugin as executable (350d7f3)
  • tools — close seven review findings on the watched blob pin (05c94e7)
  • rules — Say what paths: on a skill actually does (00d1063)
  • check-run — The run-dir error names the check directory (113a7ea)
  • spec — Strict authoring refuses Successor-Of on a blocked predecessor (Specs 422, 420) (cbe78e3)
  • review — A re-flowed comment no longer selects the Security section (Spec 422) (21192d3)
  • review — Close the fail-open edges in the spec review identity (Spec 418) (33b90a8)
  • spec — The authoring review package names the sources a claim rests on (758f5ea)
  • spec — Files to Modify names what it drops, and counts files not bullets (229fcbf)
  • tests — Update the Gate 5 pin to the corrected wording (31532ab)
  • metrics — Unmeasured review counts read unknown, not zero (Spec 417) (078b1eb)
  • content-budget — --help actually documents --measure and --measure-text (65b4872)
  • review — Blocking class 6 covers a fresh assertion, not only a weakened one (be4662e)
  • test-prep — A .agents/context edit now selects the content-language suite (a8732b8)
  • review — Gate 5 is a presence check, never a re-run (c254603)
  • review — Name the rerun knob the prep actually reads (Spec 415) (71a9ff4)
  • gate — The four silent scanners print their own counts (f83b647)
  • hooks — Cd-guard respects the quote class and refuses a broken tail (9e0066d)
  • gate — Every selected scanner names itself, silent or not (13d2486)
  • hooks — Cd-guard rewrites the command instead of costing a turn (34b6144)
  • tooling — Price a candidate wording, and stop --field emitting errors (8089642)
  • docs-drift — --accept names every source it certifies (feaa2a9)
  • lifecycle — Close five review follow-ups in the spec scripts (Spec 415) (0c59776)
  • delegate — A usage-limit stop is named, not buried in exit 1 (79e7715)
  • spec — Finish the warning-gate removal in spec-update and the skeleton (3bbeaee)
  • review — Coverage-first reviewer prompt, drop model-era filters (Spec 336) (8c7dcff)
  • docs-drift — Accept several pages per call, validated before the first rewrite (0013a0d)
  • spec-review-prep — A spec-only matched commit is not merged work (2ed8b99)
  • review-runtime — Re-resolve a stale checklist, scope the perf sentinel (f63dcd9)
  • hooks — Read rm flags and targets per shell segment (Spec 412) (7d5bbc1)
  • spec-checks — Reuse a declared suite inside an && verify chain (Spec 412) (6aaa7d6)
  • hooks — Preserve policy output and existing trust routes (6164bf9)
  • tools — Repair browser binding and stale consumers (af264ca)
  • hooks — Route readable Git output through RTK (c22c495)
  • dev-sync — Keep the prune ledger in the git common dir (8077296)
  • docs — Keep the relabelled scripts node inside the landing graph (Spec 411) (51db046)
  • review — Expose unavailable clone scans (05206f9)
  • research — Require a bounded agent runner (b88448c)
  • routing — Keep skill validation without a manifest (Spec 411) (ade78b2)
  • docs — Link the delegate task-routing reference the way every skill does (3e1d164)
  • spec-review-prep — Reject a malformed review input sha before comparing (Spec 409) (75f89d9)
  • routing — Prefer Orca for managed worktrees and tabs (4b533ca)
  • delegate — Close stdin on the codex version probe (59f9cbe)
  • review-runtime — Hand the dispatch prompt to delegate-exec as a brief file (b1605a8)
  • delegate — Hand a prompt above the argv limit to codex on stdin (77c1f79)
  • spec-review-prep — Keep extensionless nested paths in the declared file list (682d020)
  • review — Persist the Diff-mode drift line in the review package (Spec 409) (a3e3980)
  • hook — Report a failed background fetch at session start (3ede5ed)
  • delegate — Bind Codex follow-ups to explicit sessions (50864d6)
  • codex — Make the read-only reviewer boundary real again (1d3a4f9)
  • scripts — Resolve root-level Files to Modify entries and bash 3.2 array safety (4c60345)
  • delegate — Opt kimi out of the default-on secondary model pool (4f647b4)
  • delegate — Catch a code-mode host skew before the dispatch (0aea6dd)
  • rules — Repair the Karpathy adaptation's dead pointers (633ada0)
  • skills — Docs-page.sh find says why it found nothing (e0844ab)
  • rules — The harness does not silently truncate large output (fbb9b8e)
  • rules — Repoint 16 references to two deleted rules (a3a3066)
  • spec — Three setup defects met while authoring and running Spec 435 (Spec 435) (88057dc)
  • swiftbar — Stable plugin folder; ignore Orca's OPENCODE_CONFIG_DIR (b535b46)
  • plugins — Close the three Spec 435 review follow-ups in the always-on opt-in (Spec 435) (a093714)
  • prime-run — Accept the camelCase worker key Orca 1.4.201 returns (00790dc)
  • hooks — attribute Bash-made edits to the session that made them (Spec 436) (477855a)
  • tools — pin the gh release fetch to github.com (Spec 436) (73e8e08)
  • tests — check-run and tool-pin-audit suites green on macOS, not only in CI (1f884c1)
  • tools — close the Spec 436 review follow-ups on the gh transport (Spec 436) (942f2d6)
  • delegate,checks — no silent delegate success; observable budgets; audit sha-pinned plugins (9c5b190)
  • wave — create every slice worktree as a child of the main checkout (1225f3e)
  • prime-run — run from a private snapshot and hang the worktree under the caller (Spec 436) (f5983de)
  • prime-run — give worktree an explicit parent instead of --no-parent (ddcff18)
  • doctor — index health from $HOME stops advising codegraph init and a dead memsearch command (4dc385a)
  • rules — stop double-emitting core.md to Claude sessions (cf691be)
  • tests — five suites red in CI behind the shfmt gate, green again (94c075c)
  • tools — a download:gh tool without gh login is missing, not fatal (681251c)

⚡ Performance ​

  • test-prep — affected selection drops foreign session edits (Spec 431) (e546e05)
  • checks — declare every suite in the reuse policy (b5fd79b)

♻️ Refactoring ​

  • spec — Nutzt den gemeinsamen Parser für AC-Checklisten (c764975)
  • menubar — ship the plugin as its own SwiftBar folder (fc2fded)
  • spec-work — Skill text names scripts instead of their steps (55e0945)
  • spec — Prevalence only for claimed failures, one delta-round rule (Specs 412, 375) (9581b20)
  • spec — Drop the machinery precheck, analyze stage and warning gates (Spec 198) (dc45490)
  • index — Adapter block without target, inventory with precedence order (e5772a6)
  • agents — Retire repo-explorer, route discovery to native Explore (cd2167d)
  • rules — Close the audit's rule rewrites and dead duplicates (938d1f6)
  • rules — Unify response-style policy under core.md > Responses (cb4845d)

📖 Dokumentation ​

  • workflows — accept the drift marker after the 0.36.0 source review (d37e509)
  • menu-bar — the macOS menu bar switch gets its own page (e4d54dd)
  • devkit-docs — a newly added skill sorts first in the Highlights (54cd1a5)
  • tools — review orca v1.4.201, wire terminal send --wait-submit (24ef29e)
  • wave — prove worker release with worker-list, not memory (5e0ffcf)
  • devkit-docs — a skill delta is a mandatory changelog highlight (d6cac07)
  • research — record the review-process simplification assessment (8caf1d8)
  • changelog — record the post-v0.36.0 work in both changelogs (2b13794)
  • audit — pin measured review and fix-loop tails (0a3e8bb)
  • workflows — Gleicht die Review-Anleitung an die geltenden Abläufe an (f01e690)
  • audit — add the spec 427 review-cost row (0475cd2)
  • changelog — record the spec 427 review-round cap (4b72f73)
  • audit — add the first post-change review-cost row (fe83ed2)
  • changelog — record the spec 425 probe-skip fix (f7df4b7)
  • tools — the six-point bar a plugin candidate has to clear (7ed6367)
  • tools — record what stays a CLI, and what the memsearch pin misses (5341082)
  • audit — baseline the per-spec review cost before the next run (47f3a94)
  • tools — anchor when a capability becomes a plugin (d1883ef)
  • changelog — Record the spec 423 waiver-predicate fix (Spec 423) (84622c6)
  • changelog — Record the spec 418 review-identity fix (Spec 418) (1b3dabe)
  • flows — Re-accept four markers after reading the one line that moved them (f28bf40)
  • devkit — Land the orca spec panel audit, the TypeScript brainstorm and the autohand log (7ba54af)
  • specs — Add the 418 and 420 spec documents (54b0f6f)
  • spec — Drop the stale verified_assumptions_missing hint from the light skeleton (48b6fcf)
  • flows — Name the /spec-update route and the split owner seam (76f488f)
  • changelog — Record the spec 417 review-metrics fix (Spec 417) (3fd2dc5)
  • gate — Name the CHECKS/NO_CHECKS invariant where a scanner is added (25c4cf2)
  • changelog — Source the run figures, correct two more counts (Spec 415) (a5b21ed)
  • changelog — Correct the Unreleased numbers an audit refuted (Spec 415) (f930ae5)
  • changelog — Fill Unreleased with the 17 commits since v0.36.0 (Specs 415, 412) (b855cd1)
  • spec-work — Name the seam for a split, and the route out of scope (Spec 415) (61ad3f9)
  • spec-work — One review round plus one delta, then adjudicate (Spec 412) (2e21eea)
  • skills — Devkit-docs harvests every measured number and asks Codex for completeness (102e3d4)
  • changelog — Rebuild Unreleased from the 86 commits since v0.35.0 (d56e547)
  • backlog — Name the finding cap and the lint in the header (19340d6)
  • backlog — Keep the verify-probe row inside the finding cap (a3881d7)
  • flows — Re-set the flow page markers after the spec-work rule change (eeef062)
  • changelog — Friction fixes of the Spec 412 run, verify-probe backlog row (Spec 412) (778fa76)
  • spec-work — Delta rounds while each closes its findings, tick AC boxes (c7bbf15)
  • context — Record the change-manifest decision of Spec 412 (Spec 412) (4c2385f)
  • flows — Re-set the knowledge page source marker (5f4a8a8)
  • spec — Author Spec 412 — change manifest for review package and SHA (Spec 412) (835b1fa)
  • audit — Close-out section for the rules-vs-frontier audit (Spec 412) (6160cb0)
  • general — Mirror today's changelog rows into the German page and trim a flow row (9da0915)
  • flows — Split two over-long paragraphs and re-set the reviewed markers (6fe6472)
  • hooks — Explain RTK runtime activation (3a8b60f)
  • tools — Register every installed tool consumer (a9a685b)
  • review — Drop the Codex-Main frontmatter aside to stay under budget (b49086b)
  • spec — Complete Spec 411 — reviewed by codex gpt-6-astra (Spec 411) (e33f1d1)
  • changelog — Record today's review-transport and package-scope fixes (797d189)
  • review — Drop the triage bullet that duplicates contract item 3 (472976c)
  • spec — Complete Spec 410 — reviewed by codex gpt-6-astra (Spec 410) (26fd4b4)
  • spec — Complete Spec 409 — reviewed by codex gpt-6-astra and claude Plan (Spec 409) (fda84d4)
  • tools — Point fallow's implementer consumer at its new path (Specs 411, 410) (0b7d499)
  • backlog — Worktree-wide review fingerprint blocks back-to-back spec completion (8680445)
  • general — Record the 0.154.0 host repair and the agent-retirement changelog entries (acf9b87)
  • audit — Reference sweep — no missing speed tool, 21 of 43 candidates refuted on cost (e4da3a8)
  • gotchas — Point the budget gotcha at content-budget.sh --measure (d8c392c)
  • changelog — Record the review policy, explorer and codex changes (a558ec9)
  • audit — Rules-vs-frontier audit and the agent-retirement specs (0a9b131)
  • tools — Close the kimi secondary-model open item (090c4ba)
  • changelog — Fill Unreleased with the last 14 commits (d6ee737)
  • menu-bar — Plain fence titles; accept quoted menu labels in the changelog (8d52b46)
  • Changelog Unreleased for menu settings, SwiftBar folder, Orca OpenCode dir, Hetzner removal (08e499d)
  • site — Fold the six flow pages into one Workflows page (68f00fa)
  • site — Write the pages for the user, not the maintainer (6c7822f)
  • reference — Record the i-have-adhd plugin adoption in the watch notes (c94e47f)
  • specs — Author Spec 436 — install cb from its private release over gh (Spec 436) (7890d7f)
  • specs — complete Spec 436 — cb installed over gh, review PASS_WITH_FOLLOWUPS (Spec 436) (1334f0d)
  • agents — add AGENTS.md with the canon bootstrap and self-repair mandate (1e5ef11)
  • canon — every agent repairs a setup defect it hits, unasked (ee392c3)
  • Changelog Unreleased for cb over gh, child worktrees, Bash attribution (c3a53ae)
  • workflows — describe the delegate return path; drop the stale card sentence (ce89759)
  • menu-bar — keep the German intro under the 600-character paragraph limit (8a90f5b)
  • specs — give Spec 420 the COMPLETED line its closing commit skipped (29e2be3)

🧪 Tests ​

  • delegate — Spec 430 proves dsh tool re-enable and prime disable-flag refusal (Spec 430) (250847b)
  • off-on — freeze the payload source before doctor asserts clean (ff14198)
  • rules — The rule inventory is checked in both directions (d5234b5)
  • fixtures — Restore the loss-proof subset, keep the anchors beside it (d155c1e)
  • fixtures — The loss proof anchors rules, not prose (Spec 375) (5fd4a9d)
  • hooks — Protect policy output during RTK dispatch (aa6482d)
  • hooks — Define safe RTK routing boundaries (1107ffe)
  • review — Reproduce false clean clone scans (2db49b6)
  • research — Reproduce unbounded agent fallback (a44b96f)
  • hook — Make the 90-day stamp work on BSD date (fe1b31c)
  • delegate — Reproduce ambiguous Codex continuation (4b1240c)
  • fixtures — Register REVIEW_INPUT_DRIFT and sync the review-verdicts snapshot (b48dec1)
  • native-sweep — Hold the docs-page.sh no-match message (e0408e8)

🏗️ Wartung ​

  • specs — complete Spec 426 plugin skill inventory (b0711ce)
  • specs — pause Spec 406 pending a release, Harbor and a spend cap (Spec 406) (28e4256)
  • specs — close Spec 420 as shipped-in-HEAD (Spec 420) (55c1612)
  • specs — archive Spec 428 as superseded by the material-impact review policy (Spec 428) (7af04b2)
  • devkit-improve — Stamp the 2026-09-12 run (ea1c8d7)
  • ledger — Record the 2.1.263-2.1.266 window (129a417)
  • tools — Bump jscpd, fallow, uv and agent-browser to current (7188b71)
  • runtimes — Remove Hetzner Inference from the registry and panel (de76484)
  • runtimes — Drop the HTTP dispatch path with Hetzner (ae1468c)

No commit type ​

  • allow(Bash(devkit run feedback-issue.sh *)) (70fe754)
  • Skill-lint gains a read-only inventory of installed plugin skills, and d (Spec 429) (d07eb3a)
  • style(tests): reformat for the pinned shfmt (cb5a972)
  • Delegate: unify Codex/Claude/Prime routing and add structured review rec (5b4e37c)
  • Add SwiftBar auto-registration and spec/harness provenance tracking (Spec 432, 433) (d041da1)
  • Add model/harness provenance to spec Progress Log lifecycle lines (6f9f4d8)
  • Add design/devkit.pen — landing page mockup for the setup (a8ad4e8)
  • Update changelog with SwiftBar auto-registration and spec provenance ent (f096acd)
  • style: shfmt lib/opencode.sh and tests/delegate-exec.sh (87f8a58)

v0.35.0 — 2026-09-08 ​

/commit zeigt jetzt deine bereits erfassten Review- und QA-Verdicts, und Wave wählt für die Umsetzung automatisch Codex, wenn dein Orca-Host es kann. Update mit devkit sync.

78 Commits seit v0.34.0 · Specs 347, 375, 386, 398, 399, 400, 401, 404

✨ Highlights ​

🔁 /commit zeigt deine erfassten Review- und QA-Verdicts ​

/commit liest jetzt zurück, was /review und /spec-verify für die gestagte Spec bereits entschieden haben, und druckt es vor dem Diff — kein Commit einer Spec mehr, deren UAT eigentlich abgelehnt wurde, weil niemand nach oben gescrollt hat.

text
=== VERDICT SIGNAL ===
review: last PASS 12 minutes ago — not bound to this staged tree
uat: rejected 402

🌊 Wave wählt Codex für dich, nur wo es wirklich laufen kann ​

Waves Slice-Dispatch wählt jetzt automatisch Codex für die Umsetzung, wenn dein Orca-Host es composed starten kann (--agent/--model/--effort), und fällt sonst auf Claude zurück — ein Flag, falls du es erzwingen willst.

text
devkit run wave-prep.sh slice-dispatch --run <run_id> --spec-id <id> --name <slice-name> --main <main-checkout> --brief-file <path> [--runtime auto|claude|codex]

📐 Eine Spec misst ihre eigene Prävalenz, bevor Kandidaten-Bytes existieren ​

/spec verlangt jetzt vor Phase 2 genau eine Prevalence:-Zeile — eine gemessene Zahl, einen benannten Rare-Risk-Blast-Radius, oder einen Grund, warum die Population keine Zahl liefert — sodass eine „das passiert oft"-Behauptung Evidenz braucht, bevor sie eine full-Spec rechtfertigt.

text
Prevalence: rare — blast radius: <what breaks and for whom>

🔁 /delegate erreicht drei weitere Reviewer über ihren Produktnamen ​

Die Registry war nach Binary indiziert, sodass eine Anfrage nach DeepSeek über den Namen „unknown runtime 'dsh'" traf. Jeder Eintrag trägt jetzt seine Produkt-Aliase, und ein unbekannter Name listet, was er akzeptiert hätte.

text
devkit run delegate-exec.sh deepseek review --brief <file>

🔐 Cross-Session-Nachrichten brauchen wieder explizite Annahme ​

Eine SendMessage zwischen Sessions unterschiedlicher Permission-Mode-Klassen (ein unbeaufsichtigtes Wave-Terminal gegenüber deiner promptenden Session) lag hinter einem Dialog, den niemand klicken konnte, und fiel nach dialogExpiry weg. Jeder Sync erzwingt jetzt den annehmenden Key, statt ihn nur einmal zu seeden.

json
json
"crossSessionInbound": "accept"

Was sich für dich ändert ​

Neu verfügbar

  • devkit run delegate-exec.sh deepseek review --brief <file> löst eine Runtime über ihren Produktnamen auf (deepseek, open-interpreter, hermes-agent, openai), nicht nur über ihr Binary.
  • devkit list agents --scope project sieht jetzt einen projektlokalen Agenten so, wie devkit has agent es bereits tat.
  • rtk bun, rtk bunx, rtk deno ergänzen die bestehenden rtk npm/rtk npx-Wrapper (rtk 0.48.0).
  • /commit druckt einen reinen Report-Abschnitt === VERDICT SIGNAL === mit dem erfassten /review-PASS und /spec-verify-UAT-Verdict der gestagten Spec.

Verhalten geändert

  • devkit sync seedet vier enge Leseverzeichnisse statt deines ganzen ~/.claude-Homes — siehe „Was du tun musst", falls ein früherer Sync es bereits geweitet hat.
  • devkit sync erzwingt jetzt crossSessionInbound: "accept" bei jedem Lauf, statt ein hold/refuse nur einmal zu seeden.
  • Waves Kosten-Freigabefrage läuft wieder unbedingt vor der ersten Orchestrierungs-Mutation; der selbstzertifizierte „bereits autorisiert"-Skip ist weg.
  • Ein unbeaufsichtigtes Prime-Aufgeben stoppt jetzt zuerst den gestarteten Agenten, bevor der Worktree angefasst wird, statt einen Checkout zwangszuentfernen, an dem ein Agent noch schreibt.
  • Ein ## Files to Modify-Eintrag einer Spec, der einen nicht existierenden Pfad nennt, wird bei der Freigabe abgelehnt, wenn das Repo dieselbe Datei bereits unter einem anderen Pfad oder einem nahezu identischen Namen führt.
  • Eine einzelne untracked Datei, die eine andere Session im Checkout ablegt, bricht --affected-only nicht mehr fürs ganze Team; die Test-Map kann jetzt sagen, dass ein Pfad keine Suite treibt.
  • Die /test-Eingrenzung funktioniert jetzt auch nach dem Commit: bei sauberem Arbeitsbaum wählt sie die Suites aus dem ungepushten Range (@{upstream}..HEAD), --since <ref> benennt eine andere Basis, und die AFFECTED_MODE-Zeile sagt, welche es war. Jeder Weg bleibt fail-closed — nie ein Rückfall auf die volle Suite.
  • Die Wall-Clock-Grenze für codex review/implement liegt bei 1800s (vorher 1200s), und hermes-Läufe parsen --reasoning/--resume korrekt vor dem Prompt.

Was du tun musst

  • Hat ein früherer devkit sync deine ~/.claude/settings.json bereits geweitet, entferne den dort geseedeten nackten ~/.claude-Eintrag:

    bash
    bash
    jq '.permissions.additionalDirectories -= ["~/.claude"]' ~/.claude/settings.json > /tmp/s.json && mv /tmp/s.json ~/.claude/settings.json

🚀 Neue Funktionen ​

  • skills — Adopt what pays by default, ask only for a decision (5c0cf7f)
  • permissions — Seed the runtime directories as readable (7bb25c5)
  • skills — Make both changelog skills wire what they find (4f0a1c6)
  • automation — Deny prompts on the unattended headless runs (3d4e616)
  • spec — Add routing coherence gate spec, reverse-skill research, and (Spec 404) (2329f40)
  • spec — Disclose an acceptance-criterion verify that could not be split (Spec 399) (bc743ad)
  • review — Gate a spec's file list against its companion files (d08e0ee)
  • spec — Fail authoring on a reviewer role no agent can dispatch (Spec 347) (a67b6a0)
  • prime — Record which paths came from an external patch (Spec 401) (28efc04)
  • hooks — Block a redundant leading cd that forces a permission prompt (2ad24c7)
  • spec — Close two review-free paths to completed (Spec 400) (5d91cbe)
  • commit — Report the recorded review and UAT verdicts at commit time (Spec 398) (fad2e9c)
  • wave — Offer the friction escalation unprompted after every run (f6ad99e)
  • wave — Require a DEVKIT-FEEDBACK block in every end report (fc645dd)
  • hooks — Enforce crossSessionInbound accept on every wire (a22111d)

🐛 Fixes ​

  • tests — Die ORCA_*-Umgebung in test-lib isolieren, nicht pro Suite (230bfcf)
  • tests — Die Wave-Suite erbt ORCA_TERMINAL_HANDLE nicht mehr (2242b63)
  • test-prep — Gegen den ungepushten Range eingrenzen, wenn der Baum sauber ist (3587c51)
  • release-prep — Scope-Check faellt jetzt auf einen VERSION-Bump ohne Prep-Commit durch (26f6609)
  • prime — Only a clean not-found answer may skip the terminal close (a8cd107)
  • rules — Say how to commit a file another session also edited (be5a43c)
  • prime — Tear the started agent down on every unsupervised give-up (e3df62b)
  • wave — Restore the unconditional cost gate and bind Codex to composed launch (38a09d2)
  • permissions — Narrow the seeded read scope to the payload link dirs (d0618e5)
  • prime — Settle native Orca runs from worker state (bf89e18)
  • skills — Close the four findings this session's own runs produced (67bac0d)
  • tests — Let the output-contract assertion follow the citation (e9a92ce)
  • measure — Abort a measurement run on an unknown model id (e3dc700)
  • scripts — Count /skill-doctor, /diff and /advisor as built-ins (71a796b)
  • commit — Match a bulleted or bolded UAT verdict key (Spec 398) (6a8fa04)
  • delegate — Name the codex host skew before blaming the brief (3c81cd4)
  • runtime — Let list agents see the project scope has agent already sees (c922169)
  • commit — Resolve the UAT verdict for padded ids and loose spellings (Spec 398) (8fc36e7)
  • spec — Stop three wave rounds that were pure contract friction (8f6828a)
  • delegate — Make three of five reviewers reachable again (f457814)
  • hooks — Make an announce-gate block diagnosable after the fact (fa4cbee)
  • hooks — Detach session-end apply-pending to dodge SessionEnd abort (11625cb)
  • spec-verify — Say the spec is completed when routing a finding (fe37cbb)
  • review — Name follow-up findings in the answer when Diff Mode runs (49c7842)
  • test-prep — Let the map say a path drives no test suite (22c3b09)
  • content-budget — Pin the five largest skills where CI pins them (Spec 375) (b34e72c)
  • pre-push-gate — Fail on shfmt drift, not only on syntax (bb54b87)

📖 Dokumentation ​

  • flows — Die zwei Marker nachziehen, die die test-prep-Aenderung bewegt hat (46829ac)
  • devkit-release — Den Weg „Merge macht das Digest ungueltig“ in Schritt 1 benennen (be0fb5c)
  • release — v0.35.0-Changelog und Versions-Bump schneiden (2e3ac1e)
  • tools — Record the claude-code review this session actually ran (b7bac93)
  • tools — Date the parked blockers instead of implying them (50c79e1)
  • rules — Name the routes the last two releases opened (44f9b78)
  • spec — Add 405 — measure the problem, then converge the review (20c712f)
  • spec — Complete 398, 400 and 401 (22a527b)
  • spec — Cut 402 to the failure the measurement actually found (Spec 386) (e41d553)
  • spec — Add 402 — bind AC evidence to its criterion (ada65cc)
  • spec — Record the 400 and 401 implementation reviews (89c535c)
  • spec — Add 399 — say when a verify could not be split (e8a7788)
  • spec — Record the 398 implementation review and its two fixes (7480672)
  • review — An externally produced diff keeps the implementation review (Spec 401) (ddf61d1)
  • spec — Add 401 — record which paths came from an external patch (8730227)
  • spec — Add 400 — close two review-free paths to completed (c432423)
  • changelog — Record the two friction fixes under Unreleased (a1f350c)
  • spec — Add 398 — commit prep reports review and UAT verdicts (5a28a33)
  • changelog — Mirror the crossSessionInbound entry into the German page (6a0d0b6)
  • changelog — Point the entry at the commit that shipped it (bf997b2)
  • spec-work — Cite testing.md instead of restating the full-suite rule (3a7442f)
  • flows — Re-accept the feature drift marker after the review change (956cb68)
  • changelog — Record the test-prep map marker under Unreleased (71efc1d)
  • changelog — Record the two gate fixes under Unreleased (ce372f0)

🧪 Tests ​

  • prime — Prove the prune keeps a fresh external record (Spec 401) (dd7ff72)

🏗️ Wartung ​

  • audit — Usage-Snapshot fuer 2026-09-07 aufnehmen (30-Tage-Fenster) (02bf13f)
  • misc — Ignore the python bytecode the new eval suites leave behind (5e02af1)
  • reference — Resolve the three retroactive wirings (80a4ac6)
  • reference — Flip permission-prompts-none from parked to chosen (f817650)
  • tools — Bump rtk to 0.48.0 and jscpd to 5.1.2 (8f0b4c2)
  • reference — Resolve the built-in command correction to its commit (683211d)
  • reference — Record the 2.1.258-2.1.261 native verdicts (5cdae72)
  • gitignore — Ignore the local autohand state directory (5782b99)

No commit type ​

  • Generate commit message for staged spec-workflow evaluation tooling (c677118)
  • Generate commit message for staged spec-workflow changes (09745e5)
  • Fix the CODEX_HOME/CODEX_SKILLS_DIR test isolation bug and rework prime- (1a28dc9)

v0.34.0 — 2026-09-02 ​

/workspace fährt die Member-Specs jetzt selbst, ein Release-Worktree parkt keine Wave mehr, und /delegate … implement erreicht wieder codex-cli. Ein Hook nennt die Index-Lücke am Read, der sie traf. Update mit devkit sync.

65 commits since v0.33.0 · Specs 369, 370, 374, 381, 382, 383, 385, 386, 388, 389, 390, 391, 392, 395, 396

✨ Highlights ​

🏗️ /workspace fährt die Specs, die es geschrieben hat ​

Die Autoren-Route schrieb eine Spec pro Nachbar-Repo, gestartet wurde jedes /spec-work von Hand, und die Wave-Route wollte einen Orca-Host samt zwei Terminals pro Member. Der Treiber fährt sie aus der Mapping-Datei und überspringt Member, die nicht idle und sauber sind.

bash
bash
devkit run workspace-run.sh plan <mapping-file>
devkit run workspace-run.sh start <mapping-file> --yes
devkit run workspace-run.sh status <mapping-file>

🌊 Eine Wave parkt nicht mehr an einem Worktree ohne Namen ​

Das Overlap-Gate las die Slice-ID nur aus dem Verzeichnisnamen und schloss sonst zu, ein offener Release-Checkout blockierte damit jede Wave (#36). Ein Worktree nennt seine Spec jetzt über Verzeichnis oder Branch, einer ohne Namen wird benannt übersprungen statt den Lauf zu stoppen.

text
WAVE_APPROVE_WORKTREE_SKIPPED … reason=no-spec-id|detached

🤝 /delegate … implement erreicht wieder codex-cli ​

codex-cli 0.151.0 schließt --sandbox und --approve-for-me gegenseitig aus, jeder implement-Dispatch starb mit exit 2, bevor ein Token floss (#35). Ein Lauf, der seinen Tool-Channel verliert, nennt jetzt den Ausweg — den Brief schneiden — statt zum Neustart einzuladen (#37).

bash
bash
/delegate implement "…"

🪝 Die Index-Lücke wird am Read genannt, der sie traf ​

Ein Read außerhalb dessen, was /index kartiert hat, blieb dem Agenten selbst überlassen. Der Advisory-Hook sagt es im Moment des Reads, schweigt, wo es nichts zu sagen gibt, und bringt seinen eigenen Kill-Switch mit.

bash
bash
DEVKIT_SKIP_INDEX_GAP_HINT=1

🗺️ /index --map antwortet ohne Rebuild ​

--map meldet Stack, Sprachen, Refresh-Zustand und die obersten Hub-Zeilen aus den Artefakten auf der Platte und schreibt nichts — Orientierung ohne Rebuild.

bash
bash
/index --map

🧠 Ein Critical-Gotcha kommt am passenden Prompt an ​

GOTCHAS.md erreichte eine Session nur als kalter Neuner-Block. Eine Trigger:-Regex stellt den passenden Critical-Eintrag am Prompt zu, einmal pro Eintrag und Session.

markdown
markdown
Trigger: devkit run|content/(scripts|hooks)

🤖 Vier Runtimes als Wave-Worker gemessen — keine schließt ab ​

Spec 395 hat prime-agent, kimi, hermes und dsh live über Orca geprüft. Alle vier erreichen die Orca-CLI, keine liefert ein akzeptiertes worker_done — Orca vergibt die Dispatch-Capability nur an die Agent-Integrationen, die es selbst implementiert.

bash
bash
/wave   # ein Worker läuft weiter auf Claude

Was sich für dich ändert ​

Neu verfügbar

  • workspace-run.sh status klassifiziert jeden Member: idle, running, done, blocked, failed.
  • /index --map — nur lesender Orientierungsbericht, ohne Rebuild.
  • REVIEW_IMPACT=1 — Impact-Anhang in /review, Input-Hash unverändert.
  • devkit unlink nennt jeden fremden Pfad, den es stehen ließ, samt rm zum Entfernen.

Verhalten geändert

  • /delegate … implement läuft wieder mit codex-cli; bei tool-channel faults den Brief schneiden statt neu starten.
  • Der implement-Tier läuft auf xhigh-Effort, der Eskalationsplatz ist Fable 5.1.
  • devkit doctor warnt bei blockierten Reads außerhalb der Arbeitsverzeichnisse und wenn SUBAGENT_MODEL_FORCE das Agent-Frontmatter übergeht.
  • /spec bricht laut ab, statt eine bereits vergebene Spec-ID zu belegen.
  • /index meldet eine Retrieval-Ersparnis nur dort, wo sie gemessen wurde.
  • Eine Wave liest das Idle-Urteil vom Terminal-Screen statt aus dem Stream, installiert die Dependencies des Baseline-Worktrees vor der Messung und fasst die Inbox-Zeilen einer Nachbar-Wave zu einer gezählten Zeile zusammen.
  • Telemetrie zählt einen Hint über die genannte Aktion als konvertiert, nicht über den Skill-Namen.
  • Ein Spec-Review holt sich seinen Diff zurück, wenn die Arbeit vor dem Review gemerged wurde.

Was du tun musst

  • rtk 0.47.0 ist breaking: rtk grep --file-type/-t ist weg, -l/-t/-m gehen an natives grep.

🚀 Neue Funktionen ​

  • review — offer an opt-in impact appendix (Spec 386) (31fd0a5)
  • hooks — point at the index gap right after the read that hit it (Spec 385) (326301d)
  • index — report a retrieval saving only where one was measured (Spec 389) (dcdcf58)
  • model-routing — raise the implement tier to xhigh effort (Spec 369) (ce3a3ab)
  • telemetry — measure hint conversion by the action, not the skill name (Spec 370) (43daafd)
  • wave — measure four runtimes as workers, behind a checkable record (Spec 395) (230d847)
  • gotcha-recall — restate a Critical gotcha on the prompt it applies to (Spec 392) (d349566)
  • agent-eval — freeze the inputs and label the count for what it is (Spec 390) (fb4db2e)
  • index — give /index a read-only orientation map (Spec 388) (68b1c5f)
  • unlink — name every foreign path unlink kept behind (Spec 391) (3fec52f)
  • doctor — warn when reads outside the working directories are blocked (453123c)
  • model-routing — move the escalation seat to Fable (8b6e7a2)
  • project-migrate — close a run on what the reader still has to decide (be2b157)
  • specs — contract the three Graft adaptations that change a script (a1e613c)
  • routing — record the evidence behind the tier table (21e5d64)
  • rules — bind graph lookups to a stop condition and closed tool sets (f39f2f5)
  • workspace — run member specs unattended from the umbrella mapping (aefa871)

🐛 Fixes ​

  • delegate — name the workaround in the tool-channel fault marker (45bc09b)
  • wave — read the terminal screen for the idle verdict, not the stream (6e16da5)
  • workspace — count only spec files when deciding a member is done (b0a4b6e)
  • wave — an unnameable worktree that holds work fails closed again (219e74e)
  • spec-review — match the spec id in the subject, not the whole message (Spec 383) (768eee8)
  • wave — stop a release worktree from parking every wave (e9441a7)
  • codex — resolve the project hook from PATH, not a macOS home (3218978)
  • spec-386 — make AC2 measure the switch instead of its own side effect (Spec 386) (bd036ba)
  • hooks — stop @tsv from mangling the hook JSON it carries (e7322db)
  • delegate — mark a codex run that lost its shell output (e36c278)
  • test — derive the codex fixture's effort from the tier table (Spec 369) (b8f8615)
  • gate — clear the two standing reds in the main checkout (Spec 374) (56fa241)
  • spec-review — recover the diff when the work was merged before review (Spec 383) (1ace985)
  • wave — install the baseline worktree's dependencies before measuring (3013f65)
  • wave — a detached worktree is no sibling slice, so it must not park one (754f36f)
  • wave — collapse a sibling wave's inbox rows into one counted line (360f2a8)
  • doctor — warn that SUBAGENT_MODEL_FORCE ignores agent frontmatter (761cfa3)
  • context-fill — group the fill log by verb instead of per section (4612a06)
  • prime-run — name the continuation ceiling, not the brief (818e755)
  • spec-id — fail loudly instead of allocating a taken ID (fde4da7)
  • delegate — stop pairing --sandbox with codex --approve-for-me (953e816)
  • drift-check — stop reporting refs this repo cannot resolve (dd1cd66)
  • spec-work — keep the implementer report and the review freeze alive (Spec 396) (c0e1724)
  • spec-review-prep — drop the trailing space that reddens shfmt (415a760)
  • spec-work — bring the skill body back under the 4500-token ceiling (29610cc)

⚡ Performance ​

  • audit-prep — classify the signals in one pass (Spec 383) (681f7cd)

📖 Dokumentation ​

  • flows — carry the tool-channel fault workaround into flow 3 (d9b04c5)
  • tools — record the Orca v1.4.195 review (e7485d0)
  • wave — clear a foreign red at acceptance, not only at the gate (Spec 369) (d190785)
  • language — open the closed German list for Trigger regexes (Spec 392) (6e0dc32)
  • wave — attribute a red pre-commit gate before aborting the merge (Spec 390) (f8db432)
  • wave — name the installed-runtime trap a mid-wave repair walks into (26b0d09)
  • reference — close the read-scope and detached-background rows (d341017)
  • model-routing — name Fable 5.1 as what the fable alias now resolves to (fbf46f3)
  • reference — record the 2.1.252-2.1.257 changelog verdicts (bcac772)
  • research+specs — audit codebase-memory-mcp and EvoMap, draft three (3479293)
  • audit — record the agency-agents reference scan (533fa4e)
  • research — record the Graft adaptation audit and its deferred items (0143235)
  • api — point the ingest schema at its published contract (3c227d0)
  • changelog — fill Unreleased with the 57 commits since v0.33.0 (4bda2fb)
  • backlog — add findings on model routing for review, specs and waves (a0b5ee4)
  • devkit-docs — drop the changelog head cap, keep the per-item bar (8ddd375)

🧪 Tests ​

  • hook — prove the context warning fires well before compaction (Spec 382) (5e6c85d)
  • hook — close the two prune assertions the spec still owed (Spec 381) (4636665)
  • affected-map — select model-routing when lib/doctor.sh changes (6c17e9c)

🏗️ Wartung ​

  • tools — bump uv, agent-browser, fallow and rtk pins (78658ef)
  • autohand — add memory event log and index (b71a10c)

No commit type ​

  • Expand context-fill and design-fill dependency detection, add self-pruni (8a51e44)

v0.33.0 — 2026-08-31 ​

Das Schreiben einer Spec wartet nicht mehr auf das Repository: Der Reuse-Sweep hält nicht länger jeden Backtick für eine zu prüfende Datei, und das Review-Paket hasht den Arbeitsbaum in einem git-Prozess statt in 2406. Update mit devkit sync.

28 commits since v0.32.0 · Specs 028, 162, 368, 380, 383

✨ Highlights ​

⚡ Die Strict-Validierung durchsucht nicht mehr das ganze Repository ​

Jeder Backtick in ## Files to Modify galt als Datei, die die Spec anlegt — auch ein Flag-Name bekam seinen eigenen Repository-Scan. An einer Spec gemessen: 3069 ms auf rund 700, 2215 Prozesse auf 409.

bash
bash
devkit run spec-validate-prep.sh --strict-authoring --candidate <path> --target <path>

🔎 Ein Akzeptanzkriterium, das nichts beweist, sagt es jetzt ​

ac_verify_silent_gate warnt, wenn ein Verify-Kommando ein Gate zitiert, das bei Erfolg schweigt — 134 von 3758 Verify-Kommandos im Korpus tun das.

markdown
markdown
- [ ] AC1 — … → verify: `bash tools/content-budget.sh`   # warnt: schweigt bei Erfolg

Was sich für dich ändert ​

Neu verfügbar

  • trigger_collision im Quality-Gate meldet zwei Skills, die auf dieselbe Trigger-Phrase antworten.
  • DEVKIT_PRIME_RUN_RETENTION_DAYS=0 behält jedes Prime-Run-Verzeichnis; der Standard löscht terminale nach drei Tagen.

Verhalten geändert

  • Der Implementer-Brief nennt jetzt eine Report-Datei, damit ein abgebrochener Lauf eine Übergabe hinterlässt.
  • /challenge beurteilt einen Spec-Entwurf; eine vage Idee geht an /brainstorm.
  • Das Quality-Gate druckt den Report über unregistrierte Tools, den es bisher verwarf.

🚀 Neue Funktionen ​

  • spec — warn when an acceptance criterion leans on a silent gate (Spec 368) (2885c66)
  • skill-lint — catch two skills that answer the same trigger phrase (1fcb3af)
  • prime — prune terminal run directories older than the retention window (ff526f1)

🐛 Fixes ​

  • tests — follow the two contracts this session actually changed (6d9c0a1)
  • prime — reap the agent daemon no run owns any more (529a93a)
  • delegate — report a curl transport failure instead of an empty answer (50ead99)
  • spec-work — give the implementer brief the report file it is asked for (fd35a2a)
  • gate — let the unregistered-tools report reach a reader (9578bda)
  • skills — three contracts that contradicted their own callers (afacdc0)
  • rules — resolve the comment contradiction and stop overclaiming rtk (ccce673)
  • prime — name git's reason when the worktree cannot be created (124819c)
  • spec-complete — prune orphaned completion run directories (6ea0650)
  • tests — run the five assertions finish had cut off (Spec 162) (da9a550)
  • usage — measure whether the index hint is ever taken up (4c68963)
  • review — name the step that made the review package unwritable (4a451a5)

⚡ Performance ​

  • spec — tally the behavioral-delta fields once instead of per key (Spec 383) (2e80f82)
  • review — hash the tree in one git process, not one per file (Spec 368) (7d1b350)
  • spec — scope the planning reuse sweep to declared paths (Spec 368) (1682950)

📖 Dokumentation ​

  • audit — a second, independent measurement of the spec workflow (cfbab63)
  • flows — re-anchor the three markers after the spec-path changes (27f1e94)
  • audit — measure what the language gate cannot see (7a7a95a)
  • prime-agent — record what nine parallel runs actually cost (Spec 380) (6a1d362)
  • audit — measure the real cold load and the plan-slice backlinks (Spec 028) (960952d)
  • core — measure the cold load CLAUDE.md claims instead of quoting a stale one (3709762)
  • gate — describe the output the gate actually produces on green (60fa824)

🏗️ Wartung ​

  • tools — bump jscpd, fallow and agent-browser pins (492b367)
  • prep-lib — expand symlink-guard one-liners in review_package_write (87a9a29)
  • audit — refresh the 2026-08-31 usage snapshot to the evening window (4cfb9ee)

v0.32.0 — 2026-08-31 ​

Die Spec-Validierung fiel von 962 auf 62 Sekunden, ein voller Kontext meldet sich im Verlauf, und devkit apply entfernt die Alt-Hooks, die devkit ersetzt. Update mit devkit sync.

33 commits since v0.31.0 · Specs 154, 250, 381, 382, 383

✨ Highlights ​

⏱️ Die Spec-Validierung startet dieselbe Suite nur noch einmal ​

Kriterien mit derselben Suite starteten sie je einzeln. Das Verify wird an && geteilt, der geteilte Anteil läuft einmal — 962 auf 62 Sekunden.

bash
bash
devkit run spec-validate-prep.sh --strict-authoring --candidate <f> --target <spec>

🧭 Ein voller Kontext warnt, solange du noch handeln kannst ​

Eine Zeile bei 115000 Token, danach alle 51000 — über 101 Sessions gemessen. Oberhalb der Schwelle verstummt sie nie.

bash
bash
DEVKIT_SKIP_CONTEXT_WARN=1

🧹 Alte npx-Hooks raus, der Rest bleibt ​

Ein Eintrag fällt nur, wenn seine Datei bytegleich mit einem npx-Artefakt ist und devkit denselben Namen ausliefert.

bash
bash
cat ~/.claude/.od-hooks-pruned.json

Was sich für dich ändert ​

Neu verfügbar

  • DEVKIT_SKIP_CONTEXT_WARN=1 schaltet die Kontextwarnung für eine Session ab.
  • DEVKIT_SKIP_HOOK_PRUNE=1 schaltet das Entfernen der Alt-Hooks ab.

Verhalten geändert

  • Ein Session-Start kann Alt-Hooks entfernen, die devkit ersetzt; jeder wird vorher gesichert.
  • devkit doctor endet nicht mehr auf „Alles gesund." über eigenen Warnungen; devkit status nennt das Kommando zu offenen Punkten.

Was du tun musst

  • Fehlt dir danach ein Hook, steht er in ~/.claude/.od-hooks-pruned.json.

🚀 Neue Funktionen ​

  • reuse — close the five remaining semantic-duplication gaps (14c1853)
  • hooks — warn about a filling context while there is still room to act (Spec 382) (849d232)
  • reuse — look up an existing source before the second view is built (f96c602)
  • hooks — prune the legacy hooks devkit itself replaces (Spec 381) (13bf973)
  • reuse — detect two components reading one source on a page (9992a62)

🐛 Fixes ​

  • tools — stop an empty npm prefix array from killing the sync (1269566)
  • wave — name the nested-repo boundary before a slice loses its work (9b65a69)
  • status — close the three gaps a prime-agent sweep confirmed (0ce2de6)
  • delegate — stop codex research from timing out at 150s (5cab655)
  • doctor — stop a green verdict from standing over its own warnings (7531b24)
  • errors — give two bare exit codes their reason (be352b1)
  • migrate — count a kept legacy file in the apply verdict too (9ce8af9)
  • doctor — name the command behind open migration items (ac191aa)
  • design — name a reason when the fill step has no stderr (7cd4842)
  • migrate — count a dry-run's drifted copies in its own verdict (4a5e85f)

⚡ Performance ​

  • spec-383 — collapse the last three repetitions and map the sandbox suite (Spec 383, 154) (93543a4)
  • spec-383 — collapse the review-batch and quality-gate repetitions (Spec 383) (f81e418)
  • spec — probe an AC verify per conjunct, not per criterion (Spec 250) (da1a4cf)

📖 Dokumentation ​

  • fixtures — add git-stderr reason to migration failure message (485b938)
  • troubleshooting — name the hook a prune can remove (Spec 381) (fcf416e)
  • spec — add Specs 382 and 383 — context warning, repetition fixes (b24548c)
  • spec — add Spec 381 — prune only the legacy hooks devkit replaces (Spec 381) (a212552)
  • audit — record the AC-probe cost analysis and its correction (Spec 250) (222c2b6)
  • changelog — record the two issue fixes under Unreleased (18212d9)
  • audit — record the defect-class sweep and its verification (1b2809e)
  • onboarding — say what an open migration item asks of you (502a1e0)
  • site — link the CLI reference from the landing page (92341a3)
  • changelog — say what devkit apply is and when stable lags (1aa5b34)

🧪 Tests ​

  • skill-lint — stop case (g) from reddening on stderr it never read (8a507c9)
  • make two silent fixture skips announce themselves (c193bb1)

🏗️ Wartung ​

  • spec — drop the 383 candidate scratch file (c1ec826)
  • audit — capture 30-day usage snapshot for 2026-08-31 (e8bb5f5)
  • backlog — park the two ONEDOT items that need their own cut (d8c1dab)

v0.31.0 — 2026-08-30 ​

Jede Session laedt 1267 Token weniger, bevor sie arbeitet, jeder passende Edit 4666 weniger. Update mit devkit sync.

35 Commits seit v0.30.0 · Specs 321, 372

✨ Highlights ​

⚡ Weniger Text vor der ersten Zeile Arbeit ​

GOTCHAS.md faellt von 2639 auf 1372 Token, drei path-scoped Regeln von 6860 auf 2194.

bash
bash
bash tools/content-budget.sh

🧪 Eine Payload-Aenderung messen statt sie zu lesen ​

Zwei Arme, dieselben Fixture-Tasks; ein Unterschied innerhalb der Lauf-zu-Lauf-Streuung gilt als Rauschen, nie als Verbesserung.

bash
bash
bash tools/agent-eval.sh --tasks tools/agent-eval/tasks

📦 Ein neues Paket aeussert sich zu seiner Identitaet ​

Ein Verdikt je hinzugekommenem Paket — accepted, review, blocked, unavailable. Jeder Fehlerpfad liefert unavailable, nie accepted.

bash
bash
printf 'package-lock.json' | devkit run dep-acceptance-prep.sh

Was sich für dich ändert ​

Neu verfügbar

  • bash tools/agent-eval.sh misst eine Skill-, Regel- oder Agent-Aenderung gegen eine Kontrolle.
  • devkit run dep-acceptance-prep.sh meldet Identitaet, Herkunft und Lizenz je neuem Paket.
  • devkit run budget-prep.sh vergibt eine Turn- und Laufzeit-Obergrenze fuer jeden Delegate-Lauf.

Verhalten geändert

  • Pro Tool-Aufruf laeuft ein Hook-Prozess statt fuenf; eine blockende Policy steigt sofort aus.
  • quality-gate.sh startet nur die Payload-Scanner, die deine Aenderung brechen kann; --full und DEVKIT_QUALITY_GATE_FULL=1 fahren weiter alle elf.
  • Eine Always-on-Regel sagt jetzt: gefetchter Text ist Daten, nie eine Anweisung.

🚀 Neue Funktionen ​

  • agents — give the implementer a 1h prompt cache TTL (39e01e3)
  • tools — make jscpd a required tool (f00de2a)
  • eval — measure a payload change instead of reading it (2f3ea4a)
  • deps — a new package answers for identity, not only for CVEs (81345a1)
  • budget — give every dispatch a ceiling it cannot quietly exceed (2f82ce1)
  • rules — state the untrusted-content boundary as an always-on rule (d383adc)
  • routing — route the review tier onto opus (1612a09)

🐛 Fixes ​

  • ci — gate the tag on a hosted run of the SHA, not on a local emulation (5735842)
  • tests — stop EPIPE in a producer from reddening its assertion (de64d0e)
  • ledger — let a parked row be closed at all (031aeb5)
  • hooks — refuse a symlinked marker dir before mkdir and chmod touch it (Spec 372) (9df7682)
  • doctor — subagent model env is a default, not an override (478b94e)
  • wave — label a sweep row that belongs to another run (b774ee9)
  • delegate — give the explore tier a bound a research brief fits in (c1f3582)

⚡ Performance ​

  • rules — three kernels keep the decision, the rest moves behind a pointer (56eaf5f)
  • gate — route the payload scanners by changed file (556797d)
  • context — GOTCHAS carries invariants, the archive carries incidents (11b47da)
  • hooks — one payload parse per event instead of five (ce20972)
  • skills — move branch detail out of the five largest skill bodies (5f0dccc)
  • routing — drop two coordinator skills off opus (f7c5219)
  • routing — match twelve skills' effort to what their bodies do (29068cf)

📖 Dokumentation ​

  • changelog — record the EPIPE assertion fix under Unreleased (eb08e89)
  • tools — register jscpd and record why its absence was silent (Spec 321) (8294b5e)
  • tools — record kimi's upgrade path and the refusal that hides it (a2d57f5)
  • tools — register kimi as an external delegate runtime (e930a77)
  • spec — nine specs from the perf/token audit and the blocks research (19a454e)
  • audit — record the model/effort routing audit over all 39 artifacts (e71121a)

🧪 Tests ​

  • agents — document the experimental frontmatter key (03241c3)
  • hook — pin the jscpd format map, register the last three runtimes (07891c9)
  • rules — follow the text specs 374 and 375 moved into references (7f41c92)
  • affected-map — cover opencode and model-routing.json (99afde5)

🏗️ Wartung ​

  • tools — record the tool-pin review cadence marker (b60a945)
  • tools — bump uv, agent-browser, fallow and headroom pins (f20dd62)
  • reference — record the 2.1.247-2.1.251 changelog verdicts (ffea080)

No commit type ​

  • style(tests): apply shfmt to the EPIPE assertion guard (5d84514)

v0.30.0 — 2026-08-28 ​

/delegate bekommt DeepSeek Harness als vierte Runtime, die auch umsetzt; Gates, die gruen melden konnten ohne zu pruefen, fallen durch; eine bereitliegende Version wird am Session-Ende angewandt. Update mit devkit sync.

52 Commits seit v0.29.0 · Specs 298, 347, 360, 361, 362, 363, 364, 365, 366, 367

✨ Highlights ​

🤝 Eine vierte Delegate-Runtime, und sie schreibt ​

DeepSeek Harness laeuft als dsh: read-only fuer Review, workspace-write fuer implement. Sie hat alle sieben Specs dieses Bereichs umgesetzt.

bash
bash
devkit run delegate-exec.sh dsh review "beurteile diesen Diff"
devkit run delegate-exec.sh dsh implement --brief brief.md

🚨 Ein Gate, das nichts geprueft hat, ist rot ​

Eine unlesbare Datei ging mit Zaehler 0 in den Sprachscan und galt als geprueft; zwoelf Erfolgs-Assertions prueften nur ein Praefix und schluckten ein checked 0.

bash
bash
bash tools/content-language.sh

Was sich für dich ändert ​

Neu verfügbar

  • devkit run delegate-exec.sh dsh <review|research|implement>, mit DEEPSEEK_API_KEY in $DSH_HOME/.env.
  • /devkit-improve arbeitet die gesammelte Friction und verworfene Review-Findings ab.

Verhalten geändert

  • Eine bereitliegende Version wird am Session-Ende angewandt; DEVKIT_SKIP_SESSION_END_APPLY=1 schaltet es ab.
  • hook-install seedet den env-Block nicht mehr: devkit apply schreibt ihn (Automations-Kommando — der SessionStart-Hook führt es aus, nicht du), hook-uninstall entfernt ihn.
  • Die strikte Spec-Validierung faellt bei einer unbekannten AC-Referenz und einem leeren Verify durch.
  • Die bindende Spec-Freigabe steht jetzt hinter dem Authoring-Review.

🚀 Neue Funktionen ​

  • release — run the workflow's steps, not a list of remembered ones (8b35cf7)
  • hooks — apply a pending version at the session-end boundary (Spec 364) (e07bd6a)
  • spec — record rejected findings and mine the friction they leave (Spec 367) (dfd5941)
  • spec — make an unresolvable AC reference and an empty verify block (Spec 361) (8138f1a)
  • manifest — harden the session manifest and its impact report (Spec 360) (b330175)
  • hooks — give the env block one owner and a withdrawal path (Spec 363) (538ae60)
  • delegate — give dsh a real implement tier via workspace-write (c33b5d3)
  • delegate — add dsh as review-only delegate runtime (5007fda)

🐛 Fixes ​

  • spec — stamp the outcome line eight closed specs never got (c4b0f23)
  • hooks — keep the improver nudge inside the repo that owns the skill (Spec 367, 365) (694d5f1)
  • delegate — stop truncating away the line that says what failed (e950967)
  • spec-work — show the PASS receipt the completion kernel accepts (7a020e5)
  • prime-run — refuse a patch against a base the checkout left (0c7ae89)
  • delegate — give the implement tier a 3600s bound (fe2b19f)
  • hooks — name the sentence that blocked the stop (6b80454)
  • prime-run — keep a parallel run's worktree out of cleanup (db40085)
  • gates — report only what the gates actually checked (Spec 366) (d9f4307)
  • spec — stop template.md prescribing a silent-on-pass budget gate (Spec 367) (3b56202)
  • delegate — pin dsh review to read-only and drop its panel arm (78b5e09)
  • delegate — treat a balance/quota refusal as transient, not terminal (9b980d8)
  • spec-validate-prep — stop reporting a fail status as a script defect (7144740)
  • brainstorm,challenge — name the Ideation checklist section in the brief (9e6ce5f)
  • review — restore four review questions spec 347 dropped (Spec 347) (afd5c08)
  • codex-policy-guard — keep inert heredoc bodies out of the policy scan (4059901)

♻️ Refactoring ​

  • spec — move the binding approval behind the authoring review (Spec 365) (921ce94)

📖 Dokumentation ​

  • changelog — record the 47 commits since v0.29.0 (Spec 363) (5e17035)
  • spec — fix the inverted kill switch in spec 364 (Spec 364) (2a3a58e)
  • spec — drop the gate waiver triage.md still described (Spec 365) (244ffe2)
  • spec — extend spec 361 to the acceptance criterion nobody produces (Spec 361, 366) (3cc7610)
  • spec — add spec 367 to close the improvement loop (Spec 367, 298) (891c4c5)
  • spec — add spec 365 and close the last backlog row (Spec 365) (3eecae7)
  • spec — add spec 366 so the gates report only what they checked (Spec 366) (5ea00e1)
  • spec — add specs 360 and 363, closing the last backlog rows (f93d936)
  • spec — add spec 361 for the AC reference and empty-verify gates (Spec 361) (1aefd58)
  • review — number the Authoring checklist gates (36681a4)
  • brainstorm — settle the verify form for the Claude review adapter (25ec200)
  • spec — add spec 364 for applying a pending version at session end (Spec 364) (9f37f41)
  • spec — add spec 362 for the deleted review-workflow assertions (Spec 362, 347) (a7f2b94)
  • session-close-hint — record that the Stop systemMessage is rendered (97d79f1)

🧪 Tests ​

  • review — cover the review workflow paths nothing exercised (Spec 362) (d910943)
  • delegate — accept the seventh raw sandbox left by 9b980d8 (d06d13c)

🏗️ Wartung ​

  • tests — format the two files the static gate flagged (5107957)
  • gates — accept the wave's sandbox and docs baselines (Spec 364) (de16369)
  • spec — close spec 364 (Spec 364) (f0c58a9)
  • spec — close spec 367 (Spec 367) (eb5e6dd)
  • spec — close spec 361 (Spec 361) (2565a6d)
  • spec — close spec 360 (Spec 360) (1ac25f1)
  • spec — close spec 363 (Spec 363) (dc38aaf)
  • spec — close specs 362 and 365 (f191f50)
  • spec — close spec 366 and accept the eighth raw sandbox (Spec 366) (344634d)
  • backlog — bind four rows to their landed spec and brainstorm (62de1fd)
  • backlog — record the drain decisions for 15 open entries (51ccb82)

v0.29.0 — 2026-08-27 ​

Gates, die gruen meldeten ohne zu pruefen, fallen jetzt durch; ein blockierter Lauf nennt die Zeile statt einer Klasse, die 22 Stellen teilen; /delegate erreicht zwei weitere Runtimes; frische Installationen laufen wieder. 30 Commits. Update mit devkit sync.

30 Commits seit v0.28.0

✨ Highlights ​

🚨 Ein Gruen, das nichts geprueft hat, ist rot ​

Ein umbenanntes Content-Root liess den Sprachscan checked 0 file(s), 0 violations drucken und mit 0 enden — von einem sauberen Lauf nicht zu unterscheiden. Die Baseline ist jetzt der Zeuge dagegen.

bash
bash
bash content/scripts/quality-gate.sh

🔍 Ein blockierter Lauf nennt die Stelle, nicht die Klasse ​

capability stand fuer 22 verschiedene Fehlerpunkte, invalid_target fuer 10. Das Reason-Enum bleibt fuer Aufrufer stabil, die genaue Stelle geht nach stderr — Zeilennummern und Fehlercodes, nie Spec-Bytes.

bash
bash
devkit run spec-update-prep.sh --json <ID> 2>err.log

🤝 Hermes und Open Interpreter beantworten eine Delegation ​

Vier Runtimes nehmen ein Briefing. Hermes verweigert implement — keine Workspace-Sandbox, nur ein Flag, das jede Freigabe uebergeht.

bash
bash
devkit run delegate-exec.sh hermes review "<question>"

Was sich für dich ändert ​

  • Eine frische curl | bash-Installation laeuft auch dort durch, wo npms globaler Prefix root gehoert.
  • Ein Prime-Lauf ohne einen einzigen Turn scheitert jetzt sichtbar, statt einen leeren Patch zu veroeffentlichen.
  • Jede Panel-Antwort nennt ihr Modell; geteilte Basismodelle sehen nicht mehr wie Uebereinstimmung aus.

🚀 Neue Funktionen ​

  • release — the card carries the whole hand-written entry, not just its lead (d3a569c)
  • delegate — add Open Interpreter, drop hetzner from the panel (7e7e645)
  • delegate — name each panel member's model in its block header (72397a6)
  • delegate — register Hermes Agent as a fourth runtime (48412c9)

🐛 Fixes ​

  • gate — a language scan that resolves nothing is red, not an empty green (35f8a8c)
  • spec-update — every blocked reason names the site that produced it (be357bb)
  • spec — candidate_invalid names its cause, and the reviewer stops hashing (01e7141)
  • prime-run — a run without a turn is a failure, and it names its cause (3c3b5f1)
  • ci — the smoke asks the CLI for its version the way the CLI spells it (13e6d2d)
  • tools — install a package manager before the entry that needs it (f075c2d)
  • release — the installer gate is a job, and its assertion checks the job (1144af0)
  • tools — install globals where the user can write, and gate it in CI (91bf2d8)
  • delegate — two trigger phrases, one concrete and one generic (bcaaf62)
  • tools — pin a plugin version to what its ref ships, not to the tag (4a8a179)

📖 Dokumentation ​

  • devkit-docs — compute the release digest after every other commit (ee1c516)
  • changelog — record the reason-collapse and empty-green fixes (53b3527)
  • changelog — record the prime-run and candidate_invalid fixes (7002752)
  • flows — the spec route leads with reversibility, delegate names its runtimes (e6287b3)
  • reference — park Open Interpreter as a candidate (b9ac10b)
  • tools — note that scripted prime-agent shutdown needs --force (ea89f07)
  • audit — record the adversarial validation of the tool-pin update (5e1068b)
  • delegate — hermes reads source through a secret mask (f04d7d1)
  • delegate — a shared base model is correlation, not one opinion (0df8ed5)
  • tools — record that a prime-agent bump breaks live runs (a9eb04f)
  • rules — teach agent-graph what codegraph 1.6.0 returns (51bf7bf)

🧪 Tests ​

  • release — read the notes projection without a pipe (0abc8d8)
  • content-language — six sandboxes come from mk_sandbox, and the baseline goes (adb3175)
  • core — name the doctor finding, and sandbox the resume-grant fixture (ed9d530)

🏗️ Wartung ​

  • backlog — park the API-ref guard's false positive on its own documentation (5d6e399)
  • tools — bump codegraph, rtk and headroom to reviewed pins (f33e606)

v0.28.0 — 2026-08-26 ​

/debug reproduziert einen Bug als roten Test, bevor der Fix entsteht, und der Kandidaten-Ledger weicht einer Append-only-Datei: 412 unentschiedene Zeilen gegen 61 Landungen. Update mit devkit sync.

76 Commits seit v0.27.0 · Specs 065, 145, 334, 358

✨ Highlights ​

🐛 /debug schreibt zuerst den roten Test ​

Der Skill macht erst weiter, wenn der Test, der den Bug reproduziert, tatsächlich rot war. Ein Fix ohne vorher roten Test ist eine Vermutung, die zufällig funktionierte.

bash
bash
/debug the wave sweep counts a permission dialog as idle

📓 Referenz-Entscheidungen liegen in einer flachen Datei ​

docs/reference/decisions.md nimmt eine Zeile pro Entscheidung — keine Verdikte, kein Backlog, keine Uhr. Ein Befund, über den niemand entschied, wird nirgends geschrieben; genau das waren die 517 geparkten Zeilen.

bash
bash
grep -i '<topic>' docs/reference/decisions.md

Was sich für dich ändert ​

Neu verfügbar

  • /debug <symptom> reproduziert einen Bug als roten Test und behebt ihn dann — --red und --green sichern die beiden Hälften ab.
  • devkit run task-digest.sh macht aus den offenen Tasks eines Projekts je einen Digest, verlinkte Issues inklusive.

Verhalten geändert

  • /devkit-harvest ist weg, der Scan schreibt docs/reference/decisions.md; der alte Ledger ist eingefroren und bleibt lesbar.
  • Eine Spec-Review-Receipt fingerprintet den ganzen Worktree; eine untracked Quelldatei lässt ein Verdikt nicht mehr grün.
  • Eine Suite, die früh endet, kann nicht mehr grün melden: finish schreibt eine Datei, die tests/all.sh verlangt.

🚀 Neue Funktionen ​

  • reference — Replace the candidate ledger with an append-only decisions file (bfdd06a)
  • ledger — Add park and drain the 412-row backlog with it (0b1aab2)
  • ledger — Add unbatch so a reversed batch decision can be withdrawn (be3f96d)
  • hooks — Fire the recall ladder on the question, not on a file touch (d6be6be)
  • audit-gate — Require a recorded needle per sidecar row (aade74a)
  • ledger — Add the reject verb and start the batch clock at commit (b372b98)
  • skills — Record linked issues, pulls and the AI analysis in the task digest (Spec 358) (a400d89)
  • reminder — Name the unlanded harvest backlog before the scan nudge (283266e)
  • debug — Reproduce a reported bug as a failing test before the fix (dcbea5b)
  • migrate — Roll the CodeGraph index out with project-migrate (27b3035)
  • skills — Let every dispatching skill resume its own delegate (64ba276)
  • skills — Enumerate a project's open tasks into per-task digests (4514e4d)

🐛 Fixes ​

  • tests — Give mk_repo a local git identity, and withhold HOME in the clean room (b7f85eb)
  • tests — Derive the codex hook count from the file it ships (e1e4bca)
  • tool-trial — Record decisions in the file that is still open for writes (b9fbef2)
  • ledger — Stop promising a reversibility no code provides (f730fc2)
  • harvest — Require a delegated classification to commit its sidecar (2b4797d)
  • memsearch — Repair the two open findings of the usage audit (571f01b)
  • review — Close three PASS-without-checking paths (e885d42)
  • orca — Repair the eight misuses the 1.4.188 surface audit found (88f2161)
  • audit — Require a quoted evidence fragment where it is cited (b1e7e1c)
  • prime-run — Delete the run branch and report what cleanup left (4f2e0d0)
  • tooling — --bare silently fails to authenticate, so stop recommending it (2c02114)
  • audit-gate — Flag a sidecar row the expected set does not carry (753457c)
  • test-prep — Derive no suite name from a tests/lib helper (600a2f6)
  • prime — Stop losing a finished run to the shfmt stage (97e92e3)
  • skills — Teach the changelog scan to sweep the grant surface (657176f)
  • telemetry — Name 18 native slash commands as built-ins (d37cf1c)
  • spec-work — Size the brief by lines and anchor-read the file list (Spec 065) (8a7644d)
  • wave — Ship the approved spec revision and name a blocked worker (898c4a6)
  • test-prep — Narrow to changed test files when no index answers (96f5403)
  • runtime — Resolve agents and skills up to the host project root (6659f3e)
  • scripts — Stop a prep crash from reading as a refusal (bb6104b)
  • review — Pin the collation the batch offset slices by (3a67637)

♻️ Refactoring ​

  • ledger — Remove the four verbs the queue took with it (fce2a82)
  • harvest — Delete the skill whose input the freeze removed (c198022)
  • scan — Write decisions, not candidates (00498ed)
  • harvest — Cut the queue machinery and close the tap that filled it (Spec 145) (6409690)
  • harvest — Make the queue drainable instead of row-by-row (d477e9d)

📖 Dokumentation ​

  • audit — Recover the harvest verdict sidecar the seven batches lost (4bbaff2)
  • audit — Keep the B2 patch and name the regression that blocks it (8ba28b2)
  • audit — Review the six Orca guides the surface audit skipped (ff628e4)
  • audit — Orca surface audit against app 1.4.188 (286ab9d)
  • audit — Brief batch B2, three green-PASS defects in the review chain (93b0b88)
  • audit — Brief the long-tail harvest batch (262115a)
  • audit — Brief the gstack harvest batch (43d313e)
  • audit — Brief the gsd-core harvest batch (8d453a7)
  • tooling — Setup-token needs the subscription, not an API key (c5567ab)
  • audit — Brief the headroom harvest batch (553963d)
  • audit — Brief the EveryInc harvest batch (8edbac7)
  • audit — Brief the mattpocock harvest batch (de6b438)
  • audit — Brief the harvest pre-pass for a Prime run (43cf3ae)
  • changelog — Record the codegraph rollout and the truncated suite (Spec 334) (5006865)
  • reference — Close the two adopted 2.1.246 rows (3916d12)
  • audit — Record how the setup actually uses codegraph (deb80ba)
  • reference — Record the 2.1.235-2.1.246 native verdicts (9f7429d)
  • changelog — Record what the four friction issues changed (3e8cb43)

🏗️ Wartung ​

  • tooling — Restore shfmt formatting in pin-check-reminder (13d2063)
  • audit — Delete the harvest artifacts their own runs consumed (bf3c08e)
  • ledger — Open batch B3-evidence-matches-claim with four rows (24a6c10)
  • ledger — Land batch B2-review-pass-integrity (ea45049)
  • audit — Gate the adversarial Orca adoption pass (a9253b8)
  • audit — Gate the Orca surface audit against the frozen CLI schema (24f5f2a)
  • ledger — Open batch B2-review-pass-integrity with three rows (9dd0d50)
  • ledger — Decide three of the reinvented rows (3744783)
  • ledger — Close three long-tail candidates the batch located (3a01f8c)
  • ledger — Close three gstack candidates the batch located (29b9423)
  • ledger — Close five headroom candidates, withdraw two superseded (3e2310a)
  • ledger — Close two EveryInc candidates the batch located (383abdb)
  • ledger — Close two mattpocock candidates the batch located (cacae96)
  • ledger — Close three native candidates the pre-pass located (ba2e6d9)
  • ledger — Close three candidates the Prime pre-pass proved landed (1cc7f04)
  • ledger — Close capped-window-reports-true-total as landed (be1cca2)
  • ledger — Close three seam candidates landed by /debug (4db486b)
  • backlog — Close the load flake row with what 3a67637 actually fixed (0f901a7)
  • backlog — Park the skipped installer smoke and the load flake (654709d)

v0.27.0 — 2026-08-26 ​

Das groesste Update bisher, und es geht um Tempo. Der unbedingte Kontext faellt von 24.760 auf 3.166 Bytes, acht Agentendefinitionen werden drei, ein Review ersetzt den Rollen-Fanout: weniger Token vor der ersten Zeile, ein Dispatch weniger je Spec. 125 Commits, zehn Specs. Update mit devkit sync.

125 Commits seit v0.26.0 · Specs 042, 095, 346, 347, 348, 349, 350, 351, 352, 354

Breaking Changes ​

  • ccusage, ast-grep, repomix und typos verlassen den Fleet-Install, mmdc faellt auf Linux aarch64 weg.

    Migration: /devkit-retro weist fuer Codex- und Kimi-Laeufe keine Kosten mehr aus, die AST_LINT-Spur verlaesst den Quality Gate, post-edit-lint gibt keinen Typo-Hinweis mehr, /research faellt auf plain acquisition zurueck. Wer eines behalten will, installiert es selbst.

✨ Highlights ​

🪶 24.760 Bytes unbedingter Kontext werden 3.166 ​

Neun Regeldateien luden in jede Session, jeder Subagent erbte sie erneut. Eine traegt den Rest.

bash
bash
printf '{}' | bash hooks/session-start-notify.sh | jq -r '..|.additionalContext?//empty'

Was sich für dich ändert ​

Verhalten geändert

  • Nur core.md laedt unbedingt, jede andere wartet auf ihren paths:-Ausloeser.
  • Der Implementer gibt hoechstens 1.200 Zeichen zurueck, eine leere Reviewer-Rueckgabe blockiert als not_reviewed.
  • Unter CI ist die Telemetrie aus, fuenf Hinweis-Hooks schreiben nach systemMessage statt in den Modellkontext.

Was du tun musst

  • devkit sync je Projekt laufen lassen und pruefen, ob die Session core.md traegt.

🚀 Neue Funktionen ​

  • tools — drop four tools that never earned their install (54a7cae)
  • scripts — continue the right session, wait natively, reindex when told (8e9f1aa)
  • scripts — sandbox the public render, modernise the secret scan, audit uv locks (18934e0)
  • scripts — isolate the parsers rg, python3 and shfmt depend on (1d72e6b)
  • skills — pin the browser session, narrow fallow, fail closed on headroom (c0d220f)
  • prime-agent — understand before dispatch, name the setup defect (7a0d6d9)
  • tools — gate the per-tool depth trial on measured surfaces (9365a38)
  • tools — gate a tool-integration audit on recounted call sites (8c24499)
  • quality-gate — keep the compact page shape from drifting back (e4bdd79)
  • quality-gate — fail when a published page is written for maintainers (9dc6b0e)
  • review — silence is not a pass, and a fix outside the list is not in scope (3cc5f4c)
  • spec — the authoring gates hand the reviewer its checklist (Spec 347) (acc4702)
  • review — the checklist path reaches the reviewer, or the run fails visibly (Spec 347) (c1266a0)
  • review — a reused review must have covered the sections the signal selects (Spec 346) (b26ee7c)
  • telemetry — the collection names itself, skips CI, and stops billing hints to the model (43fed4e)
  • agents — the implementer reports to a file and a stuck fix loop escalates once (d6e0fd9)
  • rules — the always-on set drops from 24,760 bytes to one 3,166-byte file (38dcce8)
  • prime — let a run name its provider, and route Prime through sol (835a0a8)
  • telemetry — every session leaves a manifest a release can be read from (Spec 352, 351) (65b6d8c)
  • tests — a green run names its coverage, an empty one fails (Spec 350) (83a3ffb)
  • agents — remove the last two reviewer roles — eight definitions become three (Spec 347) (9cfba6f)
  • agents — remove the security, performance and design reviewer roles (31dce70)
  • review — require a package for reviewer dispatch and enforce the return cap (1bf6d7a)

🐛 Fixes ​

  • devkit-release — the clean room withholds what a runner withholds (59e8d29)
  • runtime — hand a payload script the CLI path it needs to call back (ebe0ea9)
  • changelog — match the heading breaking-check actually greps (4c39f0b)
  • delegate — keep the answer when codex writes no last-message file (93522c5)
  • tools — follow the python3 consumer evidence to the -I call (18b0124)
  • tools — the depth gate missed a template behind a per-row label (9f0afc6)
  • prime-agent — parallel runs, write-first order, failed patches (e22a65e)
  • tests — the MemSearch pin follows its bump, and states its own invariant (13caf9c)
  • index — route the context index into the collection recall searches (Spec 095) (1f78378)
  • tools — audit the pin the platform actually installs (a3b7a53)
  • tests — a suite that inherits CI tests the CI policy, not its own subject (Spec 351) (d8820b7)
  • telemetry — separate consent from the CI upload policy (Spec 351) (f421e74)
  • settings — the deny list names the secrets, not every .env sibling (b035013)
  • backlog — the row carries the claim, the audit file carries the proof (691d047)
  • gates — four parked findings, each one measurable (dba85b2)
  • spec-work — the fix-loop paragraph fits its budget again (4615d40)
  • routing — the fourth-round escalation leaves the tier list (Spec 349, 042) (06c6d27)
  • spec — 351 routes its security signal instead of naming a deleted role (Spec 346) (f2f582a)
  • spec — 349 named a test suite that does not exist (15ab808)
  • spec — 349 no longer asks for a rename that already landed (75e0d65)
  • spec — 348 counted the frontmatter key, not what the pattern matches (a1c90d4)
  • spec — 348 measures the always-on sum that HEAD actually has (4728500)
  • tests — a php-less host skips visibly, and skills-smoke reads the right step (Spec 350, 347) (8d4b8bc)
  • tools — comment-continuation used bash 4 syntax against a 3.2 baseline (e8adce4)
  • telemetry — the manifest hook must not hold a session open, or name anyone (Spec 352) (d298c9e)
  • tests — a suite proves it ran, and the gate says what it checked (Spec 350) (6e1e08a)
  • review — give the one reviewer its audit and delta modes back (a70275d)
  • hooks — restore a comment hash that was disabling every hook-install (e18d1bb)
  • spec — English section headings in 347 (f1c9e2b)
  • review — register DEVKIT_ALLOW_TMP_HOME and restore the reviewer focus literals (fc73e53)
  • review — hand the reviewer a path it can actually open, and stop the hook guard wedging installs (fd2c187)
  • review — connect the checklist the role removal only moved (f82e3db)
  • review — separate "cannot judge" from "cap exceeded" and single-source the runtime (3557831)
  • review — stop routing every review through the runtime wrapper (8a2d429)
  • review — close the two blocking findings from the 343 implementation review (e8fb2f9)
  • scripts — stop gates from reporting green without checking anything (823eed9)

📖 Dokumentation ​

  • changelog — declare the tool removals as breaking (08c389e)
  • audit — record what survives two validation passes (f27c23e)
  • audit — the ccusage removal loses more than it claimed (019fa10)
  • flows — prime-agent runs in parallel over disjoint file sets (4630a56)
  • audit — measure fallow and close the tool depth pass (87da29f)
  • audit — measure batch 2 of the tool depth pass (ac1e361)
  • audit — measure batch 3 of the tool depth pass (e207914)
  • audit — measure batch 5 of the tool depth pass (4e621c1)
  • audit — measure four of batch 4 in the tool depth pass (e897cca)
  • audit — measure batch 1 of the tool depth pass (c7dc147)
  • audit — record the pinned-tool integration audit (4577505)
  • context — record handover-file rejection and log Stop hook backlog (1e0721b)
  • audit — record the memsearch usage audit and its three defects (Spec 095) (63324be)
  • site — compact the published pages (2dcbb69)
  • site — rewrite the skill overview for readers (02de34b)
  • flows — document delegation to another model in Flow 3 (fccd187)
  • site — write the published pages for readers, not maintainers (7ca33a7)
  • devkit-docs — a lead may carry three sentences when the range earns them (273a775)
  • changelog — rewrite Unreleased from all 78 commits since v0.26.0 (04f9cf7)
  • changelog — carry the parallel session's Unreleased progress (b5f0c91)
  • backlog — park the paired study with what six review rounds proved (675c96b)
  • backlog — close the four rows the batch fixed (fb1322d)
  • security — state the controls, and drop the CI credential nobody needed (5a4acbf)
  • backlog — close four rows the recent specs already answered (38ece7c)
  • prime-agent — gate the shape of the patch, not the presence of a string (3f6367d)
  • changelog — record the 64 commits since v0.26.0 (961f9fc)
  • vision — the canon says what the code does about scheduling and projection (e1a1e1d)
  • backlog — a Prime deliverable in /tmp does not survive a reboot (Spec 348) (a7e425f)
  • plan — four specs completed, and what the reviews cost to get there (c6ca518)
  • spec — complete 350, and record what this session's reviews cost (d424091)
  • spec — complete 347, and count the second suite that could not (Spec 350) (8533920)
  • spec — complete 346 with the two holes its review found (aa831d6)
  • spec — reconcile 346 and 347 against what actually landed (c82e4fc)
  • backlog — the workflow route dispatches a reviewer without the checklist (Spec 346) (bacbd4e)
  • core — the review is one reviewer, not a parallel stage of specialists (4a7b67e)
  • plan — record 346 landing, the settings leak and the receipt loop (5a65b5f)
  • plan — settle that spec-contract-reviewer falls with the others (7692bee)
  • plan — record the measured slimming backlog as plan 008 (f97d8e8)
  • review-runtime — name --package in the header usage line (12cb3dd)
  • agents — name unbriefed test excursions as scope creep (acd605c)

🧪 Tests ​

  • agent-portfolio — write the contract fixture instead of deriving it (5c287f3)
  • agent-portfolio — a broken fixture says so instead of failing downstream (323a165)
  • impact — take the sandbox from mk_sandbox, not raw mktemp (1e047ba)
  • core — pull five suites onto the three-agent portfolio (Spec 347) (b0c8725)
  • hooks — detect a comment continuation that lost its hash (746a307)

🏗️ Wartung ​

  • audit — declare batches 2 to 5 of the tool depth pass (a86e879)
  • audit — declare batch 1 of the tool depth pass (61e8f58)
  • tools — bump five pins after the changelog review (0f26a0b)
  • review — report an unresolvable checklist instead of failing the report (Spec 354) (79c53f0)
  • 353,354,355 — the review reuse gate, the checklist path, and its two callers (16257a0)
  • spec — 349 and 351 completed and moved (05c4b93)
  • spec — 348 carries the completion state git mv left behind (6476a32)
  • spec — 348 completed and moved (99865f1)
  • spec — complete 343 and correct the --enforce scope comment (Spec 347) (8ac63c7)
  • 352 — measure effect instead of activity counts (5240f46)
  • 351 — disclose telemetry and send hints to the right recipient (999e6a3)
  • 350 — green runs name their coverage (d4a6c14)
  • 349 — cap the implementer return, add escalation and model evidence (642da37)
  • 348 — carry the always-on context through the SessionStart hook (d3bf85e)
  • 347 — fold the last two reviewer roles into the one (d36beef)
  • 346 — make AC6 red-capable by counting the agent files (ff61f3f)
  • 346 — remove the security, performance and design reviewers (a5b06d2)
  • 343 — bind reviewer dispatch to a package and cap the return (ca2961c)
  • audit — add 30-day usage snapshot for 2026-08-23 (eb59f97)

No commit type ​

  • Bind reviewer dispatch to a frozen package and cap enforced report lengt (ab55b68)
  • Throttle backlog-hint.sh to once per project per day (032e78c)

v0.26.0 — 2026-08-23 ​

Der Spec-Workflow kostet jetzt einen Reviewer-Dispatch und rund 1.100 Token weniger pro Lauf, und lange Audits lassen sich an Prime Agent abgeben. Update mit devkit sync.

142 commits since v0.25.0 · Specs 311, 314, 319, 320, 321, 324, 328, 329, 330, 331, 334, 335, 336, 338, 340

✨ Highlights ​

🔍 One review stage per spec ​

/spec-work no longer waits for a contract reviewer before the correctness review; one frozen stage does both, so a normal spec plans one implementation-review dispatch instead of two serial ones.

bash
bash
bash tests/execution-contract-review-trial.sh --self-check-red

🪶 A lighter spec update ​

/spec-update kept its successor and wave-mode policy in the root that every run loads. Both moved behind conditional references, so a normal update pays about 1,100 tokens less before it starts.

bash
bash
devkit run spec-review-prep.sh --completion-validity <ID>

Was sich für dich ändert ​

Neu verfügbar

  • devkit run delegate-exec.sh codex review --brief <file> hands a delegate the task as a file.
  • devkit run prime-run.sh --brief <file> --gate <cmd> delegates a long run to Prime Agent.

Verhalten geändert

  • A normal spec review plans one implementation-review dispatch instead of a serial contract pass plus a correctness pass.
  • /spec-update loads successor and wave policy only on those routes, so a normal update pays about 1,100 tokens less.
  • v0.26.0 wurde getaggt, aber seine Release-CI schlug fehl — die Version erreichte den Blob-Store nie; wer von 0.25.x kommt, bekommt hier beide Stände.

🚀 Neue Funktionen ​

  • review — one frozen review stage instead of a serial contract pass (Spec 338) (ba676af)
  • delegate — delegate-exec.sh takes the task from a file (Spec 340) (eb12d90)
  • spec — review an explicit commit range, not only a branch or the tree (38a548a)
  • spec — forward --base from completion to the review station (bfa405c)
  • prime — gate the candidate audit on its own inputs, not on its headings (d4bb28a)
  • prime — scope the candidate audit to one source repo per run (d42e4a8)
  • orca — fail loudly and retry launch when Orca declines a worker (5af61e6)
  • run-cost — attribute token spend to the role that spent it (7dfbb86)
  • scripts — add worktree-setup.sh dependency install entry point (a0df97c)
  • prime — route worktree dependency install through worktree-setup.sh (a63e664)
  • wave — supervise delegated runs through Orca orchestration (fc7d7e2)
  • prime — give a delegated run the canon, one terminal, and a linted skill tree (d9c9dfe)
  • prime — run a delegated task in an Orca-managed worktree (70dbed6)
  • prime — give a delegated run a visible Orca tab (479938c)
  • prime — delegate long autonomous work to a throwaway worktree (92bf7bd)
  • review — gate Spec Mode on the contract before buying a fan-out (Spec 336) (3136b89)
  • review — bind the one-pass rule in the reviewer bodies (Spec 336) (260d5e0)
  • release — harden pipeline security, reproducibility, and CI docs bu (7aa4035)
  • core — automate wave contract reapproval, add review blocking-bar spec (Spec 334, 336) (24da1fa)
  • wave — auto-approve contract escalations, drain inbox via sweep (Spec 334) (b193a01)
  • spec — derive the gate recommendation from the candidate (12e727a)
  • spec — reversibility vetoes the spec route, two triggers remain (8bc197a)
  • gates — a bare --accept must name what it accepts (Spec 335) (a350de1)
  • content-budget — count tokens instead of estimating them (Spec 328) (Spec 328) (8d8dd80)
  • permissions — ship the wave permission rules instead of only naming them (a060738)
  • hooks — load the debug protocol at the symptom, name the denial's real cause (Issue 21) (95cc7ec)
  • spec — an acceptance criterion declares how it is proven (Spec 331) (Spec 331, 330) (0106e91)
  • devkit-pipeline-benchmark — measure one spec run under controlled conditions (473c299)
  • delegate — report prompt size on every dispatch, relax spec split g (544ec7d)
  • wave — start a slice with one call instead of two (Spec 324) (6f726af)
  • reference-scan — separate the accepted backlog from committed work (d92fd8e)
  • reuse-guard — detect copied blocks, not just repeated symbols (Spec 321) (447c3bf)
  • pen-design — seed the canvas from the project tokens and name the route (Spec 329) (19bbc11)
  • agents — make the codegraph the first lookup, not an option (Spec 319) (20d190d)
  • devkit — add codegraph-first hook, tool review docs, and three new (Spec 321) (472c489)
  • pen-design — make live import the default route for existing sections too (8b16585)
  • pen-design — make the mobile frame a mandatory deliverable (ba4dd35)
  • pen-design — import the live page instead of describing it (a5a844a)
  • skills — extend pen-design with a file convention and task templates (634ea91)
  • skills — put pen-design under version control (Spec 314) (047ed6d)

🐛 Fixes ​

  • scripts — keep the diff when a prime run dies on its gate budget (Spec 340) (ed0ac5b)
  • scripts — hand shfmt only the shell files a prime run touched (c78dbcb)
  • prime — reject a delegated audit that answers the gate instead of the question (c0f72dd)
  • ci — install uvx from the pinned uv archive instead of aliasing it (aab12f7)
  • ci — let the tokenizer fallback name its cause, probe it before the suite (523a2f5)
  • ci — give the runner the pinned tools the suite measures against (323dad8)
  • trial — make the loop-until-dry rule refuse an early verdict (7d33acf)
  • prime — raise the autonomous limits a flaky gate spends in one run (dd2f915)
  • review — require independent contract receipt before reuse/completio (8a1d653)
  • review — close two ways the new contract gate could be bypassed (033af5c)
  • prime — use Orca-detect resolver and supported Codex flags in Prime (ce7250a)
  • prime — run the repo setup hooks in a delegated worktree (ecb094b)
  • prime — judge a silent provider only when assistant turns exist (9c10d33)
  • prime — treat a silent provider as a failure, and let a run pick its model (6c958b8)
  • prime — wait for an Orca worktree to be populated before starting (3e53a10)
  • prime — close eight hazards the delegate found in its own wrapper (d025cc6)
  • skills — repair the wiring 45 skills were audited against (1fe6de7)
  • review — close six paths where a failure read as a pass (e40446e)
  • tooling — close six wiring defects the audit found (d28b337)
  • tests — let the rm guard clear ignored scratch inside the checkout (c5e6960)
  • hooks — tighten telemetry payload validation and stop-gate matching (Spec 336) (56a19b9)
  • spec — name what the review waiver gives up, at the gate (bc4e137)
  • spec — make the review waiver enforceable and close the panel findings (223a163)
  • brief-gate — count the checks a brief owes, not just its files (4a47d04)
  • tests — the two hooks from Issue 21 never reached the codex hook counts (4898574)
  • gates — five gates that could not report what they were built to catch (13df976)
  • statusline — warn against the point auto-compaction actually fires (066a216)
  • gates — close the four gaps a green run was hiding (Spec 330) (8c1ec74)
  • wave — keep the new slice-dispatch coverage inside the gates it has to pass (bf36f4e)
  • spec — uncomment the Behavioral Delta heading in the light skeleton (e360745)
  • wave — say what actually ran instead of reporting a green it never saw (Spec 320) (b4fde4a)
  • wave — resolve spec files through padded ID prefixes (10a2d94)
  • spec — renumber pen-design spec from 314 to 329 (Spec 314) (6b5bad7)
  • delegate-exec — treat unconfigured panel members as skipped, not fai (c2c0ae6)
  • reference-scan — stop rejections from swallowing our own capability (3264809)
  • pen-design — live import brings the real webfonts along (1ff1ade)
  • pen-design — split the CLI document out and switch the import route to execute (dad4336)
  • pen-design — the CLI agent cannot import, and imports need a viewport (d098781)
  • pen-design — design sources in a visible folder (a84464b)
  • index — derive the codegraph candidate gate from the parser extension list (Spec 311) (0ad06a1)

⚡ Performance ​

  • spec — stop buying a contract review an implementation-only fix cannot need (60f7cf5)
  • spec — split completion validity out of the full review report (d2d4074)
  • spec — let a followups receipt complete its own reviewed SHA (baa7858)
  • tests — split project-migration, the suite that alone set the wall clock (cac1fe1)
  • validate — one frontmatter pass per file, one routing table per validate (d20fc39)
  • tools — one apt simulation for every package, not one per package (7f937dd)
  • sync — stop asking the filesystem what a symlink already answers (36445f7)
  • runtime — read the readiness verdict once per process, not five times (6e0d2bf)
  • tests,hooks — the reuse guard's watchdog was a floor, not a ceiling (e6255e0)
  • wave — a plan reads open specs, a slice starts in one call (Spec 324) (f078373)
  • spec — fast-path completed specs in --plan, prep script polish (Spec 330) (2927d6f)
  • spec — one authoring round, no carry-forward machinery (Spec 330) (Spec 330) (33c73aa)
  • spec — scope the authoring review to the gates nothing else carries (39f82fe)

♻️ Refactoring ​

  • spec-update — load successor and wave policy only on their routes (76b613d)

📖 Dokumentation ​

  • spec — mark the 338 completion round superseded, claim no receipt (Spec 338) (5ea0f2f)
  • audit — two independent designs for a shorter spec workflow (b6083ce)
  • audit — correct two workflow-cost findings against the shipped code (bdd6bae)
  • audit — measure where Flow 1 and Flow 2 lose duration and tokens (0217e9e)
  • audit — audit the 79 open candidates from compound-engineering-plugin (5c77c73)
  • changelog — record what landed, and drop three flags nothing implements (c8614ac)
  • spec — answer the cost question with what is measurable and what is not (Spec 336) (6235dda)
  • agents — re-derive every role verdict against the three-stage gate (feba64b)
  • agents — name what a dispatch buys now that Main runs on frontier models (282827f)
  • changelog — bring both Unreleased blocks to the full 72-commit range (Spec 328) (3f0c1b3)
  • changelog — correct the bullet format and three wrong spec owners (a4f65ae)
  • pen-design — put the brief templates and the prompt example into English (7561bf5)
  • changelog — bring both Unreleased blocks up to the full range (a862d64)
  • devkit-pipeline-benchmark — add power/gap self-diagnosis to benchma (9f2a24d)
  • context-bundles — drop the restated pristine-guard paragraph (8f7caba)
  • triage — re-decide the route when a run crosses a trigger it started without (fd21223)
  • reference-scan — model comparisons as interventions, not artifacts (3efed0a)
  • rules — treat foreign session files as unowned work, not ownership (eef66a8)
  • pen-design — add a sort prefix and layer order to the grid convention (d48cd4b)
  • pen-design — move phase 0.5 to a project file (394f0e4)
  • changelog — record the codegraph gate fix and trial verdicts under Unreleased (536c098)
  • spec — 314 - Pen.app als einzige Design-Oberflaeche (43251c8)

🧪 Tests ​

  • rm-guard — add coverage for rm-guard boundaries and runner completi (21e85ae)
  • release — the artifact may carry only tracked payload (9c21ad1)

🏗️ Wartung ​

  • spec — complete 338 and 340 (b5e8d0f)
  • 340 — delegate-exec.sh takes the task from a file, not only from argv (8a03bd8)
  • 338 — merge the execution contract review into correctness review (f8fdd7b)
  • spec — mark spec 336 completed, move to specs/completed/ (Spec 336) (7c75235)
  • 335 — mark bare --accept refusal spec in-progress (5ff0b84)
  • 334 — a wave never waits on the human (07ea511)
  • 335 — a bare --accept stops certifying reviews nobody did (e4898eb)
  • reference — close the artifact-exclusion row against 9c21ad1 (eca11f4)
  • tests — refresh SUITE_SECONDS from a measured run, all 64 suites (e4a9fa7)
  • tests — shfmt tests/reuse-detect.sh (ea57ba2)
  • spec-328 — pinned local tokenizer as the budget gate's unit (Spec 328) (17dc752)
  • bench,reuse-detect,spec-328 — mark wallclock invalid under concurr (Spec 328) (f778cec)
  • core — commit the working tree so a dev-sync build can contain it (Spec 328) (900dfad)
  • gates — the last raw sandbox, and two hook messages recorded as exceptions (2905163)
  • gates — record the benchmark record line and put the parity test in a sandbox (5d5d2a1)
  • spec — shfmt the spec-331 changes and accept the benchmark trigger phrases (Spec 331) (23063db)
  • tests — shfmt hook.sh and reference-scan.sh (8a1376b)
  • reference — backtest the four largest scans under the chain unit (9acf4e3)
  • tests — shfmt hook.sh and reuse-detect.sh (4d2f269)
  • reference — record the Glean and Serena tool-trial verdicts (5fda246)

No commit type ​

  • Revert "feat(spec): review an explicit commit range" and its forwarding (e8883f3)
  • Reconcile spec 336 receipt-verdict wiring and shell fixes across gates (2de2bac)
  • Add codegraph-first PreToolUse hook plus manifest-tracked skip reasons, (7c1d168)
  • Rework spec 314: seed canvas tokens and gate the repair phase (c59dddb)

v0.25.0 — 2026-08-20 ​

Schlanker an den Stellen, die zählen: rund 2100 Tokens weniger pro Subagent-Dispatch, ein Review-Paket ohne doppelte Hunks und vorgefilterte Koordinator-Reads. Update mit devkit sync.

61 commits since v0.24.0 · Specs 301, 306, 309, 310, 311, 312, 313, 314, 316, 317, 318

✨ Highlights ​

⚡ Jeder Dispatch wurde rund 2100 Tokens leichter ​

Das Debugging-Protokoll liegt in einer kalten debugging.md und mcp-mutation-verify ist pfad-gebunden, ein Subagent lädt beides nur noch, wenn seine Dateien es verlangen. Der unbedingte Kontext sinkt von 24.760 auf 3.166 Bytes.

♻️ Das Review-Paket dupliziert sich nicht mehr ​

Spezialisten-Evidenz liegt als evidence-<rolle>.diff daneben, und Reviewer bekommen die Aufrufstellen jeder geänderten Funktion gleich mitgeliefert.

bash
bash
devkit run review-prep.sh      # eine Kopie pro Hunk, plus Call-Sites-Sektion

Was sich für dich ändert ​

Neu verfügbar

  • devkit run reuse-detect.sh --changed-sites listet die Aufrufstellen jeder Funktion, die ein Diff berührt — gedeckelt und mit expliziten Ablehnungszeilen.
  • /workspace trägt jetzt die Autoren-Route; /umbrella-spec gibt es nicht mehr als eigenen Skill.

Verhalten geändert

  • Ein Review-Beleg, dem eine von den Signalen geforderte Rolle fehlt, gilt nicht mehr als wiederverwendbar.
  • Der Wave-Teardown meldet Erfolg erst, nachdem er nachgelesen hat, dass der Worktree wirklich weg ist.

Was du tun musst

  • Stack-Lenses werden jetzt pro erkanntem Stack installiert — /index in einem Projekt laufen lassen, dessen Lens-Set sich ändern soll.

🚀 Neue Funktionen ​

  • spec-work — fail a brief that hands an implementer more than five files (Spec 317) (437e9fb)
  • sync — install the stack lenses per project instead of globally (Spec 314) (760b70f)
  • spec — block review reuse when the receipt misses a signalled role (Spec 313, 310) (29fc19e)
  • review — hand reviewers the call sites of every changed symbol (Spec 311) (4d224a0)
  • wave — prove the worktree is gone before teardown reports success (Spec 309) (9d4bacb)
  • release — show and pin the announcement card before tagging (26914fa)
  • release — announce a release in one sentence, and not at all for a patch (5b64500)
  • wave — install slice dependencies before the gate, not after the block (05a9131)
  • hooks — name /index once the context manifest has aged (481918b)

🐛 Fixes ​

  • wave — stop the brief from restating the channel Orca already injects (8a8fb20)
  • test-prep — print the raw tail only when the failure filter is thin (38ddb64)
  • rules — bring skill-editing.md back under its 2500-token budget (03ebcf3)
  • wave — read the inbox the coordinator actually receives questions on (c391f87)
  • spec — stop procedural review blocks from PASS hints and stale branches (1b727f0)
  • agents — stop the implementer preamble from eating the turn budget (Spec 301) (aa6152f)
  • docs — move three v0.24.0 fix bullets out of the page header (869f38e)
  • scripts — restore the branch in a bare repo, distrust a handle-less terminal list (4ee052d)
  • tools — let brew's own no-such-formula verdict count as reachable (acabed4)
  • tools — stop drift-check's skip from reading as a passed gate (bc8c87c)

⚡ Performance ​

  • wave — read orca output pre-filtered instead of whole into context (Spec 318) (0fc9d91)
  • review — carry every changed hunk in the package exactly once (Spec 312) (05d3342)
  • scripts — shrink the two oversized --help surfaces (4c28529)
  • agents — raise implementer turn budget, per-step handoff, spec-update effort high (d186e45)

♻️ Refactoring ​

  • context — split DECISIONS.md into a bounded core plus an archive (Spec 316) (a730945)
  • skills — fold umbrella-spec into workspace as its author-only route (Spec 313) (275b5df)
  • agents — replace implementer stack table with the routing pointer (2798377)
  • hooks — move the 14.7k-char hooks.json rationale to docs (4a99178)
  • skills — demote four zero-use skills to user-only invocation (4e70bb1)
  • skills — cap Trigger lists at two phrases across all descriptions (52a5103)
  • rules — cut ~2100 tokens from the per-dispatch always-on payload (d5cd5d1)
  • spec — cut both spec artifacts back under their token budgets (b84086d)

📖 Dokumentation ​

  • changelog — record the wave's last four results under Unreleased (d4771e3)
  • changelog — fill Unreleased with the token-efficiency batch, fence the hooks rationale (f914d98)
  • backlog — close six rows landed as specs 314-318 or direct fixes (33fb7df)
  • spec — add spec 318 — wave coordination reads filtered JSON only (Spec 318) (1a487f9)
  • spec — add specs 316 and 317 — DECISIONS archive split, brief size gate (87fb4db)
  • gotchas — silent-on-pass budget gate cannot back a headroom figure (9783242)
  • spec — add spec 314 — stack lenses install per detected stack (Spec 314) (6a486c1)
  • backlog — drop the VISION-digest entry per user decision (6b541b0)
  • context — capture the unsatisfiable label-grep AC as a critical gotcha (ea7bf43)
  • backlog — scope the VISION cold-load entry to the maintainer repo (d9b6fdc)
  • spec — add spec 313 — merge umbrella-spec into workspace (Spec 313) (72c204c)
  • spec — add spec 312 — review package stops duplicating diff content (Spec 312) (e69ffd8)
  • changelog — fill Unreleased and close the four drifted prose pages (18c6590)
  • spec — add spec 311 — call sites of changed symbols in the review package (Spec 311) (918bf23)
  • changelog — record the implementer turn-budget fix under Unreleased (2f0a897)
  • spec — add spec 306 — universal skill sources (Spec 306) (e9b238f)
  • repo — give the installer smoke a red branch and a resume, correct the env names (2ccdc43)

🧪 Tests ​

  • wave — pin the corrected inbox rule instead of the wrong one (19a4b6d)
  • release — route the drift-check sandbox through mk_sandbox (a5cfd7e)
  • switches — assert the legacy env tables structurally instead of by hand (4a4c0ad)
  • repo — cover the handle-less terminals payload in wave teardown (feadd78)

🏗️ Wartung ​

  • repo — retire the npx-ai-setup drift guard and follow two contract changes (Spec 314) (85165e9)
  • gate — accept content-language baseline for spec 311's Call Sites strings (Spec 311) (c2d1015)
  • spec — drop spec 306 — universal skill sources not needed (Spec 306) (b4d1b9c)
  • backlog — measure both cost arms, close the last open row (3b33657)
  • backlog — drop the impeccable hook-arming slice (8605b0a)
  • backlog — close the delegate panel row, sharpen the cost-gap row (7a1ce59)
  • usage — snapshot the 30-day window before it ages out (8514f0c)
  • backlog — record this drain's outcomes (608187c)

No commit type ​

  • Note: this is a commit-message generation request, not a planning task — (047f96c)

v0.24.0 — 2026-08-19 ​

Das Backlog verlässt das Kontext-Bündel, das jede Session mitbezahlt hat, und /fetch-task lädt endlich die Anhänge einer Aufgabe. Update mit devkit sync.

52 commits since v0.23.0 · Specs 147, 274, 288, 296, 298, 300, 301, 302, 303, 304, 305

✨ Highlights ​

📋 Das Backlog kostet keine Tokens mehr ​

Es liegt jetzt in devkit/backlog.md als längenbegrenzte Tabelle mit eigenem Lint — keine Session lädt es mehr. /capture, /backlog und der Session-Hinweis folgen dorthin.

bash
bash
devkit run backlog-lint.sh devkit/backlog.md

📎 /fetch-task lädt Anhänge herunter ​

Der Transfer liegt im Skript, nicht im Skill-Körper: die presigned URL kommt über stdin und wird nie zum Argument. Ein Aufgabenverzeichnis ohne gesetzte Ignore-Regel verweigert den Download selbst.

bash
bash
/fetch-task 50135 --attachments

Was sich für dich ändert ​

Neu verfügbar

  • /fetch-task <id> --attachments legt die Dateien neben das Digest und verlinkt sie von dort.
  • devkit config review-runtime codex wird angenommen — die Eignung kommt aus der Registry.
  • devkit project-migrate überführt auch specs/ nach devkit/specs/.

Verhalten geändert

  • Das Backlog liegt jetzt in devkit/backlog.md.
  • /spec-work schickt einen frischen Implementer aus der Handoff-Notiz los, statt einen verbrauchten Lauf fortzusetzen.
  • Ein /wave-Slice nimmt eine abgelaufene Frage wieder auf, statt mit ungesendeter Antwort stehenzubleiben.

Was du tun musst

  • devkit sync fahren, danach einmal /backlog, damit ein übriggebliebenes .agents/context/BACKLOG.md migriert wird.

🚀 Neue Funktionen ​

  • migrate — move a target project's specs into the devkit/ layout (Spec 305) (5f951d8)
  • backlog — move the parking lot to devkit/backlog.md as a capped table (Spec 303) (1f51dbe)
  • review — decide review-runtime eligibility from the registry (Spec 274, 304) (88cc067)
  • reference — split the registry into a slim index plus one folder per repo (Spec 300) (0e51e27)
  • rules — measure the important-if marker before adopting it (Spec 302) (2b33ca0)
  • spec-work — dispatch a fresh implementer instead of resuming a spent run (Spec 301) (363f118)
  • spec — allow a second consolidated question in full mode (717c8af)
  • usage — per-user devkit adoption in the usage report (9bda19d)
  • skills — route design-preview's upgrade path to the built-in /design (5b589f9)

🐛 Fixes ​

  • spec — finish the 305 renumbering that its own commit left half-done (3e91a48)
  • fetch-task — close the review round 2 findings on the attachment download (63afba4)
  • wave — a timed-out ask keeps its question — resume it, do not stop (691c75a)
  • spec — renumber the layout-migration spec to 305 (08671dd)
  • wave — a slice blocks on a durable gate, never on a dying ask (e7a8a13)
  • wave — inbox is not a read-only stand-in for check --run (7333e6e)
  • spec — teach the reconcile kernel the headers the validator reads (Spec 300) (38de75d)
  • wave — keep check and its ack out of the background poll loop (c471204)
  • spec — re-derive spec 300 counts against the current registry (Spec 300) (afc3030)
  • spec — renumber the conditional-relevance draft to 302 (cfe519b)
  • capture — gate a gotcha on an enforcement form before writing it (d40e155)
  • reference-scan — let a partial run keep the candidates it found (d3f2c63)
  • reference-scan — peel an annotated tag before comparing (df3aedb)
  • telemetry — honour opt-outs that were silently ignored (d13f281)
  • orca — name the real cause behind an unreachable Orca runtime (81502a0)
  • wave — report missing python deps as friction (c683a86)
  • spec — make the split thresholds block authoring instead of warning (Spec 296) (298a793)
  • tools — stop counting the telemetry allowlist as built-in wiring (c2fab61)
  • tests — record the python-deps friction site in the fixture (4b9d410)
  • tests — follow spec 305 into the suites it changed but never ran (Spec 305) (312393d)
  • tools — drop the bash-4 associative arrays from rule-effect.sh (Spec 302) (588e661)

📖 Dokumentation ​

  • drift — close the reviewed drift findings on quick-start and undertaking (1b0d070)
  • rules — Bezeichner sind englisch, auch neben deutschen Daten (d241873)
  • spec — commit spec 304 so a wave slice can reach it (Spec 304) (2ed0e94)
  • spec — add spec 301 for migrating legacy spec layouts (Spec 301, 147) (914e80e)
  • spec — give spec 300 the cut rationale its threshold now needs (Spec 300) (f70ee13)
  • spec — add spec 300 for a per-repo reference layout (Spec 300) (305ccfe)
  • spec — contract the fresh dispatch that replaces an unbounded resume (906b0e1)
  • content-audit — check the rejected ledger before proposing a cut (bf63d09)
  • brainstorm — route the writer bound through maxTurns, not a resume counter (05ebe27)
  • spec — add spec 298 for conditional-relevance rule markers (Spec 298) (800f87a)
  • permission baseline and devkit's MCP canon (347dffc)
  • reference — record reference-scan wave results and doc-authoring cu (4abfeab)
  • brainstorm — bound the implementer brief at runtime, not only at authoring (58576d4)

🧪 Tests ​

  • wave — pin the contract that keeps a slice from dying on latency (66941df)
  • spec — pin the question budget to one, two in full (5196a5c)

🏗️ Wartung ​

  • spec — reapprove spec 288 so its review fix loop can resume (Spec 288) (b27a955)
  • spec — reapprove specs 300 and 302 (60e7988)
  • reference — finish the watch list, 390 candidate rows (023b1d3)
  • reference — scan 23 reference repos, 253 candidate rows (c9b95be)
  • reference — resolve builtin-design-canvas-skill to 5b589f9 (cb69379)
  • tools — bump uv, osv-scanner and python3 after changelog review (918b784)

No commit type ​

  • add(spec): draft backlog table migration to devkit/backlog.md (b163991)

v0.23.0 — 2026-08-18 ​

Stack-Lenses laden sich über natives paths:-Frontmatter, und die Telemetrie meldet einen Funnel statt Aktivität. Update mit devkit sync.

36 commits since v0.22.1 · Specs 014, 076, 218, 225, 290, 291, 293, 294, 295, 296, 298

✨ Highlights ​

🎯 Ein Stack-Lens lädt sich selbst ​

Jeder Lens benennt seine Dateien, also lädt Claude Code ihn vor dem Edit. Der alte Hinweis kam bei 1 von 185 Sessions an.

yaml
yaml
paths:
  - "custom/plugins/**/*.php"
  - "src/**/*.php"

📊 Der Report antwortet mit einem Nenner ​

gates, hints und run_od_version machen aus blockierten Läufen, Hinweisen und Versionen Raten mit Nenner, über die letzten 90 Tage gesammelter Sessions.

🧭 Ein Plan nennt seine Slices ​

Eine Plandatei trägt je Slice eine Zeile; der Reader löst sie auf.

bash
bash
devkit run plan-status.sh devkit/plans/005-cpo-adoption.md

Was sich für dich ändert ​

Neu verfügbar

  • devkit run plan-status.sh <plan> leitet jeden Slice-Zustand aus der Spec oder dem Commit ab, den die Zeile nennt.
  • Der 90-Tage-Nutzungsbericht gibt Ereignisse, Hint-Konversion und Gates aus.

Verhalten geändert

  • /spec übergibt über /clear an /spec-work: Planungskontext bringt der Umsetzung nichts und kostet ihr Fenster.
  • Stack-Lenses routen über Pfad-Globs. Codex und OpenCode verlieren das Routing ersatzlos: beide entfernen den Frontmatter.
  • Eine Spec verliert ihre Freigabe nicht mehr, wenn /spec-work den ersten Progress-Log-Eintrag schreibt.

Was du tun musst

  • headroom 0.35.0 schließt CVE-2026-71554 in h2. devkit sync ausführen.

🚀 Neue Funktionen ​

  • fetch-task — ✨ enhance attachment handling with flags (f146451)
  • telemetry — measure the funnel, and route stack lenses natively (Spec 296, 295) (9b6e9dd)
  • plans — derive slice state from the specs instead of typing it (Spec 076) (d4e7843)
  • plans — specs 290 and 294 for machine-readable plan slices, plus three reference scans (Spec 076, 290, 294) (cdbee19)
  • tooling — per-tool consumer registry with a drift gate (spec 291) (Spec 291, 014, 218) (44efee0)
  • project-migrate — close every run on one verdict, and answer it in status (e2e4046)
  • grill — interview an undertaking in dependency-ordered rounds (Spec 293) (a57f213)

🐛 Fixes ​

  • specs — put 288 back where its status says it belongs (Spec 288) (eff9cbe)
  • tests — make the wave wrapper call the script instead of itself (Spec 180) (23e9852)
  • release — restore shfmt formatting in release-prep.sh (23b3b14)
  • spec — a Progress Log no longer voids its own approval (Spec 298) (0bdb427)
  • orca — tell a broken Orca entrypoint apart from no Orca at all (39d8fe6)
  • hooks — seed the theme with the custom: prefix Claude Code requires (4aa3a81)
  • rules — keep the redaction pointer resolvable (94c13f8)
  • hooks — read the remote-exec class from the quoted command spelling (66fbfc5)
  • skill — 🐛 update attachment handling and relation completeness checks (909c34f)

⚡ Performance ​

  • skills — move path-gated blocks behind references/ pointers (Spec 225) (250ac25)

♻️ Refactoring ​

  • release — drop the manual core-flow smoke and its gate (6f1bd77)
  • delegate — read panel HTTP token from the registry (e6da00d)

📖 Dokumentation ​

  • changelog — refresh the German v0.23.0 type sections (1d73306)
  • changelog — the German v0.23.0 twin (c77bcb0)
  • changelog — swap the maintainer-only point for the /clear handoff (1a93f4d)
  • flows — require /clear between /spec and /spec-work (d8dd851)
  • changelog — give Unreleased its Highlights and pay the head budget (5d7fd71)
  • changelog — bring the German Unreleased block level with the English (c7c0a4d)
  • changelog — note the brief-cut rule and re-anchor three flow pages (3382f15)
  • spec-work — cut a brief by files touched, not only by Steps (Spec 296) (492a001)
  • changelog — record the plan reader, the lens globs and the digest fix (1321e8f)
  • context — record that a new Progress Log section voids an approval (1266e59)
  • release — publish the release body in German and cap the entry head (4665075)
  • rules — redact before quoting the debug loop (52c66de)
  • reference — record the mattpocock/skills and kunchenguid/vision scan (5465328)

🏗️ Wartung ​

  • skills — drop the superseded retro skill from the payload (94d9585)
  • tools — bump fallow, ccusage, headroom and pandoc pins (6396ea2)

No commit type ​

  • Fix test/skill wording: filter DEVKIT_EVENT lines from wave.sh assertion (78f18b7)
  • Add per-spec run tracking, review-gate denominator fix, and stack-lens c (0c22b2b)

v0.22.1 — 2026-08-17 ​

devkit schreibt nicht mehr in Repositories, die ihm nicht gehören: der Agent-State-Hook verlangt jetzt ein eingerichtetes Projekt, bevor er eine .gitignore anfasst — private und fremde Checkouts auf derselben Maschine bleiben unberührt. Dazu dokumentiert die Troubleshooting-Seite das eine Exclude-Muster, das wirklich greift, wenn eine zweite Claude-Welt neben devkit läuft. Update mit devkit sync.

7 commits since v0.22.0 · Specs 289

✨ Highlights ​

🔒 Der Agent-State-Hook bleibt in devkits eigenen Projekten ​

Sein einziges Gate war bisher „ist das ein Git-Repository", also hängte jeder SessionStart fünf Ignore-Muster plus Kommentarzeile an die .gitignore irgendeines Checkouts unterhalb deines Home-Verzeichnisses — gemessen in einer frischen Sandbox ohne .memsearch, ohne .codegraph und ohne .agents: sechs Zeilen geschrieben, Exit 0. Er verlangt jetzt .agents/context/index-manifest.json, den Marker von /index, und beendet sich ohne ihn still. Der Preis ist gewollt: ein nie eingerichtetes Projekt bekommt keine Ignore-Zeilen mehr.

text
/index

🌍 Eine zweite Claude-Welt neben devkit ​

Der Ancestor-Walk von Claude Code lädt die Regeln aus ~/.claude in jede Session unterhalb deines Home-Verzeichnisses, devkits eingeschlossen. claudeMdExcludes hält sie aus einer fremden Welt heraus — aber es matcht das aufgelöste Symlink-Ziel, und eine führende ~ wird im Glob nicht expandiert. Auf einer Maschine gemessen: mit ~/.onedot-devkit/** luden weiterhin alle zehn Regel-Dateien, mit dem Muster unten null.

json
json
{ "claudeMdExcludes": ["**/.onedot-devkit/**"] }

What changed for you ​

Behavior changed

  • Der Agent-State-Hook schreibt nicht mehr in jedes Git-Repository unterhalb deines Home-Verzeichnisses — er verlangt jetzt .agents/context/index-manifest.json, private und fremde Checkouts auf deiner Maschine bleiben also unberührt.
  • Die Erkennung von Linter und Test-Runner findet Werkzeuge, die ein uv-Projekt in seiner eigenen Umgebung hält: ein Repo mit [tool.ruff.lint] und funktionierendem uv run ruff check meldet nicht länger NO_LINTER_DETECTED.
  • Eine /wave-Slice installiert optionale Dependency-Extras und bekommt die Umgebung, die ihr Acceptance-Lauf voraussetzt, statt eine rote Basis zu erben, die sie nicht verursacht hat.
  • Eine Spec im alten Hauskopf-Format ist für den Metadaten-Kernel wieder lesbar, deps-check, review-prep und Completion verweigern sie also nicht mehr.

Action required

  • Ein Projekt, in dem nie /index lief, bekommt keine Agent-State-Ignore-Zeilen mehr. Führe dort einmal /index aus, oder trage .codegraph/ und .memsearch/ selbst in die .gitignore ein.
  • devkit neben einer zweiten, unabhängigen Claude-Code-Konfiguration: schließe den devkit-Store mit **/.onedot-devkit/** aus, nicht mit ~/.onedot-devkit/** — eine führende Tilde wird im Glob nicht expandiert und trifft still auf nichts. Siehe Troubleshooting.

🚀 Features ​

  • usage — read telemetry credentials from the user's own config file (6e53b70)

🐛 Fixes ​

  • hooks — write agent-state ignores only into devkit's own projects (9a3fa1d)
  • prep — resolve the project's own linter and test runner (5994daa)
  • wave — give a slice the environment its acceptance run assumes (ff2859b)
  • spec — parse the legacy house header through the metadata kernel (f9d90df)

📖 Documentation ​

  • spec — add spec 289, stop writing into foreign repositories (Spec 289) (79e0f97)
  • rules — a mutation never survives the turn that made it (756bffc)

v0.22.0 — 2026-08-16 ​

Ein Bash-Befehl, der lange läuft, geht jetzt von selbst in den Hintergrund, /spec-verify führt dich nach einer fertigen Spec Test für Test in Alltagssprache durch, und die Korrektur eines einzelnen Steps hakt nicht mehr die ganze Spec ab. Update mit devkit sync.

68 Commits seit v0.21.0 · Specs 176, 259, 263, 265, 270, 274, 275, 276, 278, 283, 286, 287

✨ Highlights ​

⏱️ Lange Befehle gehen selbst in den Hintergrund ​

Ein Bash-Aufruf über fünf Sekunden hält die Session nicht mehr fest, bis jemand Strg+B drückt. Eine verdrahtete Installation setzt den Timeout in ~/.claude/settings.json; Claude Code wendet ihn nur im Hauptagenten an und begrenzt Werte unter 2000 ms. Dein eigener Wert bleibt unangetastet, und hook-uninstall lässt den Schlüssel stehen.

json
json
{ "env": { "CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS": "30000" } }

🧪 /spec-verify — Abnahme in Alltagssprache ​

Ein optionaler Durchgang nach einer abgeschlossenen Spec. Er geht jede nutzersichtbare Änderung einzeln durch, in Prosa statt in Befehlen, und hält das Ergebnis in einer eigenen Datei unter devkit/uat/ fest. Er ändert kein Status: und blockiert nichts; /spec-work nennt ihn als optionalen nächsten Schritt, wann immer der Behavioral Delta einer Spec nutzersichtbar ist.

text
/spec-verify 265

✂️ Einen Step korrigieren, ohne die Spec zu öffnen ​

/spec-update hat --step-correction <N> bekommen. Der Kernel meldet eine preserve-Reopen-Policy, leert nur diesen Step und die von ihm beanspruchten ACs und lässt jeden anderen Haken samt Evidenz stehen. Er verweigert mit step_correction_not_applicable, sobald etwas außerhalb von ## Steps abweicht, der genannte Step fehlt oder dessen Dateiliste einen noch abgehakten Step überschneidet.

text
/spec-update 270 --step-correction 4

🔀 Alte OD_*-Namen funktionieren im Installer weiter ​

Spec 286 hat die OD_*-Fallbacks abgeschafft, install.sh und release/build.sh blieben bewusst außen vor. Ein gesetzter OD_-Name wird jetzt auf seinen DEVKIT_-Zwilling übernommen, einmal auf stderr benannt und exportiert — er erreicht damit auch den devkit sync-Kindprozess. Der Release-Build akzeptiert beide Secret-Schreibweisen für den Signing-Key, das Org-Secret lässt sich also in beliebiger Reihenfolge umbenennen.

text
OD_HOME=~/devkit curl -fsSL https://devkit.one-dot.io/install.sh | bash

Was sich für dich ändert ​

Neu verfügbar

  • /spec-verify <ID> fährt eine dialogische Abnahme über eine abgeschlossene Spec und hält sie unter devkit/uat/ fest.
  • /spec-update <ID> --step-correction <N> korrigiert die Anweisung eines Steps, ohne den Rest der Spec abzuhaken.
  • devkit config review-runtime <name> wählt das Modell für den /review-Fan-out; noch ist kein Runtime review-fähig, jeder Name fällt mit genanntem Grund auf claude zurück.
  • Der Doku-Drift-Check sagt vor der Arbeit, welche Prosaseiten eine Dateiliste betrifft.
  • devkit run wave-prep.sh baseline <worktree> misst die rote Baseline einer Wave und meldet WAVE_BASELINE_INCOMPLETE, statt einen abgebrochenen Lauf als sauber auszugeben.

Verhalten geändert

  • Ein Bash-Befehl über fünf Sekunden geht selbst in den Hintergrund; setze CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS selbst, wenn das zu früh ist.
  • Lint-Befunde tragen bis zu drei markierte Quellcode-Auszüge, ein Befund ist also bearbeitbar, ohne die Datei erst zurückzulesen.
  • /spec prüft einen Kandidaten vor dem Freigabe-Gate gegen jede offene Spec auf Namens- und Dateilisten-Kollisionen und druckt pro geteilter Datei eine Kollisionen:-Zeile.
  • Alte OD_*-Namen in install.sh und release/build.sh werden mit einer stderr-Zeile übernommen, statt still über eine verkettete Fallback-Kaskade gelesen zu werden.
  • Die Spec-Anzeige in der Statuszeile übersteht das Arbeiten in einem Unterordner, und eine Wave verweigert einen Worktree, der specs/ und devkit/specs/ zugleich trägt.
  • Unter Linux wird das Orca-CLI über eine gemeinsame Reihenfolge aufgelöst und durch parsebares status --json belegt, der GNOME-Screenreader kann also nicht mehr für es antworten.

Handlungsbedarf

  • Keiner. Jede Umbenennung in diesem Release lässt die alte Schreibweise weiter funktionieren und sagt es einmal auf stderr.

🚀 Features ​

  • install — Adopt legacy OD_* env names instead of dropping them (Spec 286) (89ec094)
  • hooks — Background a Bash run past five seconds automatically (a1c0420)
  • spec — Record which authoring gate failed (93b3787)
  • spec — Cross-spec collision preflight before approval (298b613)
  • review — Resolver for the review runtime, with no runtime eligible (d86e371)
  • doctor — Verify the file mode of project credential files (5f1d1e4)
  • telemetry — Per-tool payload attribution (a5601d8)
  • core — Reintegrate slice wave-281-delegate-panel (d338268)
  • core — Reintegrate slice wave-279-rule-effect (ec0f5c6)
  • wave — See a worker turn that simply ended, not just one that died (Spec 274) (af7c59b)
  • docs-drift — Answer which pages a file list drags in, before the work (Spec 274) (4866256)
  • devkit — Enforce built-in-skill wiring and add three groundwork spe (681f882)
  • changelog-skill — Let a correction land in the run that found it (a34374f)
  • hooks — Give lint findings the code they are about (a864a2b)
  • wave — Add baseline measurement and spec-presence preflight check (Spec 278) (bc4a188)
  • hooks — Name a clean session cut when nothing is left open (640d266)
  • release — Publish release pages from the changelog and announce them in Slack (951ea15)
  • spec-verify — Add opt-in conversational UAT after a completed spec (3970f55)
  • spec — Correct one Step without unchecking the whole spec (Spec 263, 270) (70684e6)

🐛 Fixes ​

  • wave — Follow spec 286 and name the idle window DEVKIT_, not OD_ (Spec 286) (a0e57ea)
  • hooks — Survive the session-close scan on macOS system bash (2b2743b)
  • wave — Fold the dead-turn verdict into the call the round already makes (Spec 176) (7f76ff3)
  • wave — Make the missing-permissions finding the user's, not the agent's (0540af0)
  • rules — Drop the task-list premise from the compact-response rules (171c729)
  • wave — Make a run report the state it actually established (Spec 275) (a0d4291)
  • wave — Detect torn-down terminal missing from list, not just ptyKill (1628db7)
  • usage — Count a slash command by its turn, not by its line start (447a4b3)
  • sync — Build the symlink journal outside the recovery glob (d3d683f)
  • telemetry — Keep the realistic fixture, drop the anchor assertion (f887c5c)
  • spec — Renumber the orca-cli spec off the colliding ID 259 (1fd663d)
  • telemetry — Model the slash fixture as separate user messages (37239e7)
  • tools — Honour the OD_ fallback in the release-base seam (4a9f51f)
  • orca — Resolve one Orca CLI binary for every caller (3c2efb9)
  • spec — Renumber the Orca-resolution spec off the colliding ID 259 (1b8abb7)
  • usage — Count every typed slash command, not only the first line (c1302d0)
  • specs — Bind spec-layout detection to the repository root (2c53814)
  • tools — Resolve tool-pin upstream without a local package manager (d0f36b6)
  • usage — Stop counting pasted paths as typed slash commands (81476a1)
  • tests — Stop the suites reading the developer's PATH (Spec 263) (ec059b4)

♻️ Refactoring ​

  • runtime — Drop the legacy OD_ fallback arm (a7bf001)

📖 Documentation ​

  • changelog — Give v0.21.0 the lead line its release card needs (f1a4a53)
  • changelog — Record the six unreleased items that were still missing (df48eca)
  • specs — Spec 287 — adopt legacy env names instead of dropping them (Spec 287, 286) (84335e2)
  • specs — Correct spec 274 to ship no runtime adapter, add spec 283 (Spec 274, 283) (32c8a63)
  • wave — Put the branch-only worktree paths behind a reference (54a3a61)
  • wave — Route coordinator decisions through gates, not a racing ask (Spec 274) (df3aaf4)
  • reference — Record five scans and tighten the coverage evidence rule (a2fd5c2)
  • backlog — Park the delegate panel mode before implementation (Spec 276) (8708203)
  • spec — Add specs for review runtime resolver and delegate panel mod (Spec 274, 276) (134a9b9)
  • reference — Measure the completions endpoint on real classification payloads (b8a9132)
  • rules — State that a key belongs to a person, not to the payload (11f544a)
  • reference — Record the Hetzner inference API trial (e3d404e)
  • spec — Commit spec 276 so the wave slice can read its contract (Spec 276) (fa684d1)
  • spec — Add spec 259 for Orca CLI resolution on Linux (Spec 259) (6927149)
  • backlog — Park the three review residuals from specs 269 and 273 (b3bafa0)
  • changelog — Record the 265 and 270 entries, wire the spec-verify hint (Spec 270, 265) (a0b886c)
  • core — Record the destructive-restore trap and the 263 changelog entry (Spec 263) (158667d)

🏗️ Chores ​

  • specs — Commit spec 283, untouched for eight hours (Spec 283) (4702e9f)
  • specs — Commit two specs a parallel session left untracked (0ab8616)
  • registry — Record the idle friction codes and the elision kill-switch (fc3597a)
  • specs — Free the taken 278 id so the lifecycle scripts run again (82a4dee)
  • specs — Renumber the delegate panel spec off a taken id, again (619b425)
  • ledger — Record where the todo-tools verdict landed (8eee3aa)
  • specs — Renumber the delegate panel spec off a taken id (70d8851)
  • tools — Pin fallow 3.16.0 (1c40ebe)

No commit type ​

  • spec(278): mark wave run reliability as in progress (ac35531)
  • spec(278): author wave run reliability contract (3d437f3)
  • style(tests): restore shfmt formatting in spec-authoring (c4f5ce5)

v0.21.0 — 2026-08-14 ​

/fetch-task holt eine CrewBuddy-Task direkt in ein spec-fertiges Digest, skill-lint lässt eine Skill durchfallen, die ein Tool nutzt, das ihr Frontmatter nie erlaubt hat, und /spec-work zeigt, welche Reviewer die Signale einer Änderung ausgewählt haben. Update mit devkit sync.

20 Commits seit v0.20.1 · Specs 148, 255, 256, 257, 258

What changed for you ​

Now available

  • /fetch-task holt einen CrewBuddy-Task und schreibt sein Digest. Die Task-ID wird validiert, der geholte Inhalt als nicht vertrauenswürdig behandelt.
  • skill-lint hat einen siebten Check, tool_ungranted: Er lässt eine Skill rot werden, deren Body ein Werkzeug vorschreibt, das das Frontmatter nie erteilt hat. Drei ausgelieferte Skills verlangten AskUserQuestion, ohne es zu listen, und kein Gate hat das gefunden. Aufruf über devkit run skill-lint.sh; die Baseline schlüsselt jetzt nach Check, Skill und Wert, damit ein nicht akzeptiertes Werkzeug nicht länger auf einem akzeptierten Geschwister mitfährt.
  • /spec-work Schritt 4 sieht neben dem deklarierten Reviewers:-Header eine Zeile Signal reviewers:. Die Signalmuster liegen jetzt in prep-lib.sh, sodass /review und der Spec-Pfad dieselben Rollen aus denselben Regexes ableiten — inklusive Design-Signal, das seit Spec 212 verfügbar war und im Spec-Pfad keinen Aufrufer hatte. Automatisch entfernt wird nichts: Ein Header, der mehr Rollen verlangt, als der Diff hergibt, ist als solcher sichtbar.

Behavior changed

  • Jeder Subagent startet rund 2930 Token leichter. docs/VISION.md wird nicht mehr in die eager geladene Hierarchie importiert — es waren 24 Prozent der 12020 Token, die anfielen, bevor ein Subagent seinen eigenen Auftrag gelesen hat, und ein Reviewer oder Implementer entscheidet nie einen Cut. Maintainer-Entscheidungen lesen die Datei bei Bedarf und nennen die tragende Säule. Ebenso sind vier reine Dispatch-Abschnitte aus dem always-on agents.md in das pfadgebundene agent-dispatch.md gewandert, weitere 1688 Bytes.
  • Eine spätere Authoring- oder Review-Runde setzt denselben Agenten fort, statt einen kalten zu bezahlen. /spec und /review halten jetzt SendMessage, das einzige Werkzeug, das einen Agenten fortsetzt, und eine spätere Runde bekommt den Diff plus die berührten Gates statt des ganzen Kandidaten. Gemessen: 297s und 423s für kalte Runden bei 94k Token, gegen 44,8s und einen Tool-Call für die erste fortgesetzte Runde.
  • Ein Review-Finding landet nicht mehr per Default in /spec-update. Abschnitt 0 nennt das Kriterium: Nur ein Defekt im Vertrag selbst öffnet eine Spec wieder — eine fehlende oder falsche Anforderung, ein Akzeptanzkriterium, das das falsche Verhalten festschreibt, ein Step, dessen Dateiliste es nicht erzeugen kann. Falscher Code, ein fehlender Test oder ein unbehandelter Randfall bleiben im Fix-Loop auf demselben Handle, und Unsicherheit löst sich zu Fix auf. Genau dieser undefinierte Zweig hat einen Fünf-Runden-Lauf auf einer Ein-Datei-Skill-Spec erzeugt.
  • Der Cross-Model-Check in triage.md ist ein Mandat statt einer Bedingung, versteckt in einem Bullet über Reviewer-Auswahl. Gemessen gegen die Alternative: 20479 Token für 12 Findings, gegen 381687 Token und drei BLOCKED-Verdikte, die null Code-Defekte gefunden haben.
  • /spec-work kann einen davonlaufenden Reopen-Zyklus stoppen: spec-resume-prep gibt reopen_cycles aus Digest-befreiten REOPENED-Belegen aus, und spec-validate-prep markiert eine Reviewers-Rolle jenseits von code-reviewer, zu der keine ## Reviewer Signals-Zeile passt.
  • Eine fehlgeschlagene github-release-Installation wird als Fehler gemeldet. Die Rückgabecodes von chmod und mv -f wurden verworfen, ein fehlgeschlagenes Verschieben lieferte 0, und devkit sync behauptete, das Werkzeug sei installiert, während das alte Binary liegen blieb. Die Exec-Probe läuft zudem unter einem reinen Bash-Watchdog auf Hosts ohne timeout und ohne gtimeout.
  • Gate 4 und Gate 5 der Reviewer-Gate-Liste behaupten keine Abdeckung mehr, die der Validator nicht hat: Geprüft werden nur Verifies von Akzeptanzkriterien, Fixtures gar nicht — beides ist Arbeit des Reviewers.

Features ​

  • review — Share reviewer signal detection between both prep scripts
  • spec — Bound reopen cycles and close the reviewer-signal gap
  • skill-lint — Catch a mandate whose tool the skill was never granted
  • review — Give /review its resume tool and make gate 7 answerable (Spec 256)
  • spec — Let the reviewer be resumed instead of re-dispatched

Fixes ​

  • tools — Stop reporting a failed github-release install as success
  • reviewer — Stop the gate list claiming coverage the validator lacks
  • tests — Close the three suite regressions this range introduced
  • spec — Renumber the fetch-task spec off the colliding ID 259

Performance ​

  • context — Stop importing VISION.md into every subagent

Refactoring ​

  • rules — Move dispatch detail out of the always-on agents rule

Documentation ​

  • spec — Define when a finding reopens a spec and mandate the round-zero check
  • research — External practice for subagent context and tools
  • reference — Record the OpenSpec trial verdict (Spec 255)
  • spec — Add spec 258 for a gate against ungranted tools (Spec 258)
  • spec — Add spec 257 for the always-on agents rule split (Specs 257, 148)
  • spec — Add spec 256 for the two unexecutable mandates (Specs 256, 255)
  • docs — Unbreak the docs build and close the reviewed drift markers

Chores ​

  • fetch-task — Add the /fetch-task skill for CrewBuddy task retrieval
  • claude — Remove the leftovers from npx-ai-setup

v0.20.1 — 2026-08-13 ​

1 Commit seit v0.20.0

What changed for you ​

Behavior changed

  • The test suite no longer fails on a machine that does not have pandoc. Both share suites treated it as a hard dependency even though devkit marks it optional, so a plain devkit sync produced a checkout whose own suite could not pass. They skip now instead of making a default checkout red.

Fixes ​

  • tests — Let the suite run on a machine without the optional tools

v0.20.0 — 2026-08-13 ​

74 Commits seit v0.19.0 · Specs 207, 225, 227, 229, 230, 234, 235, 237, 238, 239, 242, 250

What changed for you ​

Now available

  • /share veröffentlicht eine Markdown- oder HTML-Datei erst nach einem Preflight als öffentliches Orca-Artefakt: das Skill rendert die Seite selbst, mit escaptem Roh-HTML, scannt genau die Bytes, die es veröffentlichen wird, und verweigert lieber, als zu raten. Ein über einen Zeilenumbruch getrenntes Credential kam am zeilenweisen Scan vorbei — gemessen, Exit 0 mit blocked:false, während dieselben Bytes am Stück Exit 2 liefern. Die veröffentlichte Seite steckt jetzt in der ONEDOT-Vorlage statt als nackte pandoc-Seite hinauszugehen: Marke, Schriftstapel, Light- und Dark-Tokens, Tabellen- und Callout-Stile, Mermaid-Fences als Inline-SVG.

  • Ein frischer Install landet auf einem definierten Terminal-Theme-Paar und Ansichtsmodus statt auf dem, was das Terminal zufällig mitbrachte. Der Seed greift nur in einen leeren Wert, eine bewusste Wahl wird also nie überschrieben, und ein TERM=dumb/CI-Guard hält ihn aus nicht-interaktiven Läufen heraus, in denen ein Ansichtsmodus nichts bedeutet.

  • In einem Orca-Worktree liest der Frontend-Check wieder Console-Ausgaben, Page-Errors, Network-Requests und Core Web Vitals. orca bringt für nichts davon ein eigenes Kommando mit, also erreicht /agent-browser sie über orca exec --command "errors" --page <id> — Orca liefert eine eigene agent-browser-Binary mit, es ist also dasselbe Werkzeug am selben Tab, den du vor dir hast.

  • /agent-browser prüft zwei Rollen in einem Lauf. Ein isoliertes Orca-Browser-Profil hat seine eigene Storage-Partition, Gast-Ansicht und eingeloggte Ansicht überschreiben sich also nicht mehr. Die Stack-Skills für Shopify, Shopware und Laravel verlangen das jetzt, sobald eine Änderung Preis, Warenkorb, Verfügbarkeit oder etwas hinter einem Gate berührt — der Zustand, in dem dein eigener Browser schon ist, ist genau der, den du sonst nie testest.

  • Responsive- und Dark-Screenshots kommen aus demselben Browser: orca set device --name "iPhone 16" und orca set media --color-scheme dark. Der design-reviewer konnte beides schon immer lesen, er hat es nur nie bekommen. Ein Reset-Flag gibt es nicht — orca reload löscht die Device-Emulation.

  • Ein vollständiges Lighthouse-Audit ist dort dokumentiert, wo die Lücke tatsächlich sitzt. Weder /agent-browser noch orca bewerten Accessibility oder SEO; npx lighthouse tut es, braucht keine Installation und kommt mit der jq-Zeile, auf die es ankommt — der Rohbericht war 222 KB JSON für eine Ein-Element-Seite, dem stehen 153 Byte brauchbare Ausgabe gegenüber.

  • devkit run reuse-detect.sh --help gibt jetzt die Schnittstelle des Reuse-Detektors aus: Flags, das zurückgegebene TSV, den Exit-Code und die Sprachen, die er wirklich liest. Vorher endete der Aufruf stumm, den Vertrag konnte man nur im Quelltext nachlesen.

  • /design-preview zeigt eine UI-Idee als Bild, bevor Code existiert. Das Skill rendert eine Wegwerf-Vorschau aus den echten Token-Dateien des Projekts, macht einen Screenshot und holt genau eine Freigabe ein. Das bestehende Browser-Mandat greift erst nach der Änderung, das erste Bild kam bisher also, wenn der Code schon geschrieben war. Lokales Rendern ist der Default, weil es headless, unter Codex und in Wave-Slices funktioniert; die Claude-Design-Leinwand bleibt das optionale Upgrade für begleitete Arbeit.

  • /friction-feedback macht aus einem blockierten Gate ein Issue im devkit-Repo und nennt darin das Projekt, aus dem die Meldung kam. Gesendet wird erst, wenn du Titel, Text und Detailteil bestätigt hast. Neben dem einen Satz nimmt der Skill jetzt --where — welcher Skill, welches Gate oder welches Script gerade lief — und --detail-file, eine Markdown-Datei bis 6000 Zeichen, die als Folgekommentar am angelegten Issue landet. Die ersten zwei Meldungen darüber haben gezeigt, warum es beides braucht: ein Wave-Lauf brachte sieben Befunde, die in 280 Zeichen gepresst werden mussten, und beim Maintainer kamen Symptome ohne die Fläche an, auf der sie auftraten. Die Detaildatei wird genauso auf Geheimnisse geprüft wie der Satz und vom selben Bestätigungs-Hash abgedeckt.

  • Ein ausgelieferter Hook-Eintrag kann jetzt einen eigenen timeout in Sekunden angeben. Die Codex-Projektion begrenzt jeden Hook seit jeher auf 30 Sekunden, während die Claude-Seite sie unbegrenzt liess; ein Eintrag ohne das Feld wird exakt wie bisher erzeugt, kein bestehender Hook ändert sich.

  • Ein Referenz-Repo, dessen Nutzlast eine einzige lange Datei aus atomaren Aussagen ist, hat jetzt einen deterministischen Weg. /devkit-reference-scan extrahiert und hasht diese Aussagen und vergleicht sie gegen ein committetes Ledger, sodass ein Urteil den nächsten Scan überlebt — statt dass der Scan nur Repo-Metadaten vergleicht und die Aussagen ungelesen lässt.

  • devkit skills pull holt die stack-spezifischen Skills, die das Boilerplate eines Projekts besitzt, statt das ganze Boilerplate-Repo zu klonen, nur um ein paar Projekt-Skill-Verzeichnisse herauszukopieren. Der Befehl liest den Stack aus .agents/context/index-manifest.json, löst ihn über die neue Stack-Registry auf eines der drei ONEDOT-Boilerplates auf und kopiert jeden Skill, den devkit nicht selbst mitbringt — ein von devkit ausgelieferter Name wird nie überschrieben, ein lokal geänderter Skill ohne --force in Ruhe gelassen. --check zeigt, was ein Pull täte, ohne zu schreiben. /index legt eine Offline-Drift-Zeile darauf: es vergleicht das Lockfile des letzten Pulls mit dem zwischengespeicherten Boilerplate-Clone und sagt, wie viele gezogene Skills veraltet sind oder wie viele neue oben dazugekommen sind, ganz ohne Netzzugriff.

  • /umbrella-spec schreibt eine Anforderung in je ein Spec pro berührtem Nachbar-Repository eines Ordner-Umbrellas, dazu eine Mapping-Datei, die nur die Reihenfolge trägt. Jedes Member-Spec bleibt eigenständig ausführbar, ein Repo lässt sich also bearbeiten oder weglassen, ohne die anderen aufzutrennen. workspace-prep.sh hat umbrella-detect und umbrella-link-status für Member-Erkennung und Status bekommen.

Behavior changed

  • Agent-State bleibt aus git heraus. memsearch-Memory, der codegraph-Index und die maschinenlokalen Kontext-Caches werden ignoriert, /commit blockt sie, sobald sie gestaged sind (AGENT_STATE_STAGED), und jeder Sessionstart stellt sicher, dass die fünf Ignore-Zeilen in der .gitignore des Projekts stehen. Dieser Hook ist rein additiv: er untrackt nie, er prüft über git check-ignore --no-index, damit eine globale Excludes-Datei oder ein breiteres Muster keine Doppelzeile erzeugt, und er bleibt still, wenn nichts zu ergänzen ist. Vor der Korrektur über 31 lokale Checkouts gemessen: 137 solcher Dateien in 15 Indizes, 111 davon bereits gepusht. Kill-Switch: OD_SKIP_AGENT_STATE_IGNORE=1.

  • Die Wave-Acceptance lässt nicht mehr die ganze Testsuite eines Projekts laufen, wenn sie sie nicht eingrenzen kann. Der Slice gibt WAVE_ACCEPT_TESTS_DEFERRED <grund> aus und bleibt akzeptierbar, den vollen Lauf besitzt CI, und OD_WAVE_ACCEPT_FULL_SUITE=1 stellt das alte Verhalten unter eigenem Marker wieder her. Am 2026-08-12 zweimal gemessen: ein fremder Drift im statischen Gate wurde als eigener Fehlschlag zweier grüner Slices gemeldet und parkte beide.

  • Eine Wave übersteht ihre eigenen Randfälle: --plan verweigert nicht mehr den ganzen Graphen wegen eines unlesbaren Specs, wave-prep.sh bekommt worker-probe und teardown, ensure-deps stellt die angefassten Lockfiles wieder her, und accept sucht zuerst nach einem Stash-Eintrag auf dem eigenen Branch des Slices.

  • Nur noch die Critical-Gotchas laden in jede Session. Die Reference-Ebene liegt jetzt in .agents/context/GOTCHAS-ARCHIVE.md, die Agents bei Bedarf durchsuchen — in neue und bestehende Projekte ausgerollt und auf der Zeigerzeile genannt, nie in der Import-Liste.

  • Die Spec-Authoring-Prüfung probt jedes Verify-Kommando einmal pro Lauf statt einmal pro Kriterium. 19% der Verify-Kommandos in Akzeptanzkriterien abgeschlossener Specs sind exakte Dubletten eines anderen Kriteriums desselben Specs, und jedes Kriterium bekommt weiterhin seine eigene Diagnose.

  • Wer das Repository geklont und ./install.sh ausgeführt hat, behielt eine Update-Quelle, die auf die eigene Arbeitskopie zeigte — devkit sync las danach dieses Verzeichnis und holte nie wieder ein Release. Ein Erstinstall konfiguriert jetzt die signierte Blob-Quelle; ein Zweitlauf lässt die konfigurierte Quelle in Ruhe, und DEVKIT_SOURCE_LOCAL=1 hält die lokale Quelle für Entwicklungs-Builds.

  • devkit doctor warnt jetzt, statt die Zeile auszugrauen, wenn die Update-Quelle ein lokaler Checkout außerhalb von ~/.onedot-devkit ist — auf einem Maintainer-Rechner gewollt, überall sonst ein Defekt. Der Exit-Status bleibt gleich.

  • /index --design-live bricht unter Orca nicht mehr mit "install agent-browser" ab. Es routet wie jeder andere Browser-Aufruf auf den Worktree-Browser, und die Style-Extraktion nimmt dort die Argument-Form, weil --stdin den Orca-Passthrough nicht überlebt.

  • Ein Wave-Slice, der Frontend-Dateien anfasst, bindet seine Verifikation jetzt an den eigenen Worktree-Tab (orca tab list --json → --page <id>). Zwei gleichzeitig prüfende Slices haben sich vorher um einen Tab gestritten.

  • Unter Orca läuft die Login-Wall-Kette nicht mehr. Der Worktree-Tab trägt deine Session bereits, das Skill überspringt also Profil-Suche, State-Speicherei und .env-Lesen, statt um eine Wand herumzuarbeiten, die es nicht gibt.

  • Der Reuse-Scan deckt Python ab. Eine .py-Änderung bekommt jetzt denselben "das gibt es schon"-Hinweis wie TypeScript, Vue und PHP, und ein Review klassifiziert Python-Kandidaten, statt eine leere Liste zu bekommen, die sich wie "keine Dubletten" las.

  • devkit doctor vergleicht den MCP-Client-Zustand in beide Richtungen mit dem Kanon. Ein deaktivierter Kanon-Server ist jetzt ein Problem mit Exit-Code, fremde Server und Disable-Einträge ohne Scope werden als Information gemeldet; claude.ai-Connectors und Plugin-Server bleiben außen vor.

  • Die MCP-Regel trennt Entfernen von Deaktivieren. claude mcp remove löscht den Eintrag, räumt aber weder die projektbezogenen Disable-Listen auf noch widerruft es den OAuth-Grant — der liegt im OS-Keychain und sammelt sich dort für längst entfernte Server an, widerrufen wird beim Anbieter.

  • Die Code-Reuse-Regel schickt ihren Bash-Fallback über rtk rg -n / rtk grep -rn und nennt den Detektor in der Form, die ein Zielprojekt erreicht: devkit run reuse-detect.sh. Sie benennt außerdem die abgedeckten Sprachen, damit ein leeres Ergebnis anderswo "nicht abgedeckt" heißt statt "gibt es nicht".

  • Der lokale Entwicklungs-Sync bricht mit Exit 2 ab, wenn eine Payload-Datei nicht committet ist, statt ohne sie zu bauen. Er exportiert den committeten Stand, eine untracked oder geänderte Datei fehlte also schlicht, während der Lauf trotzdem Erfolg meldete — und die Abkürzung "bereits auf diesem Stand" behauptete aktuell, während genau die zu testenden Änderungen fehlten. Committen, oder --worktree für den Selbst-Edit-Loop. Der Stop-Hook meldet den Fehlschlag beim nächsten Sessionstart, damit die Auslassung auch dann sichtbar wird, wenn niemand die Ausgabe gelesen hat.

  • Der Dev-Sync läuft auch beim Beenden einer Session, nicht nur beim Start, damit eine späte Änderung ohne zweites Kommando in der Runtime landet.

  • Die Community-Schicht von /research liefert wieder Ergebnisse. Es war keine Engine installiert und das eigene --quick-Flag des Wrappers warf die GitHub-Spur weg, eine Spur mit zehn datierten Beiträgen in sechs Sekunden lieferte also nichts; die Erkennung findet jetzt auch einen einfachen Clone unter ~/.local/share/last30days/<version>. Ein übersprungener Provider nennt jetzt den Grund, statt mit Exit 0 und leerer Ausgabe zu enden.

  • Ein abgeschickter Friction-Report ist beim Eintreffen triagierbar. Der Titel trägt eine Zusammenfassung des Satzes statt devkit friction: NONE, das Issue bekommt das Label bug, und die festgehaltene devkit-Version ist vollständig — sie wurde vorher bei 20 Zeichen abgeschnitten, wodurch der Commit-SHA verschwand und ein halber Zeitstempel stehenblieb, der weiterhin wie eine gültige Version aussah.

  • Ein blockiertes Gate sagt dir jetzt, dass es sich zu melden lohnt. od_friction hat den Grund schon festgehalten, aber er landete nur in einer anonymen Summe, und dein eigener Satz ging nie mit; eine sichtbare Zeile sagt es jetzt in dem Moment, in dem es passiert.

  • Der Usage-Report beantwortet, ob überhaupt jemand /commit tippt. Getippte Slash-Commands wurden je Session gesammelt und nie ausgegeben, dieselbe Regex zählte /var/folders-Pfade als Commands, und eine bewusste disable-model-invocation-Ablehnung wurde als Skill-Fehler verbucht — zwei der drei Signale, auf die sich der Report stützt, waren schon an der Quelle falsch.

  • Ein Turn kann nicht mehr auf angekündigter Arbeit enden. "Ich schreibe jetzt die Spec." gefolgt von Stille zwang dich bisher zu einem "ok", damit der Agent tut, was er gerade angekündigt hat; ein Stop-Hook blockiert diesen Turn, und die Arbeit passiert in derselben Runde. Gelesen werden nur die letzten Sätze, weil eine mitten im Bericht genannte und dann ausgeführte Absicht wortgleich klingt — eine Rückfrage, der > Naechster Schritt:-Hinweis und ein konditionales Angebot beenden den Turn weiterhin normal. Kill-Switch: OD_SKIP_ANNOUNCE_GATE=1.

  • Ein Research-Report bringt seine eigene Quellenprüfung mit. Jedes genannte Repository wird gegen die GitHub-API geprüft und als vorhanden oder NOT FOUND markiert, denn ein erfundenes Repo kommt mit plausiblen Dateipfaden und Code daher und liest sich exakt wie ein echtes — drei von vier taten das in dem Lauf, der dazu geführt hat. Fehlt gh oder ist es nicht angemeldet, bleibt die Prüfung still, damit eine ungeprüfte Angabe nie als geprüft erscheint.

  • Eine Änderung an einer .sh- oder .php-Datei bekommt sofort bash -n beziehungsweise php -l, ein Syntaxfehler zeigt sich also beim Edit statt erst am Push-Gate. Blade-Templates bleiben aussen vor — ihre Direktiven sind für den PHP-Parser Inline-HTML, ein bestandener Lint würde dort nichts beweisen. Ein projektweiter Typecheck kam bewusst nicht an dieselbe Stelle: er hat keinen belastbaren Pro-Datei-Modus, ein Projektlauf kostet 10-60s bei jedem Edit, und seine Fehler sind flüchtig, solange eine Änderung über mehrere Dateien noch läuft.

  • /skill-create lehnt den Skill-Namen synced ab. Claude Code reserviert diesen Ordner für Skills, die von claude.ai geladen werden, und ein dort angelegter Skill wird ohne Fehlermeldung übersprungen — der Symlink löst auf, also merkt es weder devkit doctor noch der Auflösungs-Check.

  • Eine Wave parkt einen Slice nicht mehr, weil seine Testsuite ausgehungert war. Zehn Slices, die je eine volle Suite starten, trieben die Laufzeit von 93s Baseline auf 425s, ohne dass eine einzige Assertion fehlschlug — die Acceptance meldete trotzdem rot. Suiten reihen sich jetzt hinter einem Lock im gemeinsamen git-Verzeichnis ein, der Marker trägt den eigenen Exit-Code des Runners und seine letzten 30 Zeilen, und eine belegte Suite ist ein Retry für die nächste Runde statt ein Park.

  • Das Setup übernimmt das Feld statusLine jetzt bedingungslos und sichert den vorgefundenen Wert wortgetreu bei jedem Wire, damit eine zwischendurch getroffene eigene Wahl überlebt; devkit hook-uninstall stellt sie wieder her. Der alte No-Clobber-Schutz bewahrte fast immer eine alte Kopie von uns selbst aus dem Vorgänger-Setup und blockierte damit genau das, was er ermöglichen sollte. Die Zeile selbst sagt mehr in weniger: ein kurzes @<sha7> auf einem Dev-Build, ein Pfeil am Ende, wenn ein Sync aussteht, und kein default-Effort-Segment mehr.

  • /devkit-reference-scan überspringt eine Referenz nicht mehr wegen ihres Dateinamens. Das Freshness-Gate ignoriert README-Rauschen, damit Badge-Änderungen keinen teuren Vergleich auslösen; das Skill hatte daraus einen namensbasierten Ausschluss gemacht, der auch die Nutzlast von Einträgen wegwarf, die normal vergleichbar sind — das Kriterium ist der Dateibaum, nicht der Name.

  • Der Authoring-Reviewer eines Specs muss nicht mehr jede zitierte Datei selbst öffnen. Der Validator löst diese Zitate ohnehin auf und liefert die Zeileninhalte jetzt im JSON mit, das der Reviewer bekommt, gekappt bei 300 Zeichen je Zeile.

  • Die Tool-Pins ziehen mit dem nächsten devkit sync nach: fallow auf 3.15.0, headroom auf 0.34.0 — letzteres räumt CVEs in aiohttp und cryptography aus. codex ist jetzt als der brew-Cask deklariert, der es tatsächlich ist: es stand auf npm, und weil npm ls -g --parseable für ein nicht installiertes Paket mit exit 0 und leerer Ausgabe zurückkommt, verglich die Outdated-Prüfung es gegen die falsche Registry und meldete es unabhängig vom Stand als aktuell.

Action required

  • Einmal pro Repository: devkit project-migrate . --apply nimmt die bereits getrackten Agent-State-Dateien aus dem Index. Ignorieren untrackt nichts, was schon committet ist, und der Sessionstart-Hook lässt diese Hälfte bewusst liegen — er nennt nur, wie viele Dateien noch im Index stehen.

Features ​

  • hooks — Ensure agent-state ignore lines at session start (Spec 237)
  • share — Render shared documents into the ONEDOT artifact template (Spec 235, 227)
  • umbrella-spec — ✨ add /umbrella-spec command for multi-repo requirements
  • share — Gate a document behind a scan before it becomes a public link (Spec 227)
  • agent-state — Keep memsearch, codegraph and context caches out of git (Spec 237)
  • skills — Pull stack skills from the boilerplate repos (Spec 234)
  • terminal — Ship theme pair and seed terminal view defaults (Spec 238)
  • wave — Close the five defects two reported wave runs left open
  • context — Move the GOTCHAS Reference tier off the always-on path
  • spec-validate — Hand the authoring reviewer its cited lines
  • reference-scan — Judge a one-file claim corpus against the canon
  • hook — Syntax-check bash and php files on edit
  • hooks — Let a hooks.json entry carry an optional timeout
  • statusline — Own the statusLine everywhere, and say more in less (Spec 230)
  • reference-scan — Contract a corpus route for prose-heavy references (Spec 242)
  • feedback — Tell the developer what to report when a gate blocks (Spec 229)
  • specs — Settle the ONEDOT artifact template against a measured prototype (Spec 235, 227)
  • hooks — Stop a turn that only announces work instead of doing it
  • telemetry — Report typed slash commands and stop miscounting noise (Spec 225)
  • skills — Add design-preview for pre-code visual approval
  • mcp — Diff the actual client state against the canon in devkit doctor
  • reuse-detect — Cover Python and document the CLI contract
  • browser — Route the frontend-verify mandate through the Orca browser

Fixes ​

  • release — Repair the four suites the release range broke
  • runtime — Restore the OD_ fallback on two DEVKIT_ reads
  • wave — Stop acceptance from running the whole suite it cannot narrow
  • skill-create — Refuse the reserved skill name synced
  • wave — Stop acceptance from reporting a starved suite as red
  • feedback — Make a filed friction report triageable on arrival
  • install — Give a cloned-repo install a real update source (Spec 239)
  • research — Verify every repo a research report names
  • research — Make the community-signal layer actually return results
  • dev-sync — Stop instead of building a payload that omits the change
  • dev-sync — Say when a HEAD build omits uncommitted payload files

Performance ​

  • spec-validate — Probe each verify command once per run

Docs ​

  • changelog — Close the thirteen uncovered commits since the 56-commit sync
  • spec — Reissue 227 after the wrap-split and CSP review findings
  • changelog — Close the eight uncovered commits since the 23-commit sync
  • spec — Contract the wave accept fallback off the full suite
  • changelog — Close the 23 uncovered commits since the impeccable verdict
  • spec — Contract the probe dedupe and record the savings research (Spec 250)
  • spec — Add the approved contracts for specs 246 and 247
  • spec-235 — Render through spec 227's gate instead of before it (Spec 235, 227)
  • context — Mark the hook timeout contract as landed
  • quick-start — Clarify default source config after install
  • context — Re-cut the impeccable rollout into three contracts
  • context — Record why the impeccable distribution spec was rejected
  • spec-235 — Keep the markdown source, treat the rendered page as disposable (Spec 235)
  • reference — Record the human verdict on the detector's findings
  • context — Park the impeccable adoption decision in the backlog
  • context — Record two traps from the impeccable trial
  • reference — Add nine watch entries from the community practice index
  • spec — Point spec 230 at no branch instead of a deleted one (Spec 230)
  • reference — Record the impeccable trial verdict (Spec 207)
  • changelog — Close the seven uncovered commits and resync the German page
  • changelog — Record the announce gate and the research source check
  • specs — Add approved specs 225, 227, 229 and 230
  • changelog — Cover the research fix and the dev-sync hard stop
  • changelog — Record the dev-sync fix and the Stop-hook dev loop
  • changelog — Close the two uncovered commits and the MCP removal case
  • changelog — Record the reuse-detect, doctor and rule changes
  • rules — Route the code-reuse scan through rtk and devkit run
  • changelog — Record the Orca browser routing under Unreleased

Chore ​

  • devkit — Sync changelog checkpoint to 2.1.229
  • tools — Repair pin-audit provenance and bump the tools it was hiding
  • reference — Record the 2.1.227-2.1.228 changelog scan
  • settings — Allow this repo's own gates and read-only inspection
  • dev-loop — Run the dev sync on Stop as well, not only at session start

Style ​

  • tests — Format feedback.sh so the static gate can run

WIP ​

  • spec-227 — Implementation state before the contract reissue (Spec 227)

No commit type ​

  • Update
  • Update
  • update
  • update

v0.19.0 — 2026-08-10 ​

46 Commits seit v0.18.0 · Specs 206, 207, 208, 211, 212, 213, 214, 215, 217, 218, 219

What changed for you ​

Now available

  • /backlog arbeitet einen Parkplatz für Befunde ab, die auftauchen, während du an etwas anderem sitzt. /capture hat Backlog als siebtes Ziel bekommen, und ein SessionStart-Hinweis sagt dir, wenn etwas liegt — so entgleist ein Befund weder die laufende Aufgabe noch geht er verloren.

  • Der Design-Slop-Check entscheidet die vier AI-Slop-Merkmale, die eine einzelne Zeile klären kann — Gradient-Text, die Karte mit Seitenstreifen, transition-all und hover:scale-. Er akzeptiert eine Datei oder ein Verzeichnis, endet mit 1 bei einem Treffer und mit 2 bei einem unbekannten Musternamen. Ein Projekt unterdrückt einen Fehlalarm in .agents/context/design-slop-ignore.txt, nicht in DESIGN.md — das füllt /index neu und würde die Ausnahme beim nächsten Lauf verwerfen.

  • Eine Rolle design-reviewer kommt von selbst in ein Review, sobald die geänderten Dateien eine Frontend-Endung tragen. Sie liest nur und bekommt einen eigenen Beweismittel-Abschnitt mit dem gefilterten Diff und der Ausgabe des Detektors — ein Design-Befund steht damit auf derselben Art Beleg wie ein Korrektheitsbefund. Die übrigen Anti-Patterns bleiben eine Reviewer-Linse, weil sie Urteil über mehrere Zeilen oder die gerenderte Seite brauchen.

  • /index --design-live [url] füllt DESIGN.md aus den Token-Quellen, die ein laufender Stack wirklich benutzt, statt aus dem, was das Repo deklariert. Lass es nach dem statischen /index laufen, wenn Seite und Dokument auseinandergelaufen sind.

  • devkit sync läuft unter Linux ohne Homebrew durch. Jedes Werkzeug, das bisher nur über brew kam, trägt jetzt einen zweiten Weg — apt, wo die Distribution es liefert, sonst ein versions-gepinntes GitHub-Release, dessen Datei gegen einen in diesem Repo committeten Hash geprüft wird und nicht gegen einen aus demselben Release geladenen.

Behavior changed

  • Die rtk- und codegraph-Zeilen in den Tooling-Regeln beschreiben jetzt, was diese Werkzeuge wirklich mitbringen: rtk verweist auf sein eigenes --help, statt 8 von über 80 Unterbefehlen aufzuzählen, und codegraph nennt affected, sync und unlock — letzteres der einzige dokumentierte Ausweg aus einem hängenden Index-Lock. Eine neue Prüfung weist eine Tool-Zeile zurück, die einen Agenten nennt, der gar keine Shell hat, um das Werkzeug auszuführen.

  • Eine Wave misst die rote Baseline einmal, am Basis-Commit, und jedes Slice-Briefing trägt sie wörtlich. Was dort schon fehlschlägt, gehört nie dem Slice; alles darüber hinaus schon. Bisher entdeckte jedes Slice dieselben vorbestehenden Fehler als eigene.

  • Die Abhängigkeitsprüfung der Wave arbeitet auf der Hülle, die wirklich zählt, also blockiert ein kaputtes fremdes Spec nicht mehr jedes parallele Slice; und der Preflight meldet die Fakten, die ein Repo ohne Node braucht, statt Node-Fakten, mit denen es nichts anfangen kann.

  • Der Run-Cost-Report zählt eine Nachricht nur dann als Subagent-Resume, wenn dieser Lauf die Adresse selbst beauftragt hat. Seit Claude Code 2.1.224 trägt dasselbe Werkzeug auch Notizen an parallele Sessions, und deren Mitzählen machte aus einer Token-Summe eine behauptete Obergrenze.

  • fallow pinnt seine Audit-Basis genauso wie das Review-Paket, damit ein Review und seine Befunde nicht mehr gegen verschiedene Commits urteilen können. Eine Behauptung „keine Aufrufer" nennt jetzt ihren Beweis — dead-code --trace, ausgeführt von der Hauptschleife, weil ein Reviewer keine Shell hat.

  • Beim Schreiben eines Specs wird ein Akzeptanzkriterium jetzt abgelehnt, dessen Verify-Kommando nie rot werden kann — eines, dessen Negation nie greift. Ein solches Kriterium ist schon grün, bevor die Arbeit existiert, und beweist damit nichts; bis jetzt hielt es nichts von der Freigabe ab.

  • devkit project-migrate <root> --apply warnt jetzt mit PROJECT_LEGACY_DIRTY_TREE, bevor es in die Claude-Einstellungsdatei des Projekts schreibt, die eine uncommittete Änderung trägt. Bisher gab es diese Warnung nur unter --force, und seit der Lauf kein Recovery-Backup mehr hinterlässt, hatte so eine Änderung keinen Rückweg. Der Exit-Code bleibt unverändert — das ist ein Signal, keine Blockade. settings.local.json bleibt außen vor: sie ist gitignored, eine git-status-Prüfung kann über sie nichts sagen.

  • Derselbe Lauf räumt die Recovery-Transaktion, die er angelegt hat, jetzt selbst wieder ab, statt sie liegen zu lassen — eine Migration lässt kein Verzeichnis mehr wachsen, das niemand zurückliest.

  • Jeder devkit project-migrate-Lauf schreibt nach ~/.onedot-devkit/project-migrate.log: eine Kopfzeile mit Version, Modus und Checkout, eine Zeile je PROJECT_*-Marker einschließlich derer, die den Lauf gestoppt haben, und eine Schlusszeile mit dem Ausgang jeder Phase. Die Warnungen, auf die es am meisten ankommt — eine tote Referenz, eine übersprungene Datei, ein zurückbehaltenes Backup — sind in einem langen Lauf vorbeigescrollt und waren danach nirgends belegbar. Das Log ist best-effort und lässt eine Migration nie scheitern; es wird auch nie angelegt, ein project-migrate-Lauf ohne devkit-Installation fasst also weiterhin nichts außerhalb des Checkouts an.

  • /wave fährt Orcas eigene Supervised-Worker-Schleife, statt eine nachzubauen: ein gebundener Run, ein Task je Slice, und worker_done als Abschluss-Autorität. Ein Slice, der still wird, ist jetzt von einem unterscheidbar, der gescheitert ist.

  • /devkit-retro fährt die Cross-Model-Prüfung zuerst und behebt dann, was sie findet, statt sie für später zu berichten.

  • reuse-detect vereinigt die Kandidatenmengen aus codegraph und ripgrep und weitet seinen Glob auf die ganze Sprachfamilie aus — ein Helper, den es schon gibt, wird damit auch gefunden, wenn der Graph ihn übersieht.

  • /spec-work schickt eine lange Verifikation jetzt neben das Review statt davor, ein langsames Gate hält den Reviewer also nicht mehr auf.

  • Eine verdrahtete Installation setzt env.CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH in den persönlichen Claude-Einstellungen jetzt auf 1, ein Subagent kann also keine eigenen Subagenten mehr starten. Claude Code hat diesen Default in 2.1.219 auf 3 angehoben, und kein Agent aus diesem Setup trägt das Agent-Tool — Verschachtelung konnte damit nur ungefragt entstehen, über die eingebauten Rollen. Ein eigener Wert gewinnt unangetastet, und hook-uninstall lässt den Key stehen.

Action required

  • In dieser Range ist in einem Zielprojekt nichts zu tun. Wer sich darauf verlässt, dass project-migrate ein Recovery-Backup hinterlässt, sollte damit aufhören — es ist absichtlich weg, und die neue Dirty-Tree-Warnung ist das, was an seine Stelle tritt.

Features ​

  • tooling — tool rows describe the surface the tools actually ship (Spec 218)
  • wave — measure the red baseline once, not once per slice
  • tools — devkit sync completes on Linux without Homebrew (Spec 214)
  • wave — scope the dependency check and make the preflight stack-aware (Spec 219)
  • backlog — a parking lot for findings that surface mid-work (Spec 215)
  • fallow — pin the audit base and name the dead-code prover (Spec 217)
  • hooks — turn subagent nesting off by default
  • spec-work — run long verification beside the review, not before it
  • spec-validate — reject a verify command whose negation never fires (Spec 214)
  • project-migrate — warn before writing into an uncommitted settings.json (Spec 208, 213)
  • review — add a design reviewer that fires on a frontend signal (Spec 212)
  • design — detect the four line-decidable AI-slop tells (Spec 211)
  • project-migrate — purge the recovery transaction the run created (Spec 208)
  • design-fill — fill DESIGN.md from the real token sources of a running stack (Spec 207)
  • retro,triage — make the cross-model check run first and the retro fix what it finds (Spec 208)
  • spec — 208 — project-migrate leaves no recovery backup behind
  • project-migrate — persist every run marker to a migration log
  • wave — drive Orca's supervised worker loop instead of rebuilding it (Spec 206)

Fixes ​

  • tests — stop two fixtures from depending on the host they run on
  • tools — screen archive links by type instead of parsing tar's prose
  • tools — count only subagent resumes in the run-cost report
  • tools — give the four new DEVKIT_ sites their OD_ fallback
  • (none) — restore the OD_ fallback chain and the last stale Codex hook count (Spec 215)
  • tests — update the Codex hook and agent counts the last two changes moved (Spec 215)
  • (none) — repair three assertions the last few commits left stale (Spec 215)
  • tests — stop a failing smoke assertion from killing the whole suite
  • agents — list design-reviewer in the routing table (Spec 212)
  • reuse-detect — union codegraph and rg candidates, widen glob to language family

Docs ​

  • specs — complete spec 214 after acceptance on the real Linux host (Spec 214)
  • changelog — carry the unreleased range to 42 commits
  • specs — let spec 214's step verifications run at the project's severity (Spec 214)
  • specs — record spec 214's verification pass against the committed code (Spec 214)
  • specs — repair the four verify commands spec 214 could never run (Spec 214)
  • reference — record what the cross-session messaging test measured
  • flows — close three reviewed docs-source findings (Spec 215)
  • spec-215 — record the authorized docs/flows/knowledge.md edit in the file list (Spec 215)
  • changelog — carry the unreleased range to 22 commits
  • specs — add approved specs 215, 217, 218 and 219
  • changelog — extend the unreleased range and document background verification
  • changelog — document unreleased range and signal review roles
  • reference — record the docs-mcp-server trial verdict
  • spec — 214 — devkit sync completes on Linux without Homebrew
  • context — capture two traps found while auditing the global setup
  • spec-work — treat an empty reviewer return as not_reviewed
  • spec — add specs 207, 211, 212, 213
  • (none) — retro consequences for spec 208, wave sweep friction marker, spec (Spec 208)

v0.18.0 — 2026-08-09 ​

31 Commits seit v0.17.0 · Specs 147, 201, 202, 203, 204, 205

What changed for you ​

Now available

  • /workspace koordiniert ein Vorhaben über einen Ordner mit Schwester-Repositories, der selbst kein Git hat: ein eingefrorener Vertrag, eine committete Spec je Repository, und das jeweils eigene /wave als echter Agent-Worker unter einem Orca-Run. Ein einzelnes Repository bleibt bei /wave — das hier ist für den Fall, dass die Arbeit wirklich mehrere umfasst.
  • /failure-learn durchsucht deine früheren Transkripte rein lesend nach Tool-Call-Fehlern, die sich wiederholen, und übergibt das Ergebnis an /capture zum Schreiben. Es schreibt selbst nichts.
  • headroom audit-reads beziffert, wie viel deines Kontextbudgets auf Read-Verschnitt entfällt, und headroom learn --verbosity leitet die Antwortlänge aus deinen tatsächlichen Abbrüchen ab statt sie zu raten. Beide haben jetzt eine Routing-Zeile, damit sie benutzt und nicht nur installiert werden.
  • /devkit-tool-trial entscheidet die Adaption eines externen Tools, indem es das Tool laufen lässt: gepinnter Install hinter einem Config-Snapshot, jede Oberfläche mechanisch aufgezählt, und ein Verdikt mit zwei Armen — wie viel es bewegt und ob die Ausgabe tatsächlich besser wird.

Behavior changed

  • Ein Spec-Step ohne Acceptance Criteria ist unter --strict-authoring jetzt ein Fehler statt einer Warnung. Die Lücke konnte bisher bis in eine abgeschlossene, digest-gebundene Spec durchrutschen, wo ihre Reparatur die Freigabe ungültig machen würde — gefangen wird sie deshalb genau dort, wo der Vertrag noch änderbar ist.
  • Ein Acceptance Criterion, dessen Verify-Kommando nur eine Markdown-Datei nach Text durchsucht, wird jetzt als Hinweis gemeldet. Eine gefundene Zeichenkette beweist, dass die Zeichenkette da ist, nie dass das Verhalten stimmt. Es warnt und blockiert nicht, weil von außen nur die Form des Kommandos prüfbar ist.
  • devkit sync lässt dich nicht mehr mit einem Tool zurück, das Erfolg meldet und trotzdem kaputt ist. Wenn der Installer sauber durchläuft, aber ein älteres Binary früher im PATH den Namen behält, wird die korrekt gepinnte Datei in den eigenen bin-Ordner von devkit verlinkt; erst wenn dieser Link immer noch verliert, schlägt der Lauf fehl — und nennt dann den beschattenden Pfad und die gefundene Version.
  • devkit project-migrate --apply sagt dir jetzt, wenn es etwas kaputt gemacht hat. Eine gelöschte Datei, deren Pfad noch irgendwo verdrahtet ist — ein .husky/pre-push, das ein entferntes Skript aufruft, ein CI-Schritt, der einen entfernten Hook nennt — wird als PROJECT_LEGACY_DANGLING gemeldet, mit dem gelöschten Pfad und der Datei, die weiter darauf zeigt. Bisher sah der Lauf sauber aus und der Schaden zeigte sich beim nächsten git push.
  • Die PROJECT_NPX_DRIFTED-Zeilen stimmen wieder. Sie wurden vor der Manifest-Phase gedruckt, sodass eine Datei, die derselbe Lauf danach gelöscht hat, noch als behalten gemeldet wurde, und ein projekteigenes scripts/- oder agents/-Verzeichnis allein wegen des Namens auffiel. Drift wird jetzt nach jedem Löschdurchgang gemeldet, nur für Pfade, die noch existieren, und nur unter den Konfigurationsverzeichnissen von Claude, Codex und RTK.
  • /wave findet die Slice-Specs in einem Repository mit devkit/specs-Layout. Jeder Sweep und jede Stalled-Zeile lieferte dort WAVE_SWEEP_USAGE, weil das eigene Spec-Verzeichnis des Koordinators nie in einem fremden Worktree ankommt; beide Layouts werden jetzt gegen den Worktree selbst aufgelöst.
  • Das Run-Cost-Retro findet deine Spec-Dateien in einem Projekt mit devkit/specs-Layout wieder. Es hat sie unter einem fest verdrahteten specs/ gesucht, nichts gefunden und deshalb jede Slice als ROUTE_UNRECORDED gemeldet — eine Markierung, die sich liest wie „das fällige Review wurde nie ausgelöst", während die Ursache schlicht die Suche war.
  • devkit run verbosity-prep.sh gibt zusätzlich VERBOSITY_LONGWORD_TOP aus, die fünf langen Prosa-Wörter, die du am häufigsten wiederholst — Code-Blöcke, Inline-Code und URLs vorher entfernt. Rein berichtend, es gated nichts; Schwelle bleibt allein das Zeichenbudget.
  • Ein externer Kandidat wird jetzt daran gemessen, was er mit der Arbeit macht, nicht daran, wie gut er zu dem passt, was wir schon geschrieben haben. Adaption ist der Default, der Eigenbau trägt die Beweislast, und eine Kollision mit einer eigenen Regel beziffert die Migration, statt die Diskussion zu beenden. Ownership und Version-Pinning bleiben unverändert.
  • Jede Token-Zahl, die run-cost.sh meldet, ist aus Transkript-Einträgen summiert statt aus einem vom Anbieter gemeldeten Feld gelesen — und das Skript sagt das jetzt auch. Zwei gemessene Fallen machen das tragend: der .usage-Block beschreibt den letzten Turn statt den Lauf, und ein budget-gekappter Lauf meldet sich in jedem dokumentierten Feld als sauber beendet.

Action required

  • Wenn dein Projekt auf dem alten flachen specs/-Layout bleibt, ändert sich für dich nichts. Dieses Repo ist auf devkit/ umgezogen, und die Spec-Pfad-Resolver lesen beides — eine ab jetzt geschriebene Spec setzt aber den Resolver voraus, kein fest verdrahtetes Verzeichnis.

Features ​

  • spec-validate — catch weak contracts at authoring time (Specs 204, 205)
  • tool-trial — close the headroom coverage loop and fix the remaining gate
  • workflow — route the two headroom measurement surfaces
  • workspace — route an undertaking across sibling repositories (Spec 203)
  • specs — 202 wave slice
  • specs — 201 wave slice
  • specs — 203 multi-repo workspace coordinator
  • specs — make the trial bench converge instead of sampling (Specs 202, 201)
  • specs — 202 trial bench, and make adoption wholesale by default (Spec 202)
  • tools — state the cost basis run-cost.sh actually reports
  • specs — 201 adopt headroom learn read-only, /capture as sole writer
  • canon — make adoption the default and results the deciding criterion
  • verbosity — measure the readability half of the compact contract

Fixes ​

  • rules — correct two native-feature claims the changelog check found stale
  • tool-trial — let griffe reach the module it is asked to enumerate
  • wave — resolve a slice spec in both layouts, not the caller's
  • tools — heal PATH-shadowed npm binaries during reconcile
  • project-migrate — report dangling references and stop mislabeling drift
  • tests — derive the candidates exclude needle from the layout resolver
  • devkit-release — bind the clean room to CI's environment, drop a flaky time budget
  • spec-backfill — resolve completion commits across the devkit/ rename

Documentation ​

  • reference — record where the two native corrections landed
  • coverage — headroom trial round 2, the library surface honestly counted
  • reference — harvest headroom under the Adoption Rule
  • canon — sync changelog, troubleshooting, and reference candidates
  • changelog — record the devkit/ layout range under Unreleased
  • context — capture that the release clean room must not set OD_TEMPLATES_DIR
  • flows — list /workspace and /failure-learn on their flow pages

Refactoring ​

  • specs — move this repo onto the flat devkit/ layout (Spec 147)

No commit type ​

  • Add headroom init proxy config for Codex
  • rename specs/ to devkit/ for flat directory layout, aligning wiring and

v0.17.0 — 2026-08-07 ​

46 Commits seit v0.16.0 · Specs 089, 091, 180, 184, 185, 187, 191, 193, 195, 198, 199

What changed for you ​

Now available

  • devkit project-migrate erkennt übrig gebliebene npx-ai-setup-Dateien an ihrem Inhalt. Ein Projekt, dessen .ai-setup.json fehlt, wird damit tatsächlich aufgeräumt statt „nichts zu tun" zu melden — auch Kopien in alten Worktrees. Geschützte Bereiche (.mcp.json, .agents/**, Specs, Settings) bleiben unangetastet, und jede Löschung läuft über eine Recovery-Transaktion.
  • Der Usage-Report gibt jetzt den Friction-Kanal und die Pro-Tool-Zahlen aus, die er längst sammelt. Die Friction-Überschrift trägt ihren eigenen Nenner, weil das Feld erst ab 0.16.0 mitgeliefert wird.
  • Eine Prosa-Docs-Seite kann die ausgelieferten Dateien benennen, die sie beschreibt; der Doku-Drift-Check meldet jede Seite, deren Quellen sich seit dem Marker weiterbewegt haben.
  • docs/comparison.md sagt, worin sich dieses Setup von superpowers, spec-kit und OpenSpec unterscheidet — und wo die anderen tatsächlich voraus sind.

Behavior changed

  • /spec führt jede Verify-Zeile eines Acceptance-Kriteriums am Authoring-Gate wirklich aus, statt nur zu prüfen, dass ein Snippet dasteht. Ein Grün, das der Arbeit vorausgeht, blockiert die Freigabe, ebenso ein Rot, das die Harness statt der Assertion erzeugt hat. Kill-Switch: OD_SKIP_VERIFY_PROBE=1.
  • /spec weist außerdem ein Acceptance-Kriterium zurück, dessen Verify nichts sucht, was das Kriterium benennt, warnt vor einem zu großen Brief, solange Kürzen noch billig ist, und füllt den Provenance-Header aus der Session, statt nach der Feldsyntax zu fragen.
  • /test verweigert einen php artisan test-Lauf, der die Datenbank der Anwendung selbst migrieren würde. Verweigert wird nur bei nachgewiesener Kollision — alles Unklare läuft durch und sagt das auch. Bei einer Meldung DB_DATABASE in phpunit.xml mit force="true" festnageln.
  • /index meldet GOTCHAS- und DECISIONS-Einträge mit doppeltem Betreff, damit ein veralteter Zwilling nicht weiter als aktuell gelesen wird. Nur ein Bericht; die Bewertung bleibt bei dir.
  • /wave korrigiert vier Regeln, die dieser Lauf widerlegt hat: eine Worker-Rückfrage benennt jetzt ihren Kanal, ein Weckruf braucht die Zustimmung des Transkripts, completed ist keine Abnahme, und die Reintegration verlangt nur noch saubere berührte Pfade.
  • Die Run-Cost-Nachbetrachtung markiert nicht mehr jede Slice als „Review übersprungen" — der Zähler prüfte einen Tool-Namen, den die Harness nicht mehr sendet.
  • Das Verwerfen des kompletten Working Tree ist blockiert: git restore . und git checkout . löschen uncommittete Arbeit so gründlich wie reset --hard, hinterlassen aber keinen Reflog-Eintrag zum Zurückholen. Pfadbezogene Restores, git restore --staged <pfad> und Branch-Wechsel bleiben erlaubt.
  • Du wirst nicht mehr gebeten, einen API-Key, ein CI-Secret oder einen OAuth-Token in den Chat zu kopieren. Ein Credential geht direkt in die Datei oder in gh secret — vorbei am Transkript, das sonst jedes spätere Kontextfenster mitträgt.
  • Eine Docs-Seite über ihren direkten Link zu öffnen oder neu zu laden liefert auf der veröffentlichten Seite kein 404 mehr.
  • /devkit-tools-changelog wertet eine unveränderte Versionsnummer nicht mehr als Beleg dafür, dass ein Tool sich gleich verhält — ein neues Wörterbuch oder Regelwerk wird sichtbar, statt still durchzugehen.

Action required

  • devkit sync ausführen, um das zu übernehmen. Nichts in dieser Range bricht ein bestehendes Projekt.
  • Laravel-Projekte: meldet /test eine Datenbank-Kollision, vor dem nächsten Testlauf DB_DATABASE in phpunit.xml mit force="true" festnageln.

Features ​

  • spec — add tree-mutation and root-level exemption checks to verify (Spec 198)
  • spec — execute verify commands at the authoring gate (Specs 089, 091, 199)
  • docs — flag a prose page whose code moved on without it
  • index — surface duplicate subjects in GOTCHAS and DECISIONS
  • test — refuse a PHP test run that would drop the app's own database
  • spec — fill in where a spec came from instead of asking for the syntax
  • spec — flag an acceptance criterion whose verify searches for nothing it names
  • usage-report — print the friction and per-tool data we already collect (Spec 180)
  • project-migrate — sweep npx-ai-setup remnants by content, manifest or not

Fixes ​

  • tests — skip the npx-sweep assertions when the predecessor checkout is absent
  • project-migrate — drop the duplicate spec-path literal from the content sweep
  • run-cost — count the dispatch tool under both its names
  • spec — warn about an oversized brief while cutting it is still cheap
  • tests — let two full-content scans see past the shipped npx inventory (Spec 184)
  • wave — correct four rules this run proved wrong, at no budget cost
  • devkit-docs — anchor the Unreleased replacement to a heading
  • hooks — block discarding the whole working tree
  • skill — separate version equality from behaviour equality in the tool gate
  • docs — serve extensionless doc routes on Vercel
  • reference — point the landed_ref at the commit that survived

Refactoring ​

  • spec-work — move branch-only material behind references

Documentation ​

  • flows — document project-migrate options and its context phase
  • changelog — record the 24 commits the Unreleased block was missing
  • reference — add open-gsd/gsd-core to the watch list
  • retro — a fix that adds a clause without its criterion buys another round (Spec 187)
  • rules — teach three ways an edit to a long-lived file goes wrong (Spec 193)
  • specs — approve 187, a gate against a test run that drops the live database
  • spec — require an AC's threshold to be measured before approval (Spec 185)
  • comparison — say where we differ from the big setups, and where we don't
  • reference — scan Karpathy skills repo, no new candidates
  • repo — fill the changelog while the work lands, not at release
  • plans — living plan for the alignment and skill-size findings (Spec 193)
  • rules — answer what to do when a skill budget goes red
  • rules — decide context boundaries where the window actually fills
  • context — capture that "the agent asked" is unprovable from inside (Spec 193)
  • reference — record the mattpocock/skills verdicts
  • budget — record why the skill budget is 5000 tokens
  • rules — never ask for a credential in chat
  • specs — record spec 191 and the orchestration-depth research (Spec 191)
  • rules — name what the native worktree guard does and where it stops
  • context — record that a green local run proves nothing about CI

Tests ​

  • — resolve the shared test sandbox once instead of per fixture (Spec 184)

Build ​

  • reference — close the three harvested rows against their commit
  • tools — bump typos, fallow and repomix
  • reference — record the 2.1.222 sweep verdicts

No commit type ​

  • Add spec 195: docs drift gate for prose pages (Spec 195)

v0.16.0 — 2026-08-04 ​

59 Commits seit v0.15.0 · Specs 042, 154, 157, 158, 159, 161, 162, 163, 166, 167, 168, 169, 170, 172, 174, 175, 176, 177, 182

What changed for you ​

Now available

  • /review im Diff-Modus paginiert jetzt, statt einen unbegrenzten Diff zu uebergeben — REVIEW_MAX_FILES, REVIEW_MAX_TOKENS und REVIEW_OFFSET begrenzen das Paket, und die geaenderten Dateien werden nach Lesereihenfolge sortiert.
  • Ein Step darf mit — ACs: AC1, AC3 benennen, was er erfuellt; die strenge Validierung meldet dir dann verwaiste Steps und unbeanspruchte Kriterien.
  • Drei optionale Tools kommen dazu: osv-scanner prueft gestagte Lockfiles bei /commit, ccusage gibt /devkit-retro eine Kostenzahl ohne Claude-Transkript, ast-grep laeuft als struktureller Lint im Quality-Gate.
  • /devkit-claude-changelog durchsucht die nativen Claude-Code-Docs nach Features, die Teile unseres Kanons ueberfluessig machen.

Behavior changed

  • Die strenge Spec-Validierung warnt, wenn ein Verify-Kommando einen Pfad nennt, den es weder gibt noch der deklariert ist, und wenn eine Schleifen-Verify das Gegenteil dessen meldet, was sie behauptet.
  • /wave raeumt eine Slice ab, sobald sie landet, statt am Ende der Welle, findet haengende Slices und reintegriert aus der deklarierten Dateiliste.
  • Die Spec-Artefakte liegen flach unter devkit/, und /spec weist ein Branch-Feld zurueck, das den Hauptbranch des Repos nennt.
  • Agent-Frontmatter wird gegen den dokumentierten Schluesselsatz geprueft, und der ausgelieferte Opus-Alias zeigt nicht mehr auf die kontogebundene 1M-Variante.

Action required

  • devkit sync ausfuehren. In diesem Bereich bricht nichts an bestehenden Projekten.

Features ​

  • telemetry — blocking gates report their reason through the usage channel
  • spec — hand the reviewer the evidence already computed (Spec 177)
  • wave — the coordinator finishes a run without asking back (Spec 176)
  • routing — check the tier table against current benchmark data (Spec 174)
  • spec — catch a verify loop that inverts its own exit status (Spec 172)
  • spec — let a Step declare its acceptance criteria (Spec 172)
  • hooks — carry the stack lens to the reviewer, and measure whether it lands (Spec 170)
  • review — give diff mode a read budget instead of an open-ended diff (Spec 168)
  • tools — adopt osv, ccusage and ast-grep where they replace our own work (Spec 154)
  • spec-work — ask the architect once when a block diagnoses CORRECTION (Spec 162)
  • claude-changelog — sweep the native docs for what makes our canon obsolete (Spec 161)
  • spec — check verify commands for addressable paths (Spec 168)
  • wave — tear a slice down when it lands, not when the wave ends
  • tools — close the blind spots in the outdated check
  • review — rank the changed files a human should read first (Spec 159)
  • context — give a related repo an owner instead of a pointer (Spec 163)
  • wave — adopt Orca's own agent habits instead of working around them
  • wave — find the stalled slice, and reintegrate from the file list
  • rules — adopt /goal as the completion condition for headless runs (Spec 166)

Fixes ​

  • tests — report only the suites this shard actually started
  • tests — heal two assertions that were green only on the laptop (Spec 172)
  • release — bind the suite to the tagged bytes instead of the desk
  • guard — recognise repo root and HOME behind a symlink too (Spec 182)
  • release — make the preflight usable in a repo several sessions work at once
  • devkit-claude-changelog — the skill produced both of the defects it reported
  • rules — sandbox.credentials was documented as a boolean
  • spec-work — a return without a report is not a finished run
  • routing — take the kimi tier key back out; it blocks sync and rollback (Spec 042)
  • agents — carry the Step mapping only where the validator proves it (Spec 172)
  • hooks — seed the bare opus alias, not the account-gated 1M variant
  • spec — refuse a Branch field that names the repo's own main branch (Spec 168)
  • spec — refuse a Step id the contract digest cannot neutralise (Spec 162)
  • wave — drain the inbox, and hold the mirror apart by one variable (Spec 154)
  • wave — let acceptance read a declared directory, not just a named file (Spec 158, 161)
  • retro — keep the shipped run-cost mirror in sync with the maintainer copy (Spec 154)

Performance ​

  • tests — assign each suite to the lightest shard instead of dealing them round-robin

Refactoring ​

  • spec — flatten the spec artifact family under devkit/ (Spec 169)

Documentation ​

  • specs — add the three approved contracts for the next wave
  • spec — add Spec 182, the guard resolves paths physically (Spec 182)
  • spec — 177 review-evidence payload, field note on worker_done for 176
  • wave — settle whether a slice can run on Codex, by measuring it (Spec 175)
  • de — bring the 0.16.0 entry to the full committed range
  • de — translate the 0.16.0 entry
  • context — record why a third routing target has to wait (Spec 042)
  • spec — move 172 into review
  • reference — record the scan results of this run
  • wave — skip a slice whose spec names the main branch
  • spec — add Spec 172, Steps declare their acceptance criteria (Spec 172)
  • spec — two contracts for the flat layout and the stack-lens bridge
  • spec — point Spec 168 at the code that carries its claim (Spec 168)
  • de — translate the documentation and empty the locale backlog (Spec 157, 158)
  • wave — ban git stash in a slice, and record why

Tests ​

  • spec-path — recognise spec_layout_path as a fourth sanctioned site (Spec 169)
  • agents — check agent frontmatter against the documented key set (Spec 167)

CI ​

  • repo — make the test run manually dispatchable
  • repo — install shfmt, the gate added this morning needs it
  • repo — shard the release test job the way ci.yml already does

Build ​

  • tests — keep the tree formatted, not only on edit

Reverts ​

  • routing — take the review-light tier back out

v0.15.0 — 2026-08-03 ​

44 Commits seit v0.14.0 · Specs 143, 144, 145, 147, 148, 151, 152, 157

Was sich für dich ändert ​

Neu nutzbar

  • Die Dokumentation ist jetzt zweisprachig: eine englische und eine deutsche Ausgabe, jede mit eigener Navigation. Der Paarungscheck weist eine englische Seite ohne deutsches Gegenstück zurück, außer sie steht im bewussten Übersetzungs-Backlog.
  • /devkit-harvest holt einen gewählten Referenz-Kandidaten in den Kanon, oder schließt eine Ledger-Zeile, die schon gelandet ist, ohne Eintrag.
  • bash tests/all.sh --shard i/n verteilt die Suiten auf mehrere Läufe, und CI fährt vier Runner statt einem. Der volle lokale Lauf fiel von 1063 s auf 387 s.
  • DEVKIT_PROJECT_VIEW=human|markers wählt ausdrücklich zwischen der Phasenansicht und der Marker-Ausgabe von project-migrate; --verbose bringt die Marker im Terminal zurück.
  • Der Wave-Kostenbericht summiert jetzt die Slice-Sessions zusammen mit dem Koordinator. Jeder Slice läuft als eigene Session in einem eigenen Worktree, deshalb meldete das alleinige Zitieren des Koordinators nur einen Bruchteil, als wäre er der ganze Lauf — gemessen 381.687 Token für den Koordinator gegen 524.272 für acht Slices.

Verhalten geändert

  • npm install führt Postinstall-Scripts erst aus, wenn du sie ausdrücklich erlaubst. Gemessen am 2026-08-03: ein einfacher globaler Install schrieb sich selbst in ~/.zshrc, den persönlichen Claude-Einstellungen und zwei MCP-Konfigurationen, ohne zu fragen. allow_scripts wird jetzt pro Werkzeug konfiguriert und ist standardmäßig aus.
  • Code-Review verlangt die Stack-Lens als Pflicht-Evidenz. Ohne sie antwortet der Reviewer REVIEW_EVIDENCE_REQUIRED, statt Laravel-, Nuxt- oder Liquid-Code wie generisches Bash zu lesen.
  • /spec einigt sich mit dir auf das Ziel, bevor irgendetwas gebaut wird. Jede Übergabe beginnt mit zwei bis vier einfachen Sätzen, und die Freigabe deckt diesen Satz genauso ab wie die Bytes. Die Direktroute hatte bisher gar kein Gate und bekommt jetzt eines.
  • Die Wave-Abnahme lässt die Tests des Slice laufen. Zwei Slices meldeten sich selbst als fertig, während ihre eigene Suite rot war. Kill-Switch: OD_SKIP_WAVE_ACCEPT_TESTS=1.
  • Ein Spec-Vertrag, dessen Korrektheit von der Mechanik drumherum abhängt, braucht jetzt vor der Freigabe eine Cross-Model-Prüfung. Zwei familieninterne Reviewer-Runden gaben Spec 162 frei; Codex fand danach drei Blocker im selben Entwurf, einer davon hätte den Vertrags-Digest geändert und den eigenen Lauf blockiert.
  • Der Remote-Exec-Guard fängt jetzt auch Wrapper-Präfixe: sudo -u deploy ssh prod uptime kam bisher durch, sieben bisher erlaubte Befehle blockieren jetzt.
  • Gedeckelte Ausgabe der Prep-Scripts meldet die echte Gesamtzahl. 20 Treffer zu sehen bedeutete bisher 20 — auch wenn 200 gefunden wurden.
  • Der Spec-Ort wird pro Repo erkannt statt global umgeschaltet, sodass specs/ und devkit/specs/ nebeneinander existieren können. Beide gleichzeitig scheitert jetzt laut, statt dass eine Seite still gewinnt.
  • Der Reference-Scan holt nur noch den geänderten Teil einer beobachteten Quelle statt das ganze Paket, und das Ledger belegt, dass die Referenz existiert, statt nur ihre Form zu prüfen.
  • /retro misst die Session, die gemeint war, statt der zuletzt geschriebenen — bei parallelen Sessions war das bisher die falsche. Ein Wave-Slice, der in der Hauptsession geschrieben hat, ohne es im eigenen Progress-Log zu vermerken, wird jetzt als ROUTE_UNRECORDED gemeldet — über zwei Wellen gemessen übersprangen fünf von acht Slices das ihnen zustehende Review und sahen trotzdem grün aus.
  • Jenseits des 1,25-fachen Budgets nennt die Längen-Erinnerung eine Form statt ein Adjektiv: höchstens sechs sichtbare Zeilen, kein Schlussabsatz.
  • /index und devkit sync sind spürbar schneller: index-prep.sh --dry-run fiel von 4,7 s auf 1,2 s, und ein unveränderter Baum erneut anzuwenden von 8,6 s auf 2,4 s.

Handlung nötig

  • Der Doku-Paarungscheck weist jetzt einseitige englische oder deutsche Seitenänderungen zurück, außer die Seite steht im bewussten Übersetzungs-Backlog.
  • Ein Spec-Schritt, dessen Verify die ganze Suite laufen lässt, zieht jetzt eine verify_runs_full_suite-Warnung. Sie bleibt eine Warnung, weil ein bewusstes Abschluss-Gate legitim ist, aber Spec 151 bezahlte für ein versehentliches gleich viermal: 118.754 Token gegen 34.886 für den günstigsten Slice derselben Welle.
  • CLI-Werkzeuge führen Postinstall-Scripts jetzt nur mit einem ausdrücklichen allow_scripts-Opt-in aus. Ohne ihn installieren sie ohne Lifecycle-Scripts.

Features ​

  • docs — richte die Dokumentation zweisprachig ein und sichere die Paarung (Spec 157)
  • reference-scan — belege die Referenz statt nur ihre Form zu prüfen (Spec 145)
  • review — mache die Stack-Lens zur Pflicht-Evidenz statt zur Option
  • tools — führe npm-Postinstall-Scripts erst nach ausdrücklicher Freigabe aus
  • policy-guard — stoppe Remote-Exec auch hinter Wrapper-Präfixen (Spec 144)
  • spec-layout — erkenne den Spec-Ort pro Repo statt global umzuschalten (Spec 147)
  • spec — lass Agent und Mensch sich auf das Ziel einigen, bevor irgendetwas gebaut wird
  • reference-scan — hole nur den geänderten Teil statt das ganze Paket (Spec 143)
  • project-migrate — gib dem Terminal-Lauf eine Phasenansicht statt einer Marker-Wand
  • project-migrate — mach den Status auf einen Blick lesbar und stelle die Ausgabe auf Englisch um
  • reference-scan — gib der Discovery einen zweiten, verifizierten Arm
  • style — eskaliere von einer Bitte zu einer Formgrenze, wenn die Messung es rechtfertigt
  • retro — miss auch die Slice-Sessions einer Welle
  • retro — nenne den Slice, der ohne Vermerk inline geschrieben hat

Fixes ​

  • prep — melde die echte Gesamtzahl, wenn die Ausgabe gedeckelt ist (Spec 152)
  • tests — lass Spec-Routing das Regelpaar lesen und trenne rot von nicht messbar (Spec 148)
  • wave — reiche Effort und Worktree beim Start eines Workers weiter
  • wave — lass die Abnahme die Tests des Slice laufen
  • wave — mache die Wave-Mandate prüfbar und lies Dateilisten vollständig
  • project-migrate — mache den Lauf konvergent und räume Context7-Einträge einzeln auf
  • retro — miss den Lauf, der gemeint ist, nicht den zuletzt getippten
  • spec — mache den Full-Suite-Verify prüfbar und heile die dritte 148-Suite

Performance ​

  • tests — starte die längsten Suiten zuerst und teile den Lauf in Shards
  • index — hashe Dateilisten in einem Prozess statt fünf je Datei
  • sync — materialisiere unveränderte Links statt sie neu zu erzeugen

Refactor ​

  • rules — kürze agents.md auf ihren Kern und verschiebe das Detail hinaus (Spec 148)

Docs ​

  • devkit-docs — schreibe den Changelog verbindlich auf Englisch
  • devkit-docs — streiche die Wortlaut-Ausnahme aus dem Changelog
  • triage — verlange die Cross-Model-Prüfung für mechanikabhängige Verträge
  • — bring README und den Regel-Index auf den aktuellen Stand
  • spec — fünf neue Verträge und die Script-Vertragsregel
  • dev — beschreibe die Orca-Entwicklungsumgebung
  • reference — halte die Scan-Ergebnisse des Laufs fest
  • wave — nenne die Vertragslücke in der Abnahme und den verworfenen Fix (Spec 147, 148)
  • spec — Review-Aufmerksamkeit als Rangfolge aus der Git-Historie
  • spec — vier neue Verträge aus dem Referenz-Scan
  • lang — stelle den Kanon auf Englisch um und mache es messbar
  • spec — drei freigegebene Verträge aus dem Referenz-Scan
  • reference — scanne acht geänderte Referenzen und nimm zwei neue auf
  • spec — verbiete den Verify, der seine eigene Suite nach einem Label durchsucht
  • rules — mache rtk verbindlich und nenne die Falle beim Eingrenzen
  • context — stelle den Entscheidungsvermerk zu Spec 162 auf Englisch um

Tests ​

  • cli — prüfe fremde CLI-Aufrufe im Roundtrip statt nur ihre Existenz (Spec 151)

Ohne Commit-Typ ​

  • Neues Spec 168: Diff-Modus-Lesebudget für /review

v0.14.0 — 2026-08-02 ​

62 Commits seit v0.13.0 · Specs 009, 028, 091, 098, 111, 133, 138, 139, 141

v0.13.1 wurde nie getaggt und nie veröffentlicht. Sein einziger Commit steht deshalb unten unter Fixes, statt eine Version zu behaupten, die niemand installieren kann. v0.13.0 trägt weiterhin kein Artefakt — der Release-Lauf brach damals im Test-Job ab, der Tag bleibt stehen, und sein Inhalt ist vollständig hier enthalten.

Was sich für dich ändert ​

Neu nutzbar

  • devkit off schaltet das Setup ab, ohne es zu deinstallieren, devkit on wieder ein. Für den Fall, dass du eine Session ohne Hooks, Rules und Skills brauchst.
  • /find-skills sucht einen fertigen Skill im öffentlichen Marketplace und installiert ihn nach einem Trust-Check — bevor du selbst einen schreibst.
  • /retro misst nach einem abgeschlossenen Vorhaben, was der Lauf gekostet hat und ob die Route dafür angemessen war.
  • ! devkit run project-overview.sh zeigt dir in einem fremden Repo die Stellen mit der höchsten Änderungsrate, die Größenverteilung und die Einstiegspunkte. Schreibt nichts, kostet keine Token.
  • /index meldet dir jetzt Kontextdateien, die zwar existieren, aber nur die Fehlermeldung eines gescheiterten Generierungslaufs enthalten — solche Dateien wurden bisher bei jedem Session-Start stillschweigend mitgeladen.

Verhalten geändert

  • Die Nutzungstelemetrie sammelt ab jetzt wirklich. Sie war seit ihrer Einführung defekt und hat nie ein einziges Aggregat abgeliefert. Pro abgeschlossener Session geht ein rund 1 KB großes, anonymisiertes Aggregat an unseren eigenen Endpoint: welche Skills liefen, welche fehlschlugen, welcher Stack, welche Token. Keine Prompt-Texte, keine Dateiinhalte, keine Pfade. Der Hook kostet dich keine Token und rund 0,6 s beim Session-Start. Wenn du das nicht willst: OD_TELEMETRY=0 in die Umgebung, dann passiert gar nichts. Details in docs/TELEMETRY.md.
  • /commit fragt nach der Entscheidung, wenn dein Commit eine neue Abhängigkeit, eine Migration oder ein neues Modul enthält — die Antwort landet in DECISIONS.md. Wer sie schon aufgeschrieben hat, wird nicht gefragt.
  • /skill-create fragt vor dem Schreiben, ob ein Skill überhaupt die richtige Form ist, und schickt dich bei einer Prüfung zum Hook und bei einer Rechnung zum Script.
  • Die Länge der Antworten wird gemessen statt nur erbeten; bei Überschreitung siehst du die gemessene Zahl im Turn.
  • Der Branch-Guard sagt dir jetzt zuerst, was stattdessen zu tun ist, und erst danach, wie du ihn abschaltest.
  • Ein git-Worktree isoliert keine parallelen Schreiber. Die Regel, die das behauptet hat, ist zurückgenommen: Ref-Namespace und Objektspeicher werden geteilt, und ein Arm kann die fertige Arbeit eines anderen übernehmen. Parallele Writer bleiben sequenziell, bis eine echte Isolation belegt ist.

Handlung nötig

  • Spec-Entwürfe liegen jetzt unter specs/_candidates/ statt in .git/. Wer den alten Pfad in eigenen Skripten verdrahtet hat, muss ihn nachziehen.
  • In Projekten ohne .agents/context/index-manifest.json einmal /index laufen lassen. Ohne das Manifest kennt weder der Brownfield-Preflight noch die Telemetrie den Stack des Projekts — aktuell betrifft das die Mehrheit der gemessenen Sessions.

Features ​

  • telemetry — zaehle die Subagent-Kosten mit
  • wave — own the teardown the skill's own workers need
  • skill-create — frage vor dem Schreiben, ob ein Skill die richtige Form ist
  • usage-report — stelle das Session-Profil je Skill gegen eine Basislinie
  • usage-report — halte Nicht-Git-Verzeichnisse aus der Migrations-Liste
  • usage-report — trenne indizierte Projekte vom Rollout-Rest
  • reference-scan — finde neue Referenzen statt nur bekannte zu prüfen
  • telemetry — mach die Batch-Groesse pro Session-Start konfigurierbar
  • docs — update CLI references and add new sections in documentation
  • telemetry — liefere Session-Aggregate wirklich aus (Spec 028)
  • skills — nimm find-skills als eigenen Marketplace-Discovery-Skill auf (Spec 009)
  • cli — schliesse die Umbenennung auf devkit ueber die npm-Bin-Map ab
  • index — entferne den ai-setup-Altblock und ziehe ihn in project-migrate (Spec 138, 139)
  • style — miss die Antwortlaenge, statt sie nur zu erbitten
  • spec — raeume Kandidaten-Laufverzeichnisse selbst auf (Spec 098)
  • commit — frage nach der Entscheidung, statt auf sie zu hoffen
  • scripts — zeige auf Abruf, wo ein Repository weh tut
  • index — melde Kontextdateien ohne Projektwissen
  • tests — refuse rm targets at, above or inside the checkout
  • spec — move the candidate into a visible folder and make the authoring review a choice (Spec 098)
  • wave — measure preflight against the real base ref and require a context index (Spec 133)
  • retro — measure what a finished run cost and whether its route was earned
  • cli — add devkit off/on to disable the setup without uninstalling it (Spec 111)

Fixes ​

  • test — leite den memsearch-Pin aus tools.json ab statt ihn zu wiederholen
  • usage-report — miss das Review-Gate am Subagenten, nicht am Skill
  • rules — nimm zurück, dass ein git-Worktree parallele Writer isoliert
  • wave — close three traps a live wave run hit
  • telemetry — halte Session-Built-ins aus der Roadmap heraus (Spec 028)
  • telemetry — lies den Stack aus dem Manifest statt aus totem Markdown (Spec 028)
  • telemetry — finde auch Projektpfade mit Punkt im Namen
  • hooks — nenne im Branch-Guard das richtige Verhalten vor dem Kill-Switch
  • switches — trage den Decision-Signal-Schalter ins Manifest nach
  • telemetry — give every usage payload its own temp file
  • test — make the audit budget assertion order-independent

Refactorings ​

  • retro — zieh den ausgelieferten Retro auf den Maintainer-Stand nach
  • naming — rename internal od_ symbols to devkit_ with an OD_ fallback
  • context-bundles — switch the seeded templates to English

Dokumentation ​

  • devkit-docs — Leser-Sektion zuerst, ein Bullet je Commit darunter
  • changelog — schreibe den Eintrag fuer die Leser, nicht fuer die Commits
  • reference — trage die gelandeten Kandidaten nach und lege 143 + 145 ab
  • changelog — schreibe die 46 Commits seit v0.14.0 fort
  • devkit-usage — halte die widerlegte spec-update-Kosten these fest
  • spec — halte den Vertrag für das Remote-Exec-Gate fest
  • codex — halte die bekannten Fehlmuster dieser Runtime fest
  • delegate — halte fest, dass Modell-Einigkeit keine Vollmacht ist
  • rules — verlange, dass ein Regressionstest einmal rot war
  • devkit-usage — verweise beim roten Skill auf memsearch
  • reference — schließe zwei gelandete Kandidaten und korrigiere vier IDs (Spec 028)
  • reference — halte den Referenz-Scan vom 2026-08-02 fest
  • devkit-usage — halte den verifizierten Blob-Zugang fest
  • skills — require a mechanism and a reuse scan in ICA phase 2
  • reference — enumerate the public OD_ names for spec 141 (Spec 141)
  • context — record the plugin-namespace measurement and the marker decision
  • skills — mark shipped skills with a [devkit] prefix
  • specs — halte die Abloesung vom npx-Bootstrapper als Vertrag fest
  • site — document devkit off/on on the docs site (Spec 111)
  • decisions — record why approval_valid is not proof a contract is implementable (Spec 098)
  • spec — add the approved contracts for 098 and 133
  • skills — tighten authoring guidance and record the day's decisions

Tests ​

  • hook — decke bin-reconcile ab und mache den einzigen roten Test gruen (Spec 091)

Chores ​

  • deps — sync the lockfile root version with package.json

Ohne Commit-Typ ​

  • update

v0.13.0 — 2026-07-31 ​

19 Commits seit v0.12.0 · Specs 019, 074, 094, 095, 096

Features ​

  • /index nimmt die Kontextdateien in den memsearch-Index auf.

    Bisher stand .agents/context/ in keinem Index — weder Gotchas noch Decisions noch Conventions waren auffindbar, sie luden nur über den Always-on-Import. Damit hing das Wissen an genau einem Zugriffsweg. Der Schritt erkennt memsearch selbst, scheitert leise bei Fehlern oder fehlendem Werkzeug, ist über --memsearch/--no-memsearch steuerbar und vermerkt den Zeitstempel ausschließlich im gitignorierten Graph-Manifest; das geteilte index-manifest.json bleibt unberührt.

  • /devkit-retro misst aus dem Session-Transkript, was ein Lauf gekostet hat.

    Jeder gestartete Agent hinterlegt seinen Verbrauch im Transkript, die Kosten sind also eine Tatsache auf der Platte. Eine am Ende einer langen Sitzung erinnerte Zahl ist dagegen die einzige, die niemand nachprüfen kann — und genau die wird zitiert. Der Skill liest die Zahlen und prüft anschließend die gewählte Route gegen triage.md. Anlass war ein Spec, das die compact-Route nahm, obwohl keiner der vier Trigger hielt: rund 1,01 Mio Token für 102 geänderte Zeilen.

Fixes ​

  • Der Audit-Batch wird nach Nutzlast begrenzt, nicht nach Dateizahl.

    AUDIT_MAX_FILES begrenzte, wie viele Dateien ein Batch trägt — die Kosten hängen aber an den Bytes, und die Dateigrößen streuen um Faktor 44 um den Median. Ein angeblich gedeckelter 40-Datei-Batch maß 448.630 Token und damit das Zweikommazweifache eines 200k-Fensters; /review --audit ohne Pfad konnte keinen einzigen Batch zu Ende bringen. Der Deckel sah aus wie eine Grenze, ohne eine zu sein. Mit dem zusätzlichen Token-Budget sind es im selben Umfang 127.009 Token.

  • Im Rerun wird das kleinere von Delta und Paket übergeben, nicht immer das Delta.

    Über 19 echte Rerun-Pakete gemessen war das Delta in zwei Fällen größer als das Paket, das es ersetzt: diff -u trägt beide Seiten samt Kontext, ein Sprung im Umfang kippt die Ersparnis. Die naheliegende Regel wäre also genau in den Runden falsch gewesen, in denen am meisten passiert ist.

  • dev-sync stellt eine Quelle wieder her, die ein abgebrochener Lauf verbogen hat.

    Ein harter Abbruch — SIGKILL, geschlossenes Terminal, Zeitüberschreitung — überspringt den EXIT-Trap, und die Quelle zeigt weiter auf das Export-Verzeichnis jenes Laufs. Der nächste Lauf starb dann am Wächter mit einer Handlungsanweisung, weil der diesen Zustand nicht von einer echten Fehlkonfiguration unterscheiden kann. Das zurückgebliebene Backup ist genau das fehlende Signal; der Wächter bleibt als Rückfallebene bestehen.

  • Ein am Budget abgebrochener Replay zählt nicht mehr als Ergebnis.

    Der Lauf meldete is_error: false, terminal_reason: completed und subtype: success, während das Spec pausiert mit rotem Verify dastand. Kein dokumentiertes Feld unterscheidet den Abbruch von einem fertigen Lauf; einzig die Kosten gegen den Deckel verraten ihn. Zweiter Fallstrick derselben Messung: .usage beschreibt nur den letzten Turn (478 Output-Token) gegenüber .modelUsage für den ganzen Lauf (37.466) — wer daraus Ersparnisse rechnet, misst um Größenordnungen zu niedrig.

  • OD_SKIP_STYLE_REMINDER ist in switches.json registriert.

    Der Hook wurde ausgeliefert, ohne seinen Schalter einzutragen, wodurch tests/switches.sh auf main für jede unbeteiligte Änderung rot lief.

  • Der Upload-Schritt des Releases nannte in seiner Ausgabe noch das abgelegte Kommando — ausgerechnet in der Zeile, die auf einem neuen Rechner kopiert wird, um die Bezugsquelle zu setzen. Der Namens-Wächter durchsucht die ausgelieferten Flächen und die Tests, release/ liegt außerhalb davon, deshalb hat ihn nichts gefangen.

Refactorings ​

  • Re-Reviews laufen über ein berechnetes Delta statt über eine Bitte.

    Eine zeilenbegrenzte Nachfrage begrenzte bisher nur die Frage, nicht den Ladepfad: der Reviewer-Vertrag verlangte weiterhin, alle geänderten Dateien vollständig zu lesen, sodass eine Zwei-Zeilen-Änderung 164.000 Token für vier Bestätigungszeilen kostete. Review-Pakete sind inhaltsadressiert und beide bleiben erhalten, diff -u liefert also eine deterministische Menge.

  • MODE=delta gilt jetzt auch für die Spezialisten und ist per Gate festgenagelt.

    Der Delta-Vertrag existierte nur für die Korrektheit, ein Rerun der Security- oder Performance-Rolle las weiterhin alles. Die Architektur bleibt bewusst außen vor: ihr Wert ist der strukturelle Wirkungsradius, den ein hunk-begrenzter Blick nicht sehen kann. Über 19 Reruns gemessen fallen 739k Token auf 86k.

  • Die Lauf-Nachbetrachtung liegt auf der Maintainer-Ebene.

    Das Präfix devkit- ist für Maintainer-Skills reserviert, die nie ausgeliefert werden. Der umbenannte Skill verließ deshalb den ausgelieferten Payload; sein Check bleibt für Maintainer verfügbar.

Dokumentation ​

  • Der Changelog liest Commit-Bodies für Breaking Changes und Begründungen.

    release-prep.sh commits/breaking-check speisen /devkit-docs künftig aus den Bodies statt nur aus den Subjects; daraus entstehen eine Breaking-Changes-Sektion und eine Auffangsektion für Commits ohne Conventional-Prefix. /devkit-release prüft die neue Sektion vor dem Tag.

  • Spec 094 ist abgeschlossen, samt Gotcha zur Materialisierung.

    Der Eintrag bewahrt die nächste Sitzung davor, den Kanon zu verdächtigen, wenn ein leeres ~/.claude/rules in Wahrheit eine veraltete lokale Entwicklungs-Materialisierung ist, die ein neuer Build repariert.

  • Delta-Guard festgehalten, Dispatch-Schwelle verworfen.

    71% der Specs erzeugten null blockierende Befunde — das misst aber P(Blocker), nicht P(Blocker | Klassifikator sagt überspringen). Spec 074 entscheidet die Frage: alle Verifies und das Budget grün, und der Reviewer fand trotzdem eine echte semantische Abschwächung.

  • Der Shadow-Backtest ist als statistisch unentscheidbar verworfen.

    Von 27 blockierenden Befunden sind nur 15 fein genug beschrieben, um klassifiziert zu werden. Selbst bei perfekter Auswertung und null beobachteten Lecks liegt die obere Schranke bei 18%, bei realistischer Kohorte zwischen 31 und 45% — ein Review-Gate zu entfernen verlangt 1 bis 5%.

  • Nachgetragen wurden sechs Commits einer Parallelsession, die ohne Typ-Präfix landeten und deshalb still verworfen wurden.

    Drei davon trugen Änderungen, die ein Leser braucht: den spec-contract-reviewer, die ausdrückliche Branch-Behandlung in /spec-work und den brauchbaren Hinweis, den project-migrate jetzt ohne Git-Repository gibt.

Tests ​

  • Die Backfill-Harness kann ein abgeschlossenes Spec erneut fahren und benoten.

    Der Completion-Commit trägt den Implementierungs-Diff, die Outcome-Zeile den Weg dorthin; ein Replay ab dessen Elternteil reproduziert die Startbedingungen. Alles außer dem Replay selbst ist deterministisch und kostenlos.

  • bin-reconcile ist abgedeckt: die Suite kannte es mit null Treffern, obwohl fünf ACs über genau sie verifizierten. 16 Assertionen decken jetzt Kill-Switch, Fail-open, Idempotenz, Nebenläufigkeit und die stderr-Trennung ab.

Ohne Commit-Typ ​

  • Add spec-layout path resolver (spec-path.sh + prep-lib.sh) and migrate a

  • Add UserPromptSubmit style-reminder hook and document the devkit rename

  • update

v0.12.0 — 2026-07-30 ​

Features ​

  • Das Kommando heißt jetzt devkit. Der alte Name od ist derselbe wie das POSIX-Werkzeug od(1), und weil unser PATH-Eintrag zuerst auflöste, lieferte ein od -An -N6 < /dev/urandom still unseren Hilfetext statt Zufallsbytes — ohne Fehler, mit Exit 0, sodass der Wert unbemerkt weiterlief; PhpStorms Terminal meldete bei jedem Kommando einen Fehler. Ein Alias hätte genau die Überschattung behalten, um die es geht, also verschwindet od ganz. Der alte PATH-Link wird beim nächsten Sitzungsstart selbst zurückgezogen, und zwar nur, wenn er nachweislich in unser eigenes Home zeigt: ein selbst gelegtes ~/.local/bin/od → /usr/bin/od bleibt unangetastet. Umgebungsvariablen, das Home-Verzeichnis, die internen Präfixe und die Namen der Release-Artefakte bleiben, wie sie waren — umbenannt wird das Kommando, sonst nichts.

  • /research kann eine zweite, unabhängige Belegquelle heranziehen: datierte Beiträge von Reddit, Hacker News und GitHub samt Engagement-Zahlen, wenn die Frage nach Verbreitung, Stimmung oder Aktualität fragt. Bisher stand dort nur die Websuche, und die beantwortet nicht, ob ein Werkzeug tatsächlich benutzt wird. Die Anbindung ist optional und scheitert leise: fehlt die Engine, ist die Ausgabe leer und der Lauf geht weiter, statt die Recherche zu blockieren.

  • Die Effort-Stufen der Skills stehen nicht mehr nur als Erwartung im Regeltext, sondern werden geprüft. Ein Regelsatz, der beschreibt, welche Stufe wohin gehört, ändert nichts an einer Frontmatter, die etwas anderes sagt.

  • Der Drift-Check sieht jetzt auch CLAUDE.md. Sie war die einzige Datei des Kontext-Bündels, deren tote Verweise niemand bemerkt hätte.

  • Neue Rechner beziehen die Verteilung über eine benannte URL statt über eine undurchsichtige Blob-Adresse, und die CI-/Release-Verzahnung ist entsprechend vereinfacht.

  • Ein eigener Reviewer prüft Spec-Entwürfe. Bisher hat dieselbe Rolle den Vertrag und die fertige Umsetzung begutachtet, obwohl das zwei verschiedene Fragen sind: ob ein Vertrag trägt, entscheidet sich an anderen Kriterien als ob ein Diff ihn erfüllt. Die Prüfung des Entwurfs ist deshalb von der Prüfung der Implementierung getrennt.

  • /spec-work leitet die Branch-Behandlung jetzt ausdrücklich aus dem Vertrag ab, statt sie zu erraten. Ist im Kopf ein Branch benannt, den es nicht gibt, wird im geteilten Checkout nichts umgeschaltet — dort arbeiten parallele Sitzungen und delegierte Worktrees; materialisiert wird nur über die dafür vorgesehene Route.

  • project-migrate sagt bei fehlendem Git-Repository, was zu tun ist, statt nur abzubrechen: es arbeitet pro Repository und braucht Git als Rückweg, weil es Dateien löscht — der Hinweis nennt den Befehl, mit dem man das richtige Verzeichnis unterhalb eines Sammelordners findet.

  • Ändert eine Arbeit das Ausgabeformat, den Exit-Code oder den Dateiort eines Scripts, ist das jetzt ein benannter Auslöser für den einen vollen lokalen Suitenlauf. Bisher galt dafür die kleinste betroffene Suite, und die kann die Leser eines Scripts nicht sehen: nirgends steht, wer seine Ausgabe parst oder auf seinen Exit-Code verzweigt. Alle fünf Stellen, die die Ausnahmeliste tragen, sagen es jetzt gleichlautend, und eine Fixture hält sie zusammen, damit die Liste nicht wieder auseinanderläuft. Die always-on geladene Fassung in git.md nennt den Auslöser ohne den Begründungssatz, weil die Always-on-Summe auf ihrem Limit sitzt — die Begründung steht kanonisch in testing.md.

  • Orca-Routing an drei Stellen ergänzt: /review öffnet die geänderten Dateien als Diff im Editor des Menschen, wenn Orca der Host ist, statt den Befund nur als Terminaltext zu hinterlassen; die Routing-Hinweise zeigen jetzt auf Orcas eigene orca-cli- und orchestration-Skills; und die handgepflegte Kommando-Tabelle in agent-browser ist einem Verweis auf Orcas mitgelieferte, versionsgleiche Quelle gewichen. Die Kopie war schon gedriftet — Orca dokumentiert den Element-Ref inzwischen ohne @ und routet nebenläufige Abläufe über eine Page-ID statt über den aktiven Worktree, die Tabelle behauptete beides anders. Eine Tabelle, die wir von Hand pflegen, bleibt über Orca-Releases nicht wahr; die Quelle bleibt es.

  • Ein neues Kommando /wave arbeitet mehrere freigegebene Specs parallel in getrennten Orca-Worktrees ab. Den Wellenplan rechnet weiter der vorhandene deterministische Plan-Modus; neu sind die Prüfungen drumherum, weil genau dort die Handarbeit gescheitert ist. Ein Preflight fängt drei Fälle, bevor ein Worker startet: einen Worktree, den Orca vom veralteten Fernstand angelegt hat, einen unsauberen Baum und fehlende Node-Abhängigkeiten. Eine Abnahme prüft danach, ob die geänderten Dateien wirklich alle im Vertrag stehen, ob der Status auf abgeschlossen steht und ob die Abschlusszeile vorhanden ist. Die Worker laufen im dafür vorgesehenen Modell-Tier statt auf dem Default der Sitzung. Zusammenführen und Aufräumen bleiben ausdrücklich beim Menschen und beim koordinierenden Agenten.

  • Ein Agent erkennt jetzt deterministisch, welche geänderten Dateien aus seiner eigenen Sitzung stammen. Bisher stand dazu nur ein Appell in den Regeln, und ein Modell, das seinen eigenen Verlauf falsch erinnert, merkt den Fehler nicht. Ein Hook notiert jeden bearbeiteten Pfad unter der Sitzungs-ID, und die Review-Vorbereitung teilt dreiwertig ein: eigen, fremd, unbekannt. Bewusst dreiwertig — alles, worüber der Speicher nichts weiß, bleibt vollständig im Review, damit ein unvollständiger Mechanismus eigene Arbeit höchstens als unbekannt ausweist, aber niemals Arbeit verschwinden lässt. Der Regeltext zeigt seither auf dieses Signal und wurde dabei kleiner.

  • Zwei gleichzeitige Spec-Läufe bekommen nicht mehr dieselbe Nummer. Die Nummernvergabe belegt ihre Zahl jetzt, bevor sie sie ausgibt, und zwar unter dem geteilten Git-Verzeichnis — dort, wo auch verknüpfte Worktrees gemeinsam hinschauen, denn genau von dort kam die beobachtete Doppelvergabe. Belegte Nummern zählen bei der Berechnung mit, ein zweiter Lauf nimmt also die nächste. Fehlt die Schreibmöglichkeit, fällt die Vergabe auf die alte Rechnung zurück und sagt das; die Kollisionsprüfung beim Anlegen bleibt in jedem Fall die letzte Grenze.

  • Das Spec-Verzeichnis steht nicht mehr als Textliteral in der ausgelieferten Toolchain, sondern als benannte Konstante mit unverändertem Vorgabewert. Vorher stand es an 33 Stellen in 14 Dateien und in fünf verschiedenen Schreibweisen — eine übersehene Stelle in der Nummernvergabe hätte genügt, damit eine leere Trefferliste als „es gibt noch keine Specs" gelesen wird und bereits vergebene Nummern erneut herauskommen.

Fixes ​

  • Die Nutzungstelemetrie lud bei jedem Start die gerade begonnene Session mit hoch und merkte sie danach als erledigt vor — die vollständige Session ging damit nie hoch. Ursache war ein Variablenname: der Hook fragte CLAUDE_SESSION_ID ab, gesetzt ist aber CLAUDE_CODE_SESSION_ID, also war der Vergleichswert immer leer und die Ausnahme für die laufende Session lief nie an. Der alte Name bleibt als Rückfallebene stehen.
  • Fehlte ein Werkzeug, meldeten die beiden lokalen Gates das Ergebnis als sauber, obwohl der zugehörige Check gar nicht gelaufen war. Der Quality-Gate übersprang die Shellcheck-Prüfung still und druckte trotzdem den grünen Token; der Commit-Gate ließ den Secret-Scan aus, ohne es im Kontextblock zu erwähnen. Die Nachsicht war bewusst gewählt, ihre Unsichtbarkeit nicht: beide weisen den Teilzustand jetzt aus, der Quality-Gate allerdings nur dann, wenn tatsächlich Dateien zu prüfen gewesen wären. Die Exit-Codes bleiben unverändert, kein Leser ändert sein Verhalten.
  • Die Umbenennung hat auf ihrem Weg drei Stellen erwischt, die Vergangenes festhalten, und dort Unwahrheiten erzeugt: ein Gotcha behauptete, unser devkit überschatte ein gleichnamiges BSD-Werkzeug, und sechs Changelog-Zeilen in bereits veröffentlichten Versionen sprachen von einem Kommando, das es damals noch nicht gab. Beides ist zurückgenommen. An die Stelle des Gotchas tritt der Zustand, der jetzt wirklich beißt: es gibt ein Fenster, in dem unter keinem Namen eine CLI im PATH liegt, und der Rückweg ist der absolute Pfad — ausdrücklich nicht der Installations-Einzeiler, denn das Release-Archiv enthält gar kein Installationsscript.
  • Das Maintainer-Werkzeug dev-sync verlangte das umbenannte Kommando im PATH, obwohl genau dieser Verweis erst vom Sync angelegt wird. Es scheiterte damit zuverlässig auf jeder Maschine, die es gebraucht hätte; es ruft die CLI jetzt über ihren Pfad im Checkout auf.
  • Die Spec-Route entscheidet wieder über eine Größengrenze oberhalb der Risiko-Auslöser, und die kanonische Routing-Tabelle deckt sich wieder mit der risikobasierten Regel. Dazu behauptet der Hintergrund-Abruf nur noch dort Ausschließlichkeit, wo sie gilt.

Doku ​

  • Das mitgelieferte specs/README.md nennt jetzt seinen Eigentümer und sagt, dass Aufbau und Lebenszyklus des Verzeichnisses den Skills gehören — eine fremde Datei darin wird von nichts gelesen, ein handgesetzter Status ist keine Zustandsänderung. Damit ist der eigentliche Zweck eines Vorhabens erreicht, das den ganzen Ordner in einen sichtbaren Namensraum umziehen wollte: ein Entwickler im Kundenrepo sieht, wem das Verzeichnis gehört. Der Umzug selbst ist nach vier Review-Runden und einer Zweitmeinung gestoppt, weil die automatische Migration bestehender Projekte an fehlender Provenienz scheitert — eigene Artefakte wie JSON-Auswertungen unter plans/data/ folgen der Spec-Namensgrammatik nicht, und ein Migrator, der sie mitnimmt, kann unsere Dateien nicht mehr sicher von denen des Kunden unterscheiden.
  • Ob eine Arbeit ein Spec verdient oder inline gehört, entscheidet jetzt das Risiko und nicht die Zahl der Dateien. Eine Zählregel spricht kleinen, aber irreversiblen Änderungen die Planung ab und erzwingt sie bei harmlosen Sammeledits.
  • Festgehalten, dass devkit run die installierte Version ausführt und nicht den Arbeitsbaum. Bei der Abnahme eines Specs, das ein neues Script mitbringt, kamen dadurch sieben Kriterien falsch rot zurück — und eines falsch grün, weil der gesuchte Text zufällig in der Fehlermeldung der CLI stand. Das falsch grüne ist die eigentliche Gefahr, denn so ein Lauf sieht bestanden aus.
  • Der Adoptionsplan aus dem Referenz-Scan ist geschlossen: vier Verträge sind eingeflossen, sieben Schnitte bleiben bewusst geparkt und tragen ihre Begründung.

v0.11.0 — 2026-07-29 ​

Features ​

  • Ein neues Maintainer-Werkzeug misst, ob eine Regel die Antwort überhaupt verändert. Bisher wurde das Always-on-Rule-Set nach Urteil geändert, nie nach Messung — und weil die Always-on-Summe auf ihrem Limit liegt, verdrängt jede Ergänzung etwas anderes ohne Beleg. Das Werkzeug baut zwei Wegwerf-Kanons, einen vollständigen und einen ohne die zu prüfende Regel, lässt dieselbe Aufgabe mehrfach gegen beide laufen und berichtet. Es entscheidet bewusst nicht: vollständige Trennung bei drei Läufen entsteht in jedem zehnten Fall zufällig, und ob eine Regel wirksam aussieht, hängt stärker von der Aufgabe ab als von der Regel.
  • Die Probe bewertet die Form der Antwort statt ihrer Länge. Die Wortzahl war das falsche Signal — sie schwankte zwischen zwei Läufen desselben Experiments und trägt nicht, was die Regel tatsächlich verlangt: Ergebnis zuerst, keine Füllwörter, kein Schlusssatz, Bullets statt Prosa fürs Argumentieren. Diese vier sind deterministisch prüfbar und gegen Fixtures rot-fähig belegt.
  • Das Kandidaten-Ledger des Reference-Scans bekommt einen Ernte-Pfad. Es sammelte Kandidaten, aber keine Zeile wurde je geschlossen — dreizehn gewählte Einträge, keiner mit einem Verweis darauf, wo die Idee gelandet ist. Das neue Feld nimmt eine Spec-ID oder einen eigenen Commit; erst die Commit-Form macht kleine Übernahmen überhaupt abschließbar, weil eine einzeilige Regeländerung nie eine Spec bekommt.
  • Der Reference-Scan hält sein Ergebnis in einer abfragbaren Warteschlange statt in einem Freitext-Feld, das die Session nicht überlebte. Ein Pfad-Filter holt die geänderten Pfade über die Compare-API und überspringt Repos, die sich nur an README-, CI- oder Lockfile-Pfaden bewegt haben; jede nicht klassifizierbare Lage fällt bewusst auf „geändert" zurück, nie auf „übersprungen".
  • /spec-work führt denselben Verify-Befehl nur noch einmal pro unverändertem Baum aus; ein späterer Step, der ihn erneut nennt, verwendet das Ergebnis wieder. Die Invalidierung ist absichtlich total — eine Änderung am Arbeitsbaum, eine Implementer-Rückgabe oder eine Kontext-Kompaktierung verwirft alles, weil jede Teilregel veraltete Evidenz weitertragen würde. Dazu misst die strenge Authoring-Prüfung ihre Warnungen gegen den Ausgangsstand statt gegen den ganzen Kandidaten.
  • install.sh aktiviert erst nach vollständigem Staging, bindet die Manifest-Angaben an Version, Kanal und Größe, schützt ein fremdes Bin-Verzeichnis und verdrahtet den PATH mit sicherem Quoting. Das Kontext-Füllen deckt jetzt alle Stack-Profile ab statt nur Nuxt/Storyblok, STRUCTURE.md wird ungekürzt und rein verzeichnisbasiert erzeugt, und der Drift-Check filtert nach Pfadklasse, was Fehlalarme senkt.

Fixes ​

  • Der Diff-Modus von /review zeigte auf Evidenz, die dort nicht mehr liegt: die kanonische Sammlung war in eine Paketdatei gewandert, die Anweisung sprach aber weiter von der Standardausgabe. Sie nennt jetzt den Paketpfad und sagt, was ein nicht verfügbarer Diff bedeutet — ein fehlgeschlagener Git-Aufruf ist kein leerer Arbeitsbaum und muss das Review stoppen, nicht bestehen lassen.
  • Eine Test-Assertion suchte eine Codezeile im Wortlaut und fand sie nicht mehr, nachdem install.sh den Aufruf in einen Helfer verschoben hatte — obwohl die gemeinte Invariante unverändert hielt. Sie prüft jetzt die Invariante statt der Schreibweise und bleibt dabei trennscharf.

Doku ​

  • Die Vision zieht die Referenz-Linie zwischen gepinnt und besessen und floating und fremd — nicht zwischen Tool und Prosa. Fremde Prosa mit Attribution und eine versionsgepinnte fremde Fähigkeit sind beide zulässig; was draußen bleibt, ist eine fremde Verhaltensautorität, die always-on lädt und die wir weder besitzen noch auf eine Version festnageln können.
  • Unterhalb der Spec-Schwelle ist Inline-Arbeit jetzt die genannte Route. Die Hinweis-Tabelle kannte nur die Spec-Seite der Linie, und die Repo-Anweisung verlangte pauschal die volle Testsuite vor jedem Push — beides zog kleine Änderungen in Zeremonie, die sie nicht verdienen.
  • Die Strip-Liste der Antwortregeln erlaubt wieder einen Hedge, der echte Unsicherheit trägt. Sie verlangte bisher unbedingtes Streichen, was Antworten zu einer Sicherheit drängt, die sie nicht verdient haben. Gegenfinanziert im selben File, damit die Always-on-Summe stehen bleibt.
  • Drei Fallen aus den Eval-Probes festgehalten: das Abschluss-Event eines headless-Laufs meldet success auch für einen gescheiterten Lauf, eine Werkzeug-Allowlist begrenzt was ein Lauf tut und nicht wo, und unser eigenes od überschattet das gleichnamige Coreutils-Werkzeug auf dem PATH.
  • Die Freigabe-Gates in /spec und /spec-update laufen über einen einzigen Auswahl-Dialog statt über Prosa.
  • Das Stack-Coverage-Gate in /index ist dokumentiert; --no-ask überspringt jetzt beide interaktiven Fragen, nicht nur eine.
  • Eval-Kandidat aufgelöst und der verworfene Apparat als geparkt vermerkt, damit der nächste Scan ihn gegen Belege neu verhandelt statt bei null zu beginnen.
  • GitNexus-Scan aufgenommen; Specs 076, 079–083 ergänzt, Wave-Planung und Adoption-Backlog gegen den aktuellen Stand nachgezogen.
  • Veraltete Prosa zu Model-Routing und MCP-Mutation-Verify entfernt.
  • Der Schnellstart benennt die PATH-Verdrahtung, die der Install vornimmt — sonst liest sich der Schritt als fertig, während od in der laufenden Shell noch nicht aufrufbar ist.

v0.10.0 — 2026-07-27 ​

Features ​

  • Die Review-Evidenz wird schon beim Erzeuger auf die deklarierten Dateien zugeschnitten, statt einen vollständigen Diff durch den Hauptkontext zu schieben — an Spec 067 gemessen waren das 77 KB, und zwar in jeder Review-Runde erneut. Stdout trägt jetzt nur noch Kopfzeilen, Zählwerte und den Pfad zur Paketdatei. Untracked Dateien bleiben bewusst ungeschnitten, weil eine nicht deklarierte neue Datei genau das ist, was ein Reviewer sehen muss; alles außerhalb des deklarierten Scopes wird gemeldet statt verborgen.
  • /review unterscheidet einen fehlgeschlagenen Check von einem sauberen Ergebnis. Bisher verschluckte jeder Git-Aufruf seinen Fehler — ein kaputter Index, ein Timeout und ein leerer Arbeitsbaum sahen identisch aus, und der beauftragte Reviewer meldete PASS über einen Diff, den es nie gab. Exit-Codes werden jetzt geprüft, ein nicht verfügbarer Diff sagt das und bricht ab. Die Evidenz liegt in einer atomar geschriebenen Paketdatei, sodass kein vollständiger Diff mehr durch den Hauptkontext läuft; der Residual-Scan bewertet zusätzlich den Fundort — mockData in src/ ist ein Befund, dieselbe Zeile in tests/ nicht.
  • Eine beweisbar abtrennbare Erweiterung an einer laufenden Spec wird zu einem eigenen Nachfolge-Vertrag, statt den bestehenden zu ersetzen und jeden bereits grünen Schritt neu aufzurollen. Der Vorgänger bleibt byte-identisch und läuft ehrlich zu Ende, der Nachfolger trägt depends_on und wartet auf ihn. Vier Bedingungen entscheiden über die Route, nur zwei davon sind maschinell prüfbar — bei Unsicherheit fällt sie auf den vollständigen Neu-Aufriss zurück.
  • OpenCode wird als dritte Laufzeit unterstützt: dieselben Custom Agents und globalen Arbeitsanweisungen wie Claude und Codex, opt-in und standardmäßig aus. Das Routing wird aus der Claude-Route abgeleitet statt separat deklariert — ein dritter Tier-Key hätte jedes noch nicht aktualisierte od beim Sync zerlegt, weil die Validierung aus der installierten Version gegen den neuen Content läuft. Ein Guard-Test hält diese Grenze fest.
  • Nach dem Speichern einer CSS-Datei läuft stylelint — aber nur dort, wo das Projekt selbst eine Konfiguration mitbringt. Drei Bedingungen müssen halten: CSS-Datei, ausführbares Binary, auflösbare Config. Ein grüner Lauf bleibt still, eine fehlende Config ebenfalls, und alle nachfolgenden Prüfungen laufen weiter.
  • /spec zeigt vor der Freigabe eine kurze Kapsel — Ziel, was sich ändert, was außerhalb liegt — extraktiv aus dem Kandidaten mit dem angezeigten SHA gezogen, nie zusammengefasst erfunden. Bei mittlerem und hohem Risiko wird jede verworfene Alternative in einer Zeile genannt. Vorher lag der vollständige Vertrag zur Entscheidung vor, was dazu einlädt, Ungelesenes freizugeben.
  • Neue RELATED.md als Manifest für Nachbar-Repos — Boilerplate, Vertragspartner, Fork-Quelle. Sie hält Zeiger fest, nie Inhalte: Pfad, wann hinsehen, und wann ausdrücklich nicht. Sie wird wie GOTCHAS.md aus dem Default-Bundle geseedet und in CLAUDE.md importiert, steht einem frischen Projekt also ab Tag eins zur Verfügung.
  • Python ist ein vollwertiges Stack-Profil: eigene Detection, eigenes Context-Bundle, eigene Knowledge-Lens und vollständige Routing-Verdrahtung, gleichwertig zu Laravel, Nuxt, Shopify Liquid und Shopware. Ein Python-Repo landet damit nicht mehr im default-Profil.
  • Spec-IDs werden deterministisch vergeben: spec-id-next.sh ermittelt die nächste freie Integer-Major über specs/ und specs/completed/, statt sie dem Modell zu überlassen. Der pre-push-gate warnt zusätzlich, wenn zwei Specs dieselbe ID tragen — vorher fiel eine Kollision erst beim nächsten /spec-work als ambiguous_spec auf. Nebenbei entfielen vier Forks pro Datei in prep-lib.sh: ein Verzeichnis-Scan über 273 Specs dauert statt 3412 nur noch 59 Millisekunden.
  • Vier Regel-Slices aus Plan 004: eine Autorendoktrin für Prosa-Artefakte (Form nach Fehlertyp, keine offenen Weichmacher-Klauseln, description fasst den Ablauf nicht zusammen), eine Falsifizierbarkeitspflicht für neue Tests samt unabhängig hergeleiteter Erwartungswerte, Boundary-Diagnose vor der ersten Hypothese bei Mehr-Komponenten-Fehlern, und dieselbe Drei-Runden-Grenze für /spec und /spec-update, die /spec-work schon hatte. Das Skill-Inventar wird nicht mehr gegen eine hart kodierte Zahl geprüft, sondern gegen die tatsächlichen Verzeichnisse — in beide Richtungen.

Fixes ​

  • Der Installer schreibt die PATH-Zeile jetzt auch dann, wenn weder ~/.zshrc noch ~/.bashrc existiert. Auf einem frischen macOS-Account landete sie vorher nirgendwo, der Install meldete trotzdem Erfolg — und der nächste Befehl des Nutzers war od: command not found, ohne dass irgendetwas in der Ausgabe auf die Ursache zeigte.
  • Sechs Routing-Assertions lasen die Review-Evidenz weiterhin von stdout, obwohl der Erzeuger sie inzwischen in eine Paketdatei schreibt — main stand dadurch rot. Sie lesen jetzt die Paketdatei.
  • Vier Berechtigungsabfragen verketteten stat -f … || stat -c … in einer Substitution. Unter GNU ist -f aber --file-system: Der erste Aufruf schreibt den Dateisystem-Block nach stdout und scheitert erst danach am ungültigen Operanden — der Fallback hängte den echten Wert an dieses Rauschen an. Jetzt wird GNU-first geprüft, was sicher ist, weil BSD stat das -c ohne jede Ausgabe ablehnt.

Refactor ​

  • Die immer geladenen Regeln in quality.md sind sprachlich gestrafft und liegen wieder unter dem Token-Budget. Keine Regel ist entfallen — sie stehen nur in weniger Worten da. Eine always-on-Regel wird in jeder einzelnen Sitzung bezahlt, ihr Wachstum ist deshalb eine Entscheidung und kein Nebenprodukt längerer Prosa.

Doku ​

  • OpenCode-Adapter dokumentiert: eigene Seite mit Aktivierung, materialisierten Artefakten und der Begründung für das abgeleitete Routing; README und Schnellstart nennen die dritte Laufzeit jetzt ebenfalls.
  • Backlog für die Übernahme der offiziellen Claude-Plugin-Struktur festgehalten.
  • Spec 069 nutzt statt eigener Paginierung das geteilte Review-Paket.
  • Config-Seed aus dem Stylelint-Slice gestrichen.
  • OpenCode-Routing wird abgeleitet, statt einen dritten Tier-Key einzuführen.
  • Producer-seitige Review-Evidenz und die Nachfolger-Route geplant.
  • Slice A der Nachfolger-Route verworfen und die eigene Herleitung korrigiert.
  • Spec-Kit-Audit und eine gemessene Kadenz zum Aktuellbleiben festgehalten.
  • Referenz-First steht als kanonische Entscheidungsregel in der VISION, als Erweiterung von Standards-first: nichts neu erfinden, was ein gepflegtes Referenz-Repo schon gelöst hat. Gilt für Prosa-Artefakte; die Bash-Mechanik bleibt ausgenommen.
  • Neue Sammelstelle specs/plans/004-spec-workflow-slimming.md — Befunde aus einem realen Spec-Lauf, warum die Mechanik sich selbst Arbeit macht.
  • Beleg für die Vorarbeit zum Delta-Review und die Gegenevidenz aus der Spec-033-Kalibrierung festgehalten.
  • Zwei messbare Slices aus dem Tiefen-Abgleich mit einem Referenz-Repo ergänzt.
  • Befunde gegen eine Cross-Model-Prüfung korrigiert und den externen Abgleich aufgenommen.
  • Slice zur mehrfach ausgeführten Verifikation ergänzt.
  • Referenz-First als Arbeitsweise festgelegt, mit den vier Grenzen dagegen.
  • Ergebnis des Drei-Modell-Audits in den Plan überführt.
  • Festgehalten, welche Slices gelandet sind und welche zurückgenommen wurden.

v0.9.0 — 2026-07-26 ​

Features ​

  • od project-migrate normalisiert veraltete Modell-Pins: volle Opus-ID-Pins werden entfernt, sodass das Projekt den globalen Default erbt, volle Sonnet-ID-Pins wandern auf den sonnet-Alias, Alias- und unbekannte Pins bleiben unangetastet.
  • od project-migrate entfernt redundante Write(X)-Permission-Regeln aus die Claude-Einstellungsdatei des Projekts — aber nur, wenn Edit(X) in derselben Liste steht; allow und deny werden nie zusammengeworfen. Claude Code wertet Write(path) nicht mehr aus und warnt beim Start für jede tote Regel.
  • Beide Phasen schützen die Datei mit einem Laufzeit-Gate statt mit einem Backup: geschrieben wird erst, wenn bewiesen ist, dass ausser dem beabsichtigten Schlüssel nichts abweicht. Das Gate rechnet bewusst nicht mit derselben Logik, die den Kandidaten erzeugt hat.
  • /review bekommt einen diff-losen Audit-Modus (--audit [pfad]) für repo-weite Multi-Kategorie-Prüfungen ohne Diff.
  • Die Release-Vorbereitung nutzt jetzt eine gemeinsame Implementierung für Anchor, Versionsvorschlag, Digest und Scope-Prüfung, statt Shell-Logik über zwei Maintainer-Skills zu duplizieren.

Refactor ​

  • /spec routet nach Risiko in direct, compact oder full — eine kleine reversible Änderung zahlt nicht mehr die volle Spec-Zeremonie. Die Spec-Completion nutzt jetzt eine gemeinsame Transaktion, statt die Sequenz im Skill einzubetten.

Fixes ​

  • design-fill nutzt den Sonnet-Familien-Alias statt einer festen Modell-ID.

Doku ​

  • Flow 5 beschreibt jetzt od project-migrate mit allen vier Phasen; Troubleshooting deckt foreign-context7, den Exit-Code-Trugschluss, die fehlende CLAUDE.md und die Write(...)-Startwarnungen ab.

v0.7.0 — 2026-07-24 ​

Features ​

  • Interne Doku-Site (VitePress): Landing im codegraph-Dark-Stil, 6 Flow-Kapitel, Referenz (Skills/Agents/Rules/Hooks) beim Build aus der ausgelieferten Konfiguration generiert.
  • devkit-docs-Skill: schreibt diesen Changelog aus Commits und schlägt narrative Doku-Änderungen vor.

Fixes ​

  • delegate-exec.sh: Kimi-implement-Pfad korrigiert — kimi -p verträgt kein --auto/--yolo, non-interaktive Writes laufen ohne Permission-Flag.

Interne Doku — onedot-devkit · devkit

devkitdevkit syncdevkit statusdevkit doctordevkit helpInterne Doku · ONEDOT digital crew