@shardworks/astrolabe-apparatus 0.1.291 → 0.1.292

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardworks/astrolabe-apparatus",
3
- "version": "0.1.291",
3
+ "version": "0.1.292",
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.291",
24
- "@shardworks/tools-apparatus": "0.1.291",
25
- "@shardworks/clerk-apparatus": "0.1.291",
26
- "@shardworks/spider-apparatus": "0.1.291",
27
- "@shardworks/fabricator-apparatus": "0.1.291",
28
- "@shardworks/loom-apparatus": "0.1.291",
29
- "@shardworks/animator-apparatus": "0.1.291",
30
- "@shardworks/clockworks-apparatus": "0.1.291"
23
+ "@shardworks/tools-apparatus": "0.1.292",
24
+ "@shardworks/stacks-apparatus": "0.1.292",
25
+ "@shardworks/clerk-apparatus": "0.1.292",
26
+ "@shardworks/spider-apparatus": "0.1.292",
27
+ "@shardworks/fabricator-apparatus": "0.1.292",
28
+ "@shardworks/loom-apparatus": "0.1.292",
29
+ "@shardworks/clockworks-apparatus": "0.1.292",
30
+ "@shardworks/animator-apparatus": "0.1.292"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "25.5.0",
34
- "@shardworks/nexus-core": "0.1.291"
34
+ "@shardworks/nexus-core": "0.1.292"
35
35
  },
36
36
  "files": [
37
37
  "dist",
@@ -73,7 +73,13 @@ When citing click-derived reasoning in a decision's `rationale`, reference the c
73
73
 
74
74
  **Goal:** Map the landscape the change operates in. Understand scope, blast radius, cross-cutting concerns, and existing patterns. Pure reading — no design thinking yet.
75
75
 
76
- Your inventory feeds a downstream spec writer who produces **intent-based briefs** (not prescriptive implementation specs). The spec writer needs to understand the *landscape* — what systems are involved, where the concerns cross-cut, what patterns constrain the design not a transcription of every type signature and function body.
76
+ Your inventory feeds a downstream spec writer who produces **intent-based briefs** directing *what* to build and *why*, not prescribing *how* the implementer should write each function. The implementer still owns implementation choices.
77
+
78
+ But "intent, not implementation" does **not** mean "no reference material." **Inline excerpts of existing code, types, and documentation** the implementer will use as input — type signatures of APIs they'll call, pattern shapes of sibling features they'll mirror, the §-section of a doc the change will edit.
79
+
80
+ The dividing line is **reference, not prescription** — inline a type signature so the implementer knows the API surface; do **not** write the function body for them. Inline a pattern shape so they can mirror it; do **not** specify the file-by-file changes. Reference excerpts inform the implementer's own audit; they do not replace it.
81
+
82
+ When you cite a file that the implementer needs no further content from (referenced only to establish blast radius or as a pointer, but no excerpt is needed and no changes are expected), annotate it with **`Do not Read.`** explicitly.
77
83
 
78
84
  **Scope and blast radius:**
79
85
  - Which packages, plugins, and systems does this change affect?
@@ -81,10 +87,12 @@ Your inventory feeds a downstream spec writer who produces **intent-based briefs
81
87
  - When the change affects a pipeline (data flows through A → B → C), trace the full chain — not just the file being modified, but the upstream producer and downstream consumer. Read the actual implementation at each stage, not just the interface.
82
88
 
83
89
  **Key types and interfaces:**
84
- - Identify the types and interfaces central to the change. Describe their shape and role you do not need to copy full signatures verbatim unless they are small and critical for understanding a decision point. The implementer will read the actual code; your job is to point them to the right places and explain what matters.
90
+ - Identify the types and interfaces central to the change and **inline their actual signatures** in the inventory, with a one-line role description alongside each.
91
+ - For very large or peripheral types where inlining would itself be expensive, summarize the shape and link — but default to inlining when the implementer will need to use the type to do the work.
85
92
 
86
93
  **Adjacent patterns:**
87
- - How do sibling features or neighboring apparatus handle the same kind of problem? Read comparable implementations if they exist (aim for 2-3). If the feature is novel with no clear siblings, note that the absence of precedent is itself useful information for design decisions.
94
+ - How do sibling features or neighboring apparatus handle the same kind of problem? Read 2-3 comparable implementations if they exist. **Inline a representative pattern excerpt** (typically 20-40 lines) showing the shape the new feature should mirror, with a note like "apply this shape to `{target}`."
95
+ - If the feature is novel with no clear siblings, note that — the absence of precedent is itself useful information for design decisions.
88
96
  - What conventions does the codebase use for this kind of thing? (File layout, naming, error handling, config shape)
89
97
 
90
98
  **Existing context:**
@@ -95,7 +103,7 @@ Your inventory feeds a downstream spec writer who produces **intent-based briefs
95
103
  - Note any places where documentation describes different behavior than the code implements. Capture them in the inventory as data points; do NOT lift to observations unless they meet the *Observations* bar (real bug, real cross-cutting design Q, real consolidation, real hidden-migration evidence).
96
104
  - **Tag drift on files the commission will already be touching as `concurrent doc updates needed`** — the implementing artificer will fix this inline as part of the work. Do not separately lift it as an observation.
97
105
 
98
- This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced) and analytical orientation (downstream agents can form decisions from your map), not in transcribing code.
106
+ This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced), inlined reference material, and analytical orientation (downstream agents can form decisions from your map).
99
107
 
100
108
  ---
101
109
 
@@ -41,7 +41,13 @@ You also have the standard file-reading tools (Read, Glob, Grep) for exploring t
41
41
 
42
42
  **Goal:** Map the landscape the change operates in. Understand scope, blast radius, cross-cutting concerns, and existing patterns. Pure reading — no design thinking yet.
43
43
 
44
- Your inventory feeds a downstream scoping primer and spec writer who produce **intent-based briefs** (not prescriptive implementation specs). They need to understand the *landscape* — what systems are involved, where the concerns cross-cut, what patterns constrain the design not a transcription of every type signature and function body.
44
+ Your inventory feeds a downstream scoping primer and spec writer who produce **intent-based briefs** directing *what* to build and *why*, not prescribing *how* the implementer should write each function. The implementer still owns implementation choices.
45
+
46
+ But "intent, not implementation" does **not** mean "no reference material." **Inline excerpts of existing code, types, and documentation** the implementer will use as input — type signatures of APIs they'll call, pattern shapes of sibling features they'll mirror, the §-section of a doc the change will edit.
47
+
48
+ The dividing line is **reference, not prescription** — inline a type signature so the implementer knows the API surface; do **not** write the function body for them. Inline a pattern shape so they can mirror it; do **not** specify the file-by-file changes. Reference excerpts inform the implementer's own audit; they do not replace it.
49
+
50
+ When you cite a file that the implementer needs no further content from (referenced only to establish blast radius or as a pointer, but no excerpt is needed and no changes are expected), annotate it with **`Do not Read.`** explicitly.
45
51
 
46
52
  **Scope and blast radius:**
47
53
  - Which packages, plugins, and systems does this change affect?
@@ -49,10 +55,12 @@ Your inventory feeds a downstream scoping primer and spec writer who produce **i
49
55
  - When the change affects a pipeline (data flows through A → B → C), trace the full chain — not just the file being modified, but the upstream producer and downstream consumer. Read the actual implementation at each stage, not just the interface.
50
56
 
51
57
  **Key types and interfaces:**
52
- - Identify the types and interfaces central to the change. Describe their shape and role you do not need to copy full signatures verbatim unless they are small and critical for understanding a decision point. The implementer will read the actual code; your job is to point them to the right places and explain what matters.
58
+ - Identify the types and interfaces central to the change and **inline their actual signatures** in the inventory, with a one-line role description alongside each.
59
+ - For very large or peripheral types where inlining would itself be expensive, summarize the shape and link — but default to inlining when the implementer will need to use the type to do the work.
53
60
 
54
61
  **Adjacent patterns:**
55
- - How do sibling features or neighboring apparatus handle the same kind of problem? Read comparable implementations if they exist (aim for 2-3). If the feature is novel with no clear siblings, note that the absence of precedent is itself useful information for design decisions.
62
+ - How do sibling features or neighboring apparatus handle the same kind of problem? Read 2-3 comparable implementations if they exist. **Inline a representative pattern excerpt** (typically 20-40 lines) showing the shape the new feature should mirror, with a note like "apply this shape to `{target}`."
63
+ - If the feature is novel with no clear siblings, note that — the absence of precedent is itself useful information for design decisions.
56
64
  - What conventions does the codebase use for this kind of thing? (File layout, naming, error handling, config shape)
57
65
 
58
66
  **Existing context:**
@@ -72,7 +80,7 @@ Your inventory feeds a downstream scoping primer and spec writer who produce **i
72
80
  - **`live`** — still open. Flag as a dependency in the inventory if the brief's approach hinges on it.
73
81
  - **`dropped`** — abandoned; context only, not load-bearing.
74
82
 
75
- This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced) and analytical orientation (downstream agents can form decisions from your map), not in transcribing code.
83
+ This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced), inlined reference material, and analytical orientation (downstream agents can form decisions from your map).
76
84
 
77
85
  ### Boundaries
78
86
 
@@ -73,7 +73,13 @@ When citing click-derived reasoning in a decision's `rationale`, reference the c
73
73
 
74
74
  **Goal:** Map the landscape the change operates in. Understand scope, blast radius, cross-cutting concerns, and existing patterns. Pure reading — no design thinking yet.
75
75
 
76
- Your inventory feeds a downstream spec writer who produces **intent-based briefs** (not prescriptive implementation specs). The spec writer needs to understand the *landscape* — what systems are involved, where the concerns cross-cut, what patterns constrain the design not a transcription of every type signature and function body.
76
+ Your inventory feeds a downstream spec writer who produces **intent-based briefs** directing *what* to build and *why*, not prescribing *how* the implementer should write each function. The implementer still owns implementation choices.
77
+
78
+ But "intent, not implementation" does **not** mean "no reference material." **Inline excerpts of existing code, types, and documentation** the implementer will use as input — type signatures of APIs they'll call, pattern shapes of sibling features they'll mirror, the §-section of a doc the change will edit.
79
+
80
+ The dividing line is **reference, not prescription** — inline a type signature so the implementer knows the API surface; do **not** write the function body for them. Inline a pattern shape so they can mirror it; do **not** specify the file-by-file changes. Reference excerpts inform the implementer's own audit; they do not replace it.
81
+
82
+ When you cite a file that the implementer needs no further content from (referenced only to establish blast radius or as a pointer, but no excerpt is needed and no changes are expected), annotate it with **`Do not Read.`** explicitly.
77
83
 
78
84
  **Scope and blast radius:**
79
85
  - Which packages, plugins, and systems does this change affect?
@@ -81,10 +87,12 @@ Your inventory feeds a downstream spec writer who produces **intent-based briefs
81
87
  - When the change affects a pipeline (data flows through A → B → C), trace the full chain — not just the file being modified, but the upstream producer and downstream consumer. Read the actual implementation at each stage, not just the interface.
82
88
 
83
89
  **Key types and interfaces:**
84
- - Identify the types and interfaces central to the change. Describe their shape and role you do not need to copy full signatures verbatim unless they are small and critical for understanding a decision point. The implementer will read the actual code; your job is to point them to the right places and explain what matters.
90
+ - Identify the types and interfaces central to the change and **inline their actual signatures** in the inventory, with a one-line role description alongside each.
91
+ - For very large or peripheral types where inlining would itself be expensive, summarize the shape and link — but default to inlining when the implementer will need to use the type to do the work.
85
92
 
86
93
  **Adjacent patterns:**
87
- - How do sibling features or neighboring apparatus handle the same kind of problem? Read comparable implementations if they exist (aim for 2-3). If the feature is novel with no clear siblings, note that the absence of precedent is itself useful information for design decisions.
94
+ - How do sibling features or neighboring apparatus handle the same kind of problem? Read 2-3 comparable implementations if they exist. **Inline a representative pattern excerpt** (typically 20-40 lines) showing the shape the new feature should mirror, with a note like "apply this shape to `{target}`."
95
+ - If the feature is novel with no clear siblings, note that — the absence of precedent is itself useful information for design decisions.
88
96
  - What conventions does the codebase use for this kind of thing? (File layout, naming, error handling, config shape)
89
97
 
90
98
  **Existing context:**
@@ -95,7 +103,7 @@ Your inventory feeds a downstream spec writer who produces **intent-based briefs
95
103
  - Note any places where documentation describes different behavior than the code implements. Capture them in the inventory as data points; do NOT lift to observations unless they meet the *Observations* bar (real bug, real cross-cutting design Q, real consolidation, real hidden-migration evidence).
96
104
  - **Tag drift on files the commission will already be touching as `concurrent doc updates needed`** — the implementing artificer will fix this inline as part of the work. Do not separately lift it as an observation.
97
105
 
98
- This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced) and analytical orientation (downstream agents can form decisions from your map), not in transcribing code.
106
+ This is a working document — rough, thorough, and unpolished. Do not spend effort on formatting or prose quality. Its value is in completeness of *coverage* (every relevant system identified, every cross-cutting concern surfaced), inlined reference material, and analytical orientation (downstream agents can form decisions from your map).
99
107
 
100
108
  ---
101
109
 
package/sage-writer.md CHANGED
@@ -81,9 +81,17 @@ Produce the implementation brief. The audience is the anima that will build this
81
81
 
82
82
  The brief is directive and intent-focused. The implementer sees what to build, why it matters, where the blast radius is, and how to verify the work is done — not how to write the code.
83
83
 
84
- **Critical principle: describe intent, not implementation.** The planner does not have better information about the codebase than the implementer. Both read the same code. Do not enumerate files to change, do not write type definitions, do not provide function signatures, do not write code blocks showing what the implementation should look like. These create false confidence — the implementer follows the planner's enumeration faithfully instead of doing their own audit, and any omission in the planner's list becomes a silent bug.
84
+ **Critical principle: describe intent, not implementation but DO inline reference material the implementer will use.**
85
85
 
86
- Instead: name concerns, name verification methods, name patterns to follow, and let the implementer's own codebase reading drive the implementation.
86
+ Do not enumerate files for the implementer to change, do not write function bodies, do not provide type definitions or signatures *for new code you want them to write*, do not write pseudocode for the implementation. The implementer reads the codebase and makes those choices.
87
+
88
+ Do inline reference material — *existing* types, patterns, and doc sections the new code will call into, mirror, or edit. The dividing line:
89
+
90
+ - **Inline** a type signature so the implementer knows the API surface — do **not** write the function body.
91
+ - **Inline** a pattern excerpt so the implementer can mirror it — do **not** specify the file-by-file changes.
92
+ - **Inline** a §-section of a doc the change edits — do **not** prescribe the new wording for the section.
93
+
94
+ Reference excerpts inform the implementer's own audit; they do not replace it.
87
95
 
88
96
  #### Brief format
89
97
 
@@ -149,16 +157,32 @@ Do not decompose into fine-grained per-requirement validation
149
157
  checks — that level of granularity is implementation detail.
150
158
  Aim for 3-7 signals that cover the whole brief.
151
159
 
152
- ## Existing Patterns
160
+ ## Reference Material
161
+
162
+ Inline reference material the implementer will use as input —
163
+ type signatures of APIs they'll call, pattern excerpts from
164
+ sibling features they'll mirror, §-section quotes from
165
+ documents the change will edit. Each excerpt should be the
166
+ smallest useful chunk (e.g., a 200-char type def, a 30-line
167
+ pattern excerpt).
168
+
169
+ For each excerpt, name the **source file** so the implementer
170
+ can re-derive if needed, and explain its **role** (API to call,
171
+ pattern to mirror, doc section to edit).
172
+
173
+ If a file is cited only as a pointer (referenced for blast
174
+ radius or context, but the implementer needs no further
175
+ content from it and is making no changes to it), annotate
176
+ with `Do not Read.`
153
177
 
154
- Point the implementer to comparable implementations in the
155
- codebasesibling features, neighboring apparatus, or
156
- established conventions that this change should follow. Name
157
- the specific files or modules, not abstract principles.
178
+ If the brief directs the implementer to edit a specific
179
+ section of a document e.g., "rewrite §11 of
180
+ `petitioner-registration.md`" inline the contents of §11
181
+ here.
158
182
 
159
- This section exists because the implementer reads the codebase
160
- to figure out HOW to build these pointers accelerate that
161
- reading.
183
+ Inlined material is **reference, not prescription** it
184
+ describes what already exists, never what the implementer
185
+ should write.
162
186
 
163
187
  ## What NOT To Do
164
188
 
@@ -183,7 +207,7 @@ The task manifest is appended to the brief, separated by a blank line. Use this
183
207
  <task id="t1">
184
208
  <name>Short descriptive name</name>
185
209
  <files>predicted file footprint — packages, modules, or paths this task likely touches</files>
186
- <action>Intent-level instructions — what to do, not how. Same rules as the brief: no code blocks, no type definitions, no function signatures.</action>
210
+ <action>Intent-level instructions — what to do, not how. No code blocks or new type definitions; reference material (existing types, patterns, doc excerpts) lives in the brief's Reference Material section, not in task actions.</action>
187
211
  <verify>Executable verification command the implementer can run (e.g., pnpm -w typecheck, pnpm -w test, grep -r "oldName" packages/)</verify>
188
212
  <done>Observable outcome — what is true when this task is complete</done>
189
213
  </task>
@@ -201,7 +225,7 @@ The task manifest is appended to the brief, separated by a blank line. Use this
201
225
  #### Manifest rules
202
226
 
203
227
  - **`files` is the planner's predicted blast radius, not an exhaustive list.** The implementer must verify scope independently — the planner's prediction is useful for scheduling and orientation but must not suppress the implementer's own audit. Do not caveat this per-task; it is a standing property of the manifest.
204
- - **`action` follows the same intent-not-implementation rules as the brief.** No code blocks, no type definitions, no file-by-file instructions. Name the intent and constraints.
228
+ - **`action` is pure intent.** No code blocks, no new type definitions, no file-by-file instructions name the intent and constraints. Reference material (existing types, patterns, doc excerpts) lives in the brief's Reference Material section, not in task actions; task actions point to the brief's references rather than duplicating them.
205
229
  - **`verify` is executable.** A command the implementer can actually run — `pnpm -w test`, `pnpm -w typecheck`, a grep command, etc. Not a description of what to check.
206
230
  - **`done` is outcome-level.** An observable result, not an implementation detail. "Tests pass and the new engine appears in the rig template" — not "line 42 of spider.ts has the new entry."
207
231
  - **No `type` attribute on tasks.** Tasks are just tasks.
@@ -211,8 +235,8 @@ The task manifest is appended to the brief, separated by a blank line. Use this
211
235
 
212
236
  #### Brief style rules
213
237
 
214
- - **No code blocks showing implementation.** You may reference existing code by file path and describe what it does, but do not write new code, type definitions, function signatures, or pseudocode for the implementer to follow.
215
- - **No exhaustive file lists.** Name the systems and concerns, not every file. The one exception: the Existing Patterns section may name specific files as examples to follow.
238
+ - **Inline reference, never prescription.** Inline existing types, patterns, and doc sections the implementer will use as input. Do not write function bodies, new type definitions, or pseudocode for the implementer to copy.
239
+ - **No exhaustive file lists.** Name the systems and concerns, not every file. The one exception: the Reference Material section names specific files as the source of inlined excerpts.
216
240
  - **Name concerns, not solutions.** "Every consumer of X must be updated" is better than "update file A, B, C, D."
217
241
  - **Acceptance signals are outcomes.** "The build passes and no residual references to the old name exist" — not "V1: check file A has the new name, V2: check file B has the new name."
218
242
  - Don't hedge ("might," "could," "perhaps") — commit to choices.
@@ -257,7 +281,7 @@ Validate the brief's completeness by cross-referencing against the inventory and
257
281
  - Every included scope item is covered by at least one task in the manifest.
258
282
  - Task ordering respects dependencies — no task references artifacts created by a later task.
259
283
  - Every task has an executable `verify` command and an outcome-level `done` criterion.
260
- - Task `action` content follows the intent-not-implementation rule — no code blocks, no type definitions.
284
+ - Task `action` content is pure intent — no code blocks, no new type definitions, no inline reference excerpts (those live in the brief's Reference Material section).
261
285
  - The manifest has 3–8 tasks. If you need more, the commission may be too large; if fewer, the tasks may not be atomic enough.
262
286
 
263
287
  **Implementer perspective:**