hadara 0.3.3-rc.0 → 0.3.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/README.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<img alt="Stable npm release" src="https://img.shields.io/badge/npm-0.3.
|
|
9
|
-
<img alt="Source version" src="https://img.shields.io/badge/source-0.3.3
|
|
8
|
+
<img alt="Stable npm release" src="https://img.shields.io/badge/npm-0.3.3-blue">
|
|
9
|
+
<img alt="Source version" src="https://img.shields.io/badge/source-0.3.3-blue">
|
|
10
10
|
<img alt="Node.js" src="https://img.shields.io/badge/node-%3E%3D22-brightgreen">
|
|
11
11
|
<img alt="License" src="https://img.shields.io/badge/license-MIT-lightgrey">
|
|
12
12
|
</p>
|
|
@@ -24,31 +24,31 @@ This repository is both the HADARA source checkout and the HADARA protocol works
|
|
|
24
24
|
Current stable npm release:
|
|
25
25
|
|
|
26
26
|
```text
|
|
27
|
-
hadara@0.3.
|
|
27
|
+
hadara@0.3.3
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
Previous release candidate:
|
|
31
31
|
|
|
32
32
|
```text
|
|
33
33
|
hadara@0.3.3-rc.0
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
The 0.3.3
|
|
36
|
+
The 0.3.3 line promotes the context-routing and lifecycle release candidate after dogfood hardening. It adds project context graph, context pack/slice/session-start surfaces, explicit context cache warm paths, and makes the finalize-first lifecycle the default agent-facing task loop.
|
|
37
37
|
|
|
38
|
-
Phase labels are internal implementation phases, not npm release-candidate labels. The stable `0.3.
|
|
38
|
+
Phase labels are internal implementation phases, not npm release-candidate labels. The stable `0.3.3` package is the default install target; `0.3.3-rc.0` remains the previous release candidate.
|
|
39
39
|
|
|
40
40
|
| Surface | Status |
|
|
41
41
|
|---|---|
|
|
42
|
-
| Current stable | [`hadara@0.3.
|
|
43
|
-
|
|
|
44
|
-
| Previous
|
|
42
|
+
| Current stable | [`hadara@0.3.3`](docs/RELEASE_NOTES.md#033) |
|
|
43
|
+
| Previous RC | [`hadara@0.3.3-rc.0`](docs/RELEASE_NOTES.md#033-rc0) |
|
|
44
|
+
| Previous stable | [`hadara@0.3.2`](docs/RELEASE_NOTES.md#032) |
|
|
45
45
|
| Historical RCs | See [Release Notes](docs/RELEASE_NOTES.md). |
|
|
46
46
|
| GitHub Release | Secondary target, approval-gated. |
|
|
47
47
|
| Docker image | Deferred. |
|
|
48
48
|
| PyPI/Python package | `hadara==0.2.0rc1` published preview bridge. |
|
|
49
49
|
| Installer scripts / USB launchers | Deferred. |
|
|
50
50
|
|
|
51
|
-
No release command should publish, create a GitHub Release, build Docker images, upload artifacts, or load token values unless an operator explicitly approves the mutation path for the active release capsule.
|
|
51
|
+
No release command should publish, create a GitHub Release, build Docker images, upload artifacts, or load token values unless an operator explicitly approves the mutation path for the active release capsule. Stable `0.3.3` is the npm package line; GitHub Release, Docker/PyPI publish, installer execution, and MCP release/package execution remain separate explicit mutations.
|
|
52
52
|
|
|
53
53
|
## Install
|
|
54
54
|
|
|
@@ -57,7 +57,7 @@ Requires Node.js 22.
|
|
|
57
57
|
Install the stable release:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
npm install -g hadara@0.3.
|
|
60
|
+
npm install -g hadara@0.3.3
|
|
61
61
|
hadara help
|
|
62
62
|
hadara doctor --json
|
|
63
63
|
```
|
|
@@ -65,11 +65,11 @@ hadara doctor --json
|
|
|
65
65
|
Run without a global install:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
npx hadara@0.3.
|
|
69
|
-
npx hadara@0.3.
|
|
68
|
+
npx hadara@0.3.3 help
|
|
69
|
+
npx hadara@0.3.3 doctor --json
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
Evaluate the release candidate explicitly:
|
|
72
|
+
Evaluate the previous release candidate explicitly:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
npm install -g hadara@0.3.3-rc.0
|
|
@@ -80,11 +80,11 @@ For release or recycle evidence, prefer an isolated prefix install when PATH, gl
|
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
82
|
tmp="$(mktemp -d)"
|
|
83
|
-
npm --prefix "$tmp" install hadara@0.3.
|
|
83
|
+
npm --prefix "$tmp" install hadara@0.3.3
|
|
84
84
|
"$tmp/node_modules/.bin/hadara" version --json
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
`npx hadara@0.3.
|
|
87
|
+
`npx hadara@0.3.3 ...` remains convenient for normal use. The isolated installed-bin path is stronger proof that the published package installed and executed from the intended package tree.
|
|
88
88
|
|
|
89
89
|
## What HADARA Gives You
|
|
90
90
|
|
|
@@ -260,7 +260,7 @@ Dashboard, TUI, Hermes, MCP, installer, package, release, and run commands stay
|
|
|
260
260
|
|
|
261
261
|
## Safety Boundaries
|
|
262
262
|
|
|
263
|
-
HADARA 0.3.3
|
|
263
|
+
HADARA 0.3.3 is not:
|
|
264
264
|
|
|
265
265
|
- a full agent runtime;
|
|
266
266
|
- Rack/enterprise behavior;
|
|
@@ -300,7 +300,7 @@ Portable/local state is not committed. Project docs, Task Capsules, and reduced
|
|
|
300
300
|
|
|
301
301
|
`evidence.jsonl` is the canonical Task Capsule evidence source. `EVIDENCE.md` is a non-canonical human summary that can help review validation history, but it must not be treated as the source of truth for rebuild, migration, or resolution logic.
|
|
302
302
|
|
|
303
|
-
0.3.3
|
|
303
|
+
0.3.3 does not implement `hadara evidence rebuild --json` or an execute mode. Future rebuild work must first define whether a difference is formatting regeneration, managed-section drift, or data inconsistency before reporting `wouldChange`. Any later write-capable rebuild flow must be dry-run-first, reviewed, and before-hash guarded before it rewrites derived Markdown.
|
|
304
304
|
|
|
305
305
|
## Development / Contributing
|
|
306
306
|
|
|
@@ -149,17 +149,30 @@ function indexTaskNodes(nodes) {
|
|
|
149
149
|
const taskId = normalizeTaskId(node.id);
|
|
150
150
|
if (!taskId)
|
|
151
151
|
continue;
|
|
152
|
-
if (node
|
|
152
|
+
if (isTaskBoardNode(node)) {
|
|
153
153
|
taskBoardTaskIds.add(taskId);
|
|
154
154
|
taskBoardPaths.set(taskId, node.source.path);
|
|
155
155
|
}
|
|
156
|
-
if (node
|
|
156
|
+
if (isTaskCapsuleNode(node)) {
|
|
157
157
|
taskCapsuleTaskIds.add(taskId);
|
|
158
158
|
taskCapsulePaths.set(taskId, node.path ?? node.source.path);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
return { taskBoardTaskIds, taskCapsuleTaskIds, taskBoardPaths, taskCapsulePaths };
|
|
162
162
|
}
|
|
163
|
+
function isTaskBoardNode(node) {
|
|
164
|
+
if (node.kind === 'task-board-row')
|
|
165
|
+
return true;
|
|
166
|
+
return node.source.extractor === 'extractTaskBoard' || node.source.path === 'docs/TASK_BOARD.md';
|
|
167
|
+
}
|
|
168
|
+
function isTaskCapsuleNode(node) {
|
|
169
|
+
if (node.kind === 'task-capsule')
|
|
170
|
+
return true;
|
|
171
|
+
if (node.source.extractor === 'extractTaskCapsules')
|
|
172
|
+
return true;
|
|
173
|
+
const nodePath = node.path ?? node.source.path;
|
|
174
|
+
return /^tasks\/T-\d{4}-.+\/TASK\.md$/.test(nodePath);
|
|
175
|
+
}
|
|
163
176
|
function evidenceSourcePaths(stateSources, latestTaskId) {
|
|
164
177
|
const paths = stateSources.filter((source) => source.kind === 'evidence').map((source) => source.path);
|
|
165
178
|
return paths.length > 0 ? paths : [`tasks/${latestTaskId}/evidence.jsonl`];
|
|
@@ -5,6 +5,8 @@ exports.createWorkbenchNextAction = createWorkbenchNextAction;
|
|
|
5
5
|
function buildWorkbenchNextActions(input) {
|
|
6
6
|
const actions = new Map();
|
|
7
7
|
for (const issue of input.issues) {
|
|
8
|
+
if (input.closed && issue.severity !== 'error' && issue.code.includes('HANDOFF'))
|
|
9
|
+
continue;
|
|
8
10
|
addIssueAction(actions, input.taskId, issue);
|
|
9
11
|
}
|
|
10
12
|
if (input.evidenceRecords === 0) {
|