@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.
@@ -1,8 +1,8 @@
1
- <!-- keel:start version=5.3.6 -->
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 in Evidence `Contract`, and pass `keel gate task-complete` 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).
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. Omitted fields inherit
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. An unresolved Q<n>
112
- without an authorized fallback blocks implementation.
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>; an unresolved Q<n> requires an authorized fallback>
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
@@ -2,7 +2,7 @@
2
2
  "name": "@christang/keel",
3
3
  "displayName": "Keel",
4
4
  "description": "Keel OpenSpec execution discipline CLI for Claude Code, Codex, and OpenCode.",
5
- "version": "5.3.6",
5
+ "version": "5.3.8",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keel",
3
- "version": "5.3.6",
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.6",
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",