**`main` is RED on the lifecycle ratchet right now.** `node
scripts/lifecycle-column-census.mjs --strict` exits **1** on pristine
`origin/main`, which is the `Lint` job's *Lifecycle-column ratchet* step
— so **every open PR fails Lint** until this lands, regardless of its
own contents.
Verified on a detached checkout of `origin/main`, not on a branch of
mine.
## Cause
Eight `DELIBERATE-LITERAL` markers were added across seven files without
re-recording the baseline:
```
packages/core/src/task-move-disposer.ts (in-progress, todo)
packages/core/src/task-store/archive-lifecycle-2.ts (archived)
packages/dashboard/src/github-tracking-comments.ts (done)
packages/dashboard/src/gitlab-tracking-comments.ts (in-progress)
packages/dashboard/src/server.ts (archived)
packages/dashboard/src/task-planner-chat-context.ts (done)
packages/dashboard/src/test/mockCoreEngine.ts (in-review)
```
Adding a marker RECLASSIFIES a site (column-guard → deliberate), so the
tracked deliberate totals move and `--strict` fails until the baseline
records the new shape. It is the same mechanism that turned #2775 red
earlier today — a marker landing without its baseline — which is worth
noting because it has now happened twice from different PRs.
## The fix
Baseline re-recorded, nothing else. Zero source changes; the diff is one
derived file.
- `--strict` exits **0**
- `pnpm test:gate` — **161 / 13 / 487 / 71**
- `pnpm lint` clean
## Worth a follow-up by whoever owns the ratchet
The failure is structural rather than careless: a PR that adds a marker
is *doing the right thing*, and the baseline requirement is only
discovered when CI goes red — after merge, for everyone else. Two
options, neither of which I am taking unilaterally on a red-main fix:
1. have `--strict` treat a marker-only reclassification as an accepted
rise (it is not new debt — the count of unconverted guards goes
**down**);
2. or fail the PR that adds the marker, by comparing against the base
ref rather than the recorded baseline — the machinery for that already
exists in this script.
I would take (1): a marker is the documented way to close a site, and
requiring a second mechanical step to record it is a trap that catches
good behaviour.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved lifecycle census error messages to distinguish genuine
increases in column-guard debt from reclassified deliberate literals.
* Added clearer remediation guidance for reclassified results, including
when to update the baseline.
* Updated lifecycle census baseline mappings to reflect current
classifications.
* **Tests**
* Added coverage for unchanged baselines, genuine guard-count increases,
and marker-only reclassification scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>