Skip to content

discovery research SKILL.md: a contract-tested sentence sits 1 byte inside its 20000-byte window #12631

Closed

Description

@kyle-sexton

Problem

plugins/discovery/scripts/contract.test.sh requires the sentence "The Effort row is the ceiling over discipline 8" to appear within the first 20000 bytes of plugins/discovery/skills/research/SKILL.md. Since #12603, that sentence starts at about byte 19952, so it ends about one byte inside the window. The next edit that adds text above it fails the contract test, even when the edit is correct.

Found while building #12603: one edit there pushed the sentence past the window, and the worker had to trim text to get back under it.

Fix

Either:

  1. Move the sentence (or the section that holds it) earlier in SKILL.md, so it sits well inside the window.
  2. Make the assertion check the whole file, if the 20000-byte window guards nothing a reader needs. Find out first what the window protects (most likely the part of the skill body the model reads first).

Done when the sentence has at least 2000 bytes of headroom, or the window no longer applies to it, and contract.test.sh passes.

Related

Activity

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

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Small
    Complexity: Low
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Understood: the "Effort row is the ceiling over discipline 8" sentence in the discovery research SKILL.md sits about 1 byte inside the 20000-byte window that contract.test.sh checks. The next edit above it would fail the contract test. The refinement comment keeps the window, because it stands in for the compaction re-attach budget. It asks to move or trim text so the sentence has at least 2000 bytes of headroom, with contract.test.sh passing. Nothing is missing. #12517 and #12240 touch the same file, so whichever lands second should recheck the headroom. No duplicate found.

    Automated triage, applied by the lanes App.

  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 Nov 3, 2026
  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Nov 3, 2026
  5. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: no trusted-human acceptance criteria: a listed human must put the confirmed - [ ] criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  6. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 3, 2026
  7. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Nov 3, 2026
  8. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.

    Intended outcome: Give the effort-ceiling sentence in plugins/discovery/skills/research/SKILL.md at least 2000 bytes of headroom inside the 20000-byte compaction re-attach window, and keep contract.test.sh passing.

    Acceptance criteria

    • The window stays: contract.test.sh:351-357 says it stands in for the first 5,000 tokens re-attached on compaction (#​4255), so option 2 (check the whole file) is rejected and contract.test.sh:387-388 is not loosened.
    • In plugins/discovery/skills/research/SKILL.md, the sentence 'The Effort row is the ceiling over discipline 8' ends at or before byte 18000, checked with head -c 18000 FILE | grep -c on the phrase printing 1.
    • Headroom comes from moving the '### Effort, source breadth' subsection (now line 121) or other text so it sits earlier, or from trimming text above it, with no change to what the gates and disciplines say.
    • The other slice phrases stay inside the first 20000 bytes and absent from the tail: '## Outcome gate (run before presenting)', 'Owner column governs', '## Disciplines', 'Every accepted claim follows from its sources jointly', '### Effort, source breadth', and 'Research the following topic: $ARGUMENTS' (contract.test.sh:377-390).
    • The hub-versus-spoke word check at contract.test.sh:343-349 still passes: research/SKILL.md has fewer words than context/discipline.md.
    • bash plugins/discovery/scripts/contract.test.sh exits 0 with no fail lines.
    • Any text moved out of the SKILL.md slice keeps a pointer in the file, and the discovery CHANGELOG.md gets an entry if the repository's convention requires one for a skill body edit.

    External state: none

    Dependencies

    • #​12603 (merged): it pushed the sentence to about byte 19952, so this work edits the file as it stands after that change.

    Related work

    Sources read

    • plugins/discovery/scripts/contract.test.sh:351-357: the 20000-byte window stands in for the first 5,000 tokens re-attached on compaction (#​4255) and holds every gate the hub must keep.
    • plugins/discovery/scripts/contract.test.sh:358-372: assert_in_slice needs the phrase in the first 20000 bytes and absent from the tail.
    • plugins/discovery/scripts/contract.test.sh:387-390: the effort sentence and the topic slot are both pinned inside the slice.
    • plugins/discovery/skills/research/SKILL.md:121-124: the '### Effort, source breadth' section holds the sentence, after '## Disciplines' at line 101.
    • plugins/discovery/skills/research/SKILL.md:95-97: the Topic slot sits before Disciplines.

    Automated refinement by the lanes App. Intake triages the issue again with it.

  9. 1 remaining item

  10. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 3, 2026
  11. added
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    on Nov 3, 2026
  12. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  13. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  14. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    The lanes App's pull request #12647 for this issue was closed without merging. work-unblock removed status: ready and agent-ready, so the hourly triage sweep sends it back to intake triage, which decides what work is left and admits it again.

  15. removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  16. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor

    The triage sweep dispatched intake triage for this issue (attempt 1 of 2).

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

    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

    Work status

    needs-triage

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions