Add incoming boosts and finalize the activity contract #312
No reviewers
Labels
No labels
activitypub
admin
api
architecture
articles
auth
bug
cleanup
cli
comments
compatibility
config
contacts
content
database
deployment
design
dev-env
diagnostics
docs
documentation
email
enhancement
feature
federation
feed
health
homepage
implementation
integration
logging
mastodon
media
navigation
npm-packages
openapi
opengraph
packages
passkeys
preview
priority:high
priority:low
priority:medium
production
proof
proxy
public-routes
public-ui
release
safety
slug-api
slug-auth
slug-core
slug-federation
slug-media
slug-template
social
sources
status:active
status:canceled
status:done
status:inprogress
status:waiting
syndication
tailwind
template
test
web
webauthn
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/slugkit!312
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/task-8c11c803-incoming-boosts"
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
Task: task-8c11c803, second implementation slice under task-96dcee85. Prerequisites task-444f16f0 and task-7e947966 were merged in PRs #310/#311.
Verification
./scripts/pre-pr.sh passed build, generated CSS, formatting, lint, types and all 1,424 local tests. Signed federation/actual HTTP coverage remains *.integration.test.ts and local-only; no CI workflow/runtime/container testing changes.
Evidence includes old-original boosts; known/unknown/ambiguous/unavailable author enrichment without contact creation; canonical-content and audience safety; accepted/inactive/follower-only boundaries; refollow/same-timestamp and actor races; duplicate/equivocation/post/self-boost separation; body/alias failures and retries; mixed-kind pagination, interrupted/partial client persistence, independent concurrent GETs and JSON DELETE with a discarded response plus identical-ID retry; account isolation and preservation of owned publications/comments/engagement/client copies. Migration fixtures verify old snapshots/aliases/tombstones, old cursors, allocation gaps, foreign keys and injected-failure rollback.
An isolated SQLite measurement (Node24.22.1, SQLite3.53.4, 4096-byte pages) buffered 100 bodies plus 200 aliases, then removed those 100 bodies. Metadata/aliases remained 100/200, free pages increased 0->825, and database file size remained 3,907,584 bytes. No VACUUM was run. This is logical-removal/storage evidence, not a production-cost estimate or secure-erasure claim.
Gates and availability
The running dev environment was stopped with make dev-stop before edits. Migration030 has not run against the existing local database, and the environment remains stopped; no existing local/production data migration is authorized/performed by this task. All fixtures/measurements used isolated in-memory/temporary databases and loopback test servers. Restarting new code against legacy data requires separate migration authorization.
Pipeline: full pre-PR passed 1,424 local tests; exact-HEAD CI run556 is green at
d49eeef4a7. Independent re-review passed 95 targeted tests plus isolated deadline probes with no actionable findings; both initial timeout P2s are resolved. Human merge approval is pending; branch cleanup and post-merge verification have not started. No release/publication, production deployment or production mutation performed. Task-dbb55f82 owns final public publication/release gates; operators own adoption/deployment and actual reverse-proxy DELETE-body verification. The parent and Rott E4 consumer requirements remain incomplete until their respective publication/adoption/policy reconciliation gates are satisfied. No new shared-read backend, automatic expiry/caps/cleanup, background Rott Download, website RSS fetch or broader conversation/change delivery is included.