fix: sign template Follow target resolution #317
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!317
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/task-6e0ed12f-signed-follow-resolution"
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 the website's signed outbound Follow target resolution to the SlugKit template without replacing its constrained fetch wrapper or changing the existing compatible signature identity.
Task
task-6e0ed12f— Port signed follow resolution to the SlugKit template.task-b5f8d008, completed in erik/erikvancraddock.com PR #25 (implementationc394f999aa43cccaeab429576ecfb6e5c2932e55, merge185a498).Changes
acct:sender and FedifysignRequestfor initial, canonical and stored-profile-alias actor GETs. WebFinger remains unsigned. No resolution-time key generation/rotation or unsigned fallback.#multikey-1and is not substituted.src/federation/loaders.tsstays unchanged. No package/dependency/contract version change or release is required.Testing
./scripts/pre-pr.sh: passed build/API artifact validation, generated CSS, formatting, lint, types and all 1,539 workspace tests.npm run test:ci: 1,343 tests passed; integration tests remain excluded in workflows. Hosted CI run 577 (build-lint-test) succeeded for head0fbf1967d6616a6ca1367852263876127eae86a1.make dev. App and Garage are running athttp://localhost:3000; homepage,/healthand/api/v1/healthreturn 200. CLI config generated to a temporary destination matches port 3000. CSS watcher paused during verification to avoid generated-output races.git diff --checkpasses. Dependencies, package versions and lockfile unchanged.Verification history: earlier checks exposed the independently reproduced dotenv-port bug and six Undo fixture timeouts; both are addressed under the user's explicit approval. One subsequent full run timed out in the unchanged signed-Accept response test; that six-test suite passed in isolation, and a fresh complete pre-PR run passed. No timeout was increased or failing test excluded.
Safety and limits
No real accounts, live social-server Follow submissions, publishing, deployment or production mutations were used. Tests use generated actors/keys and intercepted fixtures. Pending persistence and one queued Follow are not evidence of remote acceptance. The existing hostname/literal policy is not complete DNS-rebinding protection; response-size enforcement remains a post-read character limit, not a streaming byte bound.
Checklist
./scripts/pre-pr.shpasses0fbf1967b4b01c2. Post-merge main CI run 578 also succeeded.Independent review and pipeline state
Reviewed head:
0fbf1967d6616a6ca1367852263876127eae86a1.No actionable correctness, security, or regression findings at head
0fbf1967.Acceptance criteria are satisfied by the code and supplied evidence:
acct:identity; no key generation or rotation (template/site/src/api/routes/following.ts:109,template/site/src/federation/keys.ts:59).template/site/src/following/following.ts:118,350,417,486).loaders.tsremains compatible and unchanged; package documentation correctly explains why template-local wiring is sufficient.Verification limits: static, read-only review; no checks rerun or CI independently queried. No network, account, deployment, or merge actions performed. Existing hostname-only checks and post-read character limits remain documented limitations, not complete SSRF/resource protection.
Review result: PASS — no blockers found; not merge authorization.
Next: Await separate explicit human merge approval.
Pipeline evidence: complete local
./scripts/pre-pr.shpassed with 1,539 tests; hosted CI run 577 succeeded for this head. No real accounts, live social-server Follow submission, release, deployment or merge. Human merge approval is still required.