@christang/keel 5.3.6 → 5.3.8
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/assets/bootstrap/AGENTS.md +2 -2
- package/assets/openspec/schemas/keel-spec-driven/schema.yaml +9 -3
- package/assets/openspec/schemas/keel-spec-driven/templates/spec.md +3 -1
- package/assets/openspec/schemas/keel-spec-driven/templates/tasks.md +31 -1
- package/package.json +1 -1
- package/plugins/keel/.claude-plugin/plugin.json +1 -1
- package/plugins/keel/.codex-plugin/plugin.json +1 -1
- package/scripts/validate_plugin.py +1051 -7
- package/src/core/gates.js +68 -5
- package/src/core/task-contract.js +78 -29
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<!-- keel:start version=5.3.
|
|
1
|
+
<!-- keel:start version=5.3.8 -->
|
|
2
2
|
## Keel Bootstrap
|
|
3
3
|
|
|
4
4
|
- Start every session with `keel context`; OpenSpec artifacts and Git are the only durable authority — never native memory, goals, or transcripts.
|
|
5
|
-
- Obey the selected task capsule: `keel gate task-start` before implementing, record its fingerprint
|
|
5
|
+
- Obey the selected task capsule: `keel gate task-start` before implementing, `--record` its fingerprint to Evidence `Contract`, which `task-complete` requires, before checking complete. Touch bounds product writes; the change's own dir is exempt. On Claude a passing `task-start` guards it by default (`--no-guard` opts out).
|
|
6
6
|
- One current agent owns writes; helpers return read-only report/evidence only. No commit, sync, or archive without explicit authorization.
|
|
7
7
|
- Native plugin projections (SessionStart context) are disposable views, never authority; without the plugin or hook, run the commands manually.
|
|
8
8
|
- Keel skills and hooks come from the `keel` native plugin (`codex plugin add` / `claude plugin install`); `keel --init` owns only the OpenSpec schema, overlays, and this bootstrap.
|
|
@@ -75,7 +75,10 @@ artifacts:
|
|
|
75
75
|
Every executable task MUST be a checkbox authored in the compact v4 form
|
|
76
76
|
from the template: Covers, Touch, Verify (Strategy plus ordered M<n>
|
|
77
77
|
public checks), and an Evidence anchor with its Contract line, per-check
|
|
78
|
-
results, semantic Review, and Blocker state.
|
|
78
|
+
results, semantic Review, and Blocker state. `task-start --record` writes
|
|
79
|
+
the compiled fingerprint into that Contract line, and task-complete
|
|
80
|
+
refuses a task that recorded none: without an anchor there is nothing for
|
|
81
|
+
completion to compare against, so the task has no drift detection. Omitted fields inherit
|
|
79
82
|
versioned keel-task-capsule/v1 defaults: Owner is the current Keel
|
|
80
83
|
agent, Mode is implementation, Read is the change artifacts plus
|
|
81
84
|
discovered repository context, Acceptance derives from the resolved
|
|
@@ -108,8 +111,11 @@ artifacts:
|
|
|
108
111
|
Accepted hidden-knowledge assumptions from risk-triggered deep
|
|
109
112
|
alignment or a domain lens are critical expectations when they
|
|
110
113
|
affect completion definition or execution boundaries.
|
|
111
|
-
Covers references the relevant D/F/A/Q identifiers.
|
|
112
|
-
|
|
114
|
+
Covers references the relevant D/F/A/Q identifiers. A Q<n> that opens a
|
|
115
|
+
Covers entry is an open question and blocks implementation without an
|
|
116
|
+
authorized fallback; the same identifier named inside an entry whose
|
|
117
|
+
subject is a fact is a citation and does not block, so a resolved question
|
|
118
|
+
can be cited beside the fact that closed it.
|
|
113
119
|
A new or materially expanded dedicated skill remains non-executable until
|
|
114
120
|
design or task evidence identifies authoritative sources, provenance and license
|
|
115
121
|
implications, realistic positive and negative trigger cases, and
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
## ADDED Requirements
|
|
2
2
|
|
|
3
3
|
### Requirement: <!-- requirement name -->
|
|
4
|
-
<!-- requirement text
|
|
4
|
+
<!-- The requirement text MUST contain SHALL or MUST; validation refuses a
|
|
5
|
+
requirement without one, so keep the modal verb when filling this in. -->
|
|
6
|
+
The system SHALL <!-- observable behavior -->
|
|
5
7
|
|
|
6
8
|
#### Scenario: <!-- scenario name -->
|
|
7
9
|
- **WHEN** <!-- condition -->
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
- [ ] 1.1 <!-- Task description -->
|
|
13
13
|
- Covers:
|
|
14
|
-
- <source expectation: spec scenario as `capability / requirement or scenario heading`, hidden-knowledge assumption, domain lens requirement, or critical D<n>/F<n>/A<n>/Q<n>;
|
|
14
|
+
- <source expectation: spec scenario as `capability / requirement or scenario heading`, hidden-knowledge assumption, domain lens requirement, or critical D<n>/F<n>/A<n>/Q<n>; a Q<n> that OPENS an entry is an open question and requires an authorized fallback, while one named inside an entry about a fact is a citation and does not>
|
|
15
15
|
- Touch:
|
|
16
16
|
- <path>
|
|
17
17
|
- Verify:
|
|
@@ -82,6 +82,36 @@
|
|
|
82
82
|
- Findings: pending
|
|
83
83
|
- Blocker: none
|
|
84
84
|
|
|
85
|
+
## 3. <!-- Task Group Name -->
|
|
86
|
+
|
|
87
|
+
- [ ] 3.1 <!-- Red-green example: a vertical-tdd task and the Evidence it must record -->
|
|
88
|
+
- Covers:
|
|
89
|
+
- <source expectation whose observable behavior this slice proves>
|
|
90
|
+
- Touch:
|
|
91
|
+
- <path>
|
|
92
|
+
- Verify:
|
|
93
|
+
<!-- The untagged check below is load-bearing: a red-green strategy whose
|
|
94
|
+
every check is tagged (regression) is refused as regression-only,
|
|
95
|
+
because a regression check has no honest red to record. -->
|
|
96
|
+
- Strategy: vertical-tdd
|
|
97
|
+
- M1: <public behavior check for the new behavior>
|
|
98
|
+
- M2 (regression): <check asserting behavior that is already green stays green>
|
|
99
|
+
- Evidence:
|
|
100
|
+
<!-- M1 is red-green, so it records THREE entries: the bare M1 plus M1.red
|
|
101
|
+
and M1.green. M2 is tagged regression, so it records only its bare
|
|
102
|
+
entry — it is exempt from .red/.green, not from Evidence. -->
|
|
103
|
+
- Contract: pending
|
|
104
|
+
- M1: pending
|
|
105
|
+
- M1.red: pending
|
|
106
|
+
- M1.green: pending
|
|
107
|
+
- M2: pending
|
|
108
|
+
- Review:
|
|
109
|
+
- Status: pending
|
|
110
|
+
- Acceptance check: pending
|
|
111
|
+
- Scope check: pending
|
|
112
|
+
- Findings: pending
|
|
113
|
+
- Blocker: none
|
|
114
|
+
|
|
85
115
|
## Invalidates
|
|
86
116
|
|
|
87
117
|
<!-- task-start requires this section before any task of this change runs, so
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keel",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.8",
|
|
4
4
|
"description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TanglmChris",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keel",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.8",
|
|
4
4
|
"description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TanglmChris",
|