@dommaker/harness 1.8.1 → 1.10.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 +16 -0
- package/README.md +10 -13
- package/dist/cli/commands/check.d.ts +3 -3
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +41 -78
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/constraints-report.d.ts +2 -10
- package/dist/cli/commands/constraints-report.d.ts.map +1 -1
- package/dist/cli/commands/constraints-report.js +4 -57
- package/dist/cli/commands/constraints-report.js.map +1 -1
- package/dist/cli/commands/constraints-retire.d.ts +9 -23
- package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
- package/dist/cli/commands/constraints-retire.js +39 -121
- package/dist/cli/commands/constraints-retire.js.map +1 -1
- package/dist/cli/commands/constraints.d.ts +3 -8
- package/dist/cli/commands/constraints.d.ts.map +1 -1
- package/dist/cli/commands/constraints.js +8 -23
- package/dist/cli/commands/constraints.js.map +1 -1
- package/dist/cli/commands/definitions.js +2 -2
- package/dist/cli/commands/init.d.ts +0 -32
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +7 -149
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +14 -17
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/scaffold-templates.d.ts +0 -2
- package/dist/cli/commands/scaffold-templates.d.ts.map +1 -1
- package/dist/cli/commands/scaffold-templates.js +2 -37
- package/dist/cli/commands/scaffold-templates.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts +0 -2
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +0 -10
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/commands/status.js +10 -10
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/sync-docs/agents-syncer.d.ts +0 -2
- package/dist/cli/commands/sync-docs/agents-syncer.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/agents-syncer.js +4 -23
- package/dist/cli/commands/sync-docs/agents-syncer.js.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +22 -0
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.js +113 -8
- package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -1
- package/dist/cli/commands/sync-docs/index.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/index.js +36 -4
- package/dist/cli/commands/sync-docs/index.js.map +1 -1
- package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
- package/dist/core/constraints/capabilities-parser.js +16 -4
- package/dist/core/constraints/capabilities-parser.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +15 -24
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +33 -72
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/checkers/docs-freshness.js +1 -1
- package/dist/core/constraints/checkers/docs-freshness.js.map +1 -1
- package/dist/core/constraints/checkers/governance-presence.d.ts +2 -1
- package/dist/core/constraints/checkers/governance-presence.d.ts.map +1 -1
- package/dist/core/constraints/checkers/governance-presence.js +4 -3
- package/dist/core/constraints/checkers/governance-presence.js.map +1 -1
- package/dist/core/constraints/checkers/index.d.ts +1 -1
- package/dist/core/constraints/checkers/index.d.ts.map +1 -1
- package/dist/core/constraints/checkers/index.js +4 -8
- package/dist/core/constraints/checkers/index.js.map +1 -1
- package/dist/core/constraints/checkers/iron-flags.d.ts +3 -4
- package/dist/core/constraints/checkers/iron-flags.d.ts.map +1 -1
- package/dist/core/constraints/checkers/iron-flags.js +4 -5
- package/dist/core/constraints/checkers/iron-flags.js.map +1 -1
- package/dist/core/constraints/checkers/no-test-simplification.js +1 -1
- package/dist/core/constraints/checkers/no-test-simplification.js.map +1 -1
- package/dist/core/constraints/checkers/types.d.ts +1 -1
- package/dist/core/constraints/checkers/types.js +1 -1
- package/dist/core/constraints/definitions/guidelines.d.ts +4 -4
- package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
- package/dist/core/constraints/definitions/guidelines.js +9 -25
- package/dist/core/constraints/definitions/guidelines.js.map +1 -1
- package/dist/core/constraints/definitions/iron-laws.d.ts +4 -4
- package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -1
- package/dist/core/constraints/definitions/iron-laws.js +10 -81
- package/dist/core/constraints/definitions/iron-laws.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts +7 -9
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +13 -16
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/index.d.ts +2 -5
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +3 -13
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/injection-writer.d.ts +10 -38
- package/dist/core/constraints/injection-writer.d.ts.map +1 -1
- package/dist/core/constraints/injection-writer.js +17 -54
- package/dist/core/constraints/injection-writer.js.map +1 -1
- package/dist/core/constraints/run-env.d.ts +1 -10
- package/dist/core/constraints/run-env.d.ts.map +1 -1
- package/dist/core/constraints/run-env.js +1 -22
- package/dist/core/constraints/run-env.js.map +1 -1
- package/dist/core/constraints/usage-report.d.ts +5 -7
- package/dist/core/constraints/usage-report.d.ts.map +1 -1
- package/dist/core/constraints/usage-report.js +5 -10
- package/dist/core/constraints/usage-report.js.map +1 -1
- package/dist/core/effective-constraints.d.ts +12 -22
- package/dist/core/effective-constraints.d.ts.map +1 -1
- package/dist/core/effective-constraints.js +13 -30
- package/dist/core/effective-constraints.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/project-config-loader.d.ts +4 -42
- package/dist/core/project-config-loader.d.ts.map +1 -1
- package/dist/core/project-config-loader.js +16 -125
- package/dist/core/project-config-loader.js.map +1 -1
- package/dist/core/validators/passes-gate.d.ts +2 -2
- package/dist/core/validators/passes-gate.js +6 -6
- package/dist/core/validators/passes-gate.js.map +1 -1
- package/dist/hooks/bootstrap.d.ts +9 -12
- package/dist/hooks/bootstrap.d.ts.map +1 -1
- package/dist/hooks/bootstrap.js +9 -31
- package/dist/hooks/bootstrap.js.map +1 -1
- package/dist/hooks/index.d.ts +5 -7
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -10
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +9 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -23
- package/dist/index.js.map +1 -1
- package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
- package/dist/monitoring/trace-analyzer.js +11 -12
- package/dist/monitoring/trace-analyzer.js.map +1 -1
- package/dist/monitoring/traces.d.ts +4 -4
- package/dist/monitoring/traces.d.ts.map +1 -1
- package/dist/monitoring/traces.js +8 -8
- package/dist/monitoring/traces.js.map +1 -1
- package/dist/presets/standard.d.ts +8 -10
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +10 -16
- package/dist/presets/standard.js.map +1 -1
- package/dist/types/constraint.d.ts +24 -35
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js +8 -7
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/passes-gate.d.ts +5 -5
- package/dist/types/passes-gate.d.ts.map +1 -1
- package/dist/types/project-config.d.ts +8 -66
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/types/project-config.js +3 -2
- package/dist/types/project-config.js.map +1 -1
- package/dist/types/trace.d.ts +8 -10
- package/dist/types/trace.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/CONTEXT.md +3 -3
- package/src/__tests__/checker-extra.test.ts +37 -61
- package/src/__tests__/checker.test.ts +10 -115
- package/src/__tests__/effective-constraints.test.ts +18 -83
- package/src/__tests__/iron-laws.test.ts +71 -90
- package/src/__tests__/passes-gate-check.test.ts +2 -2
- package/src/__tests__/project-config-loader-extra.test.ts +22 -123
- package/src/__tests__/project-config-loader.test.ts +5 -33
- package/src/__tests__/public-exports.test.ts +31 -11
- package/src/__tests__/public-type-surface.test.ts +2 -13
- package/src/__tests__/public-value-surface.test.ts +1 -7
- package/src/__tests__/skip-semantics.test.ts +21 -37
- package/src/__tests__/trace-analyzer-extra.test.ts +14 -14
- package/src/__tests__/trace-analyzer.test.ts +21 -21
- package/src/__tests__/trace-collector.test.ts +22 -22
- package/src/__tests__/traces.test.ts +27 -28
- package/src/cli/commands/CONTEXT.md +12 -9
- package/src/cli/commands/__tests__/check-read-count.test.ts +4 -15
- package/src/cli/commands/__tests__/check-skip-output.test.ts +14 -14
- package/src/cli/commands/__tests__/check.test.ts +14 -31
- package/src/cli/commands/__tests__/constraints-report.test.ts +12 -80
- package/src/cli/commands/__tests__/constraints-retire.test.ts +42 -231
- package/src/cli/commands/__tests__/init-governance-io.test.ts +12 -58
- package/src/cli/commands/__tests__/init-ondisk.test.ts +12 -20
- package/src/cli/commands/__tests__/init.test.ts +0 -11
- package/src/cli/commands/__tests__/project-path-anchoring.test.ts +2 -2
- package/src/cli/commands/__tests__/registry.test.ts +39 -3
- package/src/cli/commands/__tests__/report-extra.test.ts +4 -4
- package/src/cli/commands/__tests__/report.test.ts +1 -1
- package/src/cli/commands/__tests__/scaffold.test.ts +4 -14
- package/src/cli/commands/__tests__/status-analysis-wiring.test.ts +3 -3
- package/src/cli/commands/__tests__/status-extra.test.ts +14 -14
- package/src/cli/commands/__tests__/status.test.ts +12 -12
- package/src/cli/commands/__tests__/sync-docs-agents.test.ts +1 -1
- package/src/cli/commands/__tests__/sync-docs-table-layout.test.ts +259 -0
- package/src/cli/commands/check.ts +43 -82
- package/src/cli/commands/constraints-report.ts +4 -59
- package/src/cli/commands/constraints-retire.ts +49 -154
- package/src/cli/commands/constraints.ts +11 -26
- package/src/cli/commands/definitions.ts +2 -2
- package/src/cli/commands/init.ts +8 -179
- package/src/cli/commands/report.ts +19 -23
- package/src/cli/commands/scaffold-templates.ts +1 -37
- package/src/cli/commands/scaffold.ts +0 -11
- package/src/cli/commands/status.ts +10 -10
- package/src/cli/commands/sync-docs/agents-syncer.ts +4 -25
- package/src/cli/commands/sync-docs/capabilities-syncer.ts +139 -9
- package/src/cli/commands/sync-docs/index.ts +41 -4
- package/src/core/CONTEXT.md +9 -9
- package/src/core/constraints/__tests__/capability-counts.test.ts +5 -5
- package/src/core/constraints/__tests__/collect-constraints.test.ts +13 -8
- package/src/core/constraints/__tests__/git-evidence.test.ts +4 -7
- package/src/core/constraints/__tests__/injection-writer.test.ts +8 -61
- package/src/core/constraints/__tests__/run-env.test.ts +5 -34
- package/src/core/constraints/__tests__/trace-injection.test.ts +1 -1
- package/src/core/constraints/capabilities-parser.ts +17 -5
- package/src/core/constraints/checker.ts +39 -88
- package/src/core/constraints/checkers/__tests__/check-outcome.test.ts +5 -8
- package/src/core/constraints/checkers/__tests__/governance-presence.test.ts +1 -53
- package/src/core/constraints/checkers/__tests__/iron-flags.test.ts +5 -25
- package/src/core/constraints/checkers/docs-freshness.ts +1 -1
- package/src/core/constraints/checkers/governance-presence.ts +4 -3
- package/src/core/constraints/checkers/index.ts +4 -10
- package/src/core/constraints/checkers/iron-flags.ts +3 -12
- package/src/core/constraints/checkers/no-test-simplification.ts +1 -1
- package/src/core/constraints/checkers/types.ts +1 -1
- package/src/core/constraints/definitions/guidelines.ts +8 -25
- package/src/core/constraints/definitions/iron-laws.ts +9 -82
- package/src/core/constraints/definitions.ts +14 -15
- package/src/core/constraints/index.ts +4 -19
- package/src/core/constraints/injection-writer.ts +16 -61
- package/src/core/constraints/run-env.ts +1 -33
- package/src/core/constraints/usage-report.ts +8 -15
- package/src/core/effective-constraints.ts +14 -45
- package/src/core/index.ts +3 -10
- package/src/core/project-config-loader.ts +20 -145
- package/src/core/validators/passes-gate.ts +6 -6
- package/src/failure/CONTEXT.md +1 -1
- package/src/hooks/CONTEXT.md +12 -22
- package/src/hooks/__tests__/bootstrap.test.ts +24 -75
- package/src/hooks/bootstrap.ts +9 -48
- package/src/hooks/index.ts +5 -20
- package/src/index.ts +9 -31
- package/src/monitoring/__tests__/trace-file-anchoring.test.ts +1 -1
- package/src/monitoring/__tests__/traces.test.ts +22 -22
- package/src/monitoring/trace-analyzer.ts +12 -13
- package/src/monitoring/traces.ts +8 -8
- package/src/presets/__tests__/standard.test.ts +12 -16
- package/src/presets/standard.ts +14 -23
- package/src/types/__tests__/types.test.ts +3 -3
- package/src/types/constraint.ts +26 -40
- package/src/types/passes-gate.ts +5 -5
- package/src/types/project-config.ts +8 -77
- package/src/types/trace.ts +8 -11
- package/dist/core/constraints/agent-prompt-renderer.d.ts +0 -32
- package/dist/core/constraints/agent-prompt-renderer.d.ts.map +0 -1
- package/dist/core/constraints/agent-prompt-renderer.js +0 -55
- package/dist/core/constraints/agent-prompt-renderer.js.map +0 -1
- package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts +0 -6
- package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts.map +0 -1
- package/dist/core/constraints/checkers/no-bypass-checkpoint.js +0 -40
- package/dist/core/constraints/checkers/no-bypass-checkpoint.js.map +0 -1
- package/dist/core/constraints/definitions/prompts.d.ts +0 -12
- package/dist/core/constraints/definitions/prompts.d.ts.map +0 -1
- package/dist/core/constraints/definitions/prompts.js +0 -400
- package/dist/core/constraints/definitions/prompts.js.map +0 -1
- package/dist/core/constraints/injection-drift.d.ts +0 -61
- package/dist/core/constraints/injection-drift.d.ts.map +0 -1
- package/dist/core/constraints/injection-drift.js +0 -131
- package/dist/core/constraints/injection-drift.js.map +0 -1
- package/dist/core/constraints/injection-renderer.d.ts +0 -23
- package/dist/core/constraints/injection-renderer.d.ts.map +0 -1
- package/dist/core/constraints/injection-renderer.js +0 -44
- package/dist/core/constraints/injection-renderer.js.map +0 -1
- package/dist/hooks/config.d.ts +0 -30
- package/dist/hooks/config.d.ts.map +0 -1
- package/dist/hooks/config.js +0 -34
- package/dist/hooks/config.js.map +0 -1
- package/dist/hooks/pipeline.d.ts +0 -54
- package/dist/hooks/pipeline.d.ts.map +0 -1
- package/dist/hooks/pipeline.js +0 -173
- package/dist/hooks/pipeline.js.map +0 -1
- package/dist/hooks/registry.d.ts +0 -70
- package/dist/hooks/registry.d.ts.map +0 -1
- package/dist/hooks/registry.js +0 -141
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/types.d.ts +0 -113
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js +0 -9
- package/dist/hooks/types.js.map +0 -1
- package/src/__tests__/hooks-pipeline.test.ts +0 -201
- package/src/cli/commands/__tests__/check-drift.test.ts +0 -158
- package/src/cli/commands/__tests__/init-injection.test.ts +0 -466
- package/src/core/constraints/__tests__/agent-prompt-renderer.test.ts +0 -129
- package/src/core/constraints/__tests__/injection-drift.test.ts +0 -247
- package/src/core/constraints/agent-prompt-renderer.ts +0 -67
- package/src/core/constraints/checkers/__tests__/no-bypass-checkpoint.test.ts +0 -76
- package/src/core/constraints/checkers/no-bypass-checkpoint.ts +0 -40
- package/src/core/constraints/definitions/prompts.ts +0 -414
- package/src/core/constraints/injection-drift.ts +0 -142
- package/src/core/constraints/injection-renderer.ts +0 -44
- package/src/hooks/__tests__/config.test.ts +0 -19
- package/src/hooks/__tests__/pipeline.test.ts +0 -195
- package/src/hooks/__tests__/registry.test.ts +0 -115
- package/src/hooks/config.ts +0 -33
- package/src/hooks/pipeline.ts +0 -202
- package/src/hooks/registry.ts +0 -166
- package/src/hooks/types.ts +0 -120
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 约束检查引擎
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
4
|
+
* severity 显式模型(ADR-0029):
|
|
5
|
+
* - severity='error':检查失败立即抛出异常(block 模式)
|
|
6
|
+
* - severity='warning':检查失败记录警告
|
|
7
|
+
* 全部约束 kind='check',必须带真实 checker(注册表闭环)。
|
|
8
8
|
*/
|
|
9
9
|
import { Constraint, ConstraintContext, ConstraintResult, ConstraintCheckResult } from '../../types/constraint';
|
|
10
10
|
import type { ExecutionTrace } from '../../types/trace';
|
|
@@ -43,11 +43,7 @@ export declare class ConstraintChecker {
|
|
|
43
43
|
*
|
|
44
44
|
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
45
45
|
*/
|
|
46
|
-
getConstraints(customConfig?: MergedConstraintsConfig | null):
|
|
47
|
-
ironLaws: Record<string, Constraint>;
|
|
48
|
-
guidelines: Record<string, Constraint>;
|
|
49
|
-
prompts: Record<string, Constraint>;
|
|
50
|
-
};
|
|
46
|
+
getConstraints(customConfig?: MergedConstraintsConfig | null): Record<string, Constraint>;
|
|
51
47
|
/**
|
|
52
48
|
* 检查单个约束
|
|
53
49
|
*
|
|
@@ -55,10 +51,6 @@ export declare class ConstraintChecker {
|
|
|
55
51
|
* @param runEnv 可选,本 run 的运行级观察面(ADR-0023);不传 = 本次调用独占一份
|
|
56
52
|
*/
|
|
57
53
|
check(constraint: Constraint, context: ConstraintContext, evidence?: GitEvidence, runEnv?: RunEnv): Promise<ConstraintResult>;
|
|
58
|
-
/**
|
|
59
|
-
* 根据约束层级获取严重性
|
|
60
|
-
*/
|
|
61
|
-
private getSeverity;
|
|
62
54
|
/**
|
|
63
55
|
* 记录约束检查的 trace
|
|
64
56
|
*/
|
|
@@ -67,7 +59,7 @@ export declare class ConstraintChecker {
|
|
|
67
59
|
* 检查约束前置条件(工单 21:分发至 checkers/ 注册表)
|
|
68
60
|
*
|
|
69
61
|
* 注册表闭环(ADR-0001):kind='check' 未注册 checker 直接抛错,
|
|
70
|
-
* 不再有"未注册默认通过"
|
|
62
|
+
* 不再有"未注册默认通过"路径。
|
|
71
63
|
*
|
|
72
64
|
* git 证据(stagedDiff/stagedDiffNames)单一来源 = GitEvidence adapter(#87):
|
|
73
65
|
* 一次 run 内调用方传同一实例即至多取证一次,run 外调用独占一份。
|
|
@@ -81,15 +73,14 @@ export declare class ConstraintChecker {
|
|
|
81
73
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
82
74
|
*/
|
|
83
75
|
findApplicableConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
prompts: Constraint[];
|
|
76
|
+
errors: Constraint[];
|
|
77
|
+
warnings: Constraint[];
|
|
87
78
|
};
|
|
88
79
|
/**
|
|
89
80
|
* 执行约束检查
|
|
90
81
|
*
|
|
91
|
-
* -
|
|
92
|
-
* -
|
|
82
|
+
* - severity='error':检查失败立即抛出异常
|
|
83
|
+
* - severity='warning':检查失败记录警告
|
|
93
84
|
*
|
|
94
85
|
* @param context 约束上下文
|
|
95
86
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
@@ -104,23 +95,23 @@ export declare class ConstraintChecker {
|
|
|
104
95
|
* 收集模式执行约束检查(harness report 的不抛出口,架构评审候选1)
|
|
105
96
|
*
|
|
106
97
|
* 与 checkConstraints 共享同一检查体,唯一差别是不 throw:
|
|
107
|
-
*
|
|
98
|
+
* error 级违规照进 result.errors、passed=false,后续 error 与 warning 级照常执行,
|
|
108
99
|
* trace 逐条照记。报告类消费者拿全量视图;阻断语义只属于 checkConstraints
|
|
109
100
|
* (throw 契约是 #119 判定证据的外溢面,逐字不动)。
|
|
110
101
|
*/
|
|
111
102
|
collectConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null, evidence?: GitEvidence, runEnv?: RunEnv): Promise<ConstraintCheckResult>;
|
|
112
103
|
/**
|
|
113
104
|
* checkConstraints / collectConstraints 的共享检查体;
|
|
114
|
-
* mode='block'
|
|
105
|
+
* mode='block' 首个 error 级违规即抛,mode='collect' 全量跑完不抛
|
|
115
106
|
*/
|
|
116
107
|
private runAllConstraints;
|
|
117
108
|
/**
|
|
118
|
-
* 执行前检查(仅检查
|
|
109
|
+
* 执行前检查(仅检查 severity='error' 的约束)
|
|
119
110
|
*
|
|
120
111
|
* @param context 约束上下文
|
|
121
112
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
122
113
|
* @param evidence 可选,本次检查共用的 git 证据 adapter(#87,同 checkConstraints)
|
|
123
|
-
* @throws ConstraintViolationError
|
|
114
|
+
* @throws ConstraintViolationError 如果有 error 级违规
|
|
124
115
|
*/
|
|
125
116
|
beforeExecution(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null, evidence?: GitEvidence): Promise<void>;
|
|
126
117
|
}
|
|
@@ -140,7 +131,7 @@ export interface CheckConstraintsOptions {
|
|
|
140
131
|
customConfig?: MergedConstraintsConfig | null;
|
|
141
132
|
}
|
|
142
133
|
/**
|
|
143
|
-
*
|
|
134
|
+
* 快捷函数:执行约束检查
|
|
144
135
|
*
|
|
145
136
|
* @param context 约束上下文
|
|
146
137
|
* @param options.onTrace 每条约束检查后的回调(用于记录 trace 到外部存储)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* 约束检查引擎
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
5
|
+
* severity 显式模型(ADR-0029):
|
|
6
|
+
* - severity='error':检查失败立即抛出异常(block 模式)
|
|
7
|
+
* - severity='warning':检查失败记录警告
|
|
8
|
+
* 全部约束 kind='check',必须带真实 checker(注册表闭环)。
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.constraintChecker = exports.ConstraintChecker = void 0;
|
|
@@ -53,15 +53,7 @@ class ConstraintChecker {
|
|
|
53
53
|
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
54
54
|
*/
|
|
55
55
|
getConstraints(customConfig) {
|
|
56
|
-
|
|
57
|
-
const source = config
|
|
58
|
-
? { ironLaws: config.ironLaws, guidelines: config.guidelines, prompts: config.prompts ?? definitions_1.PROMPTS }
|
|
59
|
-
: { ironLaws: definitions_1.IRON_LAWS, guidelines: definitions_1.GUIDELINES, prompts: definitions_1.PROMPTS };
|
|
60
|
-
return {
|
|
61
|
-
ironLaws: source.ironLaws,
|
|
62
|
-
guidelines: source.guidelines,
|
|
63
|
-
prompts: source.prompts,
|
|
64
|
-
};
|
|
56
|
+
return customConfig ? customConfig.constraints : definitions_1.CONSTRAINTS;
|
|
65
57
|
}
|
|
66
58
|
/**
|
|
67
59
|
* 检查单个约束
|
|
@@ -70,22 +62,12 @@ class ConstraintChecker {
|
|
|
70
62
|
* @param runEnv 可选,本 run 的运行级观察面(ADR-0023);不传 = 本次调用独占一份
|
|
71
63
|
*/
|
|
72
64
|
async check(constraint, context, evidence, runEnv) {
|
|
73
|
-
// prompt 类约束不参与 checker 执行(ADR-0001:仅参与注入)
|
|
74
|
-
if (constraint.kind === 'prompt') {
|
|
75
|
-
return {
|
|
76
|
-
id: constraint.id,
|
|
77
|
-
level: constraint.level,
|
|
78
|
-
satisfied: true,
|
|
79
|
-
constraint,
|
|
80
|
-
checkedAt: new Date(),
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
65
|
// 检查前置条件('skip' = 约定未采用/证据未接线:satisfied 置 true 但不计 pass/fail)
|
|
84
66
|
const outcome = (0, checkers_1.normalizeCheckOutcome)(await this.checkPrecondition(constraint, context, evidence, runEnv));
|
|
85
67
|
if (outcome.skipped) {
|
|
86
68
|
return {
|
|
87
69
|
id: constraint.id,
|
|
88
|
-
|
|
70
|
+
severity: constraint.severity,
|
|
89
71
|
satisfied: true,
|
|
90
72
|
skipped: true,
|
|
91
73
|
constraint,
|
|
@@ -96,7 +78,7 @@ class ConstraintChecker {
|
|
|
96
78
|
const satisfied = outcome.satisfied;
|
|
97
79
|
return {
|
|
98
80
|
id: constraint.id,
|
|
99
|
-
|
|
81
|
+
severity: constraint.severity,
|
|
100
82
|
satisfied,
|
|
101
83
|
constraint,
|
|
102
84
|
message: satisfied ? undefined : constraint.message,
|
|
@@ -105,32 +87,16 @@ class ConstraintChecker {
|
|
|
105
87
|
checkedAt: new Date(),
|
|
106
88
|
};
|
|
107
89
|
}
|
|
108
|
-
/**
|
|
109
|
-
* 根据约束层级获取严重性
|
|
110
|
-
*/
|
|
111
|
-
getSeverity(level) {
|
|
112
|
-
switch (level) {
|
|
113
|
-
case 'iron_law':
|
|
114
|
-
return 'error';
|
|
115
|
-
case 'guideline':
|
|
116
|
-
return 'warning';
|
|
117
|
-
case 'prompt':
|
|
118
|
-
return 'info';
|
|
119
|
-
default:
|
|
120
|
-
return 'warning';
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
90
|
/**
|
|
124
91
|
* 记录约束检查的 trace
|
|
125
92
|
*/
|
|
126
93
|
recordTrace(constraint, checkResult, context) {
|
|
127
94
|
this.traceRecorder.record({
|
|
128
95
|
constraintId: constraint.id,
|
|
129
|
-
|
|
96
|
+
severity: constraint.severity,
|
|
130
97
|
timestamp: Date.now(),
|
|
131
98
|
result: checkResult.skipped ? 'skip' : checkResult.satisfied ? 'pass' : 'fail',
|
|
132
99
|
operation: context.operation,
|
|
133
|
-
severity: this.getSeverity(constraint.level),
|
|
134
100
|
projectPath: context.projectPath,
|
|
135
101
|
sessionId: context.sessionId,
|
|
136
102
|
evidence: checkResult.evidence,
|
|
@@ -140,7 +106,7 @@ class ConstraintChecker {
|
|
|
140
106
|
* 检查约束前置条件(工单 21:分发至 checkers/ 注册表)
|
|
141
107
|
*
|
|
142
108
|
* 注册表闭环(ADR-0001):kind='check' 未注册 checker 直接抛错,
|
|
143
|
-
* 不再有"未注册默认通过"
|
|
109
|
+
* 不再有"未注册默认通过"路径。
|
|
144
110
|
*
|
|
145
111
|
* git 证据(stagedDiff/stagedDiffNames)单一来源 = GitEvidence adapter(#87):
|
|
146
112
|
* 一次 run 内调用方传同一实例即至多取证一次,run 外调用独占一份。
|
|
@@ -150,7 +116,7 @@ class ConstraintChecker {
|
|
|
150
116
|
const impl = (0, checkers_1.getConstraintCheck)(constraint.id);
|
|
151
117
|
if (!impl) {
|
|
152
118
|
throw new Error(`[harness] 约束 "${constraint.id}" (kind='check') 未注册 checker,拒绝静默通过。` +
|
|
153
|
-
`请在 checkers/
|
|
119
|
+
`请在 checkers/ 注册实现(纯文本提示层已随 ADR-0029 关停,文本规则写入项目治理文档)。`);
|
|
154
120
|
}
|
|
155
121
|
const projectPath = context.projectPath || process.cwd();
|
|
156
122
|
const git = evidence ?? (0, git_evidence_1.createGitEvidence)(projectPath);
|
|
@@ -170,20 +136,17 @@ class ConstraintChecker {
|
|
|
170
136
|
findApplicableConstraints(context, customConfig) {
|
|
171
137
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
172
138
|
const constraints = this.getConstraints(customConfig);
|
|
173
|
-
const
|
|
174
|
-
return Object.values(constraintSet).filter(constraint => (0, triggers_1.matchesTrigger)(constraint, operations));
|
|
175
|
-
};
|
|
139
|
+
const applicable = Object.values(constraints).filter(constraint => (0, triggers_1.matchesTrigger)(constraint, operations));
|
|
176
140
|
return {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
prompts: filterByTrigger(constraints.prompts),
|
|
141
|
+
errors: applicable.filter(c => c.severity === 'error'),
|
|
142
|
+
warnings: applicable.filter(c => c.severity === 'warning'),
|
|
180
143
|
};
|
|
181
144
|
}
|
|
182
145
|
/**
|
|
183
146
|
* 执行约束检查
|
|
184
147
|
*
|
|
185
|
-
* -
|
|
186
|
-
* -
|
|
148
|
+
* - severity='error':检查失败立即抛出异常
|
|
149
|
+
* - severity='warning':检查失败记录警告
|
|
187
150
|
*
|
|
188
151
|
* @param context 约束上下文
|
|
189
152
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
@@ -200,7 +163,7 @@ class ConstraintChecker {
|
|
|
200
163
|
* 收集模式执行约束检查(harness report 的不抛出口,架构评审候选1)
|
|
201
164
|
*
|
|
202
165
|
* 与 checkConstraints 共享同一检查体,唯一差别是不 throw:
|
|
203
|
-
*
|
|
166
|
+
* error 级违规照进 result.errors、passed=false,后续 error 与 warning 级照常执行,
|
|
204
167
|
* trace 逐条照记。报告类消费者拿全量视图;阻断语义只属于 checkConstraints
|
|
205
168
|
* (throw 契约是 #119 判定证据的外溢面,逐字不动)。
|
|
206
169
|
*/
|
|
@@ -209,7 +172,7 @@ class ConstraintChecker {
|
|
|
209
172
|
}
|
|
210
173
|
/**
|
|
211
174
|
* checkConstraints / collectConstraints 的共享检查体;
|
|
212
|
-
* mode='block'
|
|
175
|
+
* mode='block' 首个 error 级违规即抛,mode='collect' 全量跑完不抛
|
|
213
176
|
*/
|
|
214
177
|
async runAllConstraints(context, customConfig, evidence, runEnv, mode) {
|
|
215
178
|
// run 起始:重置 src 扫描缓存(S7);git 证据 = 本 run 独占的 adapter 实例(工单 18 → #87)
|
|
@@ -219,20 +182,20 @@ class ConstraintChecker {
|
|
|
219
182
|
// 观察面同一形状(ADR-0023):调用方传了就共用,没传也只造一枚——逐条 checker 不再各读一遍配置
|
|
220
183
|
const env = runEnv ?? (0, run_env_1.createRunEnv)(projectPath);
|
|
221
184
|
const result = {
|
|
222
|
-
|
|
223
|
-
|
|
185
|
+
errors: [],
|
|
186
|
+
warnings: [],
|
|
224
187
|
passed: true,
|
|
225
188
|
warningCount: 0,
|
|
226
189
|
};
|
|
227
190
|
const constraints = this.getConstraints(customConfig);
|
|
228
191
|
// context.operation 为主触发条件,extraTriggers 为次级推断(ADR-0001),任一命中即匹配
|
|
229
192
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
230
|
-
// 1.
|
|
231
|
-
for (const constraint of Object.values(constraints.
|
|
193
|
+
// 1. error 级: block 模式首个违规即抛;collect 模式全量收集
|
|
194
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'error')) {
|
|
232
195
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
233
196
|
continue;
|
|
234
197
|
const checkResult = await this.check(constraint, context, run, env);
|
|
235
|
-
result.
|
|
198
|
+
result.errors.push(checkResult);
|
|
236
199
|
this.recordTrace(constraint, checkResult, context);
|
|
237
200
|
if (!checkResult.satisfied) {
|
|
238
201
|
result.passed = false;
|
|
@@ -241,12 +204,12 @@ class ConstraintChecker {
|
|
|
241
204
|
}
|
|
242
205
|
}
|
|
243
206
|
}
|
|
244
|
-
// 2.
|
|
245
|
-
for (const constraint of Object.values(constraints.
|
|
207
|
+
// 2. warning 级: 记录警告
|
|
208
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'warning')) {
|
|
246
209
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
247
210
|
continue;
|
|
248
211
|
const checkResult = await this.check(constraint, context, run, env);
|
|
249
|
-
result.
|
|
212
|
+
result.warnings.push(checkResult);
|
|
250
213
|
this.recordTrace(constraint, checkResult, context);
|
|
251
214
|
if (!checkResult.satisfied) {
|
|
252
215
|
result.warningCount++;
|
|
@@ -255,12 +218,12 @@ class ConstraintChecker {
|
|
|
255
218
|
return result;
|
|
256
219
|
}
|
|
257
220
|
/**
|
|
258
|
-
* 执行前检查(仅检查
|
|
221
|
+
* 执行前检查(仅检查 severity='error' 的约束)
|
|
259
222
|
*
|
|
260
223
|
* @param context 约束上下文
|
|
261
224
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
262
225
|
* @param evidence 可选,本次检查共用的 git 证据 adapter(#87,同 checkConstraints)
|
|
263
|
-
* @throws ConstraintViolationError
|
|
226
|
+
* @throws ConstraintViolationError 如果有 error 级违规
|
|
264
227
|
*/
|
|
265
228
|
async beforeExecution(context, customConfig, evidence) {
|
|
266
229
|
const projectPath = context.projectPath || process.cwd();
|
|
@@ -269,7 +232,7 @@ class ConstraintChecker {
|
|
|
269
232
|
const env = (0, run_env_1.createRunEnv)(projectPath);
|
|
270
233
|
const constraints = this.getConstraints(customConfig);
|
|
271
234
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
272
|
-
for (const constraint of Object.values(constraints.
|
|
235
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'error')) {
|
|
273
236
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
274
237
|
continue;
|
|
275
238
|
const result = await this.check(constraint, context, run, env);
|
|
@@ -291,13 +254,11 @@ exports.ConstraintChecker = ConstraintChecker;
|
|
|
291
254
|
async function checkConstraint(constraintId, context, customConfig) {
|
|
292
255
|
const checker = ConstraintChecker.getInstance();
|
|
293
256
|
const constraints = checker.getConstraints(customConfig);
|
|
294
|
-
const constraint = constraints
|
|
295
|
-
constraints.guidelines[constraintId] ||
|
|
296
|
-
constraints.prompts[constraintId];
|
|
257
|
+
const constraint = constraints[constraintId];
|
|
297
258
|
if (!constraint) {
|
|
298
259
|
return {
|
|
299
260
|
id: constraintId,
|
|
300
|
-
|
|
261
|
+
severity: 'warning',
|
|
301
262
|
satisfied: false,
|
|
302
263
|
message: `未知的约束: ${constraintId}`,
|
|
303
264
|
checkedAt: new Date(),
|
|
@@ -306,7 +267,7 @@ async function checkConstraint(constraintId, context, customConfig) {
|
|
|
306
267
|
return checker.check(constraint, context);
|
|
307
268
|
}
|
|
308
269
|
/**
|
|
309
|
-
*
|
|
270
|
+
* 快捷函数:执行约束检查
|
|
310
271
|
*
|
|
311
272
|
* @param context 约束上下文
|
|
312
273
|
* @param options.onTrace 每条约束检查后的回调(用于记录 trace 到外部存储)
|
|
@@ -315,9 +276,9 @@ async function checkConstraint(constraintId, context, customConfig) {
|
|
|
315
276
|
async function checkConstraints(context, options) {
|
|
316
277
|
const result = await ConstraintChecker.getInstance().checkConstraints(context, options?.customConfig ?? null);
|
|
317
278
|
if (options?.onTrace) {
|
|
318
|
-
for (const r of result.
|
|
279
|
+
for (const r of result.errors)
|
|
319
280
|
options.onTrace(r);
|
|
320
|
-
for (const r of result.
|
|
281
|
+
for (const r of result.warnings)
|
|
321
282
|
options.onTrace(r);
|
|
322
283
|
}
|
|
323
284
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,7 +84,7 @@ exports.docsFreshness = {
|
|
|
84
84
|
if (deadEntries.length > 0) {
|
|
85
85
|
// 证据通道点名条目(harness#119):此前是 console.error 侧信道(2026-08-08 studio
|
|
86
86
|
// CI 4 连红时的临时办法),CLI 结构化输出与 trace 两头都拿不到,
|
|
87
|
-
//
|
|
87
|
+
// error 级拦截时用户只看到一句通用提示,basename 碰撞下无从定位
|
|
88
88
|
return {
|
|
89
89
|
pass: false,
|
|
90
90
|
evidence: (0, types_1.formatEvidence)('CAPABILITIES.md 登记的条目不存在', deadEntries),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-freshness.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/docs-freshness.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2BAAgC;AAChC,+BAA4B;AAC5B,uEAAuF;AACvF,oDAAqF;AACrF,sEAAmE;AACnE,wCAAmD;AAGnD,mCAAyC;AAEzC;;;;GAIG;AACH,SAAS,4BAA4B;IACnC,OAAO;QACL,wDAAwD;QACxD,EAAE,IAAI,EAAE,cAAc,EAAE;QACxB,2DAA2D;QAC3D,EAAE,IAAI,EAAE,mBAAmB,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,GAAa;IAC9C,IAAI,CAAC;QACH,yDAAyD;QACzD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,+BAAqB,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CACrF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAClB,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CAAC,GAAa;IACxC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,+BAAqB,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,2CAAmB,EAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,2CAAmB,EAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AACtD,CAAC;AAEY,QAAA,aAAa,GAAoB;IAC5C,EAAE,EAAE,gBAAgB;IACpB,KAAK,CAAC,QAAQ,CAAC,GAAG;QAChB,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAEpC,4DAA4D;QAC5D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QAE7C,8CAA8C;QAC9C,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,gEAAgE;YAChE,0CAA0C;YAC1C,
|
|
1
|
+
{"version":3,"file":"docs-freshness.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/docs-freshness.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* governance_presence:治理契约在场守护(studio #302,ADR 2026-08-21 落点模型)
|
|
3
3
|
*
|
|
4
4
|
* 治理契约正本 = AGENTS.md 手写 `PRESERVE:governance` 段(旧模型仓 = CLAUDE.md
|
|
5
|
-
* Governance Rules / HARNESS_CONSTRAINTS
|
|
5
|
+
* Governance Rules 块 / 历史 HARNESS_CONSTRAINTS 注入段,ADR-0029 后注入段不再
|
|
6
|
+
* 生成,残留段仅作历史兼容判据)。PRESERVE 只保「存在」不保「在场」:
|
|
6
7
|
* 段被删除/掏空后 sync-docs 重新生成会静默丢失,此处补「在场」校验。
|
|
7
8
|
*
|
|
8
9
|
* ADR-0001 存在性探测:项目未采用 harness 治理(无 .harness/config.yml)→ skip。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance-presence.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/governance-presence.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"governance-presence.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/governance-presence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAErD,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED,eAAO,MAAM,kBAAkB,EAAE,eA2BhC,CAAC"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* governance_presence:治理契约在场守护(studio #302,ADR 2026-08-21 落点模型)
|
|
4
4
|
*
|
|
5
5
|
* 治理契约正本 = AGENTS.md 手写 `PRESERVE:governance` 段(旧模型仓 = CLAUDE.md
|
|
6
|
-
* Governance Rules / HARNESS_CONSTRAINTS
|
|
6
|
+
* Governance Rules 块 / 历史 HARNESS_CONSTRAINTS 注入段,ADR-0029 后注入段不再
|
|
7
|
+
* 生成,残留段仅作历史兼容判据)。PRESERVE 只保「存在」不保「在场」:
|
|
7
8
|
* 段被删除/掏空后 sync-docs 重新生成会静默丢失,此处补「在场」校验。
|
|
8
9
|
*
|
|
9
10
|
* ADR-0001 存在性探测:项目未采用 harness 治理(无 .harness/config.yml)→ skip。
|
|
@@ -48,12 +49,12 @@ exports.governancePresence = {
|
|
|
48
49
|
if (hasClaudeGovernance((0, path_1.join)(projectPath, 'CLAUDE.md')))
|
|
49
50
|
return true;
|
|
50
51
|
// 证据随判定一并返回(ADR-0016 补迁):此前这里是 console.error 侧信道——
|
|
51
|
-
// 只进本地 stderr,进不了 CLI 结论块与 trace
|
|
52
|
+
// 只进本地 stderr,进不了 CLI 结论块与 trace,error 级拦截时用户看不到该恢复哪个正本
|
|
52
53
|
return {
|
|
53
54
|
pass: false,
|
|
54
55
|
evidence: [
|
|
55
56
|
'治理契约缺失:AGENTS.md 无非空 PRESERVE:governance 段,CLAUDE.md 也无 Governance Rules 块(正本静默丢失)',
|
|
56
|
-
'修复:
|
|
57
|
+
'修复: 恢复其一——AGENTS.md 补回手写 PRESERVE:governance 段,或 CLAUDE.md 补回 Governance Rules 块',
|
|
57
58
|
],
|
|
58
59
|
};
|
|
59
60
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance-presence.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/governance-presence.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"governance-presence.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/governance-presence.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAWH,gEAGC;AAGD,kDAGC;AAlBD,+BAA4B;AAC5B,uEAAmE;AACnE,0DAA4F;AAG5F,mCAAmC;AACtB,QAAA,wBAAwB,GAAG,YAAY,CAAC;AAErD,2FAA2F;AAC3F,SAAgB,0BAA0B,CAAC,YAAoB;IAC7D,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,OAAO,KAAK,IAAI,IAAI,IAAA,mCAAgB,EAAC,OAAO,EAAE,gCAAwB,CAAC,CAAC;AACjF,CAAC;AAED,kFAAkF;AAClF,SAAgB,mBAAmB,CAAC,YAAoB;IACtD,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,OAAO,KAAK,IAAI,IAAI,IAAA,wCAAqB,EAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAEY,QAAA,kBAAkB,GAAoB;IACjD,EAAE,EAAE,qBAAqB;IACzB,KAAK,CAAC,QAAQ,CAAC,GAAG;QAChB,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAEpC,oDAAoD;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAA,4CAAoB,EAAC,GAAG,CAAC,KAAK,SAAS,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QAE5B,IAAI,0BAA0B,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5E,IAAI,mBAAmB,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAErE,mDAAmD;QACnD,wDAAwD;QACxD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE;gBACR,oFAAoF;gBACpF,kFAAkF;aACnF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import type { ConstraintCheck } from './types';
|
|
11
11
|
/**
|
|
12
12
|
* 按约束 ID 查找检查实现;未注册返回 undefined
|
|
13
|
-
* (编排层对 kind='check'
|
|
13
|
+
* (编排层对 kind='check' 未注册的情况抛错)
|
|
14
14
|
*/
|
|
15
15
|
export declare function getConstraintCheck(id: string): ConstraintCheck | undefined;
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmD/C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
|
|
@@ -14,7 +14,6 @@ exports.getConstraintCheck = getConstraintCheck;
|
|
|
14
14
|
exports.registeredCheckCount = registeredCheckCount;
|
|
15
15
|
const definitions_1 = require("../definitions");
|
|
16
16
|
const iron_flags_1 = require("./iron-flags");
|
|
17
|
-
const no_bypass_checkpoint_1 = require("./no-bypass-checkpoint");
|
|
18
17
|
const no_test_simplification_1 = require("./no-test-simplification");
|
|
19
18
|
const capability_sync_1 = require("./capability-sync");
|
|
20
19
|
const context_doc_sync_1 = require("./context-doc-sync");
|
|
@@ -22,15 +21,12 @@ const docs_freshness_1 = require("./docs-freshness");
|
|
|
22
21
|
const no_hardcoded_credentials_1 = require("./no-hardcoded-credentials");
|
|
23
22
|
const governance_presence_1 = require("./governance-presence");
|
|
24
23
|
const CHECKS = [
|
|
25
|
-
//
|
|
24
|
+
// severity='error'
|
|
26
25
|
iron_flags_1.noCompletionWithoutVerification,
|
|
27
|
-
iron_flags_1.incrementalProgress,
|
|
28
|
-
iron_flags_1.noImplementationWithoutRequirement,
|
|
29
26
|
no_test_simplification_1.noTestSimplification,
|
|
30
27
|
docs_freshness_1.docsFreshness,
|
|
31
|
-
//
|
|
28
|
+
// severity='warning'
|
|
32
29
|
no_hardcoded_credentials_1.noHardcodedCredentials,
|
|
33
|
-
no_bypass_checkpoint_1.noBypassCheckpoint,
|
|
34
30
|
capability_sync_1.capabilitySync,
|
|
35
31
|
context_doc_sync_1.contextDocSync,
|
|
36
32
|
governance_presence_1.governancePresence,
|
|
@@ -43,7 +39,7 @@ const checkConstraints = (0, definitions_1.getAllConstraints)().filter(c => c.ki
|
|
|
43
39
|
for (const c of checkConstraints) {
|
|
44
40
|
if (!registry.has(c.id)) {
|
|
45
41
|
throw new Error(`[harness] 约束注册表闭环校验失败:kind='check' 的约束 "${c.id}" 未注册 checker。` +
|
|
46
|
-
`请在 checkers/
|
|
42
|
+
`请在 checkers/ 中实现并注册(纯文本提示层已随 ADR-0029 关停)。`);
|
|
47
43
|
}
|
|
48
44
|
}
|
|
49
45
|
for (const id of registry.keys()) {
|
|
@@ -54,7 +50,7 @@ for (const id of registry.keys()) {
|
|
|
54
50
|
}
|
|
55
51
|
/**
|
|
56
52
|
* 按约束 ID 查找检查实现;未注册返回 undefined
|
|
57
|
-
* (编排层对 kind='check'
|
|
53
|
+
* (编排层对 kind='check' 未注册的情况抛错)
|
|
58
54
|
*/
|
|
59
55
|
function getConstraintCheck(id) {
|
|
60
56
|
return registry.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAyDH,gDAEC;AAKD,oDAEC;AA/DD,gDAAmD;AAEnD,6CAEsB;AACtB,qEAAgE;AAChE,uDAAmD;AACnD,yDAAoD;AACpD,qDAAiD;AACjD,yEAAoE;AACpE,+DAA2D;AAE3D,MAAM,MAAM,GAAsB;IAChC,mBAAmB;IACnB,4CAA+B;IAC/B,6CAAoB;IACpB,8BAAa;IACb,qBAAqB;IACrB,iDAAsB;IACtB,gCAAc;IACd,iCAAc;IACd,wCAAkB;CACnB,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA0B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9E,2CAA2C;AAC3C,eAAe;AACf,2CAA2C;AAE3C,MAAM,gBAAgB,GAAG,IAAA,+BAAiB,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAE7E,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;IACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,2CAA2C,CAAC,CAAC,EAAE,gBAAgB;YAC/D,4CAA4C,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,kCAAkC,EAAE,4BAA4B;YAChE,gCAAgC,CACjC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,EAAU;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,iCAA+D;AAAtD,sGAAA,aAAa,OAAA;AAAE,8GAAA,qBAAqB,OAAA"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* error 级轻量检查(工单 21):纯上下文证据标志判定,无 I/O
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* harness#174 后仅存活的 flag:hasVerificationEvidence
|
|
5
|
+
*(incremental_progress / no_implementation_without_requirement 已随定义一并删除)
|
|
5
6
|
*
|
|
6
7
|
* 三态语义(ADR-0001 防爆措施):
|
|
7
8
|
* - undefined = flag 未接线 → skip(不评估,CLI pre-commit 等路径不误报违规)
|
|
8
9
|
* - 显式 false → fail;true → pass
|
|
9
10
|
*/
|
|
10
11
|
export declare const noCompletionWithoutVerification: import("./types").ConstraintCheck;
|
|
11
|
-
export declare const incrementalProgress: import("./types").ConstraintCheck;
|
|
12
|
-
export declare const noImplementationWithoutRequirement: import("./types").ConstraintCheck;
|
|
13
12
|
//# sourceMappingURL=iron-flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iron-flags.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/iron-flags.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"iron-flags.d.ts","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/iron-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,+BAA+B,mCAG3C,CAAC"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* error 级轻量检查(工单 21):纯上下文证据标志判定,无 I/O
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* harness#174 后仅存活的 flag:hasVerificationEvidence
|
|
6
|
+
*(incremental_progress / no_implementation_without_requirement 已随定义一并删除)
|
|
6
7
|
*
|
|
7
8
|
* 三态语义(ADR-0001 防爆措施):
|
|
8
9
|
* - undefined = flag 未接线 → skip(不评估,CLI pre-commit 等路径不误报违规)
|
|
9
10
|
* - 显式 false → fail;true → pass
|
|
10
11
|
*/
|
|
11
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
13
|
+
exports.noCompletionWithoutVerification = void 0;
|
|
13
14
|
const types_1 = require("./types");
|
|
14
15
|
exports.noCompletionWithoutVerification = (0, types_1.contextEvidenceFlag)('no_completion_without_verification', ctx => ctx.hasVerificationEvidence);
|
|
15
|
-
exports.incrementalProgress = (0, types_1.contextEvidenceFlag)('incremental_progress', ctx => ctx.hasSingleTask);
|
|
16
|
-
exports.noImplementationWithoutRequirement = (0, types_1.contextEvidenceFlag)('no_implementation_without_requirement', ctx => ctx.hasRequirement);
|
|
17
16
|
//# sourceMappingURL=iron-flags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iron-flags.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/iron-flags.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"iron-flags.js","sourceRoot":"","sources":["../../../../src/core/constraints/checkers/iron-flags.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAA8C;AAEjC,QAAA,+BAA+B,GAAG,IAAA,2BAAmB,EAChE,oCAAoC,EACpC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CACnC,CAAC"}
|