fleet: mark 4 reviewed literals DELIBERATE (backlog 88 → 84, comment-only) (#3066)

Comment-only. **No code changed** — 23 lines added, all comments.

## Census before/after

| Metric | Before | After |
|---|---:|---:|
| COLUMN guards (backlog) | 88 | **84** |
| DELIBERATE-LITERAL (reviewed) | 128 | **132** |

| File | Sites marked |
|---|---:|
| `packages/core/src/agent-store.ts` | 2 |
| `packages/core/src/async-mission-store-queries.ts` | 2 |

## Why marking, not converting

Both files already carried prose explaining why their literals are
correct. Without the marker the census still counts them as backlog, so
the fleet keeps dispatching workers at them — **three separate workers
have now independently re-derived the same two conclusions.** An
unmarked correct site costs a cycle every time it is re-examined, and
the cost repeats for every worker.

**`agent-store.ts`** picks a *word* for a human reader, not a lifecycle
decision: `(not active — done)` versus `(done)`. It degrades gracefully
on a renamed board — falls through to `(<column>)`, still accurate, just
less specific. Threading a resolution into a synchronous string builder
to choose an adjective is the wrong trade.

**`async-mission-store-queries.ts`** are the fallback arms of an
*already-converted* predicate, and the undefined branch is a **live
intended path**: `AsyncMissionStore.taskStore` is optional, every store
constructed without one relies on the legacy ids answering, and the
caller's two `resolveProjectColumnsForRoles(...).catch(() => undefined)`
calls mean each field can be undefined even *with* a store.

That last point is the distinction worth keeping: this is **not** the
`restart-recovery-coordinator` shape (#3059), where making a parameter
required deleted a production-dead fallback. Requiring it here would
force callers to fabricate a column set — inventing a vocabulary rather
than resolving one, which is the "guess" the fleet rules forbid.

## One mechanical note for future markers

**A marker only excuses the construct it precedes.** My first pass put
one comment above `isComplete` and moved 3 of 4 sites — `isArchived`,
two lines below, needed its own. Worth knowing before someone marks a
block and assumes it covered the siblings.

## Verification

- census: backlog 88 → 84, deliberate 128 → 132
- `agent-store-pause-marker-clear`, `agent-store-routing-policy`,
`mission-store.sync-auto-merge` — 18 tests green
- `tsc --noEmit` on `@fusion/core` clean; `pnpm lint` clean

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
  * Clarified how task-column wording handles renamed board columns.
* Documented the fallback to “done” when terminal-column information is
unavailable.
  * No user-facing behavior changes.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-07-31 03:34:05 -07:00
committed by GitHub
parent 18fab9b8e5
commit befbd299a9

View File

@@ -236,6 +236,16 @@ export function formatCurrentTaskLine(taskId: string, linkedTask: Pick<Task, "co
legacy ids; on a renamed board it falls through to "(<column>)", which is still accurate, just less
specific).
*/
/*
DELIBERATE-LITERAL — reviewed 2026-07-31-12:10 (fleet). This picks a WORD for a human reader, not
a lifecycle decision: `(not active — done)` versus `(done)`. It degrades gracefully on a renamed
board — it falls through to `(<column>)`, still accurate, just less specific — and threading a
resolution into a synchronous string builder to choose an adjective is the wrong trade.
Marked rather than left counted because three separate workers have now independently re-derived
this same conclusion. An unmarked correct site costs a fleet cycle every time the census points
at it.
*/
if (linkedTask.column === "done" || linkedTask.column === "archived") {
return `Current Task: ${taskId} (not active — ${linkedTask.column})`;
}