Skip to content

spec(cave): define Phase 5 proposal lifecycle contract#16

Merged
BunsDev merged 3 commits into
mainfrom
spec/phase5-cave-contract
Jul 21, 2026
Merged

spec(cave): define Phase 5 proposal lifecycle contract#16
BunsDev merged 3 commits into
mainfrom
spec/phase5-cave-contract

Conversation

@BunsDev

@BunsDev BunsDev commented Jul 20, 2026

Copy link
Copy Markdown
Member

Summary

  • extend ProposalView with daemon-owned Phase 5 lifecycle, approval-path, region, and action metadata
  • bind displayed staged contents to canonical daemon proposalRevision and familiarUuid
  • define exact snake_case wire normalization while rendering daemon labels verbatim
  • fail closed on stale, unavailable, mismatched, or unknown lifecycle state; Cave never advances deadlines locally

Evidence

Bead: threads-uqx.7

BunsDev and others added 3 commits July 20, 2026 01:40
Bind Cave actions to daemon-owned lifecycle metadata, preserve daemon labels, and fail closed on unavailable, stale, mismatched, or unknown scheduling state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Require daemon proposal revisions and canonical familiar UUIDs so Cave can fail closed on changed contents or mismatched identity before forwarding a decision.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Specify canonical SHA-256 proposal revisions and the exact snake_case-to-view mapping so Cave can verify inspected contents without inventing lifecycle semantics.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 20, 2026 06:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the Phase 4 Cave surface contract to incorporate a Phase 5 “scheduled proposal” lifecycle/approval metadata envelope that is owned by the daemon, while keeping Cave fail-closed and strictly forward-only for approvals/rejections.

Changes:

  • Extends ProposalView with a new daemon-derived authority section including lifecycle, approval path, affected regions, and available decision metadata.
  • Specifies a canonical proposalRevision verification algorithm and requires forwarding expectedRevision on manual decisions.
  • Defines a closed snake_case → kebab-case normalization table and explicitly prohibits generic case conversion or local lifecycle inference (including clock-based deadline handling).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +360 to 363
- Body:
`{ "note": "optional principal note", "expectedRevision": "daemon-issued proposal revision" }`.
`expectedRevision` is mandatory for manual Phase 5 decisions. `readsJson: true`,
`invalidJson: "guarded"`.
| `veto_window_open` | `veto-window-open` |
| `ready_for_replay` | `ready-for-replay` |
| `blocked` | `blocked` |
| `approvalPath.veto_deadline` | `approvalPath.vetoDeadline` |
@BunsDev
BunsDev merged commit 17a84de into main Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants