Next Session
<!-- This file is the Tier C (cross-PR / cross-session) state surface for the Brutal Honesty Rulebook v3.7.1. It is read by: - scripts/check_block_flag.py (the merge gate for new feature work) - the Tier B reviewer of the next PR you open - whoever picks the work back up after a session boundary Schema is fixed. Do not rename headings. Do not collapse the tables. Empty state is honest state — empty rows do not get deleted, they get filled with the "_none yet_" placeholder which the validator recognizes. Cycle definition (per rulebook §6.1): 1 cycle = the next operator-initiated session OR 5 calendar days, whichever comes FIRST. Items with TTL=1 cycle must be cleared before the next cycle starts or the block flag flips to BLOCKED automatically. -->Public-docs note: this is a runtime state template for repositories adopting the Brutal Honesty Kit. It is not the documentation landing page. Start with docs/README.md for public documentation.
Block flag
Current: CLEAR — no Carried Debt items have expired.
When the flag is BLOCKED, no new feature work may merge until Carried Debt
is empty. The flag is set automatically by scripts/check_block_flag.py:
CLEARif no Carried Debt rows OR all open rows are still in their first cycle (TTL not yet expired).BLOCKEDif any open Carried Debt row has survived a full cycle without being closed.
The script does not know cycle age — that is set by the operator at session-
wrap by inspecting the TTL column. The **Current**: line above is the
authoritative source; everything else is advisory.
Carried Debt
| ID | Item | Source | TTL | Blocking | Status |
|---|---|---|---|---|---|
| none yet | — | — | — | — | — |
Schema:
ID: stable identifier, prefixCD-+ sequential number (CD-001, CD-002, ...).Item: one short sentence stating the gap. Reference file:line where useful.Source: PR number or session ID that opened the debt.TTL:1 cycle,expired, or—(placeholder row only).Blocking:YES(forbids new feature work in next cycle if not cleared) orNO — <reason>(cosmetic / honestly-disclosed gap that does not block).Status:OPEN — <note>,**CLOSED** by PR #N, or_—_(placeholder). Rows starting withCLOSED(case-insensitive, stripping**markdown bold) are filtered out of the active-debt count bycheck_block_flag.py.
Deferred Scope
Items from this cycle's PRs whose DEFERRED_SCOPE: field captured ≥25% of
original scope. These are NOT debt — they are honestly-bounded
not-in-scope items. They appear here so the next planner sees them.
| ID | Item | Source PR | Why deferred |
|---|---|---|---|
| none yet | — | — | — |
Aggregate BHS trend
Track BHS_OFFICIAL per merged PR over the last 5 cycles. Falling trend = the
remediation loop is succeeding. Flat-at-100 trend = either real progress or the
loop is being gamed (Tier B agents not adversarial enough). Spot-check the
Tier B reports if the trend looks suspicious.
| Cycle | PRs merged | Avg BHS_OFFICIAL | Avg LOOP_ITERATIONS | OPERATOR_OVERRIDE count |
|---|---|---|---|---|
| current | — | — | — | — |
Operator overrides log
Every PR merged at BHS_OFFICIAL < 100 (i.e. with OPERATOR_OVERRIDE:
populated) gets a permanent row here. The override creates an automatic top-
priority Carried Debt entry; this log is the audit trail.
| PR | BHS_OFFICIAL at merge | Override reason | Override author | Out-of-band ref |
|---|---|---|---|---|
| none yet | — | — | — | — |
Last session: none yet — fill in at first session-wrap
Last validated by check_block_flag.py: never — run it after first edit