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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.10.0-beta.6",
3
+ "version": "0.10.0-beta.8",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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
- - Error handling style, import ordering, formatter/linter in use (read their configs)
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 MEMORY keeps the conditional long-memory threshold gate.
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. Use parallel only for truly
136
- independent write scopes. Better unit contracts reduce later REVIEW rework.
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 classifies:
200
-
201
- - `fast`: one low-risk unit, local behavior, no public contract/schema/security/concurrency or
202
- migration impact, targeted test available.
203
- - `standard`: ordinary multi-file feature/fix, bounded contract impact, existing patterns and
204
- impacted tests available.
205
- - `strict`: state machine, configuration/schema migration, security/payment/data-loss risk,
206
- public or cross-repository contract, broad concurrency, platform generators, or uncertain
207
- blast radius.
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. Explain the decision and state-specific effects in the
211
- dev-spec.
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 and the field/member/constant rules above; sub-agents do not read this Skill.
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 before recording success.
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 all current-fingerprint local checks pass for a Canonical source task, call
123
- `writeback-spec-task --status verified`. Include passed `kind:"test"` evidence for every bound
124
- Canonical Test ID plus concise references to local review/build/coverage records. The subsequent
125
- VERIFICATION -> MEMORY application requires every selected shared task to be `verified` or
126
- `completed`; remote CI remains outside this acceptance gate. If writeback is interrupted, run
127
- `reconcile-spec-execution` before requesting the transition.
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 for the current implementation
141
- and config fingerprints is green.
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`; archive requires current green evidence.
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. Every new code task runs REVIEW; no mode changes scope, delivery form, or
49
- evidence gates.
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; once memory processing completes, COMPLETE is automatic.
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, `memory_progress`, or `last_agent`.
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. Every new code task runs REVIEW; no mode changes scope, delivery form, or
47
- evidence gates.
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; once memory processing completes, COMPLETE is automatic.
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, `memory_progress`, or `last_agent`.
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