@miadi/inquiry-weave 0.6.0 → 0.6.1

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
@@ -67,7 +67,7 @@ state during a dry run. v0.4.2 restores the not-related guard on `sync --dry-run
67
67
  | `MIADI_CHRONICLE_ROOT` | — | `/srv/miadi/episodes/miadi-chronicle` |
68
68
  | `MIADI_INQUIRY_REPO` | — | `miadisabelle/Etuaptmumk-RSM` |
69
69
  | `INQUIRY_WEAVE_ISSUE_LIB` | → `/a/src/scripts/fn_github_issue.sh` → `/src/scripts/fn_github_issue.sh` | — |
70
- | `MW_API_URL` | — | `http://192.168.2.30:3940` |
70
+ | `MW_API_URL` | — | `http://127.0.0.1:8040` |
71
71
 
72
72
  ## Metadata contract
73
73
 
@@ -131,10 +131,12 @@ Sync is one-way (artefact → episode): the episode copy is a snapshot, deletion
131
131
  propagate, and local edits to the copy are flagged as `episode-copy-diverged` before
132
132
  being overwritten.
133
133
 
134
- **Vercel API evaluation note:** `https://etuaptmumk.vercel.app/` exposes only
134
+ **Deployment API evaluation note:** the deployment evaluated for this exposed only
135
135
  `/api/articles` and `/api/articles/seed` (which read `prototypes/artefacts` markdown into
136
- Redis) — there is no inquiry CRUD. It is a documented future interface; v0 has no
137
- dependency on it.
136
+ Redis) — there is no inquiry CRUD. It is a documented future interface; **v0 has no
137
+ dependency on it**, so no host is named here: the URL belongs to a deployment, not to the
138
+ package, and hard-coding one into a published README ships someone's infrastructure to
139
+ everybody who installs it. Set `INQUIRY_WEAVE_API_URL` if a future version needs it.
138
140
 
139
141
  **Deferred decision, explicitly named:** absorbing IAIP into Miadi packages is out of
140
142
  scope and not planned here.
package/dist/env.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  export declare const DEFAULT_INQUIRY_ROOT = "/src/IAIP/prototypes/artefacts";
9
9
  export declare const DEFAULT_CHRONICLE_ROOT = "/srv/miadi/episodes/miadi-chronicle";
10
10
  export declare const DEFAULT_INQUIRY_REPO = "miadisabelle/Etuaptmumk-RSM";
11
- export declare const DEFAULT_MW_URL = "http://192.168.2.30:3940";
11
+ export declare const DEFAULT_MW_URL = "http://127.0.0.1:8040";
12
12
  export interface WeaveEnvOptions {
13
13
  inquiryRoot?: string;
14
14
  chronicleRoot?: string;
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,mCAAmC,CAAA;AACpE,eAAO,MAAM,sBAAsB,wCAAwC,CAAA;AAC3E,eAAO,MAAM,oBAAoB,gCAAgC,CAAA;AACjE,eAAO,MAAM,cAAc,6BAA6B,CAAA;AAExD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AASD,wBAAgB,UAAU,CACxB,OAAO,GAAE,eAAoB,EAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,QAAQ,CAUV"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,mCAAmC,CAAA;AACpE,eAAO,MAAM,sBAAsB,wCAAwC,CAAA;AAC3E,eAAO,MAAM,oBAAoB,gCAAgC,CAAA;AACjE,eAAO,MAAM,cAAc,0BAA0B,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AASD,wBAAgB,UAAU,CACxB,OAAO,GAAE,eAAoB,EAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,QAAQ,CAUV"}
package/dist/env.js CHANGED
@@ -8,7 +8,7 @@
8
8
  export const DEFAULT_INQUIRY_ROOT = "/src/IAIP/prototypes/artefacts";
9
9
  export const DEFAULT_CHRONICLE_ROOT = "/srv/miadi/episodes/miadi-chronicle";
10
10
  export const DEFAULT_INQUIRY_REPO = "miadisabelle/Etuaptmumk-RSM";
11
- export const DEFAULT_MW_URL = "http://192.168.2.30:3940";
11
+ export const DEFAULT_MW_URL = "http://127.0.0.1:8040";
12
12
  function firstNonEmpty(...values) {
13
13
  for (const value of values) {
14
14
  if (value !== undefined && value.trim() !== "")
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,gCAAgC,CAAA;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAA;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAA;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAA;AAgBxD,SAAS,aAAa,CAAC,GAAG,MAA8B;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,UAA2B,EAAE,EAC7B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO;QACL,WAAW,EACT,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,YAAY,CAAC;YAC5E,oBAAoB;QACtB,aAAa,EACX,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,oBAAoB,CAAC,IAAI,sBAAsB;QAC1F,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,IAAI,oBAAoB;QACjF,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,cAAc;KACtE,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,gCAAgC,CAAA;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAA;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAA;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAA;AAgBrD,SAAS,aAAa,CAAC,GAAG,MAA8B;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,UAA2B,EAAE,EAC7B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO;QACL,WAAW,EACT,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,YAAY,CAAC;YAC5E,oBAAoB;QACtB,aAAa,EACX,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,oBAAoB,CAAC,IAAI,sBAAsB;QAC1F,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,IAAI,oBAAoB;QACjF,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,cAAc;KACtE,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@miadi/inquiry-weave",
3
- "version": "0.6.0",
4
- "description": "Relate and sync IAIP inquiry artefacts, their GitHub issues, and miadi-chronicle episodes. Creates vessels and relations only — never inquiry content.",
3
+ "version": "0.6.1",
4
+ "description": "Relate and sync IAIP inquiry artefacts, their GitHub issues, and miadi-chronicle episodes. Creates vessels and relations only \u2014 never inquiry content.",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -23,9 +23,14 @@
23
23
  "README.md",
24
24
  "rispecs"
25
25
  ],
26
+ "scripts": {
27
+ "build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
28
+ "test": "npm run build && node --test test/*.test.mjs",
29
+ "prepublishOnly": "npm run build"
30
+ },
26
31
  "dependencies": {
27
- "yaml": "^2.5.0",
28
- "@miadi/episodic-memory-schema": "0.5.1"
32
+ "@miadi/episodic-memory-schema": "workspace:*",
33
+ "yaml": "^2.5.0"
29
34
  },
30
35
  "devDependencies": {
31
36
  "typescript": "^5.4.0"
@@ -43,9 +48,5 @@
43
48
  "url": "git+https://github.com/jgwill/Miadi.git",
44
49
  "directory": "packages/inquiry-weave"
45
50
  },
46
- "license": "MIT",
47
- "scripts": {
48
- "build": "../../node_modules/.bin/tsc -p tsconfig.build.json",
49
- "test": "npm run build && node --test test/*.test.mjs"
50
- }
51
- }
51
+ "license": "MIT"
52
+ }
@@ -0,0 +1,104 @@
1
+ # Proposal — Foundation as a fourth weave identity
2
+
3
+ **Status:** proposal (not implemented) · **Date:** 2026-07-24 · **Package:** `@miadi/inquiry-weave`
4
+ **Companion:** `@miadi/episodic-memory-schema`, `@miadi/foundations`
5
+ **Related:** jgwill/Miadi#546 (packet), jgwill/Miadi#547 (`@miadi/foundations`), jgwill/Miadi#483, #506, #507
6
+
7
+ ## Context (current reality)
8
+
9
+ `inquiry-weave` weaves **three identities** of one inquiry and never generates content:
10
+
11
+ ```
12
+ inquiry artefact ◄──► GitHub issue ◄──► chronicle episode
13
+ ```
14
+
15
+ Separately, `foundations/<topic>/` packets (skill `deep-research-foundations`, now bundled by
16
+ `@miadi/foundations`) carry the **academic grounding** a decision stands on. Today nothing
17
+ relates a packet to the episode/issue/artefact it grounds — the grounding is discoverable only
18
+ by prose cross-reference. A chronicle episode cannot answer "what fields does this stand on?"
19
+
20
+ ## Desired state
21
+
22
+ A **foundation** is a first-class, weavable identity — the *grounding* relation — so an
23
+ episode (or issue, or artefact) can declare the packets that legitimize its decisions, and
24
+ forgewright/`/chronicle` can render "grounded by …" the same way they render woven inquiries.
25
+
26
+ ```
27
+ inquiry artefact ◄──► GitHub issue ◄──► chronicle episode
28
+ ▲
29
+ │ grounds
30
+ ▼
31
+ foundation packet (foundations/<slug>/ or @miadi/foundations)
32
+ ```
33
+
34
+ ## Proposed surface (additive, non-breaking)
35
+
36
+ ### 1. `weave.yaml` gains a `foundations:` block
37
+
38
+ Episode side (`<episode>/inquiry/weave.yaml`) and artefact side (`.weave.yaml`):
39
+
40
+ ```yaml
41
+ foundations:
42
+ - slug: software-supply-chain-and-release-engineering
43
+ source: repo # repo | package
44
+ packet_path: foundations/software-supply-chain-and-release-engineering # when source=repo
45
+ package: "@miadi/foundations" # when source=package
46
+ issue: jgwill/Miadi#546
47
+ fields:
48
+ - Software Supply-Chain Security
49
+ - Release Engineering & Continuous Delivery
50
+ grounded_at: 2026-07-24T00:00:00.000Z
51
+ ```
52
+
53
+ The package stays true to its mystery boundary: it records the **relation**, never authors the
54
+ packet. Resolution is read-only (a repo path or a published `@miadi/foundations` slug).
55
+
56
+ ### 2. New verb `ground` (mirrors `relate`)
57
+
58
+ ```
59
+ inquiry-weave ground --episode <ref> --foundation <slug>
60
+ [--source repo|package] [--issue owner/repo#N] [--dry-run]
61
+ ```
62
+
63
+ - Validates the packet exists (repo `foundations/<slug>/` or `@miadi/foundations` manifest).
64
+ - Appends to `weave.yaml`/`.weave.yaml` (append-if-missing, never overwrite) and to the
65
+ artefact's `AGENTS.md` back-link (`grounded by foundation <slug>`), matching `relate`.
66
+ - `--dry-run` previews with `would ground:` and writes nothing (per the global dry-run contract).
67
+
68
+ ### 3. `register` projects a foundation edge into medicine-wheel
69
+
70
+ `inquiry-weave register` gains a `miadi.foundation-ref.v1` record + a `grounds` edge from the
71
+ foundation node to the episode node (`chronicle:<episode-dir>`), so forgewright renders the
72
+ grounding on the episode card. Metadata-only, fail-open — identical guarantees to the existing
73
+ inquiry-weave registration (jgwill/Miadi#490).
74
+
75
+ ### 4. Schema companion (`@miadi/episodic-memory-schema`)
76
+
77
+ `EpisodeManifestEntry` gains an **optional** field so both renderers read groundings identically:
78
+
79
+ ```ts
80
+ /** Foundation packets this episode declares as its academic grounding. */
81
+ foundations?: FoundationRef[]
82
+ ```
83
+
84
+ `FoundationRef = { slug: string; fields?: string[]; issue?: string; source: "repo" | "package" }`.
85
+ Optional and additive → backward-compatible; the enumerator (`catalog.ts`) fills it from
86
+ `weave.yaml`, keeping the read-side unforked.
87
+
88
+ ## Boundaries / non-goals
89
+
90
+ - No packet authoring — `ground` records a relation to an existing packet only.
91
+ - No IAIP absorption; no change to the three existing identities.
92
+ - Whether groundings live on the episode, the issue, or the artefact primarily is settled at
93
+ implementation: this proposal writes them wherever `relate` already writes, keyed by episode.
94
+
95
+ ## Structural tension resolved
96
+
97
+ Between grounding that is **narratively asserted** (prose says "this stands on field X") and
98
+ grounding that is **structurally woven** (machine-readable, renderable, queryable). The `ground`
99
+ verb + `foundations:` block turns a claim into a relation the chronicle can show and QMD can index.
100
+
101
+ ## Decision requested
102
+
103
+ Approve the surface (verb name `ground` vs `relate --foundation`; block shape; schema field), then
104
+ implement behind the existing dry-run/register guarantees. Until then this file is proposal-only.
@@ -16,7 +16,7 @@ Status: **implemented in v0.2** — `register` targets `POST {MW_API_URL}/api/in
16
16
  number/slug/path) plus `lastSync` — and `toWeaveRecords(episodeWeave, inquiryRoot)`.
17
17
  - A medicine-wheel MCP server is already configured for chronicle work:
18
18
  `/a/src/Miadi/etc/mcp-config-mw-ilex.json`, server `medicine-wheel-miadi-chronicle`
19
- (`npx ${MWCV}`, `MW_API_URL=http://192.168.2.30:3940`). It is the candidate storage
19
+ (`npx ${MWCV}`, `MW_API_URL=http://127.0.0.1:8040`). It is the candidate storage
20
20
  interface; nothing registers weaves into it today.
21
21
  - forgewright renders episode data from medicine-wheel but has no notion of an Inquiry
22
22
  Weave.
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Miadi
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.