Conversation
The scan branch of runInit wrote spec/capabilities.yaml from the scan interpreter, whose total-fallback always fires for a host draft (the draft never emits the CONVENTIONS_MD sentinel) and re-derives capabilities from README headings — or `capabilities: []` when there are none — silently discarding the draft's schema-validated 3-8 approved capabilities. The greenfield branch already honors them; the scan branch now does too, preferring onboarding.capabilitiesYaml when the dispatch genuinely fired (source === 'llm'). conventions.md and architecture.yaml stay scanner-owned (code-grounded). Adds F-70ed1afd (adoption-honors-host-capabilities) with EARS ACs and a regression assertion in the sparse-codebase init-tools test. Regenerates the case-existing-adoption A/B report — the capabilities body byte-count shifted (fewer explainer comments, added summary/surface); the A/B verdict, capability count, and detector outcomes are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ilities Existing-project adoption keeps the host's approved capabilities
Land the in-flight pytest/convention-drift work and add three feature-cycle signals, each authored spec-first (shard → sync → implement → tests → clad done, strict gate GREEN). - pytest test-run dedup (F-49f6f2d2): on pytest projects the unit and coverage stages now share ONE coverage-instrumented run instead of spawning the whole suite twice; the zero-executed-tests guard learned pytest's `collected 0 items` and applies on the shared run, so the dedup can never pass a vacuous run. - lint multi-finding + fix hint (F-4643d99d): check-only formatters (dart/dotnet) now list EVERY dirty file with its path, plus a one-line `fix: run` hint — not just the first line collapsed to one finding. - unbound-edit nudge (F-f9891175): a non-blocking, debounced, once-per-window post-edit card when source edits keep resolving to no feature, so the spec-first cycle gets triggered instead of skipped. - enforcement advisory (F-f4e184f7): `clad check` flags a project that has undone features but neither a git hook nor CI enforcing the gate. Informational only; never changes the exit status. - convention-drift: recognise `#` comments and Python docstrings. Rebuilt bundle + plugin mirrors; READMEs + CHANGELOG updated. Strict pre-push gate GREEN — 2586 tests, 41 detectors, 258 features (255 done). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ment The plain-language audit found the Soft Shell discipline (plain, host- relayable user output; internal terms only in the Iron Core) is real and tested, but the two enforcing tests had blind spots — they scanned only DETECTOR_PLAIN `action` (not `lead`) and banned MCP names + "shard" but not raw detector-name / stage-id leads. Several leaks slipped through. Closed (user-facing only; code comments, field names, and the structured Tier-A provenance banner stay Iron Core by design): - softShell.ts: INVENTORY_DRIFT lead said "shard files" → "spec files". - clad.ts: the `clad check` footer said "spec shards" / "the offending detector"; the `clad sync` note leaked a raw `stage_2.4`. - done.ts: the git-op and no-feature refusals said "shard". - hook.ts: the SessionStart stop-block line led with a raw detector name (AC_DRIFT) — now rendered via plainLead. - init.ts: the scenarios README prose named `clad_create_feature`. Tightened so it can't recur: - plain-render.test.ts now scans each `lead` for "shard" and MCP names. - human-first-cards.test.ts asserts the seeded stop-block detector is rendered as its plain lead, never the raw id. Per-language: the behavior-triggered signals (unbound nudge, enforcement advisory) fire from one English source regardless of the user's language (proven with a Korean-titled spec + Korean-named path; slugs stay ASCII machine ids by schema, human titles/paths are any language). Three host- relay checks (ko/ja/zh) confirmed the emitted English relays cleanly with no jargon leak. New feature F-ebbb20af, authored spec-first; strict pre-push gate GREEN — 2593 tests, 41 detectors, 259 features (256 done). AB report metrics refreshed for the shorter scenarios README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…state
A real dogfood exposed the failure the unbound-edit nudge only partially
covers: after onboarding, a host read "ordinary development can begin" as
"write code now" and scaffolded a whole project with features: [] — the
feature cycle never started, and cladding stayed silent (the nudge is
reactive and source-edit-triggered; the enforcement advisory needs an
undone feature; no detector flags a young project's unbound code). The fix
layers the signal across every moment the cycle can be skipped, with the
gate as the only hard backstop.
- Onboarding handoff (F-195cb59e): the init host instruction and the CLI
clarify completion now steer to authoring the first feature's spec — its
acceptance criteria and the files it will cover — BEFORE writing code,
instead of a bare "ordinary development can begin". Names WHAT the spec
contains, in plain language, across all four host mirrors.
- Cold-start / resting state (F-be5306eb): a graduated featureCycleAdvisory
— the cold-start signal ("source code but no feature specs — the cycle
hasn't started") when un-started, else the enforcement advisory — surfaced
at the SessionStart card (every session) and the clad check footer. Source
presence is detected with the scan walker (vendor dirs ignored, early
exit). Non-blocking; never changes the exit status.
Layers: ① handoff steer · ② the existing unbound-edit nudge (in-flight) ·
③ SessionStart + clad check cold-start signal · hard backstop = the gate
(UNMAPPED_ARTIFACT once ≥8 features, clad done honesty). Re-verified live:
a features:[] + code project now surfaces the cold-start signal via both
clad check and the SessionStart card; the handoff steer reached every host.
Both features authored spec-first; strict pre-push gate GREEN — 2602 tests,
41 detectors, 261 features (258 done).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rebasing this branch onto develop — which now carries the 0.9.1 adoption-capabilities fix (#245) — left the harness-written files holding their pre-rebase versions. Re-derived them against the merged tree: rebuilt the dist bundle, re-synced the spec inventory, regenerated the case-existing-adoption A/B report (capabilities-body byte-count shift), and re-stamped the attestation. Strict pre-push gate GREEN across 2602 tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…le-signals Polyglot gate fidelity + feature-cycle signals
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
2026-07-21 · develop → main · Release v0.9.1A focused patch: adopting an existing project keeps the capabilities you approved, and the checks read non-JavaScript projects more faithfully.
Fixed
Also improved
Rolls up #245 (adoption fix) and #246 (polyglot gate fidelity + feature-cycle signals). Version bumped across all sites; strict pre-push gate green across 2602 tests.
🤖 Generated with Claude Code