easy-coding-harness 0.10.0-beta.1 → 0.10.0-beta.3
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 +28 -0
- package/README.md +8 -4
- package/dist/cli.js +236 -40
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/common/bundled-skills/ec-init/SKILL.md +7 -4
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +3 -2
- package/templates/common/bundled-skills/ec-meta/references/platform-files/README.md +1 -1
- package/templates/common/skills/ec-analysis/SKILL.md +21 -9
- package/templates/common/skills/ec-config/SKILL.md +18 -2
- package/templates/common/skills/ec-memory/SKILL.md +4 -3
- package/templates/common/skills/ec-reviewing/SKILL.md +4 -2
- package/templates/common/skills/ec-tdd-init/SKILL.md +101 -0
- package/templates/common/skills/ec-verification/SKILL.md +19 -23
- package/templates/common/skills/ec-workflow/SKILL.md +11 -5
- package/templates/main-constraint/AGENTS.md.tpl +8 -4
- package/templates/main-constraint/CLAUDE.md.tpl +8 -4
- package/templates/runtime/tools/easy_coding_tdd_readiness.py +306 -0
- package/templates/shared-hooks/easy_coding_state.py +285 -38
package/package.json
CHANGED
|
@@ -85,9 +85,11 @@ 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
|
|
89
|
-
`.easy-coding/tools/easy_coding_java_coverage.py`
|
|
90
|
-
|
|
88
|
+
- **TDD runtime contract**: CLI-owned `config.yaml` has schema 5 TDD defaults and both
|
|
89
|
+
`.easy-coding/tools/easy_coding_java_coverage.py` and
|
|
90
|
+
`.easy-coding/tools/easy_coding_tdd_readiness.py` exist? Missing fields or tools mean
|
|
91
|
+
`easy-coding upgrade` is required; ec-init must not repair them directly. Project-specific
|
|
92
|
+
JaCoCo/GitLab readiness remains owned by `ec-tdd-init`, not `ec-init`.
|
|
91
93
|
- **Platform hook config freshness**: for each installed platform in `.easy-coding/config.yaml`,
|
|
92
94
|
read the platform hook config and verify managed Easy Coding hook commands use the portable
|
|
93
95
|
relative hook launcher bound to this project root's `project.id`. If `project.id` is missing,
|
|
@@ -159,7 +161,8 @@ agent must be able to see what was generated and on what evidence.
|
|
|
159
161
|
you verified exist (read package.json scripts or equivalent — do not guess).
|
|
160
162
|
If effective TDD is disabled, do not inspect JaCoCo or GitLab and do not add TDD-specific
|
|
161
163
|
requirements. If it is enabled for Java, additionally document JUnit/JaCoCo commands,
|
|
162
|
-
production/test source roots, XML report paths,
|
|
164
|
+
production/test source roots, XML report paths, the local acceptance gate, and the generated
|
|
165
|
+
GitLab TEST-stage job as non-blocking automation infrastructure.
|
|
163
166
|
5. **Memory migration probe** — Check for old-format memory files:
|
|
164
167
|
- `.easy-coding/memory/long/MEMORY.md` exists but lacks `memory_schema: 2` frontmatter
|
|
165
168
|
- `.easy-coding/memory/long/BUSINESS.md` or `TECHNICAL.md` missing
|
|
@@ -58,8 +58,9 @@ and config fingerprints, and MEMORY keeps the conditional long-memory threshold
|
|
|
58
58
|
Java TDD is a third independent, default-off control managed by `ec-config`. Session overrides
|
|
59
59
|
project configuration; ANALYSIS freezes enabled state and the 1..100 changed-line threshold
|
|
60
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,
|
|
62
|
-
GitLab TEST-stage
|
|
61
|
+
TDD adds lifecycle evidence, a TDD review dimension, passed local unit-test evidence, and a local
|
|
62
|
+
JaCoCo diff gate. `ec-tdd-init` still generates the equivalent GitLab TEST-stage job, but remote
|
|
63
|
+
pipeline execution and status are not Harness acceptance dependencies.
|
|
63
64
|
|
|
64
65
|
The active task pointer lives in `sessions/{agent}-{session-id}.json` (with an agent-prefixed PPID fallback only
|
|
65
66
|
when a hook payload has no logical session ID);
|
|
@@ -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 15 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
|
|
|
@@ -96,8 +96,14 @@ Code tasks require `test-strategy.md`; explicit `doc`, `analysis`, and `report`
|
|
|
96
96
|
## Optional Java TDD analysis
|
|
97
97
|
|
|
98
98
|
Read `effective_tdd_enabled` and `effective_tdd_coverage_threshold` from the state snapshot.
|
|
99
|
+
For a `type=tdd-init` task, treat frozen TDD as off even if the project/session requests it. That
|
|
100
|
+
task is the sole exception allowed to inspect and plan build/CI coverage infrastructure while TDD
|
|
101
|
+
is off. Its scope is infrastructure only: never plan historical business-test backfill or a
|
|
102
|
+
repository-wide coverage target, and explicitly record `coverage scope: changed production lines`.
|
|
103
|
+
|
|
99
104
|
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.
|
|
105
|
+
extra tests, and do not strengthen the selected Workflow Mode's ordinary acceptance depth. This
|
|
106
|
+
zero-cost rule applies to ordinary tasks, not the explicit `tdd-init` infrastructure task above.
|
|
101
107
|
|
|
102
108
|
When TDD is enabled for a Java code task, make `test-strategy.md` record:
|
|
103
109
|
|
|
@@ -107,18 +113,24 @@ When TDD is enabled for a Java code task, make `test-strategy.md` record:
|
|
|
107
113
|
toward 100% while treating the threshold as the mechanical minimum;
|
|
108
114
|
- feature/bug RED -> GREEN -> REFACTOR evidence, or for pure refactors a pre-change
|
|
109
115
|
characterization GREEN -> post-change GREEN sequence without inventing a RED failure;
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
|
|
116
|
+
- the local unit-test command and local changed-line acceptance command. Record that
|
|
117
|
+
`ec-tdd-init` generated the GitLab TEST-stage job, but remote execution, pipeline identity, and
|
|
118
|
+
status are non-blocking and never require an intermediate commit or push. Include these exact,
|
|
119
|
+
language-independent contract markers: `local_test_gate: required` and
|
|
120
|
+
`remote_ci_acceptance: non-blocking`.
|
|
121
|
+
- current `tdd_readiness_status=ready`; if missing or drifted, stop before IMPLEMENT and route to
|
|
122
|
+
`ec-tdd-init`. Never plan to initialize CI inside an already-enabled TDD feature task.
|
|
113
123
|
|
|
114
124
|
The state API mechanically freezes current Git `HEAD` per repository into `task.tdd_baselines`
|
|
115
|
-
when ANALYSIS advances to IMPLEMENT. Plan
|
|
116
|
-
|
|
117
|
-
|
|
125
|
+
when ANALYSIS advances to IMPLEMENT. Plan the local command with that exact SHA and the frozen
|
|
126
|
+
threshold. The generated GitLab job remains parameterized for infrastructure parity, but the
|
|
127
|
+
Harness acceptance plan never waits for remote CI. Never use a mutable `HEAD` fallback at
|
|
128
|
+
verification time. Non-Canonical TDD is limited to one Git repository; multi-repository TDD must
|
|
129
|
+
use Canonical repository bindings.
|
|
118
130
|
|
|
119
131
|
Also append a `### TDD Mode` section to `dev-spec.md` with enabled state, frozen threshold,
|
|
120
|
-
baseline, local gate,
|
|
121
|
-
is disabled.
|
|
132
|
+
baseline, local unit-test gate, local coverage gate, generated GitLab job as non-blocking
|
|
133
|
+
infrastructure, and lifecycle evidence. Do not add this section when TDD is disabled.
|
|
122
134
|
|
|
123
135
|
If the task is not a Java project, explain that Java-only TDD cannot be activated and obtain a
|
|
124
136
|
mode decision before advancing. The CLI never installs JaCoCo or edits CI automatically.
|
|
@@ -18,7 +18,15 @@ Call `snapshot` and show project, session, effective, and frozen task values for
|
|
|
18
18
|
|
|
19
19
|
Use the returned fields directly, including `project_tdd_enabled`, `session_tdd_enabled`,
|
|
20
20
|
`effective_tdd_enabled`, their threshold counterparts, `task_tdd_enabled`, and the task's
|
|
21
|
-
per-repository `task_tdd_baselines` frozen state.
|
|
21
|
+
per-repository `task_tdd_baselines` frozen state. When `tdd_readiness_status=not_checked` because
|
|
22
|
+
TDD is off, explicitly run the read-only readiness command below before showing readiness:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
This explicit configuration-panel check is the only disabled-mode readiness scan; ordinary hooks
|
|
29
|
+
must not inspect build or CI files while TDD is off.
|
|
22
30
|
|
|
23
31
|
Explain precedence as `session override > project config > defaults`. Defaults are Approval
|
|
24
32
|
`guard`, Workflow `adaptive`, TDD disabled, and TDD changed-line coverage threshold 90%. An active
|
|
@@ -29,6 +37,7 @@ changes affect future tasks and ANALYSIS only.
|
|
|
29
37
|
|
|
30
38
|
Use `easy-coding config` for project settings. The CLI confirms one atomic update of Approval,
|
|
31
39
|
Workflow, TDD, and (when enabled) the threshold. The threshold must be an integer from 1 to 100.
|
|
40
|
+
Enabling TDD is rejected atomically unless `ec-tdd-init` readiness is currently `ready`.
|
|
32
41
|
|
|
33
42
|
## Session configuration
|
|
34
43
|
|
|
@@ -51,4 +60,11 @@ After explicit user selection, use the current logical session file:
|
|
|
51
60
|
Turning TDD off must preserve the existing Fast/Standard/Strict test depth exactly: do not inspect
|
|
52
61
|
CI, request JaCoCo, add TDD artifacts, run coverage commands, or strengthen acceptance criteria.
|
|
53
62
|
When TDD is on, explain that it applies only to Java code tasks and activates RED/GREEN/REFACTOR,
|
|
54
|
-
TDD review, local
|
|
63
|
+
TDD review, a passed local unit-test gate, and local changed-line JaCoCo coverage. `ec-tdd-init`
|
|
64
|
+
still generates the GitLab TEST-stage job, but Harness does not wait for or record remote pipeline
|
|
65
|
+
results as acceptance evidence.
|
|
66
|
+
|
|
67
|
+
Before any project/session enable action, require `tdd_readiness_status=ready`. If it is not ready,
|
|
68
|
+
offer only `ec-tdd-init` or cancellation; never offer or persist "enable now, initialize later".
|
|
69
|
+
Readiness means infrastructure can measure future changed production lines. It does not certify
|
|
70
|
+
repository-wide coverage and does not require tests for unchanged historical code.
|
|
@@ -28,9 +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
|
|
32
|
-
and
|
|
33
|
-
|
|
31
|
+
When frozen TDD is enabled, add its threshold, lifecycle evidence, passed local unit-test result,
|
|
32
|
+
and local changed-line result to the short memory's execution evidence. Remote CI status is not
|
|
33
|
+
part of Harness acceptance or task memory. When TDD is off, omit TDD fields entirely so ordinary
|
|
34
|
+
tasks incur no additional memory work.
|
|
34
35
|
|
|
35
36
|
Ask the state API for `memory-instruction`. Distill only when it returns `action:distill`;
|
|
36
37
|
otherwise record `no-op`. Long memory receives reusable facts only, not file dumps, transient
|
|
@@ -24,8 +24,10 @@ review dimension. A global record without source ownership cannot satisfy the ga
|
|
|
24
24
|
When frozen TDD is enabled, add a passed review dimension named exactly `tdd` for each source
|
|
25
25
|
task. Review whether RED/GREEN/REFACTOR (or characterization GREEN for pure refactors) is genuine,
|
|
26
26
|
tests exercise changed behavior and boundaries, mocks do not merely mirror implementation, and
|
|
27
|
-
the local
|
|
28
|
-
|
|
27
|
+
the local unit-test command genuinely passes while the changed-line coverage command uses the
|
|
28
|
+
frozen baseline and threshold. Generated CI configuration may be reviewed when it changed, but
|
|
29
|
+
remote CI status is never a review or acceptance dependency. When TDD is off, do not add this
|
|
30
|
+
dimension or raise the ordinary review depth.
|
|
29
31
|
|
|
30
32
|
## Depth by workflow mode
|
|
31
33
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ec-tdd-init
|
|
3
|
+
description: Initialize or refresh Java changed-line TDD coverage infrastructure before TDD can be enabled.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ec-tdd-init — Java changed-line gate initialization
|
|
7
|
+
|
|
8
|
+
Communicate in the user's language. This skill owns TDD infrastructure readiness, not historical
|
|
9
|
+
test-debt cleanup. It must never bulk-generate tests for existing business code, require
|
|
10
|
+
repository-wide coverage, or modify production behavior merely to raise coverage.
|
|
11
|
+
|
|
12
|
+
## Non-circular ordering
|
|
13
|
+
|
|
14
|
+
The only legal order is:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
TDD off -> initialize infrastructure -> readiness ready -> user explicitly enables TDD
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Run this skill as a dedicated code task with `type=tdd-init`. The state API always freezes that
|
|
21
|
+
task with `tdd_enabled=false`, even when a legacy project/session setting or a suspended task has
|
|
22
|
+
TDD enabled. Never offer "enable now and initialize later". Never enable TDD automatically after
|
|
23
|
+
initialization.
|
|
24
|
+
|
|
25
|
+
## Read-only preflight
|
|
26
|
+
|
|
27
|
+
First run:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . check
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If it returns `ready`, report the recorded build/CI contract and stop without creating a task.
|
|
34
|
+
The user may then use `ec-config` or `easy-coding config` to enable TDD.
|
|
35
|
+
|
|
36
|
+
If it returns `needs_init`, inspect only the infrastructure needed to form a confirmed plan:
|
|
37
|
+
|
|
38
|
+
- Maven/Gradle files and the existing JUnit runner;
|
|
39
|
+
- JaCoCo XML generation configuration;
|
|
40
|
+
- `.gitlab-ci.yml` and its repository-local include chain;
|
|
41
|
+
- TEST-stage job, JUnit/JaCoCo artifacts, and invocation of
|
|
42
|
+
`.easy-coding/tools/easy_coding_java_coverage.py` with task-supplied baseline/threshold values.
|
|
43
|
+
|
|
44
|
+
Do not measure current whole-project coverage. A project with no historical business tests may
|
|
45
|
+
still become ready when the test runner, JaCoCo reporting, and parameterized changed-line gate
|
|
46
|
+
are functional.
|
|
47
|
+
|
|
48
|
+
## Initialization task
|
|
49
|
+
|
|
50
|
+
After the user confirms the exact infrastructure scope, create one task and route it through the
|
|
51
|
+
ordinary workflow:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py create-task \
|
|
55
|
+
--task-id <safe-unique-id> --type tdd-init \
|
|
56
|
+
--title "Initialize Java changed-line TDD infrastructure" \
|
|
57
|
+
--agent <agent-id> --session-file <P>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
ANALYSIS may plan build files, GitLab CI files, common scripts, and the readiness receipt. It must
|
|
61
|
+
state `historical coverage required: no` and `coverage scope: changed production lines since each
|
|
62
|
+
future task baseline`. IMPLEMENT changes infrastructure only. It must not add tests whose sole
|
|
63
|
+
purpose is to cover unchanged production code.
|
|
64
|
+
|
|
65
|
+
The reusable GitLab job must consume a baseline SHA and threshold supplied for the future task;
|
|
66
|
+
do not hardcode the initialization commit or the default 90% threshold. The same Python coverage
|
|
67
|
+
tool must be usable locally and remotely. This generated job is remote automation infrastructure,
|
|
68
|
+
not a Harness task acceptance dependency: later tasks require local unit-test and coverage
|
|
69
|
+
evidence only, and never wait for a pipeline URL, job identity, or remote success status.
|
|
70
|
+
|
|
71
|
+
## Readiness receipt and verification
|
|
72
|
+
|
|
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
|
|
75
|
+
fingerprints do not change after review. The recorder automatically includes the harness-managed
|
|
76
|
+
`.easy-coding/tools/easy_coding_java_coverage.py` fingerprint:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . record \
|
|
80
|
+
--build-file <pom.xml-or-build.gradle> [--build-file <included-build-file>]... \
|
|
81
|
+
--ci-file .gitlab-ci.yml [--ci-file <repository-local-include>]... \
|
|
82
|
+
--coverage-report <jacoco-xml-pattern> [--coverage-report <pattern>]... \
|
|
83
|
+
--gate-command "python3 .easy-coding/tools/easy_coding_java_coverage.py check --base \$EASY_CODING_TDD_BASE_SHA --threshold \$EASY_CODING_TDD_THRESHOLD" \
|
|
84
|
+
--agent <agent-id>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
REVIEW includes the receipt and its declared infrastructure boundary. VERIFICATION runs the
|
|
88
|
+
frozen Workflow Mode's applicable build/test/CI syntax checks, then performs only the read-only
|
|
89
|
+
readiness check:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
python3 .easy-coding/tools/easy_coding_tdd_readiness.py --cwd . check
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The `VERIFICATION -> MEMORY` gate requires the final check to return `ready`. If any recorded
|
|
96
|
+
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
|
+
the same drift occurs after task completion.
|
|
99
|
+
|
|
100
|
+
After completion, tell the user that TDD remains off and provide the explicit project/session
|
|
101
|
+
enable route. Do not treat readiness as consent to enable it.
|
|
@@ -26,10 +26,12 @@ Read-only tasks never enter this stage. Obtain fresh fingerprints before running
|
|
|
26
26
|
- `strict`: run the project's full applicable lint, typecheck, test, and build gates.
|
|
27
27
|
|
|
28
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.
|
|
29
|
+
coverage tool, inspect GitLab, or add a coverage record. The explicit `type=tdd-init` task is an
|
|
30
|
+
infrastructure exception: run its planned build/CI syntax checks and readiness tool, but do not
|
|
31
|
+
measure repository-wide coverage or append TDD coverage evidence for unchanged production code.
|
|
30
32
|
|
|
31
|
-
When frozen TDD is on, first run the planned Java unit command and generate JaCoCo XML,
|
|
32
|
-
the
|
|
33
|
+
When frozen TDD is on, first run the planned local Java unit command and generate JaCoCo XML,
|
|
34
|
+
then run the deterministic local acceptance gate:
|
|
33
35
|
|
|
34
36
|
```bash
|
|
35
37
|
python3 .easy-coding/tools/easy_coding_java_coverage.py check \
|
|
@@ -41,10 +43,10 @@ The tool measures covered added/modified production Java executable lines only.
|
|
|
41
43
|
comment, blank, import, and test-source lines are excluded by diff/JaCoCo intersection. Missing
|
|
42
44
|
or ambiguous source files and reports older than their modified source fail; zero modified
|
|
43
45
|
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
46
|
Never substitute `HEAD`, a mutable ref, project defaults, or current session settings for the
|
|
46
|
-
task-frozen baseline SHA and threshold.
|
|
47
|
-
|
|
47
|
+
task-frozen baseline SHA and threshold. `ec-tdd-init` still generates a GitLab job that can run
|
|
48
|
+
the same tool, but remote pipeline execution and status are outside Harness acceptance. Never
|
|
49
|
+
request an intermediate commit or push merely to obtain CI evidence.
|
|
48
50
|
|
|
49
51
|
The main Agent may run commands inline. Dispatch verifier sub-agents only when checks are
|
|
50
52
|
independent and parallel execution materially saves time or isolates specialist environments.
|
|
@@ -84,23 +86,17 @@ For TDD coverage, copy the tool output into `coverage`: `baseline_sha`, `covered
|
|
|
84
86
|
`applicable:false` plus the tool's reason only for zero executable modified lines. A percentage
|
|
85
87
|
below the frozen threshold fails even when ordinary tests pass.
|
|
86
88
|
|
|
87
|
-
Append
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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.
|
|
89
|
+
Append one coverage record with `coverage_scope:"local"` per repository (and per Canonical
|
|
90
|
+
source task). The state gate also requires a passed local `check_type:"test"` record for the same
|
|
91
|
+
owner. The coverage record preserves the task-frozen baseline and threshold. Do not append or
|
|
92
|
+
wait for GitLab pipeline evidence; historical remote coverage records are ignored by acceptance
|
|
93
|
+
without modifying or deleting the stored records.
|
|
94
|
+
|
|
95
|
+
For `type=tdd-init`, the infrastructure receipt must already have been recorded during IMPLEMENT
|
|
96
|
+
and reviewed with the rest of the implementation. Run only `easy_coding_tdd_readiness.py check`
|
|
97
|
+
here. If it reports drift, return to IMPLEMENT to refresh the receipt and repeat REVIEW; never
|
|
98
|
+
rewrite it inside VERIFICATION. The state gate requires `ready` before MEMORY. This does not
|
|
99
|
+
enable TDD; report the explicit `ec-config`/`easy-coding config` next step.
|
|
104
100
|
|
|
105
101
|
- Every must-test item has an executed check.
|
|
106
102
|
- Bug fixes include a regression test when project infrastructure exists.
|
|
@@ -39,8 +39,11 @@ selection and reasons, allows the user to change it within the risk floor, and f
|
|
|
39
39
|
ANALYSIS -> IMPLEMENT is applied.
|
|
40
40
|
|
|
41
41
|
TDD resolves with the same session-over-project precedence and freezes its enabled flag and
|
|
42
|
-
threshold on ANALYSIS -> IMPLEMENT.
|
|
43
|
-
|
|
42
|
+
threshold on ANALYSIS -> IMPLEMENT. It may be enabled only after `ec-tdd-init` readiness passes;
|
|
43
|
+
there is no enabled-but-pending-initialization state. A dedicated `tdd-init` task always freezes
|
|
44
|
+
TDD off so it can create or repair the required infrastructure without circular gating. When off,
|
|
45
|
+
ordinary tasks add no CI scan, artifacts, commands, coverage work, or stronger acceptance. Use
|
|
46
|
+
`ec-config` for all mode configuration.
|
|
44
47
|
|
|
45
48
|
`confirm` and `auto` do not hide the proposal: show it in the plan. Confirm waits for that one
|
|
46
49
|
plan decision; Auto continues immediately. Both remove later waiting, not quality gates.
|
|
@@ -87,7 +90,10 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
87
90
|
|
|
88
91
|
When multiple selected tasks depend on the same target, disambiguate creation evidence with
|
|
89
92
|
`<source-task-id>-><dependency-task-id>=<evidence>`.
|
|
90
|
-
4.
|
|
93
|
+
4. When the user explicitly invokes `ec-tdd-init`, let that skill own preflight and create a
|
|
94
|
+
`type=tdd-init` code task only after scope confirmation. Do not reinterpret it as an ordinary
|
|
95
|
+
TDD-enabled feature task and do not require readiness before creating it.
|
|
96
|
+
5. Match the user's intent against `current_task` and the active task list before resuming.
|
|
91
97
|
If the user names or clearly matches another task, confirm the switch and call
|
|
92
98
|
`claim-task --task-id <id> --agent <agent-id> --session-file <P>`. Do not execute task A
|
|
93
99
|
under task B's request.
|
|
@@ -99,10 +105,10 @@ plan decision; Auto continues immediately. Both remove later waiting, not qualit
|
|
|
99
105
|
to the requested deliverable. Feature, bugfix, refactor, performance, and workflow changes
|
|
100
106
|
are code tasks. Use `doc`, `analysis`, or `report` only when the user explicitly requested
|
|
101
107
|
a no-code deliverable; never downgrade a code request to the read-only completion path.
|
|
102
|
-
|
|
108
|
+
6. Resume the matched/current task, then load only state-relevant assets. Do not read five full
|
|
103
109
|
memories at every startup; ANALYSIS searches memory metadata and opens relevant entries on
|
|
104
110
|
demand.
|
|
105
|
-
|
|
111
|
+
7. If another Agent last owned the task, summarize the stored handoff before continuing.
|
|
106
112
|
|
|
107
113
|
## Stage dispatch
|
|
108
114
|
|
|
@@ -33,7 +33,7 @@ Trigger Easy Coding skills with your platform prefix — Codex: `$ec-*`, Qoder:
|
|
|
33
33
|
- `ec-brainstorming` — design exploration before building (hard design gate)
|
|
34
34
|
- `ec-analysis` `ec-implementing` `ec-reviewing` `ec-verification` — workflow stages
|
|
35
35
|
- `ec-memory` — short/long memory archive
|
|
36
|
-
- `ec-task-management` — task lifecycle panel · `ec-config` — Approval/Workflow/TDD settings · `ec-task-close` — interrupt a task
|
|
36
|
+
- `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
37
|
- `ec-no-harness` — bypass only Easy Coding for the current session
|
|
38
38
|
- `ec-git` — git discipline · `ec-meta` — understand/customize the harness
|
|
39
39
|
|
|
@@ -49,9 +49,13 @@ First run `ec-init`; daily work goes through `ec-workflow`.
|
|
|
49
49
|
evidence gates.
|
|
50
50
|
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
51
51
|
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
52
|
-
freezes both.
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
|
|
53
|
+
there is no enable-now/init-later state. The dedicated `tdd-init` task always freezes TDD off and
|
|
54
|
+
initializes only changed-line coverage infrastructure, never historical business-test coverage.
|
|
55
|
+
Disabled TDD adds no CI scan, JaCoCo work, commands, artifacts, or stronger gates. Enabled TDD
|
|
56
|
+
applies only to Java code tasks and requires lifecycle, review, passed local unit tests, and
|
|
57
|
+
local coverage for production lines changed since the task baseline. `ec-tdd-init` still
|
|
58
|
+
generates GitLab TEST-stage automation, but remote CI status is not Harness acceptance evidence.
|
|
55
59
|
- Confirmation-required edges use `pending_transition`; automatic edges use the restricted
|
|
56
60
|
`auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
|
|
57
61
|
VERIFICATION, or MEMORY, and writes no task memory.
|
|
@@ -31,7 +31,7 @@ platform prefixes such as `/` or `$`. If no status line is injected, do not inve
|
|
|
31
31
|
- `/ec-brainstorming` — design exploration before building (hard design gate)
|
|
32
32
|
- `/ec-analysis` `/ec-implementing` `/ec-reviewing` `/ec-verification` — workflow stages
|
|
33
33
|
- `/ec-memory` — short/long memory archive
|
|
34
|
-
- `/ec-task-management` — task lifecycle panel · `/ec-config` — Approval/Workflow/TDD settings · `/ec-task-close` — interrupt a task
|
|
34
|
+
- `/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
35
|
- `/ec-no-harness` — bypass only Easy Coding for the current session
|
|
36
36
|
- `/ec-git` — git discipline · `/ec-meta` — understand/customize the harness
|
|
37
37
|
|
|
@@ -47,9 +47,13 @@ First run `/ec-init`; daily work goes through `/ec-workflow`.
|
|
|
47
47
|
evidence gates.
|
|
48
48
|
- TDD is session override > project `behavior.tdd_enabled` > `false`; its changed-line threshold
|
|
49
49
|
is session override > project `behavior.tdd_coverage_threshold` > `90`. ANALYSIS -> IMPLEMENT
|
|
50
|
-
freezes both.
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
freezes both. TDD may be enabled only after `ec-tdd-init` records valid infrastructure readiness;
|
|
51
|
+
there is no enable-now/init-later state. The dedicated `tdd-init` task always freezes TDD off and
|
|
52
|
+
initializes only changed-line coverage infrastructure, never historical business-test coverage.
|
|
53
|
+
Disabled TDD adds no CI scan, JaCoCo work, commands, artifacts, or stronger gates. Enabled TDD
|
|
54
|
+
applies only to Java code tasks and requires lifecycle, review, passed local unit tests, and
|
|
55
|
+
local coverage for production lines changed since the task baseline. `ec-tdd-init` still
|
|
56
|
+
generates GitLab TEST-stage automation, but remote CI status is not Harness acceptance evidence.
|
|
53
57
|
- Confirmation-required edges use `pending_transition`; automatic edges use the restricted
|
|
54
58
|
`auto-transition` API. A read-only task creates no test-strategy.md, never enters REVIEW,
|
|
55
59
|
VERIFICATION, or MEMORY, and writes no task memory.
|