musubix3 0.1.2 → 0.1.3

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 (34) hide show
  1. package/.github/plugin/marketplace.json +2 -2
  2. package/.github/skills/sdd-formal-codegraph/SKILL.md +6 -6
  3. package/.github/skills/sdd-implementation/SKILL.md +2 -2
  4. package/.github/skills/sdd-quality/SKILL.md +3 -3
  5. package/.github/skills/sdd-traceability/SKILL.md +6 -2
  6. package/CHANGELOG.md +24 -0
  7. package/README-ja.md +70 -24
  8. package/README.md +75 -27
  9. package/dist/packages/analysis/src/adapters.js +128 -5
  10. package/dist/packages/analysis/src/adapters.js.map +1 -1
  11. package/dist/packages/analysis/src/config.d.ts +1 -1
  12. package/dist/packages/analysis/src/config.js +3 -2
  13. package/dist/packages/analysis/src/config.js.map +1 -1
  14. package/dist/packages/analysis/src/files.js +13 -1
  15. package/dist/packages/analysis/src/files.js.map +1 -1
  16. package/dist/packages/analysis/src/graph.d.ts +1 -0
  17. package/dist/packages/analysis/src/graph.js +673 -10
  18. package/dist/packages/analysis/src/graph.js.map +1 -1
  19. package/dist/packages/analysis/src/model-correspondence.js +5 -5
  20. package/dist/packages/analysis/src/model-correspondence.js.map +1 -1
  21. package/dist/packages/analysis/src/mutation.d.ts +1 -1
  22. package/dist/packages/analysis/src/mutation.js +11 -2
  23. package/dist/packages/analysis/src/mutation.js.map +1 -1
  24. package/dist/packages/analysis/src/performance.js +3 -5
  25. package/dist/packages/analysis/src/performance.js.map +1 -1
  26. package/dist/packages/analysis/src/trace.js +60 -8
  27. package/dist/packages/analysis/src/trace.js.map +1 -1
  28. package/dist/packages/analysis/src/workflow.js +1 -1
  29. package/dist/packages/cli/src/main.js +1 -1
  30. package/dist/packages/domain/src/constitution.d.ts +1 -1
  31. package/dist/packages/domain/src/constitution.js +1 -0
  32. package/dist/packages/domain/src/constitution.js.map +1 -1
  33. package/package.json +1 -1
  34. 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.3"
7
7
  },
8
8
  "plugins": [
9
9
  {
10
10
  "name": "musubix3",
11
11
  "source": ".",
12
- "version": "0.1.2",
12
+ "version": "0.1.3",
13
13
  "description": "Evidence-driven SDD without duplicating native Copilot capabilities."
14
14
  }
15
15
  ]
@@ -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.
@@ -14,7 +14,7 @@ completed` exactly once.
14
14
  explicit independent approval. Use only the exact `musubix3` CLI; never
15
15
  substitute similarly named npm packages.
16
16
  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
17
+ custom report or a built-in Vitest/Jest, pytest, Go test, Cargo, JUnit or .NET
18
18
  adapter. Require executable native adapter contracts in CI; JUnit targets use
19
19
  an exact `@Tag("TEST-*")`, and pytest requires `pytest-json-report`. Review
20
20
  `requiredChecks`, `qualityProfile`, coverage thresholds and architecture rules.
@@ -27,8 +27,8 @@ completed` exactly once.
27
27
  `evidence refresh --json` runs the same fail-closed pipeline. If `input-stability` fails,
28
28
  inspect its per-path added/modified/deleted diagnostics and stop generators
29
29
  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
30
+ including manifest-scoped Cargo/Maven `target/`, .NET `bin`/`obj`, project-local
31
+ `.nuget/packages`, and `.venv` or `venv` roots with a regular `pyvenv.cfg`, are excluded; arbitrary source
32
32
  directories and source-like generated inputs are not silently ignored.
33
33
  Changed mode reports Git changes and dependent files but conservatively runs
34
34
  all checks, including commands. It never treats unrun checks as successful.
@@ -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,30 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.1.3 - 2026-09-08
6
+
7
+ - Add a built-in `dotnet` test adapter with xUnit `DisplayName` targeting and
8
+ recursive TRX result normalization.
9
+ - Exclude manifest-scoped .NET `bin/` and `obj/` output plus the conventional
10
+ project-local `.nuget/packages/` cache from snapshots and Code Graph indexing.
11
+ - Exclude Gradle `.gradle/`, Dart `.dart_tool/`, SwiftPM `.build/`, Zig
12
+ `.zig-cache/`/`zig-out/`, and .NET `.dotnet/` CLI homes only when a nearby
13
+ ecosystem manifest identifies them as generated project state.
14
+ - Detect C#/.NET projects in `mutation doctor` and safely probe a pinned local
15
+ Stryker.NET tool manifest without installing or downloading tools.
16
+ - Add conservative Code Graph adapters for Kotlin, Ruby, Swift, Dart, Scala,
17
+ Elixir, Haskell, Lua, Zig, Solidity, Objective-C/Objective-C++, F# and
18
+ Visual Basic .NET, including local dependencies, declarations and direct calls.
19
+ - Add Haskell, Lua, and Visual Basic trace-comment extraction with string
20
+ masking, and expose annotated/executed test identity counts as constitution
21
+ metrics.
22
+ - Reduce native Code Graph false positives and improve Scala, Visual Basic,
23
+ Julia, PHP, Swift, Dart, Haskell, and Objective-C resolution precision.
24
+ - Normalize JUnit identities from `system-out` display names independently of
25
+ XML attribute order, and recognize nested F# `(* ... *)` trace comments.
26
+ - Validate large applications across all 23 supported language groups: 475
27
+ authored implementation files and 345 traced native tests, all gate-ready.
28
+
5
29
  ## 0.1.2 - 2026-09-07
6
30
 
7
31
  - Exclude conventional `.venv` and `venv` Python environments identified by a
package/README-ja.md CHANGED
@@ -1,34 +1,68 @@
1
1
  # musubix3
2
2
 
3
- **最新公開版 v0.1.2 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
3
+ **最新リリース v0.1.3 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
4
4
 
5
5
  [English](README.md)
6
6
 
7
7
  [musubix2 から musubix3 で変わったこと](MUSUBIX2-TO-MUSUBIX3.md)
8
8
 
9
- 要求 → 憲章 → 設計・ADR → 実装 → 追跡可能性 → 品質根拠、という
10
- 仕様駆動開発(SDD)を、8つの Skills と決定的な検証エンジンで支援します。
11
- 形式的整合性検査、コンパイラによる依存解析、ローカル知識検索も含みます。
9
+ GitHub Copilotは、計画、コード生成、編集、テスト、レビューを実行できます。
10
+ musubix3は、その作業を本当に完了と判断するためのrepository-localな仕様と
11
+ 決定的な証拠を追加します。
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
+ 「なぜこの変更をreadyと判断できるのか」をreview可能な形でrepositoryへ残します。
50
+
17
51
  ## クイックスタート
18
52
 
19
53
  対象プロジェクトで、公開済みパッケージを実行します。
20
54
 
21
55
  ```sh
22
- npx musubix3@0.1.2 --version
23
- npx musubix3@0.1.2 init --dry-run
24
- npx musubix3@0.1.2 init
56
+ npx musubix3@0.1.3 --version
57
+ npx musubix3@0.1.3 init --dry-run
58
+ npx musubix3@0.1.3 init
25
59
  copilot
26
60
  ```
27
61
 
28
62
  バージョンを固定してプロジェクトへインストールする場合は、次を実行します。
29
63
 
30
64
  ```sh
31
- npm install --save-dev --save-exact musubix3@0.1.2
65
+ npm install --save-dev --save-exact musubix3@0.1.3
32
66
  npx --no-install musubix3 --version
33
67
  npx --no-install musubix3 init --dry-run
34
68
  npx --no-install musubix3 init
@@ -279,10 +313,12 @@ feature: auth
279
313
  `ADRs` / `Depends-On`。ADR には背景・採用案・却下案・結果を記録します。
280
314
  C4-like 図は明示した内容だけを描画し、完全な C4 モデルを推論しません。
281
315
 
282
- JS/TS、Rust、Python、Go、Java/Kotlin、C/C++、C#、Ruby、PHP、Swift の
283
316
  正本となるコード・テストに、エンティティごとに1つのコメントを追加します。
284
- JS/TS では文字列中の記載をリンクとして扱いません。その他の言語では行コメント
285
- またはブロックコメントを使用します。網羅率だけを満たす代理 JS/TS ファイルは作成しません。
317
+ JS/TSはparser-awareなcomment位置を使い、Haskellは`--`と`{- ... -}`、
318
+ Luaは`--`と`--[[ ... ]]`、Visual Basicは`'''` XML documentを含む
319
+ apostrophe commentを扱います。これらは文字列中の記載をリンクとして扱いません。
320
+ その他の言語では対応する行commentまたはblock commentを使用します。
321
+ 網羅率だけを満たす代理JS/TSファイルは作成しません。
286
322
 
287
323
  ```ts
288
324
  /** @id CODE-AUTH-001
@@ -377,8 +413,10 @@ glob は `*` / `**` / `?` に対応し、外部依存は `npm:` 接頭辞で表
377
413
  `tdd.redPreflightCommands`にはformatter等のplain command名を指定でき、
378
414
  Redのtest fingerprintを取得する前に成功が必須です。
379
415
  通常ファイルの`pyvenv.cfg`を含む`.venv`と`venv`はsnapshotと
380
- Code Graphから除外されますが、任意のsource directoryにmarkerを置いても
381
- 除外されません。
416
+ Code Graphから除外されます。Gradle `.gradle/`、Dart `.dart_tool/`、
417
+ SwiftPM `.build/`、Zig `.zig-cache/`/`zig-out/`、.NET `.dotnet/`は、
418
+ 親directoryに対応manifestがある場合だけ除外されます。同名の任意source
419
+ directoryは追跡対象のままです。
382
420
  `codeGraph.mode` の既定値は `compatible` で、未解決の計算された
383
421
  `import()` / `require()` は警告です。`strict` にするとグラフゲートを阻止する
384
422
  エラーになります。信頼済みbaselineが `strict` の場合、`compatible` への
@@ -411,12 +449,14 @@ strict OIDC identity/key binding、必須コマンド名の最低条件です。
411
449
  コマンド未設定は skipped です。
412
450
 
413
451
  TDD用コマンドには明示的な`tddArgs`と`tddReport`、または組込みの
414
- `vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit` adapterが必要です。
452
+ `vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit`、`dotnet` adapterが必要です。
415
453
  明示設定を優先し、adapterは対象引数を導出してnative JSON/JSONL/XMLを正規化します。
416
454
  Vitest/Jestの無関係なskipped結果は対象TDDから除外します。pytestにはJSON pluginと
417
455
  `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を読み取ります。各フェーズ前に旧レポートを削除し、
456
+ JUnitには正確な`@Tag("TEST-APP-001")`と、IDを含むmethod名または`@DisplayName`を推奨します。
457
+ 正規化処理はtestcase属性とJUnit Platformのdisplay-name出力の両方を読み取り、
458
+ xUnitには`[Fact(DisplayName = "TEST-APP-001 ...")]`が必要です。
459
+ それぞれXMLまたはTRX report directoryを読み取ります。各フェーズ前に旧レポートを削除し、
420
460
  必要なreport親directoryを作成して、対象テストだけを含むfreshな `musubix-json` を要求します。Redは `failed`、
421
461
  Green/Refactorは `passed` のみ有効で、`skipped`、`error`、未生成、不正形式は失敗です。
422
462
  Green前にはテスト以外のプロジェクト入力が変更されている必要があります。
@@ -427,10 +467,11 @@ TDDと変更checkpointは共通の単調order ledgerを持ち、Red/Green境界
427
467
  明示的なmigration診断で失敗します。欠落・並べ替え・改変・孤立レコードは
428
468
  証拠を無効にします。
429
469
 
430
- CIでは6種類すべてについて独立したnative contractを実行します。Vitest、Jest、
470
+ CIではVitest、Jest、
431
471
  `pytest-json-report`付きpytest、Go test、Cargo test、固定版JUnit Platform Consoleの
432
472
  各fixtureに無関係な失敗テストを置き、生成selectorが対象IDだけを実行し、実際のnative
433
- reportを正規化できることを検証します。Jestは開発時依存だけであり、Python、
473
+ reportを正規化できることを検証します。.NET adapterは標準TRXを読み取り、
474
+ C#アプリ実験とunit contractで追加検証します。Jestは開発時依存だけであり、Python、
434
475
  Go/Rust、Java/JUnitのtoolingはCIでのみ準備され、packageのruntime依存には含まれません。
435
476
 
436
477
  変更checkpointは各変更要件にリンクした実装とCode Graph上の依存だけを指紋化するため、
@@ -482,7 +523,8 @@ terminal transcriptの古さと未来方向clock skewも制限します。
482
523
  並行eventはtimestamp順で出力されない場合があるため、全体sortではなくtool/resultの
483
524
  因果順序を検査します。
484
525
  gate実行中に入力が変わった場合、`input-stability`は追加・変更・削除された各pathと
485
- 前後のSHA-256を報告します。Cargo/Mavenの標準`target/`は除外しますが、
526
+ 前後のSHA-256を報告します。Cargo/Mavenの標準`target/`、manifest直下の
527
+ .NET `bin/`と`obj/`、project-local `.nuget/packages/`は除外しますが、
486
528
  source相当の生成入力はfail-closedのままです。組込みadapterは対象test選択とreport引数を
487
529
  所有します。Cargo/Goの既存設定にある先頭`test`は安全に統合し、
488
530
  `--json-report`など競合するreport引数は早期拒否します。
@@ -565,13 +607,17 @@ Ed25519鍵はmusubix3外で生成し、公開PEMだけを`attestation oidc-audie
565
607
  シンボル影響は保守的な**ファイル単位**の逆依存になります。
566
608
  非リテラル読み込みは既定では警告ですが、`codeGraph.mode: "strict"` では
567
609
  グラフゲートを阻止します。未解決外部パッケージは警告、未解決ローカル参照はエラー。
568
- Rust、Python、Go、Java、C/C++、C#、PHP、R、Juliaはローカル
569
- import/module/include/source、宣言、直接呼び出しを保守的に解析します。
570
- その他の言語は未対応として報告します。他言語用の代理 JS/TS ファイルは
571
- 作成しません。
572
- bundler 独自解決、リフレクションは対象外です。
610
+ bundler 独自解決とリフレクションは対象外です。Rust、Python、Go、Java、
611
+ Kotlin、C/C++、Objective-C/Objective-C++、C#、F#、Visual Basic .NET、
612
+ Ruby、PHP、Swift、Dart、Scala、Elixir、Haskell、Lua、Zig、Solidity、R、
613
+ Juliaはローカルimport/module/include/source、宣言、直接呼び出しを
614
+ 保守的に解析します。その他の拡張子はグラフ入力に含めません。他言語用の
615
+ 代理 JS/TS ファイルは作成しません。
573
616
  build/cache/dependency と symlink は除外しますが、任意の `.gitignore` は
574
617
  スキャンフィルターとして読みません。
618
+ - 残るarchitecture改善には、実測根拠を伴うstrict call-resolution ratio policyと、
619
+ より広いnative test-runner adapter対応があります。このreleaseでは推測的に
620
+ 有効化しません。
575
621
  - 検索は **TF-IDF/cosine** であり GraphRAG でも意味推論でもありません。
576
622
  日本語は文字 bigram。Git 根拠は最大100コミット・各30ファイルで、共変更は相関、
577
623
  著者別ディレクトリ件数は貢献の記録であって因果や専門性ではありません。
package/README.md CHANGED
@@ -1,36 +1,70 @@
1
1
  # musubix3
2
2
 
3
- **Latest published v0.1.2 · GitHub Copilot CLI only · Node.js ≥20 · TypeScript · MIT**
3
+ **Latest release v0.1.3 · GitHub Copilot CLI only · Node.js ≥20 · TypeScript · MIT**
4
4
 
5
5
  [日本語](README-ja.md)
6
6
 
7
7
  [What changed from musubix2 to musubix3 (Japanese)](MUSUBIX2-TO-MUSUBIX3.md)
8
8
 
9
- Specification-driven development (SDD) skills backed by deterministic checks:
9
+ GitHub Copilot can plan, generate, edit, test, and review software. musubix3
10
+ adds the repository-local specifications and deterministic evidence needed to
11
+ decide whether that work is actually complete:
10
12
  requirements → constitution → design/ADRs → implementation → traceability →
11
- quality evidence. Optional formal consistency, compiler dependency analysis and
12
- local knowledge retrieval support the workflow.
13
+ quality evidence.
13
14
 
14
15
  Learned from [musubix2](https://github.com/nahisaho/musubix2)'s concepts, rebuilt
15
16
  cleanly in three workspaces. No artifact compatibility or migration is promised.
16
17
  This repository does **not** guarantee correctness simply because IDs are linked
17
18
  or requirements are satisfiable.
18
19
 
20
+ ## Why GitHub Copilot alone is not enough
21
+
22
+ Copilot is the implementation engine. It understands a request, explores the
23
+ repository, proposes a plan, edits files, runs tools, and explains the result.
24
+ That is necessary, but a successful conversation is not durable proof that:
25
+
26
+ - the implemented behavior matches an explicit, measurable requirement;
27
+ - every requirement is connected to design, code, and an authoritative test;
28
+ - Red really failed before Green passed without the test being rewritten;
29
+ - test, graph, formal, and quality results still match the current source;
30
+ - a requirement change propagated through all affected artifacts in order;
31
+ - a policy was not weakened merely to make the final gate pass.
32
+
33
+ Conversation text such as “tests passed” or “implementation complete” is not
34
+ enough because it can become stale, omit scope, or disappear outside the
35
+ repository. Copilot should remain responsible for reasoning and development;
36
+ musubix3 makes the completion criteria persistent and machine-checkable.
37
+
38
+ | GitHub Copilot provides | musubix3 complements it with |
39
+ |---|---|
40
+ | Planning, coding, refactoring, and tool execution | Repository-local SDD Skills that require explicit requirements, design decisions, implementation links, and completion conditions |
41
+ | Test generation and runner execution | Structured TEST identities, native-report normalization, and verified Red/Green/Refactor evidence |
42
+ | Explanations of what changed | Typed requirement → design → code → test traceability and bidirectional impact analysis |
43
+ | Repository exploration | Deterministic Code Graph indexing, unresolved-local dependency diagnostics, and architecture gates |
44
+ | Suggestions for constraints and invariants | Optional Z3/Lean consistency checks and model-to-passing-test correspondence |
45
+ | A session-level completion report | Freshness, fingerprints, input-stability checks, protected policy baselines, attestations, and a fail-closed readiness gate |
46
+
47
+ musubix3 does **not** replace Copilot, add another coding agent, or claim that
48
+ formal satisfiability proves implementation correctness. Copilot performs the
49
+ development; musubix3 records the specification, checks the evidence, rejects
50
+ stale or incomplete claims, and leaves a reviewable answer to “why is this
51
+ change ready?”
52
+
19
53
  ## Quick start
20
54
 
21
55
  Run the published package from the target project:
22
56
 
23
57
  ```sh
24
- npx musubix3@0.1.2 --version
25
- npx musubix3@0.1.2 init --dry-run
26
- npx musubix3@0.1.2 init
58
+ npx musubix3@0.1.3 --version
59
+ npx musubix3@0.1.3 init --dry-run
60
+ npx musubix3@0.1.3 init
27
61
  copilot
28
62
  ```
29
63
 
30
64
  For a reproducible project-local installation:
31
65
 
32
66
  ```sh
33
- npm install --save-dev --save-exact musubix3@0.1.2
67
+ npm install --save-dev --save-exact musubix3@0.1.3
34
68
  npx --no-install musubix3 --version
35
69
  npx --no-install musubix3 init --dry-run
36
70
  npx --no-install musubix3 init
@@ -279,9 +313,11 @@ Where/While/When clauses. Japanese controlled forms are documented in
279
313
  [README-ja.md](README-ja.md). These are syntax checks, not natural-language
280
314
  understanding; arbitrary prose is deliberately rejected.
281
315
 
282
- Source/test trace annotations are read from comments in JS/TS, Rust, Python, Go,
283
- Java/Kotlin, C/C++, C#, Ruby, PHP and Swift. JS/TS parsing excludes string
284
- literals; other languages require line or block comments:
316
+ Source/test trace annotations are read from language comments. JS/TS uses
317
+ parser-aware comment locations; Haskell supports `--` and `{- ... -}`, Lua
318
+ supports `--` and `--[[ ... ]]`, and Visual Basic supports apostrophe comments
319
+ including `'''` XML documentation. These scanners exclude string literals;
320
+ other languages require their supported line or block comments:
285
321
 
286
322
  ```ts
287
323
  /** @id CODE-AUTH-001
@@ -380,7 +416,10 @@ Use `tdd.redPreflightCommands` to reference plain configured formatter commands;
380
416
  they must pass before Red captures the authoritative test fingerprint.
381
417
  Conventional `.venv` and `venv` Python environments containing a regular
382
418
  `pyvenv.cfg` are excluded from source snapshots and Code Graph indexing.
383
- Arbitrary source directories containing that marker remain tracked.
419
+ Gradle `.gradle/`, Dart `.dart_tool/`, SwiftPM `.build/`, Zig
420
+ `.zig-cache/`/`zig-out/`, and .NET `.dotnet/` CLI homes are excluded only when
421
+ their parent contains the corresponding project manifest. Arbitrary same-named
422
+ source directories remain tracked.
384
423
  `codeGraph.mode` defaults to `compatible`, where unresolved computed
385
424
  `import()`/`require()` calls remain warnings. Set it to `strict` to make those
386
425
  diagnostics gate-blocking errors. A trusted strict policy baseline prevents
@@ -416,15 +455,18 @@ failure or skip blocks readiness regardless of `requiredChecks.commands`.
416
455
  Optional command failures are nonblocking unless a constitution rule rejects the
417
456
  measured count. No configured commands is skipped, not passed.
418
457
  TDD commands require either command-specific `tddArgs` plus a `tddReport`, or a
419
- built-in `vitest`, `jest`, `pytest`, `go-test`, `cargo`, or `junit` adapter.
458
+ built-in `vitest`, `jest`, `pytest`, `go-test`, `cargo`, `junit`, or `dotnet` adapter.
420
459
  Explicit custom configuration takes precedence. Adapters derive targeted
421
460
  arguments and normalize native JSON/JSONL/XML into `musubix-json`. Vitest/Jest
422
461
  reports may contain unrelated skipped tests; targeted TDD selects only the
423
462
  requested ID. pytest requires the JSON-report plugin and underscore-form test
424
463
  names such as `test_TEST_APP_001`. Go uses a `TEST-*` subtest name, Cargo uses a
425
- Rust identifier such as `test_app_001`. JUnit methods must carry an exact
426
- `@Tag("TEST-APP-001")`; keep the underscore-form ID in the method name so it is
427
- recoverable from the launcher's XML report. Before each phase, musubix3 deletes
464
+ Rust identifier such as `test_app_001`. JUnit methods should carry an exact
465
+ `@Tag("TEST-APP-001")` and an ID-bearing method name or `@DisplayName`; the
466
+ normalizer reads both testcase attributes and JUnit Platform display-name output.
467
+ xUnit tests use
468
+ `[Fact(DisplayName = "TEST-APP-001 ...")]` so TRX preserves the identity.
469
+ Before each phase, musubix3 deletes
428
470
  the previous report, creates any required report parent directory, and requires a fresh
429
471
  `musubix-json` document containing exactly the selected test. Its status must be
430
472
  `failed` during Red and `passed` during Green/Refactor; `skipped`, `error`,
@@ -437,9 +479,10 @@ informational. Legacy chronology without order evidence fails with an explicit
437
479
  migration diagnostic. Missing, reordered, altered or orphaned records invalidate
438
480
  the evidence.
439
481
 
440
- CI executes isolated native contracts for all six adapters: Vitest, Jest,
482
+ CI executes isolated native contracts for Vitest, Jest,
441
483
  pytest with `pytest-json-report`, Go test, Cargo test, and the pinned JUnit
442
- Platform Console. Each fixture contains an unrelated failing test, proving that
484
+ Platform Console. The .NET adapter consumes standard TRX and is additionally
485
+ validated by unit contracts and the C# application experiment. Each fixture contains an unrelated failing test, proving that
443
486
  the generated selector executes only the requested identity and that the real
444
487
  native report normalizes correctly. Jest is development-only; the Python,
445
488
  Go/Rust, and Java/JUnit tooling is provisioned only in CI and is not shipped as
@@ -510,8 +553,9 @@ Unrelated concurrent events may be emitted out of timestamp order, so strict mod
510
553
  checks causal tool/result ordering rather than imposing a global timestamp sort.
511
554
  If project inputs change while a gate is running, `input-stability` reports each
512
555
  added, modified, or deleted path with before/after SHA-256 values. Standard
513
- Cargo/Maven `target/` output is excluded, but source-like generated inputs remain
514
- fail-closed. Built-in adapters own their targeting and report arguments. A
556
+ Cargo/Maven `target/`, manifest-scoped .NET `bin/` and `obj/`, and project-local
557
+ `.nuget/packages/` output are excluded, but source-like generated inputs remain fail-closed.
558
+ Built-in adapters own their targeting and report arguments. A
515
559
  legacy leading Cargo/Go `test` subcommand is merged safely; conflicting report
516
560
  flags such as `--json-report` are rejected.
517
561
  Changes during a gate fail input stability; later source/config changes make
@@ -608,14 +652,18 @@ transcript/session fields into the Ed25519 signature.
608
652
  best-effort; symbol impact conservatively expands at **file** level. Nonliteral
609
653
  loading is a compatibility warning unless `codeGraph.mode` is `strict`, when
610
654
  it blocks graph gates; unresolved external packages remain warnings and
611
- unresolved local imports are errors. Bundler-specific resolution, reflection and other
612
- Rust, Python, Go, Java, C/C++, C#, PHP, R and Julia have conservative native
613
- adapters for local imports/modules/includes, declarations and direct calls.
614
- Other languages are reported as unsupported. Ignored
615
- build/cache/dependency directories and
655
+ unresolved local imports are errors. Bundler-specific resolution and
656
+ reflection remain out of scope. Rust, Python, Go, Java, Kotlin, C/C++,
657
+ Objective-C/Objective-C++, C#, F#, Visual Basic .NET, Ruby, PHP, Swift, Dart,
658
+ Scala, Elixir, Haskell, Lua, Zig, Solidity, R and Julia have conservative
659
+ native adapters for local imports/modules/includes, declarations and direct
660
+ calls. Other extensions are omitted from graph inputs. Ignored build/cache/dependency directories and
616
661
  symlinks are not indexed; custom `.gitignore` rules are not a scan filter.
617
- - Trace annotations support all languages listed above. Do not create JS/TS
618
- proxy files for another language.
662
+ - Remaining architectural work includes evidence-backed strict call-resolution
663
+ ratio policy and broader native test-runner adapter coverage. Neither is
664
+ enabled speculatively by this release.
665
+ - Trace annotation comment syntax is documented above. Do not create JS/TS proxy
666
+ files for another language.
619
667
  - Knowledge ranking is **TF-IDF/cosine, not GraphRAG** or semantic reasoning.
620
668
  Japanese uses character bigrams. Git co-change and author-directory counts
621
669
  cover at most 100 commits/30 files per commit; they indicate correlation and