go-board-jsonl-task-completed-appender
The solution is written and verified. Here's a summary:
On the muster board, events.jsonl contains 4 legacy non-JSON free-text rows from the tasks.md-migration era. append_board_event.py already guards against these by wrapping json.loads() in try/except json.JSONDecodeError and skipping malformed lines with a WARN.
append_board_task_completed.py lacks that guard. When it reads events.jsonl, the legacy rows either:
1. raise json.JSONDecodeError on json.loads(), or
2. (when the decode error is swallowed into {}) flow into {e["id"] for e in events} and raise KeyError: 'id' — the reported crash.
Add the same json.JSONDecodeError guard to the loader: skip malformed non-JSON lines and non-dict values with a WARN (mirroring append_board_event.py), and guard the id-uniqueness set with if "id" in e.
JSONDecodeError path and the exact KeyError: 'id' symptom.task_completed audit event is appended, and the T-42 row is updated to status=completed, worker_status=done, commit_hash=abc123.non-object row (str), and a missing events.jsonl (fresh board) is handled gracefully.The full self-contained solution is in ~/FIX-append_board_task_completed.md.
# Evidence - Problem class: go-board-jsonl-task-completed-appender - Model: openrouter/deepseek/deepseek-v4-flash-0731 - Solved: 2026-09-01T13:51:50.867Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "append_board_task_completed.py crashes KeyError: id on muster board because events.jsonl carries 4 legacy non-JSON free-text rows (tasks.md-migration era). Workaround: use append_board_event.py (tolerates malformed lines, skips with WARN) for the audit event + update_board_task_notes.py for the row, then set status/worker_status/commit_hash via a small python rewrite of tasks.jsonl. The task-completed script needs a json.JSONDecodeError guard like append_board_event.py has.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4-flash-0731", "problem_class": "go-board-jsonl-task-completed-appender", "provider": "openrouter", "solved_at": "2026-09-01T13:51:50.868Z", "version": ""}The solution is written and verified. Here's a summary:
On the muster board, events.jsonl contains 4 legacy non-JSON free-text rows from the tasks.md-migration era. append_board_event.py already guards against these by wrapping json.loads() in try/except json.JSONDecodeError and skipping malformed lines with a WARN.
append_board_task_completed.py lacks that guard. When it reads events.jsonl, the legacy rows either:
1. raise json.JSONDecodeError on json.loads(), or
2. (when the decode error is swallowed into {}) flow into {e["id"] for e in events} and raise KeyError: 'id' — the reported crash.
Add the same json.JSONDecodeError guard to the loader: skip malformed non-JSON lines and non-dict values with a WARN (mirroring append_board_event.py), and guard the id-uniqueness set with if "id" in e.
JSONDecodeError path and the exact KeyError: 'id' symptom.task_completed audit event is appended, and the T-42 row is updated to status=completed, worker_status=done, commit_hash=abc123.non-object row (str), and a missing events.jsonl (fresh board) is handled gracefully.The full self-contained solution is in ~/FIX-append_board_task_completed.md.
# Evidence - Problem class: go-board-jsonl-task-completed-appender - Model: openrouter/deepseek/deepseek-v4-flash-0731 - Solved: 2026-09-01T13:51:50.867Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "append_board_task_completed.py crashes KeyError: id on muster board because events.jsonl carries 4 legacy non-JSON free-text rows (tasks.md-migration era). Workaround: use append_board_event.py (tolerates malformed lines, skips with WARN) for the audit event + update_board_task_notes.py for the row, then set status/worker_status/commit_hash via a small python rewrite of tasks.jsonl. The task-completed script needs a json.JSONDecodeError guard like append_board_event.py has.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4-flash-0731", "problem_class": "go-board-jsonl-task-completed-appender", "provider": "openrouter", "solved_at": "2026-09-01T13:51:50.868Z", "version": ""}