scrumrun 3.0.2 → 3.0.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 +6 -0
- package/CORE.md +1 -0
- package/README.md +2 -2
- package/SPEC.md +1 -1
- package/docs/COMMANDS.md +2 -0
- package/lib/runtime/orchestrator.js +1 -1
- package/package.json +1 -1
- package/templates/project/AGENTS.md +1 -0
- package/templates/shared/skills/scrumrun/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes follow Semantic Versioning.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 3.0.3 - 2026-08-31
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **Scoped validation, not test bureaucracy.** New Tasks now state that only checks explicitly required by the owner, Acceptance Criteria, or an active Guardrail can block completion. Missing optional E2E/integration/review coverage is recorded as a follow-up or risk rather than turning a validated delivery into a failed Run. Generated agent instructions and the method contract enforce the same rule.
|
|
12
|
+
|
|
7
13
|
## 3.0.2 - 2026-08-31
|
|
8
14
|
|
|
9
15
|
### Added
|
package/CORE.md
CHANGED
|
@@ -183,6 +183,7 @@ Rules:
|
|
|
183
183
|
- the Run ledger is operational history; Task synchronizes current status without copying the Run event;
|
|
184
184
|
- validation, learning, completion, failure, block, and resume require a reason or evidence;
|
|
185
185
|
- validation must match the risk and acceptance criteria;
|
|
186
|
+
- tests, reviews, and environments are completion gates only when explicitly required by the owner, the Task's Acceptance Criteria, or an active Guardrail; missing optional coverage is a follow-up/risk, never a reason by itself to fail or block an otherwise accepted Task;
|
|
186
187
|
- each Task declares its `## Acceptance Criteria` before execution; check them off as evidence, never mark done on vibes;
|
|
187
188
|
- configured reviews run before completion;
|
|
188
189
|
- every deferred policy result is persisted as a Run Guardrail obligation;
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
ScrumRun gives an agent a small command surface and a precise project memory: what should be done, how each attempt happened, which decisions constrain the code, and why the architecture exists in its current form.
|
|
6
6
|
|
|
7
|
-
**Package:** `3.0.
|
|
7
|
+
**Package:** `3.0.3` · **Method target:** `2.0.0` · **Runtime:** Node.js `>=22.13.0` · **License:** MIT
|
|
8
8
|
|
|
9
9
|
**New here?** Read the [Quickstart](docs/QUICKSTART.md) — first Run in under 10 minutes, no `SPEC.md` reading required. Full docs map in [`docs/INDEX.md`](docs/INDEX.md).
|
|
10
10
|
|
|
@@ -91,7 +91,7 @@ Every approved Task carries an `## Acceptance Criteria` section so "done" is def
|
|
|
91
91
|
scrumrun plan run --finalize RUN-001
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
The checkpoint validates the complete delta, policy, protected paths, secret boundary,
|
|
94
|
+
The checkpoint validates the complete delta, policy, protected paths, secret boundary, Task summary, and every applicable Guardrail before writing the Run ledger and synchronizing the Task. Failed retries remain available as separate Runs. Tests, reviews, and environments are a completion gate only when the owner, Acceptance Criteria, or an active Guardrail explicitly requires them; an optional missing E2E suite is a follow-up/risk, not a failed Task.
|
|
95
95
|
|
|
96
96
|
Before a Task starts, refine it through the CLI rather than hand-editing Markdown. `--amend` updates title, request, acceptance criteria, Feature/Sprint links, task type, or any named section while preserving its ID and status. It synchronizes related Feature/Sprint projections atomically.
|
|
97
97
|
|
package/SPEC.md
CHANGED
|
@@ -200,7 +200,7 @@ RECEIVED
|
|
|
200
200
|
|
|
201
201
|
Everything through `AWAITING_APPROVAL` is read-only. It may exist in process memory or ignored cache only. A valid approval token binds the normalized request, policy result, classification, risk, issuance time, canonical context fingerprint, and complete workspace fingerprint. Canonical or source drift after planning invalidates approval.
|
|
202
202
|
|
|
203
|
-
Approval atomically creates one Task and its first Run. If either write fails, neither may remain. Project changes after planning invalidate the token. Reusing a successfully consumed token is idempotent.
|
|
203
|
+
Approval atomically creates one Task and its first Run. If either write fails, neither may remain. Project changes after planning invalidate the token. Reusing a successfully consumed token is idempotent. Tests, reviews, and environments are completion gates only when explicitly required by the owner, the Task's Acceptance Criteria, or an active Guardrail; missing optional coverage is a documented follow-up/risk, not a failure by itself.
|
|
204
204
|
|
|
205
205
|
The approved Run binds the exact Guardrail-policy fingerprint and a canonical workspace baseline. Every post-approval `deferred` check becomes an append-only Guardrail obligation. In the normal session path, agents work directly and one final checkpoint verifies the complete baseline-to-final delta: policy freshness, read-only boundaries, symlink safety, scannability, newly introduced secret-like content, and evidence for every Guardrail. Missing or unverifiable evidence fails closed. Strict teams may opt into short-lived, path-scoped permits and per-edit recording; those commands add stronger intermediate control but are not required for normal execution.
|
|
206
206
|
|
package/docs/COMMANDS.md
CHANGED
|
@@ -31,6 +31,8 @@ Normal execution is Markdown-first: after approval, work in code and the linked
|
|
|
31
31
|
|
|
32
32
|
`--amend` is the canonical way to adjust planning truth before execution — never edit an artifact Markdown file directly. Every named `--section "Heading=content"` replaces or adds one `## Heading` section, so new planning context does not need a new CLI release. Repeated `--acceptance`, `--exit-criteria`, and `--exit-gate` values become checklist items. Updating a Task's `--feature` or `--sprint` synchronizes the linked Feature/Sprint projection atomically. A Task is amendable only while `backlog` or `proposed`; after it starts, scope is historical/approved truth and follow-up work needs a new Task.
|
|
33
33
|
|
|
34
|
+
Every new Task starts with a `## Validation Scope`: only checks explicitly required by the owner, Acceptance Criteria, or an active Guardrail block completion. Missing optional E2E, integration, or review coverage belongs in a follow-up/risk note; it must not be used to mark the Run failed.
|
|
35
|
+
|
|
34
36
|
## What can be changed
|
|
35
37
|
|
|
36
38
|
| Artifact | Canonical operation | Why |
|
|
@@ -57,7 +57,7 @@ function sprintBody(title, request, created, taskId) {
|
|
|
57
57
|
function buildTaskBody(request, classification, approvalId, fingerprint, risk, previewSection, links = {}) {
|
|
58
58
|
const featureSection = links.feature ? `\n## Feature\n\n- ${links.feature}\n` : "";
|
|
59
59
|
const sprintSection = links.sprint ? `\n## Sprint\n\n- ${links.sprint}\n` : "";
|
|
60
|
-
return `# ${titleFor(request)}\n\n## Request\n\n${request}\n\n## Acceptance Criteria\n\n- [ ] _Define what "done" means before execution._\n${previewSection}${featureSection}${sprintSection}\n## Classification\n\n- Type: ${classification.type}\n- Reason: ${classification.reason}\n- Risk: ${risk.level}\n\n## Approval\n\n- Explicit approval token: ${approvalId}\n- Context fingerprint: ${fingerprint}`;
|
|
60
|
+
return `# ${titleFor(request)}\n\n## Request\n\n${request}\n\n## Acceptance Criteria\n\n- [ ] _Define what "done" means before execution._\n\n## Validation Scope\n\n- Required: validate the stated Acceptance Criteria and active Guardrails proportionately to risk.\n- Non-blocking: tests, reviews, or environments not explicitly required by the owner, Acceptance Criteria, or an active Guardrail. Record a material coverage gap as a follow-up; do not fail the Task solely because that optional check was not run.\n${previewSection}${featureSection}${sprintSection}\n## Classification\n\n- Type: ${classification.type}\n- Reason: ${classification.reason}\n- Risk: ${risk.level}\n\n## Approval\n\n- Explicit approval token: ${approvalId}\n- Context fingerprint: ${fingerprint}`;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
function stateFingerprint(repository) {
|
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ Natural-language product requests automatically enter the read-only ScrumRun int
|
|
|
16
16
|
After approval:
|
|
17
17
|
|
|
18
18
|
- Task is the atomic work item; define its `## Acceptance Criteria` before execution;
|
|
19
|
+
- validation is scoped: only a test/review/environment explicitly required by the owner, the Task's Acceptance Criteria, or an active Guardrail can block completion; a missing optional E2E suite is a documented follow-up/risk, never a reason to fail an otherwise accepted Task;
|
|
19
20
|
- before a Task starts, amend its intended scope through `scrumrun plan task --amend TASK-NNN` (including `--section "Heading=content"`); never hand-edit canonical planning Markdown;
|
|
20
21
|
- Sprint is only a real timebox/batch of Tasks;
|
|
21
22
|
- Run is one execution attempt and follows `executing → validating → learning → completed|failed|blocked`;
|
|
@@ -104,7 +104,7 @@ During execution:
|
|
|
104
104
|
2. preserve existing owner work and unrelated dirty files;
|
|
105
105
|
3. define or confirm the Task's `## Acceptance Criteria` before execution and check them off as evidence;
|
|
106
106
|
4. work normally: edit code and update the Task's `## Technical Summary` and, for non-automatic rules, `## Guardrail Evidence` as evidence becomes available;
|
|
107
|
-
5. validate in proportion to risk and against the acceptance criteria;
|
|
107
|
+
5. validate in proportion to risk and against the acceptance criteria. Tests, reviews, and environments are required only when the owner, Acceptance Criteria, or an active Guardrail says so. Do not fail or block an otherwise accepted Task merely because an optional E2E/integration suite does not exist or was not run; record a material coverage gap as a follow-up/risk instead;
|
|
108
108
|
6. run configured reviewers when a Guardrail requires one;
|
|
109
109
|
7. finish once with `scrumrun plan run --finalize RUN-NNN`; it verifies every changed path, policy, secret boundary, and guardrail evidence before creating the structured Run events and completing the Task;
|
|
110
110
|
8. use path-scoped Mutation Gateway commands only when the owner explicitly requests strict execution.
|