Port federation reliability and actor-profile updates #57
No reviewers
Labels
No labels
activitypub
actor
admin
ai-safety
article
articles
atproto
bug
cli
configuration
content
dev-environment
docker
enhancement
feature
federation
fediverse
forgejo
garage
health
how-to
logging
markdown
mastodon
media
navigation
opengraph
passkeys
preview
priority:medium
production
release
rendering
s3
settings
setup
status:active
status:done
status:inprogress
technical
webauthn
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/slugkit.com!57
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/task-76fd6333-federation-reliability"
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?
Summary
Port current template federation fixes into slugkit.com without replacing its reference API or recent browser-security work.
Task: task-76fd6333
Verification
./scripts/pre-pr.shPASS: formatting, typecheck, build/reproducible CSS and 521 tests across 53 files.Regression coverage includes both RFC 9421 and legacy Cavage signatures at both inboxes behind TLS termination; real cryptographic authenticated actor/key GET and Accept verification using controlled remote fixtures; spoofed forwarding/cross-host and malformed Host rejection; body tampering/actor mismatch; private-address safety; earlier body limits; sanitized diagnostics; database reopen/worker recreation preserving actor/keys/followers; and signed actor updates with unique IDs, account/profile/timestamp content, unchanged key documents/content/followers, safe queue failures and preserved CSRF protection.
Integration verification remains local-only. Follow fixtures intercept outbound POSTs instead of issuing real deliveries; no integration/browser/container testing or runtime provisioning was added to CI/release workflows. Current and historical API/schema regressions remain in the full suite.
Boundaries and rollout
Preserve the existing origin, actor username/identity/keys, followers, profile settings/content, API routes/schema bytes/archive discovery, branding and release tooling. No setup gate/lifecycle, database migration, key rotation, homelab mutation, release tag/image publication or production deployment was introduced. No production/live federation writes were performed.
See
src/federation/README.mdfor proxy requirements, diagnostics, local verification and a separately approved rollout. The in-process queue is still not durable; queueing is not proof of remote delivery. Production rollout, live follows/profile edits and actual remote delivery verification require separate approval.Independent review —
c1a022b33eA separate fresh-context Pi reviewer inspected the full diff, relevant routing/delivery/persistence/settings/security/API archive code, tests and locked Fedify internals with read/grep/find/ls only. Result: No actionable defects found.
Review confirmed operator-owned canonical origin/Host verification, authenticated loader option and identity preservation, shared app/worker queue and persisted keys, protected profile updates with unique IDs and accurate queue-failure reporting, sanitized diagnostics, and retained reference-host/browser-security behavior. It found the controlled tests meaningfully exercise real cryptographic verification and production loader paths rather than only mocked success.
Optional suggestion: add a local-only real InProcessMessageQueue retry/stop regression. Deferred as non-blocking follow-up: the underlying queue implementation is unchanged, manual fixtures intentionally skip delayed retries, and these tests establish app/worker wiring and recreation but do not claim real delayed-retry timing or durable queue behavior.
Verification limits: independent review was static/read-only and did not rerun tests or verify production interoperability. Implementation-session checks separately passed scripts/pre-pr.sh (521 tests in 53 files, formatting/types/build/CSS reproducibility) and Forgejo PR CI run #55 for this exact commit. CI was checked using fj actions tasks because fj pr status has a known response-parsing issue.
No release tag/image publication, production deployment, homelab change, migration/key rotation or live federation writes were performed or authorized. Queueing success is not proof of delivery; live rollout verification still requires separate approval.