@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.
- package/.agents/plugins/marketplace.json +0 -0
- package/.codex/agents/Architect.toml +0 -2
- package/.codex/agents/Auditor.toml +0 -2
- package/.codex/agents/Builder.toml +0 -2
- package/.codex/agents/Flow.toml +0 -2
- package/.codex/agents/Sage.toml +0 -2
- package/.codex/agents/Vibe.toml +0 -2
- package/.codex/hooks.json +14 -13
- package/.codex/prompts/enforcement.md +4 -0
- package/.codex/prompts/skill-contract.md +4 -0
- package/COVERAGE.md +211 -0
- package/DEMO.md +265 -0
- package/README.md +159 -16
- package/bin/ma.js +219 -14
- package/data/clone-data.ledger.json +41 -0
- package/data/clone-data.proof.json +50 -0
- package/data/clone-data.rvf +37 -0
- package/docs/README.md +4 -1
- package/docs/assets/image/Screenshot(1).png +0 -0
- package/docs/assets/image/Screenshot(2).png +0 -0
- package/docs/assets/image/Screenshot(3).png +0 -0
- package/docs/assets/image/Screenshot(4).png +0 -0
- package/docs/assets/image/Screenshot(5).png +0 -0
- package/docs/assets/image/Screenshot(6).png +0 -0
- package/docs/assets/image/Screenshot(7).png +0 -0
- package/docs/assets/image/Screenshot(8).png +0 -0
- package/docs/assets/image/Screenshot(9).png +0 -0
- package/docs/assets/meta-architect-logo.png +0 -0
- package/docs/assets/meta-architect-logo.svg +0 -0
- package/docs/getting-started.md +38 -22
- package/docs/installed-sdk.md +0 -0
- package/docs/mcp-setup.md +35 -0
- package/docs/onboarding.md +18 -2
- package/docs/prompt-guidance-contract.md +17 -0
- package/docs/prompt-guidance-fragments/active-autonomy-core.md +7 -0
- package/docs/qa/release-issue-gates-0.1.13.json +644 -0
- package/docs/qa/{release-readiness-0.1.12.md → release-readiness-0.1.13.md} +25 -9
- package/docs/qa/release-readiness-0.1.5.md +1 -1
- package/docs/reference/native-engineering-patterns.md +0 -0
- package/docs/reference/native-security-playbooks.md +6 -0
- package/docs/reference/native-source-selection.md +6 -0
- package/docs/reference/native-style-and-deslop.md +0 -0
- package/docs/release-spec.md +25 -9
- package/docs/skills.md +14 -1
- package/index.js +222 -2
- package/mcp/collections.json +23 -6
- package/mcp/local/code-intel.js +0 -0
- package/mcp/local/memory.js +0 -0
- package/mcp/local/playbooks.js +0 -0
- package/mcp/local/state.js +0 -0
- package/mcp/local/team-run.js +48 -1
- package/mcp/local/trace.js +0 -0
- package/mcp/local-capabilities.json +0 -0
- package/mcp/native-playbooks.json +0 -0
- package/mcp/servers.json +24 -0
- package/package.json +5 -2
- package/plugins/meta-architect/.app.json +1 -1
- package/plugins/meta-architect/.codex-plugin/plugin.json +1 -1
- package/plugins/meta-architect/.mcp.json +1 -1
- package/plugins/meta-architect/README.md +8 -1
- package/plugins/meta-architect/obsidian/main.js +401 -0
- package/plugins/meta-architect/obsidian/manifest.json +9 -0
- package/plugins/meta-architect/obsidian/styles.css +7 -0
- package/plugins/meta-architect/skills/align/SKILL.md +0 -0
- package/plugins/meta-architect/skills/align/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/align/references/shared-language.md +0 -0
- package/plugins/meta-architect/skills/arch/SKILL.md +2 -0
- package/plugins/meta-architect/skills/arch/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/build/SKILL.md +3 -0
- package/plugins/meta-architect/skills/build/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/cleanup/SKILL.md +0 -0
- package/plugins/meta-architect/skills/cleanup/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/cleanup/references/style-and-deslop.md +0 -0
- package/plugins/meta-architect/skills/diagnose/SKILL.md +0 -0
- package/plugins/meta-architect/skills/diagnose/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/flow/SKILL.md +2 -0
- package/plugins/meta-architect/skills/flow/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/maestro/SKILL.md +0 -0
- package/plugins/meta-architect/skills/maestro/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/maestro/references/core-release-rules.md +0 -0
- package/plugins/meta-architect/skills/maestro/references/native-ingest-map.md +0 -0
- package/plugins/meta-architect/skills/sage/SKILL.md +2 -0
- package/plugins/meta-architect/skills/sage/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/sage/references/source-selection.md +8 -0
- package/plugins/meta-architect/skills/tdd/SKILL.md +0 -0
- package/plugins/meta-architect/skills/tdd/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/vet/SKILL.md +2 -0
- package/plugins/meta-architect/skills/vet/agents/openai.yaml +0 -0
- package/plugins/meta-architect/skills/vet/references/security-playbooks.md +7 -0
- package/plugins/meta-architect/skills/vibe/SKILL.md +2 -0
- package/plugins/meta-architect/skills/vibe/agents/openai.yaml +0 -0
- package/scripts/active-autonomy-hook.mjs +96 -0
- package/scripts/biome-staged.js +0 -0
- package/scripts/build-linux-packages.mjs +0 -0
- package/scripts/doctor.js +17 -4
- package/scripts/install.sh +28 -0
- package/scripts/linux-package-lib.mjs +0 -0
- package/scripts/linux-package-smoke.mjs +0 -0
- package/scripts/plugin-sync.js +0 -0
- package/scripts/postinstall.js +0 -0
- package/scripts/ralph/prompt.md +35 -0
- package/scripts/release-metadata.js +0 -0
- package/scripts/release-sync.js +0 -0
- package/scripts/release-verify.js +166 -1
- package/scripts/setup-npmrc.js +0 -0
- package/skills/align/SKILL.md +0 -0
- package/skills/align/agents/openai.yaml +0 -0
- package/skills/align/references/shared-language.md +0 -0
- package/skills/arch/SKILL.md +2 -0
- package/skills/arch/agents/openai.yaml +0 -0
- package/skills/build/SKILL.md +3 -0
- package/skills/build/agents/openai.yaml +0 -0
- package/skills/cleanup/SKILL.md +0 -0
- package/skills/cleanup/agents/openai.yaml +0 -0
- package/skills/cleanup/references/style-and-deslop.md +0 -0
- package/skills/diagnose/SKILL.md +0 -0
- package/skills/diagnose/agents/openai.yaml +0 -0
- package/skills/flow/SKILL.md +2 -0
- package/skills/flow/agents/openai.yaml +0 -0
- package/skills/maestro/SKILL.md +0 -0
- package/skills/maestro/agents/openai.yaml +0 -0
- package/skills/maestro/references/core-release-rules.md +0 -0
- package/skills/maestro/references/native-ingest-map.md +0 -0
- package/skills/sage/SKILL.md +2 -0
- package/skills/sage/agents/openai.yaml +0 -0
- package/skills/sage/references/source-selection.md +8 -0
- package/skills/tdd/SKILL.md +0 -0
- package/skills/tdd/agents/openai.yaml +0 -0
- package/skills/vet/SKILL.md +2 -0
- package/skills/vet/agents/openai.yaml +0 -0
- package/skills/vet/references/security-playbooks.md +7 -0
- package/skills/vibe/SKILL.md +2 -0
- package/skills/vibe/agents/openai.yaml +0 -0
- package/src/bootstrap.js +17 -0
- package/src/build-gate.js +2 -2
- package/src/launcher.js +4 -0
- package/src/mcp-live-client.js +289 -3
- package/src/paths.js +4 -0
- package/src/policy.js +1 -1
- package/src/release-issue-gates.js +190 -0
- package/src/runtime/active-autonomy-core.js +208 -0
- package/src/runtime/alignment-sentinel.js +165 -0
- package/src/runtime/architect-review.js +88 -0
- package/src/runtime/build-readiness.js +28 -4
- package/src/runtime/code-graph-rehearse.js +113 -0
- package/src/runtime/context-economy-core.js +276 -0
- package/src/runtime/continuity-notes.js +0 -0
- package/src/runtime/core-source-ingest.js +379 -0
- package/src/runtime/detached-provider.js +74 -0
- package/src/runtime/environment-awareness-core.js +460 -0
- package/src/runtime/exposure-catalog.js +276 -0
- package/src/runtime/guidance-stack.js +0 -0
- package/src/runtime/helper-orchestration-core.js +307 -0
- package/src/runtime/learning-loop-core.js +238 -0
- package/src/runtime/maestro-events.js +18 -0
- package/src/runtime/maestro-manager.js +19 -0
- package/src/runtime/maestro-state.js +125 -0
- package/src/runtime/mcp-policy.js +192 -0
- package/src/runtime/obsidian-integration-core.js +851 -0
- package/src/runtime/obsidian-plugin-bridge.js +739 -0
- package/src/runtime/orchestrator.js +0 -0
- package/src/runtime/prompt-strategy-core.js +230 -0
- package/src/runtime/quorum-review.js +90 -0
- package/src/runtime/ralph-execution-core.js +217 -0
- package/src/runtime/redaction-gateway.js +174 -0
- package/src/runtime/runtime-state.js +843 -2
- package/src/runtime/semantic-recording-core.js +147 -0
- package/src/runtime/signal-hooks.js +15 -0
- package/src/runtime/skills-registry-export.js +670 -0
- package/src/runtime/startup-path.js +0 -0
- package/src/runtime/universal-plugin-broker-core.js +575 -0
- package/src/runtime/workspace-intelligence-runtime.js +674 -0
- package/src/runtime/workspace-virtualizer.js +102 -0
- package/src/runtime/workspaces.js +0 -0
- package/src/runtime-artifacts.js +225 -62
- package/src/skill-installer.js +0 -0
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
>
|
|
162
|
-
|
|
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.
|
|
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 "
|
|
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` |
|
|
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
|
|
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
|
-
| [
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
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
|
+
}
|