-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0-AI-MANIFEST.a2ml
More file actions
88 lines (80 loc) · 4.47 KB
/
0-AI-MANIFEST.a2ml
File metadata and controls
88 lines (80 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# SPDX-License-Identifier: PMPL-1.0-or-later
# 0-AI-MANIFEST.a2ml — Universal AI Agent Entry Point
[manifest]
version = "0.2"
format = "a2ml"
[project-identity]
name = "launch-scaffolder"
one-line = "Cross-platform launcher minter / provisioner / configurator. Generates compliant desktop launcher scripts from A2ML specs."
kind = "standalone top-level repo"
language-policy-tier = 1 # Rust/SPARK, CLI tool
umbrella = "hyperpolymath ecosystem-wide tooling"
[canonical-locations]
machine-readable = ".machine_readable/"
state = ".machine_readable/6a2/STATE.a2ml"
meta = ".machine_readable/6a2/META.a2ml"
ecosystem = ".machine_readable/6a2/ECOSYSTEM.a2ml"
standards-canonical = "/var/mnt/eclipse/repos/developer-ecosystem/standards/launcher/launcher-standard.a2ml"
standards-vendored-fallback = "standards/launcher-standard.a2ml"
templates = "templates/"
examples = "examples/"
docs = "docs/"
ruleset-audit-archive = "docs/ruleset-audit-2026-04-10/"
fixture-naming-rule = "examples/README.md"
branch-protection-remediation = "docs/branch-protection-remediation-2026-04-10.md"
[invariants]
scm-files-location = ".machine_readable/ ONLY — never root"
container-file = "Containerfile — never Dockerfile"
package-manager = "cargo for Rust; Deno first for any JS work, pnpm as Node fallback"
license = "PMPL-1.0-or-later"
language = "Rust (== Rust/SPARK per terminology rule)"
no-secrets-in-files = true
spdx-headers-required = true
# Fixture-vs-live naming rule (see ADR-006 and examples/README.md):
# live configs use `.launcher.a2ml`, test fixtures use
# `.launcher.fixture.a2ml`. The discovery walker treats any file ending
# in `.launcher.fixture.a2ml` as out-of-band for estate walks.
fixture-suffix = "<app>.launcher.fixture.a2ml"
live-suffix = "<app>.launcher.a2ml"
# Standard-loader precedence (see ADR-007):
# flag → $LAUNCH_SCAFFOLDER_STANDARD → canonical path → baked fallback.
# Every subcommand calls LauncherStandard::resolve; do not add
# per-command copies.
standard-loader-entry-point = "launch-scaffolder-common::standard::LauncherStandard::resolve"
[standards-compliance]
launcher-standard = "standards/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc §Rust/SPARK"
a2ml-spec = "standards/a2ml/"
rsr-template = "https://github.com/hyperpolymath/rsr-template-repo"
abi-ffi-standard = "hyperpolymath Idris2-ABI + Zig-FFI"
terminology = "When this manifest or README says 'Rust', always read as 'Rust/SPARK' (per LANGUAGE-POLICY.adoc §Terminology, 2026-04-10)."
[session-startup]
step-1 = "Read this manifest"
step-2 = "Read README.adoc for architecture and current status"
step-3 = "Read STATE.a2ml for current implementation progress"
step-4 = "Read standards/launcher-standard.a2ml for the spec being targeted"
step-5 = "Read examples/stapeln.launcher.a2ml for a worked per-app config"
[purpose]
problem = """
Every hyperpolymath project maintains its own ~600-line bash launcher
script that has to be kept in sync with the current launcher standard by
hand. Drift is guaranteed. Spec changes mean editing 11+ files.
"""
solution = """
Generate launcher scripts from a declarative A2ML spec. Launchers become
reproducible artefacts, not hand-edited drift. Bulk realignment after a
spec change is one command.
"""
non-goals = [
"Replacing desktop environment integration tools (xdg-desktop-menu, update-desktop-database) — we call them.",
"Inventing a new desktop file format — we emit the existing freedesktop and .lnk formats.",
"Solving the 'start the actual app' problem — launchers shell out to scripts/run.sh per the LM-LA-LIFECYCLE standard.",
]
[roadmap-phases]
phase-1 = "DONE 2026-04-10 — config + standard + template + mint. 7 launchers migrated."
phase-2 = "DONE 2026-04-10 — realign (bulk re-mint, estate walk, --dry-run/--check). Fixture-vs-live suffix convention introduced; ADR-006."
phase-3 = "DONE 2026-04-10 — provision (native Rust integ/disinteg via launch-scaffolder-common::integration; ADR-008). Template delegation: generated scripts fast-path to the binary when on PATH."
phase-4 = "DONE 2026-04-10 — config (get/set/validate) on the embedded @a2ml-metadata block. Hand-rolled parser per ADR-009."
phase-5 = "IN PROGRESS — Golden-file regression tests + cross-platform CI matrix + macOS integration backend + `standard` subcommand."
phase-6 = "SPARK hook for integrity.rs via Zig FFI."
phase-7 = "Migrate the 5 declared exceptions (hypatia, invariant-path, opsm, ambientops, idaptik) once template supports their extra modes."
phase-8 = "Optional PanLL panel as a GUI layer over the CLI."