Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-qqky-src-feature-cycles
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typedecision
specdojo.item_statusdecided
specdojo.prioritylow
specdojo.ownerARC
specdojo.registered_at2026-10-17T08:39:38Z
specdojo.completed_at2026-10-17T08:45:37Z
specdojo.conclusionexec の汎用の部品のうち他の機能が使う部分を src/shared へ移し、残る循環を 1 件ずつ直し、循環がなくなった組から依存の向きの規則を足す

PJR-QQKY src の機能どうしの循環する依存をほどく方針を決める ​

1. 背景 ​

prj-0001:pjr-x8y9-src-dependency-direction-rules の調査(2026-10-17)で、src の機能どうしの循環する依存が 6 組見つかった。

組向き(ファイル数)主な import 先
exec ⇄ register7 ⇄ 8register → exec/shared(6)・exec/worktree(3)・exec/worktree-ops・exec/slot-lock
exec ⇄ schedule6 ⇄ 7schedule → exec/shared(5)・exec/types(4)。exec → schedule/phase-sets(6)
exec ⇄ grade2 ⇄ 3grade → exec/shared(3)・exec/schedule-index。exec → grade/result(2)
exec ⇄ job1 ⇄ 2job → exec/shared・exec/types・exec/plans・exec/worktree
grade ⇄ review6 ⇄ 1review → grade/result(1)
catalog ⇄ docs7 ⇄ 1docs → catalog/build(1)

exec ⇄ 他の機能の循環の多くは、exec の中にある汎用の部品(exec/shared の補助関数、exec/types の共通の型、exec/worktree の git と worktree の操作)を他の機能が使っていることが原因である。

2. 検討した選択肢 ​

選択肢内容利点欠点
A循環を残す変更が要らない依存の向きを規則で守れず、機能の境界が曖昧なままになる
Bexec の汎用の部品を src/shared/ へ移し、残った数件を個別に直す原因に対して直接効き、多くの循環が一度に解けるexec の構成が変わり、変更の量が多い
C循環ごとに、依存の向きを逆にする(依存の注入など)で個別に直す移動が少ない同じ原因の循環を何度も扱うことになり、注入の仕組みが増える

3. 決定内容 ​

推奨のとおり、次のように決める。

  1. 選択肢 B を採る。
  2. src/shared/ へ移すのは、他の機能から使われている汎用の部分に限る。exec/shared の補助関数のうち exec 以外から使われるもの、exec/types のうち他の機能が使う共通の型、exec/worktree の git と worktree の操作のうち register・job が使うもの。exec だけが使う部分は exec に残す。
  3. 移した後に残る循環(register → exec/worktree-ops・exec/slot-lock、job → exec/plans、grade → exec/schedule-index、exec → grade/result)は 1 件ずつ見て、shared へ移すか、依存の向きを逆にするかを決める。
  4. review → grade/result と docs → catalog/build は、それぞれ 1 件ずつ直す(grade/result の型を review か shared へ、catalog/build から使う処理を docs か shared へ移す)。
  5. 循環がなくなった組から、依存の向きの規則(例: register は exec を import しない)を ESLint に足す。規則は循環がなくなった後に足し、それまでは足さない。
  6. 進める順番は、効果の大きい 2(汎用の部品の移動)、3(残りの数件)、4(小さい 2 件)、5(規則)とする。
  7. 移す・直すのは構造だけとし、動作は変えない。各件で全コマンドの --help の一致を確かめ、runner のコードを含む件では exec run を 1 回流す。

4. 採択理由 ​

  • 循環の多くは exec の汎用の部品という同じ原因から生じており、原因の部品を shared へ移せば一度に解ける。
  • 依存の注入で 1 つずつ逆にするより、仕組みが増えず、構造が分かりやすい。
  • 規則を循環がなくなった後に足すことで、規則を入れた時点で違反がない状態を保てる。

5. 承認 ​

項目内容
決定者利用者(PO)
決定日2026-10-17
承認方式orchestrator との会話で、推奨の 7 点を「推奨でお願いします」として承認
証跡orchestrator との会話(2026-10-17)
  • 承認方式は commit または PR を記載する。PR の場合は証跡に PR URL と merge SHA を本文テキストで記載する。
  • 不可逆・高リスク・framework schema 破壊的変更に該当する決定は PR 方式で承認する。

6. 影響範囲とフォローアップ ​

項目内容
影響範囲src/exec/・src/shared/・src/register/・src/schedule/・src/grade/・src/job/・src/review/・src/catalog/・src/docs/、eslint.config.js
必要な対応決定後に、汎用の部品の移動、残りの循環、小さい 2 件、依存の向きの規則の todo を起票する
追跡先PJR-GBWW(汎用の部品の移動)、PJR-E025(残りの循環)、PJR-Z4PM(小さい 2 件)、PJR-WSET(依存の向きの規則)

7. 関連ドキュメント ​