easy-coding-harness 0.10.0-beta.9 → 1.0.0-beta.1

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +67 -1
  2. package/README.md +34 -26
  3. package/dist/cli.js +272 -37
  4. package/dist/cli.js.map +1 -1
  5. package/package.json +1 -1
  6. package/templates/claude/agents/ec-implementer.md +7 -8
  7. package/templates/claude/agents/ec-reviewer.md +14 -2
  8. package/templates/claude/agents/ec-verifier.md +11 -2
  9. package/templates/codex/agents/ec-implementer.toml +7 -8
  10. package/templates/codex/agents/ec-reviewer.toml +14 -2
  11. package/templates/codex/agents/ec-verifier.toml +11 -2
  12. package/templates/common/bundled-skills/ec-init/SKILL.md +1 -1
  13. package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +15 -11
  14. package/templates/common/skills/ec-analysis/SKILL.md +24 -13
  15. package/templates/common/skills/ec-config/SKILL.md +2 -2
  16. package/templates/common/skills/ec-implementing/SKILL.md +35 -30
  17. package/templates/common/skills/ec-lite/SKILL.md +74 -0
  18. package/templates/common/skills/ec-no-harness/SKILL.md +3 -0
  19. package/templates/common/skills/ec-quality/SKILL.md +153 -0
  20. package/templates/common/skills/ec-task-management/SKILL.md +9 -5
  21. package/templates/common/skills/ec-tdd-init/SKILL.md +5 -4
  22. package/templates/common/skills/ec-workflow/SKILL.md +32 -30
  23. package/templates/main-constraint/AGENTS.md.tpl +31 -19
  24. package/templates/main-constraint/CLAUDE.md.tpl +31 -19
  25. package/templates/qoder/agents/ec-implementer.md +7 -8
  26. package/templates/qoder/agents/ec-reviewer.md +14 -2
  27. package/templates/qoder/agents/ec-verifier.md +11 -2
  28. package/templates/runtime/templates/dev-spec-skeleton.md +2 -2
  29. package/templates/shared-hooks/easy_coding_state.py +2793 -318
  30. package/templates/claude/agents/ec-fixer.md +0 -37
  31. package/templates/codex/agents/ec-fixer.toml +0 -26
  32. package/templates/common/skills/ec-reviewing/SKILL.md +0 -109
  33. package/templates/common/skills/ec-verification/SKILL.md +0 -177
  34. package/templates/qoder/agents/ec-fixer.md +0 -37
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: ec-quality
3
+ description: QUALITY-stage skill. Freezes one candidate, runs independent Review and Verification gates at the selected workflow depth, and aggregates one repair decision.
4
+ ---
5
+
6
+ # ec-quality — one candidate, two read-only gates
7
+
8
+ Use only while the current task is in `QUALITY`. Communicate in the user's language. QUALITY
9
+ does not modify source, tests, configuration, plans, or task scope.
10
+
11
+ ## Candidate freeze
12
+
13
+ Call `evidence-fingerprints` once and use the returned implementation/config fingerprints for
14
+ the whole attempt. It also returns the runtime-owned `quality_attempt` number, start time, evidence
15
+ boundary, and repair count. Every Review and Verification record in this attempt must carry that
16
+ same candidate fingerprint and `quality_attempt` number. If the candidate changes, return to
17
+ IMPLEMENT; the state API finalizes the old attempt as `cancelled` before the transition. Never mix
18
+ evidence from two candidates.
19
+
20
+ `execution.jsonl` is append-only. Do not write `type:"quality"` yourself. The state API appends
21
+ exactly one fingerprint-bound finalized record when QUALITY passes, leaves for repair/replan, or is
22
+ cancelled by candidate drift, rework, or task closure. Retries reuse that record instead of
23
+ duplicating it. An incomplete, duplicate, or out-of-sequence quality record blocks the transition.
24
+
25
+ Review Gate and Verification Gate are independent and may run in parallel. Review never executes
26
+ commands. Verification never edits files. If a hard blocker makes remaining work meaningless,
27
+ cancel the other checks explicitly and record the cancellation; do not start repair while a gate
28
+ is still running or unacknowledged.
29
+
30
+ ## Workflow depth
31
+
32
+ ### Fast
33
+
34
+ - Main Agent performs one focused self-review of the exact diff, contract, local style, Javadoc,
35
+ and minimum-change boundary.
36
+ - Run the smallest deterministic targeted verification that can prove the changed behavior.
37
+ - Do not dispatch an independent reviewer unless a concrete risk appears.
38
+
39
+ ### Standard
40
+
41
+ - Dispatch one independent reviewer.
42
+ - Run affected lint/typecheck/test plus every must-test command from `test-strategy.md`.
43
+ - Run Review and Verification in parallel when their inputs are already frozen.
44
+
45
+ ### Strict
46
+
47
+ - Dispatch at least two independent review dimensions, normally correctness and compliance.
48
+ - For each actually modified repository, run all applicable lint, typecheck, test, and build
49
+ checks. A repository merely mentioned by a Spec, dependency, supermodule, or path map is not in
50
+ scope.
51
+ - When frozen TDD is enabled, include the required TDD review dimension, local unit test, and
52
+ changed-production-line coverage. Record one coverage result with `coverage_scope:"local"`;
53
+ GitLab coverage is informative, not a task acceptance gate. Reuse current-fingerprint GREEN
54
+ evidence from IMPLEMENT instead of rerunning an identical command.
55
+
56
+ ## Review Gate
57
+
58
+ Review only the confirmed diff and its direct interactions. Check acceptance behavior, contract
59
+ compatibility, security/correctness, test design, nearest local style, required core Java
60
+ Javadoc, logical blank-line grouping, and minimum modification.
61
+
62
+ Do not demand defensive null checks, constant extraction, abstractions, method splitting,
63
+ comments, formatting, or cleanup solely as generic best practice. Do not report unrelated legacy
64
+ issues as task findings. The first review must report the complete in-scope finding set; after a
65
+ repair, review only the repair delta and directly affected interactions, without introducing new
66
+ unrelated style findings.
67
+
68
+ Each review record uses the existing `type:"review"` contract and includes the active
69
+ `quality_attempt`. `error` is blocking; `warning` is a credible risk; `info` is non-blocking. Fast
70
+ self-review still writes a record with reviewer set to the current canonical Agent identity. A
71
+ blocking record also carries a `failure_classes` array; do not defer classification to prose.
72
+
73
+ ## Verification Gate
74
+
75
+ Run only the commands selected by the mode and `test-strategy.md`. Record real exit status and
76
+ current implementation/config fingerprints plus the active `quality_attempt` using the existing
77
+ `type:"verify"` contract. Do not run a command inside Review Gate, and do not fix a failure inside
78
+ Verification Gate. A failed applicable check also carries its structured `failure_classes` array.
79
+
80
+ Classify an unavailable tool, dependency outage, or other environmental failure as
81
+ `environment`. Keep the task in QUALITY and retry that check when possible; environmental retry
82
+ does not invalidate a passed Review Gate.
83
+
84
+ ## One repair bundle
85
+
86
+ Wait for both gates, then aggregate all blocking results once. Classify each item as:
87
+
88
+ - `code-defect`
89
+ - `test-defect`
90
+ - `contract-ambiguity`
91
+ - `environment`
92
+ - `suggestion`
93
+
94
+ If code or tests need edits, create one concise Repair Bundle containing every in-scope blocking
95
+ item, affected files, required verification, and evidence that may be reused. After both Gates are
96
+ terminal, finalize the decision before transitioning once to IMPLEMENT:
97
+
98
+ ```bash
99
+ {{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py finalize-quality \
100
+ --outcome repair --review-gate failed --verification-gate cancelled \
101
+ --failure-class code-defect \
102
+ --summary "<aggregated repair decision>" \
103
+ --agent <agent-id> --session-file <P>
104
+ ```
105
+
106
+ Use one `--failure-class` per class. A failed Gate requires blocking evidence in the active attempt;
107
+ a Gate stopped after another hard blocker must be explicitly `cancelled`. Contract ambiguity has
108
+ routing priority: finalize `--outcome replan --failure-class contract-ambiguity`, preserve every
109
+ code/test class found in the same attempt, and return once to ANALYSIS. Environment failures are not
110
+ finalized as repair or replan: keep the attempt in QUALITY and retry the affected check. Suggestions
111
+ do not block.
112
+
113
+ For a Canonical-backed task, group the bundle by `source_task_id`. Append every failed local
114
+ review/verify record first, then write each affected source task `blocked` through
115
+ `writeback-spec-task`. For attempt `<A>`, candidate `<F>`, Harness task `<H>`, and source task `<S>`,
116
+ use the exact idempotency key `<H>:<S>:<F>:quality-<A>:blocked`. Add one failed evidence object for
117
+ each affected Gate kind with ref
118
+ `execution.jsonl#quality-attempt=<A>;implementation=<F>;source-task=<S>;kind=review|verify`.
119
+ Only after every blocked writeback is acknowledged may the task return to IMPLEMENT; the state API
120
+ rejects a writeback from another run, attempt, fingerprint, or evidence window. Entering IMPLEMENT
121
+ reopens only those blocked source tasks as a new `in_progress` attempt, while unaffected implemented
122
+ tasks keep their shared conclusion.
123
+
124
+ After repair, choose the minimum honest evidence refresh:
125
+
126
+ - comment/format-only: carry semantic review; rerun affected lint;
127
+ - test-only: review the test delta; rerun the affected test;
128
+ - localized business code: delta review plus impacted tests;
129
+ - contract/config/plan/shared behavior: rerun all applicable gates for the affected scope.
130
+
131
+ When uncertain, rerun rather than infer. On the next attempt, the state API emits an append-only
132
+ `quality-carry-forward` record only for Canonical repositories whose plan and repository content
133
+ fingerprints are unchanged and whose sources are not hard/contract downstream of a changed source;
134
+ it references the exact passed evidence indices from the consumed repair attempt. Never copy or
135
+ relabel old evidence yourself. Strict may consume that state-owned record for independent,
136
+ unaffected repositories, but must rerun every affected or dependency-invalidated repository gate.
137
+
138
+ ## Acceptance boundary
139
+
140
+ When both gates pass, call:
141
+
142
+ ```bash
143
+ {{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py quality-checkpoint \
144
+ --agent <agent-id> --session-file <P>
145
+ ```
146
+
147
+ Request or auto-apply `QUALITY -> MEMORY` according to Approval mode. If the checkpoint detects a
148
+ later user edit, call `inspect-transition-drift`, display the exact diff, and honor the user's
149
+ decision. An accepted diff may use carry-forward, targeted, or waived verification as recorded by
150
+ the state API; do not rerun Review after the user explicitly accepts the displayed change.
151
+
152
+ Canonical-backed tasks write selected tasks `verified` only when `QUALITY -> MEMORY` is actually
153
+ applied. Pending integration evidence blocks that transition before MEMORY begins.
@@ -14,7 +14,7 @@ Call the state API snapshot and show:
14
14
 
15
15
  - current task, stage, last Agent, and pending transition;
16
16
  - task `concrete_workflow_mode` and frozen TDD state when present;
17
- - harness enabled/disabled state;
17
+ - harness enabled/disabled and Lite Direct state;
18
18
  - active and resumable tasks.
19
19
  - for Canonical-backed tasks: source locator/path mode, Spec ID/design revision/design digest,
20
20
  document digest, execution revision, writeback status, selected task IDs, repository
@@ -29,10 +29,14 @@ Support listing, creating, selecting, claiming, handing off, and closing tasks t
29
29
  state API. Preserve pending transitions when inspecting tasks. Never infer user
30
30
  acceptance from opening this panel.
31
31
 
32
- When creating from a Canonical Spec, call `inspect-dev-spec`, display the complete task and
33
- dependency selection, then call `select-dev-spec-scope` and `create-task-from-spec` only after
34
- explicit user selection. Multiple selected Spec tasks still create one Harness task, while the
35
- selector returns one deterministic consumption closure per selected repository.
32
+ Create tasks only for explicit repository mutations. Pure analysis, explanation, reporting, and
33
+ read-only review stay Ready and are answered directly. If Lite Direct is enabled, route task
34
+ selection or creation to `ec-lite` so the user can exit it first.
35
+
36
+ When creating from a Canonical Spec, call `inspect-dev-spec --manifest-only`, display the complete
37
+ task and dependency selection, then call `create-task-from-spec` only after explicit user
38
+ selection. Multiple selected Spec tasks still create one Harness task. Do not call
39
+ `select-dev-spec-scope` during routing; ANALYSIS owns the single consumption-closure read.
36
40
  Initialize missing shared execution before creation. Support `rebind-spec-source` only when the
37
41
  new file matches schema + spec_id + design revision + design_sha256 and does not roll execution
38
42
  revision backward. A pending writeback is repaired with `reconcile-spec-execution`, never by
@@ -71,7 +71,7 @@ evidence only, and never wait for a pipeline URL, job identity, or remote succes
71
71
  ## Readiness receipt and verification
72
72
 
73
73
  At the end of IMPLEMENT, after the infrastructure files are stable, record their fingerprints.
74
- The receipt is part of the implementation and must exist before REVIEW so review/verification
74
+ The receipt is part of the implementation and must exist before QUALITY so Review/Verification
75
75
  fingerprints do not change after review. The recorder automatically includes the harness-managed
76
76
  `.easy-coding/tools/easy_coding_java_coverage.py` fingerprint:
77
77
 
@@ -84,7 +84,8 @@ python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . record \
84
84
  --agent <agent-id>
85
85
  ```
86
86
 
87
- REVIEW includes the receipt and its declared infrastructure boundary. VERIFICATION runs the
87
+ QUALITY Review Gate includes the receipt and its declared infrastructure boundary. Its
88
+ Verification Gate runs the
88
89
  frozen Workflow Mode's applicable build/test/CI syntax checks, then performs only the read-only
89
90
  readiness check:
90
91
 
@@ -92,9 +93,9 @@ readiness check:
92
93
  python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . check
93
94
  ```
94
95
 
95
- The `VERIFICATION -> MEMORY` gate requires the final check to return `ready`. If any recorded
96
+ The `QUALITY -> MEMORY` gate requires the final check to return `ready`. If any recorded
96
97
  build or CI file changes after the receipt was created, readiness becomes `needs_init`; return to
97
- IMPLEMENT, refresh the receipt, and repeat REVIEW before verifying again. Rerun this skill when
98
+ IMPLEMENT, refresh the receipt, and repeat QUALITY. Rerun this skill when
98
99
  the same drift occurs after task completion.
99
100
 
100
101
  After completion, tell the user that TDD remains off and provide the explicit project/session
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ec-workflow
3
- description: Main Easy Coding entrypoint. Creates or resumes a task, orchestrates the unchanged state machine, separates approval from execution depth, and dispatches the stage skill for the current state.
3
+ description: Main Easy Coding entrypoint. Creates or resumes a task, orchestrates the unified state machine, separates approval from execution depth, and dispatches the stage skill for the current state.
4
4
  ---
5
5
 
6
6
  # ec-workflow — state orchestration
@@ -11,26 +11,24 @@ user's language.
11
11
  ## State machine
12
12
 
13
13
  ```text
14
- INIT --auto--> ANALYSIS -> IMPLEMENT -> REVIEW -> VERIFICATION -> MEMORY --auto--> COMPLETE
15
- ^ ^ | |
14
+ INIT --auto--> ANALYSIS -> IMPLEMENT -> QUALITY -> MEMORY --auto--> COMPLETE
15
+ ^ ^ |
16
16
  +--replan---+ +---repair-----+
17
17
 
18
- read-only doc/analysis/report: IMPLEMENT -> COMPLETE
19
18
  any active stage --explicit user abort--> CLOSED
20
19
  ```
21
20
 
22
- New code tasks never skip REVIEW. `workflow_mode` changes execution depth inside stages, not
23
- the stage graph. Pre-0.9 in-flight tasks may carry `workflow_mode_legacy:true` for proposal or
24
- review-evidence compatibility. Only `workflow_mode_legacy_direct_edge:true`, created from old
25
- lite semantics or an already-persisted edge, permits one IMPLEMENT -> VERIFICATION transition.
21
+ Every repository-mutation task uses this graph. QUALITY owns two independent read-only gates:
22
+ Review Gate and Verification Gate. `workflow_mode` changes their evidence depth, not the graph.
23
+ Pure conversation, explanation, analysis, and read-only review stay Ready and create no task.
26
24
 
27
25
  ## Independent controls
28
26
 
29
27
  - `approval_mode = approve|guard|confirm|auto` controls whether a legal transition waits for a
30
- user. `confirm` waits only at ANALYSIS -> IMPLEMENT; after that, green REVIEW, VERIFICATION,
31
- MEMORY, and COMPLETE transitions advance automatically. `auto` advances every legal green
28
+ user. `confirm` waits only at ANALYSIS -> IMPLEMENT; after that, green QUALITY, MEMORY, and
29
+ COMPLETE transitions advance automatically. `auto` advances every legal green
32
30
  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.
31
+ QUALITY acceptance checkpoint; accepting that exact diff does not change the mode.
34
32
  - `workflow_mode = adaptive|fast|standard|strict` controls execution cost and assurance depth.
35
33
  - `tdd_enabled` independently activates Java TDD and changed-line coverage. It defaults off;
36
34
  `tdd_coverage_threshold` defaults to 90 and accepts integers from 1 to 100.
@@ -61,6 +59,9 @@ or `qoder`. Never use a display or source-author attribution such as `Codex with
61
59
  {{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py snapshot --agent <agent-id> --session-file <P>
62
60
  ```
63
61
 
62
+ When `[easy-coding:lite-direct]` is present, route only to `ec-lite`. Do not create, resume,
63
+ inspect, or transition a normal Harness task until Lite is explicitly exited.
64
+
64
65
  2. Check `.easy-coding/tasks/project-init/task.json` before routing work.
65
66
  - Missing: tell the user to run `easy-coding init` to install or repair the harness, then stop.
66
67
  - Present with `status != "COMPLETE"`: invoke `{{skill_trigger}}ec-init`, then stop.
@@ -126,14 +127,13 @@ or `qoder`. Never use a display or source-author attribution such as `Codex with
126
127
  If the user names or clearly matches another task, confirm the switch and call
127
128
  `claim-task --task-id <id> --agent <agent-id> --session-file <P>`. Do not execute task A
128
129
  under task B's request.
129
- - With no concrete task request, show resumable tasks or report readiness; never create an
130
- empty task from a bare workflow invocation.
130
+ - With no explicit repository-mutation request, stay Ready and answer normally. Ambiguous
131
+ intent remains Ready until conversation establishes a concrete mutation.
131
132
  - For concrete unrelated work while another task is current, confirm creating the new task
132
133
  and suspending the current pointer before changing ownership.
133
134
  - Create a new task only after routing is settled, using a safe unique ID and a type faithful
134
- to the requested deliverable. Feature, bugfix, refactor, performance, and workflow changes
135
- are code tasks. Use `doc`, `analysis`, or `report` only when the user explicitly requested
136
- a no-code deliverable; never downgrade a code request to the read-only completion path.
135
+ to the requested repository mutation. A document, config, or report file write is still a
136
+ mutation task. Never create `doc`, `analysis`, or `report` tasks for a chat-only result.
137
137
  6. Resume the matched/current task, then load only state-relevant assets. Do not read five full
138
138
  memories at every startup; ANALYSIS searches memory metadata and opens relevant entries on
139
139
  demand.
@@ -144,9 +144,8 @@ or `qoder`. Never use a display or source-author attribution such as `Codex with
144
144
  - `INIT`: call `auto-transition --stage ANALYSIS`.
145
145
  - `ANALYSIS`: dispatch `ec-analysis`; it produces artifacts and a workflow proposal.
146
146
  - `IMPLEMENT`: dispatch `ec-implementing` using the frozen concrete mode.
147
- - `REVIEW`: dispatch `ec-reviewing`; the transition requires current fingerprint evidence.
148
- - `VERIFICATION`: dispatch `ec-verification`; the MEMORY boundary requires green evidence and an
149
- unchanged or explicitly accepted verification checkpoint.
147
+ - `QUALITY`: dispatch `ec-quality`; it freezes one candidate, runs Review and Verification Gates,
148
+ aggregates one repair bundle, and requires an unchanged or explicitly accepted checkpoint.
150
149
  - `MEMORY`: dispatch `ec-memory`.
151
150
  - `COMPLETE` / `CLOSED`: report terminal status and clear stale session ownership.
152
151
 
@@ -168,9 +167,18 @@ choice set before invoking the platform's native choice UI:
168
167
  Preserve `pending_transition` on cancellation, timeout, or invalid UI output. A later ordinary
169
168
  reply may consume it. Use `confirm-transition` only for a matching stored edge.
170
169
 
170
+ Text emitted before a later tool call is a non-durable process presentation because the host may
171
+ group or collapse it. For ANALYSIS -> IMPLEMENT, preserve the compact proposal receipt produced by
172
+ `ec-analysis`. After a native choice returns or a matching transition call completes, the last
173
+ assistant response in that turn must repeat the receipt and full Dev-Spec link/path even if they
174
+ were already visible. When the edge remains pending, include the complete numbered fallback;
175
+ when confirmed, name the accepted branch and target stage. An empty, cancelled, timed-out, or
176
+ invalid native result is not grounds to omit this final receipt.
177
+
171
178
  Use `auto-transition` only when the state API says the edge is automatic. Mechanical gates
172
179
  (analysis artifacts and proposal, review fingerprint, verification fingerprint, memory
173
- completion) apply in every approval mode.
180
+ completion) apply in every approval mode. An automatic ANALYSIS -> IMPLEMENT edge must not pause;
181
+ carry its full Dev-Spec link/path into the next durable final response in the same turn.
174
182
 
175
183
  `[easy-coding:acceptance-drift-confirmation-required]` is a narrow exception to automatic-edge
176
184
  handling. Call `inspect-transition-drift`, present every returned patch/binary/mode change and the
@@ -178,23 +186,17 @@ current `diff_sha256`, then use the platform's native choice UI for these branch
178
186
 
179
187
  1. Accept this exact diff and continue to MEMORY (recommended only with the stated verification
180
188
  policy).
181
- 2. Return to IMPLEMENT because the change needs normal repair/review.
189
+ 2. Return to IMPLEMENT because the change needs normal repair/quality checks.
182
190
  3. Hand off to another Agent.
183
191
  4. Other / revise.
184
192
 
185
193
  Never call `auto-transition` repeatedly to hide this pause. If the user accepts, preserve the
186
- existing REVIEW conclusion and call `confirm-transition` with the exact digest,
194
+ existing Review Gate conclusion and call `confirm-transition` with the exact digest,
187
195
  `--verification-policy carry-forward|targeted|waived`, and a decision summary. `targeted` needs a
188
196
  passed current-fingerprint targeted check first. If the digest changes, inspect and present the
189
197
  new diff. Config, plan, workflow, Canonical-design, or nested-repository drift is not an
190
198
  acceptance-diff choice and returns to the stage required by the state API.
191
199
 
192
- For a migrated pre-0.9 Lite task, the breadcrumb
193
- `[easy-coding:lite-review-bypass-required:IMPLEMENT->REVIEW]` means the stored REVIEW edge is
194
- stale. Call `cancel-transition`, then immediately call `auto-transition --stage VERIFICATION`.
195
- Do not consume, confirm, or recreate the REVIEW edge; the state API will consume the task's
196
- one-time `workflow_mode_legacy_direct_edge` compatibility marker on the direct transition.
197
-
198
200
  ## Mode escalation
199
201
 
200
202
  When implementation reveals a higher risk, call:
@@ -205,8 +207,8 @@ When implementation reveals a higher risk, call:
205
207
  --agent <agent-id> --session-file <P>
206
208
  ```
207
209
 
208
- Only upward changes are legal after ANALYSIS. During VERIFICATION, return to IMPLEMENT before
209
- raising the mode so the task re-enters REVIEW with fresh evidence. Scope or design changes return
210
+ Only upward changes are legal after ANALYSIS. During QUALITY, return to IMPLEMENT before
211
+ raising the mode so the task re-enters QUALITY with fresh evidence. Scope or design changes return
210
212
  to ANALYSIS.
211
213
 
212
214
  ## Handoff and closure
@@ -20,6 +20,7 @@ disabled, omit the TDD segment entirely and preserve the existing status-line fo
20
20
  - Waiting init: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Waiting init · Use `ec-init` to initialize
21
21
  - Active task: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}`
22
22
  - Handoff: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
23
+ - Lite: > **Easy Coding** · **Lite Direct** · `{Ready|Awaiting Confirmation}` · No Task / Quality / Memory · Use `ec-lite` to exit
23
24
 
24
25
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
25
26
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -31,10 +32,11 @@ Trigger Easy Coding skills with your platform prefix — Codex: `$ec-*`, Qoder:
31
32
  - `ec-init` — one-time project knowledge init (run once after install)
32
33
  - `ec-workflow` — daily entrypoint: the workflow state machine and task resume
33
34
  - `ec-brainstorming` — design exploration before building (hard design gate)
34
- - `ec-analysis` `ec-implementing` `ec-reviewing` `ec-verification` — workflow stages
35
+ - `ec-analysis` `ec-implementing` `ec-quality` — workflow stages
35
36
  - `ec-memory` — short/long memory archive
36
37
  - `ec-task-management` — task lifecycle panel · `ec-config` — Approval/Workflow/TDD settings · `ec-tdd-init` — Java changed-line gate initialization · `ec-task-close` — interrupt a task
37
38
  - `ec-no-harness` — bypass only Easy Coding for the current session
39
+ - `ec-lite` — user-controlled direct mode with one proposal confirmation and no task/QUALITY/MEMORY
38
40
  - `ec-git` — git discipline · `ec-meta` — understand/customize the harness
39
41
 
40
42
  First run `ec-init`; daily work goes through `ec-workflow`.
@@ -45,10 +47,10 @@ First run `ec-init`; daily work goes through `ec-workflow`.
45
47
  is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
46
48
  workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
47
49
  Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
48
- automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
50
+ automatically; Auto advances all legal green edges. A new code diff after the QUALITY
49
51
  checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
50
52
  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.
53
+ Every mutation task runs QUALITY; no mode changes scope, delivery form, or evidence gates.
52
54
  - TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
53
55
  is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
54
56
  freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
@@ -59,53 +61,63 @@ First run `ec-init`; daily work goes through `ec-workflow`.
59
61
  local coverage for production lines changed since the task baseline. `ec-tdd-init` still
60
62
  generates GitLab TEST-stage automation, but remote CI status is not Harness acceptance evidence.
61
63
  - Confirmation-required edges use `pending_transition`; automatic edges use the restricted
62
- `auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
63
- VERIFICATION, or MEMORY, and writes no task memory.
64
+ `auto-transition` API. Pure read-only conversation stays Ready and creates no task. Any
65
+ repository write, including documentation or configuration, uses the full state machine.
64
66
  - A confirmation-required boundary is not fully presented until the user can choose its complete
65
67
  business branches. When a native user-choice tool is available, invoke it in the same turn with
66
68
  the complete gate. An ordinary gate offers "confirm entering/returning to the target stage"
67
69
  (recommended) and "hand off to another agent", with free-form Other for revisions. The special
68
- code IMPLEMENT gate must preserve enter REVIEW and handoff, with free-form Other. Use a native
70
+ IMPLEMENT gate must preserve enter QUALITY and handoff, with free-form Other. Use a native
69
71
  choice without a text pre-fallback only when the tool
70
72
  explicitly guarantees an indefinite wait; disable or omit automatic timeout/resolution in that
71
73
  case. Otherwise pre-render the matching numbered fallback before invoking native choice once,
72
74
  so timeout cannot remove the user's path forward. Empty, dismissed, timed-out, or unparseable
73
- native results preserve the pending edge; show the fallback when control returns only if it is
74
- not already visible, and never retry native choice in that turn. On resume, consume a matching
75
+ native results preserve the pending edge; never retry native choice in that turn. On resume,
76
+ consume a matching
75
77
  numbered reply against the stored edge before re-presenting the gate. Never degrade to only
76
- "reply confirm".
78
+ "reply confirm". Text shown before a later tool call is non-durable because the
79
+ host may group or collapse it. For ANALYSIS -> IMPLEMENT, the last assistant response after a
80
+ native choice or transition call must repeat a compact core-solution, acceptance, workflow,
81
+ and risk receipt plus the full Dev-Spec link/path, even if already visible. Repeat the complete
82
+ fallback while the edge is pending; after confirmation, identify the accepted branch and target
83
+ stage. Auto adds no pause and carries the Dev-Spec link/path into the next durable final response.
77
84
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
78
85
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
79
86
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.
87
+ - When `[easy-coding:lite-direct]` is injected, use only `ec-lite`. Lite is enabled or disabled
88
+ solely by explicit user invocation, creates no task or evidence artifacts, and requires one
89
+ confirmed compact proposal before each mutation. With an active task, present cancel startup,
90
+ close-and-start, and clear-pointer-and-start; never choose for the user.
80
91
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
81
92
  write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence,
82
93
  set `decision_status: open`, ask every unresolved material decision, and progressively record
83
94
  each confirmed answer and its evidence in `### 决策闭环`. Only after all material decisions are
84
95
  resolved may the agent set the single `decision_status: closed`, finalize the artifacts, and
85
96
  propose IMPLEMENT. The session presentation is a concise core-solution, acceptance, workflow,
86
- and risk summary with an absolute local link/path to the full dev-spec.md; never paste the full
87
- artifact by default. The final artifact contains neither `[阶段:ANALYSIS]` nor a
88
- `待用户决策` section.
89
- - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
97
+ and risk receipt with an absolute local link/path to the full dev-spec.md; repeat that durable
98
+ receipt after a later native choice or transition call instead of relying on collapsible process
99
+ text; never paste the full artifact by default. The final artifact contains neither
100
+ `[阶段:ANALYSIS]` nor a `待用户决策` section.
101
+ - QUALITY contains fingerprinted Review and Verification Gates. Review evidence must match the final
90
102
  implementation; verification evidence must match final implementation and config. The frozen
91
103
  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
104
+ Freeze a quality checkpoint after green checks. Unchanged checkpoints follow approval
93
105
  mode normally; post-checkpoint code drift requires exact digest acceptance and
94
- carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
106
+ carry-forward/targeted/waived verification policy, but never an automatic second Review Gate.
95
107
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
96
108
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
97
109
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
98
110
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
99
111
  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.
112
+ Selected source tasks remain `implemented` through local QUALITY and become `verified`
113
+ only when the accepted QUALITY -> MEMORY boundary is actually applied.
102
114
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
103
115
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
104
116
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
105
117
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
106
118
  projection, while shared execution is the dependency fact source.
107
119
  - MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
108
- effective confirmation mode; its checkpoint records any accepted post-verification diff digest
120
+ effective confirmation mode; its checkpoint records any accepted post-quality diff digest
109
121
  and decision. Once memory processing completes, COMPLETE is automatic.
110
122
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
111
123
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
@@ -123,7 +135,7 @@ First run `ec-init`; daily work goes through `ec-workflow`.
123
135
  a workflow identity. The installed script's embedded platform identity, canonical owner, and
124
136
  injected session namespace must agree. Do not hand-edit session files, `current_task`, task
125
137
  `status`, `stage_history`,
126
- `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
138
+ `pending_transition`, `quality_checkpoint`, `lite_mode`, `lite_proposal`, workflow/TDD proposal or freeze fields,
127
139
  `memory_progress`, or `last_agent`.
128
140
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
129
141
  `--session-file <P>` when changing the current task or stage.
@@ -20,6 +20,7 @@ disabled, omit the TDD segment entirely and preserve the existing status-line fo
20
20
  - Waiting init: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Waiting init · Use `ec-init` to initialize
21
21
  - Active task: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}`
22
22
  - Handoff: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
23
+ - Lite: > **Easy Coding** · **Lite Direct** · `{Ready|Awaiting Confirmation}` · No Task / Quality / Memory · Use `ec-lite` to exit
23
24
 
24
25
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
25
26
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -29,10 +30,11 @@ platform prefixes such as `/` or `$`. If no status line is injected, do not inve
29
30
  - `/ec-init` — one-time project knowledge init (run once after install)
30
31
  - `/ec-workflow` — daily entrypoint: the workflow state machine and task resume
31
32
  - `/ec-brainstorming` — design exploration before building (hard design gate)
32
- - `/ec-analysis` `/ec-implementing` `/ec-reviewing` `/ec-verification` — workflow stages
33
+ - `/ec-analysis` `/ec-implementing` `/ec-quality` — workflow stages
33
34
  - `/ec-memory` — short/long memory archive
34
35
  - `/ec-task-management` — task lifecycle panel · `/ec-config` — Approval/Workflow/TDD settings · `/ec-tdd-init` — Java changed-line gate initialization · `/ec-task-close` — interrupt a task
35
36
  - `/ec-no-harness` — bypass only Easy Coding for the current session
37
+ - `/ec-lite` — user-controlled direct mode with one proposal confirmation and no task/QUALITY/MEMORY
36
38
  - `/ec-git` — git discipline · `/ec-meta` — understand/customize the harness
37
39
 
38
40
  First run `/ec-init`; daily work goes through `/ec-workflow`.
@@ -43,10 +45,10 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
43
45
  is session override > project `behavior.workflow_mode` > `adaptive`. Approval controls waiting;
44
46
  workflow controls execution depth. ANALYSIS shows and freezes adaptive to fast/standard/strict.
45
47
  Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
46
- automatically; Auto advances all legal green edges. A new code diff after the VERIFICATION
48
+ automatically; Auto advances all legal green edges. A new code diff after the QUALITY
47
49
  checkpoint is the only exceptional pause across all modes: show the exact diff, bind acceptance
48
50
  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.
51
+ Every mutation task runs QUALITY; 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;
@@ -57,53 +59,63 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
57
59
  local coverage for production lines changed since the task baseline. `ec-tdd-init` still
58
60
  generates GitLab TEST-stage automation, but remote CI status is not Harness acceptance evidence.
59
61
  - Confirmation-required edges use `pending_transition`; automatic edges use the restricted
60
- `auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
61
- VERIFICATION, or MEMORY, and writes no task memory.
62
+ `auto-transition` API. Pure read-only conversation stays Ready and creates no task. Any
63
+ repository write, including documentation or configuration, uses the full state machine.
62
64
  - A confirmation-required boundary is not fully presented until the user can choose its complete
63
65
  business branches. When a native user-choice tool is available, invoke it in the same turn with
64
66
  the complete gate. An ordinary gate offers "confirm entering/returning to the target stage"
65
67
  (recommended) and "hand off to another agent", with free-form Other for revisions. The special
66
- code IMPLEMENT gate must preserve enter REVIEW and handoff, with free-form Other. Use a native
68
+ IMPLEMENT gate must preserve enter QUALITY and handoff, with free-form Other. Use a native
67
69
  choice without a text pre-fallback only when the tool
68
70
  explicitly guarantees an indefinite wait; disable or omit automatic timeout/resolution in that
69
71
  case. Otherwise pre-render the matching numbered fallback before invoking native choice once,
70
72
  so timeout cannot remove the user's path forward. Empty, dismissed, timed-out, or unparseable
71
- native results preserve the pending edge; show the fallback when control returns only if it is
72
- not already visible, and never retry native choice in that turn. On resume, consume a matching
73
+ native results preserve the pending edge; never retry native choice in that turn. On resume,
74
+ consume a matching
73
75
  numbered reply against the stored edge before re-presenting the gate. Never degrade to only
74
- "reply confirm".
76
+ "reply confirm". Text shown before a later tool call is non-durable because the
77
+ host may group or collapse it. For ANALYSIS -> IMPLEMENT, the last assistant response after a
78
+ native choice or transition call must repeat a compact core-solution, acceptance, workflow,
79
+ and risk receipt plus the full Dev-Spec link/path, even if already visible. Repeat the complete
80
+ fallback while the edge is pending; after confirmation, identify the accepted branch and target
81
+ stage. Auto adds no pause and carries the Dev-Spec link/path into the next durable final response.
75
82
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
76
83
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
77
84
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.
85
+ - When `[easy-coding:lite-direct]` is injected, use only `ec-lite`. Lite is enabled or disabled
86
+ solely by explicit user invocation, creates no task or evidence artifacts, and requires one
87
+ confirmed compact proposal before each mutation. With an active task, present cancel startup,
88
+ close-and-start, and clear-pointer-and-start; never choose for the user.
78
89
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
79
90
  write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence,
80
91
  set `decision_status: open`, ask every unresolved material decision, and progressively record
81
92
  each confirmed answer and its evidence in `### 决策闭环`. Only after all material decisions are
82
93
  resolved may the agent set the single `decision_status: closed`, finalize the artifacts, and
83
94
  propose IMPLEMENT. The session presentation is a concise core-solution, acceptance, workflow,
84
- and risk summary with an absolute local link/path to the full dev-spec.md; never paste the full
85
- artifact by default. The final artifact contains neither `[阶段:ANALYSIS]` nor a
86
- `待用户决策` section.
87
- - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
95
+ and risk receipt with an absolute local link/path to the full dev-spec.md; repeat that durable
96
+ receipt after a later native choice or transition call instead of relying on collapsible process
97
+ text; never paste the full artifact by default. The final artifact contains neither
98
+ `[阶段:ANALYSIS]` nor a `待用户决策` section.
99
+ - QUALITY contains fingerprinted Review and Verification Gates. Review evidence must match the final
88
100
  implementation; verification evidence must match final implementation and config. The frozen
89
101
  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
102
+ Freeze a quality checkpoint after green checks. Unchanged checkpoints follow approval
91
103
  mode normally; post-checkpoint code drift requires exact digest acceptance and
92
- carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
104
+ carry-forward/targeted/waived verification policy, but never an automatic second Review Gate.
93
105
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
94
106
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
95
107
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
96
108
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
97
109
  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.
110
+ Selected source tasks remain `implemented` through local QUALITY and become `verified`
111
+ only when the accepted QUALITY -> MEMORY boundary is actually applied.
100
112
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
101
113
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
102
114
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
103
115
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
104
116
  projection, while shared execution is the dependency fact source.
105
117
  - MEMORY combines short-memory creation and the conditional long-memory gate. Entry follows the
106
- effective confirmation mode; its checkpoint records any accepted post-verification diff digest
118
+ effective confirmation mode; its checkpoint records any accepted post-quality diff digest
107
119
  and decision. Once memory processing completes, COMPLETE is automatic.
108
120
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
109
121
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
@@ -118,7 +130,7 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
118
130
  `Claude with Easy Coding` is not a workflow identity. The installed script's embedded platform
119
131
  identity, canonical owner, and injected session namespace must agree. Do not hand-edit session
120
132
  files, `current_task`, task `status`, `stage_history`,
121
- `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
133
+ `pending_transition`, `quality_checkpoint`, `lite_mode`, `lite_proposal`, workflow/TDD proposal or freeze fields,
122
134
  `memory_progress`, or `last_agent`.
123
135
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
124
136
  `--session-file <P>` when changing the current task or stage.