Skip to content

FLT-104 — Build Report

Built by: Codex (offloaded under governor RED), verified by Claude (WT-6022), 2026-07-17. Branch: wt/WT-6022/FLT-104. Spec: docs/FLT-104-gate0-auth-smoke-spec.md.

Result (verified independently, not on Codex's word)

  • dotnet build -warnaserror: 0 warnings, 0 errors.
  • dotnet test: 18 passed, 0 failed.

Implemented

  • fleet-routine.sln + src/FleetRoutine.Cli (exe fleet-routine) + tests/FleetRoutine.Tests (xUnit).
  • doctor verb: --register-probe (one-time S4U task registration), --noninteractive (trigger + read, --harness / --json / --allow-missing), --reset, --probe-payload (the in-task probe runner).
  • WindowsProbeTask.cs: persistent fleet-routine-doctor S4U task via Task Scheduler COM (Microsoft.Win32.TaskScheduler), RunLevel Highest; fail-closed Validate() on wrong-user / SYSTEM / non-S4U / wrong-RunLevel; request/result handoff via JSON files under %LOCALAPPDATA%\fleet-routine\doctor; per-run nonce checked to reject stale results.
  • Six IHarnessProbe implementations (Probes.cs): Claude / Codex / Gemini / Grok (subprocess), Odysseus / Ollama (HTTP, localhost only). Prompt via temp file; UTF-8 no-BOM.
  • Canary.cs: per-run nonce FLEET_OK_<8hex>; case-sensitive contains after ANSI-strip + CRLF normalize.
  • Gate.cs / Models.cs: gate aggregation (6/6 or --allow-missing), result schema + failureClass mapping.
  • Tests: Canary (nonce match / mismatch / banner-no-nonce → fail), gate aggregation, failure classifier, serialization, probe runner.

Reviewer notes (Claude, ceiling review)

  1. No password/secret is ever handled — S4U registration passes password: null. Confirmed clean.
  2. DESIGN NUANCE to confirm on the first real run: uses passwordless TaskLogonType.S4U, which yields a token without network credentials. Harness OAuth tokens are read from local disk and vendor API calls carry those tokens (not Windows network creds), so it should work — but the live Gate 0 run must prove the S4U profile actually loads the tokens. If a harness fails with AUTH_TOKEN_MISSING only under S4U, revisit password-stored logon (TaskLogonType.InteractiveOrPassword) as a fallback. This is precisely the risk Gate 0 exists to surface.

Owed before merge to master

  • Council code-review gate (/council-code-review) — not yet run (Codex's runner died before its own review step; committed to the isolated branch to preserve verified-green work).
  • Live Gate 0 run on the main PC (the acceptance criterion) — requires the one-time --register-probe interactive step by Andrew.
  • TODO(FLT-104) in WindowsProbeTask.cs: align account/RunLevel with the real fleet-dispatch listener config.