Shapes turns action-first: action leads, steps numbered, state restated. Use for ADHD-friendly output. Do not use to trim tokens; use response-compression.
日本語の概要は準備中です。原文の説明を表示しています。
Chronicles settled battles, reverts, and dead ends. Use when a fix echoes a past failure. Do not use for live triage; use night-market-debugging-playbook.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
This is a reference document, not a runbook. It records every major
investigation, dead end, rejected fix, and revert in this repo as
symptom, root cause, evidence, status, and lesson, so nobody re-fights
a settled battle. For triage of a failure happening right now, use
night-market-debugging-playbook. Come here when a proposed change
smells like something the repo already tried and rejected.
Jargon used below:
.github/workflows/python39-compat.yml.git log --format='%h %s' -1 <hash>.tasks_manager.py copies in attune,
sanctum, and spec-kit looked like textbook duplication.scripts/tasks_manager.py (1,169 lines deleted across 6 files)
broke plugin self-containment. Plugins are independent deployables
that run from a Claude Code cache directory, so they cannot import
from the repo root.054e2679 (consolidate, 2026-01-23), 29961cd2 (revert,
same day), d89a55c7 (differentiated per-plugin copies). All three
copies exist today under plugins/<p>/scripts/tasks_manager.py.
docs/dependency-audit.md tracks cross-plugin deps and fallbacks.scripts/lsp-proxy.py added for "graceful server fallback"
with no consumer demanding it.2fcb256d (add), killed in PR #193 review, bc318947
(revert, 2026-02-11, restores .cclsp.json)..claude/rules/shared-utility-consumer-rule.md.a3f11323 (the deletion), 3f280334 (restore the 28
scripts and 18 tests), b5f08bf7 (CI repair: dead docs workflow,
missing capabilities entries), d6c128f5 and 01a13e70 (further
repair and governance follow-ups). Recovery point was branch
backup/unbloat-20260328.backup/unbloat-<date> branch first.06b9b1db (2026-03-10) reverts the bulk ignores and fixes
all 73 at source. The commit body cites issue #296 as the
anti-bulk-ignore policy anchor.datetime.UTC is a 3.11+ alias. On PR #511 this was the sole
failing check, with three cascade failures rooted in one
ImportError.timezone.utc back to datetime.UTC, silently re-breaking the fix.
The linter was fighting the fix.18c9340d (leyline quota_tracker, 2026-05-07),
b0049fde (abstract), 709dafc9 (attune).plugins/leyline/tests/test_python39_compat.py)
fails CI on any reintroduction, root ruff config extend-ignores
UP017, and the surviving per-line pyupgrade suppression markers each
carry a stated reason.git commit emitted a PreToolUse hook
ModuleNotFoundError.__init__ eagerly imported dependencies
(yaml, anthropic) that the bare host interpreter running hooks does
not have.45dd77ef (guard yaml import, #518, 2026-05-08),
9bfc0a7a (defer anthropic import to function scope). Regression
tests block re-imports with a sys.meta_path blocker
(plugins/gauntlet/tests/unit/test_challenges.py).LLM_TIMEOUT_SECONDS = 30 inside a hook registered with
a 10-second budget. The harness killed the whole hook before the LLM
subprocess returned, so even the deterministic path's verdict was
lost.3d22f02a (the judge), 268cff89 (2026-05-30: cap LLM
timeout to 8s, gate the LLM second shot to the single ambiguous
outcome). A guard test asserts LLM_TIMEOUT_SECONDS is below the
registered hook timeout
(plugins/herald/tests/unit/test_double_shot_latte.py).666171c3 (2026-06-18, fixes #575, findings B1-B4 from
PR #521), b6de71cf (plugin-check: bound hangs, unmask failures).[Learning] discussion digest went quiet after
2026-04-25. That starvation was the only visible symptom.skill_execution_logger,
pre_skill_execution, homeostatic_monitor in abstract, leyline
noqa_guard, sanctum deferred_item_watcher) read CLAUDE_TOOL_*
environment variables that Claude Code never populates. The payload
arrives as JSON on stdin. The hooks exited 0 without doing anything,
for months.read_hook_payload in
plugins/abstract/hooks/shared/hook_io.py, with env-var fallback
for the test harness. Consumers: the five hooks above.--changed
instead of --all.--all, new typecheck.yml workflow
gating every PR.setup-uv@v8 bare tag does not exist upstream, and
bandit newer than 1.8.6 dropped Python 3.9 support needed by hooks.f81d89a5 (pin setup-uv to v8.2.0), 25bf5a9d (pin
bandit 1.8.6).scripts/check_pinned_versions.py
and scripts/check_ruff_version.py (pre-commit, run only when the
relevant files are staged).gh discussion create/comment/list and
failed. There is no such gh subcommand.plugins/leyline/skills/git-platform/modules/command-mapping.md
using gh api graphql.gh api graphql, never a gh discussion
subcommand.break after the first finding.4993273b (2026-06-22).a8c9e4e9 (vendor
json_utils.sh per plugin).69fbd32c (2026-06-24, remove the fallback). Pattern
codified in .claude/rules/prefer-invariants-over-fallbacks.md
(9f771794) and the imbue verifier-integrity module (29081fda).Ranked by observed cost across the repo's history. Hashes are sample evidence, not complete lists.
| Rank | Class | Shape | Sample evidence | Standing guard |
|---|---|---|---|---|
| RC1 | Silent failure / swallowed exceptions | except-continue, exit 0 on failure, dropped files | e0d1c464, 10b4b790, 52ae1459, fedb1c5b, 0d28a260, bfebb1ad, 7987649c, 89faaaf7 | Constitution rule 10 and the narrow-bare-except campaign |
| RC2 | py39 / host-Python import fragility | hooks crash under system Python | SB5, SB6 hashes | python39-compat.yml, AST test, meta_path tests |
| RC3 | PR-review rework churn | long fix-chains after review | tautological tests a94240e2, f1cbbcf1, 30e58586, 42f7ce84; AI-slop prose 2a039760, 62f598e9; stale wiring 204b927c, 332bcb75 | shift-left pre-commit guards, slop-check CI |
| RC4 | Unbloat over-deletion | import-graph-only deletion | SB3 hashes | markdown-reference scan, backup branches |
| RC5 | CI pin breakage | invalid or stale tool pins | SB11 hashes | check_pinned_versions.py, check_ruff_version.py |
| RC6 | Version drift | manifests and SKILL.md frontmatter out of lockstep | fan-out via plugins/sanctum/scripts/update_versions.py | sanctum:version-updates flow |
| RC7 | Fallback over-classification | guessing fallback masks bad data | SB15 hashes | prefer-invariants-over-fallbacks rule |
These branches are superseded. Do not resume work on them. They stay for archaeology only.
| Branch | Why it is dead |
|---|---|
attune-tasks-poc | Superseded. Its lineage spawned the reverted SB1 consolidation. |
agent-coordination | 2026-03-17 experiment, superseded by conjure and egregore. |
feature/knowledge-brain | Pre-1.0 prototype, superseded by memory-palace. |
feat/slop-clean-before-post | Superseded by scribe Tier-5 patterns on master (509bffaf). |
The backup/unbloat-* branches (a dozen as of 2026-07-02) are
recovery snapshots and the institutional memory of RC4.
backup/unbloat-20260328 was the recovery point for SB3. Do not
delete them casually.
What counts as a settled battle:
Format: copy the SB block shape. Five fields, all required: Symptom,
Root cause, Evidence (commit hashes, each verified with
git log --format='%h %s' -1 <hash> before you write it down),
Status, Lesson. Assign the next SB number. Add the class to the RC
table if it recurs.
Where the lesson must also land (this file is not the system of record for policy):
[Learning] or [PR Finding] post, and the
decision journal (docs/tradeoffs.md, docs/lessons-learned.md,
append-only). See night-market-collective-memory..claude/rules/ through the pipeline in
night-market-research-methodology, subject to
night-market-change-control.night-market-debugging-playbook.night-market-operations.night-market-change-control.night-market-architecture-contract.night-market-collective-memory.Compiled 2026-07-02 against repo v1.9.15, branch master history (1,247 commits). Volatile facts: branch list, RC ranking, and the costliest-three judgment reflect the repo as of that date. The ~140 fix-chain commit count for RC3 is an unverified estimate.
Re-verification commands:
# All cited hashes still resolve
for h in 054e2679 29961cd2 d89a55c7 2fcb256d bc318947 a3f11323 \
3f280334 b5f08bf7 d6c128f5 01a13e70 06b9b1db 18c9340d b0049fde \
709dafc9 45dd77ef 9bfc0a7a 3d22f02a 268cff89 666171c3 b6de71cf \
f81d89a5 25bf5a9d 4993273b a8c9e4e9 69fbd32c 9f771794 29081fda \
509bffaf e0d1c464 10b4b790 52ae1459 fedb1c5b 0d28a260 bfebb1ad \
7987649c 89faaaf7 a94240e2 f1cbbcf1 30e58586 42f7ce84 2a039760 \
62f598e9 204b927c 332bcb75; do
git log --format=%h -1 "$h" >/dev/null 2>&1 || echo "MISSING $h"
done
# Dead-end and backup branches still present
git branch --list 'backup/unbloat-*' attune-tasks-poc \
agent-coordination 'feature/knowledge-brain' \
'feat/slop-clean-before-post'
# Standing guards still in place
ls plugins/leyline/tests/test_python39_compat.py \
plugins/abstract/hooks/shared/hook_io.py \
scripts/check_pinned_versions.py scripts/check_ruff_version.py
rg -q "meta_path" plugins/gauntlet/tests/unit/test_challenges.py
rg -q "LLM_TIMEOUT_SECONDS < hook_timeout" \
plugins/herald/tests/unit/test_double_shot_latte.py
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Shapes turns action-first: action leads, steps numbered, state restated. Use for ADHD-friendly output. Do not use to trim tokens; use response-compression.
日本語の概要は準備中です。原文の説明を表示しています。
Inverts burden of proof for code additions. Use when reviewing PRs, planning refactors, or running unbloat to challenge every addition's necessity.
日本語の概要は準備中です。原文の説明を表示しています。
Tracks per-agent token usage and flags waste in parallel dispatch. Use when evaluating parallel agent efficiency or after a multi-agent run.
日本語の概要は準備中です。原文の説明を表示しています。
Coordinates Claude agent teams via filesystem protocol. Use when orchestrating parallel agents with task dependencies. Do not use for single-agent tasks.
日本語の概要は準備中です。原文の説明を表示しています。
Evaluates API surface design, consistency, and exemplar alignment. Use when reviewing public API changes or before releasing a new API surface.
日本語の概要は準備中です。原文の説明を表示しています。
Selects architecture paradigm via research before scaffolding. Use when architecture is undecided and the choice needs justification and documentation.
日本語の概要は準備中です。原文の説明を表示しています。