easy-coding-harness 0.10.0-beta.7 → 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.7",
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",
@@ -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
 
@@ -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,
@@ -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
@@ -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