You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two shipped skills give opposite contracts for the same directory, and .gitignore matches neither.
The contradiction
.claude/commands/post-merge-systemize.md:286 — commit only the paths you edited:
commit only the doc/skill/config paths you changed — never reports/, state/, or data files
.claude/commands/triage-friction-log.md:442:
Delete the state file. The reports/triage_<today>.md report is kept (git-tracked alongside other reports, no automatic cleanup).
triage-friction-log.md:184 reinforces the second reading, telling the operator the report is "also pushed in next branch".
Why it bites
.gitignore ignores state/ but notreports/. So post-merge-systemize's rule is unenforced: an operator who follows it correctly is left with a permanently untracked reports/ in every git status, forever. Observed during the 2026-07-27 triage sweep (PR #78) — ?? reports/ showed up in every status check of the session, and the report was deliberately held out of the commit rather than silently introduce a reports/ convention into a repo that ships to adopters.
Which way it should resolve
Toward ignored, for four reasons beyond the inconsistency:
Derived. After a triage sweep lands, every proposal is an issue body and every source entry is verbatim in the friction-log archive. Nothing in the report is unrecoverable.
Unbounded with no budget. One file per run plus "no automatic cleanup". Every other narrative file in the kit has a doc_budgets tripwire; a tracked reports/ would be the sole exception — the kit violating Principle docs: step-by-step parallel-sessions how-to #1 by design.
state/ is already ignored on identical logic, including init.sh:731 appending it to adopters. The report is scratch from the same pipeline run.
The honest counter-argument, recorded so it is not lost: the report is the only artifact showing what the LLM proposed versus what was filed. On a run where the operator skips or rewrites items, that delta is genuine provenance. But a git-tracked draft is a weak place to hold it — nobody reads old drafts. The better home is the graduation marker, which already summarizes outcomes and does get read.
Proposed change
add reports/ to .gitignore, and to init.sh's add_ignore_line block so adopters get it too;
amend triage-friction-log.md:442 (and the "also pushed in next branch" line at :184) to match post-merge-systemize;
consider recording proposed-vs-filed counts in the graduation marker, where the provenance would actually be read.
Two shipped skills give opposite contracts for the same directory, and
.gitignorematches neither.The contradiction
.claude/commands/post-merge-systemize.md:286— commit only the paths you edited:.claude/commands/triage-friction-log.md:442:triage-friction-log.md:184reinforces the second reading, telling the operator the report is "also pushed in next branch".Why it bites
.gitignoreignoresstate/but notreports/. Sopost-merge-systemize's rule is unenforced: an operator who follows it correctly is left with a permanently untrackedreports/in everygit status, forever. Observed during the 2026-07-27 triage sweep (PR #78) —?? reports/showed up in every status check of the session, and the report was deliberately held out of the commit rather than silently introduce areports/convention into a repo that ships to adopters.Which way it should resolve
Toward ignored, for four reasons beyond the inconsistency:
doc_budgetstripwire; a trackedreports/would be the sole exception — the kit violating Principle docs: step-by-step parallel-sessions how-to #1 by design.state/is already ignored on identical logic, includinginit.sh:731appending it to adopters. The report is scratch from the same pipeline run.reports/becomes inherited structure nobody asked for — the same kit-owned/adopter-owned boundary problem as The cp -r quickstart can't distinguish kit-owned from adopter-owned files #18.The honest counter-argument, recorded so it is not lost: the report is the only artifact showing what the LLM proposed versus what was filed. On a run where the operator skips or rewrites items, that delta is genuine provenance. But a git-tracked draft is a weak place to hold it — nobody reads old drafts. The better home is the graduation marker, which already summarizes outcomes and does get read.
Proposed change
reports/to.gitignore, and toinit.sh'sadd_ignore_lineblock so adopters get it too;triage-friction-log.md:442(and the "also pushed in next branch" line at :184) to matchpost-merge-systemize;Related
reports/convention has never actually been exercised by a script. Cheapest possible moment to settle it.