Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions docs/4.-Operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,31 @@ skill は `description` が場面に合致することで起動する。した

見出しと意味タグは 1 つも変えていない。CI は節名を検証しない(`tests/test_skill_reference_resolution.py` はパス解決のみを見る。節名検証は #1792 で未実装)ため、節名を変えれば `rules/` `skills/` `adapter/` `docs/` に散る 31 箇所の参照が黙って壊れる。節の内側の散文のみを対象とした。

### skills/operations-* 側の再導出を落とした(#1922)

上の #1800 は `rules/operations/main-agent-procedures.md` 側だった。同じ形が `skills/operations-*/SKILL.md` にも残っていた —— ポインタ(正本の所在+そこが何を保持しているかの列挙)に加えて、「なぜ正本をここに置かないか」を `## The bar and its pair` の基準(2条件のいずれかで実行主体が確立するか)に自分の場合を当てはめ直して書いた段落である。`build-2026-09-09.3` 実測で対象は **7 ファイル / 9 段落**、合計 3,468 B(2 段落持つファイルが 2 本)。

| file | before | after | delta |
|---|---:|---:|---:|
| `operations-foreground-webhook-intake` | 1,505 B | 809 B | -696 B |
| `operations-handoff-continuity` | 1,339 B | 896 B | -443 B |
| `operations-on-branch` | 1,913 B | 1,425 B | -488 B |
| `operations-on-issue-format` | 1,461 B | 926 B | -535 B |
| `operations-on-pr-review` | 3,154 B | 2,710 B | -444 B |
| `operations-on-release` | 4,184 B | 3,718 B | -466 B |
| `operations-on-sub-issue` | 2,133 B | 1,737 B | -396 B |

9 段落すべてを個別にカーブアウト確認した。他所に無い論証は 1 件も無く、9 件とも落とした。

- `operations-foreground-webhook-intake` の 2 段落(起票時にコーディネータが「落とせる候補」と留保していた「なぜファイルを削除しないか」を含む)は、`## The bar and its pair` 末尾の byte-frozen アダプタ literal の段落(`Li+update.md` が legacy trailer をそこから導出するくだりを含む)と literal で同旨だった。起票時コメントで確認済み。
- `operations-handoff-continuity` / `operations-on-branch` / `operations-on-issue-format` / `operations-on-sub-issue` の各1段落は、いずれも `Parent retains` の当てはめ直し。`main-agent-procedures.md` 側の対応する節は #1800 で既に同型の文を落としており、skill 側だけがその論証の写しを残していた。
- `operations-on-pr-review` の1段落は `## The bar and its pair` の「One shape resolves the other way」がすでに `skills/task-subagent-prompt/SKILL.md` Resume-phase authority boundary を例示として名指しており、二重だった。ポインタが持っていた「正本が何を保持するか」の列挙(self-review mandate / review basis / self-review procedure / mode-specific human gate / follow-through)は文として残した。
- `operations-on-release` の2段落のうち、Human Confirmation Required 側は末尾の一文(「確認はこの手続きに先行する」という実行順序の事実)だけを残し、導出部分のみ落とした。Release Completion Report Discipline 側は導出のみで残す実行順序情報が無く、段落ごと落とした。

見出し・意味タグは変更していない(`git diff -U0 -- skills/ | grep -E '^[+-](#|<[a-z])'` は空)。`description` frontmatter は対象外(変更していない)。

`tests/test_skill_reference_resolution.py` = 2 passed / 158 subtests passed。ローカル全件 `python -m pytest tests/` = 237 passed / 776 subtests passed。


---

Expand Down
4 changes: 1 addition & 3 deletions skills/operations-foreground-webhook-intake/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ layer: L4-operations

Redirect stub. Canonical = `rules/operations/main-agent-procedures.md` Foreground webhook notification intake: purpose, source priority, the `LI_PLUS_WEBHOOK_DELIVERY` mode interaction, the local webhook store resolution, foreground handling, and own-operation arrival confirmation all live there.

Why nothing is held here: the firing moment is the start of a user turn, which only the main agent has, and the bar keeps the main agent out of this surface. A pull surface cannot reach an actor whose trigger is the turn boundary itself — that mismatch is what was observed firing against the bar, and residency is the repair.

Why the file is not deleted: `adapter/claude/CLAUDE.md` and `adapter/codex/AGENTS.md` `## Optional Webhook Notification Flow` names this path, and that block is byte-frozen — `Li+update.md` derives the legacy trailer it strips from installed files out of that very block, so drift there breaks the migration for pre-migration installs. The pointer must resolve; this stub is what it resolves to. See `rules/operations/main-agent-procedures.md` The bar and its pair.
Placement and non-deletion ground = `rules/operations/main-agent-procedures.md` The bar and its pair.

</foreground-webhook-notification-intake>
2 changes: 0 additions & 2 deletions skills/operations-handoff-continuity/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ layer: L4-operations

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Handoff continuity: the push-on-interruption rule, the source-of-truth set, and the prohibition on local-only progress all live there.

Why the canonical is not here: the main agent is an actor too. It holds the issue body (`skills/task-subagent-delegation/SKILL.md` Rules puts `issue management` on `Parent retains`) and the resume target for an implementation subagent — and `chat memory`, which the canonical names, is its alone. A canonical held here would sit where one of its two actors cannot read it (`rules/operations/main-agent-procedures.md` The bar and its pair).

The subagent still reaches the canonical — `rules/**` loads for it without invocation — so nothing it needs at its own boundary is lost by the move.

</handoff-continuity>
2 changes: 0 additions & 2 deletions skills/operations-on-branch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ Local validation may happen before or after push; it does not replace the branch

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Branch and label flow: the act-now trigger, the NOW / SOON / SOMEDAY tiers and their label mapping, the atmosphere-reading scope, the branch existence check, the `gh issue develop` command, the merge behavior, and the local-error recovery all live there.

Why the canonical is not here: the flow's trigger is human intent read from dialogue, and `backlog` / `deferred` are non-state lifecycle labels on `Parent retains`. Branch creation itself is mode-dependent — the main agent creates it under the worktree lifecycle, the subagent when the delegation uses no worktree — which is the detection sign named at `rules/operations/main-agent-procedures.md` The bar and its pair. A canonical held here would sit where its actor cannot read it.

The subagent still reaches the canonical — `rules/**` loads for it without invocation — so nothing it needs when it creates the branch itself is lost by the move.

</branch-and-label-flow>
2 changes: 0 additions & 2 deletions skills/operations-on-issue-format/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ layer: L4-operations

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Issue format: title and body language, the convergence fields, the rewrite-on-change rule, the checklist bound, and the memo-mode rapid intake path all live there.

Why the canonical is not here: `skills/task-subagent-delegation/SKILL.md` Rules puts `issue creation` and `issue management` on `Parent retains` with no mode branch, and `adapter/claude/CLAUDE.md` / `adapter/codex/AGENTS.md` bar the main agent from `skills/operations-*/SKILL.md` while a subagent is available. A canonical held here would sit where its actor cannot read it. `rules/operations/main-agent-procedures.md` The bar and its pair states the placement rule; do not restate the canonical here, the second copy is what drifts.

The subagent still reaches the canonical — `rules/**` loads for it without invocation — so nothing it needs at issue-body update or failure-report time is lost by the move.

</issue-format>
10 changes: 3 additions & 7 deletions skills/operations-on-pr-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,8 @@ Delegated-subagent stop condition (canonical, split by mode):
ends before that.
Other surfaces point here. Do not restate the condition; the second copy is what drifts.

Why this condition alone is held here, while the flow around it is not: the literal's actor is the subagent,
and the parent is only its carrier at the delegation moment (`skills/task-subagent-prompt/SKILL.md` Resume-phase
authority boundary), which is the shape `rules/operations/main-agent-procedures.md` The bar and its pair resolves
by leaving the canonical in the skill. The surrounding flow resolves the other way — its actor is the parent in
`auto` / `semi_auto` — so the self-review mandate, the review basis, the self-review procedure, the mode-specific
human gate, and the follow-through on deferred items all live at `rules/operations/main-agent-procedures.md`
PR review. Do not restate them here; the second copy is what drifts.
The surrounding PR review flow — the self-review mandate, the review basis, the self-review procedure, the
mode-specific human gate, and the follow-through on deferred items — lives at
`rules/operations/main-agent-procedures.md` PR review. Do not restate it here; the second copy is what drifts.

</pr-review>
4 changes: 1 addition & 3 deletions skills/operations-on-release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ layer: L4-operations

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Human confirmation required: the stop word, the confirm-before list, and the trigger-mode items all live there.

Why the canonical is not here: every item is a confirmation asked of the human, and a subagent has no dialogue surface to ask on. A canonical held here would sit where its actor cannot read it (`rules/operations/main-agent-procedures.md` The bar and its pair). The confirmation precedes this procedure; nothing below runs before it has cleared.
The confirmation precedes this procedure; nothing below runs before it has cleared.

</human-confirmation-required>

Expand Down Expand Up @@ -94,8 +94,6 @@ Run `skills/operations-on-wiki-sync/SKILL.md`. The gate literal is canonical in

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Release completion report discipline: what the report contains, what it must not mention, the real-device verification structure, the scope bound, and the detection signs all live there.

Why the canonical is not here: the completion report is written to the human, and no subagent writes one — its report goes to the parent. A canonical held here would sit where its actor cannot read it.

</release-completion-report-discipline>

</release-execution-procedure>
2 changes: 0 additions & 2 deletions skills/operations-on-sub-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ This satisfies per-commit CI visibility without splitting into per-sub-issue PRs

Pointer. Canonical = `rules/operations/main-agent-procedures.md` Sub-issue rules: the work-unit definition, the sub-issue versus sibling classification litmus, the sub-issue API, the simultaneous-task structure, the parallel conflict analysis, the scope-exceed dialogue confirm, and the recovery from accidental per-sub-issue PR runs all live there.

Why the canonical is not here: creating and classifying a sub-issue is `issue creation` on `Parent retains`, proposing a parallel structure and firing the scope-exceed confirm both speak to the human, and re-opening an issue during recovery is `issue management`. A canonical held here would sit where its actor cannot read it (`rules/operations/main-agent-procedures.md` The bar and its pair).

The subagent still reaches the canonical — `rules/**` loads for it without invocation — so the scope-exceed detection it owns at its own pre-commit moment is not lost by the move.

</sub-issue-rules>
Loading