Dataface Tasks

Fix tasks server /status browse links for legacy master_plans paths

IDINFRA_TOOLING-FIX_TASKS_SERVER_STATUS_BROWSE_LINKS_FOR_LEGACY_MASTER_PLANS_PATHS
Statuscompleted
Priorityp2
Milestonem1-ft-analytics-analyst-pilot
Ownersr-engineer-architect
Completed bydave
Completed2026-03-23

Problem

On the tasks server /status page, every task row linked to /browse/master_plans/workstreams/<ws>/tasks/<file>.md. After the repo rename to tasks/workstreams/..., those paths 404. Nav “Browse tasks” (/browse/tasks) was fine; the bug was task-row hrefs derived from stale task_path values in the heartbeat snapshot.

Context

  • Server: tasks/tools/tasks_server.py (_task_browse_href, /browse/{path}).
  • Heartbeat still had master_plans/ prefixes in some environments while markdown on disk is under tasks/.

Possible Solutions

  1. Recommended — server-side remap: If task_path resolves to a missing file and the path starts with master_plans/, try tasks/ + suffix when that file exists. Only emit an <a href> when a target file exists (avoids confident 404s).
  2. Normalize paths only in the snapshot writer: requires all heartbeats upgraded before links work everywhere.

Plan

  1. Add _resolve_task_browse_target() and use it from _task_browse_href().
  2. Regression test with snapshot task_path under master_plans/... and file on disk under tasks/....
  3. Ensure existing tests create stub .md files when they assert browse hrefs (links now require an existing file).

Implementation Progress

  • Implemented remap and existence check in tasks/tools/tasks_server.py.
  • Added test_status_page_remaps_legacy_master_plans_paths and _touch_task_files helper in tests/core/test_tasks_server.py.
  • Restart just tasks serve (or your tasks server process) to pick up code changes.

QA Exploration

  • scripts/qa-explore with --url http://127.0.0.1:8005/status timed out (no worker summary.md); completed scripted QA instead: fetched /status, enumerated hrefs, curl checked each — all task links were 404 under master_plans before the fix.
  • Cursor browser MCP could not load 127.0.0.1:8005 (stayed about:blank); local curl validation used.
  • Artifacts: .qa-explorer/runs/20260323T222012-42860/summary.md and summary.json (backfilled).

  • [x] QA exploration completed (or N/A for non-UI tasks)

Review Feedback

  • [ ] Review cleared