easy-coding-harness 0.10.0-beta.0 → 0.10.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.
- package/CHANGELOG.md +15 -0
- package/README.md +7 -3
- package/dist/cli.js +102 -13
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/common/bundled-skills/ec-init/SKILL.md +6 -0
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +9 -2
- package/templates/common/bundled-skills/ec-meta/references/platform-files/README.md +1 -1
- package/templates/common/skills/ec-analysis/SKILL.md +30 -0
- package/templates/common/skills/ec-config/SKILL.md +54 -0
- package/templates/common/skills/ec-implementing/SKILL.md +11 -0
- package/templates/common/skills/ec-memory/SKILL.md +4 -0
- package/templates/common/skills/ec-reviewing/SKILL.md +6 -0
- package/templates/common/skills/ec-task-management/SKILL.md +6 -31
- package/templates/common/skills/ec-verification/SKILL.md +45 -1
- package/templates/common/skills/ec-workflow/SKILL.md +7 -1
- package/templates/main-constraint/AGENTS.md.tpl +10 -3
- package/templates/main-constraint/CLAUDE.md.tpl +10 -3
- package/templates/runtime/tools/easy_coding_java_coverage.py +317 -0
- package/templates/shared-hooks/easy_coding_state.py +602 -13
- package/templates/shared-hooks/inject-subagent-context.py +5 -0
package/package.json
CHANGED
|
@@ -85,6 +85,9 @@ initialization standard. Check each item:
|
|
|
85
85
|
and non-empty?
|
|
86
86
|
- **Project profile**: `project.yaml` exists with `mode` and `test` fields (ec-init owns it;
|
|
87
87
|
`config.yaml` is CLI-owned — not ec-init's concern)?
|
|
88
|
+
- **TDD runtime contract**: CLI-owned `config.yaml` has schema 4 TDD defaults and
|
|
89
|
+
`.easy-coding/tools/easy_coding_java_coverage.py` exists? Missing fields or tool mean
|
|
90
|
+
`easy-coding upgrade` is required; ec-init must not repair them directly.
|
|
88
91
|
- **Platform hook config freshness**: for each installed platform in `.easy-coding/config.yaml`,
|
|
89
92
|
read the platform hook config and verify managed Easy Coding hook commands use the portable
|
|
90
93
|
relative hook launcher bound to this project root's `project.id`. If `project.id` is missing,
|
|
@@ -154,6 +157,9 @@ agent must be able to see what was generated and on what evidence.
|
|
|
154
157
|
tests live, naming conventions, coverage expectations, which classes of code this project
|
|
155
158
|
tests vs skips. Also fill `project.yaml` `test.framework` and `test.command` with commands
|
|
156
159
|
you verified exist (read package.json scripts or equivalent — do not guess).
|
|
160
|
+
If effective TDD is disabled, do not inspect JaCoCo or GitLab and do not add TDD-specific
|
|
161
|
+
requirements. If it is enabled for Java, additionally document JUnit/JaCoCo commands,
|
|
162
|
+
production/test source roots, XML report paths, and the existing GitLab TEST-stage gate.
|
|
157
163
|
5. **Memory migration probe** — Check for old-format memory files:
|
|
158
164
|
- `.easy-coding/memory/long/MEMORY.md` exists but lacks `memory_schema: 2` frontmatter
|
|
159
165
|
- `.easy-coding/memory/long/BUSINESS.md` or `TECHNICAL.md` missing
|
|
@@ -53,8 +53,15 @@ advances every legal edge after mechanical gates.
|
|
|
53
53
|
Workflow mode is independently configured as adaptive/fast/standard/strict; ANALYSIS freezes
|
|
54
54
|
adaptive to a concrete mode, and every new code task still enters REVIEW. REVIEW evidence is
|
|
55
55
|
bound to the final implementation fingerprint, VERIFICATION evidence is bound to implementation
|
|
56
|
-
and config fingerprints, and MEMORY keeps the conditional long-memory threshold gate.
|
|
57
|
-
|
|
56
|
+
and config fingerprints, and MEMORY keeps the conditional long-memory threshold gate.
|
|
57
|
+
|
|
58
|
+
Java TDD is a third independent, default-off control managed by `ec-config`. Session overrides
|
|
59
|
+
project configuration; ANALYSIS freezes enabled state and the 1..100 changed-line threshold
|
|
60
|
+
(default 90) on entry to IMPLEMENT. Disabled TDD changes no ordinary workflow test depth. Enabled
|
|
61
|
+
TDD adds lifecycle evidence, a TDD review dimension, and the same JaCoCo diff gate locally and in
|
|
62
|
+
GitLab TEST-stage CI.
|
|
63
|
+
|
|
64
|
+
The active task pointer lives in `sessions/{agent}-{session-id}.json` (with an agent-prefixed PPID fallback only
|
|
58
65
|
when a hook payload has no logical session ID);
|
|
59
66
|
when the task reaches `COMPLETE` or `CLOSED`, the state API clears `current_task` so the
|
|
60
67
|
session returns to Ready. Each task's stage persists in its `task.json`. Hooks inject the
|
|
@@ -14,7 +14,7 @@ What lives in each platform directory and how the three platforms differ.
|
|
|
14
14
|
| Sub-agent defs | `.claude/agents/*.md` | `.codex/agents/*.toml` | `.qoder/agents/*.md` |
|
|
15
15
|
| CN variant | — | — | `.qodercn/` |
|
|
16
16
|
|
|
17
|
-
Each skill is installed as `{skills-dir}/ec-{name}/SKILL.md`. The
|
|
17
|
+
Each skill is installed as `{skills-dir}/ec-{name}/SKILL.md`. The 14 skills are
|
|
18
18
|
platform-agnostic — one template, resolved per platform at write time. The agent's native
|
|
19
19
|
discovery surfaces them under `/ec-` or `$ec-`.
|
|
20
20
|
|
|
@@ -93,6 +93,36 @@ independent write scopes. Better unit contracts reduce later REVIEW rework.
|
|
|
93
93
|
|
|
94
94
|
Code tasks require `test-strategy.md`; explicit `doc`, `analysis`, and `report` tasks do not.
|
|
95
95
|
|
|
96
|
+
## Optional Java TDD analysis
|
|
97
|
+
|
|
98
|
+
Read `effective_tdd_enabled` and `effective_tdd_coverage_threshold` from the state snapshot.
|
|
99
|
+
When TDD is disabled, stop here: do not inspect GitLab CI or JaCoCo, do not add TDD fields or
|
|
100
|
+
extra tests, and do not strengthen the selected Workflow Mode's ordinary acceptance depth.
|
|
101
|
+
|
|
102
|
+
When TDD is enabled for a Java code task, make `test-strategy.md` record:
|
|
103
|
+
|
|
104
|
+
- detected Java/JUnit build system, exact unit-test command, production/test source roots, and
|
|
105
|
+
JaCoCo XML paths;
|
|
106
|
+
- immutable Git baseline SHA and the configured changed-production-line threshold; design tests
|
|
107
|
+
toward 100% while treating the threshold as the mechanical minimum;
|
|
108
|
+
- feature/bug RED -> GREEN -> REFACTOR evidence, or for pure refactors a pre-change
|
|
109
|
+
characterization GREEN -> post-change GREEN sequence without inventing a RED failure;
|
|
110
|
+
- `.gitlab-ci.yml` and included configuration, the TEST-stage job, JUnit/JaCoCo artifacts, and an
|
|
111
|
+
equivalent changed-line gate. Reuse a gate only when its threshold is at least the configured
|
|
112
|
+
value; otherwise include the CI change in the confirmed implementation scope.
|
|
113
|
+
|
|
114
|
+
The state API mechanically freezes current Git `HEAD` per repository into `task.tdd_baselines`
|
|
115
|
+
when ANALYSIS advances to IMPLEMENT. Plan both local and GitLab commands with that exact SHA and
|
|
116
|
+
the frozen threshold; never use a mutable `HEAD` fallback at verification time. Non-Canonical TDD
|
|
117
|
+
is limited to one Git repository; multi-repository TDD must use Canonical repository bindings.
|
|
118
|
+
|
|
119
|
+
Also append a `### TDD Mode` section to `dev-spec.md` with enabled state, frozen threshold,
|
|
120
|
+
baseline, local gate, GitLab TEST gate, and lifecycle evidence. Do not add this section when TDD
|
|
121
|
+
is disabled.
|
|
122
|
+
|
|
123
|
+
If the task is not a Java project, explain that Java-only TDD cannot be activated and obtain a
|
|
124
|
+
mode decision before advancing. The CLI never installs JaCoCo or edits CI automatically.
|
|
125
|
+
|
|
96
126
|
## Workflow mode calculation
|
|
97
127
|
|
|
98
128
|
Resolve configured mode from the state snapshot:
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ec-config
|
|
3
|
+
description: Inspect and configure Easy Coding project/session Approval, Workflow, and Java TDD modes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ec-config — mode configuration
|
|
7
|
+
|
|
8
|
+
Communicate in the user's language. A bare invocation is read-only: show the configuration panel
|
|
9
|
+
and available actions. Never mutate project or session settings without an explicit user choice.
|
|
10
|
+
|
|
11
|
+
## Configuration panel
|
|
12
|
+
|
|
13
|
+
Call `snapshot` and show project, session, effective, and frozen task values for:
|
|
14
|
+
|
|
15
|
+
- `approval_mode`;
|
|
16
|
+
- `workflow_mode`;
|
|
17
|
+
- `tdd_enabled` and `tdd_coverage_threshold`.
|
|
18
|
+
|
|
19
|
+
Use the returned fields directly, including `project_tdd_enabled`, `session_tdd_enabled`,
|
|
20
|
+
`effective_tdd_enabled`, their threshold counterparts, `task_tdd_enabled`, and the task's
|
|
21
|
+
per-repository `task_tdd_baselines` frozen state.
|
|
22
|
+
|
|
23
|
+
Explain precedence as `session override > project config > defaults`. Defaults are Approval
|
|
24
|
+
`guard`, Workflow `adaptive`, TDD disabled, and TDD changed-line coverage threshold 90%. An active
|
|
25
|
+
task freezes its effective TDD values when ANALYSIS advances to IMPLEMENT; later project/session
|
|
26
|
+
changes affect future tasks and ANALYSIS only.
|
|
27
|
+
|
|
28
|
+
## Project configuration
|
|
29
|
+
|
|
30
|
+
Use `easy-coding config` for project settings. The CLI confirms one atomic update of Approval,
|
|
31
|
+
Workflow, TDD, and (when enabled) the threshold. The threshold must be an integer from 1 to 100.
|
|
32
|
+
|
|
33
|
+
## Session configuration
|
|
34
|
+
|
|
35
|
+
After explicit user selection, use the current logical session file:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# approval
|
|
39
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py set-approval-mode --mode approve|guard|confirm|auto --agent <agent-id> --session-file <P>
|
|
40
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py clear-approval-mode --agent <agent-id> --session-file <P>
|
|
41
|
+
|
|
42
|
+
# workflow
|
|
43
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py set-workflow-mode --mode adaptive|fast|standard|strict --agent <agent-id> --session-file <P>
|
|
44
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py clear-workflow-mode --agent <agent-id> --session-file <P>
|
|
45
|
+
|
|
46
|
+
# TDD; omitting threshold preserves an existing session threshold, otherwise project/default 90 applies
|
|
47
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py set-tdd --enabled true|false [--threshold 1..100] --agent <agent-id> --session-file <P>
|
|
48
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py clear-tdd --agent <agent-id> --session-file <P>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Turning TDD off must preserve the existing Fast/Standard/Strict test depth exactly: do not inspect
|
|
52
|
+
CI, request JaCoCo, add TDD artifacts, run coverage commands, or strengthen acceptance criteria.
|
|
53
|
+
When TDD is on, explain that it applies only to Java code tasks and activates RED/GREEN/REFACTOR,
|
|
54
|
+
TDD review, local changed-line JaCoCo coverage, and GitLab TEST-stage gate planning.
|
|
@@ -9,6 +9,16 @@ Use only after ANALYSIS has frozen `task.json.workflow_mode` to `fast`, `standar
|
|
|
9
9
|
`strict`. Read `dev-spec.md`, the latest `plan` record in `execution.jsonl`, relevant RULES
|
|
10
10
|
and ABSTRACT sections, and `test-strategy.md` for code tasks.
|
|
11
11
|
|
|
12
|
+
If frozen `task.tdd_enabled` is not `true`, preserve the existing shift-left behavior exactly;
|
|
13
|
+
do not load the Java coverage tool, require RED/GREEN/REFACTOR, inspect CI, or run extra test
|
|
14
|
+
commands. TDD is an independent opt-in mode, not an implicit consequence of strict workflow.
|
|
15
|
+
|
|
16
|
+
When frozen TDD is enabled, every feature/bug unit must capture a meaningful failing unit test
|
|
17
|
+
before production code (RED), the smallest passing implementation (GREEN), and a green refactor.
|
|
18
|
+
Pure refactors instead capture a passing characterization test before the change and rerun it
|
|
19
|
+
afterward. Never fake RED evidence. Keep tests deterministic, boundary-focused, and minimally
|
|
20
|
+
mocked, and design changed production code toward 100% unit coverage.
|
|
21
|
+
|
|
12
22
|
Communicate with the user in the user's language.
|
|
13
23
|
|
|
14
24
|
## Non-negotiable gates
|
|
@@ -59,6 +69,7 @@ Sub-agents never dispatch other sub-agents or read `.easy-coding` workflow asset
|
|
|
59
69
|
# Task Card
|
|
60
70
|
## Identity Easy Coding implementation unit
|
|
61
71
|
## Workflow Mode {fast|standard|strict}
|
|
72
|
+
## TDD {off | on, frozen changed-line threshold N%}
|
|
62
73
|
## Task {unit description}
|
|
63
74
|
## Source Spec {spec_id@revision + sha256 | NONE}
|
|
64
75
|
## Source Task {source_task_id | NONE}
|
|
@@ -28,6 +28,10 @@ Name it `{memory_id}_{YYYYMMDD}_{smart_name}.md` and set
|
|
|
28
28
|
`.easy-coding/memory/short/`, then register it with
|
|
29
29
|
`memory-short-complete`. Never invent test results or commit hashes.
|
|
30
30
|
|
|
31
|
+
When frozen TDD is enabled, add its threshold, lifecycle evidence, local changed-line result,
|
|
32
|
+
and remote CI status to the short memory's execution evidence. When TDD is off, omit TDD fields
|
|
33
|
+
entirely so ordinary tasks incur no additional memory work.
|
|
34
|
+
|
|
31
35
|
Ask the state API for `memory-instruction`. Distill only when it returns `action:distill`;
|
|
32
36
|
otherwise record `no-op`. Long memory receives reusable facts only, not file dumps, transient
|
|
33
37
|
logs, routine command output, or speculation.
|
|
@@ -21,6 +21,12 @@ a blocking correctness finding. Every Canonical review record includes its `repo
|
|
|
21
21
|
`source_task_id`; emit at least one current-fingerprint record per selected task and required
|
|
22
22
|
review dimension. A global record without source ownership cannot satisfy the gate.
|
|
23
23
|
|
|
24
|
+
When frozen TDD is enabled, add a passed review dimension named exactly `tdd` for each source
|
|
25
|
+
task. Review whether RED/GREEN/REFACTOR (or characterization GREEN for pure refactors) is genuine,
|
|
26
|
+
tests exercise changed behavior and boundaries, mocks do not merely mirror implementation, and
|
|
27
|
+
the local/CI changed-line coverage gates share the frozen threshold. When TDD is off, do not add
|
|
28
|
+
this dimension or raise the ordinary review depth.
|
|
29
|
+
|
|
24
30
|
## Depth by workflow mode
|
|
25
31
|
|
|
26
32
|
- `fast`: main Agent performs one final-diff self-review across correctness, scope, tests, and
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ec-task-management
|
|
3
|
-
description: View and manage Easy Coding
|
|
3
|
+
description: View and manage Easy Coding task lifecycle, ownership, handoff, and closure.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# ec-task-management —
|
|
6
|
+
# ec-task-management — task lifecycle
|
|
7
7
|
|
|
8
8
|
Communicate with the user in the user's language. A bare invocation is read-only: show the
|
|
9
9
|
panel and available actions, but do not mutate a session without an explicit choice.
|
|
@@ -13,44 +13,19 @@ panel and available actions, but do not mutate a session without an explicit cho
|
|
|
13
13
|
Call the state API snapshot and show:
|
|
14
14
|
|
|
15
15
|
- current task, stage, last Agent, and pending transition;
|
|
16
|
-
-
|
|
17
|
-
- `project_workflow_mode`, `session_workflow_mode`, `configured_workflow_mode`;
|
|
18
|
-
- task `concrete_workflow_mode` or ANALYSIS proposal when present;
|
|
16
|
+
- task `concrete_workflow_mode` and frozen TDD state when present;
|
|
19
17
|
- harness enabled/disabled state;
|
|
20
18
|
- active and resumable tasks.
|
|
21
19
|
- for Canonical-backed tasks: source Spec ID/revision/SHA, selected task IDs, repository
|
|
22
20
|
bindings/baseline status, and pending dependency evidence.
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
`session override > project config > approval:guard / workflow:adaptive`
|
|
27
|
-
|
|
28
|
-
## Session settings
|
|
29
|
-
|
|
30
|
-
After explicit user selection:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
# approval
|
|
34
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py set-approval-mode --mode approve|guard|confirm|auto --agent <agent-id> --session-file <P>
|
|
35
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py clear-approval-mode --agent <agent-id> --session-file <P>
|
|
36
|
-
|
|
37
|
-
# workflow
|
|
38
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py set-workflow-mode --mode adaptive|fast|standard|strict --agent <agent-id> --session-file <P>
|
|
39
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py clear-workflow-mode --agent <agent-id> --session-file <P>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Changing a session setting affects future ANALYSIS proposals. It does not silently rewrite a
|
|
43
|
-
mode already frozen on an active task. During ANALYSIS, regenerate and show the proposal. During
|
|
44
|
-
IMPLEMENT or REVIEW, use `raise-workflow-mode` for a justified increase; lowering is forbidden.
|
|
45
|
-
From VERIFICATION, return to IMPLEMENT first so the raised mode receives fresh REVIEW evidence.
|
|
46
|
-
|
|
47
|
-
Project settings are changed with `easy-coding config`, which edits both dimensions in one
|
|
48
|
-
confirmed interaction.
|
|
22
|
+
Mode inspection and configuration belongs to `ec-config`. If the user asks to change Approval,
|
|
23
|
+
Workflow, TDD, or the TDD coverage threshold, route there and do not mutate those fields here.
|
|
49
24
|
|
|
50
25
|
## Task actions
|
|
51
26
|
|
|
52
27
|
Support listing, creating, selecting, claiming, handing off, and closing tasks through the
|
|
53
|
-
state API. Preserve pending transitions when
|
|
28
|
+
state API. Preserve pending transitions when inspecting tasks. Never infer user
|
|
54
29
|
acceptance from opening this panel.
|
|
55
30
|
|
|
56
31
|
When creating from a Canonical Spec, call `inspect-dev-spec`, display the complete task and
|
|
@@ -25,6 +25,27 @@ Read-only tasks never enter this stage. Obtain fresh fingerprints before running
|
|
|
25
25
|
- `standard`: run impacted lint/typecheck/test scopes and every must-test item.
|
|
26
26
|
- `strict`: run the project's full applicable lint, typecheck, test, and build gates.
|
|
27
27
|
|
|
28
|
+
These rules remain unchanged when frozen TDD is off: do not discover JaCoCo reports, run the
|
|
29
|
+
coverage tool, inspect GitLab, or add a coverage record.
|
|
30
|
+
|
|
31
|
+
When frozen TDD is on, first run the planned Java unit command and generate JaCoCo XML, then run
|
|
32
|
+
the same deterministic gate intended for GitLab:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
python3 .easy-coding/tools/easy_coding_java_coverage.py check \
|
|
36
|
+
--base <task.tdd_baselines[repo-id-or-project]> \
|
|
37
|
+
--threshold <task.tdd_coverage_threshold> [--report <jacoco.xml>]...
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The tool measures covered added/modified production Java executable lines only. Deleted,
|
|
41
|
+
comment, blank, import, and test-source lines are excluded by diff/JaCoCo intersection. Missing
|
|
42
|
+
or ambiguous source files and reports older than their modified source fail; zero modified
|
|
43
|
+
executable lines is explicit N/A. Always regenerate JaCoCo XML after the final source change.
|
|
44
|
+
Record CI as pending until the remote pipeline actually passes; local green is not remote green.
|
|
45
|
+
Never substitute `HEAD`, a mutable ref, project defaults, or current session settings for the
|
|
46
|
+
task-frozen baseline SHA and threshold. GitLab must invoke the tool with the same two frozen
|
|
47
|
+
values; a session override therefore requires the CI command/variable for this task to match it.
|
|
48
|
+
|
|
28
49
|
The main Agent may run commands inline. Dispatch verifier sub-agents only when checks are
|
|
29
50
|
independent and parallel execution materially saves time or isolates specialist environments.
|
|
30
51
|
Platform spawn rule: {{platform_spawn_instruction}}
|
|
@@ -48,7 +69,7 @@ Append one record per executed check:
|
|
|
48
69
|
}
|
|
49
70
|
```
|
|
50
71
|
|
|
51
|
-
`check_type` is one of `lint`, `typecheck`, `test`, or `
|
|
72
|
+
`check_type` is one of `lint`, `typecheck`, `test`, `build`, or (TDD only) `coverage`. In `strict`, append current
|
|
52
73
|
evidence for all four types. When a type genuinely does not apply, record `applicable: false`
|
|
53
74
|
and a non-empty `not_applicable_reason`; it does not count as the required applicable executed
|
|
54
75
|
check, and must not be represented by an invented successful command.
|
|
@@ -58,6 +79,29 @@ do not append a later synthetic pass without rerunning the failed command.
|
|
|
58
79
|
|
|
59
80
|
## Coverage and acceptance
|
|
60
81
|
|
|
82
|
+
For TDD coverage, copy the tool output into `coverage`: `baseline_sha`, `covered_lines`,
|
|
83
|
+
`total_lines`, `percentage`, frozen `threshold`, `report_paths`, and `report_sha256`. Set
|
|
84
|
+
`applicable:false` plus the tool's reason only for zero executable modified lines. A percentage
|
|
85
|
+
below the frozen threshold fails even when ordinary tests pass.
|
|
86
|
+
|
|
87
|
+
Append two coverage records per repository (and per Canonical source task): one with
|
|
88
|
+
`coverage_scope:"local"`, and one with `coverage_scope:"gitlab"`. The GitLab record may be
|
|
89
|
+
appended only after the remote job succeeds and must also include:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"ci": {
|
|
94
|
+
"provider": "gitlab",
|
|
95
|
+
"pipeline_url": "https://gitlab.example/.../pipelines/123",
|
|
96
|
+
"job_name": "changed-line-coverage",
|
|
97
|
+
"status": "success"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Both records must preserve the same task-frozen baseline and threshold. A local-only result,
|
|
103
|
+
pending/failed pipeline, missing job identity, or synthetic remote pass cannot satisfy MEMORY.
|
|
104
|
+
|
|
61
105
|
- Every must-test item has an executed check.
|
|
62
106
|
- Bug fixes include a regression test when project infrastructure exists.
|
|
63
107
|
- Present changed scope, commands, results, and unverified items.
|
|
@@ -24,18 +24,24 @@ the stage graph. Pre-0.9 in-flight tasks may carry `workflow_mode_legacy:true` f
|
|
|
24
24
|
review-evidence compatibility. Only `workflow_mode_legacy_direct_edge:true`, created from old
|
|
25
25
|
lite semantics or an already-persisted edge, permits one IMPLEMENT -> VERIFICATION transition.
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Independent controls
|
|
28
28
|
|
|
29
29
|
- `approval_mode = approve|guard|confirm|auto` controls whether a legal transition waits for a
|
|
30
30
|
user. `confirm` waits only at ANALYSIS -> IMPLEMENT; after that, green REVIEW, VERIFICATION,
|
|
31
31
|
MEMORY, and COMPLETE transitions advance automatically.
|
|
32
32
|
- `workflow_mode = adaptive|fast|standard|strict` controls execution cost and assurance depth.
|
|
33
|
+
- `tdd_enabled` independently activates Java TDD and changed-line coverage. It defaults off;
|
|
34
|
+
`tdd_coverage_threshold` defaults to 90 and accepts integers from 1 to 100.
|
|
33
35
|
|
|
34
36
|
Resolution order for each configured value is session override, then project config, then
|
|
35
37
|
defaults (`guard`, `adaptive`). ANALYSIS resolves `adaptive` to a concrete mode, presents the
|
|
36
38
|
selection and reasons, allows the user to change it within the risk floor, and freezes it when
|
|
37
39
|
ANALYSIS -> IMPLEMENT is applied.
|
|
38
40
|
|
|
41
|
+
TDD resolves with the same session-over-project precedence and freezes its enabled flag and
|
|
42
|
+
threshold on ANALYSIS -> IMPLEMENT. When off, it must add no CI scan, artifacts, commands,
|
|
43
|
+
coverage work, or stronger acceptance. Use `ec-config` for all mode configuration.
|
|
44
|
+
|
|
39
45
|
`confirm` and `auto` do not hide the proposal: show it in the plan. Confirm waits for that one
|
|
40
46
|
plan decision; Auto continues immediately. Both remove later waiting, not quality gates.
|
|
41
47
|
|
|
@@ -13,8 +13,10 @@ then a blank line. Do not render the machine breadcrumbs to the user.
|
|
|
13
13
|
|
|
14
14
|
`{approval-mode}` is the effective approval mode and `{workflow-mode}` is the configured or
|
|
15
15
|
task-frozen execution mode; session overrides take precedence over project settings.
|
|
16
|
+
When effective/frozen TDD is enabled, insert `· **TDD**` immediately after Workflow. When it is
|
|
17
|
+
disabled, omit the TDD segment entirely and preserve the existing status-line format.
|
|
16
18
|
|
|
17
|
-
- Ready: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm,
|
|
19
|
+
- Ready: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, `ec-task-management` to manage tasks, or `ec-config` to inspect or change modes
|
|
18
20
|
- Waiting init: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Waiting init · Use `ec-init` to initialize
|
|
19
21
|
- Active task: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}`
|
|
20
22
|
- Handoff: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
|
|
@@ -31,7 +33,7 @@ Trigger Easy Coding skills with your platform prefix — Codex: `$ec-*`, Qoder:
|
|
|
31
33
|
- `ec-brainstorming` — design exploration before building (hard design gate)
|
|
32
34
|
- `ec-analysis` `ec-implementing` `ec-reviewing` `ec-verification` — workflow stages
|
|
33
35
|
- `ec-memory` — short/long memory archive
|
|
34
|
-
- `ec-task-management` — task
|
|
36
|
+
- `ec-task-management` — task lifecycle panel · `ec-config` — Approval/Workflow/TDD settings · `ec-task-close` — interrupt a task
|
|
35
37
|
- `ec-no-harness` — bypass only Easy Coding for the current session
|
|
36
38
|
- `ec-git` — git discipline · `ec-meta` — understand/customize the harness
|
|
37
39
|
|
|
@@ -45,6 +47,11 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
45
47
|
Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
|
|
46
48
|
automatically. Every new code task runs REVIEW; no mode changes scope, delivery form, or
|
|
47
49
|
evidence gates.
|
|
50
|
+
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
51
|
+
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
52
|
+
freezes both. Disabled TDD adds no CI scan, JaCoCo work, commands, artifacts, or stronger gates.
|
|
53
|
+
Enabled TDD applies only to Java code tasks and requires lifecycle, review, local coverage, and
|
|
54
|
+
GitLab TEST-stage gate evidence.
|
|
48
55
|
- Confirmation-required edges use `pending_transition`; automatic edges use the restricted
|
|
49
56
|
`auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
|
|
50
57
|
VERIFICATION, or MEMORY, and writes no task memory.
|
|
@@ -84,7 +91,7 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
84
91
|
|
|
85
92
|
- Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
|
|
86
93
|
do not hand-edit session files, `current_task`, task `status`, `stage_history`,
|
|
87
|
-
`pending_transition`, workflow
|
|
94
|
+
`pending_transition`, workflow/TDD proposal or freeze fields, `memory_progress`, or `last_agent`.
|
|
88
95
|
- The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
|
|
89
96
|
`--session-file <P>` when changing the current task or stage.
|
|
90
97
|
- Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and
|
|
@@ -13,8 +13,10 @@ then a blank line. Do not render the machine breadcrumbs to the user.
|
|
|
13
13
|
|
|
14
14
|
`{approval-mode}` is the effective approval mode and `{workflow-mode}` is the configured or
|
|
15
15
|
task-frozen execution mode; session overrides take precedence over project settings.
|
|
16
|
+
When effective/frozen TDD is enabled, insert `· **TDD**` immediately after Workflow. When it is
|
|
17
|
+
disabled, omit the TDD segment entirely and preserve the existing status-line format.
|
|
16
18
|
|
|
17
|
-
- Ready: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm,
|
|
19
|
+
- Ready: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, `ec-task-management` to manage tasks, or `ec-config` to inspect or change modes
|
|
18
20
|
- Waiting init: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · Waiting init · Use `ec-init` to initialize
|
|
19
21
|
- Active task: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}`
|
|
20
22
|
- Handoff: > **Easy Coding** · **Approval: {approval-mode}** · **Workflow: {workflow-mode}** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
|
|
@@ -29,7 +31,7 @@ platform prefixes such as `/` or `$`. If no status line is injected, do not inve
|
|
|
29
31
|
- `/ec-brainstorming` — design exploration before building (hard design gate)
|
|
30
32
|
- `/ec-analysis` `/ec-implementing` `/ec-reviewing` `/ec-verification` — workflow stages
|
|
31
33
|
- `/ec-memory` — short/long memory archive
|
|
32
|
-
- `/ec-task-management` — task
|
|
34
|
+
- `/ec-task-management` — task lifecycle panel · `/ec-config` — Approval/Workflow/TDD settings · `/ec-task-close` — interrupt a task
|
|
33
35
|
- `/ec-no-harness` — bypass only Easy Coding for the current session
|
|
34
36
|
- `/ec-git` — git discipline · `/ec-meta` — understand/customize the harness
|
|
35
37
|
|
|
@@ -43,6 +45,11 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
43
45
|
Confirm approval waits only at ANALYSIS -> IMPLEMENT, then advances green later stages
|
|
44
46
|
automatically. Every new code task runs REVIEW; no mode changes scope, delivery form, or
|
|
45
47
|
evidence gates.
|
|
48
|
+
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
49
|
+
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
50
|
+
freezes both. Disabled TDD adds no CI scan, JaCoCo work, commands, artifacts, or stronger gates.
|
|
51
|
+
Enabled TDD applies only to Java code tasks and requires lifecycle, review, local coverage, and
|
|
52
|
+
GitLab TEST-stage gate evidence.
|
|
46
53
|
- Confirmation-required edges use `pending_transition`; automatic edges use the restricted
|
|
47
54
|
`auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
|
|
48
55
|
VERIFICATION, or MEMORY, and writes no task memory.
|
|
@@ -82,7 +89,7 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
82
89
|
|
|
83
90
|
- Workflow state operations go through `{{platform_config_dir}}/hooks/easy_coding_state.py`;
|
|
84
91
|
do not hand-edit session files, `current_task`, task `status`, `stage_history`,
|
|
85
|
-
`pending_transition`, workflow
|
|
92
|
+
`pending_transition`, workflow/TDD proposal or freeze fields, `memory_progress`, or `last_agent`.
|
|
86
93
|
- The hook injects `[easy-coding:session-file:P]`; pass that path to the state script with
|
|
87
94
|
`--session-file <P>` when changing the current task or stage.
|
|
88
95
|
- Workflow session files live at `{{workflow_state_path}}`; the CLI only installs files and
|