@shardworks/astrolabe-apparatus 0.1.277 → 0.1.279

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
@@ -164,7 +164,7 @@ The Astrolabe declares one book in Stacks:
164
164
  | `astrolabe.patron-anima` | Consults a configured Patron Anima to principle-check every decision the primer produced, under a tailored operational prompt that encodes the engine's mode discipline — one option per decision, principle-structural confidence calibration (`high` = one principle fires cleanly; `med` = multiple principles conflict and the anima resolves; `low` = no principle speaks, confirm the primer), narrow abstention by omission reserved for *irresolvable principle conflict* and *broken decision frame* only, and an explicit out-of-lane prohibition on codebase audit work. In attended mode the primer contractually pre-fills `selected` on every decision; this engine reviews them all, launches the configured `patronRole` via a single-pass anima session, parses a single structured emission, and applies each valid verdict to `Decision.selected` (plus records the full verdict — confirm / override / fill-in with selection, confidence, rationale — on `Decision.patron`). No-ops when `astrolabe.patronRole` is unset or empty, or when the plan has no decisions. Unparseable output, invalid verdicts, and abstained decisions have `Decision.selected` and `Decision.patronOverride` cleared — decision-review's `selected === undefined` filter surfaces the remainder to the patron in the normal flow. |
165
165
  | `astrolabe.decision-review` | Two-pass engine: blocks for patron review, then reconciles answers. Decisions with `selected` already pre-set by the primer or the patron anima are auto-accepted — they are excluded from the InputRequestDoc, and if nothing remains reviewable the engine fast-paths to `writing` without opening the gate. |
166
166
  | `astrolabe.plan-finalize` | Transitions the plan to `completed` and yields the written `spec` downstream. Does not post any writ. Used inside `plan-and-ship` to hand the spec off to the implement engine on the same mandate rig. As part of the same single atomic patch that flips status to `completed`, also records the predicted-files cost signal — the count of distinct path tokens predicted by the spec's `<task-manifest>` `<files>` elements — onto `PlanDoc.manifestFilesCount` (set on every completed plan; 0 when no manifest is present). When the count strictly exceeds the configured `astrolabe.predictedFilesThreshold` (default 15), emits exactly one `astrolabe.plan.files-over-threshold` Clockworks event with payload `{ planId, count, threshold }` after the patch lands. Emission is best-effort: a Clockworks failure logs a `[astrolabe]` `console.warn` breadcrumb and does not fail the engine. When Clockworks is not installed, the count still lands on the PlanDoc and the engine succeeds silently. |
167
- | `astrolabe.observation-lift` | Walks `plan.observations` after `plan-finalize` has transitioned the plan to `completed` and creates draft writs at the top level (never as children of the originating mandate — a parent-child edge would require the children to complete before the parent, which inverts the intended relationship). Provenance instead rides on the kit-registered `astrolabe.lifted-from` link kind (source = lifted writ, target = originating mandate). The engine selects one of two modes by a fixed threshold of two records. **Flat mode** (single observation): posts a top-level draft `mandate` and installs two outbound edges to the originating mandate — `astrolabe.lifted-from` (provenance) and `spider.follows` (precedence gate). **Grouped mode** (two or more observations): first posts a top-level draft `observation-set` container carrying only `astrolabe.lifted-from`, then posts each observation record as a draft `mandate` with `parentId` set to the container, each carrying only `spider.follows`. The `spider.follows` edges enlist the Spider's `trySpawn` gate to hold each lifted writ until the originating mandate reaches a terminal state (release on `completed`/`cancelled`, cascade to `stuck` on `failed`); the `observation-set` container is non-dispatchable by type and therefore carries no `spider.follows` edge. Each created writ enters `new` (draft) phase, invisible to the Spider until a curator publishes it. Silently no-ops when `observations` is empty, absent, or a legacy string; fails fast on the first `clerk.post` or `clerk.link` error — already-created writs and links persist, leaving a coherent prefix for curator reconciliation. Does not mutate the plan — the two link kinds together form the audit trail. Yields `{ writIds }` — one id per observation record, in record order; the `observation-set` container id (when one exists) is *not* included. Wired unconditionally into the plan-and-ship rig template. |
167
+ | `astrolabe.observation-lift` | Walks `plan.observations` after `plan-finalize` has transitioned the plan to `completed` and creates draft writs at the top level (never as children of the originating mandate — a parent-child edge would require the children to complete before the parent, which inverts the intended relationship). Provenance instead rides on the kit-registered `astrolabe.lifted-from` link kind (source = lifted writ, target = originating mandate). The engine selects one of two modes by a fixed threshold of two records. **Flat mode** (single observation): posts a top-level draft `mandate` and installs two outbound edges to the originating mandate — `astrolabe.lifted-from` (provenance) and `depends-on` (the framework-level dependency edge contributed by Clerk's substrate; Spider's dispatch gate reads it but does not own it). **Grouped mode** (two or more observations): first posts a top-level draft `observation-set` container carrying only `astrolabe.lifted-from`, then posts each observation record as a draft `mandate` with `parentId` set to the container, each carrying only `depends-on`. The `depends-on` edges enlist the Spider's `trySpawn` gate to hold each lifted writ until the originating mandate reaches a terminal state (release on `completed`/`cancelled`, cascade to `stuck` on `failed`); the `observation-set` container is non-dispatchable by type and therefore carries no `depends-on` edge. Each created writ enters `new` (draft) phase, invisible to the Spider until a curator publishes it. Silently no-ops when `observations` is empty, absent, or a legacy string; fails fast on the first `clerk.post` or `clerk.link` error — already-created writs and links persist, leaving a coherent prefix for curator reconciliation. Does not mutate the plan — the two link kinds together form the audit trail. Yields `{ writIds }` — one id per observation record, in record order; the `observation-set` container id (when one exists) is *not* included. Wired unconditionally into the plan-and-ship rig template. |
168
168
 
169
169
  ### Rig Templates (contributed to Spider)
170
170
 
@@ -17,7 +17,7 @@
17
17
  * mandate:
18
18
  * - `astrolabe.lifted-from` (label "lifted from") carrying
19
19
  * the provenance relationship, and
20
- * - `spider.follows` (label "depends on") carrying the
20
+ * - `depends-on` (label "depends on") carrying the
21
21
  * precedence-dependency gate.
22
22
  *
23
23
  * - Grouped mode (two or more observation records):
@@ -28,16 +28,16 @@
28
28
  * list of the child titles.
29
29
  * * Install exactly one outbound `astrolabe.lifted-from` edge
30
30
  * from the group parent → originating mandate. The group parent
31
- * carries no `spider.follows` edge (it is non-dispatchable by
31
+ * carries no `depends-on` edge (it is non-dispatchable by
32
32
  * type, so a precedence edge on it would be dead data).
33
33
  * * For each observation record in record order, post a draft
34
34
  * mandate writ with `parentId` set to the group parent's id and
35
- * install exactly one outbound `spider.follows` edge from that
35
+ * install exactly one outbound `depends-on` edge from that
36
36
  * child → originating mandate. Children do not carry
37
37
  * `astrolabe.lifted-from`; their provenance is implied by the
38
38
  * group parent's edge plus the parent-child relationship.
39
39
  *
40
- * Both modes preserve the existing `spider.follows` gate: the
40
+ * Both modes preserve the existing `depends-on` gate: the
41
41
  * originating mandate is still the blocker, so Spider's `trySpawn` gate
42
42
  * will hold each lifted writ (flat) or each child (grouped) until the
43
43
  * mandate reaches a terminal state (release on completed/cancelled,
@@ -17,7 +17,7 @@
17
17
  * mandate:
18
18
  * - `astrolabe.lifted-from` (label "lifted from") carrying
19
19
  * the provenance relationship, and
20
- * - `spider.follows` (label "depends on") carrying the
20
+ * - `depends-on` (label "depends on") carrying the
21
21
  * precedence-dependency gate.
22
22
  *
23
23
  * - Grouped mode (two or more observation records):
@@ -28,16 +28,16 @@
28
28
  * list of the child titles.
29
29
  * * Install exactly one outbound `astrolabe.lifted-from` edge
30
30
  * from the group parent → originating mandate. The group parent
31
- * carries no `spider.follows` edge (it is non-dispatchable by
31
+ * carries no `depends-on` edge (it is non-dispatchable by
32
32
  * type, so a precedence edge on it would be dead data).
33
33
  * * For each observation record in record order, post a draft
34
34
  * mandate writ with `parentId` set to the group parent's id and
35
- * install exactly one outbound `spider.follows` edge from that
35
+ * install exactly one outbound `depends-on` edge from that
36
36
  * child → originating mandate. Children do not carry
37
37
  * `astrolabe.lifted-from`; their provenance is implied by the
38
38
  * group parent's edge plus the parent-child relationship.
39
39
  *
40
- * Both modes preserve the existing `spider.follows` gate: the
40
+ * Both modes preserve the existing `depends-on` gate: the
41
41
  * originating mandate is still the blocker, so Spider's `trySpawn` gate
42
42
  * will hold each lifted writ (flat) or each child (grouped) until the
43
43
  * mandate reaches a terminal state (release on completed/cancelled,
@@ -156,9 +156,9 @@ export function createObservationLiftEngine(getPlansBook) {
156
156
  // so the Spider's `trySpawn` gate holds the lifted writ until
157
157
  // the mandate reaches a terminal state. In grouped mode only
158
158
  // children carry this edge — the group parent is
159
- // non-dispatchable by type, so a spider.follows edge on it
159
+ // non-dispatchable by type, so a depends-on edge on it
160
160
  // would be dead data.
161
- await clerk.link(writ.id, planId, 'depends on', 'spider.follows');
161
+ await clerk.link(writ.id, planId, 'depends on', 'depends-on');
162
162
  }
163
163
  return {
164
164
  status: 'completed',
@@ -1 +1 @@
1
- {"version":3,"file":"observation-lift.js","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-lift.js","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  * It lifts each record in `plan.observations` into a draft top-level
18
18
  * `mandate` writ (never a child of the originating mandate); each lifted
19
19
  * writ carries an `astrolabe.lifted-from` provenance edge and a
20
- * `spider.follows` precedence edge back to the originating mandate. When
20
+ * `depends-on` precedence edge back to the originating mandate. When
21
21
  * the plan yields two or more observations, the engine additionally groups
22
22
  * the drafts under a top-level `observation-set` container that carries the
23
23
  * provenance edge on behalf of the batch. A curator (human or overseer)
@@ -17,7 +17,7 @@
17
17
  * It lifts each record in `plan.observations` into a draft top-level
18
18
  * `mandate` writ (never a child of the originating mandate); each lifted
19
19
  * writ carries an `astrolabe.lifted-from` provenance edge and a
20
- * `spider.follows` precedence edge back to the originating mandate. When
20
+ * `depends-on` precedence edge back to the originating mandate. When
21
21
  * the plan yields two or more observations, the engine additionally groups
22
22
  * the drafts under a top-level `observation-set` container that carries the
23
23
  * provenance edge on behalf of the batch. A curator (human or overseer)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardworks/astrolabe-apparatus",
3
- "version": "0.1.277",
3
+ "version": "0.1.279",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,18 +20,18 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "zod": "4.3.6",
23
- "@shardworks/stacks-apparatus": "0.1.277",
24
- "@shardworks/tools-apparatus": "0.1.277",
25
- "@shardworks/clerk-apparatus": "0.1.277",
26
- "@shardworks/fabricator-apparatus": "0.1.277",
27
- "@shardworks/loom-apparatus": "0.1.277",
28
- "@shardworks/animator-apparatus": "0.1.277",
29
- "@shardworks/spider-apparatus": "0.1.277",
30
- "@shardworks/clockworks-apparatus": "0.1.277"
23
+ "@shardworks/stacks-apparatus": "0.1.279",
24
+ "@shardworks/clerk-apparatus": "0.1.279",
25
+ "@shardworks/spider-apparatus": "0.1.279",
26
+ "@shardworks/fabricator-apparatus": "0.1.279",
27
+ "@shardworks/tools-apparatus": "0.1.279",
28
+ "@shardworks/loom-apparatus": "0.1.279",
29
+ "@shardworks/animator-apparatus": "0.1.279",
30
+ "@shardworks/clockworks-apparatus": "0.1.279"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "25.5.0",
34
- "@shardworks/nexus-core": "0.1.277"
34
+ "@shardworks/nexus-core": "0.1.279"
35
35
  },
36
36
  "files": [
37
37
  "dist",
@@ -205,7 +205,7 @@ Observations are concerns worth lifting to a draft mandate writ for downstream c
205
205
 
206
206
  When in doubt about whether to lift, ask: *"Could the artificer of this commission realistically address this inline?"* If yes, surface it in the inventory rather than as an observation. *"Will this self-heal as someone touches the area next?"* If yes, do not lift.
207
207
 
208
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `spider.follows` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
208
+ Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `depends-on` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
209
209
 
210
210
  Atomicity guidance has not changed from prior practice — if two noticings would be addressed by the same follow-up commission, they belong in one record; if they would be addressed by two different commissions, they are two records.
211
211
 
@@ -200,7 +200,7 @@ Observations are concerns worth lifting to a draft mandate writ for downstream c
200
200
 
201
201
  When in doubt about whether to lift, ask: *"Could the artificer of this commission realistically address this inline?"* If yes, surface it in the inventory rather than as an observation. *"Will this self-heal as someone touches the area next?"* If yes, do not lift.
202
202
 
203
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `spider.follows` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
203
+ Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `depends-on` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
204
204
 
205
205
  Atomicity guidance has not changed from prior practice — if two noticings would be addressed by the same follow-up commission, they belong in one record; if they would be addressed by two different commissions, they are two records.
206
206
 
@@ -236,7 +236,7 @@ Observations are concerns worth lifting to a draft mandate writ for downstream c
236
236
 
237
237
  When in doubt about whether to lift, ask: *"Could the artificer of this commission realistically address this inline?"* If yes, surface it in the inventory rather than as an observation. *"Will this self-heal as someone touches the area next?"* If yes, do not lift.
238
238
 
239
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `spider.follows` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
239
+ Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate); each lifted writ carries an `astrolabe.lifted-from` provenance edge back to the originating mandate, plus a `depends-on` edge that holds dispatch until the mandate has terminated. When the plan yields two or more observations, the engine additionally groups them under a top-level `observation-set` container that parents the draft mandates and carries the `astrolabe.lifted-from` edge on behalf of the batch. A curator (human or automated) promotes each draft to open status. Your job is to package the concerns; you do not decide which ones get promoted.
240
240
 
241
241
  Atomicity guidance has not changed from prior practice — if two noticings would be addressed by the same follow-up commission, they belong in one record; if they would be addressed by two different commissions, they are two records.
242
242