Skip to content

perf(discovery): cut the research skill body through progressive disclosure #12659

Description

@kyle-sexton

Refs #12243

Blocked by #12647

Outcome

The /discovery:research body is cut through progressive disclosure: action-specific detail moves to reference files read on demand, and the hub keeps routing and gates. This is one of five slices under #12243; the first cut (/source-control:worktree) landed in #12387, whose recipe this follows.

Size at origin/main 3bd42cabfe: body 44,641 bytes (SKILL.md with frontmatter stripped, the method #12387 used); the skill directory holds 302,817 tracked bytes. The binding limit is the paired eval run each cut needs, so each skill is its own PR.

Sequencing: PR #12647 (for #12631) edits this SKILL.md now, and a contract test pins a sentence inside a 20,000-byte window of it. Start after #12647 merges, and keep or repoint that window test as part of the cut.

Done when

  • The hub's body bytes fall, measured the same way. Moved text sits verbatim in reference/, and every citation of it (tests, contract windows, hooks, scripts, fixtures, README) is repointed.
  • /docs-hygiene:compress compare returns VERDICT PASS with no SEMANTIC LOSS.
  • The skill's cases run on the before and after copies with /evals:plugin-eval --baseline <before.json> --margin <m>, on a round run-validity.py marks VALID on both arms, and the after arm is non-inferior (plugins/playbooks/skills/skill-authoring/reference/skill-criteria.md, "Cutting text"). Only one case in plugins/discovery/evals/ targets this skill (rs-deep-offers-native-workflow-first); add cases that read the moved text before the before-run.

Related

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    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: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Understood: cut the /discovery:research SKILL.md body by moving action-specific detail verbatim into reference/ files. The hub keeps routing and gates. Every citation of the moved text gets repointed, following the #12387 recipe. Done-when is a smaller body, a /docs-hygiene:compress compare PASS, and a non-inferior paired eval. The eval step needs a host run, so it is routed separately.

    Notes: #12647 is named as the sequencing dependency. It isn't in the open-issue list, so I listed no blocker. Please confirm it has merged before work starts. No duplicates found.

    Automated triage, applied by the lanes App.

  3. 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
  4. 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
  5. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: its done-when asks for what an unattended lane run cannot perform: item 3 (a model eval run: "The skill's cases run on the before and after copies with /evals:plugin-eval ..."); recommended split: keep the other items here as the admissible issue and move these to a child issue for the host queue (host-run); it carries host-run. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  6. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: confirmed; its comment says why.

  7. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor

    Claim. Backlog HITL host-run worker is taking this now.

  8. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor

    Negative control, preregistered before the first paid run (rewrite-a-plugin.md step 4).

    • Cut: the two practitioner paragraphs in the research hub's "Reconciling sources at the gate" (the proof-of-shipped-work test and the untrusted-profile paragraph) move word for word to skills/research/reference/practitioner-test.md; the hub keeps a pointer.
    • Suite: the 3 rs-* cases: rs-deep-offers-native-workflow-first (existing) and two new ones that read the moved text, rs-practitioner-needs-shipped-work and rs-profile-imperative-is-red-flag. All graders are deterministic (regex, tool_used); no case grants Bash.
    • Degraded copy: the before plugin (this branch's cases, origin/main's skills/research) with the research SKILL.md body deleted and its frontmatter kept; context/ and reference/ kept.
    • Model: claude-opus-5-5, --case 'rs-*' --runs 2 -j 2 --ablation none --keep-temp, launched together with a before run.
    • Detection: the noise report (--baseline before.json) calls a case drop, or the mean case score falls by 0.15 or more. Neither means the body is unmeasurable by this suite, and the before text ships.
    • run-validity.py --own-copy-search-warns on the degraded side only.
    • The cut's comparison: after against a before launched together, same flags, noise-report.py --baseline before.json --margin 0.05, VALID on both arms.
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

    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    Work status

    confirmed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions