chore(gitignore): keep a root PLAN.md local-only, anchored so it cannot swallow plan.md

origin is a public mirror, and the operator decided on 2026-09-15 that PLAN.md follows
the same remote rule as STATE.md: public remote -> local-only. Before this change
`git check-ignore -v PLAN.md` exited 1 in voyage, so a PLAN.md written here would have
been one `git add` away from the mirror - the exact trap the global rule warns about,
in the repo the rule was written about.

The pattern is anchored (`/PLAN.md`) because core.ignorecase is true here: a bare
`PLAN.md` was measured to also ignore a new `examples/02-new/plan.md` (exit 0), which
would silently drop the pipeline's own lowercase plan files. Measured after the change
with `git check-ignore -v --no-index`: PLAN.md -> 0, examples/02-new/plan.md -> 1,
docs/PLAN.md -> 1; STATE.md still ignored (0).

No PLAN.md is created: the destination is the operator's to choose. Suite unchanged at
1041 (1039/0/2).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-17 10:05:43 +02:00
commit 012db1fe8d

6
.gitignore vendored
View file

@ -24,6 +24,12 @@ blob-report/
# Kept local for continuity only. History scrubbed 2026-06-26 (was wrongly tracked 23 commits).
STATE.md
# PLAN.md — the repo's destination layer. LOCAL-ONLY under the same remote rule as STATE.md
# (operator decision 2026-09-15): it carries destination, open questions and what NOT to build.
# Anchored to the root: core.ignorecase=true here, so a bare pattern would also swallow the
# pipeline's lowercase plan.md files (e.g. a new examples/*/plan.md) without a word.
/PLAN.md
# Local planning docs (briefs, design notes, observations) — never committed.
# Existing tracked files in docs/ predate this rule; new planning docs stay local.
docs/ultracontinue-brief.md