@donghyeonlee/jjamppong-harness 0.1.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/AGENTS.md +77 -0
- package/CONTEXT.md +51 -0
- package/README.md +85 -0
- package/bin/jjamppong.js +123 -0
- package/handoff.md +13 -0
- package/harness/contracts/capability-catalog.yaml +128 -0
- package/harness/contracts/gate-contract-matrix.yaml +188 -0
- package/harness/contracts/installer-contract.yaml +79 -0
- package/harness/contracts/ledger-event.schema.yaml +79 -0
- package/harness/contracts/path-policy.schema.yaml +51 -0
- package/harness/contracts/permission-decision.schema.yaml +95 -0
- package/harness/contracts/task.schema.yaml +88 -0
- package/harness/docs/adr/.gitkeep +1 -0
- package/harness/docs/adr/2026-06-02-jjamppong-planning-gate.md +33 -0
- package/harness/docs/agents/domain.md +14 -0
- package/harness/docs/agents/issue-tracker.md +9 -0
- package/harness/docs/agents/matt-pocock-skills.md +60 -0
- package/harness/docs/agents/triage-labels.md +11 -0
- package/harness/docs/solutions/.gitkeep +1 -0
- package/harness/docs/tasks/active/.gitkeep +1 -0
- package/harness/docs/tasks/archive/.gitkeep +1 -0
- package/harness/docs/tasks/archive/index.md +5 -0
- package/harness/docs/tasks/index.md +13 -0
- package/harness/doctor/doctor.js +114 -0
- package/harness/installer/install.js +235 -0
- package/harness/lifecycle/lifecycle.js +133 -0
- package/harness/permission/permission-decision.js +377 -0
- package/harness/release/CHECKSUMS.sha256 +84 -0
- package/harness/release/RELEASE-NOTES.md +33 -0
- package/harness/release/SOURCE-MANIFEST.md +31 -0
- package/harness/rules/module-types.md +98 -0
- package/harness/rules/rules.md +220 -0
- package/harness/rules/workflow.md +252 -0
- package/harness/state/compound.md +7 -0
- package/harness/state/intake.md +11 -0
- package/harness/state/module-structure.md +13 -0
- package/harness/state/planning.md +21 -0
- package/harness/templates/module/module-state.md +13 -0
- package/harness/templates/task/archive-summary.md +19 -0
- package/harness/templates/task/events.jsonl.template +1 -0
- package/harness/templates/task/gate-ledger.md +21 -0
- package/harness/templates/task/implementation-approval.md +11 -0
- package/harness/templates/task/planning/00-current-planning-context.md +3 -0
- package/harness/templates/task/planning/01-grill-summary.md +3 -0
- package/harness/templates/task/planning/02-research-summary.md +3 -0
- package/harness/templates/task/planning/02b-compound-lookup.md +3 -0
- package/harness/templates/task/planning/02c-architecture-orientation.md +3 -0
- package/harness/templates/task/planning/03-prd.md +3 -0
- package/harness/templates/task/planning/04-issues.md +3 -0
- package/harness/templates/task/planning/05-module-structure.md +3 -0
- package/harness/templates/task/planning/06-writing-plan.md +3 -0
- package/harness/templates/task/planning/07-plan-review.md +3 -0
- package/harness/templates/task/planning-pack.md +23 -0
- package/harness/templates/task/task.yaml +10 -0
- package/harness/templates/task/verification.md +12 -0
- package/harness/verify/verify.js +271 -0
- package/module-template/MODULE.md +25 -0
- package/module-template/README.md +9 -0
- package/modules/.gitkeep +0 -0
- package/package.json +40 -0
- package/proposals/README.md +16 -0
- package/scripts/install-jjamppong-harness.ps1 +62 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Harness Rules
|
|
2
|
+
|
|
3
|
+
This file is a projection of FINAL-PLAN and the machine-readable contracts.
|
|
4
|
+
|
|
5
|
+
The permission source of truth is:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
1. FINAL-PLAN.md in the build pack, while rebuilding this template
|
|
9
|
+
2. harness/contracts/*.yaml
|
|
10
|
+
3. active task events.jsonl
|
|
11
|
+
4. PermissionDecision output
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`AGENTS.md`, this file, `workflow.md`, `gate-ledger.md`, and `task.yaml` may restrict behavior further, but they must not grant permission beyond the contracts and canonical events.
|
|
15
|
+
|
|
16
|
+
## Hard Defaults
|
|
17
|
+
|
|
18
|
+
- Missing capability: deny.
|
|
19
|
+
- Ambiguous scope: deny.
|
|
20
|
+
- Short approval expansion: deny.
|
|
21
|
+
- Secrets: deny.
|
|
22
|
+
- Live target access: deny until explicit capability approval.
|
|
23
|
+
- Package install: deny until explicit capability approval.
|
|
24
|
+
- Git commit/push: deny until separate git approvals.
|
|
25
|
+
- Harness-core writes in product tasks: deny; create proposal instead.
|
|
26
|
+
- Parallel active write: deny until explicit parallel approval.
|
|
27
|
+
|
|
28
|
+
## Artifact Language Policy
|
|
29
|
+
|
|
30
|
+
Human-facing artifacts use the user's language.
|
|
31
|
+
|
|
32
|
+
Static templates may use Korean starter copy. This phase does not add lifecycle-level localization. Agents write live human-facing artifacts in the current user's language when presenting or updating them.
|
|
33
|
+
|
|
34
|
+
Machine-readable artifacts keep stable schema keys.
|
|
35
|
+
|
|
36
|
+
`events.jsonl`, `task.yaml`, contracts, and PermissionDecision outputs keep stable machine-readable keys.
|
|
37
|
+
|
|
38
|
+
events.jsonl, task.yaml, contracts, and PermissionDecision outputs keep stable machine-readable keys.
|
|
39
|
+
|
|
40
|
+
`gate-ledger.md`, planning artifacts, `archive-summary.md`, `verification.md`, and `handoff.md` are human-facing.
|
|
41
|
+
|
|
42
|
+
gate-ledger.md, planning artifacts, archive-summary.md, verification.md, and handoff.md are human-facing.
|
|
43
|
+
|
|
44
|
+
## Required Reads For Substantive Work
|
|
45
|
+
|
|
46
|
+
Read these before any substantive write:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
harness/contracts/gate-contract-matrix.yaml
|
|
50
|
+
harness/contracts/capability-catalog.yaml
|
|
51
|
+
harness/contracts/task.schema.yaml
|
|
52
|
+
harness/contracts/permission-decision.schema.yaml
|
|
53
|
+
harness/rules/workflow.md
|
|
54
|
+
harness/state/planning.md
|
|
55
|
+
active task events.jsonl, if one exists
|
|
56
|
+
active task task.yaml, if one exists
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If required files are missing or contradictory, stop and run verify/doctor.
|
|
60
|
+
|
|
61
|
+
## Red Lines
|
|
62
|
+
|
|
63
|
+
Stop immediately if a step would require:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
README-first rewrite
|
|
67
|
+
AGENTS-first rewrite
|
|
68
|
+
old v1-v13 source-history as active instruction over FINAL-PLAN
|
|
69
|
+
project file read before grill in product planning
|
|
70
|
+
install-to-planning continuation
|
|
71
|
+
docs-first route
|
|
72
|
+
plan_review completed as implementation approval
|
|
73
|
+
module_structure creating folders
|
|
74
|
+
folder_skeleton creating code/tests/fixtures/runtime config
|
|
75
|
+
"์ข์" as broad approval
|
|
76
|
+
product code outside modules without exact outside_modules_write approval
|
|
77
|
+
harness-core edit in product task
|
|
78
|
+
live target access without network.live_target approval
|
|
79
|
+
secret read
|
|
80
|
+
package install without package.install approval
|
|
81
|
+
git commit/push without separate approval
|
|
82
|
+
doctor/update live-editing core rules by default
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## PermissionDecision Preflight
|
|
86
|
+
|
|
87
|
+
Before risky actions, run or reason through PermissionDecision.
|
|
88
|
+
|
|
89
|
+
Risky actions include file read/write/delete/move/symlink, command exec, tests/builds, network, package operations, git operations, installer/update/repair, harness-core changes, and parallel writes.
|
|
90
|
+
|
|
91
|
+
The decision must name:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
requested action
|
|
95
|
+
capability
|
|
96
|
+
allow/deny/block/proposal_required
|
|
97
|
+
reason
|
|
98
|
+
matched event ids
|
|
99
|
+
paths or targets covered
|
|
100
|
+
required next action
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
If the decision is not `allow`, do not perform the action.
|
|
104
|
+
|
|
105
|
+
## Event Log And Projections
|
|
106
|
+
|
|
107
|
+
Canonical task state lives in:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
harness/docs/tasks/active/<slug>/events.jsonl
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Derived projections:
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
gate-ledger.md = human-readable projection
|
|
117
|
+
task.yaml = compact cache
|
|
118
|
+
planning-pack.md = final decision manifest
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
If `task.yaml` or `gate-ledger.md` says something is approved but `events.jsonl` does not contain the approval, verification fails and the gate stays locked.
|
|
122
|
+
|
|
123
|
+
Doctor may regenerate projections from canonical events, but it must not invent approvals.
|
|
124
|
+
|
|
125
|
+
## Gate Question Format
|
|
126
|
+
|
|
127
|
+
Every gate question must state:
|
|
128
|
+
|
|
129
|
+
- Gate id
|
|
130
|
+
- Approval scope
|
|
131
|
+
- Artifact or decision being approved
|
|
132
|
+
- Capabilities being allowed
|
|
133
|
+
- Paths or targets being covered
|
|
134
|
+
- This unlocks
|
|
135
|
+
- This remains locked
|
|
136
|
+
- Deferred unknowns requiring separate approval
|
|
137
|
+
|
|
138
|
+
If the question omits these fields, a short affirmative answer must not open the gate.
|
|
139
|
+
|
|
140
|
+
Ask in the user's language. If the user writes Korean, ask in Korean and briefly explain technical labels in plain language.
|
|
141
|
+
|
|
142
|
+
## Workflow Boundaries
|
|
143
|
+
|
|
144
|
+
`install` stops after install and verify.
|
|
145
|
+
|
|
146
|
+
`grill` comes before project reads.
|
|
147
|
+
|
|
148
|
+
`research` comes after grill and may use general web research, not live target access.
|
|
149
|
+
|
|
150
|
+
`evidence_check` is a legacy alias for `research` only. Prefer `research` or Korean `์๋ฃ์กฐ์ฌ` in user-facing gates.
|
|
151
|
+
|
|
152
|
+
`prd` comes after grill/research.
|
|
153
|
+
|
|
154
|
+
`issues` comes after approved PRD.
|
|
155
|
+
|
|
156
|
+
`module_structure` does not create folders.
|
|
157
|
+
|
|
158
|
+
Plain rule: module_structure does not create folders.
|
|
159
|
+
|
|
160
|
+
`folder_skeleton` does not create executable files.
|
|
161
|
+
|
|
162
|
+
Plain rule: folder_skeleton does not create executable files.
|
|
163
|
+
|
|
164
|
+
`plan_review` does not unlock implementation.
|
|
165
|
+
|
|
166
|
+
Plain rule: plan_review does not unlock implementation.
|
|
167
|
+
|
|
168
|
+
`implementation` records exact-scope capability approval.
|
|
169
|
+
|
|
170
|
+
`work` uses only approved capabilities and paths.
|
|
171
|
+
|
|
172
|
+
`verification` does not create new feature scope.
|
|
173
|
+
|
|
174
|
+
`archive` requires archive-summary.
|
|
175
|
+
|
|
176
|
+
## Module Boundaries
|
|
177
|
+
|
|
178
|
+
Product code belongs under:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
modules/<module>/**
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Writes outside `modules/` require exact `file.write.outside_modules` approval with specific paths and reason.
|
|
185
|
+
|
|
186
|
+
`module_bootstrap` and `product_feature` are separate task types. Bootstrap creates the workspace only; feature work starts as a new task after bootstrap is verified and archived.
|
|
187
|
+
|
|
188
|
+
## Installer / Update / Doctor
|
|
189
|
+
|
|
190
|
+
Installer must create the harness directly under the target root and write `harness.lock.yaml`.
|
|
191
|
+
|
|
192
|
+
Installer must not create nested template folders, planning artifacts, product code, GitHub repos, commits, or pushes.
|
|
193
|
+
|
|
194
|
+
`verify` is read-only pass/fail.
|
|
195
|
+
|
|
196
|
+
`doctor` is read-only diagnosis by default.
|
|
197
|
+
|
|
198
|
+
`doctor --proposal`, `update`, and `repair` create proposals by default when managed files changed. They must not live-edit harness-core rules without explicit approval.
|
|
199
|
+
|
|
200
|
+
## Archive And Handoff
|
|
201
|
+
|
|
202
|
+
Archive is cold context. Read indexes and summaries before detailed archived artifacts.
|
|
203
|
+
|
|
204
|
+
Root `handoff.md` is updated only when the user asks for handoff or new-chat transfer.
|
|
205
|
+
|
|
206
|
+
## Handoff Response
|
|
207
|
+
|
|
208
|
+
Root `handoff.md` is updated only when the user asks for handoff or new-chat transfer.
|
|
209
|
+
|
|
210
|
+
When creating handoff.md, do not embed the restart prompt in the file by default.
|
|
211
|
+
|
|
212
|
+
After creating handoff.md, return a copy-paste next-chat prompt in the chat response.
|
|
213
|
+
|
|
214
|
+
Use this Korean prompt when the user is working in Korean:
|
|
215
|
+
|
|
216
|
+
```text
|
|
217
|
+
handoff.md ๋ณด๊ณ ์ด์ด์ ์งํํด์ค.
|
|
218
|
+
๋จผ์ AGENTS.md, harness/rules/workflow.md, ํ์ฌ active task์ task.yaml/events.jsonl์ ํ์ธํด์ค.
|
|
219
|
+
ํ์ฌ gate ์ํ๋ฅผ ํ์ธํ ๋ค, ๋ฐ๋ก ๊ตฌํํ์ง ๋ง๊ณ ํ์ํ ๋ค์ ๋จ๊ณ๋ถํฐ ์ด์ด์ ์งํํด์ค.
|
|
220
|
+
```
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Workflow
|
|
2
|
+
|
|
3
|
+
This file is a human-readable projection of:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
harness/contracts/gate-contract-matrix.yaml
|
|
7
|
+
harness/contracts/capability-catalog.yaml
|
|
8
|
+
harness/contracts/task.schema.yaml
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
If this file conflicts with the contracts, the contracts win.
|
|
12
|
+
|
|
13
|
+
## User-Facing Flow
|
|
14
|
+
|
|
15
|
+
Explain the workflow to users in simple Korean when they write in Korean.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
1. ์ค์น๋ง ํ๊ธฐ
|
|
19
|
+
2. ๋ง๋ค๊ณ ์ถ์ ๊ฒ ์ง๋ฌธํ๊ธฐ
|
|
20
|
+
3. ์๋ฃ์กฐ์ฌํ๊ธฐ
|
|
21
|
+
4. ๊ธฐํ/์ด์/๊ตฌ์กฐ/๊ณํ ์ธ์ฐ๊ธฐ
|
|
22
|
+
5. ์ง์ง ์์
๋ฒ์ ์น์ธ๋ฐ๊ธฐ
|
|
23
|
+
6. ์น์ธ๋ ๋ฒ์๋ง ์์
ํ๊ธฐ
|
|
24
|
+
7. ๊ฒ์ฆํ๊ณ ์ฌ์ฉ์ ํ์ธ๋ฐ๊ธฐ
|
|
25
|
+
8. ๋ฐฐ์ด ์ ์ ๋ฆฌํ๊ณ ๋ณด๊ดํ๊ธฐ
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Do not show every internal gate first. Show the simple label and the internal gate id when asking for approval.
|
|
29
|
+
|
|
30
|
+
## Artifact Language Policy
|
|
31
|
+
|
|
32
|
+
Human-facing artifacts use the user's language.
|
|
33
|
+
|
|
34
|
+
Human-facing artifacts include `gate-ledger.md`, planning artifacts, `archive-summary.md`, `verification.md`, and `handoff.md`.
|
|
35
|
+
|
|
36
|
+
gate-ledger.md, planning artifacts, archive-summary.md, verification.md, and handoff.md are human-facing.
|
|
37
|
+
|
|
38
|
+
Static templates may use Korean starter copy. This phase does not add lifecycle-level localization. When an agent presents or updates live human-facing artifacts, the agent writes them in the current user's language.
|
|
39
|
+
|
|
40
|
+
Agents write live human-facing artifacts in the current user's language.
|
|
41
|
+
|
|
42
|
+
Machine-readable artifacts keep stable schema keys.
|
|
43
|
+
|
|
44
|
+
Machine-readable artifacts include `events.jsonl`, `task.yaml`, contracts, and PermissionDecision outputs. events.jsonl, task.yaml, contracts, and PermissionDecision outputs keep stable machine-readable keys.
|
|
45
|
+
|
|
46
|
+
## Canonical Gate Order
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
install
|
|
50
|
+
-> intake
|
|
51
|
+
-> grill
|
|
52
|
+
-> research
|
|
53
|
+
-> compound_lookup
|
|
54
|
+
-> architecture_orientation
|
|
55
|
+
-> prd
|
|
56
|
+
-> issues
|
|
57
|
+
-> module_structure
|
|
58
|
+
-> compile_current_planning_context
|
|
59
|
+
-> writing_plan
|
|
60
|
+
-> plan_review
|
|
61
|
+
-> folder_skeleton, if needed
|
|
62
|
+
-> implementation
|
|
63
|
+
-> work
|
|
64
|
+
-> verification
|
|
65
|
+
-> acceptance
|
|
66
|
+
-> compound_capture
|
|
67
|
+
-> compound_review
|
|
68
|
+
-> proposal, if needed
|
|
69
|
+
-> archive
|
|
70
|
+
-> handoff, only if requested
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`research` is canonical. `evidence_check` is a legacy alias only.
|
|
74
|
+
|
|
75
|
+
## Install Gate
|
|
76
|
+
|
|
77
|
+
Install means install and verify, then stop.
|
|
78
|
+
|
|
79
|
+
Install must not start planning, create active product tasks, create modules, create code/tests/fixtures, access live targets, install packages beyond the installer itself, create GitHub repos, commit, or push.
|
|
80
|
+
|
|
81
|
+
The installed project root must contain:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
AGENTS.md
|
|
85
|
+
README.md
|
|
86
|
+
CONTEXT.md
|
|
87
|
+
handoff.md
|
|
88
|
+
harness/
|
|
89
|
+
modules/
|
|
90
|
+
module-template/
|
|
91
|
+
proposals/
|
|
92
|
+
harness.lock.yaml
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Nested `jjamppong-harness/` or `ourosuper-harness/` install results are invalid.
|
|
96
|
+
|
|
97
|
+
## Grill Before Read
|
|
98
|
+
|
|
99
|
+
Product/task planning starts with `grill`.
|
|
100
|
+
|
|
101
|
+
Before `grill`, do not scan existing project files, old docs, source history, candidate lists, or prior implementation folders as if they were user intent.
|
|
102
|
+
|
|
103
|
+
After `grill`, `research` may read approved project evidence and general web research. General web research does not authorize live target access.
|
|
104
|
+
|
|
105
|
+
## Planning Gates
|
|
106
|
+
|
|
107
|
+
PRD comes after `grill` and `research`.
|
|
108
|
+
|
|
109
|
+
`issues` comes after approved PRD.
|
|
110
|
+
|
|
111
|
+
`module_structure` comes after PRD/issues and organizes implementation. It does not create folders.
|
|
112
|
+
|
|
113
|
+
`writing_plan` reads `planning/00-current-planning-context.md` and the approved planning artifacts. It does not read every raw log by default.
|
|
114
|
+
|
|
115
|
+
`plan_review` reviews the plan.
|
|
116
|
+
|
|
117
|
+
Important:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
plan_review completed != implementation approved
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Plan review completion only opens the implementation approval question.
|
|
124
|
+
|
|
125
|
+
## Folder Skeleton
|
|
126
|
+
|
|
127
|
+
`folder_skeleton` is a separate gate.
|
|
128
|
+
|
|
129
|
+
It may create approved empty folders, `.gitkeep`, and approved non-executable placeholder docs.
|
|
130
|
+
|
|
131
|
+
It must not create source code, tests, fixtures, runtime config, dependency manifests, package files, crawlers, extractors, evaluators, live access code, or git operations.
|
|
132
|
+
|
|
133
|
+
## Implementation And Work
|
|
134
|
+
|
|
135
|
+
`implementation` records the exact-scope approval.
|
|
136
|
+
|
|
137
|
+
`work` performs only actions allowed by PermissionDecision.
|
|
138
|
+
|
|
139
|
+
Every risky action needs a capability:
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
file.read.project
|
|
143
|
+
file.read.archive
|
|
144
|
+
file.read.raw_artifact
|
|
145
|
+
file.read.secret
|
|
146
|
+
file.write.task_artifact
|
|
147
|
+
file.write.folder_skeleton
|
|
148
|
+
file.write.module
|
|
149
|
+
file.write.outside_modules
|
|
150
|
+
file.write.harness_core
|
|
151
|
+
file.delete
|
|
152
|
+
file.move
|
|
153
|
+
file.symlink
|
|
154
|
+
exec.readonly_info
|
|
155
|
+
exec.test
|
|
156
|
+
exec.build
|
|
157
|
+
exec.mutating
|
|
158
|
+
exec.destructive
|
|
159
|
+
exec.networked
|
|
160
|
+
network.web_research
|
|
161
|
+
network.live_target
|
|
162
|
+
network.package_registry
|
|
163
|
+
network.authenticated
|
|
164
|
+
package.install
|
|
165
|
+
package.update
|
|
166
|
+
git.commit
|
|
167
|
+
git.push
|
|
168
|
+
git.remote_change
|
|
169
|
+
installer.install
|
|
170
|
+
installer.update
|
|
171
|
+
installer.repair
|
|
172
|
+
installer.rollback
|
|
173
|
+
harness.core_change
|
|
174
|
+
project.policy_change
|
|
175
|
+
parallel.write
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Missing or ambiguous capability defaults to deny.
|
|
179
|
+
|
|
180
|
+
## Approval Rule
|
|
181
|
+
|
|
182
|
+
Approval is a relationship, not a word list.
|
|
183
|
+
|
|
184
|
+
A short affirmation such as "์ข์" approves only the exact scope in the immediately preceding explicit gate question.
|
|
185
|
+
|
|
186
|
+
It never adds code, tests, fixtures, live target access, package install, git commit, git push, outside module writes, or harness-core changes unless those were explicitly named as allowed in that question.
|
|
187
|
+
|
|
188
|
+
Approval evidence must be recorded in:
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
events.jsonl
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`gate-ledger.md` is only a human-readable projection.
|
|
195
|
+
|
|
196
|
+
`task.yaml` is only a derived cache.
|
|
197
|
+
|
|
198
|
+
If projections disagree with `events.jsonl`, verification fails and `events.jsonl` wins.
|
|
199
|
+
|
|
200
|
+
## Approval Invalidation
|
|
201
|
+
|
|
202
|
+
Downstream approvals are invalidated when scope changes:
|
|
203
|
+
|
|
204
|
+
```text
|
|
205
|
+
PRD goal/success criteria/excluded scope
|
|
206
|
+
issue set
|
|
207
|
+
module path or boundary
|
|
208
|
+
writing_plan target files
|
|
209
|
+
target path or glob
|
|
210
|
+
live/package/git/secret/outside_modules requirement
|
|
211
|
+
new user restriction
|
|
212
|
+
source artifact hash mismatch
|
|
213
|
+
harness core rule changes
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
When uncertain, fail closed and ask a narrower gate question.
|
|
217
|
+
|
|
218
|
+
## Task Types
|
|
219
|
+
|
|
220
|
+
Task type must be explicit in `task.yaml` and `events.jsonl`.
|
|
221
|
+
|
|
222
|
+
```text
|
|
223
|
+
install
|
|
224
|
+
module_bootstrap
|
|
225
|
+
product_feature
|
|
226
|
+
product_bugfix
|
|
227
|
+
template_maintenance
|
|
228
|
+
project_policy_change
|
|
229
|
+
harness_update
|
|
230
|
+
knowledge_maintenance
|
|
231
|
+
archive_maintenance
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
`module_bootstrap` creates a module/workspace only. It must not create product source code, tests, fixtures, executable config, dependency manifests, live access, package install, commit, or push.
|
|
235
|
+
|
|
236
|
+
After module bootstrap is verified and archived, actual feature work starts as a new product task with `grill` again.
|
|
237
|
+
|
|
238
|
+
## Verification, Acceptance, Archive
|
|
239
|
+
|
|
240
|
+
Verification records commands, expected/actual results, exit codes, and risk status.
|
|
241
|
+
|
|
242
|
+
Verification must not add new feature work. A failed verification that requires product changes re-enters an approved work path.
|
|
243
|
+
|
|
244
|
+
Archive requires `archive-summary.md`.
|
|
245
|
+
|
|
246
|
+
Archive is cold context. Future tasks read indexes and summaries before detailed archived artifacts.
|
|
247
|
+
|
|
248
|
+
`handoff.md` is updated only when the user asks for a new-chat handoff.
|
|
249
|
+
|
|
250
|
+
handoff.md is a status summary, not the restart prompt container.
|
|
251
|
+
|
|
252
|
+
The next-chat prompt is returned in the chat response.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Request Intake
|
|
2
|
+
|
|
3
|
+
No active request has been recorded for this project yet.
|
|
4
|
+
|
|
5
|
+
When a substantive user request starts, record:
|
|
6
|
+
|
|
7
|
+
- User Request
|
|
8
|
+
- Plain-Language Interpretation
|
|
9
|
+
- Workflow Decision
|
|
10
|
+
- Required Plugins Or Skills
|
|
11
|
+
- Current Blockers
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Module Structure
|
|
2
|
+
|
|
3
|
+
No project module structure has been approved.
|
|
4
|
+
|
|
5
|
+
Module types and folder standards must be approved through the Module Structure Gate in the Full Workflow before product modules are created.
|
|
6
|
+
|
|
7
|
+
When approved, record:
|
|
8
|
+
|
|
9
|
+
- Project Module Types
|
|
10
|
+
- Folder Set For Each Module Type
|
|
11
|
+
- Active Modules
|
|
12
|
+
- Deferred Modules
|
|
13
|
+
- Extra Folders And Reasons
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Planning State
|
|
2
|
+
|
|
3
|
+
No active task is in progress.
|
|
4
|
+
|
|
5
|
+
When a task starts, record:
|
|
6
|
+
|
|
7
|
+
- Active Task Slug
|
|
8
|
+
- Current Gate
|
|
9
|
+
- Canonical Event Log
|
|
10
|
+
- Gate Ledger Projection
|
|
11
|
+
- Task YAML Cache
|
|
12
|
+
- Current Allowed Capability Scope
|
|
13
|
+
- Next Locked Gate
|
|
14
|
+
|
|
15
|
+
Task-specific gate approvals belong in `harness/docs/tasks/active/<slug>/events.jsonl`.
|
|
16
|
+
|
|
17
|
+
`gate-ledger.md` is a human-readable projection.
|
|
18
|
+
|
|
19
|
+
`task.yaml` is a derived cache.
|
|
20
|
+
|
|
21
|
+
This state file points to the active task only. It is not the source of truth for gate approvals or permissions.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ๋ณด๊ด ์์ฝ
|
|
2
|
+
|
|
3
|
+
active task๋ฅผ archive๋ก ์ฎ๊ธฐ๊ธฐ ์ ์ ์์ฑํ๋ ์ฌ๋์ฉ ์์ฝ์
๋๋ค.
|
|
4
|
+
|
|
5
|
+
## ๊ฒฐ๊ณผ
|
|
6
|
+
|
|
7
|
+
- ์ํ:
|
|
8
|
+
- ์ฌ์ฉ์ ํ์ธ:
|
|
9
|
+
- ๋ฏธ๋ฃฌ ์ผ:
|
|
10
|
+
- ๋งํ ์ผ:
|
|
11
|
+
|
|
12
|
+
## ๋ค์ ์ธ ์ ์๋ ๋ฐฐ์
|
|
13
|
+
|
|
14
|
+
- ์์ง ์์
|
|
15
|
+
|
|
16
|
+
## ์๋ณธ ํด์
|
|
17
|
+
|
|
18
|
+
| ์ฐ์ถ๋ฌผ | ํด์ |
|
|
19
|
+
| --- | --- |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"event_type":"template_only","note":"Do not copy this line into a live task. A live events.jsonl starts empty and is append-only."}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ์น์ธ ๊ธฐ๋ก
|
|
2
|
+
|
|
3
|
+
์ด ํ์ผ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ ์น์ธ ๊ธฐ๋ก์
๋๋ค.
|
|
4
|
+
|
|
5
|
+
์๋ณธ ๊ธฐ๋ก:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
events.jsonl
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
์ด ํ์ผ๋ง ๋ณด๊ณ ๊ถํ์ ํ๋จํ์ง ๋ง์ธ์. ์ค์ ๊ถํ ํ๋จ์ `events.jsonl`, contracts, PermissionDecision์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
|
|
12
|
+
|
|
13
|
+
## ํ์ฌ ์ํ
|
|
14
|
+
|
|
15
|
+
- ํ์ฌ ๋จ๊ณ:
|
|
16
|
+
- ๋ง์ง๋ง์ผ๋ก ์น์ธ๋ ๊ฒ:
|
|
17
|
+
- ์์ง ์ ๊ธด ๊ฒ:
|
|
18
|
+
|
|
19
|
+
## ์น์ธ ๋ด์ญ
|
|
20
|
+
|
|
21
|
+
์์ง ๊ธฐ๋ก๋ ์น์ธ ๋ด์ญ์ด ์์ต๋๋ค.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# ๊ตฌํ ์น์ธ ์์ฝ
|
|
2
|
+
|
|
3
|
+
์ด ํ์ผ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ํ ์น์ธ ์์ฝ์
๋๋ค.
|
|
4
|
+
|
|
5
|
+
์ค์ ์น์ธ ๊ทผ๊ฑฐ๋ ๋ฐ๋์ `events.jsonl`์ ์์ด์ผ ํฉ๋๋ค.
|
|
6
|
+
|
|
7
|
+
## ์น์ธ ๋ฒ์
|
|
8
|
+
|
|
9
|
+
- ํ์ฉ๋ ์์
:
|
|
10
|
+
- ํ์ฉ๋ ๊ฒฝ๋ก:
|
|
11
|
+
- ์์ง ์ ๊ธด ์์
:
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Planning Pack
|
|
2
|
+
|
|
3
|
+
์ด ํ์ผ์ ์ต์ข
๊ฒฐ์ manifest์
๋๋ค. raw transcript๋ฅผ ๋์ ํ์ง ์์ต๋๋ค.
|
|
4
|
+
|
|
5
|
+
## ํ์ฌ ๊ฒฐ์
|
|
6
|
+
|
|
7
|
+
- ๋ชฉํ:
|
|
8
|
+
- ์ ์ธ ๋ฒ์:
|
|
9
|
+
- ์ฑ๊ณต ๊ธฐ์ค:
|
|
10
|
+
- ์น์ธ๋ ๋ค์ ๋จ๊ณ:
|
|
11
|
+
|
|
12
|
+
## ์ฝ์ด์ผ ํ ์ธ๋ถ ์ฐ์ถ๋ฌผ
|
|
13
|
+
|
|
14
|
+
- planning/00-current-planning-context.md
|
|
15
|
+
- planning/01-grill-summary.md
|
|
16
|
+
- planning/02-research-summary.md
|
|
17
|
+
- planning/02b-compound-lookup.md
|
|
18
|
+
- planning/02c-architecture-orientation.md
|
|
19
|
+
- planning/03-prd.md
|
|
20
|
+
- planning/04-issues.md
|
|
21
|
+
- planning/05-module-structure.md
|
|
22
|
+
- planning/06-writing-plan.md
|
|
23
|
+
- planning/07-plan-review.md
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
task_id: "{{task_id}}"
|
|
2
|
+
task_type: "{{task_type}}"
|
|
3
|
+
status: active
|
|
4
|
+
current_gate: intake
|
|
5
|
+
canonical_event_log: events.jsonl
|
|
6
|
+
human_projection: gate-ledger.md
|
|
7
|
+
cache_projection: task.yaml
|
|
8
|
+
planning_pack: planning-pack.md
|
|
9
|
+
created_at: "{{created_at}}"
|
|
10
|
+
updated_at: "{{updated_at}}"
|