OAG Decision Matrix
Use this skill after deep semantic intake and before requirement lock when an IP has unresolved architecture, interface, protocol, storage, IRQ, error/drop, or verification choices.
Rules
- Treat recommendations as draft guidance, not locked truth.
- Keep undecided rows as
status: unresolvedorproposed. - Use
status: decidedonly for explicit user/spec confirmation. - Use
status: waivedonly withwaiver_reasonand risk. - Mark implementation-affecting rows as
lock_required: true. - Do not use the decision matrix to silently choose RTL/TB behavior.
Commands
Seed profile decisions:
python3 .codex/scripts/oag_decision_matrix_generate.py --ip-dir <ip> --profile <profile> --write --json
For protocol packet IPs, start with --profile protocol-packet-ip.
For MCTP RX, use --profile mctp-rx.
Audit lock readiness:
python3 .codex/scripts/oag_lock_readiness_check.py --ip-dir <ip> --json
Output
Maintain ontology/decision_matrix.yaml. Every lock-blocking row should name
its question, status, owner, recommended answer if any, affected requirements
or contracts, and verification implications.