Now that the work for Milestone 3, “ActivityPub Debug and Development Tools (Part 2),” is complete, we need to prepare and submit a progress report to the Sovereign Tech Agency as stipulated in our service agreement. This report is a prerequisite for invoicing the third milestone payment.
The task is to create a document that summarizes the work done and provides evidence of completion. According to the reporting guidelines, this can be achieved by collating links to all relevant commits, pull requests, and other source code management actions. Once the report is finalized, it will be sent to our program manager.
Milestone scope
Milestone 3 continued the ActivityPub debugging toolchain started in Milestone 2, delivering two major components shipped in Fedify 2.0.0 (released February 22, 2026):
@fedify/debugger — an embedded real-time ActivityPub debug dashboard that wraps any Federation object and provides a browser-based UI showing live traffic, signature verification, and delivery details
@fedify/lint — an ESLint and Deno Lint plugin with 21 rules that analyze federation setups and guide developers on missing or incorrect configurations
setOutboxPermanentFailureHandler() — a new API for handling permanent delivery failures with detailed error information
- Full documentation for both tools at https://fedify.dev/
Deviations from contract language
Two implementation decisions differ from the original contract wording:
- Polling-based updates instead of WebSocket: The dashboard uses HTTP polling (3-second interval) rather than WebSockets, due to the lack of a cross-runtime WebSocket server API that works uniformly across Deno, Node.js, and Bun. The functional result (near-real-time visibility) is equivalent for the intended development use case.
- Lint plugin instead of CLI checklist tool: The checklist functionality was implemented as an ESLint/Deno Lint plugin rather than a standalone
fedify checklist CLI command. This integrates more naturally into existing developer workflows (editor, CI/CD) and provides earlier, more actionable feedback.
Related issues and PRs
The following GitHub issues and pull requests contain the detailed work for this milestone:
Debug dashboard (@fedify/debugger)
Lint plugin (@fedify/lint)
Foundation (from Milestone 2)
Release
All technical details, code changes, and completion evidence can be found in these linked resources.
Now that the work for Milestone 3, “ActivityPub Debug and Development Tools (Part 2),” is complete, we need to prepare and submit a progress report to the Sovereign Tech Agency as stipulated in our service agreement. This report is a prerequisite for invoicing the third milestone payment.
The task is to create a document that summarizes the work done and provides evidence of completion. According to the reporting guidelines, this can be achieved by collating links to all relevant commits, pull requests, and other source code management actions. Once the report is finalized, it will be sent to our program manager.
Milestone scope
Milestone 3 continued the ActivityPub debugging toolchain started in Milestone 2, delivering two major components shipped in Fedify 2.0.0 (released February 22, 2026):
@fedify/debugger— an embedded real-time ActivityPub debug dashboard that wraps anyFederationobject and provides a browser-based UI showing live traffic, signature verification, and delivery details@fedify/lint— an ESLint and Deno Lint plugin with 21 rules that analyze federation setups and guide developers on missing or incorrect configurationssetOutboxPermanentFailureHandler()— a new API for handling permanent delivery failures with detailed error informationDeviations from contract language
Two implementation decisions differ from the original contract wording:
fedify checklistCLI command. This integrates more naturally into existing developer workflows (editor, CI/CD) and provides earlier, more actionable feedback.Related issues and PRs
The following GitHub issues and pull requests contain the detailed work for this milestone:
Debug dashboard (
@fedify/debugger)@fedify/debugger: Embedded ActivityPub debug dashboard #564:@fedify/debugger: Embedded ActivityPub debug dashboard@fedify/debugger: Embedded ActivityPub debug dashboard #561: LogTape trace context injection410 Gone,404 Not Found) #559: Permanent delivery failure handler (setOutboxPermanentFailureHandler)Lint plugin (
@fedify/lint)@fedify/lintinitial implementationfedify init#563: Integrate@fedify/lintintofedify initgenerated projectsFoundation (from Milestone 2)
FedifySpanExporterfor distributed trace storage #502:FedifySpanExporterlist()method toKvStoreinterface #500:KvStore.list()Release
All technical details, code changes, and completion evidence can be found in these linked resources.