Anonymous - 2026-04-23

Originally posted by: kumaakh

Technical direction: The design in the issue body is well-thought-out. Implementation sequence:

  1. Topic registry (src/services/status-topics.ts): persist to ~/.apra-fleet/status-topics.json. Each record: { topic, value, size, last_updated }. 24hr TTL sweep on server start.
  2. publish_status MCP tool (src/tools/publish-status.ts): write topic to registry. Empty/absent alue = delete topic immediately. channel param accepted but only statusline handled for now (others logged + no-op).
  3. Status line renderer (src/services/statusline.ts): on render, read topic registry, sort by last_updated descending, truncate each value to its size, join with | separator. The leet topic (from leet_status) is always registered at server start.
  4. Update leet_status to call publish_status('fleet', ...) internally so fleet member state flows into the topic registry.
  5. PM skill (skills/pm/single-pair-sprint.md and simple-sprint.md): add publish_status('pm-<project>', 'PROJECT->...') calls at task state transitions; clear on sprint completion.</project>

The channel routing (Slack/Teams) can be wired up later by adding a channel dispatch layer in publish-status.ts — the tool interface is already future-proofed for it.