Quickstart: Verifying the Missing-Charter Advisory Fix

Manual verification walkthrough for canonical missing-charter advisory mode and its two warning presentations. Display-only charter.md may change warning copy but never pass/block behavior.

Scenario 1 — Fully absent charter (Story 1)

mkdir -p /tmp/spec-kitty-fresh-check && cd /tmp/spec-kitty-fresh-check
git init -q
spec-kitty init --ai claude --here    # or equivalent minimal .kittify/ scaffold, no charter/ contents
rm -rf .kittify/charter .kittify/doctrine
spec-kitty next --json                 # expect: no exit 1, JSON reports success (or the next actionable step), NOT a charter blocked_reason

Expected: command proceeds past charter preflight; if run with verbose/log output, the fresh-project warning is visible.

Scenario 2 — Legacy charter.md-only bundle (Story 2)

mkdir -p /tmp/spec-kitty-legacy-check/.kittify/charter && cd /tmp/spec-kitty-legacy-check
git init -q
spec-kitty init --ai claude --here
rm -f .kittify/charter/charter.yaml
echo "# Legacy charter prose" > .kittify/charter/charter.md
rm -rf .kittify/doctrine
spec-kitty next --json                 # expect: no exit 1

Expected: command proceeds; stderr warning is visibly different from Scenario 1, names the legacy charter.md bundle, and points to the executable migration path: spec-kitty charter generate --no-from-interview.

Scenario 3 — Regression guard (Story 3)

cd /tmp/spec-kitty-legacy-check
echo "not: valid: yaml: [" > .kittify/charter/charter.yaml
spec-kitty next --json                 # expect: exit 1, blocked_reason mentions invalid charter.yaml

Expected: still blocks exactly as before this mission even though charter.md remains present. This proves prose presence cannot exempt invalid canonical state.

Cleanup

rm -rf /tmp/spec-kitty-fresh-check /tmp/spec-kitty-legacy-check