Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@ All notable changes to Cladding are documented here.
Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/).
Versioning: [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html).

## [Unreleased] — Polyglot gate fidelity + feature-cycle signals

**In one line:** the gate reads and reports non-JavaScript projects honestly, and it now nudges when the feature cycle isn't being driven.

### Gate and toolchain fidelity

- **The check-only formatters list every dirty file, not just the first.** `dart format` (and peers like `dotnet format`) print one changed-file line each; those aren't ESLint-shaped, so the lint stage used to collapse them to a single pathless finding — fix one, re-run, the next appears. Each dirty file now surfaces as its own finding with its path, plus a one-line `fix: run \`dart format .\`` hint.
- **Python projects run the test suite once per gate, not twice.** On pytest projects the unit stage and the coverage stage each spawned the whole suite (`pytest`, then `coverage run -m pytest`) — roughly doubling gate time. The unit stage now runs the coverage-instrumented suite once and shares it with the coverage stage, the same dedup vitest already had. The zero-executed-tests guard still applies on the shared pytest run, so the dedup can't turn a vacuous run green.
- **The header-comment convention check understands more languages.** It now recognises `#` comments and Python docstrings (`"""`, `'''`), not only `//` / `/*`.

### Feature-cycle signals

- **A non-blocking nudge when sustained source edits are bound to no feature.** When edits to files that no feature tracks accumulate past a small threshold, the post-edit card surfaces one advisory to start a feature — so the spec-first cycle gets triggered instead of silently skipped. Debounced and once-per-window; it never blocks.
- **`clad check` flags unenforced projects.** When a project has features not yet done but neither a git hook nor CI wires the gate, `clad check` prints one advisory that the checks run only when asked — with how to wire enforcement. Informational only; it never changes the exit status.

## [0.9.0] — Project-scoped natural-language onboarding (2026-07-16)

**In one line:** apply Cladding from ordinary conversation without a shell command, while project-local discovery, a read-only preview, an exact approval phrase, and atomic recovery keep onboarding bounded.
Expand Down
8 changes: 4 additions & 4 deletions README.html
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ <h1>cladding</h1>
<p class="badges">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"></a>
</p>
Expand Down Expand Up @@ -548,7 +548,7 @@ <h2>Status</h2>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
<div style="font-size:11px;color:#64748b;letter-spacing:1.5px;text-transform:uppercase;font-weight:600">tests</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">2561<span style="font-size:16px;color:#94a3b8">/2561</span></div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">2602<span style="font-size:16px;color:#94a3b8">/2602</span></div>
<div style="font-size:11px;color:#64748b">all pass</div>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
Expand All @@ -558,8 +558,8 @@ <h2>Status</h2>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
<div style="font-size:11px;color:#64748b;letter-spacing:1.5px;text-transform:uppercase;font-weight:600">features</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">255</div>
<div style="font-size:11px;color:#64748b">252 done · self-spec</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">261</div>
<div style="font-size:11px;color:#64748b">258 done · self-spec</div>
</td>
</tr>
</table>
Expand Down
4 changes: 2 additions & 2 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<p align="center">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"/></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"/></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors"/>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"/></a>
</p>
Expand Down Expand Up @@ -339,7 +339,7 @@ clad update # 3. プロジェクト接続と派生状態を更新

| Version | 準拠レベル | Tests | Gate | Features |
|---|---|---|---|---|
| v0.9.0(2026-07) | L4 · [自己申告](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2561 / 2561 | 15 段階 · 41 detectors | 255(252 done) |
| v0.9.0(2026-07) | L4 · [自己申告](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2602 / 2602 | 15 段階 · 41 detectors | 261(258 done) |

<sub>236 test files · capability 6 個 · カバレッジ低下は COVERAGE_DROP detector がブロック</sub>

Expand Down
8 changes: 4 additions & 4 deletions README.ko.html
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ <h1>cladding</h1>
<p class="badges">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests">
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"></a>
</p>
Expand Down Expand Up @@ -584,7 +584,7 @@ <h2>Status</h2>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
<div style="font-size:11px;color:#64748b;letter-spacing:1.5px;text-transform:uppercase;font-weight:600">tests</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">2561<span style="font-size:16px;color:#94a3b8">/2561</span></div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">2602<span style="font-size:16px;color:#94a3b8">/2602</span></div>
<div style="font-size:11px;color:#64748b">all pass</div>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
Expand All @@ -594,8 +594,8 @@ <h2>Status</h2>
</td>
<td style="text-align:center;width:140px;background:#f8fafc;padding:18px 10px;border-radius:8px;border:none">
<div style="font-size:11px;color:#64748b;letter-spacing:1.5px;text-transform:uppercase;font-weight:600">features</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">255</div>
<div style="font-size:11px;color:#64748b">252 done · 자기 스펙</div>
<div style="font-size:24px;font-weight:800;color:#0f172a;margin:8px 0;letter-spacing:-0.5px">261</div>
<div style="font-size:11px;color:#64748b">258 done · 자기 스펙</div>
</td>
</tr>
</table>
Expand Down
4 changes: 2 additions & 2 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<p align="center">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"/></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"/></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors"/>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"/></a>
</p>
Expand Down Expand Up @@ -338,7 +338,7 @@ clad update # 3. 프로젝트 연결과 파생 데이터를 함께

| version | 준수 등급 | tests | gate | features |
|---|---|---|---|---|
| v0.9.0 · 2026-07 | L4 · [L0–L4 중 최고 · 자가 선언](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2561 / 2561 · all pass | 15 단계 · 41 detectors | 255 · 252 done · 자기 스펙 |
| v0.9.0 · 2026-07 | L4 · [L0–L4 중 최고 · 자가 선언](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2602 / 2602 · all pass | 15 단계 · 41 detectors | 261 · 258 done · 자기 스펙 |

<sub>236 test files · capability 6개 · coverage는 COVERAGE_DROP detector가 하락 차단</sub>

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<p align="center">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"/></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"/></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors"/>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"/></a>
</p>
Expand Down Expand Up @@ -352,7 +352,7 @@ Reconcile the drift the update flagged.

| Version | Conformance | Tests | Gate | Features |
|---|---|---|---|---|
| v0.9.0 (2026-07) | L4 · [self-declared](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2561 / 2561 | 15 stages · 41 detectors | 255 (252 done) |
| v0.9.0 (2026-07) | L4 · [self-declared](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2602 / 2602 | 15 stages · 41 detectors | 261 (258 done) |

<sub>236 test files · 6 capabilities · coverage drop blocked by the COVERAGE_DROP detector</sub>

Expand Down
4 changes: 2 additions & 2 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<p align="center">
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/ironclad-L4%20conformant-brightgreen" alt="ironclad"/></a>
<a href="https://github.com/qwerfunch/ironclad"><img src="https://img.shields.io/badge/spec-v0.0.23-blue" alt="spec"/></a>
<img src="https://img.shields.io/badge/tests-2561%2F2561-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/tests-2602%2F2602-brightgreen" alt="tests"/>
<img src="https://img.shields.io/badge/detectors-41-brightgreen" alt="detectors"/>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-lightgrey" alt="license"/></a>
</p>
Expand Down Expand Up @@ -335,7 +335,7 @@ clad update # 3. 刷新项目连接和派生状态

| 版本 | 一致性 | Tests | Gate | Features |
|---|---|---|---|---|
| v0.9.0(2026-07) | L4 · [自我声明](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2561 / 2561 | 15 阶段 · 41 检测器 | 255(252 done) |
| v0.9.0(2026-07) | L4 · [自我声明](https://github.com/qwerfunch/ironclad/blob/main/GOVERNANCE.md) | 2602 / 2602 | 15 阶段 · 41 检测器 | 261(258 done) |

<sub>236 个测试文件 · 6 项 capability · 覆盖率下降由 COVERAGE_DROP 检测器拦下</sub>

Expand Down
10 changes: 5 additions & 5 deletions docs/ab-evaluation/case-existing-adoption.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ No spec, no architecture invariants — just code on the existing tree.
| Test files | 1 | 1 | +0 |
| Test LoC | 14 | 14 | +0 |
| Test cases | 1 | 1 | +0 |
| Total chars (artifacts + code) | 11212 | 3864 | +7348 |
| Estimated tokens | 2805 | 967 | +1838 |
| Total chars (artifacts + code) | 11104 | 3864 | +7240 |
| Estimated tokens | 2778 | 967 | +1811 |

**Detector outcomes** (META_INTEGRITY + HARDCODED_SECRET excluded — toolchain-only checks):

Expand Down Expand Up @@ -90,8 +90,8 @@ B (Vanilla) — errors: 1 warns: 3 infos: 28
| Test files | 2 | 2 | +0 |
| Test LoC | 27 | 27 | +0 |
| Test cases | 3 | 3 | +0 |
| Total chars (artifacts + code) | 12732 | 5115 | +7617 |
| Estimated tokens | 3185 | 1280 | +1905 |
| Total chars (artifacts + code) | 12624 | 5115 | +7509 |
| Estimated tokens | 3158 | 1280 | +1878 |

**Detector outcomes** (META_INTEGRITY + HARDCODED_SECRET excluded — toolchain-only checks):

Expand All @@ -111,7 +111,7 @@ B (Vanilla) — errors: 1 warns: 3 infos: 28
- **Spec ↔ code traceability**: cladding emits 1 feature(s), 2 AC(s), 1 scenario(s), 3 capability(s); vanilla has 0 of each.
- **Architecture enforcement**: cladding declares 3 layer(s) with 0 forbidden-import rule(s); vanilla has 0.
- **Detector behavior**: cladding-managed tree → 1 error(s) / 1 warn(s) / 11 info(s). Vanilla tree → 1 / 3 / 28. The detectors that gate against spec (REFERENCE_INTEGRITY, MISSING_IMPLEMENTATION, ARCHITECTURE_FROM_SPEC, CAPABILITIES_FEATURE_MAPPING) need cladding's artifacts to evaluate — without them they silently pass. The "0 errors on vanilla" therefore is **absence of signal**, not absence of drift.
- **Token cost**: cladding's cumulative artifact + code consumes ~3185 tokens vs vanilla's ~1280 (heuristic chars/4) — Δ ≈ 1905 tokens, the price of structure.
- **Token cost**: cladding's cumulative artifact + code consumes ~3158 tokens vs vanilla's ~1280 (heuristic chars/4) — Δ ≈ 1878 tokens, the price of structure.
- **Code surface**: vanilla writes 9 source file(s) / 144 LoC + 2 test file(s) / 3 test case(s); cladding writes 9 / 128 + 2 / 3. (Vanilla front-loads code, cladding front-loads spec — both converge by M2.)

## Outcome Quality (F-ba2e05)
Expand Down
10 changes: 5 additions & 5 deletions docs/ab-evaluation/case-payment-saas.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ no spec, no scenarios, no architecture invariants.
| Test files | 0 | 1 | -1 |
| Test LoC | 0 | 20 | -20 |
| Test cases | 0 | 2 | -2 |
| Total chars (artifacts + code) | 6708 | 3463 | +3245 |
| Estimated tokens | 1679 | 867 | +812 |
| Total chars (artifacts + code) | 6600 | 3463 | +3137 |
| Estimated tokens | 1652 | 867 | +785 |

**Detector outcomes** (META_INTEGRITY + HARDCODED_SECRET excluded — toolchain-only checks):

Expand Down Expand Up @@ -89,8 +89,8 @@ B (Vanilla) — errors: 1 warns: 3 infos: 28
| Test files | 1 | 2 | -1 |
| Test LoC | 8 | 33 | -25 |
| Test cases | 1 | 4 | -3 |
| Total chars (artifacts + code) | 7872 | 5592 | +2280 |
| Estimated tokens | 1970 | 1399 | +571 |
| Total chars (artifacts + code) | 7764 | 5592 | +2172 |
| Estimated tokens | 1943 | 1399 | +544 |

**Detector outcomes** (META_INTEGRITY + HARDCODED_SECRET excluded — toolchain-only checks):

Expand All @@ -110,7 +110,7 @@ B (Vanilla) — errors: 1 warns: 3 infos: 28
- **Spec ↔ code traceability**: cladding emits 1 feature(s), 2 AC(s), 2 scenario(s), 3 capability(s); vanilla has 0 of each.
- **Architecture enforcement**: cladding declares 3 layer(s) with 2 forbidden-import rule(s); vanilla has 0.
- **Detector behavior**: cladding-managed tree → 1 error(s) / 3 warn(s) / 15 info(s). Vanilla tree → 1 / 3 / 28. The detectors that gate against spec (REFERENCE_INTEGRITY, MISSING_IMPLEMENTATION, ARCHITECTURE_FROM_SPEC, CAPABILITIES_FEATURE_MAPPING) need cladding's artifacts to evaluate — without them they silently pass. The "0 errors on vanilla" therefore is **absence of signal**, not absence of drift.
- **Token cost**: cladding's cumulative artifact + code consumes ~1970 tokens vs vanilla's ~1399 (heuristic chars/4) — Δ ≈ 571 tokens, the price of structure.
- **Token cost**: cladding's cumulative artifact + code consumes ~1943 tokens vs vanilla's ~1399 (heuristic chars/4) — Δ ≈ 544 tokens, the price of structure.
- **Code surface**: vanilla writes 5 source file(s) / 126 LoC + 2 test file(s) / 4 test case(s); cladding writes 1 / 11 + 1 / 1. (Vanilla front-loads code, cladding front-loads spec — both converge by M2.)

## Outcome Quality (F-ba2e05)
Expand Down
2 changes: 1 addition & 1 deletion plugins/antigravity/skills/init/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ If the current user message itself matches `APPLY CLADDING XXXXXX`, do not call
3. Read the returned prompt and observations. Draft the structured object required by `clad_init` using the current host model, then call `clad_stage_init` with the preparation token and that draft. Staging validates the draft and stores only ignored runtime state under `.cladding/host/`; it does not modify authored project files.
4. Show `plannedChanges`, the staged `confirmationQuestion`, and its one-time `approvalChallenge` to the user, then stop and wait for a separate reply. The original initialization request is not confirmation.
5. Only when the user's separate reply exactly matches `approvalChallenge`, call `clad_init` with the entire reply verbatim as `confirmation`—never strip the `APPLY CLADDING` prefix. Include the draft and token when the host retained them; process-per-turn hosts may omit both because Cladding resolves the exact staged draft from its short-lived machine-local cache. Questions, paraphrases, and generic acknowledgements are not approval.
6. If `nextQuestion` is present, show it verbatim and end the assistant turn immediately. Never answer it, infer an answer, or call either clarify tool during the initialization-approval turn. Continue with the Cladding clarify workflow only after a new user message supplies the answer. If no question remains, report that ordinary development can begin.
6. If `nextQuestion` is present, show it verbatim and end the assistant turn immediately. Never answer it, infer an answer, or call either clarify tool during the initialization-approval turn. Continue with the Cladding clarify workflow only after a new user message supplies the answer. If no question remains, report that onboarding is complete and that the next step is to author the first feature's spec — its acceptance criteria and the files it will cover — before writing any code; the feature cycle starts there, not with scaffolding.

Do not run `clad init` in a shell from an AI-host onboarding session. Do not use MCP sampling. If the MCP tools are absent, tell the user to run `clad setup`, restart the AI host in the project directory, and stop without writing project files.

Expand Down
Loading
Loading