The full poll digest prints all 188 open issues in full — 240 KB of a 256 KB run, for 6 that are the session's nf-k8j ← Beads

open priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/726 by tools/beads/import_github.py's reconcile pass.

Filed unclaimed and unlabelled from a strategic-uplift window, working #702. Backlog.

⚠️ Re-measured on a second live run — the original filing blamed the wrong 7%. Both numbers below are from real ticks of this session; the correction is kept visible because it changes which code the fix should touch.

Measured, 2026-08-07, one tracked PR

| section | bytes | share | |---|---|---| | tracked PRs (1 PR, 5 comments) | 17,729 | 7% | | open issues | 238,696 | 93% | | total | 256,425 | |

188 open issues printed. Six were this session's. emit_issues() (poll.py:815) walks gh.issue_list(limit=200) and prints every one — number, labels, ownership, newest comment, and a ⚠ NEEDS ATTENTION block with full comment bodies where a reply is owed — then annotates ownership *after* printing. There is no scoping filter on what it emits; 22 NEEDS ATTENTION blocks were rendered, none of them in this session's chunk.

So a session pays ~240 KB per full tick to be told, at length, about 182 issues that CLAUDE.md explicitly defines as not its work: *"No label → inert backlog. Explicitly nobody's job, however obvious it looks."*

Why this is worth more than a tidy

@aedanpope, on #718, 2026-08-07:

> *"If we can minimize polling we save tokens"*

He said it about frequency, and #713 addresses that. Per-run size is the other multiplier and nothing has looked at it — and it is the larger one: cutting the issues section to the session's own chunk plus genuinely-new arrivals is roughly a 10× reduction in digest bytes, at no cost to responsiveness, because the removed text is about work the session is forbidden to pick up.

The tension, which is why this is not just "print less"

⚠️ The digest is deliberately verbatim, and that is load-bearing. CLAUDE.md's feedback doctrine is that a session must read what @aedanpope actually wrote — *"Itemizing a bundled multi-ask comment is still on you"* — and notes/reviewer.md calls the reviewer's ledger *"the canonical itemization"*. A blunt truncation would silently cut exactly the multi-ask prose that matters.

⚠️ And the UNCOVERED read is deliberate too. emit_issues's own comment (:824) says the meta suppression justifies *"suppressing the UNCOVERED read, NOT the item"* — so the wide sweep was a decision, presumably so a session can notice work nobody has picked up. That intent has to be preserved, not deleted.

So the shape is summarise the wide sweep, keep the narrow one verbatim:

⚠️ Do not change the --check path. It is ~5s against ~2min precisely because it skips all of this, and that cheapness is what makes the documented "run --check first, every tick" rule affordable. This is about the full digest only.

Not the same as the known scoping issues

#587 (an unlabelled session gets 130 issues in the fingerprint) and #623 (the board and closing_refs escape the per-session fingerprint scoping) are both about *when the digest runs*. This is about *how much it prints when it does*. A session that is correctly scoped and correctly woken still pays the 240 KB.

Related: #718 (the token ask), #713 (frequency — the other multiplier), #587/#623/#451 (fingerprint scoping, distinct).

Dependencies

None.

Comments

No comments.

Add a comment