phasegate 0.117.0 → 0.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.118.0] - 2026-05-07
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **WI-085 follow-up: validator-system / harness-api 経路で `paths` config が phase-dependency-model に流入していなかった問題を修正** — v0.117.0 リリース後のセルフホスト dogfooding で発見。`scripts/harness/validator-system/infrastructure/adapters/phase-dependency-phase-gate-policy-adapter.ts` および `scripts/harness/harness-api/infrastructure/adapters/phase-dependency-model-query-adapter.ts` が `createPhaseDependencyModelModule({ rootDir })` を `phaseConfig` 引数なしで呼んでおり、`paths.designDocs` / `paths.inceptionDocs` が L2-001 (`npx phasegate validate --layer L2`) と harness-api 経由の phase-gate query から到達できない状態だった。`agent-integration` 配下の `phase-gate-query-adapter.ts` と同等の `loadResolvedConfigUseCase` + `toPhaseConfigSection` 注入経路を 3 箇所追加。
|
|
15
|
+
- dogfood 検証: `paths.designDocs: "mydocs/product/construction"` / `paths.inceptionDocs: "mydocs/inception"` 設定で L2-001 ブロッカーが `mydocs/inception/_shared/product_overview_plan.md` 等を要求することを確認。
|
|
16
|
+
- デフォルト設定での挙動は v0.117.0 と完全互換(dogfood 復元後にベースラインブロッカー `docs/product/units/{unit}_unit.md` のみ残ることを確認)。
|
|
17
|
+
|
|
10
18
|
## [0.117.0] - 2026-05-07
|
|
11
19
|
|
|
12
20
|
### Fixed
|
package/package.json
CHANGED
package/scripts/harness/harness-api/infrastructure/adapters/phase-dependency-model-query-adapter.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @unit harness-api
|
|
1
2
|
// @layer infrastructure
|
|
2
3
|
// phase-dependency-model-query-adapter.ts — PhaseDependencyModelQueryAdapter
|
|
3
4
|
// Wave 2完了後にリアル実装へ差し替え(旧: @stub: wave2-pending)
|
|
@@ -28,8 +29,17 @@ export class PhaseDependencyModelQueryAdapter implements PhaseGateQueryPort {
|
|
|
28
29
|
const traceModule = createTraceabilityModelModule(rootDir);
|
|
29
30
|
const storyIds = await traceModule.storyCatalog.getAllStoryIds();
|
|
30
31
|
|
|
32
|
+
// WI-085: paths config を phase-dependency-model に流入させる
|
|
33
|
+
const { createConfigFoundationModule } = await import('../../../config-foundation/composition-root.js');
|
|
34
|
+
const { toPhaseConfigSection } = await import('../../../config-foundation/application/mappers/phase-config-section-mapper.js');
|
|
35
|
+
const configModule = createConfigFoundationModule();
|
|
36
|
+
const resolvedConfig = await configModule.usecases.loadResolvedConfigUseCase.execute();
|
|
31
37
|
const { createPhaseDependencyModelModule } = await import('../../../phase-dependency-model/composition-root.js');
|
|
32
|
-
const phaseModule = createPhaseDependencyModelModule({
|
|
38
|
+
const phaseModule = createPhaseDependencyModelModule({
|
|
39
|
+
rootDir,
|
|
40
|
+
phaseConfig: toPhaseConfigSection(resolvedConfig.config),
|
|
41
|
+
reportOutputDir: resolvedConfig.config.reporting.outputDir,
|
|
42
|
+
});
|
|
33
43
|
|
|
34
44
|
const results: PhaseGateStoryResult[] = [];
|
|
35
45
|
for (const sid of storyIds) {
|
|
@@ -56,8 +66,17 @@ export class PhaseDependencyModelQueryAdapter implements PhaseGateQueryPort {
|
|
|
56
66
|
|
|
57
67
|
async queryUnit(unitId: string): Promise<PhaseInfo | null> {
|
|
58
68
|
try {
|
|
69
|
+
// WI-085: paths config を phase-dependency-model に流入させる
|
|
70
|
+
const { createConfigFoundationModule } = await import('../../../config-foundation/composition-root.js');
|
|
71
|
+
const { toPhaseConfigSection } = await import('../../../config-foundation/application/mappers/phase-config-section-mapper.js');
|
|
72
|
+
const configModule = createConfigFoundationModule();
|
|
73
|
+
const resolvedConfig = await configModule.usecases.loadResolvedConfigUseCase.execute();
|
|
59
74
|
const { createPhaseDependencyModelModule } = await import('../../../phase-dependency-model/composition-root.js');
|
|
60
|
-
const phaseModule = createPhaseDependencyModelModule({
|
|
75
|
+
const phaseModule = createPhaseDependencyModelModule({
|
|
76
|
+
rootDir,
|
|
77
|
+
phaseConfig: toPhaseConfigSection(resolvedConfig.config),
|
|
78
|
+
reportOutputDir: resolvedConfig.config.reporting.outputDir,
|
|
79
|
+
});
|
|
61
80
|
const output = await phaseModule.checkPhaseGateCommandHandler.execute({
|
|
62
81
|
targetLevel: 1,
|
|
63
82
|
unitId,
|
|
@@ -13,8 +13,17 @@ export class PhaseDependencyPhaseGatePolicyAdapter implements PhaseGatePolicyPor
|
|
|
13
13
|
violations: readonly HarnessErrorLike[];
|
|
14
14
|
}> {
|
|
15
15
|
try {
|
|
16
|
+
// WI-085: paths config を phase-dependency-model に流入させる
|
|
17
|
+
const { createConfigFoundationModule } = await import('../../../config-foundation/composition-root.js');
|
|
18
|
+
const { toPhaseConfigSection } = await import('../../../config-foundation/application/mappers/phase-config-section-mapper.js');
|
|
19
|
+
const configModule = createConfigFoundationModule();
|
|
20
|
+
const resolvedConfig = await configModule.usecases.loadResolvedConfigUseCase.execute();
|
|
16
21
|
const { createPhaseDependencyModelModule } = await import('../../../phase-dependency-model/composition-root.js');
|
|
17
|
-
const mod = createPhaseDependencyModelModule({
|
|
22
|
+
const mod = createPhaseDependencyModelModule({
|
|
23
|
+
rootDir: process.cwd(),
|
|
24
|
+
phaseConfig: toPhaseConfigSection(resolvedConfig.config),
|
|
25
|
+
reportOutputDir: resolvedConfig.config.reporting.outputDir,
|
|
26
|
+
});
|
|
18
27
|
const result = await mod.checkPhaseGateCommandHandler.execute({
|
|
19
28
|
targetLevel: 2,
|
|
20
29
|
unitId: context.unitName,
|