================================================================================
1) DECISIONS (append-only; never edit an old entry)
================================================================================

[2026-08-09 11:20] DECISION: shipping an LLM reasoning layer as a third companion repo
  REASON: the external reviewer's one remaining gap is "haven't called an LLM API yet"; this closes it with the same rigor, while keeping both sibling repos purely stdlib. Heuristics select what matters, the LLM explains why; local-first (Ollama) makes it free; the ecosystem becomes reactive + proactive + reasoning memory.
  FILES: check_logs_ai.py
  STATUS: LOCKED.

[2026-08-09 12:30] DECISION: kept --notes in v0.1.0 despite the review's "defer it" advice
  REASON: the reviewer suggested shipping only --lessons/--review first because
  --notes is open-ended summarization. We shipped it anyway because the prompt
  contract (title + 2-4 bullets + OPEN items) tames the open-endedness, and the
  live Ollama demo produced a genuinely useful note. Deviation is logged so the
  risk is explicit, not hidden.
  FILES: check_logs_ai.py
  STATUS: LOCKED.

[2026-08-09 13:05] DECISION: build a start.py boot helper and remove the broken start.bat
  REASON: start.bat referenced start.py which never existed, so the shipped
  launcher was broken. We considered skipping a start script entirely (the
  reasoning layer keeps no memory of its own - boot recall is the siblings'
  job) but a boot briefing still orients a fresh session: sibling-log health,
  endpoint reachability, and the command cheat-sheet. Removing start.bat beats
  leaving a dead launcher in the repo.
  FILES: start.py
  STATUS: LOCKED.

[2026-08-09 13:30] DECISION: close the reviewer's minor gaps - --init scaffold, command mutual exclusion, Ctrl-C safety
  REASON: the review locked 90/93/90 but named three real-but-minor code gaps:
  no --init (one-command adoption), no mutual exclusion between commands, and
  an implicit Ctrl-C catch. Closing them is cheap, pins the contracts with 10
  new tests (92 total), and keeps the third repo at family parity.
  FILES: check_logs_ai.py, _test_logs_ai.py
  STATUS: LOCKED.

[2026-08-09 13:45] DECISION: cut the v0.1.0 release of agent-log-ai
  REASON: the [Unreleased] section has accumulated everything the plan review
  and gap-close shipped - the core reasoning tool, 93 tests, --init adoption,
  mutual exclusion, start.py boot briefing, CI with the commit gate, and the
  release workflow itself. Cutting the first release makes the repo
  publishable and gives the launch pitch a version to cite, matching the
  siblings (agent-error-log v0.7.0, agent-decision-log v0.4.0).
  FILES: CHANGELOG.md
  STATUS: LOCKED.

[2026-08-10 22:27] DECISION: typed refactor - type hints and dataclasses
  REASON: external review scored structure 8/20; typed entries + dataclass bridge keep single-file adoption intact
  FILES: check_logs_ai.py
  STATUS: LOCKED.


[2026-08-11 09:30] DECISION: Ship professional packaging - pyproject, defaults guard, publish workflow
  REASON: close the distribution gap - pip-installable while keeping single-file + zero-dep promises
  FILES: pyproject.toml, check_logs_ai.py, ci.yml, publish.yml, README.md, CHANGELOG.md
  STATUS: LOCKED

================================================================================
[2026-08-10 10:00] DECISION: L10 locked-file read crash - degrade to missing, never crash
  REASON: a locked log must not kill the tool; None return matches the existing missing-file contract
  FILES: check_logs_ai.py
  STATUS: LOCKED.

[2026-08-10 10:00] DECISION: cut the v0.2.0 release of agent-log-ai
  REASON: the [Unreleased] section holds the L10 locked-read fix (load() no
  longer crashes on a Windows-locked log - graceful OSError fallback, +2
  regression tests, 95 total). Sibling repos ship the same fix (error-log
  PR #20, decision-log PR #17). Cutting v0.2.0 publishes the fix and keeps
  the family release cadence in step.
  FILES: CHANGELOG.md, check_logs_ai.py, _test_logs_ai.py
  STATUS: LOCKED.

5) TO ADD A NEW ENTRY
================================================================================
[2026-08-10 10:00] DECISION: doc - HERE-relative default paths FAQ
  REASON: --errors/--decisions/--notes-file default to HERE (script dir); undocumented, so scratch copies read the real logs. FAQ entry documents the behavior.
  FILES: README.md
  STATUS: LOCKED.

--

[2026-08-10 10:00] DECISION: doc - README stale v0.1.0 backoff reference + About homepage
  REASON: README says 'No automatic backoff in v0.1.0' but the repo is at v0.2.0; About homepage is empty while siblings link to their releases pages
  FILES: README.md
  STATUS: LOCKED.

--

[2026-08-10 10:00] DECISION: fix unicode stdin double-encoding on Windows
  REASON: same stdout-only reconfigure class as siblings; piped unicode prompts would mojibake. Fix in check_logs_ai.py with a regression test.
  FILES: check_logs_ai.py, _test_logs_ai.py
  STATUS: LOCKED.

--

[2026-08-10 10:00] DECISION: doc - FAQ documents Windows stdin unicode handling
  REASON: same gap as siblings; add a user-facing FAQ note that piped unicode prompts are safe on Windows after the stdin fix
  FILES: README.md
  STATUS: LOCKED.

--

  [YYYY-MM-DD HH:MM] DECISION: <what you chose>
    REASON: <why - the alternative you considered>
    STATUS: LOCKED | OPEN | REVISED

[2026-08-11 01:54] DECISION: rename PyPI distribution to agent-log-ai1
  REASON: PyPI's project-name similarity guard rejects agent-log-ai as too similar to the existing agent-log package, so the trusted-publisher pending project is agent-log-ai1 (the form accepted it). The uploaded wheel name must match the pending project name exactly or the OIDC publish is rejected. GitHub repo name, the log-ai console script, and single-file adoption are unaffected - only the distribution name changes.
  FILES: pyproject.toml, README.md, CHANGELOG.md
  STATUS: OPEN.

[2026-08-11 02:02] DECISION: cut v0.4.0 to publish the agent-log-ai1 distribution to PyPI
  REASON: the rename to agent-log-ai1 is merged on master, the pending publisher is confirmed, and PUBLISH_TO_PYPI is true on all three repos. Cutting v0.4.0 tags the renamed distribution so the trusted publish uploads agent_log_ai1-0.4.0, creating PyPI project agent-log-ai1 on first upload.
  FILES: CHANGELOG.md
  STATUS: LOCKED.


