feat(protocol): make correlation an exclusive identity #74
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!74
Loading…
Reference in a new issue
No description provided.
Delete branch "refactor/exclusive-correlation-48"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #48.
Correlationcarried two independent scalar fields, so the wire could encodean envelope naming both a request and a stream, and every handler recovered its
mandatory id ad hoc. This makes correlation an exclusive identity and moves the
per-arm rule into the shared layer.
felis-protocol:Correlationbecomes a protobufoneof; the domain type isCorrelation::Request(RequestId) | Correlation::Stream(StreamId). Neither id,both ids, and unknown arms are malformed at decode. Prost output regenerated.
request reply, stream opener, or stream item — and the arm table is applied to
every frame,
Pushincluded.felis-transport:ConnectionDriver::decodevalidates the declaration beforereturning a deliverable message, so correlation is read off the delivery
instead of being re-derived per family.
felis-daemon/felis-cli/felis-client-core: handlers read the id offthe driver's delivery; the CLI sends a request under the lock that issued its
id, and a request-scoped refusal is admitted through the driver.
The break is acknowledged in
crates/felis-protocol/proto/BREAKING.md(pre-release,rides the current major), so
proto-compatpasses.Doc cascade:
docs/reference/spec.mdsources the exclusive envelope and the armtable;
docs/reference/ipc.mdanddocs/explanation/architecture/ipc.mdsplitwhat a mode admits from what the daemon sends and argue the rejected alternatives;
docs/reference/glossary.mdanddocs/reference/testing.mdfollow the renamedterms;
CHANGELOG.mdrecords the wire change.Verified: just check green (fmt, clippy, nextest, deny); reviewed by plan/correctness/docs lenses and pi sol
3ff8517e1990a3cab4ca