Desk wire: an over-long fork id is fork_unknown, pinned by exact field

Her vectors hold no over-long fork id (deviation recorded). Finding desk-wire-long-fork-id-body-invalid.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Eureka 2026-11-10 19:20:50 +00:00
commit 83107b6f3d

View file

@ -290,13 +290,14 @@ fn project(key: &str, stored: &PipelineDeskAnswer) -> Result<ForkDeskAnswer, Min
})
}
/// The Mind's refusal as the door answers it: an unknown or moved fork, a body the shape step
/// The Mind's refusal as the door answers it: an unknown or moved fork (one that reads as no
/// question id, or whose id is over the 200-byte bound, names no fork), a body the shape step
/// refused and a reused request id store nothing and have codes of their own; anything else,
/// `Unavailable` included, passes through unchanged.
fn door_refusal(refused: MindRefusal) -> DeskResponse {
match refused {
MindRefusal::MissingReference { .. } | MindRefusal::CampaignMoved { .. } => DeskResponse::NotStored(fork_unknown()),
MindRefusal::DeskRequestInvalid { field } if field == "fork" => DeskResponse::NotStored(fork_unknown()),
MindRefusal::DeskRequestInvalid { field } if field == "fork" || field == "desk_answer.fork" => DeskResponse::NotStored(fork_unknown()),
MindRefusal::DeskRequestInvalid { field } => DeskResponse::NotStored(body_invalid(&field)),
MindRefusal::DeskRequestIdConflict { .. } => {
DeskResponse::NotStored(fork_refusal(ForkRefusalCode::RequestIdConflict, "request_id_conflict: this request_id was used for a different body".into()))
@ -827,6 +828,29 @@ mod tests {
assert!(!conflict.error.contains("secret"));
}
/// Her schema takes any non-empty string as a fork id and her vectors hold no over-long one;
/// no such id can name a fork, so it is `fork_unknown` like the empty one. Recorded deviation:
/// the bound is the Mind's 200 bytes (`desk_answer.fork`), and the answer is not `body_invalid`.
#[test]
fn an_over_long_fork_id_is_unknown() {
let mut mind = desk();
let hash = hash_of(&mind, FORK);
let before = head(&mind);
for fork in [format!("{FORK}{}", "9".repeat(200)), format!("eureka-state:question:{}", "q".repeat(300))] {
let refusal = not_stored(ask(&mut mind, "x", wire(&fork, &hash)).0);
assert_eq!(refusal.code, ForkRefusalCode::ForkUnknown, "{} bytes", fork.len());
assert_eq!(refusal, fork_unknown());
}
assert_eq!(head(&mind), before);
// The mapping is by exact field: a field that merely ends in "fork" is a bad body.
for field in ["desk_answer.fork", "fork"] {
assert_eq!(not_stored(door_refusal(MindRefusal::DeskRequestInvalid { field: field.into() })).code, ForkRefusalCode::ForkUnknown, "{field}");
}
for field in ["notfork", "desk_answer.forks", "desk_answer.fork.x", "request"] {
assert_eq!(not_stored(door_refusal(MindRefusal::DeskRequestInvalid { field: field.into() })).code, ForkRefusalCode::BodyInvalid, "{field}");
}
}
#[test]
fn wire_codes_are_snake_case() {
let table = [