Tooling fix for a measurement gap **I created and then found.**
Independent of my other branches.
## The gap
`resolveTaskWorkflowIrSync` returns the **default** workflow IR for
every task under PostgreSQL — the shipped backend — because the sync
selection reader answers `undefined` unconditionally. A guard resolved
through it behaves **exactly as the literal it replaced**, yet the
census scored it as converted. The backlog number fell; production did
not change.
I did this twice. One was caught by the new call-site ratchet
(`self-healing.ts`, since reverted to an honest literal). The other —
`scheduler.ts` in my merged #3051 — was not, because it has an
allow-list entry.
**The allow-list stops the class growing. It does not stop it
counting.** `scheduler.ts` alone holds **10 guards** fed by its
allow-listed sync resolver, all already subtracted from the backlog by
earlier PRs.
## What this adds
```
SYNC-RESOLVED files (conversions here may be INERT): 5
`resolveTaskWorkflowIrSync` answers with the DEFAULT workflow in production, so a guard
resolved through it behaves exactly as the literal did. Counts are REMAINING literals;
a count of 0 is the WORST case, not the best — the file reads as fully converted.
2 packages/engine/src/scheduler.ts
0 packages/core/src/store.ts
0 packages/core/src/task-store/task-store-helpers.ts
0 packages/core/src/task-store/workflow-task-create-ops.ts
0 packages/engine/src/replan-target.ts
```
Two deliberate choices:
- **Scans every censused file, not just those with remaining literals.**
A file converted *entirely* through the sync resolver has zero remaining
and would be invisible — which is exactly the case worth surfacing,
because it reads as 100% done. Four of the five are at zero, including
`replan-target.ts`, which the ratchet's own notes record as found only
by the ratchet.
- **A warning, not a subtraction.** Attributing individual guards to the
resolver needs dataflow this parser doesn't do, so the honest output is
"this file contains a sync call site, conversions in it may be inert"
rather than a precise number wrong in the other direction.
## Verification
- Totals and `--json` **byte-identical** before/after (stash-compare: 47
guards, 132 deliberate both ways) — the section is purely additive
- Census suites green: 53 tests + the node-test fallback suite
- Regex requires a *call*, not a mention, so the many files discussing
this in prose don't trip it
## Why it matters to the program
You steer by the backlog number. Right now a real conversion and an
inert one are indistinguishable in it, and my own reports of "20 / 45 /
74 sites resolved" were computed that way. This makes the ambiguity
visible at the point of measurement instead of relying on a reviewer
remembering the PG caveat.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>