coding-agent-harness 1.0.1 → 1.0.2
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 +19 -0
- package/README.en-US.md +14 -0
- package/README.md +111 -86
- package/README.zh-CN.md +270 -0
- package/SKILL.md +116 -189
- package/docs-release/README.md +72 -5
- package/docs-release/architecture/overview.md +286 -28
- package/docs-release/architecture/overview.zh-CN.md +288 -0
- package/docs-release/assets/dashboard-overview-en.png +0 -0
- package/docs-release/assets/harness-architecture.svg +163 -0
- package/docs-release/assets/harness-workflow.svg +64 -0
- package/docs-release/guides/agent-installation.en-US.md +214 -0
- package/docs-release/guides/agent-installation.md +123 -26
- package/docs-release/guides/document-audience-and-surfaces.en-US.md +112 -0
- package/docs-release/guides/document-audience-and-surfaces.md +112 -0
- package/docs-release/guides/full-legacy-migration-subagent-strategy.md +334 -0
- package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +334 -0
- package/docs-release/guides/legacy-migration-agent-prompt.md +384 -0
- package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +361 -0
- package/docs-release/guides/migration-playbook.en-US.md +325 -0
- package/docs-release/guides/migration-playbook.md +329 -0
- package/docs-release/guides/parent-control-repository-pattern.en-US.md +252 -0
- package/docs-release/guides/parent-control-repository-pattern.md +252 -0
- package/docs-release/guides/repository-operating-models.en-US.md +196 -0
- package/docs-release/guides/repository-operating-models.md +196 -0
- package/docs-release/intl/README.md +15 -0
- package/docs-release/intl/de-DE.md +18 -0
- package/docs-release/intl/en-US.md +18 -0
- package/docs-release/intl/es-ES.md +18 -0
- package/docs-release/intl/fr-FR.md +18 -0
- package/docs-release/intl/ja-JP.md +18 -0
- package/docs-release/intl/ko-KR.md +18 -0
- package/docs-release/intl/zh-CN.md +18 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/brief.md +13 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/lesson_candidates.md +24 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +1 -1
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/task_plan.md +4 -2
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/{visual_roadmap.md → visual_map.md} +9 -1
- package/package.json +3 -1
- package/references/agents-md-pattern.md +3 -3
- package/references/docs-directory-standard.md +47 -3
- package/references/external-source-intake-standard.md +75 -0
- package/references/harness-ledger.md +5 -3
- package/references/legacy-12-phase-bootstrap.md +41 -0
- package/references/lessons-governance.md +23 -6
- package/references/planning-loop.md +41 -3
- package/references/project-onboarding-audit.md +10 -0
- package/references/repo-governance-standard.md +2 -0
- package/references/testing-standard.md +50 -0
- package/references/walkthrough-closeout.md +6 -5
- package/scripts/check-harness.mjs +76 -35
- package/scripts/harness.mjs +303 -12
- package/scripts/lib/capability-registry.mjs +533 -0
- package/scripts/lib/check-profiles.mjs +510 -0
- package/scripts/lib/core-shared.mjs +186 -0
- package/scripts/lib/dashboard-data.mjs +389 -0
- package/scripts/lib/dashboard-workbench.mjs +217 -0
- package/scripts/lib/dashboard-writer.mjs +93 -2
- package/scripts/lib/harness-core.mjs +10 -1318
- package/scripts/lib/lesson-maintenance.mjs +145 -0
- package/scripts/lib/markdown-utils.mjs +158 -0
- package/scripts/lib/migration-planner.mjs +478 -0
- package/scripts/lib/migration-support.mjs +312 -0
- package/scripts/lib/task-lifecycle.mjs +755 -0
- package/scripts/lib/task-scanner.mjs +682 -0
- package/scripts/smoke-dashboard.mjs +22 -0
- package/scripts/test-harness.mjs +926 -14
- package/templates/AGENTS.md.template +41 -30
- package/templates/architecture/Architecture-SSoT.md +21 -0
- package/templates/architecture/README.md +49 -0
- package/templates/architecture/critical-flows.md +22 -0
- package/templates/architecture/local-repo-context.md +20 -0
- package/templates/architecture/service-catalog.md +17 -0
- package/templates/architecture/services/service-template.md +31 -0
- package/templates/architecture/system-map.md +22 -0
- package/templates/dashboard/assets/app-src/00-state.js +41 -0
- package/templates/dashboard/assets/app-src/10-router.js +76 -0
- package/templates/dashboard/assets/app-src/20-overview.js +235 -0
- package/templates/dashboard/assets/app-src/30-tasks.js +563 -0
- package/templates/dashboard/assets/app-src/40-modules.js +58 -0
- package/templates/dashboard/assets/app-src/45-review.js +128 -0
- package/templates/dashboard/assets/app-src/50-migration.js +169 -0
- package/templates/dashboard/assets/app-src/60-shared.js +61 -0
- package/templates/dashboard/assets/app-src/90-bindings.js +382 -0
- package/templates/dashboard/assets/app.css +2575 -310
- package/templates/dashboard/assets/app.js +1498 -307
- package/templates/dashboard/assets/app.manifest.json +11 -0
- package/templates/dashboard/assets/i18n.js +429 -44
- package/templates/dashboard/assets/mermaid-renderer.js +58 -8
- package/templates/development/README.md +52 -0
- package/templates/development/codebase-map.md +11 -0
- package/templates/development/cross-repo-debugging.md +18 -0
- package/templates/development/external-context/service-template.md +33 -0
- package/templates/development/external-source-packs/README.md +24 -0
- package/templates/development/external-source-packs/digest-template.md +28 -0
- package/templates/development/local-setup.md +16 -0
- package/templates/development/stubs-and-mocks.md +11 -0
- package/templates/integrations/README.md +40 -0
- package/templates/integrations/api-contract.md +42 -0
- package/templates/integrations/event-contract.md +46 -0
- package/templates/integrations/third-party/vendor-template.md +42 -0
- package/templates/integrations/webhook-contract.md +41 -0
- package/templates/planning/brief.md +32 -0
- package/templates/planning/lesson_candidates.md +58 -0
- package/templates/planning/long-running-task-contract.md +7 -0
- package/templates/planning/module_brief.md +25 -0
- package/templates/planning/module_session_prompt.md +6 -0
- package/templates/planning/task_plan.md +7 -5
- package/templates/planning/{visual_roadmap.md → visual_map.md} +24 -2
- package/templates/reference/docs-library-standard.md +31 -0
- package/templates/reference/execution-workflow-standard.md +4 -2
- package/templates/reference/external-source-intake-standard.md +82 -0
- package/templates/reference/harness-ledger-standard.md +1 -0
- package/templates/reference/repo-governance-standard.md +6 -4
- package/templates/reference/walkthrough-standard.md +2 -1
- package/templates/walkthrough/walkthrough-template.md +2 -2
- package/templates-zh-CN/AGENTS.md.template +69 -70
- package/templates-zh-CN/architecture/Architecture-SSoT.md +21 -0
- package/templates-zh-CN/architecture/README.md +51 -0
- package/templates-zh-CN/architecture/critical-flows.md +24 -0
- package/templates-zh-CN/architecture/local-repo-context.md +20 -0
- package/templates-zh-CN/architecture/service-catalog.md +17 -0
- package/templates-zh-CN/architecture/services/service-template.md +31 -0
- package/templates-zh-CN/architecture/system-map.md +22 -0
- package/templates-zh-CN/development/README.md +54 -0
- package/templates-zh-CN/development/codebase-map.md +11 -0
- package/templates-zh-CN/development/cross-repo-debugging.md +18 -0
- package/templates-zh-CN/development/external-context/service-template.md +33 -0
- package/templates-zh-CN/development/external-source-packs/README.md +24 -0
- package/templates-zh-CN/development/external-source-packs/digest-template.md +28 -0
- package/templates-zh-CN/development/local-setup.md +16 -0
- package/templates-zh-CN/development/stubs-and-mocks.md +11 -0
- package/templates-zh-CN/integrations/README.md +42 -0
- package/templates-zh-CN/integrations/api-contract.md +42 -0
- package/templates-zh-CN/integrations/event-contract.md +46 -0
- package/templates-zh-CN/integrations/third-party/vendor-template.md +42 -0
- package/templates-zh-CN/integrations/webhook-contract.md +41 -0
- package/templates-zh-CN/planning/brief.md +32 -0
- package/templates-zh-CN/planning/lesson_candidates.md +58 -0
- package/templates-zh-CN/planning/long-running-task-contract.md +1 -1
- package/templates-zh-CN/planning/module_brief.md +25 -0
- package/templates-zh-CN/planning/module_plan.md +2 -2
- package/templates-zh-CN/planning/module_session_prompt.md +4 -3
- package/templates-zh-CN/planning/task_plan.md +10 -4
- package/templates-zh-CN/planning/{visual_roadmap.md → visual_map.md} +21 -2
- package/templates-zh-CN/reference/docs-library-standard.md +35 -0
- package/templates-zh-CN/reference/execution-workflow-standard.md +9 -2
- package/templates-zh-CN/reference/external-source-intake-standard.md +82 -0
- package/templates-zh-CN/reference/harness-ledger-standard.md +5 -2
- package/templates-zh-CN/reference/repo-governance-standard.md +2 -0
- package/templates-zh-CN/reference/walkthrough-standard.md +4 -4
- package/templates-zh-CN/walkthrough/Closeout-SSoT.md +2 -2
- package/templates-zh-CN/walkthrough/walkthrough-template.md +2 -2
- package/templates-zh-CN/dashboard/assets/app.css +0 -399
- package/templates-zh-CN/dashboard/assets/app.js +0 -435
- package/templates-zh-CN/dashboard/assets/i18n.js +0 -47
- package/templates-zh-CN/dashboard/assets/markdown-reader.js +0 -116
- package/templates-zh-CN/dashboard/assets/mermaid-renderer.js +0 -59
- package/templates-zh-CN/dashboard/index.html +0 -18
|
@@ -1,47 +1,432 @@
|
|
|
1
1
|
window.HarnessI18n = {
|
|
2
|
-
en: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
2
|
+
"en": {
|
|
3
|
+
"eyebrow": "Human Visibility Dashboard",
|
|
4
|
+
"projectCockpit": "Console",
|
|
5
|
+
"overview": "Overview",
|
|
6
|
+
"taskIndex": "Task Index",
|
|
7
|
+
"reviewQueue": "Review Queue",
|
|
8
|
+
"moduleView": "Modules",
|
|
9
|
+
"readiness": "Readiness",
|
|
10
|
+
"tasks": "Tasks",
|
|
11
|
+
"blockers": "Blockers",
|
|
12
|
+
"advice": "Advice",
|
|
13
|
+
"warnings": "Warnings",
|
|
14
|
+
"failures": "Failures",
|
|
15
|
+
"briefCoverage": "Brief coverage",
|
|
16
|
+
"visualMapCoverage": "Visual map coverage",
|
|
17
|
+
"fullCutover": "Full cutover",
|
|
18
|
+
"ready": "Ready",
|
|
19
|
+
"notReady": "Not ready",
|
|
20
|
+
"legacyVisualOnly": "Legacy visual only",
|
|
21
|
+
"weakBrief": "Weak brief",
|
|
22
|
+
"resolveBlockers": "Resolve release blockers before continuing.",
|
|
23
|
+
"missingBriefs": "tasks still need human visibility briefs.",
|
|
24
|
+
"reviewAdvice": "Continue, but keep adoption advice visible.",
|
|
25
|
+
"noBlockers": "No blockers in this snapshot.",
|
|
26
|
+
"firstLook": "First look",
|
|
27
|
+
"projectFlow": "Project Flow",
|
|
28
|
+
"projectProgress": "Project Progress",
|
|
29
|
+
"completed": "completed",
|
|
30
|
+
"done": "Done",
|
|
31
|
+
"active": "Active",
|
|
32
|
+
"planned": "Planned",
|
|
33
|
+
"nodes": "nodes",
|
|
34
|
+
"edges": "edges",
|
|
35
|
+
"noFlow": "No computable flow yet. Add brief.md Mermaid or module/task roadmaps.",
|
|
36
|
+
"currentWork": "Current work",
|
|
37
|
+
"activeBriefs": "Active Task Briefs",
|
|
38
|
+
"openTaskIndex": "Open task index",
|
|
39
|
+
"noActiveTasks": "No active task brief found.",
|
|
40
|
+
"visibilityBriefMissing": "Visibility brief missing",
|
|
41
|
+
"missingBriefExplain": "This task can be checked by agents, but humans still cannot understand it from the dashboard alone.",
|
|
42
|
+
"noPhaseData": "No phase data.",
|
|
43
|
+
"searchPlaceholder": "Search title, id, module, or state",
|
|
44
|
+
"searchTasks": "Search tasks",
|
|
45
|
+
"stateFilter": "Filter by state",
|
|
46
|
+
"briefReady": "brief ready",
|
|
47
|
+
"briefMissing": "brief missing",
|
|
48
|
+
"taskNotFound": "Task not found.",
|
|
49
|
+
"taskVisibility": "Task visibility",
|
|
50
|
+
"phaseTimeline": "Phase Timeline",
|
|
51
|
+
"taskPlan": "Task Plan",
|
|
52
|
+
"brief": "Brief",
|
|
53
|
+
"strategy": "Execution Strategy",
|
|
54
|
+
"visualMap": "Visual Map",
|
|
55
|
+
"legacyRoadmap": "Legacy Visual Roadmap",
|
|
56
|
+
"progress": "Progress",
|
|
57
|
+
"review": "Review",
|
|
58
|
+
"findings": "Findings",
|
|
59
|
+
"walkthrough": "Walkthrough",
|
|
60
|
+
"lessonCandidates": "Lesson Candidates",
|
|
61
|
+
"longRunningContract": "Long-running Contract",
|
|
62
|
+
"references": "References",
|
|
63
|
+
"artifacts": "Artifacts",
|
|
64
|
+
"source": "Source",
|
|
65
|
+
"rendered": "Rendered",
|
|
66
|
+
"sourceDocuments": "Source Documents",
|
|
67
|
+
"taskDocuments": "Task Documents",
|
|
68
|
+
"generatedFallback": "generated fallback",
|
|
69
|
+
"noDocuments": "No source documents.",
|
|
70
|
+
"selectedSource": "Selected Source",
|
|
71
|
+
"openFindings": "Open Findings",
|
|
72
|
+
"noOpenFindings": "No open findings.",
|
|
73
|
+
"evidence": "Evidence",
|
|
74
|
+
"noEvidence": "No evidence logged.",
|
|
75
|
+
"noModules": "No modules found.",
|
|
76
|
+
"moduleBriefMissing": "Module brief missing. Add a module-level visibility brief before treating module migration as complete.",
|
|
77
|
+
"moduleTasks": "Module Tasks",
|
|
78
|
+
"noModuleTasks": "No module tasks.",
|
|
79
|
+
"migration": "Migration",
|
|
80
|
+
"migrationSnapshot": "Migration Snapshot",
|
|
81
|
+
"taskPreset": "Task preset",
|
|
82
|
+
"targetLevel": "Target level",
|
|
83
|
+
"achievedLevel": "Achieved level",
|
|
84
|
+
"strictDeferred": "Strict deferred",
|
|
85
|
+
"evidenceBundle": "Evidence bundle",
|
|
86
|
+
"migrationSummary": "Migration Attention",
|
|
87
|
+
"migrationWorkbench": "Migration Workbench",
|
|
88
|
+
"aggregateMigrationView": "aggregate migration view",
|
|
89
|
+
"runwayBaseline": "Baseline snapshot",
|
|
90
|
+
"runwayTriage": "Warning triage",
|
|
91
|
+
"runwayContracts": "Active task contracts",
|
|
92
|
+
"runwayModules": "Module classification",
|
|
93
|
+
"runwayCutover": "Strict cutover",
|
|
94
|
+
"items": "items",
|
|
95
|
+
"groups": "groups",
|
|
96
|
+
"warningFilter": "Filter warnings",
|
|
97
|
+
"allWarnings": "All warnings",
|
|
98
|
+
"noWarnings": "No warnings in this filter.",
|
|
99
|
+
"showing": "Showing",
|
|
100
|
+
"showingGroups": "Showing groups",
|
|
101
|
+
"prevPage": "Previous",
|
|
102
|
+
"nextPage": "Next",
|
|
103
|
+
"confidence": "confidence",
|
|
104
|
+
"addVisibilityBrief": "Add a human-readable brief before this task is treated as migrated.",
|
|
105
|
+
"groupBy": "Group by",
|
|
106
|
+
"group_migration": "Migration bucket",
|
|
107
|
+
"group_module": "Module",
|
|
108
|
+
"group_month": "Month",
|
|
109
|
+
"group_state": "State",
|
|
110
|
+
"inferredModule": "Module",
|
|
111
|
+
"unclassifiedModule": "legacy-unclassified",
|
|
112
|
+
"visibilityLayer": "Visibility Layer",
|
|
113
|
+
"lessons": "Lessons",
|
|
114
|
+
"lesson": "Lesson",
|
|
115
|
+
"noLessons": "No lessons captured.",
|
|
116
|
+
"releaseHealth": "Release Health",
|
|
117
|
+
"activeCurrent": "Active / Current",
|
|
118
|
+
"briefReadyGroup": "Brief-ready Tasks",
|
|
119
|
+
"legacyMonth": "Legacy Tasks",
|
|
120
|
+
"showMore": "Show more",
|
|
121
|
+
"showingFirst": "showing first",
|
|
122
|
+
"columnTask": "Task",
|
|
123
|
+
"columnState": "State",
|
|
124
|
+
"columnCompletion": "Completion",
|
|
125
|
+
"columnBrief": "Brief",
|
|
126
|
+
"statTotal": "Total",
|
|
127
|
+
"statInProgress": "In progress",
|
|
128
|
+
"statReview": "In review",
|
|
129
|
+
"statBlocked": "Blocked",
|
|
130
|
+
"statDone": "Done",
|
|
131
|
+
"statOverall": "overall",
|
|
132
|
+
"groupCompletion": "Group completion",
|
|
133
|
+
"none": "None",
|
|
134
|
+
"dark": "Dark",
|
|
135
|
+
"light": "Light",
|
|
136
|
+
"system": "System",
|
|
137
|
+
"state_all": "all",
|
|
138
|
+
"state_pass": "pass",
|
|
139
|
+
"state_warn": "warn",
|
|
140
|
+
"state_fail": "fail",
|
|
141
|
+
"state_in_progress": "in progress",
|
|
142
|
+
"state_planned": "planned",
|
|
143
|
+
"state_review": "review",
|
|
144
|
+
"state_blocked": "blocked",
|
|
145
|
+
"state_done": "done",
|
|
146
|
+
"state_unknown": "unknown",
|
|
147
|
+
"viewDetails": "View Details",
|
|
148
|
+
"close": "Close",
|
|
149
|
+
"fullView": "Open Full Page",
|
|
150
|
+
"lessonNotFound": "Lesson record not found",
|
|
151
|
+
"lessonDocMissing": "The detail Markdown documentation for this lesson was not found or is yet to be created.",
|
|
152
|
+
"ssotLedger": "Change & Quality Ledger SSoT",
|
|
153
|
+
"ledgerInsights": "Harness Ledger Insights",
|
|
154
|
+
"taskStatusSplit": "Ledger Task Distribution",
|
|
155
|
+
"lessonsCheckRate": "Lessons Review Rate",
|
|
156
|
+
"evidenceAuditRate": "Evidence Audit Rate",
|
|
157
|
+
"tagClosed": "Closed",
|
|
158
|
+
"tagOpen": "Active",
|
|
159
|
+
"tagBlocked": "Blocked",
|
|
160
|
+
"date": "Date",
|
|
161
|
+
"target": "Target",
|
|
162
|
+
"relation": "Relation",
|
|
163
|
+
"document": "Detail Doc",
|
|
164
|
+
"badgeBrief": "Brief",
|
|
165
|
+
"badgeBriefMissing": "No Brief",
|
|
166
|
+
"badgeMap": "Map",
|
|
167
|
+
"badgeMapMissing": "No Map",
|
|
168
|
+
"mapReady": "map ready",
|
|
169
|
+
"mapMissing": "map missing",
|
|
170
|
+
"legendTitle": "Legend",
|
|
171
|
+
"legendBriefDesc": "Indicates that the task contains a complete human-readable visibility brief.",
|
|
172
|
+
"legendMapDesc": "Indicates that the task is integrated into the architectural map.",
|
|
173
|
+
"filterTitle": "Filters & Controls",
|
|
174
|
+
"layout": "View Layout",
|
|
175
|
+
"layoutList": "List View",
|
|
176
|
+
"layoutGrid": "Grid View",
|
|
177
|
+
"legacyState": "Task state",
|
|
178
|
+
"lifecycleState": "Lifecycle",
|
|
179
|
+
"reviewStatus": "Review",
|
|
180
|
+
"closeoutStatus": "Closeout",
|
|
181
|
+
"state_closing": "closing",
|
|
182
|
+
"state_closed": "closed",
|
|
183
|
+
"state_ready": "ready",
|
|
184
|
+
"state_in_review": "in review",
|
|
185
|
+
"state_review-blocked": "review blocked",
|
|
186
|
+
"state_missing": "missing",
|
|
187
|
+
"state_required": "required",
|
|
188
|
+
"state_reviewed-unconfirmed": "reviewed",
|
|
189
|
+
"state_confirmed": "confirmed",
|
|
190
|
+
"state_blocked-open-findings": "blocked findings",
|
|
191
|
+
"reviewActions": "Review Actions",
|
|
192
|
+
"reviewWorkspace": "Review Workspace",
|
|
193
|
+
"openReviewWorkspace": "Open Review Workspace",
|
|
194
|
+
"reviewOpenInWorkspace": "Confirm review from the Review Workspace.",
|
|
195
|
+
"lessonCandidateStatus": "Lesson candidate status",
|
|
196
|
+
"reviewCandidateDecisionRequired": "Complete the lesson candidate decision before confirming human review.",
|
|
197
|
+
"documentMissing": "Document missing from this snapshot.",
|
|
198
|
+
"staticReadOnly": "Static snapshot is read-only",
|
|
199
|
+
"staticReadOnlyDetail": "Use the dynamic workbench to submit review or governance actions.",
|
|
200
|
+
"reviewQueueSubtitle": "Only tasks currently in the execution Review stage appear here. Closeout is tracked separately.",
|
|
201
|
+
"reviewReady": "Ready",
|
|
202
|
+
"reviewBlockedQueue": "Blocked",
|
|
203
|
+
"reviewConfirmedQueue": "Confirmed",
|
|
204
|
+
"noReviewTasks": "No tasks are currently in review.",
|
|
205
|
+
"reviewAlreadyConfirmed": "Human review is already confirmed.",
|
|
206
|
+
"reviewBlocked": "Close P0-P2 open or release-blocking findings before confirming.",
|
|
207
|
+
"reviewWalkthroughRequired": "Add and link a walkthrough in Closeout SSoT before confirming human review.",
|
|
208
|
+
"reviewWorkbenchReady": "Confirm the human review when the evidence and findings are checked.",
|
|
209
|
+
"reviewConfirmChecklist": "I checked the walkthrough, task review evidence, and open findings.",
|
|
210
|
+
"confirmReviewComplete": "Confirm Human Review",
|
|
211
|
+
"reviewChecklistRequired": "Check the confirmation box first.",
|
|
212
|
+
"reviewConfirmTextMismatch": "Type the task id shown in the input hint.",
|
|
213
|
+
"reviewSubmitting": "Submitting review confirmation...",
|
|
214
|
+
"reviewCompleteSuccess": "Review confirmed. Reloading snapshot...",
|
|
215
|
+
"reviewCompleteFailed": "Review confirmation failed"
|
|
46
216
|
},
|
|
217
|
+
"zh": {
|
|
218
|
+
"eyebrow": "Coding Agent Harness 控制台",
|
|
219
|
+
"projectCockpit": "控制台",
|
|
220
|
+
"overview": "总览",
|
|
221
|
+
"taskIndex": "任务索引",
|
|
222
|
+
"reviewQueue": "审查队列",
|
|
223
|
+
"moduleView": "模块",
|
|
224
|
+
"readiness": "发布状态",
|
|
225
|
+
"tasks": "任务",
|
|
226
|
+
"blockers": "阻塞",
|
|
227
|
+
"advice": "建议",
|
|
228
|
+
"warnings": "警告",
|
|
229
|
+
"failures": "失败",
|
|
230
|
+
"briefCoverage": "Brief 覆盖",
|
|
231
|
+
"visualMapCoverage": "图谱覆盖",
|
|
232
|
+
"fullCutover": "完整切换",
|
|
233
|
+
"ready": "就绪",
|
|
234
|
+
"notReady": "未就绪",
|
|
235
|
+
"legacyVisualOnly": "仅旧图谱",
|
|
236
|
+
"weakBrief": "弱 Brief",
|
|
237
|
+
"resolveBlockers": "先处理发布阻塞项。",
|
|
238
|
+
"missingBriefs": "个任务缺少给人看的 brief。",
|
|
239
|
+
"reviewAdvice": "可以继续,但升级建议必须保持可见。",
|
|
240
|
+
"noBlockers": "当前快照没有阻塞项。",
|
|
241
|
+
"firstLook": "第一眼",
|
|
242
|
+
"projectFlow": "项目流程图",
|
|
243
|
+
"projectProgress": "项目进度",
|
|
244
|
+
"completed": "已完成",
|
|
245
|
+
"done": "已完成",
|
|
246
|
+
"active": "进行中",
|
|
247
|
+
"planned": "待开始",
|
|
248
|
+
"nodes": "节点",
|
|
249
|
+
"edges": "边",
|
|
250
|
+
"noFlow": "还没有可计算流程图。请补 brief.md Mermaid 或任务/模块路线图。",
|
|
251
|
+
"currentWork": "当前工作",
|
|
252
|
+
"activeBriefs": "活跃任务 Brief",
|
|
253
|
+
"openTaskIndex": "打开任务索引",
|
|
254
|
+
"noActiveTasks": "没有活跃任务 brief。",
|
|
255
|
+
"visibilityBriefMissing": "缺少可见性 Brief",
|
|
256
|
+
"missingBriefExplain": "这个任务可以被 Agent 检查,但人还不能只靠 dashboard 看懂。",
|
|
257
|
+
"noPhaseData": "没有阶段数据。",
|
|
258
|
+
"searchPlaceholder": "搜索标题、ID、模块或状态",
|
|
259
|
+
"searchTasks": "搜索任务",
|
|
260
|
+
"stateFilter": "按状态过滤",
|
|
261
|
+
"briefReady": "brief 已就绪",
|
|
262
|
+
"briefMissing": "brief 缺失",
|
|
263
|
+
"taskNotFound": "找不到任务。",
|
|
264
|
+
"taskVisibility": "任务可见性",
|
|
265
|
+
"phaseTimeline": "阶段时间线",
|
|
266
|
+
"taskPlan": "任务计划",
|
|
267
|
+
"brief": "Brief",
|
|
268
|
+
"strategy": "执行策略",
|
|
269
|
+
"visualMap": "可视化图谱",
|
|
270
|
+
"legacyRoadmap": "旧版可视化路线",
|
|
271
|
+
"progress": "进度",
|
|
272
|
+
"review": "审查",
|
|
273
|
+
"findings": "发现",
|
|
274
|
+
"walkthrough": "Walkthrough",
|
|
275
|
+
"lessonCandidates": "教训候选",
|
|
276
|
+
"longRunningContract": "长程任务合同",
|
|
277
|
+
"references": "参考资料",
|
|
278
|
+
"artifacts": "证据产物",
|
|
279
|
+
"source": "来源建议",
|
|
280
|
+
"rendered": "渲染",
|
|
281
|
+
"sourceDocuments": "源文档",
|
|
282
|
+
"taskDocuments": "任务文档",
|
|
283
|
+
"generatedFallback": "生成兜底",
|
|
284
|
+
"noDocuments": "没有源文档。",
|
|
285
|
+
"selectedSource": "选中的源文档",
|
|
286
|
+
"openFindings": "开放发现",
|
|
287
|
+
"noOpenFindings": "没有开放发现。",
|
|
288
|
+
"evidence": "证据",
|
|
289
|
+
"noEvidence": "没有登记证据。",
|
|
290
|
+
"noModules": "没有模块。",
|
|
291
|
+
"moduleBriefMissing": "模块 brief 缺失。迁移完成前需要补一个模块级可见性 brief。",
|
|
292
|
+
"moduleTasks": "模块任务",
|
|
293
|
+
"noModuleTasks": "没有模块任务。",
|
|
294
|
+
"migration": "迁移",
|
|
295
|
+
"migrationSnapshot": "迁移快照",
|
|
296
|
+
"taskPreset": "任务 preset",
|
|
297
|
+
"targetLevel": "目标等级",
|
|
298
|
+
"achievedLevel": "实际完成等级",
|
|
299
|
+
"strictDeferred": "Strict deferred",
|
|
300
|
+
"evidenceBundle": "证据包",
|
|
301
|
+
"migrationSummary": "迁移关注项",
|
|
302
|
+
"migrationWorkbench": "迁移工作台",
|
|
303
|
+
"aggregateMigrationView": "聚合迁移视图",
|
|
304
|
+
"runwayBaseline": "基线快照",
|
|
305
|
+
"runwayTriage": "警告分诊",
|
|
306
|
+
"runwayContracts": "活跃任务合同",
|
|
307
|
+
"runwayModules": "模块分类",
|
|
308
|
+
"runwayCutover": "严格切换",
|
|
309
|
+
"items": "项",
|
|
310
|
+
"groups": "组",
|
|
311
|
+
"warningFilter": "筛选警告",
|
|
312
|
+
"allWarnings": "全部警告",
|
|
313
|
+
"noWarnings": "这个筛选下没有警告。",
|
|
314
|
+
"showing": "显示",
|
|
315
|
+
"showingGroups": "显示分组",
|
|
316
|
+
"prevPage": "上一页",
|
|
317
|
+
"nextPage": "下一页",
|
|
318
|
+
"confidence": "置信度",
|
|
319
|
+
"addVisibilityBrief": "补一个给人看的 brief,再把这个任务视为已迁移。",
|
|
320
|
+
"groupBy": "分组方式",
|
|
321
|
+
"group_migration": "迁移桶",
|
|
322
|
+
"group_module": "模块",
|
|
323
|
+
"group_month": "月份",
|
|
324
|
+
"group_state": "状态",
|
|
325
|
+
"inferredModule": "模块",
|
|
326
|
+
"unclassifiedModule": "未分类历史任务",
|
|
327
|
+
"visibilityLayer": "可见性层",
|
|
328
|
+
"lessons": "教训",
|
|
329
|
+
"lesson": "教训",
|
|
330
|
+
"noLessons": "没有教训记录。",
|
|
331
|
+
"releaseHealth": "发布健康度",
|
|
332
|
+
"activeCurrent": "活跃 / 当前",
|
|
333
|
+
"briefReadyGroup": "已有 Brief 的任务",
|
|
334
|
+
"legacyMonth": "历史任务",
|
|
335
|
+
"showMore": "展开更多",
|
|
336
|
+
"showingFirst": "先显示",
|
|
337
|
+
"columnTask": "任务",
|
|
338
|
+
"columnState": "状态",
|
|
339
|
+
"columnCompletion": "完成度",
|
|
340
|
+
"columnBrief": "Brief",
|
|
341
|
+
"none": "无",
|
|
342
|
+
"dark": "黑夜",
|
|
343
|
+
"light": "白天",
|
|
344
|
+
"system": "跟随系统",
|
|
345
|
+
"state_all": "全部",
|
|
346
|
+
"state_pass": "通过",
|
|
347
|
+
"state_warn": "警告",
|
|
348
|
+
"state_fail": "失败",
|
|
349
|
+
"state_in_progress": "进行中",
|
|
350
|
+
"state_planned": "计划中",
|
|
351
|
+
"state_review": "审查中",
|
|
352
|
+
"state_blocked": "阻塞",
|
|
353
|
+
"state_done": "完成",
|
|
354
|
+
"state_unknown": "未知",
|
|
355
|
+
"viewDetails": "查看详情",
|
|
356
|
+
"close": "关闭",
|
|
357
|
+
"fullView": "全屏查看",
|
|
358
|
+
"lessonNotFound": "未找到对应的教训记录",
|
|
359
|
+
"lessonDocMissing": "该沉淀教训的详情 Markdown 描述文档未在此数据快照中关联或尚未创建。",
|
|
360
|
+
"ssotLedger": "变更与质量账本 SSoT",
|
|
361
|
+
"ledgerInsights": "Harness 账本合规洞察",
|
|
362
|
+
"taskStatusSplit": "账本任务状态分布",
|
|
363
|
+
"lessonsCheckRate": "经验审查覆盖率",
|
|
364
|
+
"evidenceAuditRate": "验证证据齐备率",
|
|
365
|
+
"tagClosed": "已结案",
|
|
366
|
+
"tagOpen": "未结案",
|
|
367
|
+
"tagBlocked": "已阻塞",
|
|
368
|
+
"date": "发布日期",
|
|
369
|
+
"target": "修改目标",
|
|
370
|
+
"relation": "冲突关联",
|
|
371
|
+
"document": "详情文档",
|
|
372
|
+
"statTotal": "总计",
|
|
373
|
+
"statInProgress": "进行中",
|
|
374
|
+
"statReview": "审查中",
|
|
375
|
+
"statBlocked": "阻塞",
|
|
376
|
+
"statDone": "完成",
|
|
377
|
+
"statOverall": "整体进度",
|
|
378
|
+
"groupCompletion": "组内完成度",
|
|
379
|
+
"badgeBrief": "Brief",
|
|
380
|
+
"badgeBriefMissing": "无 Brief",
|
|
381
|
+
"badgeMap": "图谱",
|
|
382
|
+
"badgeMapMissing": "无图谱",
|
|
383
|
+
"mapReady": "图谱已就绪",
|
|
384
|
+
"mapMissing": "图谱缺失",
|
|
385
|
+
"legendTitle": "图谱图例",
|
|
386
|
+
"legendBriefDesc": "表示该任务包含完整的给人看的 visibility brief 文档",
|
|
387
|
+
"legendMapDesc": "表示该任务包含架构图谱定义",
|
|
388
|
+
"filterTitle": "过滤器与控制",
|
|
389
|
+
"layout": "展示布局",
|
|
390
|
+
"layoutList": "列表布局",
|
|
391
|
+
"layoutGrid": "网格布局",
|
|
392
|
+
"legacyState": "任务状态",
|
|
393
|
+
"lifecycleState": "生命周期",
|
|
394
|
+
"reviewStatus": "审查状态",
|
|
395
|
+
"closeoutStatus": "收口状态",
|
|
396
|
+
"state_closing": "收口中",
|
|
397
|
+
"state_closed": "已关闭",
|
|
398
|
+
"state_ready": "就绪",
|
|
399
|
+
"state_in_review": "审查中",
|
|
400
|
+
"state_review-blocked": "审查阻塞",
|
|
401
|
+
"state_missing": "缺失",
|
|
402
|
+
"state_required": "待审查",
|
|
403
|
+
"state_reviewed-unconfirmed": "已审未确认",
|
|
404
|
+
"state_confirmed": "已确认",
|
|
405
|
+
"state_blocked-open-findings": "发现阻塞",
|
|
406
|
+
"reviewActions": "审查操作",
|
|
407
|
+
"reviewWorkspace": "审查工作台",
|
|
408
|
+
"openReviewWorkspace": "打开审查工作台",
|
|
409
|
+
"reviewOpenInWorkspace": "请在审查工作台中确认审查。",
|
|
410
|
+
"lessonCandidateStatus": "教训候选状态",
|
|
411
|
+
"reviewCandidateDecisionRequired": "先完成 lesson candidate 判定,再确认人工审查。",
|
|
412
|
+
"documentMissing": "当前快照中没有这个文档。",
|
|
413
|
+
"staticReadOnly": "静态快照只读",
|
|
414
|
+
"staticReadOnlyDetail": "需要提交审查或治理动作时,请使用动态 workbench。",
|
|
415
|
+
"reviewQueueSubtitle": "这里只显示当前处在执行审查阶段的任务;收口状态单独跟踪。",
|
|
416
|
+
"reviewReady": "待确认",
|
|
417
|
+
"reviewBlockedQueue": "阻塞",
|
|
418
|
+
"reviewConfirmedQueue": "已确认",
|
|
419
|
+
"noReviewTasks": "当前没有处在审查阶段的任务。",
|
|
420
|
+
"reviewAlreadyConfirmed": "人工审查已经确认。",
|
|
421
|
+
"reviewBlocked": "先关闭 P0-P2 开放项或阻塞发布的发现,再确认审查。",
|
|
422
|
+
"reviewWalkthroughRequired": "先在 Closeout SSoT 中补充并链接 Walkthrough,再确认人工审查。",
|
|
423
|
+
"reviewWorkbenchReady": "确认前请核对审查证据与开放发现。",
|
|
424
|
+
"reviewConfirmChecklist": "我已核对 Walkthrough、任务审查证据和开放发现。",
|
|
425
|
+
"confirmReviewComplete": "确认人工审查",
|
|
426
|
+
"reviewChecklistRequired": "请先勾选确认框。",
|
|
427
|
+
"reviewConfirmTextMismatch": "请输入提示中的任务 ID。",
|
|
428
|
+
"reviewSubmitting": "正在提交审查确认...",
|
|
429
|
+
"reviewCompleteSuccess": "审查已确认,正在刷新快照...",
|
|
430
|
+
"reviewCompleteFailed": "审查确认失败"
|
|
431
|
+
}
|
|
47
432
|
};
|
|
@@ -25,25 +25,35 @@ function parseFlowchart(code) {
|
|
|
25
25
|
edges.push([from, to]);
|
|
26
26
|
}
|
|
27
27
|
if (nodes.size === 0) return null;
|
|
28
|
-
|
|
28
|
+
const direction = (lines[0].match(/^flowchart\s+(LR|TB|TD|RL|BT)/i)?.[1] || "LR").toUpperCase();
|
|
29
|
+
return { direction, nodes: [...nodes.entries()], edges };
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
function renderSvg({ nodes, edges }) {
|
|
32
|
-
const
|
|
33
|
-
const height =
|
|
34
|
-
const positions = new Map(nodes.map(([id], index) => [id, { x: 70 + index * 140, y: 70 }]));
|
|
32
|
+
function renderSvg({ direction, nodes, edges }) {
|
|
33
|
+
const layout = layoutNodes(nodes, direction);
|
|
34
|
+
const { positions, width, height } = layout;
|
|
35
35
|
const nodeSvg = nodes.map(([id, label]) => {
|
|
36
36
|
const pos = positions.get(id);
|
|
37
|
+
const displayLabel = truncateLabel(label);
|
|
37
38
|
return `<g class="mermaid-node">
|
|
38
|
-
<
|
|
39
|
-
<
|
|
39
|
+
<title>${escapeMermaid(label).replaceAll("\\n", " ")}</title>
|
|
40
|
+
<rect x="${pos.x - pos.width / 2}" y="${pos.y - 24}" width="${pos.width}" height="48" rx="8"></rect>
|
|
41
|
+
<text x="${pos.x}" y="${pos.y + 4}" text-anchor="middle">${escapeMermaid(displayLabel)}</text>
|
|
40
42
|
</g>`;
|
|
41
43
|
}).join("");
|
|
42
44
|
const edgeSvg = edges.map(([from, to]) => {
|
|
43
45
|
const a = positions.get(from);
|
|
44
46
|
const b = positions.get(to);
|
|
45
47
|
if (!a || !b) return "";
|
|
46
|
-
|
|
48
|
+
const horizontal = Math.abs(a.x - b.x) > Math.abs(a.y - b.y);
|
|
49
|
+
const startX = horizontal ? a.x + Math.sign(b.x - a.x) * (a.width / 2) : a.x;
|
|
50
|
+
const startY = horizontal ? a.y : a.y + Math.sign(b.y - a.y) * 24;
|
|
51
|
+
const endX = horizontal ? b.x - Math.sign(b.x - a.x) * (b.width / 2 + 8) : b.x;
|
|
52
|
+
const endY = horizontal ? b.y : b.y - Math.sign(b.y - a.y) * 32;
|
|
53
|
+
const arrow = horizontal
|
|
54
|
+
? `M ${endX} ${endY} l ${b.x > a.x ? -7 : 7} -5 v 10 z`
|
|
55
|
+
: `M ${endX} ${endY} l -5 ${b.y > a.y ? -7 : 7} h 10 z`;
|
|
56
|
+
return `<path class="mermaid-edge" d="M ${startX} ${startY} L ${endX} ${endY}"></path><path class="mermaid-arrow" d="${arrow}"></path>`;
|
|
47
57
|
}).join("");
|
|
48
58
|
return `<figure class="mermaid-rendered">
|
|
49
59
|
<figcaption>Mermaid</figcaption>
|
|
@@ -51,6 +61,46 @@ function renderSvg({ nodes, edges }) {
|
|
|
51
61
|
</figure>`;
|
|
52
62
|
}
|
|
53
63
|
|
|
64
|
+
function layoutNodes(nodes, direction) {
|
|
65
|
+
const vertical = ["TD", "TB", "BT"].includes(direction);
|
|
66
|
+
const nodeSizes = nodes.map(([id, label]) => [id, nodeWidth(label)]);
|
|
67
|
+
const positions = new Map();
|
|
68
|
+
const margin = 48;
|
|
69
|
+
const rowGap = 104;
|
|
70
|
+
const colGap = 34;
|
|
71
|
+
if (vertical) {
|
|
72
|
+
const maxWidth = Math.max(220, ...nodeSizes.map(([, width]) => width));
|
|
73
|
+
nodeSizes.forEach(([id, width], index) => {
|
|
74
|
+
positions.set(id, { x: margin + maxWidth / 2, y: margin + 24 + index * rowGap, width });
|
|
75
|
+
});
|
|
76
|
+
return { positions, width: maxWidth + margin * 2, height: Math.max(150, margin * 2 + nodeSizes.length * rowGap) };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const maxPerRow = nodes.length > 5 ? Math.ceil(Math.sqrt(nodes.length * 1.4)) : nodes.length;
|
|
80
|
+
let y = margin + 24;
|
|
81
|
+
let width = 360;
|
|
82
|
+
for (let index = 0; index < nodeSizes.length; index += maxPerRow) {
|
|
83
|
+
const row = nodeSizes.slice(index, index + maxPerRow);
|
|
84
|
+
let x = margin;
|
|
85
|
+
for (const [id, nodeW] of row) {
|
|
86
|
+
positions.set(id, { x: x + nodeW / 2, y, width: nodeW });
|
|
87
|
+
x += nodeW + colGap;
|
|
88
|
+
}
|
|
89
|
+
width = Math.max(width, x + margin - colGap);
|
|
90
|
+
y += rowGap;
|
|
91
|
+
}
|
|
92
|
+
return { positions, width, height: Math.max(150, y + margin - rowGap) };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function nodeWidth(label) {
|
|
96
|
+
return Math.max(112, Math.min(240, String(label || "").replaceAll("\\n", " ").length * 7 + 34));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function truncateLabel(label) {
|
|
100
|
+
const text = String(label || "").replaceAll("\\n", " ");
|
|
101
|
+
return text.length > 28 ? `${text.slice(0, 25)}...` : text;
|
|
102
|
+
}
|
|
103
|
+
|
|
54
104
|
function escapeMermaid(value) {
|
|
55
105
|
return String(value ?? "")
|
|
56
106
|
.replaceAll("&", "&")
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Development Context
|
|
2
|
+
|
|
3
|
+
Context Doc Type: development-index
|
|
4
|
+
Owner: project coordinator
|
|
5
|
+
Last Verified: unknown
|
|
6
|
+
Confidence: low
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This folder is the development input pack. It tells agents how to work in this repository, how to face external services during development, and what not to assume when the external repositories are unavailable.
|
|
11
|
+
|
|
12
|
+
## Boundary
|
|
13
|
+
|
|
14
|
+
- Put local setup, codebase map, external service development summaries, mocks, stubs, and cross-repo debugging here.
|
|
15
|
+
- Put long-lived system structure in `docs/03-ARCHITECTURE/`.
|
|
16
|
+
- Put concrete API/event/webhook contracts in `docs/06-INTEGRATIONS/`.
|
|
17
|
+
|
|
18
|
+
## Structure Contract
|
|
19
|
+
|
|
20
|
+
| File / Path | Facts to maintain | Write rule |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| `local-setup.md` | Local startup, dependencies, environment variables, common failures | Development startup facts only; not production architecture |
|
|
23
|
+
| `codebase-map.md` | Local code entry points, directory responsibilities, read order | Agents read this before editing code |
|
|
24
|
+
| `external-context/<service-key>.md` | External service impact on local development, mocks/stubs, debug entry points | One external service per file |
|
|
25
|
+
| `external-source-packs/` | Large external source sets, indexes, digests, and projection status | Intake layer only; not the final fact layer |
|
|
26
|
+
| `stubs-and-mocks.md` | Available mock/stub strategies in this repository | Include executable paths or commands |
|
|
27
|
+
| `cross-repo-debugging.md` | Cross-repo debugging sequence and evidence | Debug workflow only; not a service responsibility overview |
|
|
28
|
+
|
|
29
|
+
## External Service Rule
|
|
30
|
+
|
|
31
|
+
If this repository depends on multiple microservices, do not write all external knowledge into one large document. For any external service that affects local development or testing, create:
|
|
32
|
+
|
|
33
|
+
- `docs/03-ARCHITECTURE/services/<service-key>.md`: what the service is and what it owns.
|
|
34
|
+
- `docs/04-DEVELOPMENT/external-context/<service-key>.md`: how this repository mocks, stubs, or debugs it.
|
|
35
|
+
- `docs/06-INTEGRATIONS/<contract>.md`: concrete API/event/webhook contracts.
|
|
36
|
+
|
|
37
|
+
`04-DEVELOPMENT` only answers how to work with the external service during development. Do not maintain full system topology here, and do not put payload schemas here.
|
|
38
|
+
|
|
39
|
+
## External Source Pack Rule
|
|
40
|
+
|
|
41
|
+
If an external team provides many documents, screenshots, exported packets, meeting notes, or links, do not place them directly into `03/04/06`. Read `docs/11-REFERENCE/external-source-intake-standard.md` first, then decide whether `external-source-packs/<source-key>/` is needed.
|
|
42
|
+
|
|
43
|
+
`external-source-packs/` owns source indexes, digests, and projection status only. Stable conclusions must be written back to:
|
|
44
|
+
|
|
45
|
+
- `docs/03-ARCHITECTURE/services/<service-key>.md`
|
|
46
|
+
- `docs/04-DEVELOPMENT/external-context/<service-key>.md`
|
|
47
|
+
- `docs/06-INTEGRATIONS/<contract>.md`
|
|
48
|
+
|
|
49
|
+
## External Context Index
|
|
50
|
+
|
|
51
|
+
| Service Key | Why It Matters To This Repo | Local Stub / Mock | Debug Entry | Architecture Link | Contract Link | Last Verified | Confidence |
|
|
52
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Codebase Map
|
|
2
|
+
|
|
3
|
+
Context Doc Type: codebase-map
|
|
4
|
+
Owner: project coordinator
|
|
5
|
+
Last Verified: unknown
|
|
6
|
+
Confidence: low
|
|
7
|
+
|
|
8
|
+
## Entry Points
|
|
9
|
+
|
|
10
|
+
| Area | Path | Responsibility | Read When | Source Evidence | Last Verified | Confidence |
|
|
11
|
+
| --- | --- | --- | --- | --- | --- | --- |
|