I2415 — A mesh review request carries a body, can be withdrawn, and expires
Give review requests a body beside the 256-byte subject, a withdraw event its requester may write, an optional expiry, and a result note the requester may attach to its own request, so a request ends instead of staying open forever.
DONE wave 0 · p2 · implementation profile · parallel safe
Objective
Give review requests a body beside the 256-byte subject, a withdraw event its requester may write, an optional expiry, and a result note the requester may attach to its own request, so a request ends instead of staying open forever.
Why
ReviewRequested has a subject capped at 256 bytes and no body (apps/majordomus-cli/src/mesh/journal.rs:520-536, 702); ReviewState is only Open or Answered (state.rs:341-346); KNOWN_KINDS has no close or expiry (journal.rs:553-561); and a requester cannot answer its own request (cooperation.rs:3617-3620). On 2026-10-10 pre-flight requests for rebuilt, void heads stayed open, and results had to be posted as new requests.
Current state
Requests stay open until someone else answers; no body, no withdrawal, no expiry.
Desired state
body up to 8 KiB; review_withdrawn by the requester; expires_at honoured by the fold; a requester's own result note linked to its request without counting as another session's verdict.
Scope
- apps/majordomus-cli/src/mesh/journal.rs
- apps/majordomus-cli/src/mesh/state.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/src/capability/builtin/mesh.rs
- docs/MESH.md
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A request with an 8 KiB body replicates and folds on two runtimes
- A withdrawn or expired request folds to a closed state on every runtime
- A requester's result note is shown with its request and is not an answer
Validation
- bin/majordomus plan validate
- cargo test --lib mesh::
Evidence required
- review_lifecycle_test
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| review_lifecycle_test | test | cargo test --lib -- mesh:: | 319 passed, 0 failed, including the review body, withdrawal and expiry tests (code on master since 76dc4b399e3; re-run at master 01227a0) | 01227a0 |
Timeline
- started
- 2026-10-17T12:00:46Z
- verified
- 2026-10-17T12:00:58Z
- completed
- 2026-10-17T12:01:07Z
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2415.yaml. Read it back with majordomus plan show I2415.