Reconcile signed Follow fixes with SlugKit 1.0.1 #32
No reviewers
Labels
No labels
bug
priority:high
status:active
status:inprogress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/erikvancraddock.com!32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task-6fa3ef35-signed-follow-reconcile"
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
Reconciles this customized website with published SlugKit template 1.0.1 without redoing the original signed-fetch fix (completed task-b5f8d008, PR #25, deployment 0.3.16). Task:
task-6fa3ef35.Runtime source inspection:
src/api/routes/following.tsandsrc/federation/keys.tsare byte-identical to release commit2a883b590e7c184be81201e9ae67b53a73865a7f.Applicable adoption:
docs/activitypub-signed-follow-resolution.mdwith comparison/provenance, applicability assessment, original completed/deployed status and operational boundaries.Verification
npm ci, typecheck, lint, build and diff check passed.b111b4a78e3e020216bdbb3239d58cbf0a923f4fe49faf1cb6f7ebff87d9c17d). Worktree build-generated CSS excluded from this PR.Boundaries
No release/publishing/deployment, live Follow, production data/key/origin changes, new contract 3.0.0 behavior or legacy cleanup. Existing retention and Rott rollout guidance remains unchanged; no Rott readiness or remote acceptance is claimed. Successful local API fixtures establish pending persistence/one queued Follow, not remote delivery or acceptance.
Independent review — task-6fa3ef35
Result
No actionable defects or unmet scoped requirements found. The reconciliation appropriately preserves the already-completed signed-fetch implementation rather than replacing working customized source.
Reviewed current commit
fbe1c21against its parent, the supplied review diff, and all five changed files in full.src/config/__tests__/dotenv-port.test.ts, described as untracked in the request, is now included in that commit. The worktree was clean at inspection.Assessment
2a883b590e7c184be81201e9ae67b53a73865a7fin../slugkit, plus the supplied changelog, guide and fixture/test references. Hash comparisons confirmsrc/api/routes/following.tsandsrc/federation/keys.tsare byte-identical to released upstream. Resolver differences are the retained stronger shared URL-safety helper and explanatory comments, not lost signing behavior.acct:signing, unsigned WebFinger, constrained retrieval, sanitized fetch errors, no unsigned retry, canonical/profile verification and resolution-before-persistence/queueing remain intact. The newly added non-primary-actor and corrupt-key cases exercise the intended failure boundaries without rotation.src/federation/__tests__/inbox.integration.test.ts:66-81,277-331adds a network-denying default, an afterEach assertion for swallowed unexpected requests, and cryptographic verification against the app-advertised actor before recording intercepted Accept deliveries. Queue controls preserve ready-message-once behavior and reject unexpected delayed outbox retries; only the explicit 503 case opts out. Existing customized stale-Undo cases remain unchanged. No production Undo or timeout change was introduced.Makefile,Procfile.devandpackage.json. Not copying those targets is appropriate. The new dotenv test imports onlysrc/config/runtime.tsin a Node subprocess using a synthetic env file; it does not import the app or open private databases.Optional suggestion — not a blocker
src/following/__tests__/following.test.ts:129-174: consider also porting upstream's intercepted 302 response case and one-fetch assertion for the rejection matrix. The current suite already assertsredirect: errorand tests transport rejection without unsigned fallback, so this is additional regression precision, not evidence of a runtime defect.Verification limits
This was a read-only static review using file inspection and local read-only Git comparisons. I did not rerun tests, typecheck, lint, build or browser checks, and do not infer their final outcome from the reported initial focused run. Separately running check results still need verification by the task owner. No app was started; no live social-server requests, real-account actions, deployment, publishing, key rotation or production-data operations were performed. Historical release/deployment facts are taken from the supplied task context, not independently checked against production. No repository files were modified.
Implementer verification and delivery decision
Exact reviewed head:
fbe1c2182a8ccf7b4cae44d7fe27007f01ec7dad. Hosted CI run #118 passed in 1m27s: https://forge.caradoc.com/erik/erikvancraddock.com/actions/runs/118 . Local npm ci/typecheck/lint/build/diff check passed; full suite 765 tests, CI-scope 594 tests, Playwright 40 tests. All fixture activity is synthetic/intercepted; no live social servers or real accounts were used.The review's one explicitly optional 302/one-fetch test-precision suggestion is not a requested change or blocking warning. Existing redirect:error and transport/no-unsigned-fallback coverage remains intact; no additional runtime change is justified by it. No code changed after review.
No package/schema/runtime/retention changes, release/deployment, live Follow, key rotation, production data repair or legacy cleanup. Original main checkout's pre-existing generated CSS remains untouched; the task worktree's generated-only output was excluded from the commit. Proceeding with merge under the user's approved pickup pipeline.