e00393adfd
---ci---
phase: 3
milestone: v1.0
status: clarify
decisions:
- id: D-020
decision: L2 manifest.yaml schema with l1s: list of {name, inputs: map}
rationale: REQ-04 says L2 composes L1s; REQ-05 caps depth at 5 (L2->L1 is depth 1)
confidence: 0.90
alternatives: [graph-of-L1s with edges, single flat list of L1 names with no inputs]
- id: D-021
decision: contract.yaml schema with stack, inputs, optional public-ingress: bool
rationale: REQ-07 cites public-ingress:true as the forbidden key; REQ-08 keys off policy pass/fail
confidence: 0.90
alternatives: [separate policy file, contract-free intent]
- id: D-022
decision: mock_executor.sh writes state.json with l2, l1s array (name+applied+exit_code), contract
rationale: REQ-06 says writes state.json but does not specify shape
confidence: 0.85
alternatives: [per-L1 state files, no state file]
- id: D-023
decision: evidence_writer.py appends to audit.json (JSON array); each event has seq, ts, stage, event, prev_hash, hash (SHA-256 of canonical JSON); genesis has prev_hash=GENESIS, seq=0
rationale: D-005 mandates hash-chained ledger; canonical JSON for deterministic hashing
confidence: 0.90
alternatives: [signed commits only, append-only log file]
- id: D-024
decision: confidence_signal.py prints {score, reason} JSON to stdout; exit 0 always
rationale: REQ-08 literal: base 0.90, drops to 0.40, gate >= 0.50
confidence: 0.95
alternatives: [exit non-zero on fail, separate side-channel file]
- id: D-025
decision: policy_checker.py exits 1 with stdout POLICY_VIOLATION:PUBLIC_INGRESS on public-ingress:true; else exit 0 with stdout POLICY_PASS
rationale: REQ-07 literal
confidence: 0.99
alternatives: []
- id: D-026
decision: l3b_agent_stub.py reads issue body from argv[1] or stdin, applies D-008 keyword map, writes contract.yaml to stdout (or -o <path>)
rationale: D-008 + Act 3 example; L3B must produce same contract format as L3A
confidence: 0.90
alternatives: [fixed-output contract per stack, no -o flag]
---/ci---
Phase 03 has real ambiguities (no schema was specified for L2 manifests,
contract.yaml, audit.json events, or the L3B output format). Seven
decisions logged: D-020 L2 schema, D-021 contract.yaml schema, D-022
state.json shape, D-023 audit.json event + hash chain, D-024
confidence_signal output, D-025 policy_checker output, D-026 l3b_agent
I/O contract.