peaks-cli 1.4.1 → 2.0.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/.claude-plugin/marketplace.json +51 -0
- package/CHANGELOG.md +238 -0
- package/README-en.md +226 -0
- package/README.md +142 -165
- package/dist/src/cli/commands/agent-commands.d.ts +20 -0
- package/dist/src/cli/commands/agent-commands.js +48 -0
- package/dist/src/cli/commands/audit-commands.d.ts +18 -0
- package/dist/src/cli/commands/audit-commands.js +138 -0
- package/dist/src/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/src/cli/commands/classify-classify-commands.js +151 -0
- package/dist/src/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/src/cli/commands/code-review-commands.js +83 -0
- package/dist/src/cli/commands/config-commands.js +90 -0
- package/dist/src/cli/commands/context-commands.d.ts +21 -0
- package/dist/src/cli/commands/context-commands.js +167 -0
- package/dist/src/cli/commands/core-artifact-commands.js +81 -2
- package/dist/src/cli/commands/hook-handle.js +50 -0
- package/dist/src/cli/commands/loop-commands.d.ts +21 -0
- package/dist/src/cli/commands/loop-commands.js +128 -0
- package/dist/src/cli/commands/memory-commands.d.ts +13 -0
- package/dist/src/cli/commands/memory-commands.js +60 -0
- package/dist/src/cli/commands/openspec-commands.js +37 -0
- package/dist/src/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/src/cli/commands/preferences-commands.js +147 -0
- package/dist/src/cli/commands/retrospective-commands.d.ts +9 -0
- package/dist/src/cli/commands/retrospective-commands.js +58 -0
- package/dist/src/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/src/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/src/cli/commands/understand-commands.js +34 -0
- package/dist/src/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/src/cli/commands/upgrade-commands.js +57 -0
- package/dist/src/cli/commands/workflow-commands.js +70 -0
- package/dist/src/cli/commands/workspace-commands.js +86 -0
- package/dist/src/cli/program.js +46 -22
- package/dist/src/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/src/services/agent/ecc-agent-service.js +143 -0
- package/dist/src/services/artifacts/request-artifact-service.js +14 -0
- package/dist/src/services/audit/backing-detector.d.ts +24 -0
- package/dist/src/services/audit/backing-detector.js +59 -0
- package/dist/src/services/audit/classifier.d.ts +38 -0
- package/dist/src/services/audit/classifier.js +127 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.d.ts +25 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.js +54 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.d.ts +27 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.js +38 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/src/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/src/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/src/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/src/services/audit/enforcers/lint-style.js +173 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.d.ts +5 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.js +141 -0
- package/dist/src/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/src/services/audit/enforcers/login-gate.js +40 -0
- package/dist/src/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/src/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/src/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/src/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.d.ts +23 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.js +27 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/src/services/audit/enforcers/tech-doc-presence.d.ts +28 -0
- package/dist/src/services/audit/enforcers/tech-doc-presence.js +35 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.js +233 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/src/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/src/services/audit/red-line-catalog.js +210 -0
- package/dist/src/services/audit/red-lines-service.d.ts +23 -0
- package/dist/src/services/audit/red-lines-service.js +486 -0
- package/dist/src/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/src/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.js +46 -0
- package/dist/src/services/audit/static-service.d.ts +57 -0
- package/dist/src/services/audit/static-service.js +125 -0
- package/dist/src/services/audit/types.d.ts +69 -0
- package/dist/src/services/audit/types.js +13 -0
- package/dist/src/services/classify/classify-service.d.ts +42 -0
- package/dist/src/services/classify/classify-service.js +122 -0
- package/dist/src/services/classify/classify-types.d.ts +79 -0
- package/dist/src/services/classify/classify-types.js +90 -0
- package/dist/src/services/code-review/ocr-service.d.ts +129 -0
- package/dist/src/services/code-review/ocr-service.js +362 -0
- package/dist/src/services/config/config-migration.d.ts +32 -0
- package/dist/src/services/config/config-migration.js +92 -0
- package/dist/src/services/config/config-restore.d.ts +10 -0
- package/dist/src/services/config/config-restore.js +47 -0
- package/dist/src/services/config/config-rollback.d.ts +13 -0
- package/dist/src/services/config/config-rollback.js +26 -0
- package/dist/src/services/config/config-service.d.ts +35 -2
- package/dist/src/services/config/config-service.js +81 -0
- package/dist/src/services/config/config-types.d.ts +58 -0
- package/dist/src/services/config/config-types.js +6 -0
- package/dist/src/services/doctor/doctor-service.js +96 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/src/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/src/services/fuzzy-matching/types.js +1 -0
- package/dist/src/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/src/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/src/services/ide/ide-registry.js +7 -0
- package/dist/src/services/ide/ide-types.d.ts +1 -1
- package/dist/src/services/memory/memory-search-service.d.ts +61 -0
- package/dist/src/services/memory/memory-search-service.js +80 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/src/services/preferences/preferences-service.d.ts +6 -0
- package/dist/src/services/preferences/preferences-service.js +43 -0
- package/dist/src/services/preferences/preferences-types.d.ts +90 -0
- package/dist/src/services/preferences/preferences-types.js +38 -0
- package/dist/src/services/recommendations/capability-seed-items.js +0 -1
- package/dist/src/services/recommendations/capability-seed-mappings.js +0 -1
- package/dist/src/services/recommendations/capability-seed-sources.js +0 -1
- package/dist/src/services/retrospective/retrospective-search-service.d.ts +37 -0
- package/dist/src/services/retrospective/retrospective-search-service.js +75 -0
- package/dist/src/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/src/services/skills/skill-conformance-service.js +136 -0
- package/dist/src/services/skills/skill-runbook-service.js +44 -10
- package/dist/src/services/skills/sync-service.d.ts +43 -0
- package/dist/src/services/skills/sync-service.js +99 -0
- package/dist/src/services/slice/slice-check-service.js +166 -13
- package/dist/src/services/slice/slice-check-types.d.ts +1 -1
- package/dist/src/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/src/services/standards/migrate-claude-rules-service.js +193 -0
- package/dist/src/services/standards/project-context.d.ts +1 -1
- package/dist/src/services/standards/project-context.js +0 -4
- package/dist/src/services/standards/project-standards-service.js +1 -3
- package/dist/src/services/understand/understand-scan-service.js +15 -2
- package/dist/src/services/understand/understand-types.d.ts +26 -0
- package/dist/src/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/src/services/upgrade/1x-detector-service.js +94 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/src/services/upgrade/upgrade-service.d.ts +47 -0
- package/dist/src/services/upgrade/upgrade-service.js +381 -0
- package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
- package/dist/src/services/workspace/sid-naming-guard.d.ts +14 -0
- package/dist/src/services/workspace/sid-naming-guard.js +31 -0
- package/dist/src/services/workspace/workspace-archive-service.d.ts +19 -0
- package/dist/src/services/workspace/workspace-archive-service.js +32 -0
- package/dist/src/services/workspace/workspace-clean-service.d.ts +41 -0
- package/dist/src/services/workspace/workspace-clean-service.js +86 -0
- package/dist/src/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/src/services/workspace/workspace-state-service.js +43 -0
- package/dist/src/shared/change-id.js +4 -1
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/package.json +10 -8
- package/schemas/doctor-report.schema.json +1 -1
- package/scripts/install-skills.mjs +296 -12
- package/skills/peaks-doctor/SKILL.md +59 -0
- package/skills/peaks-doctor/references/doctor-check-catalog.md +31 -0
- package/skills/peaks-doctor/references/from-doctor-flow.md +64 -0
- package/skills/peaks-doctor/test_prompts.json +17 -0
- package/skills/peaks-ide/SKILL.md +2 -0
- package/skills/peaks-qa/SKILL.md +9 -7
- package/skills/peaks-qa/references/artifact-per-request.md +19 -5
- package/skills/peaks-qa/references/qa-perf-test-plan.md +6 -6
- package/skills/peaks-qa/references/qa-runbook.md +1 -1
- package/skills/peaks-rd/SKILL.md +25 -10
- package/skills/peaks-rd/references/ocr-integration.md +214 -0
- package/skills/peaks-rd/references/rd-fanout-contracts.md +70 -0
- package/skills/peaks-rd/references/rd-runbook.md +1 -1
- package/skills/peaks-solo/SKILL.md +11 -5
- package/skills/peaks-solo/references/completion-handoff.md +3 -1
- package/skills/peaks-solo/references/step-0-55-1x-detection.md +82 -0
- package/skills/peaks-solo/references/workflow-gates-and-types.md +9 -0
- package/dist/src/cli/commands/shadcn-commands.d.ts +0 -3
- package/dist/src/cli/commands/shadcn-commands.js +0 -35
- package/dist/src/cli/commands/skill-context-stats-command.d.ts +0 -40
- package/dist/src/cli/commands/skill-context-stats-command.js +0 -96
- package/dist/src/cli/commands/skill-scope-commands.d.ts +0 -51
- package/dist/src/cli/commands/skill-scope-commands.js +0 -310
- package/dist/src/services/shadcn/shadcn-service.d.ts +0 -27
- package/dist/src/services/shadcn/shadcn-service.js +0 -128
- package/dist/src/services/skill-scope/adapters/_stub-helper.d.ts +0 -39
- package/dist/src/services/skill-scope/adapters/_stub-helper.js +0 -98
- package/dist/src/services/skill-scope/adapters/claude-code.d.ts +0 -59
- package/dist/src/services/skill-scope/adapters/claude-code.js +0 -304
- package/dist/src/services/skill-scope/adapters/codex.d.ts +0 -2
- package/dist/src/services/skill-scope/adapters/codex.js +0 -12
- package/dist/src/services/skill-scope/adapters/cursor.d.ts +0 -2
- package/dist/src/services/skill-scope/adapters/cursor.js +0 -13
- package/dist/src/services/skill-scope/adapters/qoder.d.ts +0 -2
- package/dist/src/services/skill-scope/adapters/qoder.js +0 -13
- package/dist/src/services/skill-scope/adapters/tongyi.d.ts +0 -2
- package/dist/src/services/skill-scope/adapters/tongyi.js +0 -13
- package/dist/src/services/skill-scope/adapters/trae.d.ts +0 -2
- package/dist/src/services/skill-scope/adapters/trae.js +0 -12
- package/dist/src/services/skill-scope/detect.d.ts +0 -81
- package/dist/src/services/skill-scope/detect.js +0 -513
- package/dist/src/services/skill-scope/registry.d.ts +0 -41
- package/dist/src/services/skill-scope/registry.js +0 -83
- package/dist/src/services/skill-scope/source-of-truth.d.ts +0 -44
- package/dist/src/services/skill-scope/source-of-truth.js +0 -118
- package/dist/src/services/skill-scope/types.d.ts +0 -195
- package/dist/src/services/skill-scope/types.js +0 -97
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Red-line catalog — the 5 P0 red lines shipped in L2.1, plus the marker
|
|
3
|
+
* patterns that the classifier uses to discover them in markdown.
|
|
4
|
+
*
|
|
5
|
+
* The catalog is hand-maintained. New enforcers (L2.2/2.3/2.4) add entries
|
|
6
|
+
* here and the backing-detector picks them up automatically.
|
|
7
|
+
*/
|
|
8
|
+
import { RED_LINE_CATALOG_P2_A } from './red-line-catalog-p2-a.js';
|
|
9
|
+
import { RED_LINE_CATALOG_P2_B } from './red-line-catalog-p2-b.js';
|
|
10
|
+
export const RED_LINE_CATALOG = [
|
|
11
|
+
{
|
|
12
|
+
id: 'rl-solo-code-ban-001',
|
|
13
|
+
rule: 'Solo Code-Change Red Line',
|
|
14
|
+
markers: ['BLOCKING', 'MANDATORY'],
|
|
15
|
+
phrases: [
|
|
16
|
+
'peaks-solo',
|
|
17
|
+
'orchestrator, NOT an implementer',
|
|
18
|
+
'solo',
|
|
19
|
+
],
|
|
20
|
+
enforcerRef: 'src/services/audit/enforcers/solo-code-ban.ts',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'rl-no-root-pollution-001',
|
|
24
|
+
rule: 'No Root Pollution',
|
|
25
|
+
markers: ['MANDATORY', 'MUST NOT', 'RED LINE'],
|
|
26
|
+
phrases: [
|
|
27
|
+
'root pollution',
|
|
28
|
+
'must not write to the project root',
|
|
29
|
+
'no root',
|
|
30
|
+
],
|
|
31
|
+
enforcerRef: 'src/services/audit/enforcers/no-root-pollution.ts',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'rl-sub-agent-sid-001',
|
|
35
|
+
rule: 'Sub-Agent SID Isolation',
|
|
36
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
37
|
+
phrases: [
|
|
38
|
+
'sub-agent',
|
|
39
|
+
'session id',
|
|
40
|
+
'sub-agent session sharing',
|
|
41
|
+
'one conversation = one sid',
|
|
42
|
+
],
|
|
43
|
+
enforcerRef: 'src/services/audit/enforcers/sub-agent-sid.ts',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'rl-tech-doc-presence-001',
|
|
47
|
+
rule: 'Tech-Doc Presence',
|
|
48
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
49
|
+
phrases: [
|
|
50
|
+
'tech-doc',
|
|
51
|
+
'tech doc',
|
|
52
|
+
'spec-locked',
|
|
53
|
+
'rd/tech-doc.md',
|
|
54
|
+
],
|
|
55
|
+
enforcerRef: 'src/services/audit/enforcers/tech-doc-presence.ts',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 'rl-mock-placement-001',
|
|
59
|
+
rule: 'Mock Data Placement',
|
|
60
|
+
markers: ['MUST NOT', 'MANDATORY'],
|
|
61
|
+
phrases: [
|
|
62
|
+
'mock data',
|
|
63
|
+
'mock placement',
|
|
64
|
+
'inline mock',
|
|
65
|
+
'fixture placement',
|
|
66
|
+
],
|
|
67
|
+
enforcerRef: 'src/services/audit/enforcers/mock-placement.ts',
|
|
68
|
+
},
|
|
69
|
+
// === Slice L2.2 P1 — 10 P1 red lines across 5 categories ===
|
|
70
|
+
// Each catalog entry has a phrase that distinguishes it from P0; the
|
|
71
|
+
// backing-detector + DEFERRED_ENFORCERS mechanism handles the rest.
|
|
72
|
+
{
|
|
73
|
+
id: 'rl-resume-detection-001',
|
|
74
|
+
rule: 'Resume Detection: Session Binding',
|
|
75
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
76
|
+
phrases: ['resume detection', 'session binding', 'resume session', 'resume from'],
|
|
77
|
+
enforcerRef: 'src/services/audit/enforcers/resume-detection.ts',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 'rl-resume-detection-002',
|
|
81
|
+
rule: 'Resume Detection: Request State',
|
|
82
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
83
|
+
phrases: ['request state', 'resumable state', 'spec-locked', 'implemented', 'qa-handoff'],
|
|
84
|
+
enforcerRef: 'src/services/audit/enforcers/resume-detection.ts',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'rl-prototype-fidelity-001',
|
|
88
|
+
rule: 'Prototype Fidelity: No Stub Markers',
|
|
89
|
+
markers: ['MUST NOT', 'MANDATORY'],
|
|
90
|
+
phrases: ['prototype fidelity', 'no stub', 'no TODO', 'no FIXME', 'no placeholder'],
|
|
91
|
+
enforcerRef: 'src/services/audit/enforcers/prototype-fidelity.ts',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 'rl-prototype-fidelity-002',
|
|
95
|
+
rule: 'Prototype Fidelity: Test Coverage',
|
|
96
|
+
markers: ['MANDATORY', 'RED LINE'],
|
|
97
|
+
phrases: ['prototype test', 'must have tests', 'test coverage', 'fidelity test'],
|
|
98
|
+
enforcerRef: 'src/services/audit/enforcers/prototype-fidelity.ts',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'rl-design-draft-confirm-001',
|
|
102
|
+
rule: 'Design-Draft Confirm: Existence',
|
|
103
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
104
|
+
phrases: ['design-draft', 'design draft', 'design-draft.md', 'design draft exists'],
|
|
105
|
+
enforcerRef: 'src/services/audit/enforcers/design-draft-confirm.ts',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'rl-design-draft-confirm-002',
|
|
109
|
+
rule: 'Design-Draft Confirm: Confirmed State',
|
|
110
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
111
|
+
phrases: ['design confirmed', 'design-draft confirmed', 'confirmed-by-user', 'user confirmed'],
|
|
112
|
+
enforcerRef: 'src/services/audit/enforcers/design-draft-confirm.ts',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 'rl-pre-rd-scan-001',
|
|
116
|
+
rule: 'Pre-RD Scan: Archetype Detected',
|
|
117
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
118
|
+
phrases: ['pre-rd scan', 'project-scan', 'archetype detected', 'scan archetype'],
|
|
119
|
+
enforcerRef: 'src/services/audit/enforcers/pre-rd-scan.ts',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 'rl-pre-rd-scan-002',
|
|
123
|
+
rule: 'Pre-RD Scan: Standards Preflight',
|
|
124
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
125
|
+
phrases: ['standards preflight', 'pre-rd standards', 'standards init', 'standards update'],
|
|
126
|
+
enforcerRef: 'src/services/audit/enforcers/pre-rd-scan.ts',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'rl-login-gate-001',
|
|
130
|
+
rule: 'Login Gate: Destructive Path Confirmation',
|
|
131
|
+
markers: ['MANDATORY', 'BLOCKING', 'RED LINE'],
|
|
132
|
+
phrases: ['login gate', 'destructive path', 'uninstall', 'force-push', 'user confirmation required'],
|
|
133
|
+
enforcerRef: 'src/services/audit/enforcers/login-gate.ts',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
id: 'rl-login-gate-002',
|
|
137
|
+
rule: 'Login Gate: Protected Path Auth',
|
|
138
|
+
markers: ['MANDATORY', 'BLOCKING'],
|
|
139
|
+
phrases: ['protected path', 'auth required', 'auth header', 'login required', 'session check'],
|
|
140
|
+
enforcerRef: 'src/services/audit/enforcers/login-gate.ts',
|
|
141
|
+
},
|
|
142
|
+
// Slice #6 L2.3 P2-a: 24 lint-style red-lines (Theme A: section
|
|
143
|
+
// structure, B: frontmatter shape, C: output style, D: CLI-back
|
|
144
|
+
// gaps, E: reference integrity, F: workflow-bound shape, G: catalog
|
|
145
|
+
// governance). Spread from the P2-a module so future P2-a edits
|
|
146
|
+
// are localized.
|
|
147
|
+
...RED_LINE_CATALOG_P2_A,
|
|
148
|
+
// Slice #7 L2.4 P2-b: 25 lint-style red-lines for references/*.md
|
|
149
|
+
// (Themes H-P) + 4 audit-regression enforcers (Theme L). Spread
|
|
150
|
+
// from the P2-b module so future P2-b edits are localized.
|
|
151
|
+
...RED_LINE_CATALOG_P2_B,
|
|
152
|
+
];
|
|
153
|
+
/**
|
|
154
|
+
* Catalog entries for enforcers whose source code is shipped in this slice
|
|
155
|
+
* but whose integration is deferred to subsequent slices (L2.1.1 or later).
|
|
156
|
+
*
|
|
157
|
+
* The backing-detector downgrades these to `prose-only` at runtime because
|
|
158
|
+
* the integration seam is missing. When the integration lands, the entry
|
|
159
|
+
* is removed from this set in a single-line follow-up commit.
|
|
160
|
+
*
|
|
161
|
+
* L2.1 final state: Tasks 5 (solo-code-ban) + 6 (no-root-pollution) are
|
|
162
|
+
* wired into peaks hook handle (Tasks 1-4: framework + 3 enforcers also
|
|
163
|
+
* integrated). Tasks 3 (tech-doc-presence) and 4 (mock-placement) are
|
|
164
|
+
* deferred — their request-transition / slice-check integrations are
|
|
165
|
+
* tracked separately.
|
|
166
|
+
*/
|
|
167
|
+
export const DEFERRED_ENFORCERS = new Set([
|
|
168
|
+
// L2.1 carries-over: tech-doc-presence + mock-placement (request-transition / slice-check integrations deferred)
|
|
169
|
+
'rl-tech-doc-presence-001',
|
|
170
|
+
'rl-mock-placement-001',
|
|
171
|
+
// L2.2 P1: 4 source-only enforcers (login-gate is integrated; the other 4 are deferred)
|
|
172
|
+
'rl-resume-detection-001',
|
|
173
|
+
'rl-resume-detection-002',
|
|
174
|
+
'rl-prototype-fidelity-001',
|
|
175
|
+
'rl-prototype-fidelity-002',
|
|
176
|
+
'rl-design-draft-confirm-001',
|
|
177
|
+
'rl-design-draft-confirm-002',
|
|
178
|
+
'rl-pre-rd-scan-001',
|
|
179
|
+
'rl-pre-rd-scan-002',
|
|
180
|
+
]);
|
|
181
|
+
/**
|
|
182
|
+
* A red line's catalog id is the join key. If a discovered red line in a
|
|
183
|
+
* markdown file matches no catalog entry, it stays as `prose-only`.
|
|
184
|
+
*
|
|
185
|
+
* Match policy: phrase-only for identity. Markers (MANDATORY / BLOCKING /
|
|
186
|
+
* MUST NOT / RED LINE) are too generic to disambiguate — every catalog
|
|
187
|
+
* entry shares the same marker set, so a marker-only match would always
|
|
188
|
+
* return the first catalog entry regardless of the rule.
|
|
189
|
+
*
|
|
190
|
+
* Deferred enforcers (Tasks 4-6 integration pending) are matched by
|
|
191
|
+
* phrase but tagged with enforcerRef=null so the backing-detector
|
|
192
|
+
* downgrades them to prose-only at runtime. They are NOT removed from
|
|
193
|
+
* the catalog so future integration commits can re-tag them with a
|
|
194
|
+
* single source-of-truth change.
|
|
195
|
+
*/
|
|
196
|
+
export function findCatalogEntry(rule, _markers) {
|
|
197
|
+
const lower = rule.toLowerCase();
|
|
198
|
+
for (const entry of RED_LINE_CATALOG) {
|
|
199
|
+
const phraseHit = entry.phrases.some((p) => lower.includes(p.toLowerCase()));
|
|
200
|
+
if (phraseHit) {
|
|
201
|
+
if (DEFERRED_ENFORCERS.has(entry.id)) {
|
|
202
|
+
// Return a copy with enforcerRef nulled out, so backing-detector
|
|
203
|
+
// treats it as prose-only until the integration lands.
|
|
204
|
+
return { ...entry, enforcerRef: null };
|
|
205
|
+
}
|
|
206
|
+
return entry;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* red-lines-service — main entry. Orchestrates the three tree scanners,
|
|
3
|
+
* the classifier, and the backing detector, then assembles the final
|
|
4
|
+
* RedLineAudit envelope.
|
|
5
|
+
*
|
|
6
|
+
* Pipeline (per openspec/changes/2026-06-11-l2-1-redlines-audit/design.md):
|
|
7
|
+
* 1. Run all 3 scanners in parallel (skills, rules, openspec)
|
|
8
|
+
* 2. Classifier turns MarkdownLine[] into RedLineEntry[]
|
|
9
|
+
* 3. Backing detector re-classifies each entry (cli-backed vs partial vs prose-only)
|
|
10
|
+
* 4. Tally + return RedLineAudit
|
|
11
|
+
*
|
|
12
|
+
* Sub-agent-sid enforcer (Task 2) is also invoked here: it dogfoods Slice 0.5
|
|
13
|
+
* sid-naming-guard and adds any invalid sids as warnings.
|
|
14
|
+
*/
|
|
15
|
+
import type { RedLineAudit, ScanWarning } from './types.js';
|
|
16
|
+
export interface RedLinesServiceInput {
|
|
17
|
+
readonly projectRoot: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RedLinesServiceResult {
|
|
20
|
+
readonly audit: RedLineAudit;
|
|
21
|
+
readonly warnings: readonly ScanWarning[];
|
|
22
|
+
}
|
|
23
|
+
export declare function runRedLinesAudit(input: RedLinesServiceInput): RedLinesServiceResult;
|