musubix3 0.1.2 → 0.1.4

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.
Files changed (44) hide show
  1. package/.github/plugin/marketplace.json +2 -2
  2. package/.github/skills/sdd-change/SKILL.md +2 -2
  3. package/.github/skills/sdd-formal-codegraph/SKILL.md +6 -6
  4. package/.github/skills/sdd-implementation/SKILL.md +4 -2
  5. package/.github/skills/sdd-quality/SKILL.md +4 -4
  6. package/.github/skills/sdd-traceability/SKILL.md +6 -2
  7. package/CHANGELOG.md +39 -0
  8. package/README-ja.md +121 -40
  9. package/README.md +104 -41
  10. package/dist/packages/analysis/src/adapters.js +134 -7
  11. package/dist/packages/analysis/src/adapters.js.map +1 -1
  12. package/dist/packages/analysis/src/config.d.ts +1 -1
  13. package/dist/packages/analysis/src/config.js +4 -3
  14. package/dist/packages/analysis/src/config.js.map +1 -1
  15. package/dist/packages/analysis/src/files.js +13 -1
  16. package/dist/packages/analysis/src/files.js.map +1 -1
  17. package/dist/packages/analysis/src/graph.d.ts +1 -0
  18. package/dist/packages/analysis/src/graph.js +673 -10
  19. package/dist/packages/analysis/src/graph.js.map +1 -1
  20. package/dist/packages/analysis/src/model-correspondence.js +5 -5
  21. package/dist/packages/analysis/src/model-correspondence.js.map +1 -1
  22. package/dist/packages/analysis/src/mutation.d.ts +1 -1
  23. package/dist/packages/analysis/src/mutation.js +11 -2
  24. package/dist/packages/analysis/src/mutation.js.map +1 -1
  25. package/dist/packages/analysis/src/performance.js +3 -5
  26. package/dist/packages/analysis/src/performance.js.map +1 -1
  27. package/dist/packages/analysis/src/process.js +3 -2
  28. package/dist/packages/analysis/src/process.js.map +1 -1
  29. package/dist/packages/analysis/src/tdd.js +7 -1
  30. package/dist/packages/analysis/src/tdd.js.map +1 -1
  31. package/dist/packages/analysis/src/trace.js +60 -8
  32. package/dist/packages/analysis/src/trace.js.map +1 -1
  33. package/dist/packages/analysis/src/workflow.d.ts +9 -0
  34. package/dist/packages/analysis/src/workflow.js +106 -2
  35. package/dist/packages/analysis/src/workflow.js.map +1 -1
  36. package/dist/packages/cli/src/main.js +17 -2
  37. package/dist/packages/cli/src/main.js.map +1 -1
  38. package/dist/packages/domain/src/constitution.d.ts +1 -1
  39. package/dist/packages/domain/src/constitution.js +1 -0
  40. package/dist/packages/domain/src/constitution.js.map +1 -1
  41. package/dist/packages/domain/src/requirements.js +6 -6
  42. package/dist/packages/domain/src/requirements.js.map +1 -1
  43. package/package.json +1 -1
  44. package/plugin.json +1 -1
@@ -3,13 +3,13 @@
3
3
  "owner": { "name": "nahisaho" },
4
4
  "metadata": {
5
5
  "description": "GitHub Copilot CLI specification-driven development skills",
6
- "version": "0.1.2"
6
+ "version": "0.1.4"
7
7
  },
8
8
  "plugins": [
9
9
  {
10
10
  "name": "musubix3",
11
11
  "source": ".",
12
- "version": "0.1.2",
12
+ "version": "0.1.4",
13
13
  "description": "Evidence-driven SDD without duplicating native Copilot capabilities."
14
14
  }
15
15
  ]
@@ -3,13 +3,13 @@ name: sdd-change
3
3
  description: "Use for feature additions, behavior changes, bug fixes, refactoring with observable impact, or any request that must propagate through requirements, design, code, tests, traceability, and quality evidence. 機能追加・仕様変更・バグ修正を一貫して反映するときに使用。"
4
4
  ---
5
5
  # Integrated change workflow / 統合変更ワークフロー
6
-
7
6
  Follow the user's input language (日本語 / English). Use Copilot's native
8
7
  planning, editing, research, review, security review and subagents where useful.
9
8
  This skill coordinates SDD artifacts and checks; it is not another agent runtime.
10
9
  Record exactly one final invocation outcome with `npx musubix3 workflow-record
11
10
  sdd-change complete --status <status>`; `change-record` separately proves phases.
12
- Run `workflow-verify <copilot.jsonl>` to bind this declaration to one Skill call.
11
+ Run `workflow-sanitize <copilot.jsonl> <safe.jsonl>` before review when needed,
12
+ then `workflow-verify <safe.jsonl>`; sanitization strictly validates the source.
13
13
  For strict evidence, set an expected UUID or pass `--strict --session-id <uuid>`;
14
14
  this checks lifecycles; GitHub origin needs strict OIDC with key-bound claims.
15
15
  Never record multiple declarations per invocation; use only the configured CLI.
@@ -41,12 +41,12 @@ After the work, run `npx musubix3 workflow-record sdd-formal-codegraph complete
41
41
  JS/TS imports, re-exports, literal require/dynamic imports, manifest
42
42
  entrypoints and local cache-busting URL/templates with a static base are indexed.
43
43
  Set `codeGraph.mode` to `strict` when unresolved computed `import()` or
44
- `require()` calls must block graph gates; the compatible default warns.
45
- Conservative native adapters index Rust modules/`use`, Python imports, Go
46
- module imports, Java package imports, C/C++ includes, C# namespace imports,
47
- PHP namespace/import dependencies, R source/package dependencies and Julia
48
- include/module imports, declarations and direct calls. Other languages are
49
- reported as unsupported.
44
+ `require()` calls, including computed PHP include/require expressions, must
45
+ block graph gates; the compatible default warns.
46
+ Conservative native adapters index JS/TS, Rust, Python, Go, Java, Kotlin,
47
+ C/C++, Objective-C, C#/.NET, Ruby, PHP, Swift, Dart, Scala, Elixir, Haskell,
48
+ Lua, Zig, Solidity, R and Julia dependencies, declarations and direct calls.
49
+ Unrecognized extensions stay outside graph inputs.
50
50
  Statically resolved cache-busting imports remain valid in strict mode.
51
51
  Reflective behavior remains an explicit limitation.
52
52
  4. Use native navigation and review to confirm conservative results; rebuild
@@ -18,8 +18,8 @@ After the work, run `npx musubix3 workflow-record sdd-implementation complete
18
18
  implementation. Configure the selected command with `tddArgs` containing
19
19
  `{testId}` or `{testPath}` and a `tddReport`, or use a built-in runner adapter.
20
20
  Follow its native identity contract: pytest/Cargo use underscore names, Go
21
- uses a `TEST-*` subtest, and JUnit uses an exact `@Tag("TEST-*")` plus an
22
- underscore-form ID in the method name.
21
+ uses a `TEST-*` subtest, JUnit uses an exact `@Tag("TEST-*")`, and xUnit uses
22
+ a `Fact` `DisplayName` containing the exact ID.
23
23
  Run the repository formatter before recording Red. Formatting is part of the
24
24
  test fingerprint: after Red, do not edit or reformat the authoritative test
25
25
  until the matching Green has been recorded.
@@ -29,6 +29,8 @@ After the work, run `npx musubix3 workflow-record sdd-implementation complete
29
29
  `npx musubix3 tdd red <TEST-ID> --requirement <REQ-ID> --command <name>`.
30
30
  3. Implement only enough code to pass, preserving the test unchanged, then run
31
31
  `tdd green`. Refactor only after Green and record `tdd refactor`.
32
+ Use `tdd validate` to inspect persisted order, fingerprints, durations and
33
+ hash-chain evidence before claiming the cycle is complete.
32
34
  4. Add one block comment per trace entity:
33
35
  ```ts
34
36
  /** @id CODE-FEATURE-001
@@ -3,7 +3,6 @@ name: sdd-quality
3
3
  description: "Use when deciding release readiness from actual checks, measurable policy, architecture and trace evidence, including incremental change checks. 品質ゲート・リリース判定時に使用。"
4
4
  ---
5
5
  # Quality / 品質
6
-
7
6
  Follow the user's input language (日本語 / English). Use native Copilot review and
8
7
  security review for their specialist reasoning; this skill does not replace them.
9
8
  After the work, run `npx musubix3 workflow-record sdd-quality complete --status
@@ -14,7 +13,7 @@ completed` exactly once.
14
13
  explicit independent approval. Use only the exact `musubix3` CLI; never
15
14
  substitute similarly named npm packages.
16
15
  2. Configure real tests/build/typecheck commands and timeouts. Use an explicit
17
- custom report or a built-in Vitest/Jest, pytest, Go test, Cargo or JUnit
16
+ custom report or a built-in Vitest/Jest, pytest, Go test, Cargo, JUnit or .NET
18
17
  adapter. Require executable native adapter contracts in CI; JUnit targets use
19
18
  an exact `@Tag("TEST-*")`, and pytest requires `pytest-json-report`. Review
20
19
  `requiredChecks`, `qualityProfile`, coverage thresholds and architecture rules.
@@ -27,8 +26,8 @@ completed` exactly once.
27
26
  `evidence refresh --json` runs the same fail-closed pipeline. If `input-stability` fails,
28
27
  inspect its per-path added/modified/deleted diagnostics and stop generators
29
28
  or formatters before rerunning. Standard dependency/build directories,
30
- including manifest-scoped Cargo and Maven `target/` and conventional `.venv`
31
- or `venv` roots with a regular `pyvenv.cfg`, are excluded; arbitrary source
29
+ including manifest-scoped Cargo/Maven `target/`, .NET `bin`/`obj`, project-local
30
+ `.nuget/packages`, and `.venv` or `venv` roots with a regular `pyvenv.cfg`, are excluded; arbitrary source
32
31
  directories and source-like generated inputs are not silently ignored.
33
32
  Changed mode reports Git changes and dependent files but conservatively runs
34
33
  all checks, including commands. It never treats unrun checks as successful.
@@ -40,6 +39,7 @@ completed` exactly once.
40
39
  fingerprints. Inspect `formal.json` and `workflow.json` when configured.
41
40
  Treat workflow records as declarations until `workflow-verify` binds each
42
41
  completed declaration to one distinct completed Copilot Skill tool call.
42
+ Use `workflow-sanitize` before review; it validates before filtering.
43
43
  In strict mode require one final successful result, matching session UUID,
44
44
  causal transcript order, policy-bounded concurrent-event clock skew, bounded
45
45
  freshness, complete tool lifecycles and canonical transcript hash. Ensure the
@@ -10,8 +10,12 @@ After the work, run `npx musubix3 workflow-record sdd-traceability complete
10
10
  --status completed` exactly once.
11
11
 
12
12
  1. Run `npx musubix3 trace build`. It scans `.musubix` artifacts and comment
13
- annotations in JS/TS, Rust, Python, Go, Java/Kotlin, C/C++, C#, Ruby, PHP and
14
- Swift, then generates feature `trace.json` files plus an ignored cache.
13
+ annotations in every Code Graph language, including JS/TS, Rust, Python, Go,
14
+ JVM, C/C++, .NET, Ruby, PHP, Swift, Dart, BEAM, Haskell, Lua, Zig, Solidity,
15
+ R and Julia, then generates feature `trace.json` files plus an ignored cache.
16
+ Haskell `--`/`{- ... -}`, Lua `--`/`--[[ ... ]]`, and Visual Basic
17
+ apostrophe/XML-documentation comments are scanned without accepting string
18
+ literals as trace annotations.
15
19
  2. Run `npx musubix3 trace check --strict --json`.
16
20
  Distinguish malformed IDs, dangling endpoints, stale inputs, and missing
17
21
  mandatory design/implementation/test coverage. Non-strict coverage warnings
package/CHANGELOG.md CHANGED
@@ -2,6 +2,45 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.1.4 - 2026-09-08
6
+
7
+ - Measure subprocess durations with a monotonic clock and reject negative or
8
+ non-integer TDD execution durations with `TDD_DURATION_INVALID`.
9
+ - Add `tdd validate` for direct persisted-evidence diagnostics and provide
10
+ safer regeneration guidance for invalid legacy order or duration records.
11
+ - Add `workflow-sanitize` to reduce Copilot JSONL logs to privacy-minimized
12
+ Skill lifecycle and terminal events before strict verification.
13
+ - Accept explicit Japanese EARS subjects such as API/service names plus common
14
+ `時` and `中` control markers, and report bilingual corrective examples.
15
+ - Explain pytest TEST ID naming/project-runner recovery and make policy baseline
16
+ approval diagnostics actionable for new repositories.
17
+ - Document the natural-language-only TypeScript/Python/PostgreSQL experiment
18
+ and its fail-closed repair workflow.
19
+
20
+ ## 0.1.3 - 2026-09-08
21
+
22
+ - Add a built-in `dotnet` test adapter with xUnit `DisplayName` targeting and
23
+ recursive TRX result normalization.
24
+ - Exclude manifest-scoped .NET `bin/` and `obj/` output plus the conventional
25
+ project-local `.nuget/packages/` cache from snapshots and Code Graph indexing.
26
+ - Exclude Gradle `.gradle/`, Dart `.dart_tool/`, SwiftPM `.build/`, Zig
27
+ `.zig-cache/`/`zig-out/`, and .NET `.dotnet/` CLI homes only when a nearby
28
+ ecosystem manifest identifies them as generated project state.
29
+ - Detect C#/.NET projects in `mutation doctor` and safely probe a pinned local
30
+ Stryker.NET tool manifest without installing or downloading tools.
31
+ - Add conservative Code Graph adapters for Kotlin, Ruby, Swift, Dart, Scala,
32
+ Elixir, Haskell, Lua, Zig, Solidity, Objective-C/Objective-C++, F# and
33
+ Visual Basic .NET, including local dependencies, declarations and direct calls.
34
+ - Add Haskell, Lua, and Visual Basic trace-comment extraction with string
35
+ masking, and expose annotated/executed test identity counts as constitution
36
+ metrics.
37
+ - Reduce native Code Graph false positives and improve Scala, Visual Basic,
38
+ Julia, PHP, Swift, Dart, Haskell, and Objective-C resolution precision.
39
+ - Normalize JUnit identities from `system-out` display names independently of
40
+ XML attribute order, and recognize nested F# `(* ... *)` trace comments.
41
+ - Validate large applications across all 23 supported language groups: 475
42
+ authored implementation files and 345 traced native tests, all gate-ready.
43
+
5
44
  ## 0.1.2 - 2026-09-07
6
45
 
7
46
  - Exclude conventional `.venv` and `venv` Python environments identified by a
package/README-ja.md CHANGED
@@ -1,39 +1,76 @@
1
1
  # musubix3
2
2
 
3
- **最新公開版 v0.1.2 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
3
+ **最新リリース v0.1.4 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
4
4
 
5
5
  [English](README.md)
6
6
 
7
- [musubix2 から musubix3 で変わったこと](MUSUBIX2-TO-MUSUBIX3.md)
7
+ [musubix2 から musubix3 で変わったこと](docs/MUSUBIX2-TO-MUSUBIX3.md)
8
8
 
9
- 要求 → 憲章 → 設計・ADR → 実装 → 追跡可能性 → 品質根拠、という
10
- 仕様駆動開発(SDD)を、8つの Skills と決定的な検証エンジンで支援します。
11
- 形式的整合性検査、コンパイラによる依存解析、ローカル知識検索も含みます。
9
+ GitHub Copilotは、計画、コード生成、編集、テスト、レビューを実行できます。
10
+ musubix3は、repository-localな仕様と、設定した品質プロファイルが要求する
11
+ 根拠を決定的かつfail-closedに検査する仕組みを追加します。
12
+ 要求 → 憲章 → 設計・ADR → 実装 → 追跡可能性 → 品質根拠を、
13
+ 8つのSkillsと検証CLIで接続します。
12
14
 
13
15
  [musubix2](https://github.com/nahisaho/musubix2) の考え方を学び、3つの
14
16
  ワークスペースで新規実装しています。成果物の互換性・移行機能はありません。
15
17
  ID の接続や SAT 判定だけで、実装の正しさを保証するものではありません。
16
18
 
19
+ ## GitHub Copilotだけでは足りない理由
20
+
21
+ Copilotは実装を担うエンジンです。要求を理解し、repositoryを調査し、計画を立て、
22
+ ファイルを編集し、toolを実行して結果を説明します。これは不可欠ですが、
23
+ 会話が成功したことだけでは、次を継続的に証明できません。
24
+
25
+ - 実装した振る舞いが、明示的で測定可能な要求と一致しているか
26
+ - すべての要求が設計、コード、正本テストまで接続されているか
27
+ - テストを書き換えず、本当にRedが先に失敗してGreenが成功したか
28
+ - test、graph、formal、qualityの結果が現在のsourceに対して新鮮か
29
+ - 要求変更が影響する成果物へ正しい順序で伝播したか
30
+ - 最終gateを通すためにpolicyを弱めていないか
31
+
32
+ 「テストは成功しました」「実装は完了しました」という会話上の報告は、
33
+ 古くなる、範囲が不足する、repository外で失われる可能性があります。
34
+ 推論と開発はCopilotへ任せたまま、musubix3が完了条件を永続化し、
35
+ 機械検証できる形へ変換します。
36
+
37
+ | GitHub Copilotが提供するもの | musubix3が補完するもの |
38
+ |---|---|
39
+ | 計画、実装、refactor、tool実行 | 明示的な要求、設計判断、実装link、完了条件を要求するrepository-local SDD Skills |
40
+ | テスト生成とtest runner実行 | 構造化TEST ID、native report正規化、検証可能なRed/Green/Refactor証拠 |
41
+ | 変更内容の説明 | 要求 → 設計 → コード → テストの型付きtraceと双方向impact解析 |
42
+ | repository調査 | 決定的なCode Graph、未解決local dependency診断、architecture gate |
43
+ | 制約・不変条件の提案 | 任意のZ3/Lean整合性検査と、形式モデルから成功テストまでの対応検査 |
44
+ | session単位の完了報告 | freshness、fingerprint、input stability、保護されたpolicy baseline、attestation、fail-closedなready判定 |
45
+
46
+ musubix3はCopilotを置き換えず、別のcoding agentも追加しません。
47
+ SATだから実装が正しいとも主張しません。開発はCopilotが実行し、
48
+ musubix3は仕様を残し、必須証拠を検査し、古い・不完全な必須証拠を拒否して、
49
+ 「なぜ設定したpolicyがこの変更をreadyと判断したのか」をreview可能な形で
50
+ repositoryへ残します。
51
+
17
52
  ## クイックスタート
18
53
 
19
- 対象プロジェクトで、公開済みパッケージを実行します。
54
+ 再現可能なproject-local環境として、exact versionを導入します。
20
55
 
21
56
  ```sh
22
- npx musubix3@0.1.2 --version
23
- npx musubix3@0.1.2 init --dry-run
24
- npx musubix3@0.1.2 init
57
+ npm install --save-dev --save-exact musubix3@latest
58
+ npx --no-install musubix3 --version
59
+ npx --no-install musubix3 init --dry-run
60
+ npx --no-install musubix3 init
25
61
  copilot
26
62
  ```
27
63
 
28
- バージョンを固定してプロジェクトへインストールする場合は、次を実行します。
64
+ 継続利用するSkill内CLIのversionを固定しない、単発評価だけなら次を使えます。
29
65
 
30
66
  ```sh
31
- npm install --save-dev --save-exact musubix3@0.1.2
32
- npx --no-install musubix3 --version
33
- npx --no-install musubix3 init --dry-run
34
- npx --no-install musubix3 init
67
+ npx musubix3@latest --version
68
+ npx musubix3@latest init --dry-run
35
69
  ```
36
70
 
71
+ 生成されたSkillsを継続開発で使う前にexact local dependencyを導入してください。
72
+ Skillsのコマンドはrepository-localな`npx --no-install musubix3`を使用します。
73
+
37
74
  リポジトリ自体をビルドする場合は、次を実行します。
38
75
 
39
76
  ```sh
@@ -44,7 +81,8 @@ npm run build
44
81
  node dist/packages/cli/src/main.js --help
45
82
  ```
46
83
 
47
- Copilot に「sdd-requirements でこの機能の要求を定義し、設計を計画して」と依頼します。
84
+ Copilot に「sdd-changeを使ってこの機能を追加し、仕様、実装、追跡可能性、
85
+ 品質ゲートまで一貫して反映して」と依頼します。
48
86
  すべての Skills は入力言語(日本語・英語)に合わせてガイダンスを生成します。
49
87
 
50
88
  `init`(別名 `install`)は Skills と雛形を配置し、既存ファイルを保持します。
@@ -73,7 +111,8 @@ copilot plugin install nahisaho/musubix3
73
111
 
74
112
  `npx musubix3 plugin-install` は `copilot plugin install <package-root>` を実行する
75
113
  だけで、Copilot 内部を編集しません。永続的なローカルパスには
76
- `npm install --save-dev musubix3` と `npx --no-install musubix3 plugin-install` を推奨します。
114
+ `npm install --save-dev --save-exact musubix3@latest` と
115
+ `npx --no-install musubix3 plugin-install` を推奨します。
77
116
  一時的な npx キャッシュのパスに依存しないでください。
78
117
 
79
118
  ### ネイティブマーケットプレイス
@@ -91,7 +130,8 @@ copilot plugin marketplace add ./musubix3
91
130
 
92
131
  ### リポジトリ内 Skills / npm インストーラー
93
132
 
94
- 対象リポジトリで `npx musubix3 init` を実行するか、
133
+ exact local dependencyの導入後に対象リポジトリで
134
+ `npx --no-install musubix3 init`を実行するか、
95
135
  `.github/skills/sdd-*` をコピーし、その信頼済みプロジェクトで Copilot を起動します。
96
136
  `--root <dir>` で対象を指定でき、`--feature <slug>` は雛形のディレクトリ名と
97
137
  ID 接頭辞を変えます。別機能の追加でも既存設定はリセットしません。
@@ -181,8 +221,10 @@ npx musubix3 status --json
181
221
  | `model-correspondence validate` | Formal JSON→生成trace→正本passing testの証拠を再検証 |
182
222
  | `evidence refresh [--changed]` | 同じfail-closed gate pipelineで派生証拠を再生成 |
183
223
  | `mutation validate` | 要求scopeのschema-v1 killed-mutant証拠を再検証 |
224
+ | `tdd validate` | 保存済みRed/Green/Refactorの順序、指紋、実行時間、hash-chainを検証 |
184
225
  | `tdd red\|green\|refactor <TEST-ID> --requirement <REQ-ID> --command <name>` | 検証可能なTDDフェーズを実行・記録 |
185
226
  | `workflow-record <skill> <phase> --status <status>` | 自己申告のworkflow宣言を記録 |
227
+ | `workflow-sanitize <copilot.jsonl> <output-file> [--session-id <uuid>]` | reviewやstrict検証前にmessageとSkill以外のtool dataを除去 |
186
228
  | `workflow-verify <copilot.jsonl> [--strict] [--session-id <uuid>]` | Skillイベントを照合し、任意で完全な成功session transcriptを要求 |
187
229
  | `attestation oidc-audience --key-id <id> [--public-key-file <pem>]` | 署名鍵を許可するGitHub custom audienceを導出 |
188
230
  | `attestation payload --provider <name> --run-id <id> --key-id <id> [--public-key-file <pem>] [--github-oidc-token-file <jwt>]` | 外部署名用の正規化CI payloadを出力 |
@@ -217,7 +259,7 @@ workflow証拠があれば`workflow`、TDD証拠があれば`tdd`が自動的に
217
259
  changes.json # 変更checkpoint
218
260
  order.json # TDD/change共通の単調chronology ledger
219
261
  performance.json # 決定的operation budget観測
220
- model-correspondence.json # Formal model→trace→fresh passing test証明
262
+ model-correspondence.json # Formal model→trace→fresh passing testの対応証拠
221
263
  mutation.json # freshな要求scope mutation実行証拠
222
264
  attestation.json # 任意の外部署名済みCI provenance
223
265
  cache/ # Git除外。索引とsolver入力
@@ -279,10 +321,12 @@ feature: auth
279
321
  `ADRs` / `Depends-On`。ADR には背景・採用案・却下案・結果を記録します。
280
322
  C4-like 図は明示した内容だけを描画し、完全な C4 モデルを推論しません。
281
323
 
282
- JS/TS、Rust、Python、Go、Java/Kotlin、C/C++、C#、Ruby、PHP、Swift の
283
324
  正本となるコード・テストに、エンティティごとに1つのコメントを追加します。
284
- JS/TS では文字列中の記載をリンクとして扱いません。その他の言語では行コメント
285
- またはブロックコメントを使用します。網羅率だけを満たす代理 JS/TS ファイルは作成しません。
325
+ JS/TSはparser-awareなcomment位置を使い、Haskellは`--`と`{- ... -}`、
326
+ Luaは`--`と`--[[ ... ]]`、Visual Basicは`'''` XML documentを含む
327
+ apostrophe commentを扱います。これらは文字列中の記載をリンクとして扱いません。
328
+ その他の言語では対応する行commentまたはblock commentを使用します。
329
+ 網羅率だけを満たす代理JS/TSファイルは作成しません。
286
330
 
287
331
  ```ts
288
332
  /** @id CODE-AUTH-001
@@ -377,8 +421,10 @@ glob は `*` / `**` / `?` に対応し、外部依存は `npm:` 接頭辞で表
377
421
  `tdd.redPreflightCommands`にはformatter等のplain command名を指定でき、
378
422
  Redのtest fingerprintを取得する前に成功が必須です。
379
423
  通常ファイルの`pyvenv.cfg`を含む`.venv`と`venv`はsnapshotと
380
- Code Graphから除外されますが、任意のsource directoryにmarkerを置いても
381
- 除外されません。
424
+ Code Graphから除外されます。Gradle `.gradle/`、Dart `.dart_tool/`、
425
+ SwiftPM `.build/`、Zig `.zig-cache/`/`zig-out/`、.NET `.dotnet/`は、
426
+ 親directoryに対応manifestがある場合だけ除外されます。同名の任意source
427
+ directoryは追跡対象のままです。
382
428
  `codeGraph.mode` の既定値は `compatible` で、未解決の計算された
383
429
  `import()` / `require()` は警告です。`strict` にするとグラフゲートを阻止する
384
430
  エラーになります。信頼済みbaselineが `strict` の場合、`compatible` への
@@ -411,12 +457,14 @@ strict OIDC identity/key binding、必須コマンド名の最低条件です。
411
457
  コマンド未設定は skipped です。
412
458
 
413
459
  TDD用コマンドには明示的な`tddArgs`と`tddReport`、または組込みの
414
- `vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit` adapterが必要です。
460
+ `vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit`、`dotnet` adapterが必要です。
415
461
  明示設定を優先し、adapterは対象引数を導出してnative JSON/JSONL/XMLを正規化します。
416
462
  Vitest/Jestの無関係なskipped結果は対象TDDから除外します。pytestにはJSON pluginと
417
463
  `test_TEST_APP_001`形式、Goには`TEST-*`名のsubtest、Cargoには`test_app_001`形式、
418
- JUnitには正確な`@Tag("TEST-APP-001")`とIDをunderscore形式で含むmethod名が必要で、
419
- launcherのXML report directoryを読み取ります。各フェーズ前に旧レポートを削除し、
464
+ JUnitには正確な`@Tag("TEST-APP-001")`と、IDを含むmethod名または`@DisplayName`を推奨します。
465
+ 正規化処理はtestcase属性とJUnit Platformのdisplay-name出力の両方を読み取り、
466
+ xUnitには`[Fact(DisplayName = "TEST-APP-001 ...")]`が必要です。
467
+ それぞれXMLまたはTRX report directoryを読み取ります。各フェーズ前に旧レポートを削除し、
420
468
  必要なreport親directoryを作成して、対象テストだけを含むfreshな `musubix-json` を要求します。Redは `failed`、
421
469
  Green/Refactorは `passed` のみ有効で、`skipped`、`error`、未生成、不正形式は失敗です。
422
470
  Green前にはテスト以外のプロジェクト入力が変更されている必要があります。
@@ -427,10 +475,11 @@ TDDと変更checkpointは共通の単調order ledgerを持ち、Red/Green境界
427
475
  明示的なmigration診断で失敗します。欠落・並べ替え・改変・孤立レコードは
428
476
  証拠を無効にします。
429
477
 
430
- CIでは6種類すべてについて独立したnative contractを実行します。Vitest、Jest、
478
+ CIではVitest、Jest、
431
479
  `pytest-json-report`付きpytest、Go test、Cargo test、固定版JUnit Platform Consoleの
432
480
  各fixtureに無関係な失敗テストを置き、生成selectorが対象IDだけを実行し、実際のnative
433
- reportを正規化できることを検証します。Jestは開発時依存だけであり、Python、
481
+ reportを正規化できることを検証します。.NET adapterは標準TRXを読み取り、
482
+ C#アプリ実験とunit contractで追加検証します。Jestは開発時依存だけであり、Python、
434
483
  Go/Rust、Java/JUnitのtoolingはCIでのみ準備され、packageのruntime依存には含まれません。
435
484
 
436
485
  変更checkpointは各変更要件にリンクした実装とCode Graph上の依存だけを指紋化するため、
@@ -470,6 +519,8 @@ mutation/model-correspondenceのsemantic headはattestationに含まれ、元の
470
519
  `workflow-verify` はCopilot JSONLからSkill発火メタデータだけを取り込み、完了宣言ごとに
471
520
  異なる成功完了tool callを順序付きで1対1対応させます。未完了、失敗、再利用、順序違反、
472
521
  後からの宣言変更は失敗です。
522
+ 元transcriptにmessage、Skill以外のtool引数、outputが含まれる場合は、
523
+ review evidenceへ入れる前に`workflow-sanitize`で必要最小限へ変換します。
473
524
  したがって各Skill発火は最終workflow outcomeを1件だけ記録し、複数phaseのchronologyは
474
525
  重複workflow eventではなく`change-record`に記録します。
475
526
  `"workflow":{"mode":"strict"}`または`--strict`では、全非空行のJSON、
@@ -482,7 +533,8 @@ terminal transcriptの古さと未来方向clock skewも制限します。
482
533
  並行eventはtimestamp順で出力されない場合があるため、全体sortではなくtool/resultの
483
534
  因果順序を検査します。
484
535
  gate実行中に入力が変わった場合、`input-stability`は追加・変更・削除された各pathと
485
- 前後のSHA-256を報告します。Cargo/Mavenの標準`target/`は除外しますが、
536
+ 前後のSHA-256を報告します。Cargo/Mavenの標準`target/`、manifest直下の
537
+ .NET `bin/`と`obj/`、project-local `.nuget/packages/`は除外しますが、
486
538
  source相当の生成入力はfail-closedのままです。組込みadapterは対象test選択とreport引数を
487
539
  所有します。Cargo/Goの既存設定にある先頭`test`は安全に統合し、
488
540
  `--json-report`など競合するreport引数は早期拒否します。
@@ -526,10 +578,13 @@ skipped/unsigned-localではなくfailed/missingとして報告します。
526
578
  }
527
579
  ```
528
580
 
529
- Ed25519鍵はmusubix3外で生成し、公開PEMだけを`attestation oidc-audience`へ渡します。
581
+ 通常のCLI利用ではEd25519鍵をmusubix3外で生成し、公開PEMだけを
582
+ `attestation oidc-audience`へ渡します。
530
583
  その完全一致audienceでGitHub Actions OIDC tokenを要求し、公開PEMとJWT fileを
531
- `attestation payload`へ渡して、出力payloadを外部で署名します。musubix3は秘密鍵を
532
- 読み取りも保存もしません。短命JWTは署名済みattestationに含まれ、現在時刻で期限を
584
+ `attestation payload`へ渡して、出力payloadを外部で署名します。`musubix3` CLIは
585
+ 秘密鍵を受け取らず、読み取りも保存もしません。このrepositoryのrelease専用automationは
586
+ 別途ephemeral private keyを無視対象の`.test-work`内に生成して署名へ使用し、
587
+ CLI検証を呼び出す前に削除します。短命JWTは署名済みattestationに含まれ、現在時刻で期限を
533
588
  検査するため、有効期間内に検証する必要があります。これはGitHub OIDC identityが
534
589
  署名鍵と記載claimを認可したことを示しますが、runnerの任意動作やworkflowの意味的正しさ
535
590
  までは証明しません。workflow evidence headは別途transcript/sessionを署名へ束縛します。
@@ -565,19 +620,25 @@ Ed25519鍵はmusubix3外で生成し、公開PEMだけを`attestation oidc-audie
565
620
  シンボル影響は保守的な**ファイル単位**の逆依存になります。
566
621
  非リテラル読み込みは既定では警告ですが、`codeGraph.mode: "strict"` では
567
622
  グラフゲートを阻止します。未解決外部パッケージは警告、未解決ローカル参照はエラー。
568
- Rust、Python、Go、Java、C/C++、C#、PHP、R、Juliaはローカル
569
- import/module/include/source、宣言、直接呼び出しを保守的に解析します。
570
- その他の言語は未対応として報告します。他言語用の代理 JS/TS ファイルは
571
- 作成しません。
572
- bundler 独自解決、リフレクションは対象外です。
623
+ bundler 独自解決とリフレクションは対象外です。Rust、Python、Go、Java、
624
+ Kotlin、C/C++、Objective-C/Objective-C++、C#、F#、Visual Basic .NET、
625
+ Ruby、PHP、Swift、Dart、Scala、Elixir、Haskell、Lua、Zig、Solidity、R、
626
+ Juliaはローカルimport/module/include/source、宣言、直接呼び出しを
627
+ 保守的に解析します。その他の拡張子はグラフ入力に含めません。他言語用の
628
+ 代理 JS/TS ファイルは作成しません。
573
629
  build/cache/dependency と symlink は除外しますが、任意の `.gitignore` は
574
630
  スキャンフィルターとして読みません。
631
+ - 残るarchitecture改善には、実測根拠を伴うstrict call-resolution ratio policyと、
632
+ より広いnative test-runner adapter対応があります。このreleaseでは推測的に
633
+ 有効化しません。
575
634
  - 検索は **TF-IDF/cosine** であり GraphRAG でも意味推論でもありません。
576
635
  日本語は文字 bigram。Git 根拠は最大100コミット・各30ファイルで、共変更は相関、
577
636
  著者別ディレクトリ件数は貢献の記録であって因果や専門性ではありません。
578
637
  履歴がない場合は明示的に skipped。外部サービスへは送信しません。
579
- - Node 20 と Node 24(現行LTS)をCI対象とし、Linuxで検証します。
580
- Windowsの実行ラッパー・プロセスツリー停止はRC保証対象外です。
638
+ - Core CIはNode 22をLinux、Windows、macOSで実行し、LinuxではNode 20と
639
+ Node 24の互換性も追加確認します。native adapterとformal solverの統合は、
640
+ 固定toolchainを使ってLinuxで実行します。
641
+ Windowsの実行ラッパーとprocess tree停止にはplatform固有の差があります。
581
642
  ESLintは追加せず、strict TypeScript と既存テストで検証します。
582
643
 
583
644
  ## 開発・リリース検査
@@ -595,9 +656,29 @@ npm run pack:smoke
595
656
  `packages/domain` は純粋な検証、`packages/analysis` は根拠・コンパイラ・
596
657
  ファイルシステム、`packages/cli` はコマンドと配置を担当します。
597
658
  ビルド出力は `dist/packages/**`。npm パッケージには隠しSkills、プラグイン定義、
598
- CLI、モジュール、雛形が明示的に含まれます。CI は Node 20/24 を検証します。
659
+ CLI、モジュール、雛形が明示的に含まれます。Core CIはNode 22をLinux、Windows、
660
+ macOSで実行し、LinuxではNode 20/24の互換性も検証します。native adapterと
661
+ formal solverは固定toolchainを使ってLinuxで統合検証します。
599
662
  `pack:smoke` は実際のtarballを `.test-work/` 内の独立した利用側プロジェクトへ
600
663
  導入し、実行ファイル・ESM export・配置を確認してから削除します。
601
664
  attestation APIは`musubix3/analysis`と専用`musubix3/attestation` exportの
602
665
  両方から利用できます。
666
+
667
+ `v*` tagは`.github/workflows/release.yml`を起動します。workflowはtagと
668
+ package/plugin versionの一致を検証し、Linux上のnative/formal suiteを実行して、
669
+ npm tarball、CycloneDX SBOM、SHA256SUMS、GitHub Releaseを生成します。
670
+ `npm publish --provenance --access public`は保護された`npm-publish` environmentで
671
+ 別途承認されます。npm Trusted Publishingを優先し、任意の`NPM_TOKEN` environment
672
+ secretも利用できます。npm publishがpendingまたは失敗してもGitHub Release作成結果を
673
+ 成功に見せかけず、各jobの状態を独立して確認できます。手動実行ではrelease tagを
674
+ workflow refとして選び、同じ値を`release_tag`へ指定します。tagがOIDCに束縛された
675
+ `GITHUB_SHA`を指していなければworkflowは拒否します。
676
+
677
+ release attestationは、ephemeral Ed25519公開鍵をcustom audienceへ束縛した
678
+ GitHub Actions OIDC tokenを使用します。署名対象にはrepository、Git commit、
679
+ run ID、workflow/ref identity、workspace snapshot、存在するmusubix evidence headが
680
+ 含まれます。release automationは`.test-work`内のprivate keyで署名した後、
681
+ CLI検証前に削除し、署名済みattestationだけをuploadします。署名だけでtest semanticsが
682
+ 正しいとは主張せず、testとsolverは先行するrelease validation jobで検査します。
683
+
603
684
  [CONTRIBUTING.md](CONTRIBUTING.md) と [CHANGELOG.md](CHANGELOG.md) も参照してください。