musubix3 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/plugin/marketplace.json +16 -0
- package/.github/skills/sdd-change/SKILL.md +78 -0
- package/.github/skills/sdd-design/SKILL.md +26 -0
- package/.github/skills/sdd-formal-codegraph/SKILL.md +53 -0
- package/.github/skills/sdd-implementation/SKILL.md +54 -0
- package/.github/skills/sdd-knowledge/SKILL.md +24 -0
- package/.github/skills/sdd-quality/SKILL.md +69 -0
- package/.github/skills/sdd-requirements/SKILL.md +42 -0
- package/.github/skills/sdd-traceability/SKILL.md +28 -0
- package/CHANGELOG.md +152 -0
- package/LICENSE +21 -0
- package/README-ja.md +573 -0
- package/README.md +639 -0
- package/assets/ADR-0001.md +15 -0
- package/assets/constitution.md +17 -0
- package/assets/design.md +13 -0
- package/assets/requirements.md +15 -0
- package/dist/packages/analysis/src/adapters.d.ts +12 -0
- package/dist/packages/analysis/src/adapters.js +167 -0
- package/dist/packages/analysis/src/adapters.js.map +1 -0
- package/dist/packages/analysis/src/attestation.d.ts +50 -0
- package/dist/packages/analysis/src/attestation.js +474 -0
- package/dist/packages/analysis/src/attestation.js.map +1 -0
- package/dist/packages/analysis/src/change.d.ts +53 -0
- package/dist/packages/analysis/src/change.js +337 -0
- package/dist/packages/analysis/src/change.js.map +1 -0
- package/dist/packages/analysis/src/config.d.ts +104 -0
- package/dist/packages/analysis/src/config.js +456 -0
- package/dist/packages/analysis/src/config.js.map +1 -0
- package/dist/packages/analysis/src/files.d.ts +13 -0
- package/dist/packages/analysis/src/files.js +103 -0
- package/dist/packages/analysis/src/files.js.map +1 -0
- package/dist/packages/analysis/src/formal.d.ts +82 -0
- package/dist/packages/analysis/src/formal.js +579 -0
- package/dist/packages/analysis/src/formal.js.map +1 -0
- package/dist/packages/analysis/src/gate.d.ts +56 -0
- package/dist/packages/analysis/src/gate.js +484 -0
- package/dist/packages/analysis/src/gate.js.map +1 -0
- package/dist/packages/analysis/src/graph.d.ts +52 -0
- package/dist/packages/analysis/src/graph.js +737 -0
- package/dist/packages/analysis/src/graph.js.map +1 -0
- package/dist/packages/analysis/src/index.d.ts +17 -0
- package/dist/packages/analysis/src/index.js +18 -0
- package/dist/packages/analysis/src/index.js.map +1 -0
- package/dist/packages/analysis/src/knowledge.d.ts +29 -0
- package/dist/packages/analysis/src/knowledge.js +95 -0
- package/dist/packages/analysis/src/knowledge.js.map +1 -0
- package/dist/packages/analysis/src/model-correspondence.d.ts +45 -0
- package/dist/packages/analysis/src/model-correspondence.js +310 -0
- package/dist/packages/analysis/src/model-correspondence.js.map +1 -0
- package/dist/packages/analysis/src/mutation.d.ts +54 -0
- package/dist/packages/analysis/src/mutation.js +299 -0
- package/dist/packages/analysis/src/mutation.js.map +1 -0
- package/dist/packages/analysis/src/order.d.ts +23 -0
- package/dist/packages/analysis/src/order.js +89 -0
- package/dist/packages/analysis/src/order.js.map +1 -0
- package/dist/packages/analysis/src/performance.d.ts +65 -0
- package/dist/packages/analysis/src/performance.js +319 -0
- package/dist/packages/analysis/src/performance.js.map +1 -0
- package/dist/packages/analysis/src/process.d.ts +14 -0
- package/dist/packages/analysis/src/process.js +79 -0
- package/dist/packages/analysis/src/process.js.map +1 -0
- package/dist/packages/analysis/src/tdd.d.ts +65 -0
- package/dist/packages/analysis/src/tdd.js +353 -0
- package/dist/packages/analysis/src/tdd.js.map +1 -0
- package/dist/packages/analysis/src/trace.d.ts +45 -0
- package/dist/packages/analysis/src/trace.js +242 -0
- package/dist/packages/analysis/src/trace.js.map +1 -0
- package/dist/packages/analysis/src/workflow.d.ts +59 -0
- package/dist/packages/analysis/src/workflow.js +405 -0
- package/dist/packages/analysis/src/workflow.js.map +1 -0
- package/dist/packages/cli/src/install.d.ts +15 -0
- package/dist/packages/cli/src/install.js +71 -0
- package/dist/packages/cli/src/install.js.map +1 -0
- package/dist/packages/cli/src/main.d.ts +3 -0
- package/dist/packages/cli/src/main.js +364 -0
- package/dist/packages/cli/src/main.js.map +1 -0
- package/dist/packages/domain/src/constitution.d.ts +3 -0
- package/dist/packages/domain/src/constitution.js +46 -0
- package/dist/packages/domain/src/constitution.js.map +1 -0
- package/dist/packages/domain/src/design.d.ts +8 -0
- package/dist/packages/domain/src/design.js +59 -0
- package/dist/packages/domain/src/design.js.map +1 -0
- package/dist/packages/domain/src/index.d.ts +5 -0
- package/dist/packages/domain/src/index.js +6 -0
- package/dist/packages/domain/src/index.js.map +1 -0
- package/dist/packages/domain/src/markdown.d.ts +16 -0
- package/dist/packages/domain/src/markdown.js +72 -0
- package/dist/packages/domain/src/markdown.js.map +1 -0
- package/dist/packages/domain/src/requirements.d.ts +3 -0
- package/dist/packages/domain/src/requirements.js +195 -0
- package/dist/packages/domain/src/requirements.js.map +1 -0
- package/dist/packages/domain/src/types.d.ts +100 -0
- package/dist/packages/domain/src/types.js +14 -0
- package/dist/packages/domain/src/types.js.map +1 -0
- package/package.json +59 -0
- package/plugin.json +9 -0
package/README-ja.md
ADDED
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
# musubix3
|
|
2
|
+
|
|
3
|
+
**リリース候補 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
|
|
4
|
+
|
|
5
|
+
[English](README.md)
|
|
6
|
+
|
|
7
|
+
要求 → 憲章 → 設計・ADR → 実装 → 追跡可能性 → 品質根拠、という
|
|
8
|
+
仕様駆動開発(SDD)を、8つの Skills と決定的な検証エンジンで支援します。
|
|
9
|
+
形式的整合性検査、コンパイラによる依存解析、ローカル知識検索も含みます。
|
|
10
|
+
|
|
11
|
+
[musubix2](https://github.com/nahisaho/musubix2) の考え方を学び、3つの
|
|
12
|
+
ワークスペースで新規実装しています。成果物の互換性・移行機能はありません。
|
|
13
|
+
ID の接続や SAT 判定だけで、実装の正しさを保証するものではありません。
|
|
14
|
+
|
|
15
|
+
## クイックスタート
|
|
16
|
+
|
|
17
|
+
RC はローカルでビルド・パッケージ化できます。以下のレジストリ向けコマンドは、
|
|
18
|
+
npm 公開後の利用例です。インストールテストは公開を行いません。
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
git clone https://github.com/nahisaho/musubix3.git
|
|
22
|
+
cd musubix3
|
|
23
|
+
npm install
|
|
24
|
+
npm run build
|
|
25
|
+
node dist/packages/cli/src/main.js --help
|
|
26
|
+
node dist/packages/cli/src/main.js init --root ../your-project --dry-run
|
|
27
|
+
node dist/packages/cli/src/main.js init --root ../your-project
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
npm 公開後は、対象プロジェクトで実行します。
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
npx musubix3 init --dry-run
|
|
34
|
+
npx musubix3 init
|
|
35
|
+
copilot
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Copilot に「sdd-requirements でこの機能の要求を定義し、設計を計画して」と依頼します。
|
|
39
|
+
すべての Skills は入力言語(日本語・英語)に合わせてガイダンスを生成します。
|
|
40
|
+
|
|
41
|
+
`init`(別名 `install`)は Skills と雛形を配置し、既存ファイルを保持します。
|
|
42
|
+
再実行は冪等です。`--force` は名前が決まっている同梱・管理対象だけを置換し、
|
|
43
|
+
無関係なファイルを削除しません。先に dry-run を確認してください。
|
|
44
|
+
Copilot の内部設定、MCP、LSP、hooks、既存のプロジェクト指示は変更しません。
|
|
45
|
+
プロジェクト外へのアクセスとシンボリックリンクへの書き込みは拒否します。
|
|
46
|
+
|
|
47
|
+
**雛形はリリース可能な状態ではありません。** 実際の要求に置き換え、実装とテストを
|
|
48
|
+
行い、検証コマンドを設定してから品質ゲートを実行してください。
|
|
49
|
+
|
|
50
|
+
## 配布・インストール
|
|
51
|
+
|
|
52
|
+
同名 Skill の重複を避け、以下の読み込み方法から1つ選んでください。
|
|
53
|
+
|
|
54
|
+
### ネイティブプラグイン
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
copilot plugin install ./musubix3
|
|
58
|
+
copilot plugin install nahisaho/musubix3
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
リポジトリ直下の `plugin.json` が唯一のプラグイン定義元であり、
|
|
62
|
+
`.github/skills/` を参照します。Git からのプラグイン導入だけでは npm エンジンの
|
|
63
|
+
依存解決・ビルドは行われません。CLI は別途ビルド、または npm で導入してください。
|
|
64
|
+
|
|
65
|
+
`npx musubix3 plugin-install` は `copilot plugin install <package-root>` を実行する
|
|
66
|
+
だけで、Copilot 内部を編集しません。永続的なローカルパスには
|
|
67
|
+
`npm install --save-dev musubix3` と `npx --no-install musubix3 plugin-install` を推奨します。
|
|
68
|
+
一時的な npx キャッシュのパスに依存しないでください。
|
|
69
|
+
|
|
70
|
+
### ネイティブマーケットプレイス
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
copilot plugin marketplace add nahisaho/musubix3
|
|
74
|
+
copilot plugin install musubix3@musubix3-marketplace
|
|
75
|
+
# ローカル開発
|
|
76
|
+
copilot plugin marketplace add ./musubix3
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
カタログは `.github/plugin/marketplace.json`、プラグインの `source` は `.` です。
|
|
80
|
+
[Copilot の正式なプラグイン仕様](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference)
|
|
81
|
+
に委譲します。
|
|
82
|
+
|
|
83
|
+
### リポジトリ内 Skills / npm インストーラー
|
|
84
|
+
|
|
85
|
+
対象リポジトリで `npx musubix3 init` を実行するか、
|
|
86
|
+
`.github/skills/sdd-*` をコピーし、その信頼済みプロジェクトで Copilot を起動します。
|
|
87
|
+
`--root <dir>` で対象を指定でき、`--feature <slug>` は雛形のディレクトリ名と
|
|
88
|
+
ID 接頭辞を変えます。別機能の追加でも既存設定はリセットしません。
|
|
89
|
+
|
|
90
|
+
## Skills とネイティブ機能の境界
|
|
91
|
+
|
|
92
|
+
| Skill | 用途 |
|
|
93
|
+
|---|---|
|
|
94
|
+
| `sdd-change` | 機能追加・仕様変更・バグ修正を全成果物へ反映し完了判定 |
|
|
95
|
+
| `sdd-requirements` | 6種類の EARS と測定可能な憲章 |
|
|
96
|
+
| `sdd-design` | 責務・インターフェース・制約、ADR、構成図 |
|
|
97
|
+
| `sdd-implementation` | ネイティブ編集による実装とテスト、ID 注釈 |
|
|
98
|
+
| `sdd-traceability` | 網羅性、未解決リンク、双方向の変更影響 |
|
|
99
|
+
| `sdd-quality` | 実コマンド、ポリシー、品質根拠 |
|
|
100
|
+
| `sdd-knowledge` | ローカル成果物・Git 根拠の検索 |
|
|
101
|
+
| `sdd-formal-codegraph` | 形式的整合性、依存グラフ、アーキテクチャ |
|
|
102
|
+
|
|
103
|
+
計画、編集、調査、レビュー、セキュリティレビュー、メモリ、LSP、MCP管理、
|
|
104
|
+
サブエージェント・fleet・tasks は **Copilot のネイティブ機能**を使用します。
|
|
105
|
+
musubix3 に別の実行基盤、汎用コード・テスト生成、タスクスケジューラー、
|
|
106
|
+
MCPサーバー、Claude対応、REPL、常駐watcherはありません。
|
|
107
|
+
`status`・`query`・`impact`・`--changed` が必要な一回実行の価値を提供します。
|
|
108
|
+
Copilot の提案を記号的検査で制約する構成であり、独自の「ニューロシンボリック」
|
|
109
|
+
学習モデルや自動証明能力を主張しません。
|
|
110
|
+
|
|
111
|
+
## 開発ワークフロー
|
|
112
|
+
|
|
113
|
+
通常の機能追加、仕様変更、バグ修正には `sdd-change` を使用します。
|
|
114
|
+
以下の全工程を統合し、要求・設計・追跡情報が古いままの実装変更を完了扱いにしません。
|
|
115
|
+
|
|
116
|
+
1. ネイティブ計画・調査で意図と測定可能な受入条件を明確化。
|
|
117
|
+
2. `change-record CHANGE-ID impact` を記録してから要求を編集・検証し、
|
|
118
|
+
`requirements` checkpointを記録。
|
|
119
|
+
3. コンポーネントとADRを更新して `design` checkpointを記録。
|
|
120
|
+
4. 注釈付きテストを作成し、構造化結果を伴う `tdd red` と変更の `red` を記録。
|
|
121
|
+
5. 最小実装後に `implementation`、成功する `tdd green`、変更の `green` を記録。
|
|
122
|
+
6. 注釈とグラフを更新して変更影響・網羅性を確認。
|
|
123
|
+
7. 実コマンドを設定して品質ゲートを実行。必要なレビューとセキュリティレビューは
|
|
124
|
+
別途ネイティブ機能で行い、未実施を成功扱いしない。
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
npx musubix3 requirements validate .musubix/features/example/requirements.md --json
|
|
128
|
+
npx musubix3 constitution validate --json
|
|
129
|
+
npx musubix3 design validate .musubix/features/example/design.md --json
|
|
130
|
+
npx musubix3 design c4 .musubix/features/example/design.md
|
|
131
|
+
npx musubix3 change-record CHANGE-0001 design --requirement REQ-EXAMPLE-001
|
|
132
|
+
npx musubix3 tdd red TEST-EXAMPLE-001 --requirement REQ-EXAMPLE-001 --command test
|
|
133
|
+
# テストを変更せず、最小限の振る舞いを実装
|
|
134
|
+
npx musubix3 tdd green TEST-EXAMPLE-001 --requirement REQ-EXAMPLE-001 --command test
|
|
135
|
+
npx musubix3 tdd refactor TEST-EXAMPLE-001 --requirement REQ-EXAMPLE-001 --command test
|
|
136
|
+
npx musubix3 trace build
|
|
137
|
+
npx musubix3 trace check --strict --json
|
|
138
|
+
npx musubix3 graph index
|
|
139
|
+
npx musubix3 graph impact src/service.ts
|
|
140
|
+
npx musubix3 gate --changed --json
|
|
141
|
+
npx musubix3 status --json
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## コマンド
|
|
145
|
+
|
|
146
|
+
分析コマンドは `--root <dir>` と `--json` に対応します。ファイルは root 基準です。
|
|
147
|
+
`plugin-install` はパッケージのルートを使います。
|
|
148
|
+
終了コードは **0** 成功、**1** 検証・ゲート不合格または要求した solver の失敗、
|
|
149
|
+
**2** 引数・I/O・設定エラーです。`status` は情報表示のため未準備でも 0 を返します。
|
|
150
|
+
|
|
151
|
+
| コマンド | 動作 |
|
|
152
|
+
|---|---|
|
|
153
|
+
| `init [--dry-run] [--force] [--feature slug]` | 既存ファイル保持の配置。`install` は別名 |
|
|
154
|
+
| `plugin-install` | ネイティブ Copilot インストーラーを呼び出す |
|
|
155
|
+
| `requirements validate <file>` | ID・優先度・EARS 形式検査 |
|
|
156
|
+
| `constitution validate [file]` | 版・原則・測定可能な規則の定義検査 |
|
|
157
|
+
| `design validate <file>` | 必須項目・要求ID・既存ADRの参照検査 |
|
|
158
|
+
| `design c4 <file>` | 明示的なコンポーネントと依存から Mermaid 図 |
|
|
159
|
+
| `trace build` | リポジトリ全体のグラフと機能別コピーを生成 |
|
|
160
|
+
| `trace check [--strict]` | 未解決ID、陳腐化、必須要求の網羅性 |
|
|
161
|
+
| `trace impact <id-or-path>` | 説明経路付きの双方向探索 |
|
|
162
|
+
| `graph index [--changed]` | コンパイラによる依存・宣言・可能な呼び出し先 |
|
|
163
|
+
| `graph impact <symbol-or-path>` | 逆依存の推移閉包。`path#name` で曖昧さを回避 |
|
|
164
|
+
| `graph cycles` | 強連結成分。循環ありなら終了コード1 |
|
|
165
|
+
| `graph gate` | 最新グラフでアーキテクチャ規則を検査 |
|
|
166
|
+
| `knowledge build` | Markdown と限定的な Git 根拠を索引化 |
|
|
167
|
+
| `knowledge query <text> [--limit 10]` | TF-IDF/cosine のランキングと陳腐化情報 |
|
|
168
|
+
| `formal generate <file> [--format both\|smt2\|lean]` | SHA-256付きの再現可能なsolver入力生成 |
|
|
169
|
+
| `formal doctor` | Z3、Lean、`lake env lean` の存在とバージョン確認 |
|
|
170
|
+
| `formal check <file> [--solver auto\|none\|z3\|lean]` | 明示的なBoolean・条件・数値・時間・状態遷移モデルを検査 |
|
|
171
|
+
| `model-correspondence validate` | Formal JSON→生成trace→正本passing testの証拠を再検証 |
|
|
172
|
+
| `mutation validate` | 要求scopeのschema-v1 killed-mutant証拠を再検証 |
|
|
173
|
+
| `tdd red\|green\|refactor <TEST-ID> --requirement <REQ-ID> --command <name>` | 検証可能なTDDフェーズを実行・記録 |
|
|
174
|
+
| `workflow-record <skill> <phase> --status <status>` | 自己申告のworkflow宣言を記録 |
|
|
175
|
+
| `workflow-verify <copilot.jsonl> [--strict] [--session-id <uuid>]` | Skillイベントを照合し、任意で完全な成功session transcriptを要求 |
|
|
176
|
+
| `attestation oidc-audience --key-id <id> [--public-key-file <pem>]` | 署名鍵を許可するGitHub custom audienceを導出 |
|
|
177
|
+
| `attestation payload --provider <name> --run-id <id> --key-id <id> [--public-key-file <pem>] [--github-oidc-token-file <jwt>]` | 外部署名用の正規化CI payloadを出力 |
|
|
178
|
+
| `attestation verify` | 静的鍵またはGitHub OIDC認可済みEd25519 provenanceを検証 |
|
|
179
|
+
| `change-record <CHANGE-ID> <phase> --requirement <REQ-ID...>` | 段階的変更の成果物・TDD指紋を順序付きで記録 |
|
|
180
|
+
| `gate [--changed]` | 検証・実コマンドを集約し品質根拠を保存 |
|
|
181
|
+
| `status` | 成果物数と準備状況・陳腐化を表示 |
|
|
182
|
+
|
|
183
|
+
`--changed` は Git の staged/unstaged/untracked/rename/delete を収集し、
|
|
184
|
+
変更・影響を表示します。**安全のため全検査と全設定コマンドを再実行**します。
|
|
185
|
+
未実施検査を推測で成功扱いする差分最適化はありません。常駐プロセスもありません。
|
|
186
|
+
workflow証拠があれば`workflow`、TDD証拠があれば`tdd`が自動的に必須になります。
|
|
187
|
+
`.musubix/changes/CHANGE-*.md` があれば、`requiredChecks` の設定にかかわらず
|
|
188
|
+
`tdd`、`change-history`、`change-completeness`がすべて必須になります。
|
|
189
|
+
|
|
190
|
+
## 成果物スキーマ v1
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
.github/skills/sdd-*/SKILL.md
|
|
194
|
+
.musubix/
|
|
195
|
+
config.json
|
|
196
|
+
constitution.md
|
|
197
|
+
features/<slug>/
|
|
198
|
+
requirements.md
|
|
199
|
+
design.md
|
|
200
|
+
trace.json # 生成物。手動編集しない
|
|
201
|
+
decisions/ADR-0001.md
|
|
202
|
+
evidence/
|
|
203
|
+
quality.json # 初期状態は skipped
|
|
204
|
+
workflow.json # 宣言と任意のstrict transcript/session根拠
|
|
205
|
+
tdd.json # TDD cycleと追記専用ハッシュチェーン
|
|
206
|
+
changes.json # 変更checkpoint
|
|
207
|
+
order.json # TDD/change共通の単調chronology ledger
|
|
208
|
+
performance.json # 決定的operation budget観測
|
|
209
|
+
model-correspondence.json # Formal model→trace→fresh passing test証明
|
|
210
|
+
mutation.json # freshな要求scope mutation実行証拠
|
|
211
|
+
attestation.json # 任意の外部署名済みCI provenance
|
|
212
|
+
cache/ # Git除外。索引とsolver入力
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 要求・設計
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
---
|
|
219
|
+
schemaVersion: 1
|
|
220
|
+
feature: auth
|
|
221
|
+
---
|
|
222
|
+
## REQ-AUTH-001: 期限切れセッションを拒否
|
|
223
|
+
優先度: must
|
|
224
|
+
種別: functional
|
|
225
|
+
パターン: event-driven
|
|
226
|
+
要求: セッションが期限切れになったとき、システムは要求を拒否しなければならない。
|
|
227
|
+
受入条件: 期限切れ要求に HTTP 401 を返す。
|
|
228
|
+
形式制約: {"kind":"conditional","condition":"session.expired","consequence":"request.rejected"}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
制御された EARS 構文(自由な自然言語の意味解釈ではありません):
|
|
232
|
+
|
|
233
|
+
| パターン | 日本語形式 | 英語形式 |
|
|
234
|
+
|---|---|---|
|
|
235
|
+
| ubiquitous | システムは…しなければならない。 | The system shall … |
|
|
236
|
+
| event-driven | …とき、システムは…しなければならない。 | When …, the system shall … |
|
|
237
|
+
| state-driven | …間、システムは…しなければならない。 | While …, the system shall … |
|
|
238
|
+
| unwanted-behavior | もし…ならば、システムは…しなければならない。 | If …, then the system shall … |
|
|
239
|
+
| optional-feature | …場合、システムは…しなければならない。 | Where …, the system shall … |
|
|
240
|
+
| complex | …間、…とき、システムは…しなければならない。 | While …, when …, the system shall … |
|
|
241
|
+
|
|
242
|
+
日本語末尾は `すること` も対応。各要求は1つの文で記述します。
|
|
243
|
+
`must`(既定)/`should`/`may` を使用。ID は `REQ-`/`DES-`/`CODE-`/`TEST-` +
|
|
244
|
+
英大文字・数字の機能名 + 3桁以上の数字。ADR は `ADR-` + 4桁以上。
|
|
245
|
+
リポジトリ全体で重複させないでください。
|
|
246
|
+
種別は `functional`(既定)または `non-functional` です。
|
|
247
|
+
任意の`Formal:`/`形式制約:`は厳密な1行JSONで、`conditional`、整数
|
|
248
|
+
`numeric`、`withinMs`と任意の非負`afterMs`付き`temporal`、
|
|
249
|
+
`from`/`event`/`to`付き`transition`だけをモデル化します。数値単位は
|
|
250
|
+
`ms`/`s`/`min`を時間、`bytes`/`kib`/`mib`をサイズとして整数で正確に
|
|
251
|
+
正規化し、未定義単位や異なる次元は別々に扱います。非機能要求は
|
|
252
|
+
`Performance: {"counter":"visitedNodes","max":100,"testId":"TEST-AUTH-002"}`
|
|
253
|
+
で決定的な操作回数予算も宣言できます。
|
|
254
|
+
|
|
255
|
+
`design.md` は以下の形式で、すべての依存コンポーネントを明示します。
|
|
256
|
+
|
|
257
|
+
```markdown
|
|
258
|
+
## DES-AUTH-001: セッションガード
|
|
259
|
+
責務: 期限切れセッションからの要求を拒否する。
|
|
260
|
+
インターフェース: guard(request) が認証主体または HTTP 401 を返す。
|
|
261
|
+
制約: セッショントークンをログに出力しない。
|
|
262
|
+
要求: REQ-AUTH-001
|
|
263
|
+
決定: ADR-0001
|
|
264
|
+
依存: DES-AUTH-002
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
英語ラベルは `Responsibilities` / `Interfaces` / `Constraints` / `Requirements` /
|
|
268
|
+
`ADRs` / `Depends-On`。ADR には背景・採用案・却下案・結果を記録します。
|
|
269
|
+
C4-like 図は明示した内容だけを描画し、完全な C4 モデルを推論しません。
|
|
270
|
+
|
|
271
|
+
JS/TS、Rust、Python、Go、Java/Kotlin、C/C++、C#、Ruby、PHP、Swift の
|
|
272
|
+
正本となるコード・テストに、エンティティごとに1つのコメントを追加します。
|
|
273
|
+
JS/TS では文字列中の記載をリンクとして扱いません。その他の言語では行コメント
|
|
274
|
+
またはブロックコメントを使用します。網羅率だけを満たす代理 JS/TS ファイルは作成しません。
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
/** @id CODE-AUTH-001
|
|
278
|
+
* @implements REQ-AUTH-001
|
|
279
|
+
* @design DES-AUTH-001
|
|
280
|
+
*/
|
|
281
|
+
export function guard() { /* 実装 */ }
|
|
282
|
+
|
|
283
|
+
/** @id TEST-AUTH-001
|
|
284
|
+
* @verifies REQ-AUTH-001
|
|
285
|
+
*/
|
|
286
|
+
// 実際の振る舞いテスト
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
複数参照は空白・カンマ区切り。`@design` は任意。実装網羅性は要求への直接リンク、
|
|
290
|
+
または設計経由で判定し、テストは要求への直接リンクを必要とします。
|
|
291
|
+
注釈はテストの正しさを証明しません。機能別 `trace.json` は機能横断の完全な
|
|
292
|
+
スナップショット(nodes/edges/diagnostics/入力SHA-256)を保持します。
|
|
293
|
+
キャッシュがあれば優先し、削除後は機能別ファイルを使用します。
|
|
294
|
+
変更後は再生成が必要で、古いグラフでの影響分析は拒否します。
|
|
295
|
+
|
|
296
|
+
### 憲章・設定
|
|
297
|
+
|
|
298
|
+
```markdown
|
|
299
|
+
---
|
|
300
|
+
version: 1.0.0
|
|
301
|
+
---
|
|
302
|
+
## PRINC-001: 根拠を優先
|
|
303
|
+
### RULE-001: 必須要求の追跡を徹底
|
|
304
|
+
指標: trace.errors
|
|
305
|
+
上限: 0
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
`requirements.errors` / `design.errors` / `trace.errors` / `graph.violations` /
|
|
309
|
+
`formal.errors` / `formal.modeledFraction` / `tests.annotatedIds` /
|
|
310
|
+
`tests.executedIds` / `commands.failures` / `commands.skipped` が測定可能です。
|
|
311
|
+
`constitution validate` は規則の定義検査であり、実測は `gate` が行います。
|
|
312
|
+
根拠が存在しなければ skipped であり、「0件で成功」とは扱いません。
|
|
313
|
+
|
|
314
|
+
`.musubix/config.json` の例(自分のプロジェクトに合わせて変更):
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"schemaVersion": 1,
|
|
319
|
+
"language": "auto",
|
|
320
|
+
"commands": [
|
|
321
|
+
{ "name": "typecheck", "command": "npm", "args": ["run", "typecheck"], "required": true, "timeoutMs": 120000 },
|
|
322
|
+
{
|
|
323
|
+
"name": "test",
|
|
324
|
+
"command": "npm",
|
|
325
|
+
"args": ["test", "--"],
|
|
326
|
+
"adapter": "vitest",
|
|
327
|
+
"required": true,
|
|
328
|
+
"timeoutMs": 120000
|
|
329
|
+
}
|
|
330
|
+
],
|
|
331
|
+
"requiredChecks": ["requirements", "design", "constitution", "trace", "graph", "commands"],
|
|
332
|
+
"thresholds": { "design": 1, "implementation": 1, "tests": 1 },
|
|
333
|
+
"formal": { "solver": "none", "minModeledFraction": 0, "timeoutMs": 12000 },
|
|
334
|
+
"mutation": { "mode": "compatible" },
|
|
335
|
+
"workflow": {
|
|
336
|
+
"mode": "compatible",
|
|
337
|
+
"maxAgeSeconds": 3600,
|
|
338
|
+
"maxFutureSkewSeconds": 60
|
|
339
|
+
},
|
|
340
|
+
"attestation": {
|
|
341
|
+
"mode": "local",
|
|
342
|
+
"maxAgeSeconds": 3600,
|
|
343
|
+
"maxFutureSkewSeconds": 60,
|
|
344
|
+
"trustedPublicKeys": [],
|
|
345
|
+
"githubOidc": { "mode": "off" }
|
|
346
|
+
},
|
|
347
|
+
"codeGraph": { "mode": "compatible" },
|
|
348
|
+
"architecture": {
|
|
349
|
+
"forbidCycles": true,
|
|
350
|
+
"rules": [
|
|
351
|
+
{ "name": "domain-isolation", "from": "src/domain/**", "disallow": ["src/ui/**", "npm:express"] }
|
|
352
|
+
]
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
未知の設定キー、不正な閾値、重複コマンドはエラーです。
|
|
358
|
+
glob は `*` / `**` / `?` に対応し、外部依存は `npm:` 接頭辞で表現します。
|
|
359
|
+
`codeGraph.mode` の既定値は `compatible` で、未解決の計算された
|
|
360
|
+
`import()` / `require()` は警告です。`strict` にするとグラフゲートを阻止する
|
|
361
|
+
エラーになります。信頼済みbaselineが `strict` の場合、`compatible` への
|
|
362
|
+
弱体化は拒否されます。
|
|
363
|
+
網羅性閾値は必須要求に対するリンク網羅率 [0,1] であり、証明ではありません。
|
|
364
|
+
必須要求0件は `null`(対象外)です。単独 `trace check --strict` は
|
|
365
|
+
100% を要求し、集約ゲートは設定値を使います。
|
|
366
|
+
`test-identities` を必須にすると、成功したテストコマンドが生成したfreshな構造化
|
|
367
|
+
レポートで、全 `TEST-*` IDが `passed` か照合します。`formal` を必須にすると、
|
|
368
|
+
solverと最小モデル化率をゲートに含めます。
|
|
369
|
+
明示的な `Formal:` JSON を持つ要求では `model-correspondence` が自動的に必須となり、
|
|
370
|
+
現在の形式制約と生成済みtraceから正本 `TEST-*` へ到達し、そのテストがfreshな構造化
|
|
371
|
+
command reportでpassしたことを要求します。欠落・改変・stale・未接続はfail closedです。
|
|
372
|
+
`tdd` を必須にすると、実際に失敗したRedと、同じコマンド・変更されていない
|
|
373
|
+
テストによるGreenを要求します。テスト名・出力には対応する `TEST-*` IDが必要です。
|
|
374
|
+
`language` は設定の意図を保持し、Skills は入力言語を優先します。
|
|
375
|
+
機械診断コードと詳細は英語、主要な状態表示は日英併記です。
|
|
376
|
+
|
|
377
|
+
`.musubix/policy-baseline.json` は必須チェック、閾値、アーキテクチャ、
|
|
378
|
+
Formalポリシー、mutation mode、workflow strict/session/freshness、CI必須attestation、
|
|
379
|
+
strict OIDC identity/key binding、必須コマンド名の最低条件です。弱体化は拒否され、
|
|
380
|
+
変更ゲート中のbaseline変更には独立承認が必要です。CODEOWNERS等で保護してください。
|
|
381
|
+
|
|
382
|
+
**信頼した設定だけを実行してください。** ゲートは環境変数を継承し、シェルを
|
|
383
|
+
介さず、時間と出力サイズを制限して実コマンドを動かします。個別の必須コマンドは
|
|
384
|
+
集約 `commands` の設定に関係なく失敗・未実行で準備不可になります。
|
|
385
|
+
任意コマンドの失敗は非阻止ですが、憲章が失敗件数を制限していれば不合格です。
|
|
386
|
+
コマンド未設定は skipped です。
|
|
387
|
+
|
|
388
|
+
TDD用コマンドには明示的な`tddArgs`と`tddReport`、または組込みの
|
|
389
|
+
`vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit` adapterが必要です。
|
|
390
|
+
明示設定を優先し、adapterは対象引数を導出してnative JSON/JSONL/XMLを正規化します。
|
|
391
|
+
Vitest/Jestの無関係なskipped結果は対象TDDから除外します。pytestにはJSON pluginと
|
|
392
|
+
`test_TEST_APP_001`形式、Goには`TEST-*`名のsubtest、Cargoには`test_app_001`形式、
|
|
393
|
+
JUnitには正確な`@Tag("TEST-APP-001")`とIDをunderscore形式で含むmethod名が必要で、
|
|
394
|
+
launcherのXML report directoryを読み取ります。各フェーズ前に旧レポートを削除し、
|
|
395
|
+
必要なreport親directoryを作成して、対象テストだけを含むfreshな `musubix-json` を要求します。Redは `failed`、
|
|
396
|
+
Green/Refactorは `passed` のみ有効で、`skipped`、`error`、未生成、不正形式は失敗です。
|
|
397
|
+
Green前にはテスト以外のプロジェクト入力が変更されている必要があります。
|
|
398
|
+
異なるテストによる同一フェーズ出力の使い回しは拒否されます。
|
|
399
|
+
各フェーズはSHA-256で前レコードと連結した不変レコードとしても追記されます。
|
|
400
|
+
TDDと変更checkpointは共通の単調order ledgerを持ち、Red/Green境界ではこれを
|
|
401
|
+
正本とし、wall-clock時刻は情報用途に限定します。orderを持たない旧chronologyは
|
|
402
|
+
明示的なmigration診断で失敗します。欠落・並べ替え・改変・孤立レコードは
|
|
403
|
+
証拠を無効にします。
|
|
404
|
+
|
|
405
|
+
CIでは6種類すべてについて独立したnative contractを実行します。Vitest、Jest、
|
|
406
|
+
`pytest-json-report`付きpytest、Go test、Cargo test、固定版JUnit Platform Consoleの
|
|
407
|
+
各fixtureに無関係な失敗テストを置き、生成selectorが対象IDだけを実行し、実際のnative
|
|
408
|
+
reportを正規化できることを検証します。Jestは開発時依存だけであり、Python、
|
|
409
|
+
Go/Rust、Java/JUnitのtoolingはCIでのみ準備され、packageのruntime依存には含まれません。
|
|
410
|
+
|
|
411
|
+
変更checkpointは各変更要件にリンクした実装とCode Graph上の依存だけを指紋化するため、
|
|
412
|
+
無関係なソース変更では実装フェーズを満たせません。自動必須の
|
|
413
|
+
`change-completeness` はCHANGE-IDごとに機能/非機能要件、設計、実在ADR、
|
|
414
|
+
コード、テスト、範囲内TDD、トレースに加え、測定可能な受入条件、具体的な設計フィールド、
|
|
415
|
+
正本テスト注釈を検査します。各CHANGE文書の`Requirements:`はchronologyと同じ規範要求IDを
|
|
416
|
+
正確に列挙する必要があります。構造化テスト結果の`operations` counterで宣言した性能予算を
|
|
417
|
+
検査し、経過時間だけでは決定的性能要求を満たしません。
|
|
418
|
+
`performance.json` は各観測についてgate生成run identityとSHA-256連結provenanceを保存し、
|
|
419
|
+
設定済みcommand名、実行ファイルと展開済み引数、report path/source、fresh report内容、
|
|
420
|
+
test ID/status、counter/value、process status/exit codeを結び付けます。検証時には永続化された
|
|
421
|
+
file/directory/captured stdout reportを再読込し、欠落・改変、record改ざん、設定drift、
|
|
422
|
+
counter source重複、非pass test、成功した設定commandに追跡できない結果を拒否します。
|
|
423
|
+
署名対象performance headは安定した意味フィールドだけをhashし、JSONにはrun/execution ID、
|
|
424
|
+
timestamp、report hash、連結provenanceを保持するため、同等gateの再実行で署名を壊しません。
|
|
425
|
+
このprovenanceはCHANGE completenessとstatus freshnessにも反映されます。
|
|
426
|
+
native runner reportはアプリ固有のoperation counterを持たないため、性能予算を使う場合は
|
|
427
|
+
計測済み`musubix-json` reportも設定します。
|
|
428
|
+
native adapterとcustom reportは併用できますが、性能予算を証明できるのは指定counterを
|
|
429
|
+
実際に出力する計測済みreportだけです。
|
|
430
|
+
|
|
431
|
+
Mutation品質にはcommandへ
|
|
432
|
+
`"mutationReport":{"format":"musubix-mutation-json","path":"..."}`を設定します。
|
|
433
|
+
freshなschema-v1 mutantは、決定的`MUT-<hash>` identity、must functional requirement、
|
|
434
|
+
正本test ID、source/test pathとSHA-256、operator、1始まりline/column、
|
|
435
|
+
`killed|survived|skipped|error`を持ちます。gateはcommand/report/process/exit provenanceを
|
|
436
|
+
`mutation.json`へ追加します。証拠がある場合、全must functional requirementに現在の
|
|
437
|
+
接続済みkilled mutantが必要で、重複・競合・生存・skip・stale・未接続・report改変・
|
|
438
|
+
設定driftを拒否します。既定の`compatible`は証拠なしを許容し、releaseでは`strict`と
|
|
439
|
+
mutation commandをpolicy baselineで保護します。大規模mutation engineは同梱しません。
|
|
440
|
+
mutation/model-correspondenceのsemantic headはattestationに含まれ、元のprovenanceも再検査されます。
|
|
441
|
+
|
|
442
|
+
品質根拠は状態、必須フラグ、終了コード・出力、実測値、日時、入力の指紋を保存します。
|
|
443
|
+
変更ゲートのパス、HEAD、影響範囲は後続の通常ゲートでも保持します。
|
|
444
|
+
`workflow-record` は自己申告のSkill、フェーズ、状態、任意コマンドのSHA-256を保存します。
|
|
445
|
+
`workflow-verify` はCopilot JSONLからSkill発火メタデータだけを取り込み、完了宣言ごとに
|
|
446
|
+
異なる成功完了tool callを順序付きで1対1対応させます。未完了、失敗、再利用、順序違反、
|
|
447
|
+
後からの宣言変更は失敗です。
|
|
448
|
+
したがって各Skill発火は最終workflow outcomeを1件だけ記録し、複数phaseのchronologyは
|
|
449
|
+
重複workflow eventではなく`change-record`に記録します。
|
|
450
|
+
`"workflow":{"mode":"strict"}`または`--strict`では、全非空行のJSON、
|
|
451
|
+
event timestamp、tool start/completionの1対1整合性、最後に1件だけ存在する
|
|
452
|
+
`exitCode: 0`の`result`を追加検査します。terminal `sessionId`、exit code、
|
|
453
|
+
event数、terminal時刻、raw source hash、canonical transcript hashを保存します。
|
|
454
|
+
`workflow.expectedSessionId`または`--session-id`でcaller申告sessionの置換を拒否します。
|
|
455
|
+
strict検証は`workflow.maxAgeSeconds`と`workflow.maxFutureSkewSeconds`で
|
|
456
|
+
terminal transcriptの古さと未来方向clock skewも制限します。
|
|
457
|
+
並行eventはtimestamp順で出力されない場合があるため、全体sortではなくtool/resultの
|
|
458
|
+
因果順序を検査します。
|
|
459
|
+
実行中の入力変更は失敗、その後の変更は `status` で stale になります。
|
|
460
|
+
`maxAgeSeconds`より古いattestation、または`maxFutureSkewSeconds`を超えて未来の
|
|
461
|
+
`issuedAt`は失敗します。local modeは未署名を明示します。
|
|
462
|
+
|
|
463
|
+
`ci-required`には明確に異なる2つの信頼モードがあります。
|
|
464
|
+
|
|
465
|
+
- **静的信頼鍵モード**(`githubOidc.mode: "off"`): `keyId`が設定済み
|
|
466
|
+
Ed25519公開鍵を選び、repository、Git HEAD、CI provider/run ID、証拠head、
|
|
467
|
+
非生成workspace snapshotへの署名を検証します。
|
|
468
|
+
- **GitHub OIDC strictモード**: custom audience baseを設定し、GitHub issuer
|
|
469
|
+
metadata/JWKSからRS256 JWTを検証します。issuer、鍵に束縛したaudience、
|
|
470
|
+
`exp`/`nbf`/`iat`、repository、commit `sha`、`run_id`、任意の`workflow`と
|
|
471
|
+
`ref`を照合します。`keyBinding: "public-key"`はattestation内の一時的な
|
|
472
|
+
Ed25519公開鍵をSPKI SHA-256で認可します。`"key-id"`は静的信頼鍵IDへ
|
|
473
|
+
OIDC認可を追加します。metadata/JWKSを取得できない場合はfail closedです。
|
|
474
|
+
|
|
475
|
+
evidence headは非attestation quality verdictと、formal solver status、要求総数、
|
|
476
|
+
modeled count/fraction、consistency、artifact identityも束縛します。quality headから
|
|
477
|
+
attestation check自体を除外して循環依存を避けます。`ci-required` attestationの欠落は
|
|
478
|
+
skipped/unsigned-localではなくfailed/missingとして報告します。
|
|
479
|
+
|
|
480
|
+
```json
|
|
481
|
+
{
|
|
482
|
+
"attestation": {
|
|
483
|
+
"mode": "ci-required",
|
|
484
|
+
"repository": "owner/repository",
|
|
485
|
+
"maxAgeSeconds": 600,
|
|
486
|
+
"maxFutureSkewSeconds": 30,
|
|
487
|
+
"trustedPublicKeys": [],
|
|
488
|
+
"githubOidc": {
|
|
489
|
+
"mode": "strict",
|
|
490
|
+
"audience": "https://example.invalid/musubix3",
|
|
491
|
+
"keyBinding": "public-key",
|
|
492
|
+
"workflow": "release.yml",
|
|
493
|
+
"ref": "refs/heads/main"
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
Ed25519鍵はmusubix3外で生成し、公開PEMだけを`attestation oidc-audience`へ渡します。
|
|
500
|
+
その完全一致audienceでGitHub Actions OIDC tokenを要求し、公開PEMとJWT fileを
|
|
501
|
+
`attestation payload`へ渡して、出力payloadを外部で署名します。musubix3は秘密鍵を
|
|
502
|
+
読み取りも保存もしません。短命JWTは署名済みattestationに含まれ、現在時刻で期限を
|
|
503
|
+
検査するため、有効期間内に検証する必要があります。これはGitHub OIDC identityが
|
|
504
|
+
署名鍵と記載claimを認可したことを示しますが、runnerの任意動作やworkflowの意味的正しさ
|
|
505
|
+
までは証明しません。workflow evidence headは別途transcript/sessionを署名へ束縛します。
|
|
506
|
+
|
|
507
|
+
## 形式手法・コードグラフ・知識の限界
|
|
508
|
+
|
|
509
|
+
- 外部solverなしで決定的な整合性検査が可能です。制御された日英の無条件要求はBoolean、
|
|
510
|
+
厳密な`Formal:` JSONは条件分岐ごとの結果、対応単位を正確に正規化した整数境界、
|
|
511
|
+
`afterMs`/`withinMs`区間の共通部分、決定的状態遷移だけを扱います。
|
|
512
|
+
任意の自然言語、同義語、scheduler/liveness、未定義の単位変換、ドメイン公理、
|
|
513
|
+
実装動作は証明しません。
|
|
514
|
+
- `consistent` は**モデル化した部分集合だけ**の整合性です。空なら `unknown` で非ゼロ終了。
|
|
515
|
+
`valid` は空でないモデルに検出された違反・要求された実行エラーがないという意味であり、
|
|
516
|
+
全要求の証明ではありません。`none` はsolver未実行。`auto` は Z3 → Lean を探し、
|
|
517
|
+
どちらも未導入なら決定的検査のみ。明示指定したsolverの不在や unknown/timeout/error
|
|
518
|
+
は非ゼロ終了です。成功を偽装しません。
|
|
519
|
+
- `formal generate` はsolverがなくても、SHA-256メタデータ付きの再現可能な
|
|
520
|
+
SMT-LIB2/Lean入力を生成します。`formal doctor` は実行ファイル、バージョン、
|
|
521
|
+
timeout、不在、エラーを明示します。
|
|
522
|
+
- Z3 は名前付きassertと `check-sat` を含むQF_UFLIA SMT-LIBを実行します。
|
|
523
|
+
Lean は変換されたBoolean、整数、時間、条件scenario、状態遷移命題の
|
|
524
|
+
satisfiabilityまたはcontradiction定理を検査します。
|
|
525
|
+
Leanを汎用SMT solverと称したり、SATを実装の正しさと称したり
|
|
526
|
+
しません。`auto` は `lake env lean` も検出します。非標準パスには
|
|
527
|
+
`--z3-command`、`--lean-command`、`MUSUBIX3_Z3`、`MUSUBIX3_LEAN` を使います。
|
|
528
|
+
入力ファイルは無視対象キャッシュに保存します。
|
|
529
|
+
- CI は `lean-toolchain` で Lean を固定し、Z3 と Lean の実統合を両方実行します。
|
|
530
|
+
生成するLeanの充足可能性証明はBoolean全探索ではなく明示的witnessを使います。
|
|
531
|
+
ローカルでは互換バージョンも利用できますが、実行結果には正確なバージョンを記録します。
|
|
532
|
+
- JS/TS グラフは import/export、import-equals、リテラル require/dynamic import、
|
|
533
|
+
package manifest entrypoint、安全に静的baseを識別できるcache-busting import、
|
|
534
|
+
最寄りの `tsconfig.json` に対応。呼び出し先は best-effort です。
|
|
535
|
+
シンボル影響は保守的な**ファイル単位**の逆依存になります。
|
|
536
|
+
非リテラル読み込みは既定では警告ですが、`codeGraph.mode: "strict"` では
|
|
537
|
+
グラフゲートを阻止します。未解決外部パッケージは警告、未解決ローカル参照はエラー。
|
|
538
|
+
Rust、Python、Go、Java、C/C++、C#、PHP、R、Juliaはローカル
|
|
539
|
+
import/module/include/source、宣言、直接呼び出しを保守的に解析します。
|
|
540
|
+
その他の言語は未対応として報告します。他言語用の代理 JS/TS ファイルは
|
|
541
|
+
作成しません。
|
|
542
|
+
bundler 独自解決、リフレクションは対象外です。
|
|
543
|
+
build/cache/dependency と symlink は除外しますが、任意の `.gitignore` は
|
|
544
|
+
スキャンフィルターとして読みません。
|
|
545
|
+
- 検索は **TF-IDF/cosine** であり GraphRAG でも意味推論でもありません。
|
|
546
|
+
日本語は文字 bigram。Git 根拠は最大100コミット・各30ファイルで、共変更は相関、
|
|
547
|
+
著者別ディレクトリ件数は貢献の記録であって因果や専門性ではありません。
|
|
548
|
+
履歴がない場合は明示的に skipped。外部サービスへは送信しません。
|
|
549
|
+
- Node 20 と Node 24(現行LTS)をCI対象とし、Linuxで検証します。
|
|
550
|
+
Windowsの実行ラッパー・プロセスツリー停止はRC保証対象外です。
|
|
551
|
+
ESLintは追加せず、strict TypeScript と既存テストで検証します。
|
|
552
|
+
|
|
553
|
+
## 開発・リリース検査
|
|
554
|
+
|
|
555
|
+
```sh
|
|
556
|
+
npm install
|
|
557
|
+
npm run typecheck
|
|
558
|
+
npm run build
|
|
559
|
+
npm test
|
|
560
|
+
npm pack --dry-run
|
|
561
|
+
npm run pack:check
|
|
562
|
+
npm run pack:smoke
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
`packages/domain` は純粋な検証、`packages/analysis` は根拠・コンパイラ・
|
|
566
|
+
ファイルシステム、`packages/cli` はコマンドと配置を担当します。
|
|
567
|
+
ビルド出力は `dist/packages/**`。npm パッケージには隠しSkills、プラグイン定義、
|
|
568
|
+
CLI、モジュール、雛形が明示的に含まれます。CI は Node 20/24 を検証します。
|
|
569
|
+
`pack:smoke` は実際のtarballを `.test-work/` 内の独立した利用側プロジェクトへ
|
|
570
|
+
導入し、実行ファイル・ESM export・配置を確認してから削除します。
|
|
571
|
+
attestation APIは`musubix3/analysis`と専用`musubix3/attestation` exportの
|
|
572
|
+
両方から利用できます。
|
|
573
|
+
[CONTRIBUTING.md](CONTRIBUTING.md) と [CHANGELOG.md](CHANGELOG.md) も参照してください。
|