@shardworks/astrolabe-apparatus 0.1.266 → 0.1.267

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
@@ -79,7 +79,7 @@ interface Observation {
79
79
  }
80
80
  ```
81
81
 
82
- Each `Observation` names one concern — a refactoring opportunity, risk, convention drift, or bug — that the sage noticed but that sits outside the originating mandate's scope. The `astrolabe.observation-lift` engine lifts each record into a draft child `mandate` writ under the originating mandate so a curator (human or automated) can promote it.
82
+ Each `Observation` names one concern — a refactoring opportunity, risk, convention drift, or bug — that the sage noticed but that sits outside the originating mandate's scope. The `astrolabe.observation-lift` engine lifts each record into a draft top-level `mandate` writ (never a child of the originating mandate), attaching an `astrolabe.lifted-from` provenance edge back to the originating mandate so the lineage is filterable and auditable. When a plan yields two or more observations, the engine also creates 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 before the Spider picks it up.
83
83
 
84
84
  ### `PlanFilters`
85
85
 
@@ -123,6 +123,13 @@ The Astrolabe declares one book in Stacks:
123
123
  | Name | Description |
124
124
  |---|---|
125
125
  | `piece` | An atomic task piece within a mandate, executed sequentially |
126
+ | `observation-set` | A non-dispatchable container grouping writs lifted from a single planning run. Spider never dispatches this type (no `rigTemplateMappings` entry); it exists so curators can triage related lifted observations as a batch. Created by `astrolabe.observation-lift` when a plan yields two or more observations. |
127
+
128
+ ### Link Kinds (contributed to Clerk)
129
+
130
+ | ID | Description |
131
+ |---|---|
132
+ | `astrolabe.lifted-from` | The source writ was lifted from the planning run of the target writ. Provenance edge: marks the originating mandate whose plan-and-ship rig produced this writ via the `observation-lift` engine. Created on the lifted `mandate` itself in flat mode, and on the `observation-set` container in grouped mode. |
126
133
 
127
134
  ### Roles (contributed to Loom)
128
135
 
@@ -144,7 +151,7 @@ The Astrolabe declares one book in Stacks:
144
151
  | `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. |
145
152
  | `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. |
146
153
  | `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. |
147
- | `astrolabe.observation-lift` | Walks `plan.observations` after `plan-finalize` has transitioned the plan to `completed` and, per record, calls `clerk.post({ type: 'mandate', title, body, codex, parentId, draft: true })` and then `clerk.link(newWritId, planId, 'depends on', 'spider.follows')`. The post creates a draft mandate writ as a child of the originating mandate (parent-child edge for provenance); the link installs a `spider.follows` precedence-dependency edge from the lifted writ back to the originating mandate, enlisting 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`). Each created writ enters `new` (draft) phase, invisible to the Spider until a curator publishes it; the precedence edge then takes effect. 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 post+link pairs persist under the mandate, and on a `clerk.link` failure the current observation's writ persists as a draft without the dependency edge for curator reconciliation. Does not mutate the plan the parent-child edge and the `spider.follows` edge together form the audit trail. Wired unconditionally into the plan-and-ship rig template. |
154
+ | `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. |
148
155
 
149
156
  ### Rig Templates (contributed to Spider)
150
157
 
@@ -1 +1 @@
1
- {"version":3,"file":"astrolabe.d.ts","sourceRoot":"","sources":["../src/astrolabe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AAOrE,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,YAAY,CAAC;AAgBpB,iBAAS,sBAAsB,IAAI,eAAe,CAEjD;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,IAAI,MAAM,CAGnC;AAID,wBAAgB,eAAe,IAAI,MAAM,CAoSxC;AAGD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"astrolabe.d.ts","sourceRoot":"","sources":["../src/astrolabe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AAOrE,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,YAAY,CAAC;AAgBpB,iBAAS,sBAAsB,IAAI,eAAe,CAEjD;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,IAAI,MAAM,CAGnC;AAID,wBAAgB,eAAe,IAAI,MAAM,CAqTxC;AAGD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/astrolabe.js CHANGED
@@ -182,8 +182,12 @@ export function createAstrolabe() {
182
182
  'per atomic concern noticed during the planning pass. Each record has a plandoc-local ' +
183
183
  'id (convention: obs-1, obs-2, ...), a one-line commission-title style title, and a ' +
184
184
  'markdown body with tactical detail (file paths, symbols, preconditions). Downstream ' +
185
- 'the astrolabe.observation-lift engine creates one draft mandate writ per record as a ' +
186
- 'child of the originating mandate, ready for a curator to promote.',
185
+ 'the astrolabe.observation-lift engine lifts each record into a draft top-level ' +
186
+ 'mandate writ (never a child of the originating mandate); each lifted writ carries an ' +
187
+ 'astrolabe.lifted-from provenance edge back to the originating mandate. When the plan ' +
188
+ 'yields two or more observations, the engine additionally groups them under a top-level ' +
189
+ 'observation-set container that parents the draft mandates. A curator then promotes ' +
190
+ 'each draft to open status.',
187
191
  params: {
188
192
  planId: z.string().describe('Plan id'),
189
193
  observations: z
@@ -224,6 +228,16 @@ export function createAstrolabe() {
224
228
  },
225
229
  writTypes: [
226
230
  { name: 'piece', description: 'An atomic task piece within a mandate, executed sequentially' },
231
+ {
232
+ name: 'observation-set',
233
+ description: 'A non-dispatchable container grouping writs lifted from a single planning run. Spider never dispatches this type (no rig-template mapping); it exists so curators can triage related lifted observations as a batch.',
234
+ },
235
+ ],
236
+ linkKinds: [
237
+ {
238
+ id: 'astrolabe.lifted-from',
239
+ description: 'The source writ was lifted from the planning run of the target writ. Provenance edge: marks the originating mandate whose plan-and-ship rig produced this writ via the observation-lift engine.',
240
+ },
227
241
  ],
228
242
  roles: {
229
243
  'sage-primer-reader': {
@@ -1 +1 @@
1
- {"version":3,"file":"astrolabe.js","sourceRoot":"","sources":["../src/astrolabe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"astrolabe.js","sourceRoot":"","sources":["../src/astrolabe.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,46 @@
2
2
  * observation-lift clockwork engine.
3
3
  *
4
4
  * Walks the plan's `observations` array once it has reached its final
5
- * state and creates one draft mandate writ per record as a child of the
6
- * originating mandate. This turns the sage's "things we noticed but
7
- * didn't action" output from an inert note into commissionable drafts
8
- * visible in the same writ surfaces as any other mandate — a downstream
9
- * curator (human or automated) promotes each draft to `open` by hand
10
- * or via writ-publish.
5
+ * state and creates one draft writ per record, placed as top-level
6
+ * siblings of the originating mandate rather than as its children. This
7
+ * turns the sage's "things we noticed but didn't action" output from an
8
+ * inert note into commissionable drafts visible in the same writ
9
+ * surfaces as any other mandate a downstream curator (human or
10
+ * automated) promotes each draft to `open` by hand or via writ-publish.
11
+ *
12
+ * The engine runs in one of two modes, selected by record count:
13
+ *
14
+ * - Flat mode (exactly one observation record):
15
+ * * Post a single top-level draft mandate writ (no `parentId`).
16
+ * * Install two outbound edges from that writ → originating
17
+ * mandate:
18
+ * - `astrolabe.lifted-from` (label "lifted from") carrying
19
+ * the provenance relationship, and
20
+ * - `spider.follows` (label "depends on") carrying the
21
+ * precedence-dependency gate.
22
+ *
23
+ * - Grouped mode (two or more observation records):
24
+ * * Post a single top-level draft writ of type `observation-set`
25
+ * whose title embeds the originating mandate's title
26
+ * (`Observations from "{title}"`) and whose body is a short
27
+ * preamble naming the originating writ followed by a numbered
28
+ * list of the child titles.
29
+ * * Install exactly one outbound `astrolabe.lifted-from` edge
30
+ * from the group parent → originating mandate. The group parent
31
+ * carries no `spider.follows` edge (it is non-dispatchable by
32
+ * type, so a precedence edge on it would be dead data).
33
+ * * For each observation record in record order, post a draft
34
+ * mandate writ with `parentId` set to the group parent's id and
35
+ * install exactly one outbound `spider.follows` edge from that
36
+ * child → originating mandate. Children do not carry
37
+ * `astrolabe.lifted-from`; their provenance is implied by the
38
+ * group parent's edge plus the parent-child relationship.
39
+ *
40
+ * Both modes preserve the existing `spider.follows` gate: the
41
+ * originating mandate is still the blocker, so Spider's `trySpawn` gate
42
+ * will hold each lifted writ (flat) or each child (grouped) until the
43
+ * mandate reaches a terminal state (release on completed/cancelled,
44
+ * cascade to stuck on failed).
11
45
  *
12
46
  * Behavior:
13
47
  * - Validates that the plan exists and its status is `completed`.
@@ -15,40 +49,23 @@
15
49
  * observation-lift runs after plan-finalize, which transitions the
16
50
  * plan to `completed`.)
17
51
  * - Silently no-ops if `plan.observations` is not an array (legacy
18
- * string-shaped plandocs) or is an empty array.
19
- * - Otherwise, iterates the array in order and, per record:
20
- * 1. Calls `clerk.post({ type: 'mandate', title, body, codex,
21
- * parentId, draft })` to create a draft mandate writ as a
22
- * child of the originating mandate. The mandate writ must
23
- * still be in a non-terminal phase at this point — the engine
24
- * runs before seal, which is what finally transitions the
25
- * mandate to `completed`.
26
- * 2. Calls `clerk.link(newWritId, planId, 'depends on',
27
- * 'spider.follows')` to install a precedence-dependency edge
28
- * from the newly posted draft back to the originating mandate.
29
- * The lifted observations describe concerns that presume the
30
- * originating mandate has shipped; this link enlists the
31
- * Spider's `trySpawn` gate to hold each lifted writ until the
32
- * originating mandate reaches a terminal state (release on
33
- * `completed`/`cancelled`, cascade to `stuck` on `failed`).
34
- * - Emits two complementary edges per observation: the parent-child
35
- * edge from `clerk.post` (provenance / audit trail) and the
36
- * `spider.follows` edge from `clerk.link` (precedence gating).
52
+ * string-shaped plandocs) or is an empty array, yielding
53
+ * `{ writIds: [] }`.
37
54
  * - Fails fast on the first error from either `clerk.post` or
38
- * `clerk.link`. Already-created post+link pairs persist under the
39
- * mandate; if the failure is in `clerk.link`, the writ for the
40
- * current observation persists as a draft without the dependency
41
- * edge the loud failure is itself the signal for curator
42
- * reconciliation. Drafts persist as `new`-status writs under the
43
- * mandate; they are invisible to the Spider until a curator
44
- * publishes them, and the precedence edge then takes effect.
45
- * - Does not mutate the plandoc — the parent-child edge from
46
- * `clerk.post` and the `spider.follows` edge from `clerk.link`
47
- * together form the audit trail.
55
+ * `clerk.link`. Already-created writs and links persist; rollback
56
+ * is not attempted. The loud failure is itself the signal for
57
+ * curator reconciliation.
58
+ * - In grouped mode, the per-record post-then-link pattern is
59
+ * preceded by a group-first post-then-link for the container, so a
60
+ * mid-loop failure leaves a coherent prefix (group parent + its
61
+ * edge + zero or more fully-wired children) behind.
62
+ * - Does not mutate the plandoc — the persisted writs and links form
63
+ * the audit trail.
48
64
  *
49
65
  * Yields:
50
- * `{ writIds }` — the ids of the draft writs created, in the same
51
- * order as the observation records. Empty when the engine no-ops.
66
+ * `{ writIds }` — the ids of the draft observation writs created, in
67
+ * the same order as the observation records. The group parent id
68
+ * (when one exists) is NOT included. Empty when the engine no-ops.
52
69
  */
53
70
  import type { EngineDesign } from '@shardworks/fabricator-apparatus';
54
71
  import type { Book } from '@shardworks/stacks-apparatus';
@@ -1 +1 @@
1
- {"version":3,"file":"observation-lift.d.ts","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAqC,MAAM,kCAAkC,CAAC;AACxG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,CAgE3F"}
1
+ {"version":3,"file":"observation-lift.d.ts","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAqC,MAAM,kCAAkC,CAAC;AACxG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAwBxD,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,CAkH3F"}
@@ -2,12 +2,46 @@
2
2
  * observation-lift clockwork engine.
3
3
  *
4
4
  * Walks the plan's `observations` array once it has reached its final
5
- * state and creates one draft mandate writ per record as a child of the
6
- * originating mandate. This turns the sage's "things we noticed but
7
- * didn't action" output from an inert note into commissionable drafts
8
- * visible in the same writ surfaces as any other mandate — a downstream
9
- * curator (human or automated) promotes each draft to `open` by hand
10
- * or via writ-publish.
5
+ * state and creates one draft writ per record, placed as top-level
6
+ * siblings of the originating mandate rather than as its children. This
7
+ * turns the sage's "things we noticed but didn't action" output from an
8
+ * inert note into commissionable drafts visible in the same writ
9
+ * surfaces as any other mandate a downstream curator (human or
10
+ * automated) promotes each draft to `open` by hand or via writ-publish.
11
+ *
12
+ * The engine runs in one of two modes, selected by record count:
13
+ *
14
+ * - Flat mode (exactly one observation record):
15
+ * * Post a single top-level draft mandate writ (no `parentId`).
16
+ * * Install two outbound edges from that writ → originating
17
+ * mandate:
18
+ * - `astrolabe.lifted-from` (label "lifted from") carrying
19
+ * the provenance relationship, and
20
+ * - `spider.follows` (label "depends on") carrying the
21
+ * precedence-dependency gate.
22
+ *
23
+ * - Grouped mode (two or more observation records):
24
+ * * Post a single top-level draft writ of type `observation-set`
25
+ * whose title embeds the originating mandate's title
26
+ * (`Observations from "{title}"`) and whose body is a short
27
+ * preamble naming the originating writ followed by a numbered
28
+ * list of the child titles.
29
+ * * Install exactly one outbound `astrolabe.lifted-from` edge
30
+ * from the group parent → originating mandate. The group parent
31
+ * carries no `spider.follows` edge (it is non-dispatchable by
32
+ * type, so a precedence edge on it would be dead data).
33
+ * * For each observation record in record order, post a draft
34
+ * mandate writ with `parentId` set to the group parent's id and
35
+ * install exactly one outbound `spider.follows` edge from that
36
+ * child → originating mandate. Children do not carry
37
+ * `astrolabe.lifted-from`; their provenance is implied by the
38
+ * group parent's edge plus the parent-child relationship.
39
+ *
40
+ * Both modes preserve the existing `spider.follows` gate: the
41
+ * originating mandate is still the blocker, so Spider's `trySpawn` gate
42
+ * will hold each lifted writ (flat) or each child (grouped) until the
43
+ * mandate reaches a terminal state (release on completed/cancelled,
44
+ * cascade to stuck on failed).
11
45
  *
12
46
  * Behavior:
13
47
  * - Validates that the plan exists and its status is `completed`.
@@ -15,42 +49,44 @@
15
49
  * observation-lift runs after plan-finalize, which transitions the
16
50
  * plan to `completed`.)
17
51
  * - Silently no-ops if `plan.observations` is not an array (legacy
18
- * string-shaped plandocs) or is an empty array.
19
- * - Otherwise, iterates the array in order and, per record:
20
- * 1. Calls `clerk.post({ type: 'mandate', title, body, codex,
21
- * parentId, draft })` to create a draft mandate writ as a
22
- * child of the originating mandate. The mandate writ must
23
- * still be in a non-terminal phase at this point — the engine
24
- * runs before seal, which is what finally transitions the
25
- * mandate to `completed`.
26
- * 2. Calls `clerk.link(newWritId, planId, 'depends on',
27
- * 'spider.follows')` to install a precedence-dependency edge
28
- * from the newly posted draft back to the originating mandate.
29
- * The lifted observations describe concerns that presume the
30
- * originating mandate has shipped; this link enlists the
31
- * Spider's `trySpawn` gate to hold each lifted writ until the
32
- * originating mandate reaches a terminal state (release on
33
- * `completed`/`cancelled`, cascade to `stuck` on `failed`).
34
- * - Emits two complementary edges per observation: the parent-child
35
- * edge from `clerk.post` (provenance / audit trail) and the
36
- * `spider.follows` edge from `clerk.link` (precedence gating).
52
+ * string-shaped plandocs) or is an empty array, yielding
53
+ * `{ writIds: [] }`.
37
54
  * - Fails fast on the first error from either `clerk.post` or
38
- * `clerk.link`. Already-created post+link pairs persist under the
39
- * mandate; if the failure is in `clerk.link`, the writ for the
40
- * current observation persists as a draft without the dependency
41
- * edge the loud failure is itself the signal for curator
42
- * reconciliation. Drafts persist as `new`-status writs under the
43
- * mandate; they are invisible to the Spider until a curator
44
- * publishes them, and the precedence edge then takes effect.
45
- * - Does not mutate the plandoc — the parent-child edge from
46
- * `clerk.post` and the `spider.follows` edge from `clerk.link`
47
- * together form the audit trail.
55
+ * `clerk.link`. Already-created writs and links persist; rollback
56
+ * is not attempted. The loud failure is itself the signal for
57
+ * curator reconciliation.
58
+ * - In grouped mode, the per-record post-then-link pattern is
59
+ * preceded by a group-first post-then-link for the container, so a
60
+ * mid-loop failure leaves a coherent prefix (group parent + its
61
+ * edge + zero or more fully-wired children) behind.
62
+ * - Does not mutate the plandoc — the persisted writs and links form
63
+ * the audit trail.
48
64
  *
49
65
  * Yields:
50
- * `{ writIds }` — the ids of the draft writs created, in the same
51
- * order as the observation records. Empty when the engine no-ops.
66
+ * `{ writIds }` — the ids of the draft observation writs created, in
67
+ * the same order as the observation records. The group parent id
68
+ * (when one exists) is NOT included. Empty when the engine no-ops.
52
69
  */
53
70
  import { guild } from '@shardworks/nexus-core';
71
+ /**
72
+ * Fixed threshold above which observation-lift produces a grouped
73
+ * output (one top-level `observation-set` container with N draft
74
+ * mandate children). Below the threshold the engine posts a single
75
+ * flat top-level draft mandate. Kept as a module-local constant — not
76
+ * exposed via AstrolabeConfig — because no second consumer demands
77
+ * configurability.
78
+ */
79
+ const GROUPING_THRESHOLD = 2;
80
+ /**
81
+ * Builds the group parent's body: a short preamble naming the
82
+ * originating mandate, followed by a numbered list of child titles.
83
+ */
84
+ function buildGroupBody(originatingTitle, originatingId, observations) {
85
+ const preamble = `Lifted from the planning run of "${originatingTitle}" (${originatingId}). ` +
86
+ `Each numbered observation below is a draft mandate ready for curator promotion.`;
87
+ const lines = observations.map((obs, i) => `${i + 1}. ${obs.title}`);
88
+ return `${preamble}\n\n${lines.join('\n')}\n`;
89
+ }
54
90
  export function createObservationLiftEngine(getPlansBook) {
55
91
  return {
56
92
  id: 'astrolabe.observation-lift',
@@ -73,27 +109,57 @@ export function createObservationLiftEngine(getPlansBook) {
73
109
  };
74
110
  }
75
111
  const clerk = guild().apparatus('clerk');
112
+ // In grouped mode, we need the originating mandate's title for
113
+ // the container title. Fetch it once here; a single extra read
114
+ // against Clerk is cheap and keeps the group parent's title
115
+ // accurate if the mandate was renamed after the plan was primed.
116
+ let groupParentId;
117
+ if (observations.length >= GROUPING_THRESHOLD) {
118
+ const originating = await clerk.show(planId);
119
+ const originatingTitle = originating.title;
120
+ const groupParent = await clerk.post({
121
+ type: 'observation-set',
122
+ title: `Observations from "${originatingTitle}"`,
123
+ body: buildGroupBody(originatingTitle, planId, observations),
124
+ codex: plan.codex,
125
+ draft: true,
126
+ });
127
+ groupParentId = groupParent.id;
128
+ // Provenance edge: group parent → originating mandate. This is
129
+ // the single lifted-from anchor for the entire batch; children
130
+ // inherit provenance through their parentId + the group's edge.
131
+ await clerk.link(groupParent.id, planId, 'lifted from', 'astrolabe.lifted-from');
132
+ }
76
133
  const writIds = [];
77
134
  for (const observation of observations) {
78
135
  // Per-record: post then link before the next iteration. Errors
79
136
  // from either call propagate immediately. Already-created
80
- // drafts (and their links) persist under the mandate rollback
81
- // is not attempted; a curator reconciles by hand if needed.
82
- const writ = await clerk.post({
137
+ // drafts (and their links) persist rollback is not attempted;
138
+ // a curator reconciles by hand if needed.
139
+ const postRequest = {
83
140
  type: 'mandate',
84
141
  title: observation.title,
85
142
  body: observation.body,
86
143
  codex: plan.codex,
87
- parentId: planId,
88
144
  draft: true,
89
- });
145
+ };
146
+ if (groupParentId !== undefined) {
147
+ postRequest.parentId = groupParentId;
148
+ }
149
+ const writ = await clerk.post(postRequest);
90
150
  writIds.push(writ.id);
91
- // Install the precedence-dependency edge back to the
92
- // originating mandate so the Spider's `trySpawn` gate holds the
93
- // lifted writ until the mandate reaches a terminal state. The
94
- // newly posted draft is the precedence-successor (source); the
95
- // originating mandate is the blocker (target). A failure here
96
- // is surfaced loudly — the gate is the whole point of the lift.
151
+ if (groupParentId === undefined) {
152
+ // Flat mode: the single lifted writ also carries the
153
+ // provenance edge. (In grouped mode the group parent alone
154
+ // carries lifted-from; children trace back via parentId.)
155
+ await clerk.link(writ.id, planId, 'lifted from', 'astrolabe.lifted-from');
156
+ }
157
+ // Precedence-dependency edge back to the originating mandate
158
+ // so the Spider's `trySpawn` gate holds the lifted writ until
159
+ // the mandate reaches a terminal state. In grouped mode only
160
+ // children carry this edge — the group parent is
161
+ // non-dispatchable by type, so a spider.follows edge on it
162
+ // would be dead data.
97
163
  await clerk.link(writ.id, planId, 'depends on', 'spider.follows');
98
164
  }
99
165
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"observation-lift.js","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAM/C,MAAM,UAAU,2BAA2B,CAAC,YAAiC;IAC3E,OAAO;QACL,EAAE,EAAE,4BAA4B;QAEhC,KAAK,CAAC,GAAG,CACP,MAA+B,EAC/B,QAA0B;YAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,+DAA+D,IAAI,CAAC,MAAM,eAAe,MAAM,IAAI,CACpG,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9D,wDAAwD;gBACxD,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,EAAE,OAAO,EAAE,EAAc,EAAE;iBACpC,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,SAAS,CAAW,OAAO,CAAC,CAAC;YACnD,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,+DAA+D;gBAC/D,0DAA0D;gBAC1D,gEAAgE;gBAChE,4DAA4D;gBAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;oBAC5B,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,qDAAqD;gBACrD,gEAAgE;gBAChE,8DAA8D;gBAC9D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,gEAAgE;gBAChE,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YACpE,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,EAAE,OAAO,EAAE;aACpB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"observation-lift.js","sourceRoot":"","sources":["../../src/engines/observation-lift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAM/C;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;GAGG;AACH,SAAS,cAAc,CAAC,gBAAwB,EAAE,aAAqB,EAAE,YAA2B;IAClG,MAAM,QAAQ,GACZ,oCAAoC,gBAAgB,MAAM,aAAa,KAAK;QAC5E,iFAAiF,CAAC;IACpF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACrE,OAAO,GAAG,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAiC;IAC3E,OAAO;QACL,EAAE,EAAE,4BAA4B;QAEhC,KAAK,CAAC,GAAG,CACP,MAA+B,EAC/B,QAA0B;YAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YACvC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,+DAA+D,IAAI,CAAC,MAAM,eAAe,MAAM,IAAI,CACpG,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9D,wDAAwD;gBACxD,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,EAAE,OAAO,EAAE,EAAc,EAAE;iBACpC,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,SAAS,CAAW,OAAO,CAAC,CAAC;YAEnD,+DAA+D;YAC/D,+DAA+D;YAC/D,4DAA4D;YAC5D,iEAAiE;YACjE,IAAI,aAAiC,CAAC;YACtC,IAAI,YAAY,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;gBAC9C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC;gBAE3C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;oBACnC,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,sBAAsB,gBAAgB,GAAG;oBAChD,IAAI,EAAE,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC;oBAC5D,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;gBAE/B,+DAA+D;gBAC/D,+DAA+D;gBAC/D,gEAAgE;gBAChE,MAAM,KAAK,CAAC,IAAI,CACd,WAAW,CAAC,EAAE,EACd,MAAM,EACN,aAAa,EACb,uBAAuB,CACxB,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,+DAA+D;gBAC/D,0DAA0D;gBAC1D,gEAAgE;gBAChE,0CAA0C;gBAC1C,MAAM,WAAW,GAAoC;oBACnD,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI;iBACZ,CAAC;gBACF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,qDAAqD;oBACrD,2DAA2D;oBAC3D,0DAA0D;oBAC1D,MAAM,KAAK,CAAC,IAAI,CACd,IAAI,CAAC,EAAE,EACP,MAAM,EACN,aAAa,EACb,uBAAuB,CACxB,CAAC;gBACJ,CAAC;gBAED,6DAA6D;gBAC7D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,iDAAiD;gBACjD,2DAA2D;gBAC3D,sBAAsB;gBACtB,MAAM,KAAK,CAAC,IAAI,CACd,IAAI,CAAC,EAAE,EACP,MAAM,EACN,YAAY,EACZ,gBAAgB,CACjB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,EAAE,OAAO,EAAE;aACpB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -14,10 +14,16 @@
14
14
  *
15
15
  * The `observation-lift` engine runs after `plan-finalize` has transitioned
16
16
  * the plan to `completed` but while the brief writ itself is still `open`.
17
- * It lifts each record in `plan.observations` into a draft child writ under
18
- * the brief, so a curator (human or overseer) can promote it later. The
19
- * engine internally no-ops on empty or legacy-string observations, so it is
20
- * wired unconditionally (no `when:` guard).
17
+ * It lifts each record in `plan.observations` into a draft top-level
18
+ * `mandate` writ (never a child of the originating mandate); each lifted
19
+ * writ carries an `astrolabe.lifted-from` provenance edge and a
20
+ * `spider.follows` precedence edge back to the originating mandate. When
21
+ * the plan yields two or more observations, the engine additionally groups
22
+ * the drafts under a top-level `observation-set` container that carries the
23
+ * provenance edge on behalf of the batch. A curator (human or overseer)
24
+ * promotes each draft to open status later. The engine internally no-ops
25
+ * on empty or legacy-string observations, so it is wired unconditionally
26
+ * (no `when:` guard).
21
27
  *
22
28
  * The `reader-analyst` slot uses the astrolabe-owned
23
29
  * `astrolabe.reader-analyst` engine, which selects the primer role at
@@ -1 +1 @@
1
- {"version":3,"file":"plan-and-ship.d.ts","sourceRoot":"","sources":["../src/plan-and-ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,WA4GpC,CAAC"}
1
+ {"version":3,"file":"plan-and-ship.d.ts","sourceRoot":"","sources":["../src/plan-and-ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,WA4GpC,CAAC"}
@@ -14,10 +14,16 @@
14
14
  *
15
15
  * The `observation-lift` engine runs after `plan-finalize` has transitioned
16
16
  * the plan to `completed` but while the brief writ itself is still `open`.
17
- * It lifts each record in `plan.observations` into a draft child writ under
18
- * the brief, so a curator (human or overseer) can promote it later. The
19
- * engine internally no-ops on empty or legacy-string observations, so it is
20
- * wired unconditionally (no `when:` guard).
17
+ * It lifts each record in `plan.observations` into a draft top-level
18
+ * `mandate` writ (never a child of the originating mandate); each lifted
19
+ * writ carries an `astrolabe.lifted-from` provenance edge and a
20
+ * `spider.follows` precedence edge back to the originating mandate. When
21
+ * the plan yields two or more observations, the engine additionally groups
22
+ * the drafts under a top-level `observation-set` container that carries the
23
+ * provenance edge on behalf of the batch. A curator (human or overseer)
24
+ * promotes each draft to open status later. The engine internally no-ops
25
+ * on empty or legacy-string observations, so it is wired unconditionally
26
+ * (no `when:` guard).
21
27
  *
22
28
  * The `reader-analyst` slot uses the astrolabe-owned
23
29
  * `astrolabe.reader-analyst` engine, which selects the primer role at
@@ -1 +1 @@
1
- {"version":3,"file":"plan-and-ship.js","sourceRoot":"","sources":["../src/plan-and-ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAgB;IACjD,OAAO,EAAE;QACP;YACE,EAAE,EAAE,WAAW;YACf,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC5B;QACD;YACE,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,CAAC,WAAW,CAAC;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC5B;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,MAAM,EAAE;gBACN,MAAM,EAAE,qCAAqC;gBAC7C,GAAG,EAAE,sBAAsB;gBAC3B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;aACzC;SACF;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,CAAC,gBAAgB,CAAC;YAC5B,MAAM,EAAE,EAAE,MAAM,EAAE,4BAA4B,EAAE;SACjD;QACD;YACE,EAAE,EAAE,cAAc;YAClB,QAAQ,EAAE,wBAAwB;YAClC,QAAQ,EAAE,CAAC,iBAAiB,CAAC;YAC7B,MAAM,EAAE;gBACN,MAAM,EAAE,4BAA4B;gBACpC,GAAG,EAAE,sBAAsB;gBAC3B,IAAI,EAAE,SAAS;aAChB;SACF;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,CAAC,cAAc,CAAC;YAC1B,MAAM,EAAE,EAAE,MAAM,EAAE,4BAA4B,EAAE;SACjD;QACD;YACE,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,CAAC,iBAAiB,CAAC;YAC7B,MAAM,EAAE;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EACJ,yCAAyC;oBACzC,8DAA8D;gBAChE,GAAG,EAAE,sBAAsB;gBAC3B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;aACtC;SACF;QACD;YACE,EAAE,EAAE,eAAe;YACnB,QAAQ,EAAE,yBAAyB;YACnC,QAAQ,EAAE,CAAC,aAAa,CAAC;YACzB,MAAM,EAAE,EAAE,MAAM,EAAE,4BAA4B,EAAE;SACjD;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,QAAQ,EAAE,4BAA4B;YACtC,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,MAAM,EAAE,EAAE,MAAM,EAAE,4BAA4B,EAAE;SACjD;QACD;YACE,EAAE,EAAE,WAAW;YACf,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,CAAC,kBAAkB,CAAC;YAC9B,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,8BAA8B;aACvC;SACF;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,CAAC,WAAW,CAAC;YACvB,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,sBAAsB;gBACpC,WAAW,EAAE,qBAAqB;aACnC;SACF;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE;SAClD;QACD;YACE,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,MAAM,EAAE,EAAE;SACX;KACF;IACD,gBAAgB,EAAE,MAAM;CACzB,CAAC"}
1
+ {"version":3,"file":"plan-and-ship.js","sourceRoot":"","sources":["../src/plan-and-ship.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -19,9 +19,13 @@ export interface PlanDoc {
19
19
  * Primer observations: refactoring opportunities, risks, conventions.
20
20
  *
21
21
  * Each entry is an atomic, commissionable concern — the
22
- * `astrolabe.observation-lift` engine lifts each record into a
23
- * draft child writ under the originating brief so a curator
24
- * (human or automated) can promote it to open status.
22
+ * `astrolabe.observation-lift` engine lifts each record into a draft
23
+ * top-level `mandate` writ (never a child of the originating mandate),
24
+ * attaching an `astrolabe.lifted-from` provenance edge back to the
25
+ * originating mandate. When the plan yields two or more observations,
26
+ * the engine additionally groups the drafts under a top-level
27
+ * `observation-set` container. A curator (human or automated) then
28
+ * promotes each draft to open status.
25
29
  */
26
30
  observations?: Observation[];
27
31
  /** Scope items: what's in and what's out. */
@@ -52,8 +56,12 @@ export interface ScopeItem {
52
56
  * Each observation names one concern — a refactoring opportunity,
53
57
  * risk, convention drift, or bug — that the sage noticed but that
54
58
  * is outside the brief's scope. Observations flow downstream into
55
- * the `astrolabe.observation-lift` engine, which creates one draft
56
- * brief writ per record as a child of the originating brief.
59
+ * the `astrolabe.observation-lift` engine, which lifts each record
60
+ * into a draft top-level `mandate` writ (never a child of the
61
+ * originating mandate). The provenance relationship rides on the
62
+ * kit-registered `astrolabe.lifted-from` link kind. When a plan
63
+ * yields two or more observations, the engine additionally groups
64
+ * the drafts under a top-level `observation-set` container.
57
65
  *
58
66
  * Fields are deliberately minimal (D1 in the commission spec):
59
67
  * - `id` — plandoc-local identifier assigned by the sage (e.g. `obs-1`).
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardworks/astrolabe-apparatus",
3
- "version": "0.1.266",
3
+ "version": "0.1.267",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,17 +20,17 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "zod": "4.3.6",
23
- "@shardworks/stacks-apparatus": "0.1.266",
24
- "@shardworks/tools-apparatus": "0.1.266",
25
- "@shardworks/clerk-apparatus": "0.1.266",
26
- "@shardworks/fabricator-apparatus": "0.1.266",
27
- "@shardworks/spider-apparatus": "0.1.266",
28
- "@shardworks/loom-apparatus": "0.1.266",
29
- "@shardworks/animator-apparatus": "0.1.266"
23
+ "@shardworks/stacks-apparatus": "0.1.267",
24
+ "@shardworks/tools-apparatus": "0.1.267",
25
+ "@shardworks/clerk-apparatus": "0.1.267",
26
+ "@shardworks/fabricator-apparatus": "0.1.267",
27
+ "@shardworks/spider-apparatus": "0.1.267",
28
+ "@shardworks/animator-apparatus": "0.1.267",
29
+ "@shardworks/loom-apparatus": "0.1.267"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "25.5.0",
33
- "@shardworks/nexus-core": "0.1.266"
33
+ "@shardworks/nexus-core": "0.1.267"
34
34
  },
35
35
  "files": [
36
36
  "dist",
@@ -192,7 +192,7 @@ Accumulate a punch list of things noticed during your pass that are outside the
192
192
  - **Doc/code discrepancies** found during inventory
193
193
  - **Potential bugs or risks** noticed in adjacent code
194
194
 
195
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine creates one draft brief writ per record as a child of the originating brief, so a curator (human or automated) can promote it to open status. Your job is to package the concerns; you do not decide which ones get promoted.
195
+ 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.
196
196
 
197
197
  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.
198
198
 
@@ -188,7 +188,7 @@ Accumulate a punch list of things noticed during analysis that are outside the b
188
188
  - **Doc/code discrepancies** found during inventory
189
189
  - **Potential bugs or risks** noticed in adjacent code
190
190
 
191
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine creates one draft brief writ per record as a child of the originating brief, so a curator (human or automated) can promote it to open status. Your job is to package the concerns; you do not decide which ones get promoted.
191
+ 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.
192
192
 
193
193
  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.
194
194
 
@@ -223,7 +223,7 @@ Accumulate a punch list of things noticed during your pass that are outside the
223
223
  - **Doc/code discrepancies** found during inventory
224
224
  - **Potential bugs or risks** noticed in adjacent code
225
225
 
226
- Each observation is **one record per atomic concern**. Downstream, the `astrolabe.observation-lift` engine creates one draft brief writ per record as a child of the originating brief, so a curator (human or automated) can promote it to open status. Your job is to package the concerns; you do not decide which ones get promoted.
226
+ 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.
227
227
 
228
228
  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.
229
229