@jstn-sdk/ma 0.1.12 → 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 (177) hide show
  1. package/.agents/plugins/marketplace.json +0 -0
  2. package/.codex/agents/Architect.toml +0 -2
  3. package/.codex/agents/Auditor.toml +0 -2
  4. package/.codex/agents/Builder.toml +0 -2
  5. package/.codex/agents/Flow.toml +0 -2
  6. package/.codex/agents/Sage.toml +0 -2
  7. package/.codex/agents/Vibe.toml +0 -2
  8. package/.codex/hooks.json +14 -13
  9. package/.codex/prompts/enforcement.md +4 -0
  10. package/.codex/prompts/skill-contract.md +4 -0
  11. package/COVERAGE.md +211 -0
  12. package/DEMO.md +265 -0
  13. package/README.md +159 -16
  14. package/bin/ma.js +219 -14
  15. package/data/clone-data.ledger.json +41 -0
  16. package/data/clone-data.proof.json +50 -0
  17. package/data/clone-data.rvf +37 -0
  18. package/docs/README.md +4 -1
  19. package/docs/assets/image/Screenshot(1).png +0 -0
  20. package/docs/assets/image/Screenshot(2).png +0 -0
  21. package/docs/assets/image/Screenshot(3).png +0 -0
  22. package/docs/assets/image/Screenshot(4).png +0 -0
  23. package/docs/assets/image/Screenshot(5).png +0 -0
  24. package/docs/assets/image/Screenshot(6).png +0 -0
  25. package/docs/assets/image/Screenshot(7).png +0 -0
  26. package/docs/assets/image/Screenshot(8).png +0 -0
  27. package/docs/assets/image/Screenshot(9).png +0 -0
  28. package/docs/assets/meta-architect-logo.png +0 -0
  29. package/docs/assets/meta-architect-logo.svg +0 -0
  30. package/docs/getting-started.md +38 -22
  31. package/docs/installed-sdk.md +0 -0
  32. package/docs/mcp-setup.md +35 -0
  33. package/docs/onboarding.md +18 -2
  34. package/docs/prompt-guidance-contract.md +17 -0
  35. package/docs/prompt-guidance-fragments/active-autonomy-core.md +7 -0
  36. package/docs/qa/release-issue-gates-0.1.13.json +644 -0
  37. package/docs/qa/{release-readiness-0.1.12.md → release-readiness-0.1.13.md} +25 -9
  38. package/docs/qa/release-readiness-0.1.5.md +1 -1
  39. package/docs/reference/native-engineering-patterns.md +0 -0
  40. package/docs/reference/native-security-playbooks.md +6 -0
  41. package/docs/reference/native-source-selection.md +6 -0
  42. package/docs/reference/native-style-and-deslop.md +0 -0
  43. package/docs/release-spec.md +25 -9
  44. package/docs/skills.md +14 -1
  45. package/index.js +222 -2
  46. package/mcp/collections.json +23 -6
  47. package/mcp/local/code-intel.js +0 -0
  48. package/mcp/local/memory.js +0 -0
  49. package/mcp/local/playbooks.js +0 -0
  50. package/mcp/local/state.js +0 -0
  51. package/mcp/local/team-run.js +48 -1
  52. package/mcp/local/trace.js +0 -0
  53. package/mcp/local-capabilities.json +0 -0
  54. package/mcp/native-playbooks.json +0 -0
  55. package/mcp/servers.json +24 -0
  56. package/package.json +5 -2
  57. package/plugins/meta-architect/.app.json +1 -1
  58. package/plugins/meta-architect/.codex-plugin/plugin.json +1 -1
  59. package/plugins/meta-architect/.mcp.json +1 -1
  60. package/plugins/meta-architect/README.md +8 -1
  61. package/plugins/meta-architect/obsidian/main.js +401 -0
  62. package/plugins/meta-architect/obsidian/manifest.json +9 -0
  63. package/plugins/meta-architect/obsidian/styles.css +7 -0
  64. package/plugins/meta-architect/skills/align/SKILL.md +0 -0
  65. package/plugins/meta-architect/skills/align/agents/openai.yaml +0 -0
  66. package/plugins/meta-architect/skills/align/references/shared-language.md +0 -0
  67. package/plugins/meta-architect/skills/arch/SKILL.md +2 -0
  68. package/plugins/meta-architect/skills/arch/agents/openai.yaml +0 -0
  69. package/plugins/meta-architect/skills/build/SKILL.md +3 -0
  70. package/plugins/meta-architect/skills/build/agents/openai.yaml +0 -0
  71. package/plugins/meta-architect/skills/cleanup/SKILL.md +0 -0
  72. package/plugins/meta-architect/skills/cleanup/agents/openai.yaml +0 -0
  73. package/plugins/meta-architect/skills/cleanup/references/style-and-deslop.md +0 -0
  74. package/plugins/meta-architect/skills/diagnose/SKILL.md +0 -0
  75. package/plugins/meta-architect/skills/diagnose/agents/openai.yaml +0 -0
  76. package/plugins/meta-architect/skills/flow/SKILL.md +2 -0
  77. package/plugins/meta-architect/skills/flow/agents/openai.yaml +0 -0
  78. package/plugins/meta-architect/skills/maestro/SKILL.md +0 -0
  79. package/plugins/meta-architect/skills/maestro/agents/openai.yaml +0 -0
  80. package/plugins/meta-architect/skills/maestro/references/core-release-rules.md +0 -0
  81. package/plugins/meta-architect/skills/maestro/references/native-ingest-map.md +0 -0
  82. package/plugins/meta-architect/skills/sage/SKILL.md +2 -0
  83. package/plugins/meta-architect/skills/sage/agents/openai.yaml +0 -0
  84. package/plugins/meta-architect/skills/sage/references/source-selection.md +8 -0
  85. package/plugins/meta-architect/skills/tdd/SKILL.md +0 -0
  86. package/plugins/meta-architect/skills/tdd/agents/openai.yaml +0 -0
  87. package/plugins/meta-architect/skills/vet/SKILL.md +2 -0
  88. package/plugins/meta-architect/skills/vet/agents/openai.yaml +0 -0
  89. package/plugins/meta-architect/skills/vet/references/security-playbooks.md +7 -0
  90. package/plugins/meta-architect/skills/vibe/SKILL.md +2 -0
  91. package/plugins/meta-architect/skills/vibe/agents/openai.yaml +0 -0
  92. package/scripts/active-autonomy-hook.mjs +96 -0
  93. package/scripts/biome-staged.js +0 -0
  94. package/scripts/build-linux-packages.mjs +0 -0
  95. package/scripts/doctor.js +17 -4
  96. package/scripts/install.sh +28 -0
  97. package/scripts/linux-package-lib.mjs +0 -0
  98. package/scripts/linux-package-smoke.mjs +0 -0
  99. package/scripts/plugin-sync.js +0 -0
  100. package/scripts/postinstall.js +0 -0
  101. package/scripts/ralph/prompt.md +35 -0
  102. package/scripts/release-metadata.js +0 -0
  103. package/scripts/release-sync.js +0 -0
  104. package/scripts/release-verify.js +166 -1
  105. package/scripts/setup-npmrc.js +0 -0
  106. package/skills/align/SKILL.md +0 -0
  107. package/skills/align/agents/openai.yaml +0 -0
  108. package/skills/align/references/shared-language.md +0 -0
  109. package/skills/arch/SKILL.md +2 -0
  110. package/skills/arch/agents/openai.yaml +0 -0
  111. package/skills/build/SKILL.md +3 -0
  112. package/skills/build/agents/openai.yaml +0 -0
  113. package/skills/cleanup/SKILL.md +0 -0
  114. package/skills/cleanup/agents/openai.yaml +0 -0
  115. package/skills/cleanup/references/style-and-deslop.md +0 -0
  116. package/skills/diagnose/SKILL.md +0 -0
  117. package/skills/diagnose/agents/openai.yaml +0 -0
  118. package/skills/flow/SKILL.md +2 -0
  119. package/skills/flow/agents/openai.yaml +0 -0
  120. package/skills/maestro/SKILL.md +0 -0
  121. package/skills/maestro/agents/openai.yaml +0 -0
  122. package/skills/maestro/references/core-release-rules.md +0 -0
  123. package/skills/maestro/references/native-ingest-map.md +0 -0
  124. package/skills/sage/SKILL.md +2 -0
  125. package/skills/sage/agents/openai.yaml +0 -0
  126. package/skills/sage/references/source-selection.md +8 -0
  127. package/skills/tdd/SKILL.md +0 -0
  128. package/skills/tdd/agents/openai.yaml +0 -0
  129. package/skills/vet/SKILL.md +2 -0
  130. package/skills/vet/agents/openai.yaml +0 -0
  131. package/skills/vet/references/security-playbooks.md +7 -0
  132. package/skills/vibe/SKILL.md +2 -0
  133. package/skills/vibe/agents/openai.yaml +0 -0
  134. package/src/bootstrap.js +17 -0
  135. package/src/build-gate.js +2 -2
  136. package/src/launcher.js +4 -0
  137. package/src/mcp-live-client.js +289 -3
  138. package/src/paths.js +4 -0
  139. package/src/policy.js +1 -1
  140. package/src/release-issue-gates.js +190 -0
  141. package/src/runtime/active-autonomy-core.js +208 -0
  142. package/src/runtime/alignment-sentinel.js +165 -0
  143. package/src/runtime/architect-review.js +88 -0
  144. package/src/runtime/build-readiness.js +28 -4
  145. package/src/runtime/code-graph-rehearse.js +113 -0
  146. package/src/runtime/context-economy-core.js +276 -0
  147. package/src/runtime/continuity-notes.js +0 -0
  148. package/src/runtime/core-source-ingest.js +379 -0
  149. package/src/runtime/detached-provider.js +74 -0
  150. package/src/runtime/environment-awareness-core.js +460 -0
  151. package/src/runtime/exposure-catalog.js +276 -0
  152. package/src/runtime/guidance-stack.js +0 -0
  153. package/src/runtime/helper-orchestration-core.js +307 -0
  154. package/src/runtime/learning-loop-core.js +238 -0
  155. package/src/runtime/maestro-events.js +18 -0
  156. package/src/runtime/maestro-manager.js +19 -0
  157. package/src/runtime/maestro-state.js +125 -0
  158. package/src/runtime/mcp-policy.js +192 -0
  159. package/src/runtime/obsidian-integration-core.js +851 -0
  160. package/src/runtime/obsidian-plugin-bridge.js +739 -0
  161. package/src/runtime/orchestrator.js +0 -0
  162. package/src/runtime/prompt-strategy-core.js +230 -0
  163. package/src/runtime/quorum-review.js +90 -0
  164. package/src/runtime/ralph-execution-core.js +217 -0
  165. package/src/runtime/redaction-gateway.js +174 -0
  166. package/src/runtime/runtime-state.js +843 -2
  167. package/src/runtime/semantic-recording-core.js +147 -0
  168. package/src/runtime/signal-hooks.js +15 -0
  169. package/src/runtime/skills-registry-export.js +670 -0
  170. package/src/runtime/startup-path.js +0 -0
  171. package/src/runtime/universal-plugin-broker-core.js +575 -0
  172. package/src/runtime/workspace-intelligence-runtime.js +674 -0
  173. package/src/runtime/workspace-virtualizer.js +102 -0
  174. package/src/runtime/workspaces.js +0 -0
  175. package/src/runtime-artifacts.js +225 -62
  176. package/src/skill-installer.js +0 -0
  177. package/src/skills.js +876 -84
package/README.md CHANGED
@@ -18,9 +18,30 @@
18
18
  </div>
19
19
 
20
20
  > [!IMPORTANT]
21
- > Meta-Architect `v0.1.12` is a production-grade skills line.
21
+ > Meta-Architect `v0.1.13` is a production-grade skills line.
22
22
  > It is not a lightweight demo branch.
23
- > From `v0.1.12` onward, the package is expected to ship with stable skill contracts, deterministic packaging, explicit release gates, and honest install and publish surfaces.
23
+ > From `v0.1.13` onward, the package is expected to ship with stable skill contracts, deterministic packaging, explicit release gates, and honest install and publish surfaces.
24
+
25
+ ## Navigate
26
+
27
+ <table>
28
+ <tr>
29
+ <td><strong>Start</strong></td>
30
+ <td><a href="#cli-install">CLI Install</a> · <a href="#quick-start">Quick Start</a> · <a href="#setup">Setup</a></td>
31
+ </tr>
32
+ <tr>
33
+ <td><strong>Operate</strong></td>
34
+ <td><a href="#skill-surface">Skill Surface</a> · <a href="#gated-lanes">Gated Lanes</a> · <a href="#gate-model">Gate Model</a> · <a href="#learning-loop-core">Learning Loop Core</a></td>
35
+ </tr>
36
+ <tr>
37
+ <td><strong>Ship</strong></td>
38
+ <td><a href="#release-and-packaging">Release and Packaging</a> · <a href="#package-surface">Package Surface</a> · <a href="#release-hygiene">Release Hygiene</a></td>
39
+ </tr>
40
+ <tr>
41
+ <td><strong>Reference</strong></td>
42
+ <td><a href="#repository-structure">Repository Structure</a> · <a href="#documentation">Documentation</a> · <a href="#core-maintainers">Core Maintainers</a></td>
43
+ </tr>
44
+ </table>
24
45
 
25
46
  ## Overview
26
47
 
@@ -38,6 +59,11 @@ It adds:
38
59
  > Meta-Architect does not replace your coding runtime.
39
60
  > It wraps that runtime with architecture, evidence, gate enforcement, and release-sensitive workflow control.
40
61
 
62
+ ## Acknowledgement
63
+
64
+ Meta-Architect was shaped in part by ideas surfaced through the `oh-my-codex` ecosystem.
65
+ Acknowledgement is due for the inspiration around Codex-native workflow packaging, skill distribution, and practical delivery surfaces that helped inform this project.
66
+
41
67
  ## Support
42
68
 
43
69
  - [GitHub Sponsors](https://github.com/sponsors/JustineDevs)
@@ -62,7 +88,7 @@ It adds:
62
88
  </tr>
63
89
  <tr>
64
90
  <td><strong>Release line</strong></td>
65
- <td><code>v0.1.12</code></td>
91
+ <td><code>v0.1.13</code></td>
66
92
  </tr>
67
93
  <tr>
68
94
  <td><strong>License</strong></td>
@@ -102,9 +128,35 @@ It adds:
102
128
  > [!TIP]
103
129
  > The most reliable default environment is a Unix-like shell with Git, Node.js, and an MCP-capable runtime already configured.
104
130
 
131
+ ## CLI Install
132
+
133
+ macOS, Linux, WSL, and Git-Bash:
134
+
135
+ ```bash
136
+ # One-line install (POSIX shells only; see Windows note below)
137
+ curl -fsSL https://cdn.jsdelivr.net/gh/JustineDevs/meta-architect@main/scripts/install.sh | sh
138
+ ```
139
+
140
+ This jsDelivr-backed installer runs the canonical package install:
141
+
142
+ ```bash
143
+ npm i -g @openai/codex@latest @jstn-sdk/ma@latest
144
+ ```
145
+
146
+ Then it seeds the local MA runtime with `ma setup`. Start with:
147
+
148
+ ```bash
149
+ ma --madmax --high
150
+ ```
151
+
152
+ Windows note: use WSL or Git-Bash for the one-line POSIX installer. In PowerShell, use the npm fallback command directly.
153
+
105
154
  ## Default Install Surfaces
106
155
 
107
- Meta-Architect is a Codex-native session workflow. On Linux, the primary install surface is now distro-style package installation, not a standalone binary shell.
156
+ Meta-Architect is a Codex-native session workflow. The jsDelivr CLI installer is the recommended quick-start path for POSIX shells; Linux distro packages remain available for distro-managed installs.
157
+
158
+ <details>
159
+ <summary><strong>Platform package commands</strong></summary>
108
160
 
109
161
  ### Debian, Ubuntu, Linux Mint, Pop!_OS
110
162
 
@@ -134,6 +186,11 @@ sudo zypper install ./meta-architect-<version>-1.noarch.rpm
134
186
 
135
187
  These packages install the Meta-Architect payload and expose `ma` / `meta-architect`, but the product still runs inside a Codex-native session. They do not create a separate desktop or terminal product.
136
188
 
189
+ </details>
190
+
191
+ <details open>
192
+ <summary><strong>npm fallback and runtime assumptions</strong></summary>
193
+
137
194
  ### npm fallback
138
195
 
139
196
  ```bash
@@ -158,8 +215,9 @@ What this assumes:
158
215
  - the product experience happens through the skill workflow inside Codex
159
216
 
160
217
  > [!IMPORTANT]
161
- > On Linux, distro-native package install is the default surface.
162
- > npm remains available as a fallback path.
218
+ > The jsDelivr installer is a POSIX-shell convenience wrapper around the canonical npm install. Use the distro packages when you specifically need distro-managed install assets.
219
+
220
+ </details>
163
221
 
164
222
  ## Repository Branch Strategy
165
223
 
@@ -281,7 +339,7 @@ Required output:
281
339
  5. Data model and storage choices
282
340
  6. Auth/security considerations
283
341
  7. DX/UX considerations
284
- 8. Delivery plan for v0.1.12
342
+ 8. Delivery plan for v0.1.13
285
343
  9. Risks and trade-offs
286
344
  10. Decision log
287
345
  11. Exact next trigger to run after this
@@ -407,7 +465,7 @@ Canonical `$sage` order:
407
465
  If you need scripted repo-local validation rather than the interactive runtime workflow:
408
466
 
409
467
  ```bash
410
- ma idea "Build a real-time collaborative whiteboard for product teams"
468
+ ma idea "Prepare Meta-Architect v0.1.13 for a production package release with real install docs, Obsidian brain-context support, learning-loop reliability, and package proof artifacts."
411
469
  ma run '$arch'
412
470
  ma run '$sage'
413
471
  ma run '$flow'
@@ -461,7 +519,10 @@ ma setup
461
519
  ma init
462
520
  ma idea "Build a product"
463
521
  ma status
522
+ ma status --maestro-view
523
+ ma verify --architect
464
524
  ma run '$arch'
525
+ ma run '$maestro' --auto-heal --parallel
465
526
  ```
466
527
 
467
528
  In-session skills are prompts you use inside the Codex conversation after launch:
@@ -518,6 +579,10 @@ What to use when:
518
579
 
519
580
  ## Skill Surface
520
581
 
582
+ > [!TIP]
583
+ > Remember the surface as **manager -> gated lanes -> helpers**.
584
+ > `$maestro` coordinates, gated lanes move release state, and helper skills support without unlocking build.
585
+
521
586
  Meta-Architect’s in-session surface has three layers:
522
587
 
523
588
  - umbrella autonomous manager: `$maestro`
@@ -526,6 +591,14 @@ Meta-Architect’s in-session surface has three layers:
526
591
 
527
592
  Helper skills are publishable surfaces, but they do not own release-state transitions.
528
593
 
594
+ > [!NOTE]
595
+ > MA also discovers existing repo-local skills, MCP configs, and plugin manifests through the Environment Awareness Core.
596
+ > Discovered capabilities are `available_capability` context only: MA may select them when task-relevant, but it does not auto-run, mutate, or treat them as build evidence.
597
+
598
+ > [!NOTE]
599
+ > Universal Plugin Broker Core uses a hybrid model for cross-agent plugins: MCP stdio tooling for hosts that support MCP config injection, and `.agents/skills` context payloads for the broader supported-agent surface.
600
+ > Plugin broker receipts are compatibility configuration, not build evidence or lane approval.
601
+
529
602
  ## Core Maintainers
530
603
 
531
604
  <table>
@@ -543,17 +616,29 @@ Helper skills are publishable surfaces, but they do not own release-state transi
543
616
 
544
617
  ## Gated Lanes
545
618
 
619
+ > [!IMPORTANT]
620
+ > Read this as a release runway: **design -> evidence -> logic -> security -> experience -> build**.
621
+ > Do not skip lanes when the release gate is still locked.
622
+
623
+ <details open>
624
+ <summary><strong>Release-gated lane map</strong></summary>
625
+
546
626
  | Trigger | Purpose | Main output | Gate effect |
547
627
  | --- | --- | --- | --- |
548
628
  | `$arch` | Produce the first-pass architecture blueprint | decision entry | `architecture_status = APPROVED` |
549
629
  | `$sage` | Ground major choices in configured GitMCP evidence | evidence records | `evidence_status = VERIFIED | PARTIAL | MISSING` |
550
- | `$flow` | Review baseline logic and state transitions | logic review entry | `logic_status = GREEN | RED` |
551
- | `$vet` | Run baseline security and dependency review | audit and CVE records | `security_status = GREEN | RED` |
552
- | `$vibe` | Review developer and user experience implications | DX/UX outcome record | `experience_status = GREEN | RED | WAIVED` |
553
- | `$build` | Unlock bounded build planning | build-ready decision + `.ma/plans/build.md` | `build_status = READY` |
630
+ | `$flow` | Review baseline logic and state transitions | logic review entry | `logic_status = PENDING | GREEN | RED` |
631
+ | `$vet` | Run baseline security and dependency review | audit and CVE records | `security_status = PENDING | GREEN | RED` |
632
+ | `$vibe` | Review developer and user experience implications | DX/UX outcome record | `experience_status = PENDING | GREEN | RED | WAIVED` |
633
+ | `$build` | Run a bounded build-readiness loop | build-ready decision + `.ma/plans/build.md` | `build_status = READY | RUNNING | DONE` |
634
+
635
+ </details>
554
636
 
555
637
  ## Helper Skills
556
638
 
639
+ <details>
640
+ <summary><strong>Non-gating helper skill map</strong></summary>
641
+
557
642
  | Trigger | Purpose | Gate effect |
558
643
  | --- | --- | --- |
559
644
  | `$align` | Normalize terminology, tighten scope, and improve prompt or docs clarity | none |
@@ -561,37 +646,86 @@ Helper skills are publishable surfaces, but they do not own release-state transi
561
646
  | `$tdd` | Lock behavior with regression-first or test-first scaffolding | none |
562
647
  | `$cleanup` | Simplify noisy output and run a final-pass anti-slop cleanup | none |
563
648
 
649
+ > [!NOTE]
650
+ > Helper skills are backed by `helper_orchestration_core`.
651
+ > They write helper receipts, return authority to `$maestro` or the owning lane, and never record as gate approval.
652
+
653
+ </details>
654
+
564
655
  ## Gate Model
565
656
 
566
657
  Meta-Architect is intentionally fail-closed.
567
658
 
659
+ > [!NOTE]
660
+ > Green states allow the next safe move.
661
+ > Red or locked states preserve the blocker instead of pretending the workflow is ready.
662
+
663
+ <details open>
664
+ <summary><strong>Status vocabulary</strong></summary>
665
+
568
666
  | Status | Meaning |
569
667
  | --- | --- |
570
668
  | `CLEAR` | enough input exists to proceed |
571
669
  | `APPROVED` | the architecture lane produced an acceptable first-pass blueprint |
572
670
  | `VERIFIED` | live evidence was grounded through approved GitMCP sources |
573
671
  | `PARTIAL` | evidence is configured but live proof is incomplete or unavailable |
672
+ | `PENDING` | the lane has recorded interim review state but not final approval or rejection yet |
574
673
  | `GREEN` | the current baseline review passed |
575
674
  | `RED` | the lane is blocked or failed |
576
675
  | `WAIVED` | the lane was intentionally waived with a recorded reason |
577
676
  | `LOCKED` | downstream work is not allowed yet |
578
- | `READY` | the next gated step is allowed |
677
+ | `READY` | the next bounded gated step is prepared |
678
+ | `RUNNING` | the bounded build substep is active |
679
+ | `DONE` | the current bounded build substep completed with recorded evidence |
680
+
681
+ </details>
579
682
 
580
683
  > [!CAUTION]
581
684
  > `$build` must stay locked until the upstream release state in `.ma/release.json` satisfies the gate contract.
582
685
  > Meta-Architect is designed to stop on blockers rather than silently continue.
583
686
  > Rich runtime artifacts live in `.ma/context/`, `.ma/specs/`, `.ma/plans/`, and `.ma/runbook.md`.
584
687
 
688
+ ## Learning Loop Core
689
+
690
+ > [!NOTE]
691
+ > Meta-Architect records learnings as candidates first.
692
+ > A learning can influence future context only after it has source, evidence, authority, and a next verification path.
693
+
694
+ <details open>
695
+ <summary><strong>Reliability domains</strong></summary>
696
+
697
+ | Domain | What improves over time |
698
+ | --- | --- |
699
+ | Core & Orchestration | manager runs, lane handoffs, and autonomous routing |
700
+ | Memory & Knowledge | project notes, Obsidian vault context, and semantic receipts |
701
+ | Intelligence & Learning | prompt strategy, context budgeting, and rehearsal outcomes |
702
+ | Code Quality & Testing | test failures, build results, and execution learnings |
703
+ | Security & Compliance | trust-boundary findings, exposure scans, and redaction receipts |
704
+ | Architecture & Methodology | decisions, tradeoffs, and reusable patterns |
705
+ | DevOps & Observability | release checks, package smokes, runtime traces, and hook audits |
706
+ | Extensibility | skills, plugins, MCP policy, and host compatibility |
707
+ | Domain-Specific | stack facts, project domain notes, and trusted source context |
708
+
709
+ </details>
710
+
585
711
  ## Release and Packaging
586
712
 
587
713
  Meta-Architect has three related but different distribution surfaces.
588
714
 
715
+ > [!TIP]
716
+ > Use **npm** for the public package, **Linux packages** for distro-managed installs, and **skills bundle** when only the skill payload is needed.
717
+
718
+ <details open>
719
+ <summary><strong>Distribution surfaces</strong></summary>
720
+
589
721
  | Surface | Purpose | Produced by |
590
722
  | --- | --- | --- |
591
723
  | Linux native packages | distro-managed install assets for Debian-family and Arch-family environments | `npm run linux:packages:build` and GitHub release assets |
592
724
  | npm package | public package containing the installable Meta-Architect skills/plugin system, docs, scripts, and canonical skills | `npm publish` or `npm pack` |
593
725
  | skills bundle | narrower tarball containing `skills/` only | `npm run skills:pack` |
594
726
 
727
+ </details>
728
+
595
729
  Required packaging commands:
596
730
 
597
731
  ```bash
@@ -654,7 +788,7 @@ Release automation:
654
788
  <table>
655
789
  <tr>
656
790
  <td><strong>Included</strong></td>
657
- <td><code>bin/</code>, <code>skills/</code>, <code>docs/</code>, <code>scripts/</code>, <code>index.js</code>, <code>README.md</code>, <code>LICENSE</code></td>
791
+ <td><code>bin/</code>, <code>skills/</code>, <code>docs/</code>, <code>data/</code>, <code>scripts/</code>, <code>index.js</code>, <code>README.md</code>, <code>DEMO.md</code>, <code>COVERAGE.md</code>, <code>LICENSE</code></td>
658
792
  </tr>
659
793
  <tr>
660
794
  <td><strong>Excluded</strong></td>
@@ -664,6 +798,9 @@ Release automation:
664
798
 
665
799
  ## Repository Structure
666
800
 
801
+ > [!NOTE]
802
+ > The repository is split by responsibility: runtime prompts, public skills, plugin distribution, docs, MCP evidence config, and release tooling stay in separate folders.
803
+
667
804
  <table>
668
805
  <tr>
669
806
  <td><strong>Path</strong></td>
@@ -705,6 +842,9 @@ Release automation:
705
842
 
706
843
  ## Documentation
707
844
 
845
+ <details open>
846
+ <summary><strong>Primary docs and evidence surfaces</strong></summary>
847
+
708
848
  | Surface | Purpose |
709
849
  | --- | --- |
710
850
  | [Getting Started](./docs/getting-started.md) | end-to-end local onboarding |
@@ -713,9 +853,12 @@ Release automation:
713
853
  | [Skills Publishing](./docs/skills-publishing.md) | source-to-package pipeline |
714
854
  | [MCP Setup](./docs/mcp-setup.md) | evidence endpoint policy |
715
855
  | [Plugin README](./plugins/meta-architect/README.md) | plugin distribution surface |
716
- | [Collaborative Whiteboard Mission](./missions/collaborative-whiteboard/mission.md) | concrete scenario walkthrough |
856
+ | [Production Demo Guide](./DEMO.md) | real MA release-hardening walkthrough |
857
+ | [Coverage Matrix](./COVERAGE.md) | current verified capability and package proof map |
717
858
  | [Release Spec](./docs/release-spec.md) | release and gate policy |
718
- | [Release Readiness](./docs/qa/release-readiness-0.1.12.md) | QA evidence for the `v0.1.12` line |
859
+ | [Release Readiness](./docs/qa/release-readiness-0.1.13.md) | QA evidence for the `v0.1.13` line |
860
+
861
+ </details>
719
862
 
720
863
  ## Release Hygiene
721
864
 
package/bin/ma.js CHANGED
@@ -10,7 +10,19 @@ import {
10
10
  validateReleaseOrigin,
11
11
  } from "../src/policy.js";
12
12
  import { loadReleaseState } from "../src/release-state.js";
13
+ import { runExternalArchitectReview } from "../src/runtime/architect-review.js";
13
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";
14
26
  import { createRuntimeSummary, loadRuntimeSnapshot } from "../src/runtime/runtime-state.js";
15
27
  import {
16
28
  ensureSkillsInstalled,
@@ -40,9 +52,15 @@ function printUsage() {
40
52
  console.error(" ma init");
41
53
  console.error(' ma idea "..."');
42
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
+ );
43
60
  console.error(" ma sdk-path");
44
- console.error(" ma status");
45
- 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]");
46
64
  console.error(" ma merge <source-branch> <target-branch>");
47
65
  console.error(" ma release <origin-branch> <target-branch>");
48
66
  }
@@ -59,6 +77,19 @@ async function printStatus(releaseState) {
59
77
  console.log(`Build: ${releaseState.build_status}`);
60
78
 
61
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
+ }
62
93
  const evaluation = evaluateRuntimeBuildReadiness(releaseState, runtimeSummary);
63
94
  console.log("Next allowed triggers:");
64
95
  const triggers = evaluation.nextTriggers;
@@ -72,9 +103,46 @@ async function printStatus(releaseState) {
72
103
  }
73
104
  }
74
105
 
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
+ }
124
+
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
+ }
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
+
75
143
  async function runBuild() {
76
144
  const result = await runBuildLane();
77
- if (result.status !== "READY") {
145
+ if (result.status === "BLOCKED") {
78
146
  console.error("Build is locked.");
79
147
  for (const blocker of result.blockers) {
80
148
  console.error(`- ${blocker}`);
@@ -83,15 +151,30 @@ async function runBuild() {
83
151
  return;
84
152
  }
85
153
 
86
- const suggestedBranches = result.suggestedBranches ?? [];
87
- console.log("Build gate is green.");
88
- console.log("Suggested branches:");
89
- for (const branch of suggestedBranches) {
90
- console.log(`- ${branch}`);
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;
91
166
  }
92
- console.log("Optional worktree commands:");
93
- console.log("git worktree add ../implementation feature/implementation");
94
- console.log("git worktree add ../verification feature/verification");
167
+
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
+ }
175
+
176
+ console.log("Build gate completed the bounded execution substep.");
177
+ console.log("Next step: ma merge <feature/*> development");
95
178
  }
96
179
 
97
180
  async function runMerge(sourceBranch, targetBranch) {
@@ -102,7 +185,7 @@ async function runMerge(sourceBranch, targetBranch) {
102
185
  }
103
186
 
104
187
  if (!canMarkBuildDone(releaseState)) {
105
- 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");
106
189
  }
107
190
 
108
191
  await appendDecision({
@@ -115,7 +198,6 @@ async function runMerge(sourceBranch, targetBranch) {
115
198
  });
116
199
 
117
200
  await syncStatusUpdates({
118
- build_status: "DONE",
119
201
  merge_status: "MERGED_TO_DEVELOPMENT",
120
202
  });
121
203
 
@@ -212,6 +294,111 @@ async function main() {
212
294
  return;
213
295
  }
214
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
+
215
402
  if (command === "sdk-path") {
216
403
  process.stdout.write(`${getSupportBundleRoot()}\n`);
217
404
  return;
@@ -220,6 +407,21 @@ async function main() {
220
407
  if (command === "status") {
221
408
  const releaseState = await loadReleaseState();
222
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
+ }
223
425
  return;
224
426
  }
225
427
 
@@ -236,7 +438,10 @@ async function main() {
236
438
  }
237
439
 
238
440
  if (command === "run" && arg === "$maestro") {
239
- await runMaestro();
441
+ await runMaestro({
442
+ autoHeal: rest.includes("--auto-heal"),
443
+ parallel: rest.includes("--parallel"),
444
+ });
240
445
  console.log("$maestro complete");
241
446
  return;
242
447
  }
@@ -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
+ }