docs(P02): research findings — L1 manifest schema + mock_apply uniformity

---ci---
phase: 2
milestone: v1.0
status: research
research:
  l1_schema:
    manifest_yaml: flat inputs map of string keys + descriptions (D-017)
    mock_apply_sh: uniform echo + sleep 1 + exit 0 (D-007, D-018)
    constraints: single-purpose, substrate-agnostic, max-depth-1, no composition
  l1_names: fixed per REQ-02 / D-019 (8 modules)
  personas: no change; infra-stub-engineer owns L1 territory this phase
---/ci---

ARCHITECTURE.md gains an L1 module schema section with a manifest.yaml
example, a mock_apply.sh template, and the 8-L1 table. PERSONAS.md is
unchanged for Phase 02 (infra-stub-engineer was already activated in
the project-level roster).
This commit is contained in:
Jon Chery
2026-07-21 13:13:12 +00:00
parent 9d35c0756c
commit 59c330f012
+44 -1
View File
@@ -100,4 +100,47 @@ for pushes.
There is no `package.json`; ACDL is bash + python stubs. The verification gate
substitutes `bash -n` and `python -m py_compile` for `npm run typecheck`, and
per-phase `scripts/verify_phaseNN.sh` for `npm test`. `npm run build` is a
no-op (no build step). See PERSONAS.md / VERIFICATION note.
no-op (no build step). See PERSONAS.md / VERIFICATION note.
## L1 module schema (Phase 02 research)
Each L1 module lives at `modules/l1/<name>/` with exactly two files:
- `manifest.yaml` — declares the L1's identity + a flat `inputs:` map.
Schema (D-017):
```yaml
name: l1-eks-fargate # matches the folder name
kind: l1 # literal "l1"; substrate-agnostic
description: <one-line>
inputs:
<key>:
description: <one-line>
type: string # only "string" allowed (flat, max-depth-1)
```
- `mock_apply.sh` — uniform stub per D-007 + D-018:
```bash
#!/usr/bin/env bash
set -euo pipefail
echo "[L1: <name>] applying..."
sleep 1
echo "[L1: <name>] OK"
exit 0
```
`mock_apply.sh` does NOT read input values; the manifest is for traceability
and for Phase 03's `mock_executor.sh` to enumerate the L1s in an L2.
### L1 list (fixed per REQ-02 / D-019)
| Folder | Description |
|--------|-------------|
| `l1-eks-fargate` | Serverless container compute substrate |
| `l1-iam-role` | Identity and access role primitive |
| `l1-lambda` | Event-driven function primitive |
| `l1-api-gateway` | HTTP routing primitive |
| `l1-eventbridge` | Event bus primitive |
| `l1-sqs` | Queue primitive |
| `l1-s3` | Object store primitive |
| `l1-cloudwatch` | Observability primitive |
L1 modules are single-purpose, substrate-agnostic, max-depth-1 (per
PROJECT.md Constraints). They do not compose with other L1s.