@jstn-sdk/ma 0.1.11 → 0.1.13

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.
Files changed (159) hide show
  1. package/.codex/agents/Architect.toml +0 -2
  2. package/.codex/agents/Auditor.toml +0 -2
  3. package/.codex/agents/Builder.toml +0 -2
  4. package/.codex/agents/Flow.toml +0 -2
  5. package/.codex/agents/Sage.toml +0 -2
  6. package/.codex/agents/Vibe.toml +0 -2
  7. package/.codex/hooks.json +14 -13
  8. package/.codex/prompts/enforcement.md +4 -0
  9. package/.codex/prompts/skill-contract.md +4 -0
  10. package/COVERAGE.md +211 -0
  11. package/DEMO.md +265 -0
  12. package/README.md +287 -37
  13. package/bin/ma.js +232 -71
  14. package/data/clone-data.ledger.json +41 -0
  15. package/data/clone-data.proof.json +50 -0
  16. package/data/clone-data.rvf +37 -0
  17. package/docs/README.md +7 -1
  18. package/docs/getting-started.md +108 -37
  19. package/docs/installed-sdk.md +23 -0
  20. package/docs/mcp-setup.md +65 -1
  21. package/docs/onboarding.md +18 -2
  22. package/docs/prompt-guidance-contract.md +17 -0
  23. package/docs/prompt-guidance-fragments/active-autonomy-core.md +7 -0
  24. package/docs/qa/release-issue-gates-0.1.13.json +644 -0
  25. package/docs/qa/release-readiness-0.1.13.md +116 -0
  26. package/docs/qa/release-readiness-0.1.5.md +1 -1
  27. package/docs/reference/native-engineering-patterns.md +35 -0
  28. package/docs/reference/native-security-playbooks.md +27 -0
  29. package/docs/reference/native-source-selection.md +27 -0
  30. package/docs/reference/native-style-and-deslop.md +20 -0
  31. package/docs/release-spec.md +37 -10
  32. package/docs/skills-publishing.md +25 -1
  33. package/docs/skills.md +37 -12
  34. package/index.js +222 -2
  35. package/mcp/collections.json +23 -6
  36. package/mcp/local/code-intel.js +113 -0
  37. package/mcp/local/memory.js +46 -0
  38. package/mcp/local/playbooks.js +168 -0
  39. package/mcp/local/state.js +71 -0
  40. package/mcp/local/team-run.js +113 -0
  41. package/mcp/local/trace.js +60 -0
  42. package/mcp/local-capabilities.json +56 -0
  43. package/mcp/native-playbooks.json +117 -0
  44. package/mcp/servers.json +34 -0
  45. package/package.json +8 -2
  46. package/plugins/meta-architect/.app.json +1 -1
  47. package/plugins/meta-architect/.codex-plugin/plugin.json +4 -4
  48. package/plugins/meta-architect/.mcp.json +1 -1
  49. package/plugins/meta-architect/README.md +34 -1
  50. package/plugins/meta-architect/obsidian/main.js +401 -0
  51. package/plugins/meta-architect/obsidian/manifest.json +9 -0
  52. package/plugins/meta-architect/obsidian/styles.css +7 -0
  53. package/plugins/meta-architect/skills/align/SKILL.md +24 -0
  54. package/plugins/meta-architect/skills/align/agents/openai.yaml +4 -0
  55. package/plugins/meta-architect/skills/align/references/shared-language.md +24 -0
  56. package/plugins/meta-architect/skills/arch/SKILL.md +2 -0
  57. package/plugins/meta-architect/skills/build/SKILL.md +3 -0
  58. package/plugins/meta-architect/skills/cleanup/SKILL.md +23 -0
  59. package/plugins/meta-architect/skills/cleanup/agents/openai.yaml +4 -0
  60. package/plugins/meta-architect/skills/cleanup/references/style-and-deslop.md +18 -0
  61. package/plugins/meta-architect/skills/diagnose/SKILL.md +24 -0
  62. package/plugins/meta-architect/skills/diagnose/agents/openai.yaml +4 -0
  63. package/plugins/meta-architect/skills/flow/SKILL.md +2 -0
  64. package/plugins/meta-architect/skills/maestro/SKILL.md +36 -3
  65. package/plugins/meta-architect/skills/maestro/agents/openai.yaml +2 -2
  66. package/plugins/meta-architect/skills/maestro/references/native-ingest-map.md +44 -0
  67. package/plugins/meta-architect/skills/sage/SKILL.md +5 -1
  68. package/plugins/meta-architect/skills/sage/references/source-selection.md +36 -0
  69. package/plugins/meta-architect/skills/tdd/SKILL.md +24 -0
  70. package/plugins/meta-architect/skills/tdd/agents/openai.yaml +4 -0
  71. package/plugins/meta-architect/skills/vet/SKILL.md +5 -1
  72. package/plugins/meta-architect/skills/vet/references/security-playbooks.md +30 -0
  73. package/plugins/meta-architect/skills/vibe/SKILL.md +2 -0
  74. package/scripts/active-autonomy-hook.mjs +96 -0
  75. package/scripts/build-linux-packages.mjs +328 -0
  76. package/scripts/doctor.js +36 -4
  77. package/scripts/install.sh +28 -0
  78. package/scripts/linux-package-lib.mjs +40 -0
  79. package/scripts/linux-package-smoke.mjs +103 -0
  80. package/scripts/ralph/prompt.md +35 -0
  81. package/scripts/release-sync.js +13 -6
  82. package/scripts/release-verify.js +166 -1
  83. package/skills/align/SKILL.md +24 -0
  84. package/skills/align/agents/openai.yaml +4 -0
  85. package/skills/align/references/shared-language.md +24 -0
  86. package/skills/arch/SKILL.md +2 -0
  87. package/skills/build/SKILL.md +3 -0
  88. package/skills/cleanup/SKILL.md +23 -0
  89. package/skills/cleanup/agents/openai.yaml +4 -0
  90. package/skills/cleanup/references/style-and-deslop.md +18 -0
  91. package/skills/diagnose/SKILL.md +24 -0
  92. package/skills/diagnose/agents/openai.yaml +4 -0
  93. package/skills/flow/SKILL.md +2 -0
  94. package/skills/index.json +21 -6
  95. package/skills/maestro/SKILL.md +36 -3
  96. package/skills/maestro/agents/openai.yaml +2 -2
  97. package/skills/maestro/references/native-ingest-map.md +44 -0
  98. package/skills/sage/SKILL.md +5 -1
  99. package/skills/sage/references/source-selection.md +36 -0
  100. package/skills/tdd/SKILL.md +24 -0
  101. package/skills/tdd/agents/openai.yaml +4 -0
  102. package/skills/vet/SKILL.md +5 -1
  103. package/skills/vet/references/security-playbooks.md +30 -0
  104. package/skills/vibe/SKILL.md +2 -0
  105. package/src/bootstrap.js +141 -24
  106. package/src/build-gate.js +2 -2
  107. package/src/decision-log.js +12 -9
  108. package/src/launcher.js +4 -0
  109. package/src/mcp-config.js +130 -8
  110. package/src/mcp-live-client.js +289 -3
  111. package/src/paths.js +37 -1
  112. package/src/policy.js +1 -1
  113. package/src/release-issue-gates.js +190 -0
  114. package/src/release-state.js +30 -1
  115. package/src/runtime/active-autonomy-core.js +208 -0
  116. package/src/runtime/alignment-sentinel.js +165 -0
  117. package/src/runtime/architect-review.js +88 -0
  118. package/src/runtime/build-readiness.js +62 -0
  119. package/src/runtime/code-graph-rehearse.js +113 -0
  120. package/src/runtime/context-economy-core.js +276 -0
  121. package/src/runtime/continuity-notes.js +79 -0
  122. package/src/runtime/core-source-ingest.js +379 -0
  123. package/src/runtime/detached-provider.js +74 -0
  124. package/src/runtime/environment-awareness-core.js +460 -0
  125. package/src/runtime/exposure-catalog.js +276 -0
  126. package/src/runtime/guidance-stack.js +42 -0
  127. package/src/runtime/helper-orchestration-core.js +307 -0
  128. package/src/runtime/learning-loop-core.js +238 -0
  129. package/src/runtime/maestro-events.js +18 -0
  130. package/src/runtime/maestro-manager.js +605 -0
  131. package/src/runtime/maestro-state.js +125 -0
  132. package/src/runtime/mcp-policy.js +192 -0
  133. package/src/runtime/obsidian-integration-core.js +851 -0
  134. package/src/runtime/obsidian-plugin-bridge.js +739 -0
  135. package/src/runtime/orchestrator.js +158 -0
  136. package/src/runtime/prompt-strategy-core.js +230 -0
  137. package/src/runtime/quorum-review.js +90 -0
  138. package/src/runtime/ralph-execution-core.js +217 -0
  139. package/src/runtime/redaction-gateway.js +174 -0
  140. package/src/runtime/runtime-state.js +1223 -0
  141. package/src/runtime/semantic-recording-core.js +147 -0
  142. package/src/runtime/signal-hooks.js +67 -0
  143. package/src/runtime/skills-registry-export.js +670 -0
  144. package/src/runtime/startup-path.js +14 -0
  145. package/src/runtime/universal-plugin-broker-core.js +575 -0
  146. package/src/runtime/workspace-intelligence-runtime.js +674 -0
  147. package/src/runtime/workspace-virtualizer.js +102 -0
  148. package/src/runtime/workspaces.js +25 -0
  149. package/src/runtime-artifacts.js +407 -84
  150. package/src/skill-installer.js +53 -5
  151. package/src/skills.js +1454 -78
  152. package/src/state-sync.js +51 -8
  153. package/docs/qa/release-readiness-0.1.11.md +0 -79
  154. package/plugins/meta-architect/skills/meta-architect/SKILL.md +0 -32
  155. package/plugins/meta-architect/skills/meta-architect/agents/openai.yaml +0 -4
  156. package/skills/meta-architect/SKILL.md +0 -32
  157. package/skills/meta-architect/agents/openai.yaml +0 -4
  158. /package/plugins/meta-architect/skills/{meta-architect → maestro}/references/core-release-rules.md +0 -0
  159. /package/skills/{meta-architect → maestro}/references/core-release-rules.md +0 -0
package/bin/ma.js CHANGED
@@ -1,11 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { runBootstrap, runDoctor } from "../src/bootstrap.js";
4
- import {
5
- evaluateBuildGate,
6
- formatBuildBlockers,
7
- formatNextAllowedTriggers,
8
- } from "../src/build-gate.js";
9
4
  import { appendDecision } from "../src/decision-log.js";
10
5
  import { runCodex, shouldDelegateToCodex } from "../src/launcher.js";
11
6
  import {
@@ -15,7 +10,20 @@ import {
15
10
  validateReleaseOrigin,
16
11
  } from "../src/policy.js";
17
12
  import { loadReleaseState } from "../src/release-state.js";
18
- import { writeBuildPlanArtifact } from "../src/runtime-artifacts.js";
13
+ import { runExternalArchitectReview } from "../src/runtime/architect-review.js";
14
+ import { evaluateRuntimeBuildReadiness } from "../src/runtime/build-readiness.js";
15
+ import { ingestCoreSources } from "../src/runtime/core-source-ingest.js";
16
+ import {
17
+ appendObsidianOperationReceipt,
18
+ createObsidianNote,
19
+ deleteObsidianNote,
20
+ listObsidianNotes,
21
+ readObsidianNote,
22
+ updateObsidianNote,
23
+ writeObsidianVaultIndex,
24
+ } from "../src/runtime/obsidian-integration-core.js";
25
+ import { installObsidianPlugin } from "../src/runtime/obsidian-plugin-bridge.js";
26
+ import { createRuntimeSummary, loadRuntimeSnapshot } from "../src/runtime/runtime-state.js";
19
27
  import {
20
28
  ensureSkillsInstalled,
21
29
  ensureSupportBundleInstalled,
@@ -24,6 +32,7 @@ import {
24
32
  import {
25
33
  listSkills,
26
34
  runArch,
35
+ runBuildLane,
27
36
  runFlow,
28
37
  runIdea,
29
38
  runInit,
@@ -43,14 +52,20 @@ function printUsage() {
43
52
  console.error(" ma init");
44
53
  console.error(' ma idea "..."');
45
54
  console.error(" ma skills");
55
+ console.error(" ma core-ingest [--refresh]");
56
+ console.error(" ma obsidian-index [vault-path]");
57
+ console.error(
58
+ " ma obsidian list|read|create|update|delete|plugin-install <vault-path> [note-path] [content]",
59
+ );
46
60
  console.error(" ma sdk-path");
47
- console.error(" ma status");
48
- console.error(" ma run $maestro|$arch|$sage|$flow|$vet|$vibe|$build");
61
+ console.error(" ma status [--maestro-view]");
62
+ console.error(" ma verify --architect");
63
+ console.error(" ma run $maestro|$arch|$sage|$flow|$vet|$vibe|$build [--auto-heal] [--parallel]");
49
64
  console.error(" ma merge <source-branch> <target-branch>");
50
65
  console.error(" ma release <origin-branch> <target-branch>");
51
66
  }
52
67
 
53
- function printStatus(releaseState) {
68
+ async function printStatus(releaseState) {
54
69
  console.log("Meta-Architect Status");
55
70
  console.log("=====================");
56
71
  console.log(`Idea: ${releaseState.idea_status}`);
@@ -61,9 +76,23 @@ function printStatus(releaseState) {
61
76
  console.log(`Experience: ${releaseState.experience_status}`);
62
77
  console.log(`Build: ${releaseState.build_status}`);
63
78
 
64
- const evaluation = evaluateBuildGate(releaseState);
79
+ const runtimeSummary = createRuntimeSummary(await loadRuntimeSnapshot());
80
+ console.log(
81
+ `Core source snapshots: ${runtimeSummary.coreSourceIngestCount} (${runtimeSummary.coreSourceIngestStatus})`,
82
+ );
83
+ console.log(`Obsidian vault notes: ${runtimeSummary.obsidianVaultNoteCount}`);
84
+ console.log(`Obsidian CRUD receipts: ${runtimeSummary.obsidianVaultOperationCount}`);
85
+ if (
86
+ releaseState.build_status === "DONE" &&
87
+ releaseState.merge_status !== "MERGED_TO_DEVELOPMENT"
88
+ ) {
89
+ console.log("Next allowed triggers:");
90
+ console.log("ma merge <feature/*> development");
91
+ return;
92
+ }
93
+ const evaluation = evaluateRuntimeBuildReadiness(releaseState, runtimeSummary);
65
94
  console.log("Next allowed triggers:");
66
- const triggers = formatNextAllowedTriggers(evaluation);
95
+ const triggers = evaluation.nextTriggers;
67
96
  if (triggers.length === 0) {
68
97
  console.log("$build");
69
98
  return;
@@ -74,71 +103,78 @@ function printStatus(releaseState) {
74
103
  }
75
104
  }
76
105
 
77
- async function runBuild(releaseState) {
78
- const evaluation = evaluateBuildGate(releaseState);
106
+ async function printMaestroView() {
107
+ const snapshot = await loadRuntimeSnapshot();
108
+ const trackEntries = Object.entries(snapshot.maestroState.runtime_tracks);
109
+ console.log("Maestro View");
110
+ console.log("============");
111
+ console.log(`Global status: ${snapshot.maestroState.global_status}`);
112
+ console.log(`Orchestration id: ${snapshot.maestroState.orchestration_id ?? "not started"}`);
113
+ console.log("Runtime tracks:");
114
+ if (trackEntries.length === 0) {
115
+ console.log("- none");
116
+ } else {
117
+ for (const [trackId, track] of trackEntries) {
118
+ console.log(`- ${trackId}: ${track.active_gate} [${track.status}]`);
119
+ if (Array.isArray(track.blockers) && track.blockers.length > 0) {
120
+ console.log(` blockers: ${track.blockers.join("; ")}`);
121
+ }
122
+ }
123
+ }
79
124
 
80
- if (!evaluation.allowed) {
81
- const blockers = formatBuildBlockers(evaluation);
82
- await writeBuildPlanArtifact({
83
- allowed: false,
84
- blockers,
85
- nextTriggers: formatNextAllowedTriggers(evaluation),
86
- });
87
- await appendDecision({
88
- decision: "Blocked build execution",
89
- status: "BLOCKED",
90
- evidence: [
91
- {
92
- kind: "release-state",
93
- path: ".ma/release.json",
94
- },
95
- ],
96
- blockers,
97
- next_allowed_triggers: formatNextAllowedTriggers(evaluation),
98
- });
125
+ const lockEntries = Object.entries(snapshot.maestroState.downstream_lock_table);
126
+ console.log("Downstream locks:");
127
+ if (lockEntries.length === 0) {
128
+ console.log("- none");
129
+ return;
130
+ }
99
131
 
132
+ for (const [gate, lock] of lockEntries) {
133
+ console.log(`- ${gate}: ${lock.is_locked ? "locked" : "unlocked"}`);
134
+ if (Array.isArray(lock.locked_by) && lock.locked_by.length > 0) {
135
+ console.log(` locked by: ${lock.locked_by.join(", ")}`);
136
+ }
137
+ if (lock.unlock_criteria) {
138
+ console.log(` unlock criteria: ${lock.unlock_criteria}`);
139
+ }
140
+ }
141
+ }
142
+
143
+ async function runBuild() {
144
+ const result = await runBuildLane();
145
+ if (result.status === "BLOCKED") {
100
146
  console.error("Build is locked.");
101
- for (const blocker of blockers) {
147
+ for (const blocker of result.blockers) {
102
148
  console.error(`- ${blocker}`);
103
149
  }
104
150
  process.exitCode = 1;
105
151
  return;
106
152
  }
107
153
 
108
- const suggestedBranches = ["feature/ui", "feature/api"];
109
- await writeBuildPlanArtifact({
110
- allowed: true,
111
- blockers: [],
112
- nextTriggers: ["$build"],
113
- suggestedBranches,
114
- });
115
- await appendDecision({
116
- kind: "skill",
117
- skill: "$build",
118
- decision: "Build gate ready",
119
- status: "READY",
120
- evidence: [
121
- {
122
- kind: "release-state",
123
- path: ".ma/release.json",
124
- },
125
- {
126
- branches: ["feature/ui", "feature/api"],
127
- },
128
- ],
129
- blockers: [],
130
- next_allowed_triggers: ["$build"],
131
- });
154
+ if (result.status === "READY") {
155
+ const suggestedBranches = result.suggestedBranches ?? [];
156
+ console.log("Build gate is ready.");
157
+ console.log("Suggested branches:");
158
+ for (const branch of suggestedBranches) {
159
+ console.log(`- ${branch}`);
160
+ }
161
+ console.log("Optional worktree commands:");
162
+ console.log("git worktree add ../implementation feature/implementation");
163
+ console.log("git worktree add ../verification feature/verification");
164
+ console.log("Run `ma run '$build'` again to start the bounded build execution substep.");
165
+ return;
166
+ }
132
167
 
133
- await syncStatusUpdates({ build_status: "READY" });
168
+ if (result.status === "RUNNING") {
169
+ console.log("Build gate is running the bounded execution substep.");
170
+ console.log(
171
+ "Run `ma run '$build'` again to finalize the substep and persist completion evidence.",
172
+ );
173
+ return;
174
+ }
134
175
 
135
- console.log("Build gate is green.");
136
- console.log("Suggested branches:");
137
- console.log(`- ${suggestedBranches[0]}`);
138
- console.log(`- ${suggestedBranches[1]}`);
139
- console.log("Optional worktree commands:");
140
- console.log("git worktree add ../ui feature/ui");
141
- console.log("git worktree add ../api feature/api");
176
+ console.log("Build gate completed the bounded execution substep.");
177
+ console.log("Next step: ma merge <feature/*> development");
142
178
  }
143
179
 
144
180
  async function runMerge(sourceBranch, targetBranch) {
@@ -149,7 +185,7 @@ async function runMerge(sourceBranch, targetBranch) {
149
185
  }
150
186
 
151
187
  if (!canMarkBuildDone(releaseState)) {
152
- throw new Error("Merge is blocked until build status is READY or RUNNING");
188
+ throw new Error("Merge is blocked until build status is DONE");
153
189
  }
154
190
 
155
191
  await appendDecision({
@@ -162,7 +198,6 @@ async function runMerge(sourceBranch, targetBranch) {
162
198
  });
163
199
 
164
200
  await syncStatusUpdates({
165
- build_status: "DONE",
166
201
  merge_status: "MERGED_TO_DEVELOPMENT",
167
202
  });
168
203
 
@@ -259,6 +294,111 @@ async function main() {
259
294
  return;
260
295
  }
261
296
 
297
+ if (command === "core-ingest") {
298
+ await runInit();
299
+ const manifest = await ingestCoreSources({ refresh: rest.includes("--refresh") });
300
+ console.log("Core sources ingested");
301
+ console.log(`Status: ${manifest.status}`);
302
+ console.log(`Runtime fetch required: ${manifest.runtime_fetch_required}`);
303
+ for (const source of manifest.sources) {
304
+ console.log(`${source.id}: ${source.status} ${source.local_path ?? source.repo}`);
305
+ }
306
+ if (manifest.errors?.length > 0) {
307
+ process.exitCode = 1;
308
+ }
309
+ return;
310
+ }
311
+
312
+ if (command === "obsidian-index") {
313
+ const vaultPath = arg ?? process.env.MA_OBSIDIAN_VAULT;
314
+ if (!vaultPath) {
315
+ throw new Error("Obsidian vault path required: ma obsidian-index <vault-path>");
316
+ }
317
+ await runInit();
318
+ const index = await writeObsidianVaultIndex({ vaultPath });
319
+ console.log("Obsidian vault indexed");
320
+ console.log(`Vault: ${index.vault_path}`);
321
+ console.log(`Notes: ${index.note_count}`);
322
+ console.log(`Tags: ${index.tags.length}`);
323
+ console.log(`Unresolved links: ${index.unresolved_links.length}`);
324
+ return;
325
+ }
326
+
327
+ if (command === "obsidian") {
328
+ const [action, vaultPath, notePath, ...contentParts] = rest;
329
+ if (!action || !vaultPath) {
330
+ throw new Error(
331
+ "Usage: ma obsidian list|read|create|update|delete|plugin-install <vault-path> [note-path] [content]",
332
+ );
333
+ }
334
+ await runInit();
335
+ if (action === "plugin-install") {
336
+ const receipt = await installObsidianPlugin({ vaultPath });
337
+ await appendObsidianOperationReceipt({
338
+ record_type: "obsidian_vault_operation",
339
+ operation: "plugin_install",
340
+ records_as: "vault_context",
341
+ build_evidence: false,
342
+ authority_boundary: "$maestro_or_owning_lane",
343
+ vault_path: receipt.vault_path,
344
+ relative_path: ".obsidian/plugins/meta-architect",
345
+ content_sha256: "0".repeat(64),
346
+ char_count: receipt.installed_files.join("\n").length,
347
+ performed_at: new Date().toISOString(),
348
+ });
349
+ console.log("Obsidian plugin installed");
350
+ console.log(`Vault: ${receipt.vault_path}`);
351
+ console.log(`Plugin: ${receipt.plugin_path}`);
352
+ console.log(`Enabled: ${receipt.enabled}`);
353
+ console.log(`Files: ${receipt.installed_files.join(", ")}`);
354
+ return;
355
+ }
356
+ if (action === "list") {
357
+ const list = await listObsidianNotes({ vaultPath });
358
+ console.log(`Obsidian notes: ${list.notes.length}`);
359
+ for (const note of list.notes) {
360
+ console.log(note);
361
+ }
362
+ return;
363
+ }
364
+ if (action === "read") {
365
+ const note = await readObsidianNote({ vaultPath, notePath });
366
+ console.log(`Obsidian note: ${note.relative_path}`);
367
+ console.log(note.content);
368
+ return;
369
+ }
370
+ if (action === "create") {
371
+ const receipt = await createObsidianNote({
372
+ vaultPath,
373
+ notePath,
374
+ content: contentParts.join(" "),
375
+ });
376
+ await appendObsidianOperationReceipt(receipt);
377
+ await writeObsidianVaultIndex({ vaultPath });
378
+ console.log(`Obsidian note created: ${receipt.relative_path}`);
379
+ return;
380
+ }
381
+ if (action === "update") {
382
+ const receipt = await updateObsidianNote({
383
+ vaultPath,
384
+ notePath,
385
+ content: contentParts.join(" "),
386
+ });
387
+ await appendObsidianOperationReceipt(receipt);
388
+ await writeObsidianVaultIndex({ vaultPath });
389
+ console.log(`Obsidian note updated: ${receipt.relative_path}`);
390
+ return;
391
+ }
392
+ if (action === "delete") {
393
+ const receipt = await deleteObsidianNote({ vaultPath, notePath });
394
+ await appendObsidianOperationReceipt(receipt);
395
+ await writeObsidianVaultIndex({ vaultPath });
396
+ console.log(`Obsidian note deleted: ${receipt.relative_path}`);
397
+ return;
398
+ }
399
+ throw new Error(`Unknown Obsidian action: ${action}`);
400
+ }
401
+
262
402
  if (command === "sdk-path") {
263
403
  process.stdout.write(`${getSupportBundleRoot()}\n`);
264
404
  return;
@@ -266,7 +406,22 @@ async function main() {
266
406
 
267
407
  if (command === "status") {
268
408
  const releaseState = await loadReleaseState();
269
- printStatus(releaseState);
409
+ await printStatus(releaseState);
410
+ if (rest.includes("--maestro-view")) {
411
+ await printMaestroView();
412
+ }
413
+ return;
414
+ }
415
+
416
+ if (command === "verify" && rest.includes("--architect")) {
417
+ const review = await runExternalArchitectReview({
418
+ prompt:
419
+ "Review the current Meta-Architect runtime and release-state outputs for architectural soundness.",
420
+ });
421
+ console.log(`Architect verdict: ${review.verdict}`);
422
+ if (review.summary) {
423
+ console.log(review.summary);
424
+ }
270
425
  return;
271
426
  }
272
427
 
@@ -283,14 +438,20 @@ async function main() {
283
438
  }
284
439
 
285
440
  if (command === "run" && arg === "$maestro") {
286
- await runMaestro();
441
+ await runMaestro({
442
+ autoHeal: rest.includes("--auto-heal"),
443
+ parallel: rest.includes("--parallel"),
444
+ });
287
445
  console.log("$maestro complete");
288
446
  return;
289
447
  }
290
448
 
449
+ if (command === "run" && arg === "$meta-architect") {
450
+ throw new Error("$meta-architect has been removed as a separate surface; use $maestro");
451
+ }
452
+
291
453
  if (command === "run" && arg === "$build") {
292
- const releaseState = await loadReleaseState();
293
- await runBuild(releaseState);
454
+ await runBuild();
294
455
  return;
295
456
  }
296
457
 
@@ -0,0 +1,41 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "record_type": "clone_data_ledger",
4
+ "product": "Meta-Architect",
5
+ "package": "@jstn-sdk/ma",
6
+ "release_version": "0.1.13",
7
+ "records_as": "production_evidence",
8
+ "build_evidence": true,
9
+ "entries": [
10
+ {
11
+ "id": "clone-data-proof",
12
+ "path": "data/clone-data.proof.json",
13
+ "type": "proof",
14
+ "purpose": "Records the clone-data proof claims and verification commands.",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "clone-data-ledger",
19
+ "path": "data/clone-data.ledger.json",
20
+ "type": "ledger",
21
+ "purpose": "Tracks clone-data artifact inventory and package visibility.",
22
+ "required": true
23
+ },
24
+ {
25
+ "id": "clone-data-rvf",
26
+ "path": "data/clone-data.rvf",
27
+ "type": "runtime_verification_file",
28
+ "purpose": "Defines pass/fail verification criteria for clone-data artifacts.",
29
+ "required": true
30
+ }
31
+ ],
32
+ "package_visibility": {
33
+ "package_json_files_entry": "data/",
34
+ "pack_dry_run_required": true
35
+ },
36
+ "integrity_policy": {
37
+ "empty_files_allowed": false,
38
+ "placeholder_claims_allowed": false,
39
+ "must_reference_real_paths": true
40
+ }
41
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "record_type": "clone_data_proof",
4
+ "product": "Meta-Architect",
5
+ "package": "@jstn-sdk/ma",
6
+ "release_version": "0.1.13",
7
+ "records_as": "production_evidence",
8
+ "build_evidence": true,
9
+ "subject": "clone data install and package proof contract",
10
+ "claims": [
11
+ {
12
+ "id": "jsdelivr_posix_installer",
13
+ "claim": "The recommended POSIX CLI install path is backed by a repository script addressable through jsDelivr.",
14
+ "evidence": [
15
+ "scripts/install.sh",
16
+ "README.md",
17
+ "docs/getting-started.md",
18
+ "docs/onboarding.md",
19
+ "docs/skills.md",
20
+ "plugins/meta-architect/README.md",
21
+ "docs/release-spec.md"
22
+ ]
23
+ },
24
+ {
25
+ "id": "clone_data_artifacts",
26
+ "claim": "Clone-data proof, ledger, and RVF artifacts exist as package-visible data files.",
27
+ "evidence": [
28
+ "data/clone-data.proof.json",
29
+ "data/clone-data.ledger.json",
30
+ "data/clone-data.rvf",
31
+ "package.json files includes data/"
32
+ ]
33
+ },
34
+ {
35
+ "id": "release_gate_contract",
36
+ "claim": "Release verification must preserve the jsDelivr installer and canonical npm install command in public install docs.",
37
+ "evidence": ["scripts/release-verify.js", "npm run release:check"]
38
+ }
39
+ ],
40
+ "verification_commands": [
41
+ "sh -n scripts/install.sh",
42
+ "node scripts/release-verify.js",
43
+ "node --test test/clone-data-artifacts.test.js",
44
+ "npm run release:check"
45
+ ],
46
+ "authority_boundary": {
47
+ "may_mutate_release_state": false,
48
+ "authoritative_changes_return_through": "$maestro_or_owning_lane"
49
+ }
50
+ }
@@ -0,0 +1,37 @@
1
+ # Clone Data RVF
2
+
3
+ schemaVersion: 1.0.0
4
+ record_type: clone_data_runtime_verification_file
5
+ product: Meta-Architect
6
+ package: @jstn-sdk/ma
7
+ release_version: 0.1.13
8
+
9
+ ## Purpose
10
+
11
+ This RVF defines the pass criteria for the clone-data proof and ledger artifacts.
12
+
13
+ ## Required Artifacts
14
+
15
+ - `data/clone-data.proof.json`
16
+ - `data/clone-data.ledger.json`
17
+ - `data/clone-data.rvf`
18
+
19
+ ## Pass Criteria
20
+
21
+ - Proof JSON has `record_type: clone_data_proof`.
22
+ - Ledger JSON has `record_type: clone_data_ledger`.
23
+ - Both JSON files use `schemaVersion: 1.0.0`.
24
+ - Both JSON files record as `production_evidence`.
25
+ - Ledger entries reference all required clone-data artifacts.
26
+ - `package.json` includes `data/` so clone-data artifacts are visible in package dry-runs.
27
+ - `scripts/install.sh` remains POSIX-shell syntax valid.
28
+ - Public install docs preserve the jsDelivr one-line installer.
29
+
30
+ ## Verification Commands
31
+
32
+ ```bash
33
+ sh -n scripts/install.sh
34
+ node scripts/release-verify.js
35
+ node --test test/clone-data-artifacts.test.js
36
+ npm run release:check
37
+ ```
package/docs/README.md CHANGED
@@ -5,19 +5,25 @@ Meta-Architect documentation is organized by operator task.
5
5
  ## Start here
6
6
 
7
7
  - [Getting Started](./getting-started.md)
8
+ - [Production Demo Guide](../DEMO.md)
9
+ - [Coverage Matrix](../COVERAGE.md)
8
10
  - [Release Spec](./release-spec.md)
9
11
  - [Skills Reference](./skills.md)
12
+ - umbrella, gated lanes, and helper skill distinctions live in the Skills Reference
10
13
  - [Installed Support Bundle](./installed-sdk.md)
11
14
 
12
15
  ## Packaging and installation
13
16
 
14
17
  - [Skills Publishing](./skills-publishing.md)
18
+ - published helper-skill and plugin-mirror expectations live in Skills Publishing
19
+ - Linux-native distro package expectations live in the Release Spec and release-readiness docs
15
20
  - [MCP Setup](./mcp-setup.md)
16
21
  - [Plugin Bundle](../plugins/meta-architect/README.md)
17
22
 
18
23
  ## QA and readiness
19
24
 
20
- - [Release Readiness 0.1.11](./qa/release-readiness-0.1.11.md)
25
+ - [Release Readiness 0.1.13](./qa/release-readiness-0.1.13.md)
26
+ - [Release Issue Gates 0.1.13](./qa/release-issue-gates-0.1.13.json)
21
27
 
22
28
  ## Repo structure references
23
29