Conversation
Add minimal ActivityPub vocab types
Refine multi-value vocab references
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Add core input/action boundary
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Add minimal core state
Assisted-by: Codex:gpt-5.5
Emit accept actions for follows
Assisted-by: Codex:gpt-5.5
Emit create note actions
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Assisted-by: Codex:gpt-5.5
Add mocked core flow test
📝 WalkthroughWalkthroughThis PR introduces two new no_std Rust crates. ChangesActivityPub Vocabulary and Core Engine
Sequence Diagram(s)sequenceDiagram
participant Caller
participant FederCore
participant FederState
participant Actions as "Vec<Action>"
rect rgba(70, 130, 180, 0.5)
Note over Caller,Actions: ReceivedFollow path
Caller->>FederCore: handle(Input::ReceivedFollow { follow, accept_id })
FederCore->>FederState: record_follow(follow, accept_id)
FederState->>FederState: validate following == local_actor
FederState->>FederState: deduplicate + store Follower
FederState->>FederState: upsert DeliveryTarget inbox from embedded actor
FederState-->>Actions: StoreFollower, StoreDeliveryTarget, SendActivity(Accept)
FederCore-->>Caller: HandleResult { actions }
end
rect rgba(60, 179, 113, 0.5)
Note over Caller,Actions: UserCreateNote path
Caller->>FederCore: handle(Input::UserCreateNote { note_id, create_id, actor, content })
FederCore->>FederState: record_created_note(...)
FederState->>FederState: validate actor == local_actor
FederState->>FederState: normalize actor ref → local actor ID
FederState->>FederState: store Note object + CreateNote activity
FederState-->>Actions: StoreObject, StoreActivity, SendActivity × delivery_targets.len()
FederCore-->>Caller: HandleResult { actions }
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Input -> FederCore -> Actionboundary without runtime I/O.Milestone
Merging this pull request completes the planned work for Milestone 1: Phase 1. All issues assigned to the milestone are complete, and the milestone can be closed after this promotion lands on
main.Scope
This promotes the completed portable core foundation from
nexttomain. Networking, persistent storage, HTTP signatures, actor resolution, delivery workers, and partial JSON-LD normalization remain runtime work for later milestones.Validation
cargo test --workspacemise run check