#759 follow-ups: correct plugin log levels, less log noise, compact comment-edit misses

Merged
AF
3d ago
+544-57

Follow-ups from issue #759's later comments (triage in the internal investigation report):

  • Engine log records forwarded through the bridge keep their level (WARN, ERROR and DEBUG no longer become INFO), marked as engine records.
  • The OpenCode and Pi plugin logs no longer store a second copy of engine records, since the engine already writes them to aft-<pid>.log. aft doctor --issue now collects those engine logs, with its existing budgets and redaction. Unrecognized stderr and the crash-diagnostic tail are unchanged.
  • A host logger without a debug method gets DEBUG records on its log method, never on the console.
  • An absent checkpoint directory is skipped without a warning (NotFound only; other errors still warn).
  • Performance ticks no longer fire for empty request drains.
  • Successful reclaim of a lock left by a dead process logs at INFO instead of WARN; reclaim failures are unchanged.
  • A failed GitHub-comment edit shows a bounded excerpt of the search text, the same as local edits; short search text is unchanged.

Tests: the bridge stderr-level tests (17), OpenCode and Pi forwarding, doctor engine-log collection (4), formatting and the Windows compile check passed on the build server. That run's Rust library filter printed no result line, so CI is the gate for the Rust tests.


Summary by cubic

Follow-ups from issue #759: forwarded engine log records keep their severity, the OpenCode and Pi plugins stop duplicating engine records in their own logs, and several log-noise sources are quieter.

Log forwarding and collection

  • Bridge forwarding preserves INFO, WARN, ERROR, and DEBUG levels from the engine and marks them as engine records.
  • A host logger without a debug method receives DEBUG records on its log method rather than the console.
  • The OpenCode and Pi plugins skip engine records entirely, since the engine already writes them to aft-<pid>.log; aft doctor --issue now collects those engine logs with the existing budgets and redaction.
  • An absent checkpoint directory is skipped without a warning; other boundary errors still warn.
  • Performance ticks no longer fire when only an empty request drain happened.
  • Successful reclaim of a lock left by a dead process logs at INFO instead of WARN.
  • Docker and Windows E2E checks now read both plugin and engine logs for startup and crash assertions, with the Windows bridge-spawned check also accepting the bridge's Spawning binary line.

Comment edits

  • Failed GitHub-comment edits show a bounded excerpt of the search text, matching local edits; short search text is unchanged.