easy-coding-harness 0.10.0-beta.6 → 0.10.0-beta.8
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 +34 -0
- package/README.md +14 -4
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/claude/agents/ec-implementer.md +10 -0
- package/templates/claude/agents/ec-reviewer.md +6 -1
- package/templates/codex/agents/ec-implementer.toml +10 -0
- package/templates/codex/agents/ec-reviewer.toml +6 -1
- package/templates/common/bundled-skills/ec-init/SKILL.md +8 -1
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +10 -4
- package/templates/common/skills/ec-analysis/SKILL.md +47 -13
- package/templates/common/skills/ec-config/SKILL.md +6 -0
- package/templates/common/skills/ec-implementing/SKILL.md +27 -2
- package/templates/common/skills/ec-memory/SKILL.md +7 -0
- package/templates/common/skills/ec-reviewing/SKILL.md +11 -1
- package/templates/common/skills/ec-verification/SKILL.md +45 -9
- package/templates/common/skills/ec-workflow/SKILL.md +22 -2
- package/templates/main-constraint/AGENTS.md.tpl +13 -4
- package/templates/main-constraint/CLAUDE.md.tpl +13 -4
- package/templates/qoder/agents/ec-implementer.md +10 -0
- package/templates/qoder/agents/ec-reviewer.md +6 -1
- package/templates/shared-hooks/easy_coding_state.py +1187 -48
package/package.json
CHANGED
|
@@ -16,7 +16,17 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
16
16
|
file. All context you need is already in the task card.
|
|
17
17
|
- Make no workflow stage-transition decisions. You do not know the state machine exists.
|
|
18
18
|
- Follow the coding rules and architecture context embedded in the card.
|
|
19
|
+
- Follow the task card's `Local Baseline`: match nearby naming, control flow, null/error handling,
|
|
20
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
21
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
19
22
|
- Treat the task card's `Code Comments` author value and field/member/constant rules as mandatory.
|
|
23
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
24
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
25
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
26
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
27
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
28
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
29
|
+
where intent or constraints are not obvious.
|
|
20
30
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
21
31
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
22
32
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -15,7 +15,12 @@ dimension named in your task card. Your reply IS the return value.
|
|
|
15
15
|
- correctness → does the implementation match the dev-spec requirement? edge cases,
|
|
16
16
|
null/empty handling, races, off-by-one.
|
|
17
17
|
- compliance → does the code obey the RULES sections in the card? naming, format, comment
|
|
18
|
-
language, error handling.
|
|
18
|
+
language, error handling, and the evidenced Local Baseline.
|
|
19
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
20
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
21
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
22
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
23
|
+
method/field in an existing core Java class.
|
|
19
24
|
- `error` means a demonstrated acceptance, contract, security, or build failure. Use `warning`
|
|
20
25
|
for a credible risk and `info` for non-blocking maintainability advice.
|
|
21
26
|
|
|
@@ -15,7 +15,17 @@ Hard constraints:
|
|
|
15
15
|
the card.
|
|
16
16
|
- Make no workflow stage-transition decisions; you do not know the state machine exists.
|
|
17
17
|
- Follow the coding rules and architecture context embedded in the card.
|
|
18
|
+
- Follow the task card's "Local Baseline": match nearby naming, control flow, null/error handling,
|
|
19
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
20
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
18
21
|
- Treat the task card's "Code Comments" author value and field/member/constant rules as mandatory.
|
|
22
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
23
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
24
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
25
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
26
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
27
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
28
|
+
where intent or constraints are not obvious.
|
|
19
29
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
20
30
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
21
31
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -14,7 +14,12 @@ Stance:
|
|
|
14
14
|
- correctness -> does the implementation match the dev-spec requirement? edge cases,
|
|
15
15
|
null/empty handling, races, off-by-one.
|
|
16
16
|
- compliance -> does the code obey the RULES sections in the card? naming, format, comment
|
|
17
|
-
language, error handling.
|
|
17
|
+
language, error handling, and the evidenced Local Baseline.
|
|
18
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
19
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
20
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
21
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
22
|
+
method/field in an existing core Java class.
|
|
18
23
|
- error means a demonstrated acceptance, contract, security, or build failure. Use warning
|
|
19
24
|
for a credible risk and info for non-blocking maintainability advice.
|
|
20
25
|
|
|
@@ -147,7 +147,14 @@ agent must be able to see what was generated and on what evidence.
|
|
|
147
147
|
- Naming conventions actually in use (scan representative files)
|
|
148
148
|
- Comment language: if more than 70% of existing comments are Chinese, the rule is
|
|
149
149
|
"comments in Chinese"; same logic for English; mixed → follow each file's dominant language
|
|
150
|
-
-
|
|
150
|
+
- Null/empty handling and error-handling style, including where the project intentionally
|
|
151
|
+
relies on upstream contracts instead of adding defensive checks
|
|
152
|
+
- Existing class/method extraction granularity and architecture boundaries; do not turn a
|
|
153
|
+
preference for single responsibility into a generic demand for many one-use helpers
|
|
154
|
+
- Literal and constant conventions, including when local magic values are accepted and when
|
|
155
|
+
a stable domain/config/protocol value is promoted to a named constant
|
|
156
|
+
- Javadoc/doc-comment coverage for core code and the inline-comment style used for complex logic
|
|
157
|
+
- Import ordering and formatter/linter in use (read their configs)
|
|
151
158
|
Structure as one section per language plus a General section. Every rule must be
|
|
152
159
|
mechanically checkable — "be clean" is not a rule; "exported functions carry explicit
|
|
153
160
|
return types" is.
|
|
@@ -49,11 +49,15 @@ automatic edges. A validated read-only `doc` / `analysis` / `report` task also a
|
|
|
49
49
|
from IMPLEMENT after its full deliverable is shown, without REVIEW, VERIFICATION, MEMORY, or
|
|
50
50
|
task memory. Approval mode controls non-mechanical edge waiting: approve confirms each edge,
|
|
51
51
|
guard confirms two critical gates, confirm waits only at ANALYSIS -> IMPLEMENT, and auto
|
|
52
|
-
advances every legal edge after mechanical gates.
|
|
52
|
+
advances every legal edge after mechanical gates. After green VERIFICATION, Harness freezes an
|
|
53
|
+
acceptance checkpoint. A later code diff temporarily pauses every mode so the exact digest can be
|
|
54
|
+
accepted; unchanged `confirm`/`auto` tasks remain automatic.
|
|
53
55
|
Workflow mode is independently configured as adaptive/fast/standard/strict; ANALYSIS freezes
|
|
54
56
|
adaptive to a concrete mode, and every new code task still enters REVIEW. REVIEW evidence is
|
|
55
57
|
bound to the final implementation fingerprint, VERIFICATION evidence is bound to implementation
|
|
56
|
-
and config fingerprints, and
|
|
58
|
+
and config fingerprints, and an accepted post-checkpoint diff records its authorization plus
|
|
59
|
+
carry-forward/targeted/waived policy without forcing a second REVIEW. MEMORY keeps the conditional
|
|
60
|
+
long-memory threshold gate.
|
|
57
61
|
|
|
58
62
|
Java TDD is a third independent, default-off control managed by `ec-config`. Session overrides
|
|
59
63
|
project configuration; ANALYSIS freezes enabled state and the 1..100 changed-line threshold
|
|
@@ -78,7 +82,7 @@ stage in `task.json`; no data is lost. Each task folder is self-contained.
|
|
|
78
82
|
Each task is a folder. `task.json` is metadata, including the current stage, workflow proposal,
|
|
79
83
|
frozen concrete mode, and any `pending_transition`; `dev-spec.md` is the human-readable plan;
|
|
80
84
|
`execution.jsonl` is an append-only plan-and-log (one `plan` record, then `dispatch`/`result`
|
|
81
|
-
/`review`/`verify`/`handoff` records). Because plan and log live on disk, not in an agent's
|
|
85
|
+
/`review`/`verify`/`acceptance`/`handoff` records). Because plan and log live on disk, not in an agent's
|
|
82
86
|
context window, a task survives session end and agent switches with zero information loss.
|
|
83
87
|
|
|
84
88
|
## Canonical Spec integration
|
|
@@ -98,7 +102,9 @@ and integration dependencies block end-to-end completion until evidence is recor
|
|
|
98
102
|
keeps detailed evidence locally and projects cross-application Task/Step/dependency outcomes into
|
|
99
103
|
`EDS:EXECUTION` through one CAS/idempotent writer. Static changes use revision + READY +
|
|
100
104
|
`sync-spec-design`; agents never hand-edit the machine ledger. Explicit external locators are
|
|
101
|
-
allowed and rebind only by exact Canonical identity.
|
|
105
|
+
allowed and rebind only by exact Canonical identity. Source tasks stay `implemented` after local
|
|
106
|
+
checks and become `verified` only when VERIFICATION -> MEMORY is applied under explicit or
|
|
107
|
+
standing approval-mode authorization; the shared event includes the acceptance digest.
|
|
102
108
|
|
|
103
109
|
## Memory system
|
|
104
110
|
|
|
@@ -21,6 +21,13 @@ Communicate with the user in the user's language.
|
|
|
21
21
|
4. Inspect concrete code paths and tests. Expand context only when evidence reveals another
|
|
22
22
|
dependency or risk.
|
|
23
23
|
|
|
24
|
+
Apply a progressive cost budget while doing this work. A likely Fast task reads only the nearest
|
|
25
|
+
comparable implementation, its direct contracts, and targeted tests. Standard reads the affected
|
|
26
|
+
module closure. Expand into cross-module or repository-wide context only after concrete evidence
|
|
27
|
+
shows the compound high-risk and complexity signals required for Strict. Do not scan unrelated
|
|
28
|
+
repositories, the full Spec, broad Git history, or every architecture section merely to prove
|
|
29
|
+
that a bounded task might be complicated.
|
|
30
|
+
|
|
24
31
|
For a task with `task.json.spec_source`, re-run `inspect-dev-spec` against the stored source, exact
|
|
25
32
|
`selected_spec_tasks`, and only their stored `task.repo_paths` bindings. Schema, Spec ID, design
|
|
26
33
|
revision, and `design_sha256` must still match. A changed `document_sha256` with the same design is
|
|
@@ -56,6 +63,19 @@ Use shared execution dependency status directly. Do not inspect another local Ha
|
|
|
56
63
|
history to re-prove a completed hard dependency, and do not repeat dependency or baseline
|
|
57
64
|
explanations after the selected inspection has recorded them.
|
|
58
65
|
|
|
66
|
+
## Local implementation baseline
|
|
67
|
+
|
|
68
|
+
For every code unit, inspect the nearest same-module, same-role implementation before planning.
|
|
69
|
+
Record a concise `local_baseline` covering only evidenced conventions that affect this change:
|
|
70
|
+
naming and control flow, null/empty and error handling, layering and dependency direction, object
|
|
71
|
+
modeling, method extraction granularity, literal/constant usage, and comments/Javadoc. Prefer the
|
|
72
|
+
closest comparable code over a repository-wide average. Explicit requirements, correctness,
|
|
73
|
+
security, and project hard rules still take precedence; otherwise do not replace safe local
|
|
74
|
+
conventions with generic best practices.
|
|
75
|
+
|
|
76
|
+
Do not ask the user to choose a style already answered consistently by comparable code. Ask only
|
|
77
|
+
when local evidence conflicts or a deviation can change the contract, risk, or acceptance result.
|
|
78
|
+
|
|
59
79
|
## Analysis artifacts
|
|
60
80
|
|
|
61
81
|
Copy `.easy-coding/templates/dev-spec-skeleton.md` first, then replace every `[[EC_TODO:...]]`.
|
|
@@ -101,6 +121,7 @@ Execution plan records use:
|
|
|
101
121
|
"test_points": ["targeted check"],
|
|
102
122
|
"contracts": ["input/output/invariant or none"],
|
|
103
123
|
"risks": ["known risk or none"],
|
|
124
|
+
"local_baseline": ["evidenced local convention and source path"],
|
|
104
125
|
"repo_id": "R1",
|
|
105
126
|
"source_task_id": "R1-T1",
|
|
106
127
|
"source_step_ids": ["S1"],
|
|
@@ -132,8 +153,10 @@ For every selected source test, `test-strategy.md` must spell out its Test ID, s
|
|
|
132
153
|
owning Unit ID, repository-relative test file, and exact Canonical command; the state gate checks
|
|
133
154
|
these markers mechanically.
|
|
134
155
|
|
|
135
|
-
Prefer one coherent unit over artificial file-level splitting.
|
|
136
|
-
|
|
156
|
+
Prefer one coherent unit over artificial file-level splitting. Do not split a class or method by
|
|
157
|
+
line count, or create many one-use helpers, merely to make the plan look modular. Extract only a
|
|
158
|
+
clear semantic boundary, reuse point, or independently testable responsibility. Use parallel only
|
|
159
|
+
for truly independent write scopes. Better unit contracts reduce later REVIEW rework.
|
|
137
160
|
|
|
138
161
|
Code tasks require `test-strategy.md`; explicit `doc`, `analysis`, and `report` tasks do not.
|
|
139
162
|
|
|
@@ -196,19 +219,30 @@ Use its `minimum_mode` and `reasons` as the proposal floor. You may raise this r
|
|
|
196
219
|
uncertainty or user preference requires more rigor, but never lower or replace it with a
|
|
197
220
|
self-reported floor. The state API rechecks the floor when the proposal is saved and frozen.
|
|
198
221
|
|
|
199
|
-
The calculation
|
|
200
|
-
|
|
201
|
-
- `fast`: one
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
- `
|
|
206
|
-
|
|
207
|
-
|
|
222
|
+
The calculation is intentionally Standard-centered:
|
|
223
|
+
|
|
224
|
+
- `fast`: one coherent, non-parallel unit in one actually modified repository, at most five
|
|
225
|
+
changed files, no explicit high-risk signal, and no public or cross-repository contract impact.
|
|
226
|
+
Small parameter changes, bounded field/mapping edits, and a few ordinary model files should
|
|
227
|
+
normally remain Fast.
|
|
228
|
+
- `standard`: the default for ordinary business work. Multiple units/files, bounded compatibility
|
|
229
|
+
work, actual but contained multi-repository changes, broad low-risk work, and bounded high-risk
|
|
230
|
+
work remain Standard.
|
|
231
|
+
- `strict`: requires both an explicit high-risk signal and concrete complexity/blast-radius
|
|
232
|
+
evidence. Complexity means actual multi-repository edits, at least four units, at least ten
|
|
233
|
+
changed files, or a public/cross-repository contract. Parallel execution is a Standard signal
|
|
234
|
+
by itself. Generic domain words in a risk description, title, file path, Spec repository
|
|
235
|
+
catalog, or unselected task are never sufficient evidence of high risk.
|
|
236
|
+
|
|
237
|
+
Repository count comes only from repositories that own files in current plan units. Canonical
|
|
238
|
+
Spec metadata, unselected tasks, dependency summaries, unused `repo_paths`, and supermodule child
|
|
239
|
+
registrations do not raise the mode. A real multi-repository change is a Standard signal by
|
|
240
|
+
itself and reaches Strict only when an explicit high-risk signal is also present.
|
|
208
241
|
|
|
209
242
|
If configuration is concrete, it is also a floor. The selected mode may be raised by the user
|
|
210
|
-
but never placed below either floor.
|
|
211
|
-
|
|
243
|
+
but never placed below either floor. The Agent must not raise an adaptive proposal to Strict from
|
|
244
|
+
vague uncertainty or a domain keyword; cite both the explicit risk and the concrete complexity
|
|
245
|
+
signal. Explain the decision and state-specific effects in the dev-spec.
|
|
212
246
|
|
|
213
247
|
Persist the proposal before requesting ANALYSIS -> IMPLEMENT:
|
|
214
248
|
|
|
@@ -33,6 +33,12 @@ Explain precedence as `session override > project config > defaults`. Defaults a
|
|
|
33
33
|
task freezes its effective TDD values when ANALYSIS advances to IMPLEMENT; later project/session
|
|
34
34
|
changes affect future tasks and ANALYSIS only.
|
|
35
35
|
|
|
36
|
+
Approval semantics stay independent from verification depth: `approve` waits at each
|
|
37
|
+
non-mechanical edge, `guard` waits at ANALYSIS -> IMPLEMENT and VERIFICATION -> MEMORY, `confirm`
|
|
38
|
+
waits only for the plan, and `auto` advances legal green edges immediately. Every mode temporarily
|
|
39
|
+
pauses only when code changes after the frozen VERIFICATION checkpoint, because the user must see
|
|
40
|
+
and accept that exact new diff; this exception does not convert `auto` into `guard`.
|
|
41
|
+
|
|
36
42
|
## Project configuration
|
|
37
43
|
|
|
38
44
|
Use `easy-coding config` for project settings. The CLI confirms one atomic update of Approval,
|
|
@@ -47,6 +47,24 @@ Communicate with the user in the user's language.
|
|
|
47
47
|
Describe the semantic meaning and, when relevant, units, format, allowed values, nullability,
|
|
48
48
|
default behavior, or compatibility constraints. A type-level comment does not replace comments
|
|
49
49
|
on its fields or members; do not add low-value comments to ordinary local variables.
|
|
50
|
+
10. Treat the task card's `Local Baseline` as the default implementation shape. Match the nearest
|
|
51
|
+
comparable code's naming, control flow, null/empty and error handling, layering, object model,
|
|
52
|
+
and extraction granularity unless correctness, security, an explicit requirement, or a hard
|
|
53
|
+
project rule requires a deviation. Do not add defensive null checks solely because they are a
|
|
54
|
+
generic best practice when the evidenced local contract intentionally omits them.
|
|
55
|
+
11. Implement the smallest coherent design. Do not add speculative abstractions, wrappers,
|
|
56
|
+
factories, layers, or extension points, and do not fragment one readable flow into many
|
|
57
|
+
single-use micro-methods. Extract code only for a clear semantic boundary, real reuse,
|
|
58
|
+
independent testability, or a material reduction in complexity.
|
|
59
|
+
12. Literals and magic values are allowed when they are obvious, local, and consistent with the
|
|
60
|
+
surrounding code. Introduce a constant for repeated use, stable domain/config/protocol
|
|
61
|
+
semantics, or an established project convention—not merely to hold the single return value of
|
|
62
|
+
a getter.
|
|
63
|
+
13. In a newly added core Java class, every method and field requires meaningful Javadoc. In an
|
|
64
|
+
existing core Java class, every added or materially modified method and field requires it.
|
|
65
|
+
Add focused inline comments to core or complex logic to explain intent, constraints, or
|
|
66
|
+
non-obvious tradeoffs. Do not mass-retrofit untouched legacy code, and for non-Java code
|
|
67
|
+
follow the language's doc-comment form plus the evidenced project convention.
|
|
50
68
|
|
|
51
69
|
## Choose the execution owner
|
|
52
70
|
|
|
@@ -92,6 +110,7 @@ Sub-agents never dispatch other sub-agents or read `.easy-coding` workflow asset
|
|
|
92
110
|
## Test Points {unit.test_points and exact targeted commands}
|
|
93
111
|
## Contracts {inputs, outputs, invariants shared with other units}
|
|
94
112
|
## Risks {known edge cases and compatibility risks}
|
|
113
|
+
## Local Baseline {nearest comparable code conventions and evidence paths}
|
|
95
114
|
## Code Comments {resolved host Agent author value; model-field, enum-member, and constant rules}
|
|
96
115
|
## Coding Rules {pre-digested RULES sections}
|
|
97
116
|
## Architecture {pre-digested ABSTRACT sections}
|
|
@@ -110,11 +129,13 @@ deliverable|null, checks:[{command,passed,failures:[]}], issues:[], needs_attent
|
|
|
110
129
|
hard/contract dependencies are ready; do not batch-start dependent tasks at the initial
|
|
111
130
|
IMPLEMENT boundary.
|
|
112
131
|
Populate `Code Comments` on every code task card with the resolved user-facing host Agent
|
|
113
|
-
author value
|
|
132
|
+
author value, the field/member/constant rules, and the core Java Javadoc rule above. Populate
|
|
133
|
+
`Local Baseline` from the Unit's analyzed evidence; sub-agents do not read this Skill.
|
|
114
134
|
2. Execute according to dependency order and selected owner.
|
|
115
135
|
3. Run targeted unit tests and self-audit scope, contracts, TODOs, and introduced warnings.
|
|
116
136
|
Also audit new author attributions and every new model field, enum member, and constant against
|
|
117
|
-
the comment requirements above
|
|
137
|
+
the comment requirements above, then check local-style deviations, unnecessary abstractions,
|
|
138
|
+
one-use constant extraction, and affected core Java Javadoc before recording success.
|
|
118
139
|
4. Append one `result` record. Only a successful unit uses `status:"completed"`; include
|
|
119
140
|
unresolved issues rather than hiding them, and do not advance while `issues` or
|
|
120
141
|
`needs_attention` is non-empty.
|
|
@@ -150,6 +171,10 @@ conversation overhead while keeping work observable.
|
|
|
150
171
|
- [ ] Every unit has a dispatch/result pair and satisfied its acceptance criteria.
|
|
151
172
|
- [ ] Targeted tests ran or a concrete blocker is recorded.
|
|
152
173
|
- [ ] Cross-unit contracts still match.
|
|
174
|
+
- [ ] The implementation follows the evidenced Local Baseline or records a required deviation.
|
|
175
|
+
- [ ] No speculative layer, fragmented micro-method set, or single-use getter constant was added.
|
|
153
176
|
- [ ] New author attributions use the user-facing host `<Current Agent Name> with Easy Coding`.
|
|
154
177
|
- [ ] Every new model field, enum member, and constant has a meaningful field-level comment.
|
|
178
|
+
- [ ] Every method/field in a new core Java class, and every added or materially modified one in
|
|
179
|
+
an existing core Java class, has Javadoc.
|
|
155
180
|
- [ ] Code tasks enter REVIEW, regardless of workflow mode.
|
|
@@ -35,6 +35,13 @@ Name it `{memory_id}_{YYYYMMDD}_{smart_name}.md` and set
|
|
|
35
35
|
`.easy-coding/memory/short/`, then register it with
|
|
36
36
|
`memory-short-complete`. Never invent test results or commit hashes.
|
|
37
37
|
|
|
38
|
+
Copy the final `acceptance` record from `execution.jsonl` into the checkpoint as a concise
|
|
39
|
+
decision fact: authorization source, decision summary, `diff_sha256`, review policy, verification
|
|
40
|
+
policy, changed files, and any Canonical source tasks that required targeted verification.
|
|
41
|
+
`memory-short-complete` rejects a checkpoint that omits any of those decision fields. This records
|
|
42
|
+
the user's accepted exception without re-reviewing or re-analyzing the code. Canonical writeback
|
|
43
|
+
already carries the same digest and authorization as shared `acceptance` evidence.
|
|
44
|
+
|
|
38
45
|
When frozen TDD is enabled, add its threshold, lifecycle evidence, passed local unit-test result,
|
|
39
46
|
and local changed-line result to the short memory's execution evidence. Remote CI status is not
|
|
40
47
|
part of Harness acceptance or task memory. When TDD is off, omit TDD fields entirely so ordinary
|
|
@@ -12,7 +12,17 @@ Every new code task enters REVIEW. Read-only tasks do not. Obtain the current fi
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Review the final diff against `dev-spec.md`, RULES, unit acceptance criteria, tests, contracts,
|
|
15
|
-
and obvious security risks. Every finding cites `file:line`.
|
|
15
|
+
the Unit's Local Baseline, and obvious security risks. Every finding cites `file:line`.
|
|
16
|
+
|
|
17
|
+
Review local fit before recommending generic cleanup. Flag an implementation when it departs from
|
|
18
|
+
the nearest comparable naming, control flow, null/error handling, layering, modeling, or method
|
|
19
|
+
granularity without a correctness, security, requirement, or hard-rule reason. Also flag
|
|
20
|
+
speculative layers, fragmented one-use micro-methods, constants created only for one getter
|
|
21
|
+
return, and missing Javadoc in core Java code: check every method/field in a new core class and
|
|
22
|
+
each added or materially modified one in an existing core class. Do not demand defensive null
|
|
23
|
+
checks, abstraction, constant extraction, or legacy-wide comment retrofits merely because they
|
|
24
|
+
are generic best practices. A violation of an explicit task-card coding/comment contract is a
|
|
25
|
+
contract defect, not optional stylistic advice.
|
|
16
26
|
|
|
17
27
|
For Canonical-backed tasks, group evidence by `repo_id` and `source_task_id`. Every selected
|
|
18
28
|
Spec task needs an implementation result and source test evidence; file references remain
|
|
@@ -15,7 +15,8 @@ Read-only tasks never enter this stage. Obtain fresh fingerprints before running
|
|
|
15
15
|
|
|
16
16
|
- No completion claim without executed verification evidence.
|
|
17
17
|
- Evidence is reusable only while both returned fingerprints remain unchanged.
|
|
18
|
-
- Relevant code or config changes invalidate old evidence automatically
|
|
18
|
+
- Relevant code or config changes invalidate old evidence automatically unless the exact
|
|
19
|
+
post-verification code diff is explicitly accepted under the checkpoint protocol below.
|
|
19
20
|
- Failed or missing evidence never becomes acceptance because of approval mode.
|
|
20
21
|
|
|
21
22
|
## Verification depth
|
|
@@ -109,6 +110,38 @@ enable TDD; report the explicit `ec-config`/`easy-coding config` next step.
|
|
|
109
110
|
user wait.
|
|
110
111
|
- A reported in-scope problem returns to IMPLEMENT; out-of-scope work becomes a separate task.
|
|
111
112
|
|
|
113
|
+
After the final green evidence is recorded, freeze the acceptance baseline before presenting the
|
|
114
|
+
result or applying the boundary:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py verification-checkpoint \
|
|
118
|
+
--agent <agent-id> --session-file <P>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Then request or auto-apply VERIFICATION -> MEMORY according to `approval_mode`. `auto` remains
|
|
122
|
+
automatic when the checkpoint is unchanged. If any in-scope code changed after the checkpoint,
|
|
123
|
+
the state API returns `action:"acceptance-drift"`, keeps the task in VERIFICATION, and includes
|
|
124
|
+
the exact unified patches or binary/mode-change descriptions plus a stable `diff_sha256`. This
|
|
125
|
+
exceptional drift pauses every approval mode, including `auto`; it does not permanently change
|
|
126
|
+
the configured mode.
|
|
127
|
+
|
|
128
|
+
Show the complete returned diff and ask whether to accept that exact digest. Do not re-enter
|
|
129
|
+
IMPLEMENT or rerun REVIEW merely because this drift exists. On acceptance, call
|
|
130
|
+
`confirm-transition --stage MEMORY --diff-sha256 <digest>` with exactly one policy:
|
|
131
|
+
|
|
132
|
+
- `carry-forward`: only when every changed hunk is confidently non-executable and existing
|
|
133
|
+
verification remains applicable;
|
|
134
|
+
- `targeted`: executable behavior changed; append passed current-fingerprint targeted verification
|
|
135
|
+
before confirming. Canonical tasks must cover every affected source task reported by the
|
|
136
|
+
acceptance record, without rerunning checks for unaffected source tasks;
|
|
137
|
+
- `waived`: the user explicitly accepts the stated unverified risk.
|
|
138
|
+
|
|
139
|
+
Include `--decision-summary` with the user's decision. A changed digest invalidates the pending
|
|
140
|
+
confirmation and must be shown again. Behavior config, execution plan, workflow, Canonical
|
|
141
|
+
design, or nested-repository metadata drift cannot use this shortcut; return to ANALYSIS or
|
|
142
|
+
IMPLEMENT as reported by the state API. The acceptance record bridges only the accepted
|
|
143
|
+
implementation fingerprints, so prior REVIEW evidence remains valid without a second REVIEW.
|
|
144
|
+
|
|
112
145
|
For Canonical-backed tasks, run each repository's commands from `task.repo_paths[repo_id]` and
|
|
113
146
|
cover every selected task's source test IDs. Report pending integration edges separately from
|
|
114
147
|
local green checks. They do not block local implementation evidence, but the state API blocks
|
|
@@ -119,12 +152,15 @@ tasks remain separate evidence records. In `strict`, every involved repository i
|
|
|
119
152
|
records all four check types; a repository-specific non-applicable record still needs its reason
|
|
120
153
|
and source ownership.
|
|
121
154
|
|
|
122
|
-
After
|
|
123
|
-
`writeback-spec-task --status verified
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
`
|
|
155
|
+
After implementation and local checks, each selected Canonical source task remains
|
|
156
|
+
`implemented`. Do not call `writeback-spec-task --status verified` from VERIFICATION. Applying
|
|
157
|
+
VERIFICATION -> MEMORY is the authoritative acceptance boundary: the state API writes each
|
|
158
|
+
still-implemented source task to `verified` through CAS/idempotent recoverable events with its
|
|
159
|
+
accepted test evidence and acceptance digest, then enters MEMORY only after every write is
|
|
160
|
+
confirmed. For `approve`/`guard`, that authority is the explicit boundary
|
|
161
|
+
confirmation; for `confirm`/`auto`, it is the standing approval-mode authorization when no new
|
|
162
|
+
drift exists. If writeback is interrupted, run `reconcile-spec-execution` before retrying the
|
|
163
|
+
transition. Remote CI remains outside this acceptance gate.
|
|
128
164
|
|
|
129
165
|
Record the exact integration edge only after its evidence exists:
|
|
130
166
|
|
|
@@ -137,5 +173,5 @@ Record the exact integration edge only after its evidence exists:
|
|
|
137
173
|
--agent <agent>
|
|
138
174
|
```
|
|
139
175
|
|
|
140
|
-
The state API rejects VERIFICATION -> MEMORY unless all evidence
|
|
141
|
-
|
|
176
|
+
The state API rejects VERIFICATION -> MEMORY unless all effective evidence is green and the
|
|
177
|
+
checkpoint is either unchanged or bound to an exact accepted diff.
|
|
@@ -28,7 +28,9 @@ lite semantics or an already-persisted edge, permits one IMPLEMENT -> VERIFICATI
|
|
|
28
28
|
|
|
29
29
|
- `approval_mode = approve|guard|confirm|auto` controls whether a legal transition waits for a
|
|
30
30
|
user. `confirm` waits only at ANALYSIS -> IMPLEMENT; after that, green REVIEW, VERIFICATION,
|
|
31
|
-
MEMORY, and COMPLETE transitions advance automatically.
|
|
31
|
+
MEMORY, and COMPLETE transitions advance automatically. `auto` advances every legal green
|
|
32
|
+
edge. The only additional pause is an exceptional code diff detected after the frozen
|
|
33
|
+
VERIFICATION acceptance checkpoint; accepting that exact diff does not change the mode.
|
|
32
34
|
- `workflow_mode = adaptive|fast|standard|strict` controls execution cost and assurance depth.
|
|
33
35
|
- `tdd_enabled` independently activates Java TDD and changed-line coverage. It defaults off;
|
|
34
36
|
`tdd_coverage_threshold` defaults to 90 and accepts integers from 1 to 100.
|
|
@@ -140,7 +142,8 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
140
142
|
- `ANALYSIS`: dispatch `ec-analysis`; it produces artifacts and a workflow proposal.
|
|
141
143
|
- `IMPLEMENT`: dispatch `ec-implementing` using the frozen concrete mode.
|
|
142
144
|
- `REVIEW`: dispatch `ec-reviewing`; the transition requires current fingerprint evidence.
|
|
143
|
-
- `VERIFICATION`: dispatch `ec-verification`;
|
|
145
|
+
- `VERIFICATION`: dispatch `ec-verification`; the MEMORY boundary requires green evidence and an
|
|
146
|
+
unchanged or explicitly accepted verification checkpoint.
|
|
144
147
|
- `MEMORY`: dispatch `ec-memory`.
|
|
145
148
|
- `COMPLETE` / `CLOSED`: report terminal status and clear stale session ownership.
|
|
146
149
|
|
|
@@ -166,6 +169,23 @@ Use `auto-transition` only when the state API says the edge is automatic. Mechan
|
|
|
166
169
|
(analysis artifacts and proposal, review fingerprint, verification fingerprint, memory
|
|
167
170
|
completion) apply in every approval mode.
|
|
168
171
|
|
|
172
|
+
`[easy-coding:acceptance-drift-confirmation-required]` is a narrow exception to automatic-edge
|
|
173
|
+
handling. Call `inspect-transition-drift`, present every returned patch/binary/mode change and the
|
|
174
|
+
current `diff_sha256`, then use the platform's native choice UI for these branches:
|
|
175
|
+
|
|
176
|
+
1. Accept this exact diff and continue to MEMORY (recommended only with the stated verification
|
|
177
|
+
policy).
|
|
178
|
+
2. Return to IMPLEMENT because the change needs normal repair/review.
|
|
179
|
+
3. Hand off to another Agent.
|
|
180
|
+
4. Other / revise.
|
|
181
|
+
|
|
182
|
+
Never call `auto-transition` repeatedly to hide this pause. If the user accepts, preserve the
|
|
183
|
+
existing REVIEW conclusion and call `confirm-transition` with the exact digest,
|
|
184
|
+
`--verification-policy carry-forward|targeted|waived`, and a decision summary. `targeted` needs a
|
|
185
|
+
passed current-fingerprint targeted check first. If the digest changes, inspect and present the
|
|
186
|
+
new diff. Config, plan, workflow, Canonical-design, or nested-repository drift is not an
|
|
187
|
+
acceptance-diff choice and returns to the stage required by the state API.
|
|
188
|
+
|
|
169
189
|
For a migrated pre-0.9 Lite task, the breadcrumb
|
|
170
190
|
`[easy-coding:lite-review-bypass-required:IMPLEMENT->REVIEW]` means the stored REVIEW edge is
|
|
171
191
|
stale. Call `cancel-transition`, then immediately call `auto-transition --stage VERIFICATION`.
|
|
@@ -45,8 +45,10 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
45
45
|
is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
|
|
46
46
|
workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
|
|
47
47
|
Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
|
|
48
|
-
automatically
|
|
49
|
-
|
|
48
|
+
automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
|
|
49
|
+
checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
|
|
50
|
+
to its digest, and continue without rereview when the user accepts.
|
|
51
|
+
Every new code task runs REVIEW; no mode changes scope, delivery form, or evidence gates.
|
|
50
52
|
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
51
53
|
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
52
54
|
freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
|
|
@@ -87,18 +89,24 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
87
89
|
- REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
|
|
88
90
|
implementation; verification evidence must match final implementation and config. The frozen
|
|
89
91
|
workflow mode selects targeted, impacted, or full commands without weakening the green gate.
|
|
92
|
+
Freeze a verification checkpoint after green checks. Unchanged checkpoints follow approval
|
|
93
|
+
mode normally; post-checkpoint code drift requires exact digest acceptance and
|
|
94
|
+
carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
|
|
90
95
|
- Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
|
|
91
96
|
`document_sha256` and `execution_revision` may advance through shared writer commands. Project-
|
|
92
97
|
external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
|
|
93
98
|
Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
|
|
94
99
|
design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
|
|
100
|
+
Selected source tasks remain `implemented` through local VERIFICATION and become `verified`
|
|
101
|
+
only when the accepted VERIFICATION -> MEMORY boundary is actually applied.
|
|
95
102
|
- Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
|
|
96
103
|
inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
|
|
97
104
|
overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
|
|
98
105
|
ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
|
|
99
106
|
projection, while shared execution is the dependency fact source.
|
|
100
107
|
- MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
|
|
101
|
-
effective confirmation mode;
|
|
108
|
+
effective confirmation mode; its checkpoint records any accepted post-verification diff digest
|
|
109
|
+
and decision. Once memory processing completes, COMPLETE is automatic.
|
|
102
110
|
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
103
111
|
- All cross-platform modules (skills, hooks, references) must use universal agent protocols.
|
|
104
112
|
Do not rely on any specific agent's proprietary conventions unless the module is explicitly
|
|
@@ -109,7 +117,8 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
109
117
|
|
|
110
118
|
- Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
|
|
111
119
|
do not hand-edit session files, `current_task`, task `status`, `stage_history`,
|
|
112
|
-
`pending_transition`, workflow/TDD proposal or freeze fields,
|
|
120
|
+
`pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
|
|
121
|
+
`memory_progress`, or `last_agent`.
|
|
113
122
|
- The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
|
|
114
123
|
`--session-file <P>` when changing the current task or stage.
|
|
115
124
|
- Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and
|
|
@@ -43,8 +43,10 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
43
43
|
is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
|
|
44
44
|
workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
|
|
45
45
|
Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
|
|
46
|
-
automatically
|
|
47
|
-
|
|
46
|
+
automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
|
|
47
|
+
checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
|
|
48
|
+
to its digest, and continue without rereview when the user accepts.
|
|
49
|
+
Every new code task runs REVIEW; no mode changes scope, delivery form, or evidence gates.
|
|
48
50
|
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
49
51
|
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
50
52
|
freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
|
|
@@ -85,18 +87,24 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
85
87
|
- REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
|
|
86
88
|
implementation; verification evidence must match final implementation and config. The frozen
|
|
87
89
|
workflow mode selects targeted, impacted, or full commands without weakening the green gate.
|
|
90
|
+
Freeze a verification checkpoint after green checks. Unchanged checkpoints follow approval
|
|
91
|
+
mode normally; post-checkpoint code drift requires exact digest acceptance and
|
|
92
|
+
carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
|
|
88
93
|
- Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
|
|
89
94
|
`document_sha256` and `execution_revision` may advance through shared writer commands. Project-
|
|
90
95
|
external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
|
|
91
96
|
Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
|
|
92
97
|
design changes require revision + READY + `sync-spec-design`. Never hand-edit `EDS:EXECUTION`.
|
|
98
|
+
Selected source tasks remain `implemented` through local VERIFICATION and become `verified`
|
|
99
|
+
only when the accepted VERIFICATION -> MEMORY boundary is actually applied.
|
|
93
100
|
- Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
|
|
94
101
|
inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
|
|
95
102
|
overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
|
|
96
103
|
ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
|
|
97
104
|
projection, while shared execution is the dependency fact source.
|
|
98
105
|
- MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
|
|
99
|
-
effective confirmation mode;
|
|
106
|
+
effective confirmation mode; its checkpoint records any accepted post-verification diff digest
|
|
107
|
+
and decision. Once memory processing completes, COMPLETE is automatic.
|
|
100
108
|
- NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
|
|
101
109
|
- All cross-platform modules (skills, hooks, references) must use universal agent protocols.
|
|
102
110
|
Do not rely on any specific agent's proprietary conventions unless the module is explicitly
|
|
@@ -107,7 +115,8 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
107
115
|
|
|
108
116
|
- Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
|
|
109
117
|
do not hand-edit session files, `current_task`, task `status`, `stage_history`,
|
|
110
|
-
`pending_transition`, workflow/TDD proposal or freeze fields,
|
|
118
|
+
`pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
|
|
119
|
+
`memory_progress`, or `last_agent`.
|
|
111
120
|
- The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
|
|
112
121
|
`--session-file <P>` when changing the current task or stage.
|
|
113
122
|
- Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and
|
|
@@ -18,7 +18,17 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
|
|
|
18
18
|
context is in the card.
|
|
19
19
|
- Make no workflow stage-transition decisions; you do not know the state machine exists.
|
|
20
20
|
- Follow the coding rules and architecture context embedded in the card.
|
|
21
|
+
- Follow the task card's `Local Baseline`: match nearby naming, control flow, null/error handling,
|
|
22
|
+
layering, object modeling, method granularity, literal usage, and comment style unless a stated
|
|
23
|
+
correctness, security, requirement, or hard-rule reason requires a deviation.
|
|
21
24
|
- Treat the task card's `Code Comments` author value and field/member/constant rules as mandatory.
|
|
25
|
+
- Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
|
|
26
|
+
micro-methods, or a constant that exists only to hold one getter return.
|
|
27
|
+
- Local, obvious magic values are allowed when they match surrounding code; create constants for
|
|
28
|
+
reuse, stable domain/config/protocol semantics, or established project convention.
|
|
29
|
+
- Every method and field in a new core Java class, and every added or materially modified method
|
|
30
|
+
or field in an existing core Java class, must have meaningful Javadoc; comment complex logic
|
|
31
|
+
where intent or constraints are not obvious.
|
|
22
32
|
- Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
|
|
23
33
|
- Run the exact targeted checks requested by the card and report their real outcome.
|
|
24
34
|
- Preserve each existing file's original encoding; never silently convert.
|
|
@@ -17,7 +17,12 @@ dimension named in your task card. Your reply IS the return value.
|
|
|
17
17
|
- correctness → does the implementation match the dev-spec requirement? edge cases,
|
|
18
18
|
null/empty handling, races, off-by-one.
|
|
19
19
|
- compliance → does the code obey the RULES sections in the card? naming, format, comment
|
|
20
|
-
language, error handling.
|
|
20
|
+
language, error handling, and the evidenced Local Baseline.
|
|
21
|
+
- Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
|
|
22
|
+
cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
|
|
23
|
+
layers, fragmented one-use micro-methods, constants created only for a getter return, and
|
|
24
|
+
missing Javadoc on any method/field in a new core Java class or any added/materially modified
|
|
25
|
+
method/field in an existing core Java class.
|
|
21
26
|
- `error` means a demonstrated acceptance, contract, security, or build failure. Use `warning`
|
|
22
27
|
for a credible risk and `info` for non-blocking maintainability advice.
|
|
23
28
|
|