diff --git a/.claude/agent-memory/validator/MEMORY.md b/.claude/agent-memory/validator/MEMORY.md index 7479f6a..856e003 100644 --- a/.claude/agent-memory/validator/MEMORY.md +++ b/.claude/agent-memory/validator/MEMORY.md @@ -4,3 +4,4 @@ - [Fake-DOM escapeHtml harness gotcha](feedback_fake_dom_escapehtml_harness.md) — ad hoc app.js DOM harnesses need real textContent->innerHTML escaping or escapeHtml() falsely looks blank - [Known pre-existing supervisor test failure](project_known_preexisting_supervisor_failure.md) — RollbackPathBFailureTest fails deterministically, unrelated to src/ diffs; confirmed via pre-image checkout - [Thin test_report placeholder, solid diff](project_thin_test_report_placeholder.md) — task 837fc183 test_report.md was just a launch stub; code_diff was solid, verified independently anyway +- [Status-enum drift is a skill_defect](project_status_enum_drift_skill_gap.md) — task.status hardcoded in 2+ independent app.js lists, both stale vs schema.py after ea19c7d; file as skill_defect not coder diff --git a/.claude/agent-memory/validator/project_status_enum_drift_skill_gap.md b/.claude/agent-memory/validator/project_status_enum_drift_skill_gap.md new file mode 100644 index 0000000..d4ada8f --- /dev/null +++ b/.claude/agent-memory/validator/project_status_enum_drift_skill_gap.md @@ -0,0 +1,29 @@ +--- +name: project-status-enum-drift-skill-gap +description: task.status hardcoded enum copies (frontend/app.js) drift from schema.py CHECK constraint; recurring skill_defect, not a one-off coder mistake +metadata: + type: project +--- + +`src/schema.py`'s `task.status` CHECK constraint has grown a hardcoded mirror in at least two +independent `frontend/app.js` locations: `TASK_STATUSES` (line ~979, `v_task_board` status +filter dropdown, introduced 2026-07-31 commit `e026f9e`) and `NAV_STATUS_BUCKETS` (line ~214, +nav-bar status summary, introduced 2026-08-07 commit `958b55a`). Both were correct when written +but went stale the moment commit `ea19c7d` (2026-08-08, Org Graph unification Phase 1) added an +11th status `reviewing_planner_output` to the schema — neither list was updated, and no test +asserts the frontend lists match `schema.py`'s CHECK constraint. + +**Why:** confirmed via `git log -S`/blame that this exact drift pattern happened twice, +independently, across two unrelated Units separated by a week — not a one-off mistake in a +single Coder session. `skills/code-task-development/SKILL.md` (the Coder skill used for both) +has no step instructing the Coder to grep for/update other hardcoded copies of a schema.py +enum/CHECK-constraint list when adding or changing one. Filed as `root_cause_category: +skill_defect` (not `coder`) for this reason on the nav-bar-project-context validation task +(2026-08-13). + +**How to apply:** if a future validation surfaces another stale hardcoded status/enum list +anywhere in `frontend/app.js` or elsewhere, treat it as the same recurring `skill_defect` +(propagate to `c_org_loop_route`/whoever owns `skills/code-task-development/SKILL.md`) rather +than re-filing as an isolated `coder` mistake each time. The actual fix (deriving the enum from +one shared source, or a schema-consistency test) has not landed as of this writing — check +`frontend/app.js` and `src/schema.py`'s CHECK constraint directly before assuming it's fixed.