fix(board): plan/brief use actual debt, not raw pending mail
board.sh --plan group 2 and --brief conflated every unhandled inbox message with an obligation to reply, including ones the sender declared reply-expected: no (a notice, not a request). Reported by morning-driver (2026-08-11), independently reproduced against the live mailbox on 2026-08-13: 27 of 72 pending messages were notices. Both paths now join against coord-count.sh's owed column instead, so a done/deferred/blocked repo whose only mail is FYI no longer gets a plan tab, and --brief no longer counts a notice as an obligation. The table's raw INN column is unchanged by design. While extending that join with a second lookup file, found and fixed a more severe, independent defect: the existing $UNBLOCKS/$RECORDS join used the NR==FNR awk idiom, which silently empties the entire plan whenever the first file is empty -- i.e. whenever the repo tree has zero blocked repos, a common, ordinary state, not an edge case. Verified against the shipped 0.21.0 script. Fixed by matching on FILENAME instead of cumulative line counts, for both lookup files. Also repoints the README's governance link at repo-standard's canonical GOVERNANCE.md (was pointing at the marketplace's copy), per org-ops D11. board-selftest.sh: 142 -> 150 checks. Version 0.21.0 -> 0.22.0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGWMPskXBsTjMrrQ2GofFx
This commit is contained in:
parent
b02c2880e3
commit
03e712a423
10 changed files with 263 additions and 27 deletions
29
CHANGELOG.md
29
CHANGELOG.md
|
|
@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.22.0] - 2026-08-13
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`board.sh --plan` and `--brief` conflated raw pending mail with debt.**
|
||||
Group 2's `keep`/`mag`/`why=inbox:N` and the whole of `--brief` were computed
|
||||
from every unhandled message in an inbox, including ones the sender declared
|
||||
`reply-expected: no` (a notice, not a request). Reported by morning-driver
|
||||
(2026-08-11), independently reproduced against the live mailbox on
|
||||
2026-08-13 (27 of 72 pending messages were notices, not requests). Both
|
||||
paths now join against `coord-count.sh`'s `owed` column instead: a
|
||||
`done`/`deferred`/`blocked` repo whose only mail is FYI no longer gets a
|
||||
plan tab, and `--brief` no longer counts a notice as an obligation. The
|
||||
table's `INN` column is unchanged - it means raw pending by design. See
|
||||
CLAUDE.md's board.sh section for the full reasoning, including why this
|
||||
narrows rather than reopens the "debt is never excluded or capped" rule.
|
||||
- **`board.sh --plan` silently emptied itself whenever the repo tree had zero
|
||||
`blocked` repos.** The `$UNBLOCKS`/`$RECORDS` join used the `NR==FNR` awk
|
||||
idiom, which breaks silently when the FIRST file is empty: `FNR` stays equal
|
||||
to `NR` for the entire NEXT file too, not just its first line, misrouting
|
||||
every record into the wrong branch and dropping it via `next`. Found while
|
||||
adding the debt join above (a second lookup file made the same fragility
|
||||
hit `--brief` too, whenever there was neither chain-root credit nor debt on
|
||||
a given day). Verified against the shipped 0.21.0 script with a minimal
|
||||
reproduction. Fixed by matching on `FILENAME` instead of line counts.
|
||||
|
||||
`board-selftest.sh`: 142 -> 150 checks (fixtures for FYI-only mail,
|
||||
mixed owed/pending mail, and the zero-blocked-repos case).
|
||||
|
||||
## [0.21.0] - 2026-08-09
|
||||
|
||||
### Changed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue