optimize docs
This commit is contained in:
@@ -164,13 +164,71 @@ LVL=$( ( cd "$L2" && "$DKC" level show ) | python3 -c 'import json,sys;print(jso
|
||||
[ "$LVL" = "2" ] && pass "casan level show reports project target level" || fail "level show wrong ($LVL)"
|
||||
|
||||
echo "===== ⑨ SAFETY: init refuses to adopt a CASAN source hub into itself ====="
|
||||
HUB="$WORK/fakehub"; mkdir -p "$HUB/packages/casan-harness/scripts/bash"
|
||||
HUB="$WORK/fakehub"
|
||||
mkdir -p "$HUB/packages/casan-harness/scripts/bash" \
|
||||
"$HUB/packages/casan-devkit" "$HUB/packaging"
|
||||
echo '#casan' > "$HUB/packages/casan-harness/scripts/bash/casan-harness.sh"
|
||||
echo '#devkit' > "$HUB/packages/casan-devkit/casan-init.py"
|
||||
echo '{}' > "$HUB/packaging/levels.json"
|
||||
echo '#!/bin/sh' > "$HUB/install.sh"
|
||||
GRC=0; ( cd "$HUB" && "$DKC" init --project hub >/dev/null 2>"$WORK/hub.err" ) || GRC=$?
|
||||
[ "$GRC" -eq 65 ] && pass "init refuses a source hub (rc=65)" || fail "source-hub not refused (rc=$GRC)"
|
||||
[ ! -f "$HUB/.claude/settings.json" ] && pass "no hooks written into the refused hub" || fail "hooks written into source hub"
|
||||
( cd "$HUB" && "$DKC" init --project hub --force >/dev/null 2>&1 ) && pass "--force overrides the source-hub guard" || fail "--force did not override guard"
|
||||
|
||||
echo "===== ⑨b MIGRATION: existing vendored project shell is preserved ====="
|
||||
LEGACY="$WORK/legacy-vendored"
|
||||
mkdir -p "$LEGACY/packages/casan-harness/scripts/bash" \
|
||||
"$LEGACY/.claude/commands/bd" "$LEGACY/.github/skills/domain" \
|
||||
"$LEGACY/.gitea/workflows" "$LEGACY/.casan"
|
||||
echo '#legacy harness' > "$LEGACY/packages/casan-harness/scripts/bash/casan-harness.sh"
|
||||
echo 'existing command' > "$LEGACY/.claude/commands/bd/generate.md"
|
||||
echo 'existing skill' > "$LEGACY/.github/skills/domain/SKILL.md"
|
||||
echo 'existing workflow' > "$LEGACY/.gitea/workflows/existing.yml"
|
||||
cat > "$LEGACY/AGENTS.md" <<'EOF'
|
||||
Project-owned instructions.
|
||||
<!-- CASAN_PROMPT_ENFORCEMENT_START -->
|
||||
## CASAN prompt enforcement — mandatory
|
||||
- The supported prompt boundary is `bin/casan-chat`.
|
||||
<!-- CASAN_PROMPT_ENFORCEMENT_END -->
|
||||
EOF
|
||||
cat > "$LEGACY/.casan/prompt-policy.json" <<'EOF'
|
||||
{"schema_version":1,"mode":"enforced","project_id":"legacy-vendored","domain_root":"apps/legacy-vendored/domain","direct_external_ui":"not_interceptable_not_certified"}
|
||||
EOF
|
||||
chmod 0555 "$LEGACY/.claude"
|
||||
( cd "$LEGACY" && "$DKC" init --project legacy-vendored --client claude,codex >/dev/null 2>&1 ) \
|
||||
&& pass "vendored application migrates without unsafe --force" \
|
||||
|| fail "vendored application was mistaken for a source hub"
|
||||
[ -f "$LEGACY/.claude/commands/bd/generate.md" ] \
|
||||
&& [ -f "$LEGACY/.github/skills/domain/SKILL.md" ] \
|
||||
&& [ -f "$LEGACY/.gitea/workflows/existing.yml" ] \
|
||||
&& pass "existing commands, GitHub skills, and CI are preserved" \
|
||||
|| fail "existing project shell content was changed"
|
||||
grep -q 'CASAN IDE governance' "$LEGACY/AGENTS.md" \
|
||||
&& grep -q 'Project-owned instructions.' "$LEGACY/AGENTS.md" \
|
||||
&& pass "only the CASAN-managed legacy instruction block is migrated" \
|
||||
|| fail "managed prompt-boundary migration was not precise"
|
||||
python3 - "$LEGACY/.casan/prompt-policy.json" <<'PY' \
|
||||
&& pass "legacy prompt policy records hybrid client-dependent routing" \
|
||||
|| fail "legacy prompt policy was not migrated"
|
||||
import json,sys
|
||||
d=json.load(open(sys.argv[1]))
|
||||
assert d["direct_external_ui"] == "client_dependent_see_config"
|
||||
assert d["agentic_clients"] == ["claude","codex"]
|
||||
assert d["hybrid_adoption"] is True
|
||||
PY
|
||||
[ -f "$LEGACY/packages/casan-harness/scripts/bash/casan-harness.sh" ] \
|
||||
&& pass "vendored harness is retained for compatibility, not deleted" \
|
||||
|| fail "migration deleted the existing vendored harness"
|
||||
python3 - "$LEGACY/.claude" <<'PY' \
|
||||
&& pass "owner-controlled read-only config directory mode is restored" \
|
||||
|| fail "migration did not restore the original directory permissions"
|
||||
import os,stat,sys
|
||||
assert stat.S_IMODE(os.stat(sys.argv[1]).st_mode) == 0o555
|
||||
PY
|
||||
# Restore fixture writability so the suite's temporary-directory cleanup works.
|
||||
chmod 0755 "$LEGACY/.claude"
|
||||
|
||||
echo "===== ⑩ VS Code/Copilot @casan packaging + install + doctor ====="
|
||||
FAKE_BIN="$WORK/fake-bin"; mkdir -p "$FAKE_BIN"
|
||||
cat > "$FAKE_BIN/code" <<'EOF'
|
||||
|
||||
Reference in New Issue
Block a user