feat(onboarding): add natural-language initialization#243
Merged
Conversation
- 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>
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.
Summary
clad setupan explicit project-scoped activation instead of machine-global host injectionAGENTS.mdas the shared managed instruction surface; preserve existingCLAUDE.mdand never create oneWhy this is safer than 0.8.3
clad setupreceive no Cladding project wiringInstall and update UX
npm install -gcan run anywhere and installs only the CLI.clad setupruns once in each project that should expose Cladding.clad updaterefreshes both project wiring and derived state.Packed-tarball host campaign (2026-07-16)
The definitive campaign installed the packed 0.9.0 tarball in isolation and drove real init scenarios through all five host CLIs across plain control, setup-only control, idea initialization, complete-document initialization, existing-code adoption, and legacy migration. Full report:
docs/dogfood/e2e-0.9.0-packed-2026-07-16.md.IneligibleTierError), recorded not-runThe consent boundary held on every host that ran: even with permissions bypassed, each host stopped and refused paraphrased approval.
clad doctor --hostswas modernized to probe this project-local model, so the shipped diagnostics match the campaign.Defects found and fixed by the campaign
clad setup --host allremains the explicit override. (The oldsetupshard's twelve dangling test refs were rewritten.)~/.gemini/config/plugins/cladding/wire — the one stated exception to project-local activation.clad updateoutside a cladding project writes nothing — it used to scaffold host wiring into any directory and could reach an account-wide legacy plugin uninstall.config.tomlentry is spliced out textually (comments/ordering survive, parse-verified), and cursor cleanup no longer leaves an orphan emptymcpServers.clad doctor --hostsprobes match the project-local model — project-MCP approval for the consented Claude probe, project-directory Antigravity probe, Codex approvals bypass, and a realistic gate timeout.Legacy 0.8.3 migration was tested separately: owned entries were removed, unrelated entries retained, ambiguous wrappers preserved and reported, and a second run stayed safe.
Also changed
Verification
npm run typecheck: passednpm run lint: passednpm test: 237 files, 2,561 tests passednode bin/clad sync: 255 feature shards validnode bin/clad check: all functional stages greengit diff --check: passeddevelop(28 commits ahead, 0 behind)