Releases: vartiainen1/agent-error-log
Release list
v0.9.0
Added
- Professional packaging:
pyproject.toml(version derived from the git tag via
setuptools-scm - no drift), a globalerror-logconsole script, zero runtime
dependencies. - Installed-mode defaults guard (
_default_base): pip-installed runs resolve
default paths against the current directory; in-place copies keep resolving
against the file's folder. - CI
packagingjob: builds the wheel, installs it into a fresh venv, and
smoke-tests the console script + module import. publish.yml: trusted publishing to PyPI, gated behind thePUBLISH_TO_PYPI
repository variable (skipped until enabled).
v0.8.0
Fixed
-
Typed entries:
parse_entries()now returnsErrorEntrydataclasses (dict-compatible via__getitem__), full type hints on all functions, and a small exception vocabulary (AgentLogError/ValidationError/LockTimeoutError) — same behavior, same exit codes. -
stdin reconfigured to UTF-8 on Windows: piped unicode no longer double-encodes into the log (stdout-only reconfigure bug).
-
L10:
load()no longer crashes on a locked/unreadable log file (gracefulOSErrorfallback; regression tests added). -
Concurrent
--addappends no longer lose entries: the append is
now serialized by a cross-process lock file (<log>.lock, stdlib-only,
atomicO_CREAT|O_EXCLcreate with 5s wait and stale-lock recovery)
and the log is re-read inside the lock before writing (lost-update fix). -
_extract_area()marker semantics documented and pinned by tests:
the CI gate and the shell hooks agree on the marker (first matching
line, lastAREA:/LOG:on it — the hooks'grep -m1+ greedysed). -
status_token()strips the en-dash as well as the em-dash (OPEN–->
OPEN). -
start.pyactive_errors()delegates tocheck_errors.parse_entries()
(the canonical parser) instead of re-implementing entry splitting, so
the boot briefing can never drift from the tool's format. -
load()reads withutf-8-sigso a BOM-prefixed log is parsed, not
silently ignored.
Added
- Robustness tests: 100-entry fuzz, BOM / invalid UTF-8, en-dash
statuses, an empty section-5-only log, and multi-marker precedence in
--check-commit(last marker on the first matching line).
Docs
- Add a permanent visitor badge to the README (GitHub traffic stats
only keep 14 days). - README: document the lessons-clustering chain limitation, the parser's
worst-case O(n²) on pathological logs, andLOGNAMErepo-root-relative
paths.
v0.7.0
Docs
- Add CODE_OF_CONDUCT.md (Contributor Covenant 2.1) to complete the
community-standards checklist.
v0.6.0
Docs
- README: fix stale test count in the file listing (90 -> 117).
- Add issue templates (bug report, feature request), a pull-request
template that enforces the(AREA: ...)log-before-fix marker, and a
SECURITY.md policy.
v0.5.0
Added
- One-command adoption —
check_errors.py --init [--target DIR]
scaffoldserrors.txt/rules.txt/notes.txt(never overwriting
existing files), installs thecommit-msggate (backup-safe),
health-checks the log, and runs the unit-test suite. Built-in
minimal scaffolds kick in when onlycheck_errors.pywas copied.
v0.4.0
Docs
- README: document the PR-based shipping workflow (branch → PR →
squash merge with the(AREA: …)marker in the title) — direct
pushes tomasterare blocked by branch protection.
v0.3.0
Added
- Server-side commit-message gate —
check_errors.py --check-commit
re-runs the log-before-fix rule on a commit-message file, and the new
commit-gateCI job applies it to every pushed commit — so a
--no-verifybypass is caught at the server, where the flag cannot reach. hooks/install.sh— one-command setup for every--no-verifyblocker
(commit-msg gate, git wrapper alias, Claude Code + VS Code hooks).
Idempotent; backs up files before changing them; self-tests the Python
interpreter (Windows Store stubs are detected and skipped).
v0.2.0
Added
hooks/— harness-level--no-verifyblockers — close the documented
bypass of the commit gate at the layer where agents run:block-no-verify.sh— git alias wrapper rejectinggit commit --no-verify/-n.block-no-verify-hook.sh+claude-code-settings.json— Claude Code
PreToolUsehook blocking the command (exit 2, reason shown to the
model).block-no-verify-hook.sh+vscode-agent-hooks.json— VS Code agent
hook with the same guard, self-filtering ontool_name(VS Code does
not apply matchers).
- CI — the hook syntax check now covers every hook script
(git-commitmsg-hook.shandhooks/*.sh). - LICENSE — copyright holder set.
check_errors.py --lessons— distills recurring CAUSE keywords
from the error log into a LESSONS LEARNED section (preview by default;
--applywrites it intorules.txt). The agent's memory now
compounds on its own.
v0.1.0
Initial release — a model-agnostic error-log and log-before-fix system for
AI coding agents.
Added
- Three-file system —
rules.txt,errors.txt,notes.txttemplates
with placeholders for any project, plus example data that works out of the
box (python start.pyboots a fully working demo). check_errors.pytooling (stdlib only) — linter (template fields +
canonical statusesFIXED | PARTIAL | OPEN | MITIGATED | WORKAROUND),
--addscaffolder,--has-entrymechanical gate,--archive-days
archiver (idempotent, dry-run by default),--logfor any file.start.pysession bootstrap — STEP 0 error-log health check, reading
order, open errors, latest session note; configurable filenames.git-commitmsg-hook.sh— the log-before-fix git gate: blocks code
commits whose message lacks anAREA: <text>marker matching a logged
entry, lints the log when it is staged, and exposes env-var overrides
(LOGNAME,PYTHON,AGENT_ERROR_LOG_DIR)._test_errors.py— 64 unit tests (parsing, validation, gate, add,
archive, idempotency).- CI — GitHub Actions workflow running the tests, linter, and hook
syntax check on Linux and Windows across Python 3.9–3.12. - Docs — README, AGENTS.md, CONTRIBUTING.md, MIT license.
Known limitations
git commit --no-verifybypasses the local hook; documented with
practical workarounds in the README.