musubix3 0.1.6 → 0.1.8
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 +2 -2
- package/.github/skills/sdd-change/SKILL.md +27 -28
- package/.github/skills/sdd-design/SKILL.md +7 -1
- package/.github/skills/sdd-implementation/SKILL.md +4 -2
- package/.github/skills/sdd-quality/SKILL.md +11 -11
- package/.github/skills/sdd-requirements/SKILL.md +22 -8
- package/CHANGELOG.md +48 -0
- package/README-ja.md +54 -8
- package/README.md +59 -8
- package/dist/packages/analysis/src/adapters.d.ts +1 -1
- package/dist/packages/analysis/src/approval-record.d.ts +6 -0
- package/dist/packages/analysis/src/approval-record.js +43 -0
- package/dist/packages/analysis/src/approval-record.js.map +1 -0
- package/dist/packages/analysis/src/approval.d.ts +44 -0
- package/dist/packages/analysis/src/approval.js +136 -0
- package/dist/packages/analysis/src/approval.js.map +1 -0
- package/dist/packages/analysis/src/attestation.js +2 -6
- package/dist/packages/analysis/src/attestation.js.map +1 -1
- package/dist/packages/analysis/src/config.d.ts +6 -1
- package/dist/packages/analysis/src/config.js +27 -9
- package/dist/packages/analysis/src/config.js.map +1 -1
- package/dist/packages/analysis/src/files.d.ts +2 -0
- package/dist/packages/analysis/src/files.js +9 -0
- package/dist/packages/analysis/src/files.js.map +1 -1
- package/dist/packages/analysis/src/gate.d.ts +2 -0
- package/dist/packages/analysis/src/gate.js +33 -9
- package/dist/packages/analysis/src/gate.js.map +1 -1
- package/dist/packages/analysis/src/graph.js +13 -4
- package/dist/packages/analysis/src/graph.js.map +1 -1
- package/dist/packages/analysis/src/index.d.ts +3 -0
- package/dist/packages/analysis/src/index.js +3 -0
- package/dist/packages/analysis/src/index.js.map +1 -1
- package/dist/packages/analysis/src/mutation.d.ts +1 -1
- package/dist/packages/analysis/src/mutation.js +10 -1
- package/dist/packages/analysis/src/mutation.js.map +1 -1
- package/dist/packages/analysis/src/tdd.d.ts +2 -8
- package/dist/packages/analysis/src/tdd.js +18 -15
- package/dist/packages/analysis/src/tdd.js.map +1 -1
- package/dist/packages/analysis/src/test-report.d.ts +8 -0
- package/dist/packages/analysis/src/test-report.js +2 -0
- package/dist/packages/analysis/src/test-report.js.map +1 -0
- package/dist/packages/analysis/src/trace.d.ts +4 -0
- package/dist/packages/analysis/src/trace.js +16 -3
- package/dist/packages/analysis/src/trace.js.map +1 -1
- package/dist/packages/analysis/src/workflow.js +1 -1
- package/dist/packages/cli/src/main.js +61 -5
- package/dist/packages/cli/src/main.js.map +1 -1
- package/dist/packages/domain/src/requirements.js +43 -5
- package/dist/packages/domain/src/requirements.js.map +1 -1
- package/package.json +1 -1
- 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.
|
|
6
|
+
"version": "0.1.8"
|
|
7
7
|
},
|
|
8
8
|
"plugins": [
|
|
9
9
|
{
|
|
10
10
|
"name": "musubix3",
|
|
11
11
|
"source": ".",
|
|
12
|
-
"version": "0.1.
|
|
12
|
+
"version": "0.1.8",
|
|
13
13
|
"description": "Evidence-driven SDD without duplicating native Copilot capabilities."
|
|
14
14
|
}
|
|
15
15
|
]
|
|
@@ -3,34 +3,33 @@ name: sdd-change
|
|
|
3
3
|
description: "Use as the MANDATORY first Skill for requests to develop, build, create, implement, add, change, or fix software, including 「開発」「作成」「実装」. Start requirements and design before code, then propagate through tests, traceability, and quality evidence. ソフトウェア開発依頼では実装前に必ず要求定義・設計から開始。"
|
|
4
4
|
---
|
|
5
5
|
# Integrated change workflow / 統合変更ワークフロー
|
|
6
|
-
|
|
6
|
+
/* @id CODE-SESSION-SCOPED-DEVELOPMENT-001
|
|
7
|
+
* @implements REQ-SESSION-SCOPED-DEVELOPMENT-001 REQ-SESSION-SCOPED-DEVELOPMENT-002
|
|
8
|
+
* @design DES-SESSION-SCOPED-DEVELOPMENT-001
|
|
9
|
+
*/
|
|
10
|
+
Mandatory entrypoint: every new natural-language development request is a new change, even in an existing Copilot session; never reuse prior requirements, approvals, TDD, or change evidence unless the user explicitly names the existing change ID and asks to continue it. never start implementation before validating requirements/design; skip only for verified approved artifacts of that explicitly continued change.
|
|
11
|
+
Never infer approval; show `approval prepare <stage>` and record only its reviewed hash with `approval record <stage> --approver <name> --artifact-sha256 <hash> --confirm`.
|
|
7
12
|
Follow the user's input language. Use native Copilot planning, editing, research, review, security review and subagents.
|
|
8
|
-
Record exactly one final invocation outcome with `npx musubix3 workflow-record
|
|
9
|
-
sdd-change complete --status <status>`; `change-record` separately proves phases.
|
|
13
|
+
Record exactly one final invocation outcome with `npx musubix3 workflow-record sdd-change complete --status <status>`; `change-record` separately proves phases.
|
|
10
14
|
Run `workflow-sanitize <copilot.jsonl> <safe.jsonl>` before review, then
|
|
11
15
|
`workflow-verify <safe.jsonl>`; it validates source-order lifecycles without
|
|
12
16
|
assuming globally monotonic clocks unless `maxEventSkewMs` is explicitly set.
|
|
13
|
-
|
|
17
|
+
Baseline-protect transcript byte limits; never truncate/edit to bypass them.
|
|
14
18
|
For strict evidence, bind an expected UUID; GitHub origin needs strict OIDC.
|
|
15
19
|
Never record multiple declarations per invocation; use only the configured CLI.
|
|
16
|
-
For broad work, use short stages: initialize, requirements, design, real Red,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
`design`, `red`, `implementation`, `green`, `quality`.
|
|
21
|
-
List only requirements whose statement or acceptance changes, classify each as
|
|
22
|
-
functional/non-functional, and document other impacts separately. Each listed
|
|
23
|
-
requirement needs fresh Red after `requirements` and Green after `implementation`.
|
|
20
|
+
For broad work, use short stages: initialize, requirements, requirements approval, design, design approval, real Red, Green, integration, trace/formal, quality, release approval. Report each result before the next prompt.
|
|
21
|
+
For a staged change, run `change-record <CHANGE-ID> <phase> --requirement <REQ-ID...>` after each phase in this exact order: `impact`, `requirements`, `design`, `red`, `implementation`, `green`, `quality`.
|
|
22
|
+
List only requirements whose statement/acceptance changes, classify each, and
|
|
23
|
+
document other impacts separately. Each needs fresh Red and Green.
|
|
24
24
|
The CHANGE document must contain `Requirements:` with exactly those normative IDs.
|
|
25
25
|
Persisted monotonic order, not wall-clock time, proves these phase boundaries.
|
|
26
26
|
## 1. Classify and inspect / 分類と事前確認
|
|
27
27
|
1. Classify the request as a feature, behavior change, defect correction,
|
|
28
|
-
refactoring, or documentation-only change.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
4. Separate confirmed intent, assumptions and open questions. When material context is missing, ask exactly one highest-priority question, wait
|
|
33
|
-
|
|
28
|
+
refactoring, or documentation-only change. For a new program/feature, create
|
|
29
|
+
a fresh feature slug and CHANGE artifact; prior session context is not approval.
|
|
30
|
+
2. Read the constitution and relevant requirements, designs, ADRs, code and tests, but treat prior-session artifacts as historical context unless continuation is explicit.
|
|
31
|
+
3. Run `trace impact`; when code exists run `graph index` and `graph impact`.
|
|
32
|
+
4. Separate confirmed intent, assumptions and open questions. When material context is missing, ask exactly one highest-priority question, wait, then repeat; never batch questions or finalize requirements, design or code while blockers remain.
|
|
34
33
|
## 2. Update specifications first / 仕様を先に更新
|
|
35
34
|
1. For new or changed observable behavior, add or revise EARS requirements and
|
|
36
35
|
measurable acceptance criteria before implementation. Preserve stable IDs
|
|
@@ -38,10 +37,11 @@ Persisted monotonic order, not wall-clock time, proves these phase boundaries.
|
|
|
38
37
|
2. For a bug where implementation violates an existing requirement, keep that
|
|
39
38
|
requirement and record that no specification change is needed. Never rewrite
|
|
40
39
|
a requirement merely to make incorrect behavior appear compliant.
|
|
41
|
-
3. Update design responsibilities
|
|
42
|
-
Add or supersede an ADR only for a real architectural or trade-off decision.
|
|
40
|
+
3. Update design responsibilities/interfaces/constraints/links and ADRs for real decisions.
|
|
43
41
|
4. Run requirements, constitution and design validation. Stop on invalid
|
|
44
42
|
artifacts instead of continuing with unapproved assumptions.
|
|
43
|
+
5. Stop before design for explicit current `requirements` approval; stop before
|
|
44
|
+
Red/implementation for explicit current `design` approval. Changes re-open approval.
|
|
45
45
|
## 3. Implement and prove coverage / 実装と網羅性
|
|
46
46
|
1. For observable behavior changes and defect fixes, write the smallest meaningful
|
|
47
47
|
test first. Include its `TEST-*` ID in the test name/output and link it to the
|
|
@@ -57,10 +57,8 @@ Persisted monotonic order, not wall-clock time, proves these phase boundaries.
|
|
|
57
57
|
3. Implement the smallest complete change, preserving the test, then run
|
|
58
58
|
`tdd green` with the same IDs and command. Refactor only after Green and record
|
|
59
59
|
`tdd refactor` after the refactored code passes.
|
|
60
|
-
4. Maintain unique
|
|
61
|
-
|
|
62
|
-
Never create proxy or placeholder source files solely to satisfy trace coverage.
|
|
63
|
-
Links are evidence locations, not proof by themselves.
|
|
60
|
+
4. Maintain unique IDs and trace annotations in authoritative files; never add
|
|
61
|
+
proxies for coverage. Links locate evidence, not proof.
|
|
64
62
|
5. Run focused tests, then configured typecheck, build and complete test commands.
|
|
65
63
|
Documentation/prototypes may omit TDD only when policy allows; record the reason.
|
|
66
64
|
## 4. Rebuild evidence and finish / 根拠更新と完了
|
|
@@ -71,7 +69,8 @@ Documentation/prototypes may omit TDD only when policy allows; record the reason
|
|
|
71
69
|
A required `formal` check enforces modeled fraction and configured solver.
|
|
72
70
|
3. Run `gate --changed --json` and `status --json`. Repair failures, dangling
|
|
73
71
|
links and stale evidence; never weaken requirements or policy to obtain green.
|
|
74
|
-
4.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
4. Treat the first otherwise-passing gate as the release candidate. Before any
|
|
73
|
+
release operation, prepare/show its exact hash, ask one human approve/reject
|
|
74
|
+
question and wait; record only that hash, then rerun gate/status.
|
|
75
|
+
5. Complete only when required checks pass and `status.gate.ready` is true;
|
|
76
|
+
otherwise report blockers. One-phase work must state downstream work.
|
|
@@ -11,6 +11,8 @@ After the work, run `npx musubix3 workflow-record sdd-design complete --status
|
|
|
11
11
|
completed` exactly once.
|
|
12
12
|
|
|
13
13
|
1. Read requirements and constitution; identify requirement IDs before designing.
|
|
14
|
+
Run `approval validate` and stop unless current `requirements` approval is
|
|
15
|
+
explicitly recorded when required. A passing validator is not approval.
|
|
14
16
|
2. Edit `.musubix/features/<slug>/design.md` with `## DES-FEATURE-001: Title`.
|
|
15
17
|
Each component needs `Responsibilities:`, `Interfaces:`, `Constraints:`,
|
|
16
18
|
`Requirements: REQ-FEATURE-001`, and `ADRs: ADR-0001`. Use `Depends-On:` for
|
|
@@ -23,4 +25,8 @@ completed` exactly once.
|
|
|
23
25
|
5. Run `npx musubix3 trace build` then `npx musubix3 trace check`.
|
|
24
26
|
Do not hand-edit `trace.json`. Ask native review to inspect coupling and
|
|
25
27
|
coverage; use `sdd-formal-codegraph` for compiler-based impact checks.
|
|
26
|
-
6.
|
|
28
|
+
6. Before implementation or Red, run `approval prepare design`, show its exact
|
|
29
|
+
artifacts/hash, ask one explicit approve/reject question, then wait. On approval
|
|
30
|
+
only, record that hash with `approval record design --approver <name>
|
|
31
|
+
--artifact-sha256 <hash> --confirm`; rejection or changes require renewed review.
|
|
32
|
+
7. Hand off responsibilities, interfaces, constraints and IDs to implementation.
|
|
@@ -13,9 +13,11 @@ After the work, run `npx musubix3 workflow-record sdd-implementation complete
|
|
|
13
13
|
--status completed` exactly once.
|
|
14
14
|
|
|
15
15
|
1. Before editing implementation code, verify that approved requirements and
|
|
16
|
-
design artifacts exist
|
|
16
|
+
design artifacts exist, both validators pass, and `approval validate` reports
|
|
17
|
+
current requirements and design approval. If either is absent, stale, or invalid,
|
|
17
18
|
stop and return to `sdd-change`, invoking `sdd-requirements` and `sdd-design`
|
|
18
|
-
as needed. Do not infer approval from
|
|
19
|
+
as needed. `tdd red` also enforces design approval. Do not infer approval from
|
|
20
|
+
validation or a natural-language request such as
|
|
19
21
|
"develop", "build", 「開発」, 「作成」, or 「実装」.
|
|
20
22
|
2. For behavior changes and bug fixes, write a meaningful failing test before
|
|
21
23
|
implementation. Configure the selected command with `tddArgs` containing
|
|
@@ -3,15 +3,11 @@ 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
|
-
Follow the user's input language
|
|
7
|
-
security review for their specialist reasoning; this skill does not replace them.
|
|
6
|
+
Follow the user's input language. Native review/security review remain separate.
|
|
8
7
|
After the work, run `npx musubix3 workflow-record sdd-quality complete --status
|
|
9
8
|
completed` exactly once.
|
|
10
|
-
1. Inspect
|
|
11
|
-
|
|
12
|
-
executable/argument arrays, not shell text. Never edit the baseline without
|
|
13
|
-
explicit independent approval. Use only the exact `musubix3` CLI; never
|
|
14
|
-
substitute similarly named npm packages.
|
|
9
|
+
1. Inspect config/baseline first. Execute only trusted argument-array commands;
|
|
10
|
+
never edit baseline without independent approval or substitute another CLI.
|
|
15
11
|
2. Configure real tests/build/typecheck commands and timeouts. Use an explicit
|
|
16
12
|
custom report or a built-in Vitest/Jest, pytest, Go test, Cargo, JUnit or .NET
|
|
17
13
|
adapter. Require executable native adapter contracts in CI; JUnit targets use
|
|
@@ -64,8 +60,9 @@ completed` exactly once.
|
|
|
64
60
|
Treat zero executed or non-passing tests as incomplete evidence after exit zero; run `mutation doctor`;
|
|
65
61
|
musubix3 validates evidence and does not bundle a mutation engine.
|
|
66
62
|
Missing required tools, commands, artifacts or evidence block readiness.
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
A candidate gate may fail only because release approval is missing; that is
|
|
64
|
+
not final readiness and must not be described as pass.
|
|
65
|
+
5. Record native review/security findings separately; never fabricate evidence.
|
|
69
66
|
6. For static CI provenance, configure trusted Ed25519 public keys, freshness
|
|
70
67
|
bounds and `ci-required`; sign `attestation payload` outside musubix3. For
|
|
71
68
|
GitHub Actions identity, opt into strict `githubOidc`, derive the key-bound
|
|
@@ -74,5 +71,8 @@ completed` exactly once.
|
|
|
74
71
|
check all configured claims; offline strict verification fails closed.
|
|
75
72
|
Ensure the baseline protects CI-required mode, strict OIDC and key binding.
|
|
76
73
|
Never store a private key or overstate OIDC as proof of arbitrary runner work.
|
|
77
|
-
7.
|
|
78
|
-
|
|
74
|
+
7. After required non-approval checks pass, run `approval prepare release`, show
|
|
75
|
+
its exact hash and residual risks, ask one approve/reject question, then wait.
|
|
76
|
+
On approval only record that hash with `approval record release --approver
|
|
77
|
+
<name> --artifact-sha256 <hash> --confirm`; rejection stops. Rerun gate/status;
|
|
78
|
+
stale approval blocks commit/push/publish/deploy; no resident watcher or REPL.
|
|
@@ -3,16 +3,23 @@ name: sdd-requirements
|
|
|
3
3
|
description: "Use when eliciting, refining, or validating EARS requirements and measurable constitution rules for specification-driven development. 要求定義・EARS検証・憲章策定に使用。"
|
|
4
4
|
---
|
|
5
5
|
# Requirements / 要求
|
|
6
|
-
|
|
6
|
+
/* @id CODE-SESSION-SCOPED-DEVELOPMENT-002
|
|
7
|
+
* @implements REQ-SESSION-SCOPED-DEVELOPMENT-001 REQ-SESSION-SCOPED-DEVELOPMENT-002
|
|
8
|
+
* @design DES-SESSION-SCOPED-DEVELOPMENT-002
|
|
9
|
+
*/
|
|
7
10
|
Respond and generate guidance in the user's input language (日本語 / English).
|
|
8
11
|
Use Copilot's native planning, questions, research and editing; do not create an
|
|
9
12
|
interview engine or research agent framework.
|
|
10
13
|
After the work, run `npx musubix3 workflow-record sdd-requirements complete
|
|
11
14
|
--status completed` exactly once.
|
|
12
15
|
|
|
13
|
-
1.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
1. For every new natural-language development request, create/use a fresh
|
|
17
|
+
`.musubix/features/<new-slug>/requirements.md`; do not edit or reuse a prior
|
|
18
|
+
session's feature, approval, or change evidence unless continuation is explicit.
|
|
19
|
+
Inspect `.musubix/constitution.md` and relevant existing requirements only as
|
|
20
|
+
context. If absent, preview `npx musubix3 init --dry-run` before installing.
|
|
21
|
+
2. Treat a request such as 「○○を開発」/"develop ○○" as requirements elicitation,
|
|
22
|
+
not permission to start coding. Use native planning to clarify scope, stakeholders, measurable acceptance and
|
|
16
23
|
failure behavior. Separate assumptions from confirmed requirements. If required
|
|
17
24
|
context is missing, use native elicitation to ask exactly one highest-priority
|
|
18
25
|
question and wait for the answer before asking the next. Never batch questions.
|
|
@@ -23,12 +30,14 @@ After the work, run `npx musubix3 workflow-record sdd-requirements complete
|
|
|
23
30
|
unique. Keep one obligation per entry; add `Acceptance: ...`.
|
|
24
31
|
Acceptance must be non-placeholder and measurably testable. For semantics
|
|
25
32
|
that must enter formal coverage, add strict one-line `Formal:` JSON using
|
|
26
|
-
branch-scoped `conditional
|
|
27
|
-
`
|
|
33
|
+
branch-scoped `conditional` (`condition`/`consequence`), integer `numeric`
|
|
34
|
+
(`metric`/`operator` one of `<`,`<=`,`=`,`>=`,`>`/`value`), `temporal`
|
|
35
|
+
(`trigger`/`response`/required `withinMs`/optional nonnegative `afterMs`), or
|
|
36
|
+
deterministic `transition` (`from`/`event`/`to`).
|
|
28
37
|
For numeric constraints, use compatible duration (`ms`/`s`/`min`) or size
|
|
29
38
|
(`bytes`/`kib`/`mib`) units when conversion is intended; never translate
|
|
30
39
|
arbitrary prose or incompatible dimensions by guesswork. A non-functional deterministic
|
|
31
|
-
budget uses `Performance:` with `counter`, integer `max`, and `testId`.
|
|
40
|
+
budget uses strict one-line `Performance:` JSON with `counter`, integer `max`, and `testId`.
|
|
32
41
|
4. Use all six controlled EARS forms as appropriate:
|
|
33
42
|
- The system shall respond.
|
|
34
43
|
- When an event occurs, the system shall respond.
|
|
@@ -41,5 +50,10 @@ After the work, run `npx musubix3 workflow-record sdd-requirements complete
|
|
|
41
50
|
5. Validate with `npx musubix3 requirements validate <file> --json` and
|
|
42
51
|
`npx musubix3 constitution validate --json`. Rules use `PRINC-001`, `RULE-001`,
|
|
43
52
|
a supported `Metric:` and numeric `Limit:`. Validation is not execution evidence.
|
|
44
|
-
6.
|
|
53
|
+
6. Validation is not human approval. Before design, run `approval prepare
|
|
54
|
+
requirements`, show its exact artifacts/hash, ask one explicit approve/reject
|
|
55
|
+
question, then wait. On approval only, record that hash with `approval record
|
|
56
|
+
requirements --approver <name> --artifact-sha256 <hash> --confirm`; rejection
|
|
57
|
+
or any intervening artifact change stops and requires renewed review.
|
|
58
|
+
7. Hand off confirmed IDs and unresolved assumptions to `sdd-design`; use native
|
|
45
59
|
review for semantic completeness, not merely syntactic conformance.
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.1.8 - 2026-09-09
|
|
6
|
+
|
|
7
|
+
- Treat every new natural-language development request as a fresh change, even within an existing Copilot session.
|
|
8
|
+
- Reuse requirements, approvals, TDD, and change evidence only when the user explicitly names the existing CHANGE ID and asks to continue it.
|
|
9
|
+
- Trace musubix3 Skill contracts without leaking installed Skill annotations into consumer project trace graphs.
|
|
10
|
+
- Add regression coverage for fresh-change routing and explicit continuation.
|
|
11
|
+
|
|
12
|
+
## 0.1.7 - 2026-09-08
|
|
13
|
+
|
|
14
|
+
- Add artifact-bound human approval gates for requirements, design, and release.
|
|
15
|
+
`approval prepare` displays the exact review manifest/hash and `approval record`
|
|
16
|
+
requires that still-current hash plus explicit confirmation. Requirements
|
|
17
|
+
approval gates design validation, design approval gates TDD Red, and release
|
|
18
|
+
recording recomputes all required non-approval checks instead of trusting cached
|
|
19
|
+
quality evidence. Ordinary JSONL project inputs remain bound while recognized
|
|
20
|
+
logs are excluded. Status exposes every stage, Skills stop for one native human
|
|
21
|
+
decision, legacy configs remain compatible, and local approver text is documented
|
|
22
|
+
as non-authenticated.
|
|
23
|
+
- Fix TDD test fingerprints for non-TypeScript sources: an indented single-line
|
|
24
|
+
block annotation such as ` /* @id TEST-APP-001 */` hashed an empty slice, so
|
|
25
|
+
test mutation after Red and `TDD_TEST_STALE` went undetected in PHP, Java, Go,
|
|
26
|
+
Rust, Python and every other generic-comment language.
|
|
27
|
+
- Report the concrete cause of `REQ_FORMAL_SCHEMA` failures (unknown kind,
|
|
28
|
+
unexpected keys, missing keys, or the invalid field with its expected type)
|
|
29
|
+
instead of one opaque sentence.
|
|
30
|
+
- Explain in `REQ_EARS` when a statement declares more than one obligation, and
|
|
31
|
+
list the valid pattern vocabulary in `REQ_PATTERN`.
|
|
32
|
+
- List the known keys when configuration rejects an unknown key.
|
|
33
|
+
- Add `mutation identity` so deterministic `MUT-*` values no longer require a
|
|
34
|
+
two-pass gate-and-scrape workflow, and say where `mutation validate` looks for
|
|
35
|
+
evidence instead of silently passing when none is present.
|
|
36
|
+
- Report `TDD_EVIDENCE_REUSED` from the structured report hash rather than console
|
|
37
|
+
output, so quiet runners such as PHPUnit no longer produce false positives while
|
|
38
|
+
genuinely duplicated reports are still rejected.
|
|
39
|
+
- Detect Composer projects in `mutation doctor` and recommend Infection together
|
|
40
|
+
with the coverage driver it requires.
|
|
41
|
+
- Resolve PHP same-namespace trait composition and grouped `use A, B;` lists as
|
|
42
|
+
internal imports instead of reporting external dependencies, and drop
|
|
43
|
+
self-referencing trait edges.
|
|
44
|
+
- Name the concrete remedy in TDD legacy/Red/Green diagnostics: move
|
|
45
|
+
`.musubix/evidence/tdd.json` aside and re-record every cycle; there is no
|
|
46
|
+
partial prune and hand-editing is unsupported.
|
|
47
|
+
- Document the `musubix-json` report schema, that the `junit` adapter drives the
|
|
48
|
+
Java JUnit Platform Console launcher and not JUnit-XML producers such as
|
|
49
|
+
PHPUnit, and that PHP annotations must use `/* */` rather than PHPDoc because
|
|
50
|
+
PHPDoc reserves `@implements`. Align the `sdd-requirements` Skill with the
|
|
51
|
+
strict JSON `Formal:`/`Performance:` formats and their exact keys.
|
|
52
|
+
|
|
5
53
|
## 0.1.6 - 2026-09-08
|
|
6
54
|
|
|
7
55
|
- Make `sdd-change` the mandatory first Skill for natural-language software
|
package/README-ja.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# musubix3
|
|
2
2
|
|
|
3
|
-
**最新リリース v0.1.
|
|
3
|
+
**最新リリース v0.1.8 · GitHub Copilot CLI 専用 · Node.js ≥20 · TypeScript · MIT**
|
|
4
4
|
|
|
5
5
|
[English](README.md)
|
|
6
6
|
|
|
@@ -168,20 +168,27 @@ Copilot の提案を記号的検査で制約する構成であり、独自の「
|
|
|
168
168
|
要求を確定しません。
|
|
169
169
|
|
|
170
170
|
1. ネイティブ計画・調査で意図と測定可能な受入条件を明確化。
|
|
171
|
-
2. `change-record CHANGE-ID impact`
|
|
172
|
-
`requirements` checkpoint
|
|
173
|
-
|
|
171
|
+
2. `change-record CHANGE-ID impact` を記録して要求を編集・検証し、
|
|
172
|
+
`requirements` checkpoint後、設計前にartifact-boundな人間の
|
|
173
|
+
`requirements`承認を明示的に記録。
|
|
174
|
+
3. コンポーネントとADRを更新して `design` checkpointを記録し、
|
|
175
|
+
実装前にartifact-boundな人間の`design`承認を明示的に記録。
|
|
174
176
|
4. 注釈付きテストを作成し、構造化結果を伴う `tdd red` と変更の `red` を記録。
|
|
175
177
|
5. 最小実装後に `implementation`、成功する `tdd green`、変更の `green` を記録。
|
|
176
178
|
6. 注釈とグラフを更新して変更影響・網羅性を確認。
|
|
177
|
-
7.
|
|
178
|
-
|
|
179
|
+
7. 実コマンドで候補品質ゲートを実行。承認以外の必須checkがすべて合格した後、
|
|
180
|
+
人間が`release`承認を記録してgate/statusを再実行し、その後だけ
|
|
181
|
+
commit・push・publish・deployへ進む。検証結果や自然言語から承認を推測しない。
|
|
179
182
|
|
|
180
183
|
```sh
|
|
181
184
|
npx musubix3 requirements validate .musubix/features/example/requirements.md --json
|
|
182
185
|
npx musubix3 constitution validate --json
|
|
186
|
+
npx musubix3 approval prepare requirements --json
|
|
187
|
+
npx musubix3 approval record requirements --approver "要求責任者" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
183
188
|
npx musubix3 design validate .musubix/features/example/design.md --json
|
|
184
189
|
npx musubix3 design c4 .musubix/features/example/design.md
|
|
190
|
+
npx musubix3 approval prepare design --json
|
|
191
|
+
npx musubix3 approval record design --approver "設計責任者" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
185
192
|
npx musubix3 change-record CHANGE-0001 design --requirement REQ-EXAMPLE-001
|
|
186
193
|
npx musubix3 tdd red TEST-EXAMPLE-001 --requirement REQ-EXAMPLE-001 --command test
|
|
187
194
|
# テストを変更せず、最小限の振る舞いを実装
|
|
@@ -192,6 +199,10 @@ npx musubix3 trace check --strict --json
|
|
|
192
199
|
npx musubix3 graph index
|
|
193
200
|
npx musubix3 graph impact src/service.ts
|
|
194
201
|
npx musubix3 gate --changed --json
|
|
202
|
+
npx musubix3 approval prepare release --json
|
|
203
|
+
npx musubix3 approval record release --approver "リリース責任者" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
204
|
+
npx musubix3 gate --changed --json
|
|
205
|
+
npx musubix3 approval validate --json
|
|
195
206
|
npx musubix3 status --json
|
|
196
207
|
```
|
|
197
208
|
|
|
@@ -210,6 +221,9 @@ npx musubix3 status --json
|
|
|
210
221
|
| `constitution validate [file]` | 版・原則・測定可能な規則の定義検査 |
|
|
211
222
|
| `design validate <file>` | 必須項目・要求ID・既存ADRの参照検査 |
|
|
212
223
|
| `design c4 <file>` | 明示的なコンポーネントと依存から Mermaid 図 |
|
|
224
|
+
| `approval prepare <requirements\|design\|release>` | 人間が確認する決定的manifestとhashを表示 |
|
|
225
|
+
| `approval record <stage> --approver <name> --artifact-sha256 <hash> --confirm` | 確認済みhashが現在も一致するときだけ承認を記録 |
|
|
226
|
+
| `approval validate` | 各承認をapproved・missing・staleとして表示し、検証結果から承認を推測しない |
|
|
213
227
|
| `trace build` | リポジトリ全体のグラフと機能別コピーを生成 |
|
|
214
228
|
| `trace check [--strict]` | 未解決ID、陳腐化、必須要求の網羅性 |
|
|
215
229
|
| `trace impact <id-or-path>` | 説明経路付きの双方向探索 |
|
|
@@ -226,6 +240,7 @@ npx musubix3 status --json
|
|
|
226
240
|
| `model-correspondence validate` | Formal JSON→生成trace→正本passing testの証拠を再検証 |
|
|
227
241
|
| `evidence refresh [--changed]` | 同じfail-closed gate pipelineで派生証拠を再生成 |
|
|
228
242
|
| `mutation validate` | 要求scopeのschema-v1 killed-mutant証拠を再検証 |
|
|
243
|
+
| `mutation identity <REQ-ID> <TEST-ID> <sourcePath> <operator> <line> <column>` | mutation reportが宣言すべき決定的な`MUT-*`識別子を出力 |
|
|
229
244
|
| `tdd validate` | 保存済みRed/Green/Refactorの順序、指紋、実行時間、hash-chainを検証 |
|
|
230
245
|
| `tdd red\|green\|refactor <TEST-ID> --requirement <REQ-ID> --command <name>` | 検証可能なTDDフェーズを実行・記録 |
|
|
231
246
|
| `workflow-record <skill> <phase> --status <status>` | 自己申告のworkflow宣言を記録 |
|
|
@@ -333,6 +348,9 @@ apostrophe commentを扱います。これらは文字列中の記載をリン
|
|
|
333
348
|
その他の言語では対応する行commentまたはblock commentを使用します。
|
|
334
349
|
Pythonは連続した`#` commentを使用してください。docstring内のannotationは無視され、
|
|
335
350
|
`TRACE_ANNOTATION_IN_PYTHON_DOCSTRING`で配置変更を案内します。
|
|
351
|
+
PHPでは`/** ... */`のPHPDocではなく素の`/* ... */`を使用してください。PHPDocは
|
|
352
|
+
`@implements`をgeneric型宣言に予約しているため、要求IDの列挙はPHPStan/Psalmで
|
|
353
|
+
`phpDoc.parseError`になります。musubix3はどちらの形式も読み取ります。
|
|
336
354
|
網羅率だけを満たす代理JS/TSファイルは作成しません。
|
|
337
355
|
|
|
338
356
|
```ts
|
|
@@ -396,6 +414,7 @@ version: 1.0.0
|
|
|
396
414
|
"formal": { "solver": "none", "minModeledFraction": 0, "timeoutMs": 12000 },
|
|
397
415
|
"mutation": { "mode": "compatible" },
|
|
398
416
|
"tdd": { "redPreflightCommands": [] },
|
|
417
|
+
"approval": { "mode": "required" },
|
|
399
418
|
"workflow": {
|
|
400
419
|
"mode": "compatible",
|
|
401
420
|
"maxAgeSeconds": 3600,
|
|
@@ -427,6 +446,18 @@ glob は `*` / `**` / `?` に対応し、外部依存は `npm:` 接頭辞で表
|
|
|
427
446
|
`recommended`はstrict Code Graph、TDD、構造化test identityも要求し、
|
|
428
447
|
`release`はformal、mutation、workflow、変更、performance、CI attestationを
|
|
429
448
|
含む完全なrelease checkを要求します。不足設定や弱い設定を証拠で補ったことにはしません。
|
|
449
|
+
新規初期化projectの`approval.mode`は`required`で、requirements・design・releaseの
|
|
450
|
+
現在の承認を要求します。`approval`を省略した既存schema-v1 configは`compatible`として
|
|
451
|
+
読み込みます。`approval prepare`で確認対象のmanifest/hashを表示し、その同じhashを
|
|
452
|
+
`approval record`へ渡します。途中変更は拒否され、記録後の対象artifact変更はstaleに
|
|
453
|
+
なります。承認fileはstage、approver、`approvedAt`、artifactごとのSHA-256、決定的
|
|
454
|
+
manifest SHA-256を保持します。release記録はcache済みquality evidenceを信頼せずgateを
|
|
455
|
+
再計算し、承認以外の必須checkがすべてpassした場合だけ成功します。
|
|
456
|
+
approver文字列は明示的なlocal証拠であり、認証済みidentityではありません。
|
|
457
|
+
独立identityが必要なrepositoryではprotected review、CODEOWNERS、CI/OIDCも併用します。
|
|
458
|
+
local承認証拠は明示的な意思を記録しますが、承認者の暗号学的な本人確認ではありません。
|
|
459
|
+
release権限はrepository review、CODEOWNERS/branch protection、またはCI/OIDC attestationで
|
|
460
|
+
保護してください。
|
|
430
461
|
`tdd.redPreflightCommands`にはformatter等のplain command名を指定でき、
|
|
431
462
|
Redのtest fingerprintを取得する前に成功が必須です。
|
|
432
463
|
通常ファイルの`pyvenv.cfg`を含む`.venv`と`venv`に加え、生成された
|
|
@@ -454,7 +485,7 @@ command reportでpassしたことを要求します。欠落・改変・stale・
|
|
|
454
485
|
機械診断コードと詳細は英語、主要な状態表示は日英併記です。
|
|
455
486
|
|
|
456
487
|
`.musubix/policy-baseline.json` は必須チェック、閾値、アーキテクチャ、
|
|
457
|
-
Formalポリシー、mutation mode、workflow strict/session/freshness、CI必須attestation、
|
|
488
|
+
Formalポリシー、mutation/approval mode、workflow strict/session/freshness、CI必須attestation、
|
|
458
489
|
strict OIDC identity/key binding、必須コマンド名の最低条件です。Red preflightを
|
|
459
490
|
要求するbaselineは正規化済み`commands`定義も保持し、同名formatterへの
|
|
460
491
|
すり替えを拒否します。弱体化は拒否され、
|
|
@@ -471,6 +502,13 @@ strict OIDC identity/key binding、必須コマンド名の最低条件です。
|
|
|
471
502
|
TDD用コマンドには明示的な`tddArgs`と`tddReport`、または組込みの
|
|
472
503
|
`vitest`、`jest`、`pytest`、`go-test`、`cargo`、`junit`、`dotnet` adapterが必要です。
|
|
473
504
|
明示設定を優先し、adapterは対象引数を導出してnative JSON/JSONL/XMLを正規化します。
|
|
505
|
+
`junit` adapterはJava JUnit Platform Console launcherを駆動するものであり、
|
|
506
|
+
JUnit XMLを出力するだけのrunner(PHPUnit等)には使えません。その場合は
|
|
507
|
+
`tddArgs`/`tddReport`(および`testReport`)を明示設定してください。
|
|
508
|
+
custom `musubix-json` reportは
|
|
509
|
+
`{"schemaVersion":1,"tests":[{"id":"TEST-APP-001","status":"passed"}]}`形式で、
|
|
510
|
+
`status`は`passed`/`failed`/`skipped`/`error`、任意の`"operations":{"counter":12}`が
|
|
511
|
+
決定的な性能counterを保持します。
|
|
474
512
|
Vitest/Jestの無関係なskipped結果は対象TDDから除外します。pytestにはJSON pluginと
|
|
475
513
|
`test_TEST_APP_001`形式、Goには`TEST-*`名のsubtest、Cargoには`test_app_001`形式、
|
|
476
514
|
JUnitには正確な`@Tag("TEST-APP-001")`と、IDを含むmethod名または`@DisplayName`を推奨します。
|
|
@@ -487,7 +525,15 @@ Green前にはテスト以外のプロジェクト入力が変更されている
|
|
|
487
525
|
TDDと変更checkpointは共通の単調order ledgerを持ち、Red/Green境界ではこれを
|
|
488
526
|
正本とし、wall-clock時刻は情報用途に限定します。orderを持たない旧chronologyは
|
|
489
527
|
明示的なmigration診断で失敗します。欠落・並べ替え・改変・孤立レコードは
|
|
490
|
-
|
|
528
|
+
証拠を無効にします。旧cycleは新しい記録では置き換えられません。test scope付き
|
|
529
|
+
provenanceや有効なRed/Greenを欠くcycleがある場合は、`.musubix/evidence/tdd.json`を
|
|
530
|
+
退避し、全cycleをclean Red baselineから再記録してください。部分的なprune commandは
|
|
531
|
+
意図的に提供せず、証拠の手編集は未対応です。
|
|
532
|
+
|
|
533
|
+
決定的なmutant識別子は`musubix3 mutation identity <REQ-ID> <TEST-ID> <sourcePath>
|
|
534
|
+
<operator> <line> <column>`で取得できます。`mutation validate`は
|
|
535
|
+
`.musubix/evidence/mutation.json`を読み取り、設定した`mutationReport`はgateがこの
|
|
536
|
+
ファイルへ変換するため、gate実行前の検証は「証拠なし」を報告します。
|
|
491
537
|
|
|
492
538
|
CIではVitest、Jest、
|
|
493
539
|
`pytest-json-report`付きpytest、Go test、Cargo test、固定版JUnit Platform Consoleの
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# musubix3
|
|
2
2
|
|
|
3
|
-
**Latest release v0.1.
|
|
3
|
+
**Latest release v0.1.8 · GitHub Copilot CLI only · Node.js ≥20 · TypeScript · MIT**
|
|
4
4
|
|
|
5
5
|
[日本語](README-ja.md)
|
|
6
6
|
|
|
@@ -172,22 +172,29 @@ question at a time and waits for the answer; it does not batch questions or
|
|
|
172
172
|
finalize requirements while blockers remain.
|
|
173
173
|
|
|
174
174
|
1. Use native planning/research to establish intent and measurable acceptance.
|
|
175
|
-
2. Record `change-record CHANGE-ID impact`,
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
2. Record `change-record CHANGE-ID impact`, edit/validate requirements, record
|
|
176
|
+
the `requirements` checkpoint, then obtain explicit artifact-bound human
|
|
177
|
+
`requirements` approval before design.
|
|
178
|
+
3. Design explicit components, record trade-offs in ADRs, record `design`, then
|
|
179
|
+
obtain explicit artifact-bound human `design` approval before implementation.
|
|
178
180
|
4. Write an annotated behavior test, record a structured failing `tdd red`, then
|
|
179
181
|
record the change `red` checkpoint.
|
|
180
182
|
5. Implement the minimum change, record `implementation`, run passing `tdd green`,
|
|
181
183
|
then record `green` and refactor.
|
|
182
184
|
6. Add trace annotations, build graphs, inspect impact and fix missing coverage.
|
|
183
|
-
7. Configure real checks
|
|
184
|
-
|
|
185
|
+
7. Configure real checks and run the candidate `gate --changed`. After every
|
|
186
|
+
required non-approval check passes, obtain explicit human `release` approval,
|
|
187
|
+
rerun the gate/status, and only then commit, push, publish, or deploy.
|
|
185
188
|
|
|
186
189
|
```sh
|
|
187
190
|
npx musubix3 requirements validate .musubix/features/example/requirements.md --json
|
|
188
191
|
npx musubix3 constitution validate --json
|
|
192
|
+
npx musubix3 approval prepare requirements --json
|
|
193
|
+
npx musubix3 approval record requirements --approver "Requirements Owner" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
189
194
|
npx musubix3 design validate .musubix/features/example/design.md --json
|
|
190
195
|
npx musubix3 design c4 .musubix/features/example/design.md
|
|
196
|
+
npx musubix3 approval prepare design --json
|
|
197
|
+
npx musubix3 approval record design --approver "Design Owner" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
191
198
|
npx musubix3 change-record CHANGE-0001 design --requirement REQ-EXAMPLE-001
|
|
192
199
|
npx musubix3 tdd red TEST-EXAMPLE-001 --requirement REQ-EXAMPLE-001 --command test
|
|
193
200
|
# Implement the minimum behavior without changing the test.
|
|
@@ -198,6 +205,10 @@ npx musubix3 trace check --strict --json
|
|
|
198
205
|
npx musubix3 graph index
|
|
199
206
|
npx musubix3 graph impact src/service.ts
|
|
200
207
|
npx musubix3 gate --changed --json
|
|
208
|
+
npx musubix3 approval prepare release --json
|
|
209
|
+
npx musubix3 approval record release --approver "Release Owner" --artifact-sha256 "$REVIEWED_HASH" --confirm
|
|
210
|
+
npx musubix3 gate --changed --json
|
|
211
|
+
npx musubix3 approval validate --json
|
|
201
212
|
npx musubix3 status --json
|
|
202
213
|
```
|
|
203
214
|
|
|
@@ -217,6 +228,9 @@ validation/gate or requested solver failure, **2** usage, I/O or malformed confi
|
|
|
217
228
|
| `constitution validate [file]` | Versioned principles and measurable rule definitions |
|
|
218
229
|
| `design validate <file>` | Fields, global requirement IDs, existing ADR references |
|
|
219
230
|
| `design c4 <file>` | Mermaid component/dependency diagram from explicit fields |
|
|
231
|
+
| `approval prepare <requirements\|design\|release>` | Display the exact deterministic manifest and hash for human review |
|
|
232
|
+
| `approval record <stage> --approver <name> --artifact-sha256 <hash> --confirm` | Record approval only if the reviewed hash is still current |
|
|
233
|
+
| `approval validate` | Report each approval as approved, missing, or stale; never infer approval from validation |
|
|
220
234
|
| `trace build` | Generate global trace snapshot and feature copies |
|
|
221
235
|
| `trace check [--strict]` | Dangling IDs, stale inputs/paths, mandatory coverage |
|
|
222
236
|
| `trace impact <id-or-path>` | Bidirectional breadth-first traversal with explanation paths |
|
|
@@ -233,6 +247,7 @@ validation/gate or requested solver failure, **2** usage, I/O or malformed confi
|
|
|
233
247
|
| `model-correspondence validate` | Revalidate Formal JSON → generated trace → authoritative passing test evidence |
|
|
234
248
|
| `evidence refresh [--changed]` | Regenerate derived evidence through the same fail-closed gate pipeline |
|
|
235
249
|
| `mutation validate` | Revalidate requirement-scoped schema-v1 killed-mutant evidence |
|
|
250
|
+
| `mutation identity <REQ-ID> <TEST-ID> <sourcePath> <operator> <line> <column>` | Print the deterministic `MUT-*` identity a mutation report must declare |
|
|
236
251
|
| `tdd validate` | Validate persisted Red/Green/Refactor order, fingerprints, durations, and hash-chain evidence |
|
|
237
252
|
| `tdd red\|green\|refactor <TEST-ID> --requirement <REQ-ID> --command <name>` | Execute and record a verified TDD phase |
|
|
238
253
|
| `workflow-record <skill> <phase> --status <status>` | Record a compact self-reported workflow declaration |
|
|
@@ -347,6 +362,9 @@ export function guard() { /* actual implementation */ }
|
|
|
347
362
|
```
|
|
348
363
|
|
|
349
364
|
One block comment per entity; comma/space-separated targets. `@design` is optional.
|
|
365
|
+
In PHP, use plain `/* ... */` blocks rather than `/** ... */` PHPDoc: PHPDoc reserves
|
|
366
|
+
`@implements` for generic type declarations, so PHPStan/Psalm report `phpDoc.parseError`
|
|
367
|
+
on requirement-ID lists inside doc comments. musubix3 reads either form.
|
|
350
368
|
Mandatory implementation coverage may be direct or through a linked design;
|
|
351
369
|
tests must directly verify a requirement. Links alone are not semantic proof.
|
|
352
370
|
Each feature's `trace.json` holds the complete repository snapshot, including
|
|
@@ -396,6 +414,7 @@ Example `.musubix/config.json` (adapt command arguments to your own project):
|
|
|
396
414
|
"formal": { "solver": "none", "minModeledFraction": 0, "timeoutMs": 12000 },
|
|
397
415
|
"mutation": { "mode": "compatible" },
|
|
398
416
|
"tdd": { "redPreflightCommands": [] },
|
|
417
|
+
"approval": { "mode": "required" },
|
|
399
418
|
"workflow": {
|
|
400
419
|
"mode": "compatible",
|
|
401
420
|
"maxAgeSeconds": 3600,
|
|
@@ -428,6 +447,20 @@ commands fail closed. Globs support `*`, `**`, `?`; external imports use `npm:`.
|
|
|
428
447
|
identities, and `release` requires the complete formal, mutation, workflow,
|
|
429
448
|
change, performance and CI-attestation checks. Stronger profiles reject missing
|
|
430
449
|
or weakened settings rather than silently filling in evidence.
|
|
450
|
+
`approval.mode` is `required` in newly initialized projects and requires current
|
|
451
|
+
requirements, design, and release approvals. Existing schema-v1 configs that
|
|
452
|
+
omit `approval` load in `compatible` mode. Approval files store the stage,
|
|
453
|
+
approver, `approvedAt`, per-artifact SHA-256 values, and a deterministic manifest
|
|
454
|
+
SHA-256. Run `approval prepare` before review and pass that exact hash to
|
|
455
|
+
`approval record`; an intervening change is rejected and later changes become
|
|
456
|
+
stale. Release recording recomputes the gate and requires every required
|
|
457
|
+
non-approval check to pass rather than trusting cached quality evidence.
|
|
458
|
+
The approver string is explicit local evidence, not authenticated identity;
|
|
459
|
+
repositories that require independent identity must also use protected review,
|
|
460
|
+
CODEOWNERS, or CI/OIDC controls.
|
|
461
|
+
Local approval evidence records explicit intent but does not cryptographically
|
|
462
|
+
authenticate the approver; protect release authorization with repository review,
|
|
463
|
+
CODEOWNERS/branch protection, or CI/OIDC attestation.
|
|
431
464
|
Use `tdd.redPreflightCommands` to reference plain configured formatter commands;
|
|
432
465
|
they must pass before Red captures the authoritative test fingerprint.
|
|
433
466
|
Conventional `.venv` and `venv` Python environments containing a regular
|
|
@@ -460,7 +493,7 @@ unchanged test file. Test names/output must contain their `TEST-*` ID.
|
|
|
460
493
|
diagnostic codes are stable English; human status labels include Japanese.
|
|
461
494
|
|
|
462
495
|
`.musubix/policy-baseline.json` records minimum required checks, coverage,
|
|
463
|
-
architecture, formal policy, mutation
|
|
496
|
+
architecture, formal policy, mutation and approval modes, workflow strict/session/freshness settings,
|
|
464
497
|
CI-required attestation and strict OIDC identity/key binding, and required
|
|
465
498
|
command names. A baseline that requires TDD Red preflights must also include
|
|
466
499
|
their normalized `commands` definitions, which prevents replacing a trusted
|
|
@@ -477,6 +510,13 @@ nonblocking unless a constitution rule rejects the measured count. No configured
|
|
|
477
510
|
commands is skipped, not passed.
|
|
478
511
|
TDD commands require either command-specific `tddArgs` plus a `tddReport`, or a
|
|
479
512
|
built-in `vitest`, `jest`, `pytest`, `go-test`, `cargo`, `junit`, or `dotnet` adapter.
|
|
513
|
+
The `junit` adapter drives the Java JUnit Platform Console launcher, not arbitrary
|
|
514
|
+
JUnit-XML producers; runners such as PHPUnit that only emit JUnit XML need explicit
|
|
515
|
+
`tddArgs`/`tddReport` (or `testReport`) configuration instead. A custom
|
|
516
|
+
`musubix-json` report is a single-line-safe JSON document
|
|
517
|
+
`{"schemaVersion":1,"tests":[{"id":"TEST-APP-001","status":"passed"}]}` where
|
|
518
|
+
`status` is `passed`, `failed`, `skipped` or `error`, and an optional
|
|
519
|
+
`"operations":{"counter":12}` map carries deterministic performance counters.
|
|
480
520
|
Explicit custom configuration takes precedence. Adapters derive targeted
|
|
481
521
|
arguments and normalize native JSON/JSONL/XML into `musubix-json`. Vitest/Jest
|
|
482
522
|
reports may contain unrelated skipped tests; targeted TDD selects only the
|
|
@@ -501,7 +541,18 @@ change checkpoints additionally share a persisted monotonic order ledger, which
|
|
|
501
541
|
is authoritative for Red/Green boundaries; wall-clock timestamps are
|
|
502
542
|
informational. Legacy chronology without order evidence fails with an explicit
|
|
503
543
|
migration diagnostic. Missing, reordered, altered or orphaned records invalidate
|
|
504
|
-
the evidence.
|
|
544
|
+
the evidence. Superseded cycles are never replaced by a newer recording: if any
|
|
545
|
+
cycle lacks test-scoped provenance or a valid Red/Green, move
|
|
546
|
+
`.musubix/evidence/tdd.json` aside and re-record every cycle from a clean Red
|
|
547
|
+
baseline. There is deliberately no partial prune command, and hand-editing the
|
|
548
|
+
evidence is unsupported.
|
|
549
|
+
|
|
550
|
+
Deterministic mutant identities come from `musubix3 mutation identity
|
|
551
|
+
<REQ-ID> <TEST-ID> <sourcePath> <operator> <line> <column>`, which prints the
|
|
552
|
+
exact `MUT-*` value a schema-v1 mutation report must declare. `mutation
|
|
553
|
+
validate` reads `.musubix/evidence/mutation.json`; a configured `mutationReport`
|
|
554
|
+
is converted into that file by the gate, so validating before a gate run reports
|
|
555
|
+
absent rather than passing evidence.
|
|
505
556
|
|
|
506
557
|
CI executes isolated native contracts for Vitest, Jest,
|
|
507
558
|
pytest with `pytest-json-report`, Go test, Cargo test, and the pinned JUnit
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandConfig } from './config.js';
|
|
2
|
-
import type { MusubixTestReport } from './
|
|
2
|
+
import type { MusubixTestReport } from './test-report.js';
|
|
3
3
|
export type TestAdapter = NonNullable<CommandConfig['adapter']>;
|
|
4
4
|
export interface AdapterInvocation {
|
|
5
5
|
args: string[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ApprovalEvidence, type ApprovalStage } from './approval.js';
|
|
2
|
+
/** @id CODE-HUMAN-APPROVAL-GATES-002
|
|
3
|
+
* @implements REQ-HUMAN-APPROVAL-GATES-001 REQ-HUMAN-APPROVAL-GATES-006
|
|
4
|
+
* @design DES-APPROVAL-002 DES-APPROVAL-003
|
|
5
|
+
*/
|
|
6
|
+
export declare function recordApproval(root: string, stage: ApprovalStage, approver: string, expectedArtifactSha256: string): Promise<ApprovalEvidence>;
|