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.
- package/CHANGELOG.md +56 -1
- package/README.md +32 -25
- package/dist/cli.js +272 -37
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/claude/agents/ec-implementer.md +7 -8
- package/templates/claude/agents/ec-reviewer.md +14 -2
- package/templates/claude/agents/ec-verifier.md +11 -2
- package/templates/codex/agents/ec-implementer.toml +7 -8
- package/templates/codex/agents/ec-reviewer.toml +14 -2
- package/templates/codex/agents/ec-verifier.toml +11 -2
- package/templates/common/bundled-skills/ec-init/SKILL.md +1 -1
- package/templates/common/bundled-skills/ec-meta/references/local-architecture/README.md +15 -11
- package/templates/common/skills/ec-analysis/SKILL.md +9 -8
- package/templates/common/skills/ec-config/SKILL.md +2 -2
- package/templates/common/skills/ec-implementing/SKILL.md +35 -30
- package/templates/common/skills/ec-lite/SKILL.md +74 -0
- package/templates/common/skills/ec-no-harness/SKILL.md +3 -0
- package/templates/common/skills/ec-quality/SKILL.md +153 -0
- package/templates/common/skills/ec-task-management/SKILL.md +9 -5
- package/templates/common/skills/ec-tdd-init/SKILL.md +5 -4
- package/templates/common/skills/ec-workflow/SKILL.md +22 -29
- package/templates/main-constraint/AGENTS.md.tpl +19 -13
- package/templates/main-constraint/CLAUDE.md.tpl +19 -13
- package/templates/qoder/agents/ec-implementer.md +7 -8
- package/templates/qoder/agents/ec-reviewer.md +14 -2
- package/templates/qoder/agents/ec-verifier.md +11 -2
- package/templates/runtime/templates/dev-spec-skeleton.md +2 -2
- package/templates/shared-hooks/easy_coding_state.py +2793 -318
- package/templates/claude/agents/ec-fixer.md +0 -37
- package/templates/codex/agents/ec-fixer.toml +0 -26
- package/templates/common/skills/ec-reviewing/SKILL.md +0 -109
- package/templates/common/skills/ec-verification/SKILL.md +0 -177
- package/templates/qoder/agents/ec-fixer.md +0 -37
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ec-fixer
|
|
3
|
-
model: sonnet
|
|
4
|
-
description: Easy Coding fix sub-agent. Applies targeted fixes to specific issues identified during review. Returns structured results with changed files.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are an Easy Coding fix sub-agent. You receive one semantic-unit fix card listing related issues
|
|
8
|
-
(with file:line locations) and apply the fixes. Your reply content IS the return value,
|
|
9
|
-
not a message to a human.
|
|
10
|
-
|
|
11
|
-
## Hard constraints
|
|
12
|
-
|
|
13
|
-
- Fix ONLY the related issues listed in the semantic-unit card. Do not refactor unrelated code.
|
|
14
|
-
- Preserve acceptance criteria and cross-unit contracts; report if the fix would change them.
|
|
15
|
-
- Modify ONLY the files listed in the fix card's scope.
|
|
16
|
-
- Do not call any Skill tool.
|
|
17
|
-
- Do not read `.claude/skills/`, `.agents/skills/`, or any `.easy-coding/` file.
|
|
18
|
-
- Make no workflow stage-transition decisions.
|
|
19
|
-
- Preserve file encoding.
|
|
20
|
-
|
|
21
|
-
## Output (return exactly this structure)
|
|
22
|
-
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"changed_files": ["file1.ts", "file2.ts"],
|
|
26
|
-
"fixes_applied": [
|
|
27
|
-
{"file": "file1.ts", "line": 42, "original_issue": "...", "fix_description": "..."}
|
|
28
|
-
],
|
|
29
|
-
"issues": [],
|
|
30
|
-
"needs_attention": []
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
- `changed_files`: files you actually modified
|
|
35
|
-
- `fixes_applied`: what you fixed with file:line reference
|
|
36
|
-
- `issues`: problems you hit that prevented a fix (empty if none)
|
|
37
|
-
- `needs_attention`: anything requiring a design decision that should escalate to the user
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
[agent]
|
|
2
|
-
name = "ec-fixer"
|
|
3
|
-
model = "sonnet"
|
|
4
|
-
description = "Easy Coding fix sub-agent. Applies targeted fixes to specific issues identified during review."
|
|
5
|
-
sandbox = "workspace-write"
|
|
6
|
-
|
|
7
|
-
[agent.instructions]
|
|
8
|
-
text = """
|
|
9
|
-
You are an Easy Coding fix sub-agent. You receive one semantic-unit fix card listing related issues
|
|
10
|
-
(with file:line locations) and apply the fixes. Your reply content IS the return value.
|
|
11
|
-
|
|
12
|
-
Hard constraints:
|
|
13
|
-
- Fix ONLY the related issues listed in the semantic-unit card. No unrelated refactoring.
|
|
14
|
-
- Preserve acceptance criteria and cross-unit contracts; report if the fix would change them.
|
|
15
|
-
- Modify ONLY the files listed in the fix card's scope.
|
|
16
|
-
- Do not call any Skill tool.
|
|
17
|
-
- Do not read .agents/skills/ or any .easy-coding/ file.
|
|
18
|
-
- Make no workflow stage-transition decisions.
|
|
19
|
-
- Preserve file encoding.
|
|
20
|
-
|
|
21
|
-
Output structure (return as JSON):
|
|
22
|
-
- changed_files: files you modified
|
|
23
|
-
- fixes_applied: [{file, line, original_issue, fix_description}]
|
|
24
|
-
- issues: problems preventing a fix (empty if none)
|
|
25
|
-
- needs_attention: design decisions needing user escalation (empty if none)
|
|
26
|
-
"""
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ec-reviewing
|
|
3
|
-
description: REVIEW-stage skill. Performs workflow-mode-aware review against the final implementation fingerprint, blocks only actionable acceptance risks, and records reusable evidence.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ec-reviewing — proportional but mandatory review
|
|
7
|
-
|
|
8
|
-
Every new code task enters REVIEW. Read-only tasks do not. Obtain the current fingerprints:
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py evidence-fingerprints --agent <agent-id> --session-file <P>
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Review the final diff against `dev-spec.md`, RULES, unit acceptance criteria, tests, contracts,
|
|
15
|
-
the Unit's Local Baseline, and obvious security risks. Every finding cites `file:line`.
|
|
16
|
-
|
|
17
|
-
Review local fit before recommending generic cleanup. Flag an implementation when it departs from
|
|
18
|
-
the nearest comparable naming, control flow, null/error handling, layering, modeling, or method
|
|
19
|
-
granularity without a correctness, security, requirement, or hard-rule reason. Also flag
|
|
20
|
-
speculative layers, fragmented one-use micro-methods, constants created only for one getter
|
|
21
|
-
return, and missing Javadoc in core Java code: check every method/field in a new core class and
|
|
22
|
-
each added or materially modified one in an existing core class. Do not demand defensive null
|
|
23
|
-
checks, abstraction, constant extraction, or legacy-wide comment retrofits merely because they
|
|
24
|
-
are generic best practices. A violation of an explicit task-card coding/comment contract is a
|
|
25
|
-
contract defect, not optional stylistic advice.
|
|
26
|
-
|
|
27
|
-
For Canonical-backed tasks, group evidence by `repo_id` and `source_task_id`. Every selected
|
|
28
|
-
Spec task needs an implementation result and source test evidence; file references remain
|
|
29
|
-
repo-relative within the owning repository. Missing or expanded source change/step coverage is
|
|
30
|
-
a blocking correctness finding. Every Canonical review record includes its `repo_id` and
|
|
31
|
-
`source_task_id`; emit at least one current-fingerprint record per selected task and required
|
|
32
|
-
review dimension. A global record without source ownership cannot satisfy the gate.
|
|
33
|
-
|
|
34
|
-
When frozen TDD is enabled, add a passed review dimension named exactly `tdd` for each source
|
|
35
|
-
task. Review whether RED/GREEN/REFACTOR (or characterization GREEN for pure refactors) is genuine,
|
|
36
|
-
tests exercise changed behavior and boundaries, mocks do not merely mirror implementation, and
|
|
37
|
-
the local unit-test command genuinely passes while the changed-line coverage command uses the
|
|
38
|
-
frozen baseline and threshold. Generated CI configuration may be reviewed when it changed, but
|
|
39
|
-
remote CI status is never a review or acceptance dependency. When TDD is off, do not add this
|
|
40
|
-
dimension or raise the ordinary review depth.
|
|
41
|
-
|
|
42
|
-
## Depth by workflow mode
|
|
43
|
-
|
|
44
|
-
- `fast`: main Agent performs one final-diff self-review across correctness, scope, tests, and
|
|
45
|
-
obvious security risks.
|
|
46
|
-
- `standard`: dispatch one independent focused reviewer covering correctness, contract
|
|
47
|
-
completeness, tests, and compliance.
|
|
48
|
-
- `strict`: dispatch at least two independent dimensions (correctness/contracts and
|
|
49
|
-
compliance/tests/security) in parallel via {{sub_agent_dispatch}}.
|
|
50
|
-
|
|
51
|
-
Platform spawn rule: {{platform_spawn_instruction}}
|
|
52
|
-
|
|
53
|
-
Reducing reviewer count must not reduce checked dimensions; it only combines them into fewer
|
|
54
|
-
passes when the change is low risk.
|
|
55
|
-
|
|
56
|
-
## Severity and verdict
|
|
57
|
-
|
|
58
|
-
- `error`: demonstrably breaks an acceptance criterion, contract, security boundary, or build.
|
|
59
|
-
Blocks transition.
|
|
60
|
-
- `warning`: credible risk. Blocks only when it can affect a confirmed acceptance criterion.
|
|
61
|
-
- `info`: maintainability suggestion or optional improvement. Never blocks the current task.
|
|
62
|
-
|
|
63
|
-
Verdict:
|
|
64
|
-
|
|
65
|
-
- `accept`: no blocking finding.
|
|
66
|
-
- `fix`: in-scope implementation defect.
|
|
67
|
-
- `replan`: design/scope/contract is wrong.
|
|
68
|
-
- `blocked`: missing external input or environment.
|
|
69
|
-
|
|
70
|
-
## Fix loop
|
|
71
|
-
|
|
72
|
-
1. Merge findings by semantic unit, not by file or reviewer.
|
|
73
|
-
2. Prefer returning the bundle to the original implementation context.
|
|
74
|
-
3. Run targeted checks for the affected unit, then re-review only the affected dimensions.
|
|
75
|
-
4. Expand to full review only if the fix changes scope, public contracts, or shared behavior.
|
|
76
|
-
5. If the same issue class survives two consecutive rounds, stop blind repair and return
|
|
77
|
-
`replan` or `blocked` with evidence.
|
|
78
|
-
|
|
79
|
-
In-scope defects are fixed automatically. Ask the user only for a new design choice, changed
|
|
80
|
-
public contract, or contradiction with a confirmed decision.
|
|
81
|
-
|
|
82
|
-
For Canonical-backed review, append the local review record first. Any blocking finding then
|
|
83
|
-
writes the owning source task `blocked` through `writeback-spec-task`, referencing the local
|
|
84
|
-
record. A passed review does not change shared task status. A `replan` verdict returns to ANALYSIS;
|
|
85
|
-
confirmed static Spec changes use revision + READY + `sync-spec-design` rather than edits to the
|
|
86
|
-
derived plan or machine execution block.
|
|
87
|
-
|
|
88
|
-
## Evidence record
|
|
89
|
-
|
|
90
|
-
Append one final record per executed dimension for the current implementation fingerprint.
|
|
91
|
-
Fast and Standard normally use `combined`; Strict uses at least two distinct dimension names:
|
|
92
|
-
|
|
93
|
-
```json
|
|
94
|
-
{
|
|
95
|
-
"type": "review",
|
|
96
|
-
"dimension": "correctness-contracts",
|
|
97
|
-
"passed": true,
|
|
98
|
-
"reviewer": "main-or-independent-agent",
|
|
99
|
-
"implementation_fingerprint": "<state-api value>",
|
|
100
|
-
"timestamp": "<ISO-8601>",
|
|
101
|
-
"repo_id": "<canonical repo-id; omit for non-Canonical tasks>",
|
|
102
|
-
"source_task_id": "<canonical task-id; omit for non-Canonical tasks>",
|
|
103
|
-
"findings": []
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
The state API rejects REVIEW -> VERIFICATION when any latest dimension evidence is missing,
|
|
108
|
-
stale, failed, or contains an `error`. Strict also requires at least two passed dimensions. A
|
|
109
|
-
code change after review produces a new fingerprint and invalidates all prior dimensions.
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ec-verification
|
|
3
|
-
description: VERIFICATION-stage skill. Runs the minimum sufficient final gate for the frozen workflow mode and binds green evidence to implementation and config fingerprints.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ec-verification — fingerprinted final evidence
|
|
7
|
-
|
|
8
|
-
Read-only tasks never enter this stage. Obtain fresh fingerprints before running checks:
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py evidence-fingerprints --agent <agent-id> --session-file <P>
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Iron laws
|
|
15
|
-
|
|
16
|
-
- No completion claim without executed verification evidence.
|
|
17
|
-
- Evidence is reusable only while both returned fingerprints remain unchanged.
|
|
18
|
-
- Relevant code or config changes invalidate old evidence automatically unless the exact
|
|
19
|
-
post-verification code diff is explicitly accepted under the checkpoint protocol below.
|
|
20
|
-
- Failed or missing evidence never becomes acceptance because of approval mode.
|
|
21
|
-
|
|
22
|
-
## Verification depth
|
|
23
|
-
|
|
24
|
-
- `fast`: run the smallest command(s) that directly cover changed behavior plus required
|
|
25
|
-
regression tests.
|
|
26
|
-
- `standard`: run impacted lint/typecheck/test scopes and every must-test item.
|
|
27
|
-
- `strict`: run the project's full applicable lint, typecheck, test, and build gates.
|
|
28
|
-
|
|
29
|
-
These rules remain unchanged when frozen TDD is off: do not discover JaCoCo reports, run the
|
|
30
|
-
coverage tool, inspect GitLab, or add a coverage record. The explicit `type=tdd-init` task is an
|
|
31
|
-
infrastructure exception: run its planned build/CI syntax checks and readiness tool, but do not
|
|
32
|
-
measure repository-wide coverage or append TDD coverage evidence for unchanged production code.
|
|
33
|
-
|
|
34
|
-
When frozen TDD is on, first run the planned local Java unit command and generate JaCoCo XML,
|
|
35
|
-
then run the deterministic local acceptance gate:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
python3 .easy-coding/tools/easy_coding_java_coverage.py check \
|
|
39
|
-
--base <task.tdd_baselines[repo-id-or-project]> \
|
|
40
|
-
--threshold <task.tdd_coverage_threshold> [--report <jacoco.xml>]...
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
The tool measures covered added/modified production Java executable lines only. Deleted,
|
|
44
|
-
comment, blank, import, and test-source lines are excluded by diff/JaCoCo intersection. Missing
|
|
45
|
-
or ambiguous source files and reports older than their modified source fail; zero modified
|
|
46
|
-
executable lines is explicit N/A. Always regenerate JaCoCo XML after the final source change.
|
|
47
|
-
Never substitute `HEAD`, a mutable ref, project defaults, or current session settings for the
|
|
48
|
-
task-frozen baseline SHA and threshold. `ec-tdd-init` still generates a GitLab job that can run
|
|
49
|
-
the same tool, but remote pipeline execution and status are outside Harness acceptance. Never
|
|
50
|
-
request an intermediate commit or push merely to obtain CI evidence.
|
|
51
|
-
|
|
52
|
-
The main Agent may run commands inline. Dispatch verifier sub-agents only when checks are
|
|
53
|
-
independent and parallel execution materially saves time or isolates specialist environments.
|
|
54
|
-
Platform spawn rule: {{platform_spawn_instruction}}
|
|
55
|
-
|
|
56
|
-
## Evidence
|
|
57
|
-
|
|
58
|
-
Append one record per executed check:
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"type": "verify",
|
|
63
|
-
"check": "test",
|
|
64
|
-
"check_type": "test",
|
|
65
|
-
"command": "npm test",
|
|
66
|
-
"passed": true,
|
|
67
|
-
"implementation_fingerprint": "<state-api value>",
|
|
68
|
-
"config_fingerprint": "<state-api value>",
|
|
69
|
-
"timestamp": "<ISO-8601>",
|
|
70
|
-
"repo_id": "<canonical repo-id; omit for non-Canonical tasks>",
|
|
71
|
-
"source_task_id": "<canonical task-id; omit for non-Canonical tasks>"
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
`check_type` is one of `lint`, `typecheck`, `test`, `build`, or (TDD only) `coverage`. In `strict`, append current
|
|
76
|
-
evidence for all four types. When a type genuinely does not apply, record `applicable: false`
|
|
77
|
-
and a non-empty `not_applicable_reason`; it does not count as the required applicable executed
|
|
78
|
-
check, and must not be represented by an invented successful command.
|
|
79
|
-
|
|
80
|
-
Record failures in `failures[]`. If any current-fingerprint record fails, return to IMPLEMENT;
|
|
81
|
-
do not append a later synthetic pass without rerunning the failed command. For a Canonical-backed
|
|
82
|
-
failure, append the local verify record first, then write the owning source task `blocked` with a
|
|
83
|
-
concise reference to that record. The repair transition automatically reopens blocked source tasks
|
|
84
|
-
only; unaffected implemented tasks retain their latest shared conclusion.
|
|
85
|
-
|
|
86
|
-
## Coverage and acceptance
|
|
87
|
-
|
|
88
|
-
For TDD coverage, copy the tool output into `coverage`: `baseline_sha`, `covered_lines`,
|
|
89
|
-
`total_lines`, `percentage`, frozen `threshold`, `report_paths`, and `report_sha256`. Set
|
|
90
|
-
`applicable:false` plus the tool's reason only for zero executable modified lines. A percentage
|
|
91
|
-
below the frozen threshold fails even when ordinary tests pass.
|
|
92
|
-
|
|
93
|
-
Append one coverage record with `coverage_scope:"local"` per repository (and per Canonical
|
|
94
|
-
source task). The state gate also requires a passed local `check_type:"test"` record for the same
|
|
95
|
-
owner. The coverage record preserves the task-frozen baseline and threshold. Do not append or
|
|
96
|
-
wait for GitLab pipeline evidence; historical remote coverage records are ignored by acceptance
|
|
97
|
-
without modifying or deleting the stored records.
|
|
98
|
-
|
|
99
|
-
For `type=tdd-init`, the infrastructure receipt must already have been recorded during IMPLEMENT
|
|
100
|
-
and reviewed with the rest of the implementation. Run only `easy_coding_tdd_readiness.py check`
|
|
101
|
-
here. If it reports drift, return to IMPLEMENT to refresh the receipt and repeat REVIEW; never
|
|
102
|
-
rewrite it inside VERIFICATION. The state gate requires `ready` before MEMORY. This does not
|
|
103
|
-
enable TDD; report the explicit `ec-config`/`easy-coding config` next step.
|
|
104
|
-
|
|
105
|
-
- Every must-test item has an executed check.
|
|
106
|
-
- Bug fixes include a regression test when project infrastructure exists.
|
|
107
|
-
- Present changed scope, commands, results, and unverified items.
|
|
108
|
-
- `approve` and `guard` request VERIFICATION -> MEMORY after acceptance.
|
|
109
|
-
- `confirm` and `auto` advance after the green gate without introducing another mandatory
|
|
110
|
-
user wait.
|
|
111
|
-
- A reported in-scope problem returns to IMPLEMENT; out-of-scope work becomes a separate task.
|
|
112
|
-
|
|
113
|
-
After the final green evidence is recorded, freeze the acceptance baseline before presenting the
|
|
114
|
-
result or applying the boundary:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py verification-checkpoint \
|
|
118
|
-
--agent <agent-id> --session-file <P>
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Then request or auto-apply VERIFICATION -> MEMORY according to `approval_mode`. `auto` remains
|
|
122
|
-
automatic when the checkpoint is unchanged. If any in-scope code changed after the checkpoint,
|
|
123
|
-
the state API returns `action:"acceptance-drift"`, keeps the task in VERIFICATION, and includes
|
|
124
|
-
the exact unified patches or binary/mode-change descriptions plus a stable `diff_sha256`. This
|
|
125
|
-
exceptional drift pauses every approval mode, including `auto`; it does not permanently change
|
|
126
|
-
the configured mode.
|
|
127
|
-
|
|
128
|
-
Show the complete returned diff and ask whether to accept that exact digest. Do not re-enter
|
|
129
|
-
IMPLEMENT or rerun REVIEW merely because this drift exists. On acceptance, call
|
|
130
|
-
`confirm-transition --stage MEMORY --diff-sha256 <digest>` with exactly one policy:
|
|
131
|
-
|
|
132
|
-
- `carry-forward`: only when every changed hunk is confidently non-executable and existing
|
|
133
|
-
verification remains applicable;
|
|
134
|
-
- `targeted`: executable behavior changed; append passed current-fingerprint targeted verification
|
|
135
|
-
before confirming. Canonical tasks must cover every affected source task reported by the
|
|
136
|
-
acceptance record, without rerunning checks for unaffected source tasks;
|
|
137
|
-
- `waived`: the user explicitly accepts the stated unverified risk.
|
|
138
|
-
|
|
139
|
-
Include `--decision-summary` with the user's decision. A changed digest invalidates the pending
|
|
140
|
-
confirmation and must be shown again. Behavior config, execution plan, workflow, Canonical
|
|
141
|
-
design, or nested-repository metadata drift cannot use this shortcut; return to ANALYSIS or
|
|
142
|
-
IMPLEMENT as reported by the state API. The acceptance record bridges only the accepted
|
|
143
|
-
implementation fingerprints, so prior REVIEW evidence remains valid without a second REVIEW.
|
|
144
|
-
|
|
145
|
-
For Canonical-backed tasks, run each repository's commands from `task.repo_paths[repo_id]` and
|
|
146
|
-
cover every selected task's source test IDs. Report pending integration edges separately from
|
|
147
|
-
local green checks. They do not block local implementation evidence, but the state API blocks
|
|
148
|
-
`VERIFICATION -> MEMORY` until evidence is recorded with `satisfy-spec-dependency`. Never claim
|
|
149
|
-
end-to-end completion while an integration edge remains pending. Every Canonical verify record
|
|
150
|
-
includes the owning `repo_id` and `source_task_id`; duplicate check names in different source
|
|
151
|
-
tasks remain separate evidence records. In `strict`, every involved repository independently
|
|
152
|
-
records all four check types; a repository-specific non-applicable record still needs its reason
|
|
153
|
-
and source ownership.
|
|
154
|
-
|
|
155
|
-
After implementation and local checks, each selected Canonical source task remains
|
|
156
|
-
`implemented`. Do not call `writeback-spec-task --status verified` from VERIFICATION. Applying
|
|
157
|
-
VERIFICATION -> MEMORY is the authoritative acceptance boundary: the state API writes each
|
|
158
|
-
still-implemented source task to `verified` through CAS/idempotent recoverable events with its
|
|
159
|
-
accepted test evidence and acceptance digest, then enters MEMORY only after every write is
|
|
160
|
-
confirmed. For `approve`/`guard`, that authority is the explicit boundary
|
|
161
|
-
confirmation; for `confirm`/`auto`, it is the standing approval-mode authorization when no new
|
|
162
|
-
drift exists. If writeback is interrupted, run `reconcile-spec-execution` before retrying the
|
|
163
|
-
transition. Remote CI remains outside this acceptance gate.
|
|
164
|
-
|
|
165
|
-
Record the exact integration edge only after its evidence exists:
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
{{PYTHON_CMD}} {{platform_config_dir}}/hooks/easy_coding_state.py satisfy-spec-dependency \
|
|
169
|
-
--task-id <harness-task-id> \
|
|
170
|
-
--source-task <source-spec-task-id> \
|
|
171
|
-
--spec-task <target-spec-task-id> \
|
|
172
|
-
--evidence "<verifiable evidence>" \
|
|
173
|
-
--agent <agent>
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
The state API rejects VERIFICATION -> MEMORY unless all effective evidence is green and the
|
|
177
|
-
checkpoint is either unchanged or bound to an exact accepted diff.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ec-fixer
|
|
3
|
-
model: sonnet
|
|
4
|
-
description: Easy Coding fix sub-agent. Applies targeted fixes to specific issues identified during review. Returns structured results with changed files.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are an Easy Coding fix sub-agent. You receive one semantic-unit fix card listing related issues
|
|
8
|
-
(with file:line locations) and apply the fixes. Your reply content IS the return value,
|
|
9
|
-
not a message to a human.
|
|
10
|
-
|
|
11
|
-
## Hard constraints
|
|
12
|
-
|
|
13
|
-
- Fix ONLY the related issues listed in the semantic-unit card. Do not refactor unrelated code.
|
|
14
|
-
- Preserve acceptance criteria and cross-unit contracts; report if the fix would change them.
|
|
15
|
-
- Modify ONLY the files listed in the fix card's scope.
|
|
16
|
-
- Do not call any Skill tool.
|
|
17
|
-
- Do not read `.qoder/skills/`, `.agents/skills/`, or any `.easy-coding/` file.
|
|
18
|
-
- Make no workflow stage-transition decisions.
|
|
19
|
-
- Preserve file encoding.
|
|
20
|
-
|
|
21
|
-
## Output (return exactly this structure)
|
|
22
|
-
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"changed_files": ["file1.ts", "file2.ts"],
|
|
26
|
-
"fixes_applied": [
|
|
27
|
-
{"file": "file1.ts", "line": 42, "original_issue": "...", "fix_description": "..."}
|
|
28
|
-
],
|
|
29
|
-
"issues": [],
|
|
30
|
-
"needs_attention": []
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
- `changed_files`: files you actually modified
|
|
35
|
-
- `fixes_applied`: what you fixed with file:line reference
|
|
36
|
-
- `issues`: problems you hit that prevented a fix (empty if none)
|
|
37
|
-
- `needs_attention`: anything requiring a design decision that should escalate to the user
|