Dataface Tasks

Normalize task manager and team identities to canonical dave and rj slugs

IDINFRA_TOOLING-NORMALIZE_TASK_MANAGER_AND_TEAM_IDENTITIES_TO_CANONICAL_DAVE_AND_RJ_SLUGS
Statuscompleted
Priorityp1
Milestonem1-ft-analytics-analyst-pilot
Ownersr-engineer-architect
Completed bydave
Completed2026-03-24

Problem

Rename team member files from davefowler.md/rj-andrews.md to dave.md/rj.md, update _team_identity_slug() to return nickname instead of file stem, and migrate all frontmatter references to canonical slugs.

Context

  • Team member files are named davefowler.md and rj-andrews.md but canonical slugs are dave and rj (the nickname field).
  • _team_identity_slug() in tasks/tools/task_cli.py returns path.stem (e.g. davefowler), so completed_by and other fields get non-canonical values.
  • get_workstream_owner() defaults to davefowler instead of dave.
  • Role files use owner: davefowler and filled_by: rj-andrews instead of canonical slugs.
  • ~84 completed tasks have completed_by: davefowler, 3 have completed_by: rj-andrews.
  • Runtime state in .tasks/task_manager/ has split keys (dave vs dave-fowler).
  • RJ_IDENTITIES / DAVE_IDENTITIES in scripts/task_manager_lib.py enumerate aliases but the root cause is that non-canonical forms are produced in the first place.

Key files: - tasks/team/davefowler.md → rename to tasks/team/dave.md - tasks/team/rj-andrews.md → rename to tasks/team/rj.md - tasks/tools/task_cli.py_team_identity_slug(), get_workstream_owner() - tasks/team/roles/*.mdowner and filled_by fields - tasks/workstreams/*/tasks/*.mdcompleted_by frontmatter - scripts/task_manager_lib.py — identity sets (keep as backward-compat aliases) - tests/scripts/test_task_manager_scripts.py — test fixtures

Possible Solutions

Rename team files to dave.md / rj.md so the file stem matches the canonical slug. Update _team_identity_slug() to prefer nickname over path.stem. Migrate all existing frontmatter references.

  • Pro: Single source of truth — the file name IS the canonical slug.
  • Pro: _team_identity_slug() returns the right value without special-casing.
  • Pro: Eliminates the root cause of non-canonical forms.
  • Con: Bulk frontmatter update across ~90 task files.

B. Keep file names, only change _team_identity_slug() to return nickname

  • Pro: Smaller diff — no file renames.
  • Con: File stem and canonical slug diverge, causing confusion.
  • Con: Doesn't clean up existing non-canonical references.

Plan

  1. Write a failing test that _team_identity_slug("Dave Fowler") returns dave (not davefowler).
  2. Rename tasks/team/davefowler.mdtasks/team/dave.md and tasks/team/rj-andrews.mdtasks/team/rj.md.
  3. Update _team_identity_slug() to return nickname when matched, falling back to path.stem.
  4. Update get_workstream_owner() default from davefowler to dave.
  5. Update role files: owner: davefowlerowner: dave, filled_by: rj-andrewsfilled_by: rj.
  6. Bulk-update task frontmatter: completed_by: davefowlercompleted_by: dave, completed_by: rj-andrewscompleted_by: rj.
  7. Update test fixtures that use davefowler / rj-andrews as person identities.
  8. Run just task validate and just ci.

Implementation Progress

  • Wrote failing test test_team_identity_slug_returns_canonical_nickname proving _team_identity_slug returns file stem instead of nickname.
  • Fixed _team_identity_slug() to return nickname from team file frontmatter when present, falling back to path.stem.
  • Renamed tasks/team/davefowler.mddave.md and tasks/team/rj-andrews.mdrj.md.
  • Updated get_workstream_owner() default from davefowler to dave.
  • Updated all 7 role files: owner: davefowlerdave, filled_by: rj-andrewsrj.
  • Bulk-updated ~80 task files: completed_by: davefowlerdave, completed_by: rj-andrewsrj.
  • Updated test fixtures in test_task_cli.py, test_tasks_activity.py, test_task_manager_scripts.py.
  • All 100 focused tests pass.
  • Review feedback: fixed 3 missed index files (tasks/team/index.md, tasks/guidebook/index.md, tasks/concepts/index.md) — updated owner: davefowlerdave and fixed broken member links in team/index.md.
  • Updated stale context references in make-task-manager-route-tasks-by-role-owner-mapping.md.

QA Exploration

N/A — pure backend/infra change with no UI surface.

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

Review Feedback

  • [ ] Review cleared