Skip to content

fix(knowledge): close docpage-digest figure-row, figure-text, verifier-effort and grep-replay gaps #7640

Closed

Description

@kyle-sexton

Refs: #7284

Summary

Four defects, plus evidence for #7284, found by two /knowledge:docpage-digest runs (knowledge 0.23.0) on 2026-10-16: this run, on https://claude.dev/blog/solving-code-review-at-anthropic (12 digest units, 45 figure rows; evidence in its checklist and round-1 corrections record, "New findings" 1-3), and a parallel run on another claude.dev blog article (10 digest units; evidence files named below). This issue covers the pipeline defects this run's handoff recorded together with the parallel run's, filed once by agreement between the two runs. Run records are local to the two digest runs, not in this repository.

(a) More evidence for #7284. In the parallel run nine truncated quotes failed the gate for this reason; describing each cut on a plain line above the fence, #7284's decided fix, passed. Tracked in #7284, not here.

(b) Figure rows have no section, and the fence gate fails them under Key claims. The digest structure (SKILL.md:167-169) has no place for **FN.** rows, and the gate reads only **CN.** fences under Key claims (SKILL.md:274), failing any other fence there as unlabeled. In this run three units were corrected mid-run. In the parallel run 19 **FN.** rows failed as unlabeled fences (reconciliation-r0-2026-10-16.md), fixed by a ## Figure claims heading after Key claims (reconciliation-r0b-2026-10-16.md). Fix: name a separate figure-rows H2 in the structure and the brief.

(c) Figure-text extraction missed figure titles, subtitles, FIG X ids and button text. Rows for them were added from source.html by hand in this run (for example digest 05 F14-F16). The profile covers decoding a script payload (context/anthropic-docs-profile.md:93-99) but lists no figure parts to extract. Fix: list the parts (figcaption title, subtitle and id, alt and aria-label, SVG text, control labels) and check the extracted file against them.

(d) A Codex verifier B cannot report its effective reasoning effort. Both of the parallel run's B verdicts record it as "not exposed" (verdict-B-2026-10-16.md, verdict-B-r2-2026-10-16.md); the forwarder was asked for high, and Codex never confirmed it (corrections-applied-r1-2026-10-16.md). Fix: the skill says where confirmed effort comes from, and the checklist records a requested-but-unconfirmed effort as such.

(e) Plain grep can resolve to ugrep, so recorded counts drift. Where grep is ugrep (an alias or an earlier PATH entry), -rliE and -rlE gave different counts on one broad search in this run. Handoff commands are replayed, so a count recorded with one grep and replayed with another fails. Fix: recorded commands call GNU grep explicitly, or the replay checks grep --version first.

Acceptance criteria

  • The digest structure names the figure-rows H2, and a fixture digest with **FN.** rows there passes check-fences-exact.py and check-html-rows.py.
  • The figure-text guidance lists the parts above, and a fixture page with a titled figure yields rows for its title, subtitle and id.
  • The skill states how a verifier arm's effort is confirmed, and the checklist marks an unconfirmed effort.
  • Recorded and replayed commands use GNU grep explicitly (or check the grep version), and a replay where grep is ugrep reproduces the recorded counts.

Related

#7284 (the truncation rule; (a) adds evidence only), #7285 (no gate checks unit parity).

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 16, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Thanks for the detailed writeup with evidence from the two docpage-digest runs. Understood four distinct pipeline gaps: (b) figure rows (**FN.**) have no home in the digest structure and fail the fence gate as unlabeled, (c) figure-text extraction misses titles, subtitles, FIG ids, and control/button text, (d) a Codex verifier's effective reasoning effort can't be confirmed when requested-but-unconfirmed, and (e) plain grep resolving to ugrep can change recorded counts on replay. Each has a proposed fix and acceptance criteria, and (a) is explicitly tracked in #7284 rather than here. No missing information found — this reads as actionable as filed. No duplicates found; it correctly cross-references #7284 and #7285 as related sibling issues rather than overlapping them.

    Automated triage. A maintainer reviews it.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 16, 2026
  4. kyle-sexton commented on Oct 18, 2026

    @kyle-sexton
    MemberAuthor

    Agent Brief

    Type: Bug
    Summary: Give docpage-digest figure rows their own section, list the figure parts to extract, record verifier effort honestly, and pin replayed grep commands to GNU grep.

    Current behavior:
    The digest structure has no place for **FN.** figure rows, and the fence gate fails any fence under Key claims that is not a **CN.** claim, so figure rows placed there fail as unlabeled. Figure-text guidance lists no figure parts, so titles, subtitles, FIG X ids and control labels are missed. A verifier arm whose effective reasoning effort is never confirmed is recorded as if it ran at the requested effort. Recorded commands call plain grep, which can resolve to ugrep and change counts on replay.

    Desired behavior:

    • The digest structure names a separate figure-claims H2 after Key claims, and the subagent brief writes **FN.** rows there; the fence and HTML-row gates accept that layout.
    • The figure-text guidance lists the parts to extract (figcaption title, subtitle and id, alt and aria-label, SVG text, control labels) and says to check the extracted file against the list.
    • The skill states where a verifier arm's confirmed effort comes from, and the checklist marks a requested but unconfirmed effort as unconfirmed.
    • Recorded and replayed commands call GNU grep explicitly, or the replay checks grep --version first.

    Key interfaces:

    • Digest structure and subagent brief: a figure-claims H2.
    • check-fences-exact.py and check-html-rows.py: accept **FN.** rows under that H2.
    • Docs profile: the figure-parts list.
    • Run checklist: an effort field that can read unconfirmed.

    Acceptance criteria:

    • The digest structure names the figure-claims H2, and a fixture digest with **FN.** rows under it passes the fence and HTML-row gates: scripts/run-test-file.sh passes on the docpage-digest check-fences-exact.test.sh and check-html-rows.test.sh with that new fixture case.
    • The figure-text guidance lists every part named above (read from the diff).
    • The skill states how a verifier arm's effort is confirmed and the checklist has an unconfirmed marking (read from the diff).
    • No recorded or replayed command in the skill calls a bare grep without either an explicit GNU grep or a grep --version check (read from the diff).
    • A knowledge changelog fragment is added and scripts/check-changelog-fragments.sh exits 0.

    Out of scope:


    This was generated by AI during backlog shaping. Held, not admitted: this brief is drafted and checked, but the issue lane would stop on it today. It is admitted, by adding agent-ready, once the lane can run the skill-quality check scripts (Automation Lanes' PR #7912). Held under the owner's 2026-10-18 lane-narrowing course correction.

  5. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions