@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,30 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 标记区间写入器 + 治理正本探测(架构评审候选1,ADR-0011)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* ADR-0029:约束注入段(HARNESS_CONSTRAINTS)已整体关停——本模块不再承担
|
|
6
|
+
* 注入段渲染/落点路由(resolveInjectionTarget / resolveGovernanceLanding 随删),
|
|
7
|
+
* 保留的是通用机制:
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 「按渲染 body 替换标记区间 + 尾换行规一」的切片数学。形状两种
|
|
10
|
+
* (排版约定不同,非"算哪些"的差异,故合法分叉):
|
|
10
11
|
* - replaceStandaloneRange:区间独立成节,END 标记后折叠为恰好一个空行
|
|
11
|
-
* (CLAUDE.md
|
|
12
|
+
* (CLAUDE.md Output Style 段)
|
|
12
13
|
* - replaceEnclosedRange:区间后紧跟外层收口标记(AGENTS.md PRESERVE 段内
|
|
13
|
-
*
|
|
14
|
+
* 区间)——恰好剥一个换行,手写余文原样落回
|
|
14
15
|
*
|
|
15
16
|
* 半标记守护:单边缺失或顺序颠倒 → 'half',拒写(旧实现此时或追加出双份
|
|
16
17
|
* 正本或产生乱序切片,属二次损坏路径,收紧为告警交人工,见 ADR-0011)。
|
|
17
18
|
*
|
|
18
|
-
* 落点路由同规则一份:
|
|
19
|
-
* - resolveInjectionTarget:读侧(漂移检测/retire 同步)——CLAUDE.md 有完整
|
|
20
|
-
* 标记段优先(旧模型仓豁免),否则 AGENTS.md(新模型仓住 PRESERVE 段内)
|
|
21
|
-
* - resolveGovernanceLanding:写侧(init 落点选择)——额外承认 CLAUDE.md
|
|
22
|
-
* 无标记的 `## Governance Rules` 旧块(续写不制造双份正本)
|
|
23
|
-
*
|
|
24
19
|
* 探测/判定同住本模块(#83,ADR-0011 补注:收口范围含探测器,不只写器)——
|
|
25
|
-
* 「这份文档里有没有治理契约 /
|
|
26
|
-
*
|
|
27
|
-
* hasPreserveBlock。
|
|
20
|
+
* 「这份文档里有没有治理契约 / 有几个正本标题」,见文末 GOVERNANCE_HEADING /
|
|
21
|
+
* hasGovernanceContract / countGovernanceHeadings / hasPreserveBlock。
|
|
28
22
|
*/
|
|
29
23
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
30
24
|
if (k2 === undefined) k2 = k;
|
|
@@ -60,21 +54,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
60
54
|
};
|
|
61
55
|
})();
|
|
62
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
-
exports.GOVERNANCE_HEADING =
|
|
57
|
+
exports.GOVERNANCE_HEADING = void 0;
|
|
64
58
|
exports.readIfExists = readIfExists;
|
|
65
59
|
exports.cutMarkerBlock = cutMarkerBlock;
|
|
66
60
|
exports.replaceStandaloneRange = replaceStandaloneRange;
|
|
67
61
|
exports.replaceEnclosedRange = replaceEnclosedRange;
|
|
68
|
-
exports.resolveInjectionTarget = resolveInjectionTarget;
|
|
69
|
-
exports.resolveGovernanceLanding = resolveGovernanceLanding;
|
|
70
62
|
exports.hasGovernanceContract = hasGovernanceContract;
|
|
71
63
|
exports.countGovernanceHeadings = countGovernanceHeadings;
|
|
72
64
|
exports.hasPreserveBlock = hasPreserveBlock;
|
|
73
65
|
const fs = __importStar(require("fs"));
|
|
74
|
-
const path = __importStar(require("path"));
|
|
75
|
-
const injection_renderer_1 = require("./injection-renderer");
|
|
76
|
-
/** 注入段落点文件名(检测顺序即路由优先级:旧模型仓 CLAUDE.md 优先) */
|
|
77
|
-
exports.INJECTION_FILES = ['CLAUDE.md', 'AGENTS.md'];
|
|
78
66
|
function readIfExists(filePath) {
|
|
79
67
|
try {
|
|
80
68
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -136,35 +124,6 @@ function replaceEnclosedRange(content, begin, end, body) {
|
|
|
136
124
|
content: content.slice(0, pair.startIdx) + body + tail,
|
|
137
125
|
};
|
|
138
126
|
}
|
|
139
|
-
/**
|
|
140
|
-
* 读侧路由:定位含完整 HARNESS_CONSTRAINTS 标记段的文件(studio #307)。
|
|
141
|
-
* detectInjectionDrift 与 retire 注入段同步共用。
|
|
142
|
-
*/
|
|
143
|
-
function resolveInjectionTarget(projectRoot) {
|
|
144
|
-
for (const file of exports.INJECTION_FILES) {
|
|
145
|
-
const content = readIfExists(path.join(projectRoot, file));
|
|
146
|
-
if (content === null)
|
|
147
|
-
continue;
|
|
148
|
-
const startIdx = content.indexOf(injection_renderer_1.CONSTRAINTS_START_MARKER);
|
|
149
|
-
const endIdx = content.indexOf(injection_renderer_1.CONSTRAINTS_END_MARKER);
|
|
150
|
-
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
151
|
-
return { file, content, startIdx, endIdx };
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* 写侧路由(init 落点选择,原 setupGovernanceConstraints 内联判定收于此):
|
|
158
|
-
* CLAUDE.md 有约束标记段或有旧版 `## Governance Rules` 块 → 续写 CLAUDE.md
|
|
159
|
-
* (旧模型仓豁免,不制造双份正本);否则 AGENTS.md PRESERVE:governance。
|
|
160
|
-
*/
|
|
161
|
-
function resolveGovernanceLanding(projectRoot) {
|
|
162
|
-
const claudeContent = readIfExists(path.join(projectRoot, 'CLAUDE.md'));
|
|
163
|
-
if (claudeContent !== null && hasGovernanceContract(claudeContent)) {
|
|
164
|
-
return { target: 'claude-md', claudeContent };
|
|
165
|
-
}
|
|
166
|
-
return { target: 'agents-md', claudeContent };
|
|
167
|
-
}
|
|
168
127
|
/**
|
|
169
128
|
* 治理正本标题字面量(单一来源,#83):init 的标题写点与下列两个判定谓词
|
|
170
129
|
* 都由它派生,仓内不再本地拼写。字面量无正则元字符,可直接拼入 RegExp。
|
|
@@ -180,8 +139,12 @@ const GOVERNANCE_HEADING_TEXT = exports.GOVERNANCE_HEADING.replace(/^##\s+/, '')
|
|
|
180
139
|
const GOVERNANCE_HEADING_LOOSE_RE = new RegExp(`^##\\s+${GOVERNANCE_HEADING_TEXT}`, 'm');
|
|
181
140
|
/** 严格标题正则:精确拼写 + 行尾锚定(行尾仅容忍空白) */
|
|
182
141
|
const GOVERNANCE_HEADING_STRICT_RE = new RegExp(`^${exports.GOVERNANCE_HEADING}[ \\t]*$`, 'gm');
|
|
183
|
-
/**
|
|
184
|
-
|
|
142
|
+
/**
|
|
143
|
+
* 历史注入段标记裸文本(ADR-0029:注入段已关停,此处仅作历史兼容判据——
|
|
144
|
+
* 旧仓残留的 HARNESS_CONSTRAINTS 段仍算治理契约在场)。宽松谓词按「标记文本
|
|
145
|
+
* 在场」判定,容忍注释壳残缺。
|
|
146
|
+
*/
|
|
147
|
+
const CONSTRAINTS_START_TEXT = 'HARNESS_CONSTRAINTS_START';
|
|
185
148
|
/**
|
|
186
149
|
* 宽松谓词:内容里是否有治理契约在场——标题宽松匹配或 HARNESS 约束标记
|
|
187
150
|
* 文本在场即算。fail-open 偏向:排版漂移宁可信其有,漏报「约束正本静默
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injection-writer.js","sourceRoot":"","sources":["../../../src/core/constraints/injection-writer.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"injection-writer.js","sourceRoot":"","sources":["../../../src/core/constraints/injection-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 运行级观察面(ADR-0023 决策 1)
|
|
3
3
|
*
|
|
4
4
|
* 一次 `harness check` 一份、跑完即弃:把「本项目有哪些源码根」「最近的 trace 记录」
|
|
5
|
-
* 「`.harness/config.yml`
|
|
5
|
+
* 「`.harness/config.yml` 写了什么」这类上行数据的读取收在此处,
|
|
6
6
|
* 同一次运行内每个文件至多读一次。
|
|
7
7
|
*
|
|
8
8
|
* 为什么不是一个对象而是两个:checker 拿到的 `CheckEnv` 里含 `context`,而 `context` 正是
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
import { type CapabilityVerdict } from './capabilities-reconcile';
|
|
16
16
|
import { type JsonlReadResult } from '../../utils/jsonl';
|
|
17
17
|
import { type ExecutionTrace } from '../../types/trace';
|
|
18
|
-
import type { CustomConstraintDefinition } from '../../types/project-config';
|
|
19
18
|
/** 能力表在项目根下的落点(checker 侧存在性探测与本读面共用此常量) */
|
|
20
19
|
export declare const CAPABILITIES_FILE_REL = "CAPABILITIES.md";
|
|
21
20
|
/**
|
|
@@ -38,14 +37,6 @@ export interface RunEnv {
|
|
|
38
37
|
* 空文件 → `{}`;YAML 解析失败 → **抛出**(兜底与否属各消费方的判定,不在读面上替它决定)。
|
|
39
38
|
*/
|
|
40
39
|
rawConfig(): Record<string, unknown> | undefined;
|
|
41
|
-
/**
|
|
42
|
-
* `.harness/<fileName>` 里的自定义约束定义(一次运行内同名文件至多读一次)
|
|
43
|
-
*
|
|
44
|
-
* 文件名由消费方(ProjectConfigLoader)从合并后的 config 解析后传入——
|
|
45
|
-
* 「`custom_constraints_file` 怎么写才算数」属加载器口径,不在读面上判。
|
|
46
|
-
* 文件缺失或无 `custom_constraints` 段 → `{}`(与改前的直读逐字一致)。
|
|
47
|
-
*/
|
|
48
|
-
customConstraints(fileName: string): Record<string, CustomConstraintDefinition>;
|
|
49
40
|
/**
|
|
50
41
|
* `CAPABILITIES.md` 的读取 + 解析 + 与代码实况的对照判定(ADR-0023 决策 4)
|
|
51
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-env.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/run-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-env.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/run-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAK5E,2CAA2C;AAC3C,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,KAAK,CAAC;AAE7B,MAAM,WAAW,MAAM;IACrB,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC1D,6BAA6B;IAC7B,WAAW,IAAI,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACjD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAC1E;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA8DxD;AAcD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAGxD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 运行级观察面(ADR-0023 决策 1)
|
|
4
4
|
*
|
|
5
5
|
* 一次 `harness check` 一份、跑完即弃:把「本项目有哪些源码根」「最近的 trace 记录」
|
|
6
|
-
* 「`.harness/config.yml`
|
|
6
|
+
* 「`.harness/config.yml` 写了什么」这类上行数据的读取收在此处,
|
|
7
7
|
* 同一次运行内每个文件至多读一次。
|
|
8
8
|
*
|
|
9
9
|
* 为什么不是一个对象而是两个:checker 拿到的 `CheckEnv` 里含 `context`,而 `context` 正是
|
|
@@ -79,7 +79,6 @@ function createRunEnv(projectPath) {
|
|
|
79
79
|
let sourceRoots = null;
|
|
80
80
|
let configLoaded = false;
|
|
81
81
|
let configRaw;
|
|
82
|
-
const customDefs = new Map();
|
|
83
82
|
/** 能力表 memo:undefined = 未算,null = 项目无 CAPABILITIES.md */
|
|
84
83
|
let caps;
|
|
85
84
|
return {
|
|
@@ -101,14 +100,6 @@ function createRunEnv(projectPath) {
|
|
|
101
100
|
}
|
|
102
101
|
return configRaw;
|
|
103
102
|
},
|
|
104
|
-
customConstraints(fileName) {
|
|
105
|
-
let defs = customDefs.get(fileName);
|
|
106
|
-
if (!defs) {
|
|
107
|
-
defs = readCustomConstraints(path.join(projectPath, '.harness', fileName));
|
|
108
|
-
customDefs.set(fileName, defs);
|
|
109
|
-
}
|
|
110
|
-
return defs;
|
|
111
|
-
},
|
|
112
103
|
capabilities(populationFiles) {
|
|
113
104
|
if (caps === undefined) {
|
|
114
105
|
const content = readCapabilitiesContent();
|
|
@@ -142,18 +133,6 @@ function createRunEnv(projectPath) {
|
|
|
142
133
|
return fs.existsSync(file) ? fs.readFileSync(file, 'utf-8') : undefined;
|
|
143
134
|
}
|
|
144
135
|
}
|
|
145
|
-
/**
|
|
146
|
-
* 读一个自定义约束文件并取出 `custom_constraints` 段
|
|
147
|
-
*
|
|
148
|
-
* 缺失 → `{}`。文档解析成空值(空 yaml 文件)时取段会抛——改前直读就是这个行为,
|
|
149
|
-
* 不在此新增兜底:畸形配置文件该炸在配置上,不该被读面抹平。
|
|
150
|
-
*/
|
|
151
|
-
function readCustomConstraints(absPath) {
|
|
152
|
-
if (!fs.existsSync(absPath))
|
|
153
|
-
return {};
|
|
154
|
-
const loaded = yaml.load(fs.readFileSync(absPath, 'utf-8'));
|
|
155
|
-
return loaded.custom_constraints ?? {};
|
|
156
|
-
}
|
|
157
136
|
/**
|
|
158
137
|
* 读并解析一个 YAML 配置文件
|
|
159
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-env.js","sourceRoot":"","sources":["../../../src/core/constraints/run-env.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"run-env.js","sourceRoot":"","sources":["../../../src/core/constraints/run-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* `harness constraints report` 与 `harness constraints retire`(交互模式)共用的
|
|
5
5
|
* 数据层:读取项目 traces.log,与生效集(getEffectiveConstraints)对齐,
|
|
6
|
-
* 产出 check
|
|
6
|
+
* 产出 check 约束统计表与四类退役候选诊断。
|
|
7
7
|
*
|
|
8
8
|
* 只读:不创建目录、不写任何文件。
|
|
9
9
|
*/
|
|
@@ -20,7 +20,7 @@ export declare const FLAG_EVIDENCE_CONSTRAINT_IDS: ReadonlySet<string>;
|
|
|
20
20
|
*/
|
|
21
21
|
export interface ConstraintUsageStats {
|
|
22
22
|
id: string;
|
|
23
|
-
|
|
23
|
+
severity: Constraint['severity'];
|
|
24
24
|
/** trace 总行数(含 skip) */
|
|
25
25
|
total: number;
|
|
26
26
|
pass: number;
|
|
@@ -63,12 +63,10 @@ export declare const DEFAULT_DIAGNOSE_THRESHOLDS: DiagnoseThresholds;
|
|
|
63
63
|
* report 数据模型
|
|
64
64
|
*/
|
|
65
65
|
export interface ConstraintsUsageReport {
|
|
66
|
-
/** check
|
|
66
|
+
/** check 约束统计表(生效集内每条约束一行,零出现 total=0) */
|
|
67
67
|
stats: ConstraintUsageStats[];
|
|
68
68
|
/** 退役候选诊断(按 zero_trigger → unevaluable → high_noise → zero_intercept 排序) */
|
|
69
69
|
candidates: RetireCandidate[];
|
|
70
|
-
/** 当前生效的 prompt 条目 id(注入清单) */
|
|
71
|
-
activePromptIds: string[];
|
|
72
70
|
/** 配置健康诊断(unknownIds 等) */
|
|
73
71
|
lint: EffectiveConfigLint;
|
|
74
72
|
/** trace 文件是否存在 */
|
|
@@ -100,11 +98,11 @@ export declare function readProjectTraces(projectRoot: string): ExecutionTrace[]
|
|
|
100
98
|
/**
|
|
101
99
|
* 按约束聚合 trace 统计(Map: constraintId → 计数)
|
|
102
100
|
*/
|
|
103
|
-
export declare function collectUsageByConstraint(traces: ExecutionTrace[]): Map<string, Omit<ConstraintUsageStats, 'id' | '
|
|
101
|
+
export declare function collectUsageByConstraint(traces: ExecutionTrace[]): Map<string, Omit<ConstraintUsageStats, 'id' | 'severity' | 'evaluated' | 'failRate'>>;
|
|
104
102
|
/**
|
|
105
103
|
* 退役候选诊断(纯函数)
|
|
106
104
|
*
|
|
107
|
-
*
|
|
105
|
+
* 每条约束最多归入一个类别,优先级:
|
|
108
106
|
* zero_trigger → unevaluable → high_noise → zero_intercept
|
|
109
107
|
*/
|
|
110
108
|
export declare function diagnoseRetireCandidates(stats: ConstraintUsageStats[], thresholds?: Partial<DiagnoseThresholds>): RetireCandidate[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/usage-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"usage-report.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/usage-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAE3D,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAEjC,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IAEjB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,aAAa,GACb,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAKpE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,2BAA2B,EAAE,kBAIzC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,4EAA4E;IAC5E,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,2BAA2B;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,mBAAmB;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAM/G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EAAE,GACvB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,CAgBvF;AAmBD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,UAAU,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC3C,eAAe,EAAE,CAiDnB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,GAAE,MAAsB,EACnC,UAAU,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC3C,sBAAsB,CAkBxB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* `harness constraints report` 与 `harness constraints retire`(交互模式)共用的
|
|
6
6
|
* 数据层:读取项目 traces.log,与生效集(getEffectiveConstraints)对齐,
|
|
7
|
-
* 产出 check
|
|
7
|
+
* 产出 check 约束统计表与四类退役候选诊断。
|
|
8
8
|
*
|
|
9
9
|
* 只读:不创建目录、不写任何文件。
|
|
10
10
|
*/
|
|
@@ -59,8 +59,6 @@ const effective_constraints_1 = require("../effective-constraints");
|
|
|
59
59
|
*/
|
|
60
60
|
exports.FLAG_EVIDENCE_CONSTRAINT_IDS = new Set([
|
|
61
61
|
'no_completion_without_verification',
|
|
62
|
-
'incremental_progress',
|
|
63
|
-
'no_implementation_without_requirement',
|
|
64
62
|
]);
|
|
65
63
|
/** 候选种类的呈现名(constraints report / retire 共用) */
|
|
66
64
|
exports.CANDIDATE_KIND_LABEL = {
|
|
@@ -118,12 +116,12 @@ function collectUsageByConstraint(traces) {
|
|
|
118
116
|
}
|
|
119
117
|
return map;
|
|
120
118
|
}
|
|
121
|
-
function toStats(id,
|
|
119
|
+
function toStats(id, severity, agg) {
|
|
122
120
|
const a = agg ?? { total: 0, pass: 0, fail: 0, skip: 0 };
|
|
123
121
|
const evaluated = a.total - a.skip;
|
|
124
122
|
return {
|
|
125
123
|
id,
|
|
126
|
-
|
|
124
|
+
severity,
|
|
127
125
|
total: a.total,
|
|
128
126
|
pass: a.pass,
|
|
129
127
|
fail: a.fail,
|
|
@@ -137,7 +135,7 @@ function toStats(id, level, agg) {
|
|
|
137
135
|
/**
|
|
138
136
|
* 退役候选诊断(纯函数)
|
|
139
137
|
*
|
|
140
|
-
*
|
|
138
|
+
* 每条约束最多归入一个类别,优先级:
|
|
141
139
|
* zero_trigger → unevaluable → high_noise → zero_intercept
|
|
142
140
|
*/
|
|
143
141
|
function diagnoseRetireCandidates(stats, thresholds = {}) {
|
|
@@ -190,18 +188,15 @@ function diagnoseRetireCandidates(stats, thresholds = {}) {
|
|
|
190
188
|
*/
|
|
191
189
|
function buildConstraintsUsageReport(projectRoot = process.cwd(), thresholds = {}) {
|
|
192
190
|
const effective = (0, effective_constraints_1.getEffectiveConstraints)(projectRoot);
|
|
193
|
-
const checkConstraints = effective.filter(c => c.kind === 'check');
|
|
194
|
-
const activePromptIds = effective.filter(c => c.kind === 'prompt').map(c => c.id);
|
|
195
191
|
const tracePath = path.join(projectRoot, trace_1.DEFAULT_TRACE_FILE);
|
|
196
192
|
const { traces, skippedLines } = readProjectTracesReport(projectRoot);
|
|
197
193
|
const usage = collectUsageByConstraint(traces);
|
|
198
|
-
const stats =
|
|
194
|
+
const stats = effective.map(c => toStats(c.id, c.severity, usage.get(c.id)));
|
|
199
195
|
const candidates = diagnoseRetireCandidates(stats, thresholds);
|
|
200
196
|
const lint = (0, effective_constraints_1.lintEffectiveConfig)(projectRoot);
|
|
201
197
|
return {
|
|
202
198
|
stats,
|
|
203
199
|
candidates,
|
|
204
|
-
activePromptIds,
|
|
205
200
|
lint,
|
|
206
201
|
traceFileExists: fs.existsSync(tracePath),
|
|
207
202
|
skippedLines,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report.js","sourceRoot":"","sources":["../../../src/core/constraints/usage-report.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"usage-report.js","sourceRoot":"","sources":["../../../src/core/constraints/usage-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 生效约束集(ADR-0001)
|
|
2
|
+
* 生效约束集(ADR-0029,链路承自 ADR-0001)
|
|
3
3
|
*
|
|
4
4
|
* `getEffectiveConstraints(projectRoot)` 是全仓唯一的生效集来源:
|
|
5
|
-
* 内置 → preset → config.yml
|
|
6
|
-
*
|
|
7
|
-
* 不再直接读
|
|
5
|
+
* 内置 → preset → config.yml 禁用。
|
|
6
|
+
* `harness check`、外部消费者(studio 等)全部消费它,
|
|
7
|
+
* 不再直接读 CONSTRAINTS 全集。
|
|
8
8
|
*/
|
|
9
9
|
import type { Constraint } from '../types/constraint';
|
|
10
10
|
import type { MergedConstraintsConfig } from '../types/project-config';
|
|
11
11
|
import type { RunTarget } from './constraints/run-env';
|
|
12
12
|
/**
|
|
13
|
-
* 获取项目当前生效的约束集(check
|
|
13
|
+
* 获取项目当前生效的约束集(check 全量,带 kind/severity)
|
|
14
14
|
*
|
|
15
15
|
* 生效集链路同 getMergedConstraintsConfig:内置 → preset 裁剪 → config.yml
|
|
16
|
-
* `constraints.<id>.enabled:false`
|
|
17
|
-
* 追加(禁用/已退役的 custom 不追加)→ scenes 过滤
|
|
18
|
-
* (带 appliesTo 的 prompt 仅当 config.yml `scenes` 与其交集非空时保留,
|
|
19
|
-
* 缺省 scenes=[] 即场景专属 prompt 默认不进入生效集)。
|
|
16
|
+
* `constraints.<id>.enabled:false` 删除。
|
|
20
17
|
*
|
|
21
18
|
* @param target 项目根路径,或本 run 的运行级观察面(缺省 process.cwd())
|
|
22
19
|
* 传观察面 = config.yml 读取与本 run 其余消费方共用同一份(ADR-0023 决策 2)
|
|
@@ -29,15 +26,15 @@ export declare function getEffectiveConstraints(target?: RunTarget, options?: {
|
|
|
29
26
|
/**
|
|
30
27
|
* 从已算好的合并配置取出生效集清单(与 getEffectiveConstraints 同一形状)
|
|
31
28
|
*
|
|
32
|
-
* 给已经持有 `MergedConstraintsConfig` 的消费方复用(CLI check
|
|
33
|
-
*
|
|
29
|
+
* 给已经持有 `MergedConstraintsConfig` 的消费方复用(CLI check 复用这一份,
|
|
30
|
+
* 避免生效集链路在一次运行里算两遍,ADR-0023 步骤 4.5)。
|
|
34
31
|
*/
|
|
35
32
|
export declare function constraintsFromMerged(merged: MergedConstraintsConfig): Constraint[];
|
|
36
33
|
/**
|
|
37
|
-
*
|
|
34
|
+
* 获取项目当前生效的合并约束配置(唯一来源的完整形状)
|
|
38
35
|
*
|
|
39
36
|
* 与 getEffectiveConstraints 同一生效集链路,返回完整 MergedConstraintsConfig
|
|
40
|
-
* (含 disabled/
|
|
37
|
+
* (含 disabled/unknownIds),供 check 等需要诊断信息的消费方使用。
|
|
41
38
|
*
|
|
42
39
|
* options.preset(CLI --preset)仅在项目无自定义配置时覆盖 config.yml 的
|
|
43
40
|
* preset(工单 23 语义:项目自定义配置优先于 CLI 预设);不传 preset 时
|
|
@@ -53,21 +50,14 @@ export declare function getMergedConstraintsConfig(target?: RunTarget, options?:
|
|
|
53
50
|
*/
|
|
54
51
|
export interface EffectiveConfigLint {
|
|
55
52
|
/**
|
|
56
|
-
* config.yml `constraints.<id>`
|
|
53
|
+
* config.yml `constraints.<id>` 中非内置的未知 id
|
|
57
54
|
* (如禁用了已被本版移除的约束的残留配置)。生效集计算静默忽略,
|
|
58
55
|
* 在此列出供 report 提示。
|
|
59
56
|
*/
|
|
60
57
|
unknownIds: string[];
|
|
61
|
-
/** 项目配置的场景标签(config.yml `scenes`,缺省 []) */
|
|
62
|
-
scenes: string[];
|
|
63
|
-
/**
|
|
64
|
-
* 因 scenes 过滤而未进入生效集的场景专属 prompt id
|
|
65
|
-
* (已被 preset/config 禁用的不重复列出)
|
|
66
|
-
*/
|
|
67
|
-
sceneExcluded: string[];
|
|
68
58
|
}
|
|
69
59
|
/**
|
|
70
|
-
* 诊断项目约束配置:未知 id
|
|
60
|
+
* 诊断项目约束配置:未知 id 残留
|
|
71
61
|
*
|
|
72
62
|
* 不抛错、不修改任何文件,供 report / check 的诊断输出使用。
|
|
73
63
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-constraints.d.ts","sourceRoot":"","sources":["../../src/core/effective-constraints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"effective-constraints.d.ts","sourceRoot":"","sources":["../../src/core/effective-constraints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,GAAE,SAAyB,EACjC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,UAAU,EAAE,CAEd;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,uBAAuB,GAAG,UAAU,EAAE,CAEnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,SAAyB,EACjC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,uBAAuB,CAOzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,GAAE,MAAsB,GAAG,mBAAmB,CAO5F"}
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* 生效约束集(ADR-0001)
|
|
3
|
+
* 生效约束集(ADR-0029,链路承自 ADR-0001)
|
|
4
4
|
*
|
|
5
5
|
* `getEffectiveConstraints(projectRoot)` 是全仓唯一的生效集来源:
|
|
6
|
-
* 内置 → preset → config.yml
|
|
7
|
-
*
|
|
8
|
-
* 不再直接读
|
|
6
|
+
* 内置 → preset → config.yml 禁用。
|
|
7
|
+
* `harness check`、外部消费者(studio 等)全部消费它,
|
|
8
|
+
* 不再直接读 CONSTRAINTS 全集。
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.getEffectiveConstraints = getEffectiveConstraints;
|
|
12
12
|
exports.constraintsFromMerged = constraintsFromMerged;
|
|
13
13
|
exports.getMergedConstraintsConfig = getMergedConstraintsConfig;
|
|
14
14
|
exports.lintEffectiveConfig = lintEffectiveConfig;
|
|
15
|
-
const definitions_1 = require("./constraints/definitions");
|
|
16
15
|
const project_config_loader_1 = require("./project-config-loader");
|
|
17
16
|
/**
|
|
18
|
-
* 获取项目当前生效的约束集(check
|
|
17
|
+
* 获取项目当前生效的约束集(check 全量,带 kind/severity)
|
|
19
18
|
*
|
|
20
19
|
* 生效集链路同 getMergedConstraintsConfig:内置 → preset 裁剪 → config.yml
|
|
21
|
-
* `constraints.<id>.enabled:false`
|
|
22
|
-
* 追加(禁用/已退役的 custom 不追加)→ scenes 过滤
|
|
23
|
-
* (带 appliesTo 的 prompt 仅当 config.yml `scenes` 与其交集非空时保留,
|
|
24
|
-
* 缺省 scenes=[] 即场景专属 prompt 默认不进入生效集)。
|
|
20
|
+
* `constraints.<id>.enabled:false` 删除。
|
|
25
21
|
*
|
|
26
22
|
* @param target 项目根路径,或本 run 的运行级观察面(缺省 process.cwd())
|
|
27
23
|
* 传观察面 = config.yml 读取与本 run 其余消费方共用同一份(ADR-0023 决策 2)
|
|
@@ -34,21 +30,17 @@ function getEffectiveConstraints(target = process.cwd(), options) {
|
|
|
34
30
|
/**
|
|
35
31
|
* 从已算好的合并配置取出生效集清单(与 getEffectiveConstraints 同一形状)
|
|
36
32
|
*
|
|
37
|
-
* 给已经持有 `MergedConstraintsConfig` 的消费方复用(CLI check
|
|
38
|
-
*
|
|
33
|
+
* 给已经持有 `MergedConstraintsConfig` 的消费方复用(CLI check 复用这一份,
|
|
34
|
+
* 避免生效集链路在一次运行里算两遍,ADR-0023 步骤 4.5)。
|
|
39
35
|
*/
|
|
40
36
|
function constraintsFromMerged(merged) {
|
|
41
|
-
return
|
|
42
|
-
...Object.values(merged.ironLaws),
|
|
43
|
-
...Object.values(merged.guidelines),
|
|
44
|
-
...Object.values(merged.prompts ?? {}),
|
|
45
|
-
];
|
|
37
|
+
return Object.values(merged.constraints);
|
|
46
38
|
}
|
|
47
39
|
/**
|
|
48
|
-
*
|
|
40
|
+
* 获取项目当前生效的合并约束配置(唯一来源的完整形状)
|
|
49
41
|
*
|
|
50
42
|
* 与 getEffectiveConstraints 同一生效集链路,返回完整 MergedConstraintsConfig
|
|
51
|
-
* (含 disabled/
|
|
43
|
+
* (含 disabled/unknownIds),供 check 等需要诊断信息的消费方使用。
|
|
52
44
|
*
|
|
53
45
|
* options.preset(CLI --preset)仅在项目无自定义配置时覆盖 config.yml 的
|
|
54
46
|
* preset(工单 23 语义:项目自定义配置优先于 CLI 预设);不传 preset 时
|
|
@@ -65,7 +57,7 @@ function getMergedConstraintsConfig(target = process.cwd(), options) {
|
|
|
65
57
|
return loader.mergeConstraints({ preset: options.preset });
|
|
66
58
|
}
|
|
67
59
|
/**
|
|
68
|
-
* 诊断项目约束配置:未知 id
|
|
60
|
+
* 诊断项目约束配置:未知 id 残留
|
|
69
61
|
*
|
|
70
62
|
* 不抛错、不修改任何文件,供 report / check 的诊断输出使用。
|
|
71
63
|
*
|
|
@@ -73,19 +65,10 @@ function getMergedConstraintsConfig(target = process.cwd(), options) {
|
|
|
73
65
|
*/
|
|
74
66
|
function lintEffectiveConfig(projectRoot = process.cwd()) {
|
|
75
67
|
const loader = new project_config_loader_1.ProjectConfigLoader(projectRoot);
|
|
76
|
-
|
|
68
|
+
loader.load();
|
|
77
69
|
const merged = loader.mergeConstraints();
|
|
78
|
-
const scenes = config.scenes ?? [];
|
|
79
|
-
const sceneExcluded = Object.values(definitions_1.PROMPTS)
|
|
80
|
-
.filter(c => c.appliesTo &&
|
|
81
|
-
c.appliesTo.length > 0 &&
|
|
82
|
-
!c.appliesTo.some(scene => scenes.includes(scene)) &&
|
|
83
|
-
!merged.disabled.includes(c.id))
|
|
84
|
-
.map(c => c.id);
|
|
85
70
|
return {
|
|
86
71
|
unknownIds: merged.unknownIds ?? [],
|
|
87
|
-
scenes,
|
|
88
|
-
sceneExcluded,
|
|
89
72
|
};
|
|
90
73
|
}
|
|
91
74
|
//# sourceMappingURL=effective-constraints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-constraints.js","sourceRoot":"","sources":["../../src/core/effective-constraints.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"effective-constraints.js","sourceRoot":"","sources":["../../src/core/effective-constraints.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAkBH,0DAKC;AAQD,sDAEC;AAcD,gEAUC;AAqBD,kDAOC;AAjFD,mEAA8D;AAG9D;;;;;;;;;;GAUG;AACH,SAAgB,uBAAuB,CACrC,SAAoB,OAAO,CAAC,GAAG,EAAE,EACjC,OAA6B;IAE7B,OAAO,qBAAqB,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,MAA+B;IACnE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,0BAA0B,CACxC,SAAoB,OAAO,CAAC,GAAG,EAAE,EACjC,OAA6B;IAE7B,MAAM,MAAM,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7D,CAAC;AAcD;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,2CAAmB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACzC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* checkConstraints 与包根统一为 options 对象签名(CheckConstraintsOptions),
|
|
5
5
|
* 不再暴露位置参数版。
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
8
|
-
export type { CheckConstraintsOptions, CheckCacheConfig, CheckSamplingConfig,
|
|
7
|
+
export { CONSTRAINTS, getAllConstraints, findConstraintsByTrigger, getConstraint, ConstraintChecker, checkConstraint, checkConstraints, checkBeforeExecution, constraintChecker, CheckCache, ConstraintViolationError, } from './constraints';
|
|
8
|
+
export type { CheckConstraintsOptions, CheckCacheConfig, CheckSamplingConfig, ConstraintId, ConstraintKind, ConstraintSeverity, ConstraintTrigger, Constraint, ConstraintResult, ConstraintContext, ConstraintCheckResult, IronLawContext, } from './constraints';
|
|
9
9
|
export { CheckpointValidator, PassesGate, createPassesGate, CSOValidator, } from './validators';
|
|
10
10
|
export type { CSOValidationResult, CSOIssue, Checkpoint, CheckpointCheck, CheckpointResult, CheckResult, CheckpointContext, CheckType, CheckConfig, PassesGateConfig, TaskTestResult, } from './validators';
|
|
11
11
|
export { SpecValidator } from './spec/validator';
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAExF,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|