# Bugfix — Issue #1687: `reqTreeReorder.html` — "Modified by" was a placeholder and requirement counts used denormalized values **Number:** #1687 **Status:** Fixed (verified; code already correct in repo, regression suite added, closed with evidence) **Component:** `gui/templates/requirements/reqTreeReorder.html` + `api/reqtreereorder/index.php` **Area:** Requirements / Specification Tree Reordering ## Symptom The Context card showed: - **Modified by** tile always rendered `-` (placeholder) — never populated from the spec revision author - The issue also noted `specHeader()` selected `V.total_req` (denormalized). The Requirements tile deliberately uses the live count (actual number of requirement rows), which is the correct choice for a reorder screen ## Repro 1. Load fixtures (fixtures_1681.php): tproject 12, spec 13 with 3 requirements, rev 1 2. Open `/gui/templates/requirements/reqTreeReorder.html?tproject_id=12&req_spec_id=13` 3. Observe Context → Modified by is `-` in the buggy state (historical); Requirements/ dropdown show live counts ## Root cause - UI: `$('#mWho').text('-')` hardcoded (not derived from API response) - API: `specHeader()` did not select revision author (`V.author_id`, `U.login`) ## Fix (already present in codebase) - `api/reqtreereorder/index.php::specHeader()` now selects `V.author_id, U.login AS author_login` via `LEFT JOIN users U ON U.id = V.author_id` and latest revision subquery; returns them - `api/reqtreereorder/index.php::init()` includes `context.author_id` and `context.author_login` - `gui/templates/requirements/reqTreeReorder.html` renders `ctx.author_login` with fallbacks to `'#'+author_id` then `'-'` - Live count (`COUNT(1) FROM requirements C WHERE C.srs_id = RS.id`) used for spec totals (correct; denormalized `total_req` unused) ## Verification - API: `context.author_id=1, context.author_login="admin"` for spec 13 - UI: Modified by shows `admin`; Requirements shows `3`; spec dropdown shows live counts `(3)`, `(0)` - Edge cases: missing/deleted author → fallback chain works; empty spec shows `0` - Event Viewer: no new errors ## Regression test See `tmp/TLU_Test_Cases.md` — "Regression — Issue #1687: reqTreeReorder.html - Modified by and live requirement counts" (gate: TLU_REQUIRE_SUITE="Issue #1687" passes) ## Screenshots N/A (functional fix; behavior verified via API + DOM) ## Files changed - `api/reqtreereorder/index.php` (specHeader/response shape - already fixed) - `gui/templates/requirements/reqTreeReorder.html` (context population - already fixed)