New lib/doc-commit.sh: surgical commit of ONLY the public-doc files doc-sync patched (passed as args), twin of memory-commit.sh with INVERSE scope. Δ1 dynamic pathspec filtered to changed paths (LRN-051); Δ2 fail-closed + LOUD scope guard rejecting .claude/** and CLAUDE.md (BDR-022) with a dedicated exit 4; Δ3 no hash anchoring (LRN-052); Δ4 `docs:` message. Hash-only on stdout for `doc_hash=$(...)` capture. lib/tests/run-doc-commit.sh: 24 assertions, all REALLY EXECUTED on real git fixtures (no presumed behavior). T1a/b/c prove the guard CATCHES — forbidden path alone → exit 4, mixed legit+forbidden → refuse-all (nothing half-committed, offender named); T2 dynamic pathspec no-match filter; T3/T4 dangling + stale-index safety; T5/T6 idempotent + unsafe-state skip. shellcheck clean (both). Part of the doc-sync coupled chantier (twin of BDR-034). Include + 2 orchestrator reorders follow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ho5EQCFTSvYamuRtVZpp2d |
||
|---|---|---|
| .. | ||
| profiles | ||
| project-archetypes | ||
| tests | ||
| analyze-before-plan.md | ||
| animation-lib-check.sh | ||
| archetype-detector.md | ||
| capitalize-commit.md | ||
| design-gate.md | ||
| design-tool-gate.sh | ||
| detect-plugins.sh | ||
| doc-commit.sh | ||
| memory-commit.sh | ||
| profile.sh | ||
| toggle-external.sh | ||