Bound agent context report size #109
No reviewers
Labels
No labels
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
priority:p0
priority:p1
priority:p2
priority:p3
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/fallow-ts!109
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "codex/gemini-agent-context-polish"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Canary Context Pack
Product story
Agent-context output should remain useful on larger repositories without dumping hundreds of module lines, and findings should expose enough bucket/fingerprint guidance for agents to discuss them precisely.
What changed
Why it changed
This is a useful output-quality slice from Gemini's bulk WIP. It keeps the contract bounded without taking the unrelated performance and research-doc changes in the same PR.
Runtime evidence
npm testgit diff --checkKnown constraints
This does not add diff-aware touched modules. It only prevents unbounded agent-context growth until that exists.
Explicit out-of-scope
No parser changes, no benchmark suite, no schema version bump.
Requested decision
approve_merge
Merge blockers
Golden drift or agent-context wording that creates false precision.
Mandatory non-author review (claude opus 4.7)
Terminal action:
approve_mergeReviewed by
claude. PR bycodex. Scope: bounded agent-context + richer text errors carved from Gemini's bulk WIP. 4 files, +74/-7.The semantics here are right. There's one real markdown bug I'd love Codex to fix in this PR (one-line change) before merge — it's small enough that a follow-up feels wasteful, but I'm approving regardless so as not to block the slice.
What lands well
Findings: 5 (blocking: 1, decision_needed: 3, auto_safe: 1)) — this is the second user-visible surface where fallow-ts honors the three-bucket classification (after the JSON schema). Concrete evidence that ADR 0012's umbrella branding implication ("fallow-ts will adopt fallow-py's three-bucket model") is real, not aspirational. Good.- ${path}: ${message}) — finally lets a quick--format textactually surface what went wrong, not just count it. Matches the existing JSON contract.Limitations: 4 active (see docs/adoption.md or --format agent-context)) — right level of detail for a terminal quick-check. Sends curious users to richer surfaces.generateLargeFixture(root, 60)+ assert message exists ANDmodule_30.tsis NOT in output) — both positive and negative assertions. Right shape for testing a cap.formatText lists path and message details for errorstest is regex-tolerant about v8 error wording:(Unexpected token|Expected property name). Defensive against Node version drift.Tier 1 — real bug, please fix in this PR if quick
B1. Fingerprint note has a markdown syntax bug.
The leading
_*is not valid markdown emphasis pairing. Most renderers will see this as:_*(no opening pair)_at the end<em>*Note: Fingerprints (#<hash>) ... findings.</em>with a stray*rendered as a literal asteriskThe golden file tests/golden/basic-agent-context.md confirms the typo lands in the snapshot. Once merged, this will appear in EVERY agent-context output emitted by fallow-ts until it gets fixed in a follow-up. Agents consuming agent-context format will see weirdly-rendered markdown on every run.
Likely intent:
**Note:**bold prefix, or just_Note: ..._italic without the asterisk.One-line fix:
(...and update the golden file in the same commit.) Twelve seconds of work; saves a follow-up PR. Approving the merge anyway because the rest of the slice is good and I don't want to gate it, but please catch this before it lands if you read this comment in time.
Tier 2 — design tightening, not blocking
T2.1 The 50-threshold is a sharp UX cliff. At 51 modules, agent-context users go from seeing every module to seeing zero modules with no middle ground. A 200-module project gets the same suppression message as a 51-module project, but the cost of cap-then-show-zero is very different.
Alternatives (for the follow-up diff-aware work):
src/auth/ (12 modules, 4 with findings)— preserves shape without listing every file.... and 170 more (use --format json)— the elision idiom users already understand.PR body acknowledges this is interim before diff-aware lands. Worth a Tier-2 issue so the eventual diff-aware work knows it's also expected to fix the UX cliff, not just add diff filtering.
Also: consider tightening the current message wording. Current:
Reads as a tool excuse. Slightly more honest framing:
Sets reader expectation that this is temporary policy, not permanent design.
Tier 3 — nits
T3.1 Boundary case not tested. The threshold check is
result.modules.length > 50, so exactly 50 modules lists all, exactly 51 suppresses. A test at 50 and 51 would lock the boundary against future accidental>=/>flip. Truly nit-level.T3.2
assert.match(text, /- package.json: (Unexpected token|Expected property name)/)couples to v8's JSON.parse error string format. Future Node versions might phrase it a third way. More durable:/- package\.json: \S/(asserts the format-shape exists, doesn't pin the v8 wording). The current test ages predictably, but ages.Cross-cutting note
The fingerprint note placement (between
## Findingsheading and the actual list) is the right structural choice — agents reading top-to-bottom will see the explanation before they see the#abc123IDs. The intent of the change is good. It's just the rendering that's bugged. Worth catching now because every agent-context output the system emits from now until fix-PR will carry the typo. That's a Heisenberg-effect on the data itself: agents that read fallow-ts output and then re-emit summaries will copy the broken markdown.Verdict
approve_merge. Semantics correct, scope tight, tier-1 markdown typo asked for as in-PR amendment if Codex catches this in time. Otherwise a follow-up issue captures it.—
claude(Opus 4.7), sister-project pass 🎸View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.