**The date gate passes on `main` — but not because this was fixed.** ## What actually happened UTC rolled over to `2026-08-01`. The gate compares against the later of local and UTC, so two `2026-08-01` stamps in `scheduler.ts` became valid on their own. That is the ratchet's normal drop path and is fine. `#3278` then re-recorded the baseline "after the UTC rollover", which set `scheduler.ts` to **allow 1** — exactly enough to absorb the one stamp that did *not* age out: ``` FNXC:ConcurrencyAdmission 2026-08-06-09:00 ← six days out, wrong on any calendar ``` So the gate reports `123 known future-dated stamp(s), none added` and exits 0, with a stamp inside it that will not be valid until next week. ## Why this is the failure the gate exists to catch A blanket re-record cannot distinguish **aged out** from **still wrong**, so it launders the second past the first. The sibling ratchet states the rule outright: > Do NOT re-record the baseline to clear this — that is the same false green one layer up. This is that, one layer up again: not a guard cleared by a baseline, but a *baseline refresh* clearing a guard as a side effect. ## The fix - stamp repointed to `2026-08-01` — today in UTC, which is the calendar the gate actually compares against - **allowance removed**, not left at 1, so the entry cannot be regrown into **Mutation-verified**: with the allowance gone, restoring `2026-08-06` exits **1**. Before this change the same stamp exited **0**. That is the whole point — the ratchet can now see it. ## One thing worth carrying forward A six-days-out stamp is not a timezone slip. Neither the old `date -u` guidance nor the current local-date guidance in AGENTS.md would have prevented it, and CI-only checking cannot catch it before merge. This is the concrete case for running the date check at author time, which I have flagged but not landed since it changes the gate's contract. ## Verification - `check-fnxc-future-dates` — exit 0, allowance removed - `scheduler` suites — **148 pass** - `tsc --noEmit` (engine) — 0 errors Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
66 lines
3.7 KiB
JSON
66 lines
3.7 KiB
JSON
{
|
|
"packages/cli/src/__tests__/cli-active-count-lanes.test.ts": 5,
|
|
"packages/cli/src/commands/dashboard.ts": 1,
|
|
"packages/cli/src/commands/task.ts": 6,
|
|
"packages/cli/src/extension.ts": 3,
|
|
"packages/core/src/__tests__/merge-path-lanes-resolved.test.ts": 2,
|
|
"packages/core/src/__tests__/postgres/dependency-satisfied-renamed-board.pg.test.ts": 2,
|
|
"packages/core/src/__tests__/postgres/task-dependency-mutation.pg.test.ts": 1,
|
|
"packages/core/src/__tests__/pure-lifecycle-predicates.test.ts": 3,
|
|
"packages/core/src/__tests__/unarchive-target-lanes.test.ts": 1,
|
|
"packages/core/src/async-chat-store.ts": 4,
|
|
"packages/core/src/async-mission-store-queries.ts": 1,
|
|
"packages/core/src/async-mission-store.ts": 1,
|
|
"packages/core/src/blocker-fanout.ts": 1,
|
|
"packages/core/src/chat-store.ts": 1,
|
|
"packages/core/src/command-center-live.ts": 1,
|
|
"packages/core/src/live-agent-count.ts": 1,
|
|
"packages/core/src/postgres/migrations/0000_initial.sql": 1,
|
|
"packages/core/src/postgres/migrations/0035_fn_8543_mission_lineage_stop.sql": 1,
|
|
"packages/core/src/postgres/migrations/0036_chat_session_tags.sql": 2,
|
|
"packages/core/src/settings-schema.ts": 2,
|
|
"packages/core/src/store.ts": 1,
|
|
"packages/core/src/task-store/branch-group-ops.ts": 1,
|
|
"packages/core/src/task-store/merge-queue-ops-2.ts": 3,
|
|
"packages/core/src/task-store/task-artifacts-ops.ts": 5,
|
|
"packages/core/src/task-store/task-store-helpers.ts": 2,
|
|
"packages/core/src/task-store/update-task-deps.ts": 5,
|
|
"packages/dashboard/app/App.tsx": 2,
|
|
"packages/dashboard/app/components/AgentDetailView.css": 1,
|
|
"packages/dashboard/app/components/ChatView.css": 2,
|
|
"packages/dashboard/app/components/PendingAttachmentPreviews.css": 1,
|
|
"packages/dashboard/app/components/TaskDetailModal.css": 1,
|
|
"packages/dashboard/src/__tests__/ai-session-diagnostics.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/board-workflows.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/chat.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/devserver-manager.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/devserver-preview-detect.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/github-tracking-renamed-board.test.ts": 3,
|
|
"packages/dashboard/src/__tests__/issue-image-attachments.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/register-signal-routes.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/routes-github.test.ts": 4,
|
|
"packages/dashboard/src/__tests__/routes-tasks.test.ts": 1,
|
|
"packages/dashboard/src/__tests__/sse.test.ts": 1,
|
|
"packages/dashboard/src/project-store-resolver.ts": 1,
|
|
"packages/dashboard/src/routes/__tests__/register-task-workflow-routes.move-bypassguards.test.ts": 2,
|
|
"packages/dashboard/src/routes/__tests__/register-task-workflow-routes.resolved-review-column.test.ts": 2,
|
|
"packages/dashboard/src/routes/register-task-workflow-routes.ts": 4,
|
|
"packages/dashboard/vitest.config.ts": 1,
|
|
"packages/engine/src/__tests__/executor-graph-failure-lanes-resolved.test.ts": 1,
|
|
"packages/engine/src/__tests__/executor-stale-spec-active-lanes.test.ts": 1,
|
|
"packages/engine/src/__tests__/planning-continuation-terminal-lanes.test.ts": 1,
|
|
"packages/engine/src/__tests__/workflow-planning-continuation-terminal-gap-live-e2e.pg.test.ts": 1,
|
|
"packages/engine/src/agent-session-helpers.ts": 2,
|
|
"packages/engine/src/agent-tools.ts": 1,
|
|
"packages/engine/src/concurrency.ts": 4,
|
|
"packages/engine/src/merger.ts": 2,
|
|
"packages/engine/src/pi.ts": 3,
|
|
"packages/engine/src/project-engine.ts": 2,
|
|
"packages/engine/src/restart-recovery-coordinator.ts": 1,
|
|
"packages/engine/src/runtime-resolution.ts": 1,
|
|
"packages/engine/src/runtimes/in-process-runtime.ts": 4,
|
|
"packages/engine/src/triage.ts": 5,
|
|
"docs/dashboard-guide.md": 2,
|
|
"docs/workflow-steps.md": 1
|
|
}
|