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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +56 -1
  2. package/README.md +32 -25
  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 +9 -8
  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 +22 -29
  23. package/templates/main-constraint/AGENTS.md.tpl +19 -13
  24. package/templates/main-constraint/CLAUDE.md.tpl +19 -13
  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
 
@@ -178,23 +177,17 @@ current `diff_sha256`, then use the platform's native choice UI for these branch
178
177
 
179
178
  1. Accept this exact diff and continue to MEMORY (recommended only with the stated verification
180
179
  policy).
181
- 2. Return to IMPLEMENT because the change needs normal repair/review.
180
+ 2. Return to IMPLEMENT because the change needs normal repair/quality checks.
182
181
  3. Hand off to another Agent.
183
182
  4. Other / revise.
184
183
 
185
184
  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,
185
+ existing Review Gate conclusion and call `confirm-transition` with the exact digest,
187
186
  `--verification-policy carry-forward|targeted|waived`, and a decision summary. `targeted` needs a
188
187
  passed current-fingerprint targeted check first. If the digest changes, inspect and present the
189
188
  new diff. Config, plan, workflow, Canonical-design, or nested-repository drift is not an
190
189
  acceptance-diff choice and returns to the stage required by the state API.
191
190
 
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
191
  ## Mode escalation
199
192
 
200
193
  When implementation reveals a higher risk, call:
@@ -205,8 +198,8 @@ When implementation reveals a higher risk, call:
205
198
  --agent <agent-id> --session-file <P>
206
199
  ```
207
200
 
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
201
+ Only upward changes are legal after ANALYSIS. During QUALITY, return to IMPLEMENT before
202
+ raising the mode so the task re-enters QUALITY with fresh evidence. Scope or design changes return
210
203
  to ANALYSIS.
211
204
 
212
205
  ## 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,13 +61,13 @@ 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,
@@ -77,6 +79,10 @@ First run `ec-init`; daily work goes through `ec-workflow`.
77
79
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
78
80
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
79
81
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.
82
+ - When `[easy-coding:lite-direct]` is injected, use only `ec-lite`. Lite is enabled or disabled
83
+ solely by explicit user invocation, creates no task or evidence artifacts, and requires one
84
+ confirmed compact proposal before each mutation. With an active task, present cancel startup,
85
+ close-and-start, and clear-pointer-and-start; never choose for the user.
80
86
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
81
87
  write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence,
82
88
  set `decision_status: open`, ask every unresolved material decision, and progressively record
@@ -86,26 +92,26 @@ First run `ec-init`; daily work goes through `ec-workflow`.
86
92
  and risk summary with an absolute local link/path to the full dev-spec.md; never paste the full
87
93
  artifact by default. The final artifact contains neither `[阶段:ANALYSIS]` nor a
88
94
  `待用户决策` section.
89
- - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
95
+ - QUALITY contains fingerprinted Review and Verification Gates. Review evidence must match the final
90
96
  implementation; verification evidence must match final implementation and config. The frozen
91
97
  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
98
+ Freeze a quality checkpoint after green checks. Unchanged checkpoints follow approval
93
99
  mode normally; post-checkpoint code drift requires exact digest acceptance and
94
- carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
100
+ carry-forward/targeted/waived verification policy, but never an automatic second Review Gate.
95
101
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
96
102
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
97
103
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
98
104
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
99
105
  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.
106
+ Selected source tasks remain `implemented` through local QUALITY and become `verified`
107
+ only when the accepted QUALITY -> MEMORY boundary is actually applied.
102
108
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
103
109
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
104
110
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
105
111
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
106
112
  projection, while shared execution is the dependency fact source.
107
113
  - 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
114
+ effective confirmation mode; its checkpoint records any accepted post-quality diff digest
109
115
  and decision. Once memory processing completes, COMPLETE is automatic.
110
116
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
111
117
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
@@ -123,7 +129,7 @@ First run `ec-init`; daily work goes through `ec-workflow`.
123
129
  a workflow identity. The installed script's embedded platform identity, canonical owner, and
124
130
  injected session namespace must agree. Do not hand-edit session files, `current_task`, task
125
131
  `status`, `stage_history`,
126
- `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
132
+ `pending_transition`, `quality_checkpoint`, `lite_mode`, `lite_proposal`, workflow/TDD proposal or freeze fields,
127
133
  `memory_progress`, or `last_agent`.
128
134
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
129
135
  `--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,13 +59,13 @@ 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,
@@ -75,6 +77,10 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
75
77
  - When `[easy-coding:no-harness]` is injected, do not emit an Easy Coding status line and ignore
76
78
  only Easy Coding workflow/stage orchestration for this session. Continue honoring every
77
79
  non-Easy-Coding skill, hook, and instruction. Do not clear or mutate the suspended task.
80
+ - When `[easy-coding:lite-direct]` is injected, use only `ec-lite`. Lite is enabled or disabled
81
+ solely by explicit user invocation, creates no task or evidence artifacts, and requires one
82
+ confirmed compact proposal before each mutation. With an active task, present cancel startup,
83
+ close-and-start, and clear-pointer-and-start; never choose for the user.
78
84
  - ANALYSIS must follow template-first: read `.easy-coding/templates/dev-spec-skeleton.md` then
79
85
  write its exact content to the task's dev-spec.md as the FIRST tool calls. Next inspect evidence,
80
86
  set `decision_status: open`, ask every unresolved material decision, and progressively record
@@ -84,26 +90,26 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
84
90
  and risk summary with an absolute local link/path to the full dev-spec.md; never paste the full
85
91
  artifact by default. The final artifact contains neither `[阶段:ANALYSIS]` nor a
86
92
  `待用户决策` section.
87
- - REVIEW and VERIFICATION are fingerprinted hard gates. Review evidence must match the final
93
+ - QUALITY contains fingerprinted Review and Verification Gates. Review evidence must match the final
88
94
  implementation; verification evidence must match final implementation and config. The frozen
89
95
  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
96
+ Freeze a quality checkpoint after green checks. Unchanged checkpoints follow approval
91
97
  mode normally; post-checkpoint code drift requires exact digest acceptance and
92
- carry-forward/targeted/waived verification policy, but never an automatic second REVIEW.
98
+ carry-forward/targeted/waived verification policy, but never an automatic second Review Gate.
93
99
  - Canonical-backed tasks bind static validity to design revision + `design_sha256`, while
94
100
  `document_sha256` and `execution_revision` may advance through shared writer commands. Project-
95
101
  external explicit Spec paths are allowed and may be repaired only with identity-checked rebind.
96
102
  Runtime progress must use the shared writer with CAS/idempotency and reconciliation; static
97
103
  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.
104
+ Selected source tasks remain `implemented` through local QUALITY and become `verified`
105
+ only when the accepted QUALITY -> MEMORY boundary is actually applied.
100
106
  - Canonical routing is two-pass: first use manifest-only discovery for the current worktree, then
101
107
  inspect only the explicitly selected task IDs and repositories. A remote-confirmed worktree
102
108
  overrides a stale `path_hint`; never mirror the source Spec or re-check unselected repositories.
103
109
  ANALYSIS reads the selected consumption closure once and treats exact/scope-unchanged as a fast
104
110
  projection, while shared execution is the dependency fact source.
105
111
  - 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
112
+ effective confirmation mode; its checkpoint records any accepted post-quality diff digest
107
113
  and decision. Once memory processing completes, COMPLETE is automatic.
108
114
  - NO CODE-TASK COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.
109
115
  - All cross-platform modules (skills, hooks, references) must use universal agent protocols.
@@ -118,7 +124,7 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
118
124
  `Claude with Easy Coding` is not a workflow identity. The installed script's embedded platform
119
125
  identity, canonical owner, and injected session namespace must agree. Do not hand-edit session
120
126
  files, `current_task`, task `status`, `stage_history`,
121
- `pending_transition`, `verification_checkpoint`, workflow/TDD proposal or freeze fields,
127
+ `pending_transition`, `quality_checkpoint`, `lite_mode`, `lite_proposal`, workflow/TDD proposal or freeze fields,
122
128
  `memory_progress`, or `last_agent`.
123
129
  - The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
124
130
  `--session-file <P>` when changing the current task or stage.
@@ -11,8 +11,6 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
11
11
  ## Hard constraints
12
12
 
13
13
  - Modify only the files listed in the task card's "Editable scope". Touch nothing else.
14
- - If the editable scope is `NONE — read-only deliverable`, modify nothing and return the full
15
- requested result in `deliverable`.
16
14
  - Do not call any Skill tool.
17
15
  - Do not read `.qoder/skills/`, `.agents/skills/`, or any `.easy-coding/` file. All needed
18
16
  context is in the card.
@@ -21,25 +19,26 @@ complete exactly that unit. Your reply IS the return value, not a message to a h
21
19
  - Follow the task card's `Local Baseline`: match nearby naming, control flow, null/error handling,
22
20
  layering, object modeling, method granularity, literal usage, and comment style unless a stated
23
21
  correctness, security, requirement, or hard-rule reason requires a deviation.
24
- - Treat the task card's `Code Comments` author value and field/member/constant rules as mandatory.
22
+ - Treat the task card's `Code Comments` author value and field rules as mandatory.
25
23
  - Do not add generic defensive null checks, speculative abstractions/layers, fragmented one-use
26
24
  micro-methods, or a constant that exists only to hold one getter return.
27
25
  - Local, obvious magic values are allowed when they match surrounding code; create constants for
28
26
  reuse, stable domain/config/protocol semantics, or established project convention.
29
27
  - 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.
28
+ or field in an existing core Java class, must have meaningful multiline Javadoc; use `//` for
29
+ ordinary one-line notes and comment complex logic where intent or constraints are not obvious.
30
+ - Do not change unrelated comments, formatting, imports, names, or code. Keep one blank line
31
+ between coherent logic sections and revert formatter spillover outside the requested scope.
32
32
  - Treat acceptance criteria, test points, contracts, and risks in the card as required inputs.
33
- - Run the exact targeted checks requested by the card and report their real outcome.
33
+ - Do not run quality commands unless the card explicitly marks TDD lifecycle execution required.
34
34
  - Preserve each existing file's original encoding; never silently convert.
35
35
 
36
36
  ## Output (return exactly this)
37
37
 
38
38
  - `changed_files`: the files you actually modified
39
39
  - `summary`: one line describing what you did
40
- - `deliverable`: full no-code result, or `null` for a code unit
41
40
  - `issues`: problems you hit (empty array if none)
42
41
  - `needs_attention`: anything the main agent must decide (empty array if none)
43
- - `checks`: commands run with pass/fail outcomes
42
+ - `checks`: TDD lifecycle commands actually run, otherwise an empty array
44
43
 
45
44
  Do not claim a file is verified unless the card asked you to run a check and you ran it.
@@ -21,8 +21,12 @@ dimension named in your task card. Your reply IS the return value.
21
21
  - Do not request defensive null checks, abstraction, constant extraction, or legacy-wide comment
22
22
  cleanup solely as generic best practice. Flag unjustified local-style deviations, speculative
23
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.
24
+ missing multiline Javadoc on any method/field in a new core Java class or any added/materially
25
+ modified method/field in an existing core Java class.
26
+ - Treat unrelated comment, formatting, import, naming, or refactor changes as minimum-diff
27
+ violations. Do not ask to clean up untouched legacy code.
28
+ - On the first pass, report the complete in-scope finding set. On a repair pass, review only the
29
+ repair delta and direct interactions; do not introduce unrelated style findings.
26
30
  - `error` means a demonstrated acceptance, contract, security, or build failure. Use `warning`
27
31
  for a credible risk and `info` for non-blocking maintainability advice.
28
32
 
@@ -35,5 +39,13 @@ dimension named in your task card. Your reply IS the return value.
35
39
  ## Output (return exactly this)
36
40
 
37
41
  - `dimension`: your assigned dimension
42
+ - `passed`: true only when there are no `error` findings
43
+ - `implementation_fingerprint`: copy unchanged from the task card
44
+ - `quality_attempt`: copy unchanged from the task card
45
+ - `failure_classes`: array of code-defect | test-defect | contract-ambiguity | environment for
46
+ blocking findings; empty when passed
47
+ - `reviewer`: your canonical Agent identity
48
+ - `timestamp`: current ISO timestamp with timezone
49
+ - `repo_id` and `source_task_id`: copy unchanged when present in the task card
38
50
  - `findings`: array of `{file, line, issue, severity}` (`severity`: info | warning | error)
39
51
  - `suggestion`: optional fix direction per finding