You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
impl(orchestrator/project): Area-unset pool items (17) are invisible to per-project pages - triage pass + taxonomy check #1143
Evidence (live review 2026-10-26 ~22:40 CDT, laptop loopback + gh, cross-checked): Project pool tonight: 139 items - lab-cluster 20, id-train 70, pm-dashboard 28, fleet-ops 4, unset Area 17. Per-project pages (#1121) filter by Area, so 12% of the pool belongs to no project. Distribution also drifted vs Oct 25 (fleet-ops 9 -> 4 while id-train grew ~6x) - Area is applied inconsistently as volume grows.
Proposal
A triage pass over the unset items: set Area where determinable, record why for the rest; a lightweight convention note (which labels/repo imply which Area) alongside the #910 conventions; and the unset count surfaced on /projects + the /program index as a visible gap, not silently dropped.
Acceptance
Unset count materially reduced; remaining unset items each carry a recorded reason.
/program index — DONE:src/render.ts renderProgramIndex (~:4686-4690) renders the banner "N pool items carry no Area — they belong to no project page until Area is set on the Project. Setting Area is the orchestrator's reconciliation job; this count keeps the gap visible." Per-project pages for Area-less projects also state the unset count (:4751).
/projects — NOT DONE:renderProjects builds its area chips from pool.map(p => p.area).filter(Boolean) — only set areas get a chip; a card's area badge renders only when p.area is truthy. Unset items appear only inside "all", uncounted and unbucketed, so the acceptance "/projects shows the unset bucket explicitly" is unmet.
The unset-item triage pass itself is the orchestrator's: the dashboard's own architecture record (program.ts) names the hourly orchestrator the single writer of Project status/Area reconciliation — a queue worker must not set Area on pool items. The convention/gap-surfacing half is the dashboard work routed below.
Live recount limitation:gh project item-list 4 from the worker sandbox fails — the token lacks the read:project scope — so no fresh unset count could be taken this run; the filing count (17 unset of 139, 2026-10-26) stands as the last verified number.
Route: dashboard slice enqueued as queue task 3033 (small_fix, dedupe repo-health:v1:fix:developing-today/code:issue:1143): explicit "(unset)" bucket with live count on /projects, mirroring the /program banner, plus a projects.test.ts assertion. Reducing the unset count itself stays with the orchestrator's reconciliation pass. The issue stays open; this triage task completes as triaged.
Queue task 3033 (small_fix, follow-up of triage 2425) completed as pr_opened.
PR:#2423 — feat(dashboard): show the Area-unset bucket explicitly on /projects, branch queue/3033-1143-projects-unset-bucket, head 3b915d45. Open, not draft, MERGEABLE, mergeStateStatus: CLEAN, checks green, no unresolved review threads.
Diff:pm-stack/aggregator/src/render.ts (+23/−3) and pm-stack/aggregator/test/projects.test.ts (+15) — the (unset) chip with live count and an unset-only bucket view on /projects, rendered only when unset items exist, wording mirroring the /program index banner.
Scope respected: no Area writes; the orchestrator remains the single writer.
Activity
developing-today commentedon Oct 27, 2026
CODE-279
dezren39 commentedon Oct 29, 2026
🤖 Agent note · picked up
dezren39 commentedon Oct 29, 2026
🤖 Agent note · done
bd88019448ad397cdbcadaf8e0d29171fb1d661dEvidence (fresh GitHub reads at HEAD):
src/render.tsrenderProgramIndex (~:4686-4690) renders the banner "N pool items carry no Area — they belong to no project page until Area is set on the Project. Setting Area is the orchestrator's reconciliation job; this count keeps the gap visible." Per-project pages for Area-less projects also state the unset count (:4751).renderProjectsbuilds its area chips frompool.map(p => p.area).filter(Boolean)— only set areas get a chip; a card's area badge renders only whenp.areais truthy. Unset items appear only inside "all", uncounted and unbucketed, so the acceptance "/projects shows the unset bucket explicitly" is unmet.gh project item-list 4from the worker sandbox fails — the token lacks theread:projectscope — so no fresh unset count could be taken this run; the filing count (17 unset of 139, 2026-10-26) stands as the last verified number.Route: dashboard slice enqueued as queue task 3033 (
small_fix, deduperepo-health:v1:fix:developing-today/code:issue:1143): explicit "(unset)" bucket with live count on /projects, mirroring the /program banner, plus a projects.test.ts assertion. Reducing the unset count itself stays with the orchestrator's reconciliation pass. The issue stays open; this triage task completes astriaged.22 remaining items
dezren39 commentedon Oct 29, 2026
🤖 Agent note · picked up
dezren39 commentedon Oct 29, 2026
🤖 Agent note · parked
dezren39 commentedon Oct 29, 2026
Agent note — done (PR opened)
Queue task 3033 (
small_fix, follow-up of triage 2425) completed aspr_opened.feat(dashboard): show the Area-unset bucket explicitly on /projects, branchqueue/3033-1143-projects-unset-bucket, head3b915d45. Open, not draft,MERGEABLE,mergeStateStatus: CLEAN, checks green, no unresolved review threads.pm-stack/aggregator/src/render.ts(+23/−3) andpm-stack/aggregator/test/projects.test.ts(+15) — the(unset)chip with live count and an unset-only bucket view on/projects, rendered only when unset items exist, wording mirroring the/programindex banner.5a34fa70). The PR is queue-ready the moment ci: merge queue ejects every PR — no merge since #2233 (10:57Z), entries dropped 2-6 min into AWAITING_CHECKS #2403 clears; no--adminmerge was used.Merge pull request #2423 from developing-today/queue/3033-1143-projec…