Skip to content

Release v0.9.0 — Apply Cladding from ordinary conversation, project-scoped and preview-gated#244

Merged
qwerfunch merged 29 commits into
mainfrom
develop
Jul 20, 2026
Merged

Release v0.9.0 — Apply Cladding from ordinary conversation, project-scoped and preview-gated#244
qwerfunch merged 29 commits into
mainfrom
develop

Conversation

@qwerfunch

@qwerfunch qwerfunch commented Jul 20, 2026

Copy link
Copy Markdown
Owner

2026-07-20 · develop → main

Onboarding is now conversational: you can bring Cladding into a project just by talking to your AI, with no setup command in the chat. And it's safer — a read-only preview and an exact approval phrase mean nothing is written to your project until you approve it.

One thing to know: setup is now per project. Run clad setup once in each project where you want Cladding; projects you don't set up stay untouched. Your existing CLAUDE.md is never changed — Cladding uses AGENTS.md instead.

What's new

Onboard from a sentence, a doc, or existing code. Say what you're building; Cladding drafts the spec and asks up to three questions only when a real decision is open.

See it before it's written. Initialization shows a preview and waits for the exact approval phrase. Cancel, restart, or a bad draft → your project is left exactly as it was.

Nothing leaks between projects. clad setup only wires the AI hosts you actually have installed, and only for that project.

Fixed

We installed the real 0.9.0 package in a clean sandbox and ran onboarding through all five AI CLIs. Every host that ran refused to skip the approval step — even with permissions turned off. Along the way we fixed:

▸ setup no longer writes config for hosts you don't have installed
▸ Antigravity now actually connects (it needed a different wiring path)
clad update run outside a Cladding project no longer touches that folder
▸ leftover approval drafts are cleaned up, and a tampered draft is rejected cleanly instead of crashing
clad doctor --hosts now reports the same per-project reality

Verification

  • typecheck · lint · 2,561 tests — all pass
  • 255 spec entries valid · clad check all green

Full detail: CHANGELOG.md[0.9.0]. Nine onboarding commits aren't linked to a spec entry; that's recorded honestly rather than back-filled.

qwerfunch and others added 29 commits July 14, 2026 15:33
- host-instructions.ts: drop the pre-0.9.0 'global home + npm postinstall'
  header claim; .mcp.json/.codex/config.toml are project-local via clad setup
- update.ts: comments no longer call the host re-wire 'global'; note that
  wiring runs before the spec.yaml guard
- orchestrator.md: insert the mandatory clad_stage_init step between prepare
  and the planned-changes display, matching skills/init/SKILL.md and the
  server's own prepare instruction (process-per-turn hosts dead-ended without it)
- server.ts: clad_prepare_init is 'non-destructive', not 'read-only' — it
  persists a TTL'd consent-cache envelope (tmpdir tier before staging)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Live campaign against the packed 0.9.0 tarball across all five hosts
surfaced these; each fix carries a regression test.

- setup default now wires only detected hosts (spec AC-001 restored);
  --host all stays the explicit override, zero-detection warns and
  writes just the shared runtime
- Antigravity: agy 1.1.2 never reads project MCP config (proved by
  negative control), so setup also writes the machine-wide
  ~/.gemini/config/plugins/cladding wire (engine-absolute launch,
  project resolved from session cwd); foreign dirs/symlinks preserved
  without --force; reported as the one project-local exception
- clad update outside a project no longer wires hosts (13-file cwd
  pollution + reachable account-wide claude plugin uninstall)
- staged onboarding drafts are schema-revalidated on apply; a tampered
  durable cache now returns draft_required instead of a raw TypeError
- consent-cache staging sweeps expired envelopes (644 stale files had
  accumulated in the shared temp dir on the reference machine)
- codex legacy cleanup splices the TOML section textually (user
  comments/formatting preserved, parse-verified with lossy fallback);
  cursor cleanup no longer leaves an orphan empty mcpServers
- setup-command-80d19d shard rewritten to the project-scoped contract
  (all 12 test_refs were dangling since the 0.9.0 rewrite); docs/setup.md
  documents detection, the agy exception, codex headless approvals, and
  the refreshed per-host verification levels

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e-wire

- doctor probes match the project-local model: the consented Claude probe
  auto-approves the project .mcp.json server, the Antigravity probe runs in
  the project directory with agy's permissions bypass (it used to leave the
  project via --new-project), the Codex probe bypasses approvals (annotated
  non-read-only tools were auto-denied headlessly), and run-check gets a
  gate-sized timeout instead of grading slowness as failure
- eslint ignores .cladding/ (machine-local runtime state; the regenerated
  host launcher tripped no-require-imports)
- re-wire the repo itself post-migration: project-local wiring for all five
  hosts (this repo dogfoods the 0.9.0 model it ships)
- docs/dogfood/matrix.md regenerated at 0.9.0 by the packed tarball:
  claude/codex/antigravity verified live (all three sentinel surfaces incl.
  the full gate), gemini fail (IneligibleTierError — account tier), cursor
  wiring pass + model surfaces fail (account usage limit); README host-claims
  fence synced to claim no more than the evidence
- campaign report docs/dogfood/e2e-0.9.0-packed-2026-07-16.md + CHANGELOG
  section for the campaign-hardening fixes

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four-way read-only audit (README 6 variants / docs tree / code residue /
internal skills+personas+mirrors) before release. Core verdict was coherent;
these are the residuals it surfaced.

Docs:
- README.html + README.ko.html were half-migrated and still taught the
  retired machine-wide wiring model ("does not create or modify project
  files", separate machine-level clad setup in Update) and re-introduced
  the removed background-verification-loop overclaim — ported the 0.9.0
  Install/Update sections from the markdown, incl. the consent-phrase
  paragraph and the 5-host list
- ja/zh READMEs: intro/table/wrapping still said 4 hosts (Gemini missing,
  contradicting their own setup blocks); zh test-file count 234→236
- all six variants: feature counts synced to the measured 255 total /
  252 done (intro said 251-of-254, status said 251 done)
- four md variants: clad setup sentence now says detected hosts and names
  Antigravity as the one machine-wide exception with a setup.md pointer
- CLAUDE.md: version-bump covers eleven sites, not nine (two spots)
- glossary: setup verb host list gains Antigravity; ssot-model: two
  leftover 'refine' verbs → clarify

Internal instruction md:
- serve skill advertised only 4 tools — now describes the full surface
  incl. the 0.9.0 onboarding trio and pre-init gating
- src/agents/README: 6 personas (blind-author row added), real mirror
  targets (claude-code/codex/antigravity), dropped the nonexistent
  commands/clad.md and gemini per-verb claims
- check skill: frozen '37/37 as of v0.6.1' and stale plugin.json path
  replaced with the recount mechanism; oracle skill description trimmed
  to the picker-budget; planner scenario-policy names the host MCP flow
  (and stays within its pinned persona budget)

Code residue:
- deleted resolveServeLaunch (orphaned by this branch) and the superseded
  writeAgentsMd + AGENTS_MD_TEMPLATE; the three tests pinning the dead
  template now pin the live spec-driven managed block, which carries the
  same interpreter-rule/anti-self-cert/feature-cycle literals
- renamed 'skipped-not-installed' → 'skipped-not-selected' (the render
  label already said 'not selected')
- setup-command AC-013 narrowed to the CLAUDE.md-only refresh reality;
  agent-interpreter-rule AC text names the managed block
- knownRoots comment: home status file is a frozen pre-0.9.0 artifact
- test-count badges resynced (2561 after removing 5 dead-template tests)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(onboarding): add natural-language initialization
@qwerfunch
qwerfunch merged commit d84d061 into main Jul 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant