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.2-blue">
9
- <img alt="Source version" src="https://img.shields.io/badge/source-0.3.3--rc.0-blue">
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.2
27
+ hadara@0.3.3
28
28
  ```
29
29
 
30
- Current release candidate:
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-rc.0 line is the context-routing and lifecycle release candidate. 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.
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.2` package is the default install target; `0.3.3-rc.0` is the current source candidate for the next `next` dist-tag publish.
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.2`](docs/RELEASE_NOTES.md#032) |
43
- | Current RC | [`hadara@0.3.3-rc.0`](docs/RELEASE_NOTES.md#033-rc0) |
44
- | Previous RC | [`hadara@0.3.2-rc.0`](docs/RELEASE_NOTES.md#032-rc0) |
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.2
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.2 help
69
- npx hadara@0.3.2 doctor --json
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.2
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.2 ...` 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.
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-rc.0 is not:
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-rc.0 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.
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.kind === 'task-board-row') {
152
+ if (isTaskBoardNode(node)) {
153
153
  taskBoardTaskIds.add(taskId);
154
154
  taskBoardPaths.set(taskId, node.source.path);
155
155
  }
156
- if (node.kind === 'task-capsule') {
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hadara",
3
- "version": "0.3.3-rc.0",
3
+ "version": "0.3.3",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "Portable AI-assisted development workbench for evidence-backed task capsules, handoffs, and release gates.",