Bead: threads-uqx.7
Phase: 5 — Approval semantics over the Phase-2 Ward
Spec: specs/PHASE-5-APPROVAL-SEMANTICS.md §6 decisions 6/7, Phase 4 §4
Depends on: #11 (uqx.6 daemon integration — must have release evidence first)
Scope
Amend the Cave ProposalView contract after daemon read models from threads-uqx.6 exist. This bead starts as [DESIGNED, NOT SHIPPED] and may not open until #11 is complete.
Deliverables
ProposalView extended with: approval_path (variant + display label + optional veto_deadline), affected_regions descriptors, window state (pending | approved | vetoed | expired | rejected)
- Blocked/veto state fixtures: unknown or stale veto state renders as blocked under Phase-4 §4 rules (no optimistic UI)
- Cave receives
{variant, label, veto_deadline} from daemon; zero policy freedom over label strings — renders exactly what daemon emits (decision 7)
- Confirmation that
ProposalView for Phase-5 approval states cannot be constructed from Cave-side state alone
Constraints
Does not include
- Daemon scheduler or type design (upstream beads)
- Nova sign-off (
threads-uqx.9) — covers this bead's output
Bead:
threads-uqx.7Phase: 5 — Approval semantics over the Phase-2 Ward
Spec:
specs/PHASE-5-APPROVAL-SEMANTICS.md§6 decisions 6/7, Phase 4 §4Depends on: #11 (uqx.6 daemon integration — must have release evidence first)
Scope
Amend the Cave
ProposalViewcontract after daemon read models fromthreads-uqx.6exist. This bead starts as[DESIGNED, NOT SHIPPED]and may not open until #11 is complete.Deliverables
ProposalViewextended with:approval_path(variant + display label + optional veto_deadline),affected_regionsdescriptors, window state (pending | approved | vetoed | expired | rejected){variant, label, veto_deadline}from daemon; zero policy freedom over label strings — renders exactly what daemon emits (decision 7)ProposalViewfor Phase-5 approval states cannot be constructed from Cave-side state aloneConstraints
auto,familiar_review,human_review,human_required) are rendered as received — Cave cannot remap them.Does not include
threads-uqx.9) — covers this bead's output