Send actor updates with keyed Fedify actor object #42

Merged
erik merged 2 commits from task-d213c262-revert-and-fix-actor-update into main 2026-06-28 12:31:10 -05:00
Owner

Summary

  • revert the broken PR #39 actor update implementation
  • reintroduce actor update delivery using a shared Fedify actor-object helper used by the actor dispatcher itself
  • preserve actor save and delivery logs
  • ensure actor Update payload includes both legacy publicKey/#main-key and Fedify multikey assertionMethod/#multikey-1 key material
  • keep outbound HTTP signatures on the known-working #multikey-1 path

Verification

  • npm run typecheck
  • npm test -- --run src/routes/tests/admin-activitypub.test.ts src/federation/tests/routes.test.ts src/federation/tests/delivery.test.ts
  • npm test
  • npm run build

Task: task-d213c262

After merge/release/deploy, publish a test note first to verify normal fanout recovers, then test actor avatar update delivery.

## Summary - revert the broken PR #39 actor update implementation - reintroduce actor update delivery using a shared Fedify actor-object helper used by the actor dispatcher itself - preserve actor save and delivery logs - ensure actor Update payload includes both legacy `publicKey`/`#main-key` and Fedify multikey `assertionMethod`/`#multikey-1` key material - keep outbound HTTP signatures on the known-working `#multikey-1` path ## Verification - npm run typecheck - npm test -- --run src/routes/__tests__/admin-activitypub.test.ts src/federation/__tests__/routes.test.ts src/federation/__tests__/delivery.test.ts - npm test - npm run build Task: task-d213c262 After merge/release/deploy, publish a test note first to verify normal fanout recovers, then test actor avatar update delivery.
Author
Owner

Review summary

Approved. This fixes the PR #39 problem by removing the separate partial actor object construction path and routing actor Update payload construction through the same helper used by the Fedify actor dispatcher. The actor Update payload now includes both legacy publicKey/#main-key and Fedify assertionMethod/#multikey-1 key material.

Acceptance criteria coverage

  • Actor Update payload uses the same serialization helper as the actor document route.
  • Actor Update object includes avatar/icon URL.
  • Actor Update object includes publicKeyPem/#main-key.
  • Actor Update object includes publicKeyMultibase/#multikey-1.
  • Outbound HTTP signature behavior remains on the known-working #multikey-1 path.
  • Structured actor-save and actor-update delivery logs are preserved.
  • Tests cover keyed actor Update payload shape.

Verification

  • npm run typecheck
  • npm test -- --run src/routes/__tests__/admin-activitypub.test.ts src/federation/__tests__/routes.test.ts src/federation/__tests__/delivery.test.ts
  • npm test
  • npm run build

Risk / deploy note

Production Mastodon may have a bad cached copy of the actor/key state from the previous broken update attempts. After deploying this fix, first verify normal note fanout. If Mastodon still rejects with Public key not found, force a remote actor refetch/re-follow flow before concluding the new payload is still bad.

Blocking issues

None.

Verdict

Approved.

## Review summary Approved. This fixes the PR #39 problem by removing the separate partial actor object construction path and routing actor Update payload construction through the same helper used by the Fedify actor dispatcher. The actor Update payload now includes both legacy `publicKey`/`#main-key` and Fedify `assertionMethod`/`#multikey-1` key material. ## Acceptance criteria coverage - [x] Actor Update payload uses the same serialization helper as the actor document route. - [x] Actor Update object includes avatar/icon URL. - [x] Actor Update object includes `publicKeyPem`/`#main-key`. - [x] Actor Update object includes `publicKeyMultibase`/`#multikey-1`. - [x] Outbound HTTP signature behavior remains on the known-working `#multikey-1` path. - [x] Structured actor-save and actor-update delivery logs are preserved. - [x] Tests cover keyed actor Update payload shape. ## Verification - `npm run typecheck` - `npm test -- --run src/routes/__tests__/admin-activitypub.test.ts src/federation/__tests__/routes.test.ts src/federation/__tests__/delivery.test.ts` - `npm test` - `npm run build` ## Risk / deploy note Production Mastodon may have a bad cached copy of the actor/key state from the previous broken update attempts. After deploying this fix, first verify normal note fanout. If Mastodon still rejects with `Public key not found`, force a remote actor refetch/re-follow flow before concluding the new payload is still bad. ## Blocking issues None. ## Verdict Approved.
erik merged commit 9db5e5b597 into main 2026-06-28 12:31:10 -05:00
erik deleted branch task-d213c262-revert-and-fix-actor-update 2026-06-28 12:31:10 -05:00
Sign in to join this conversation.
No description provided.