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:
@@ -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.
|
||||
Reference in New Issue
Block a user