Skip to content

MultiEdit sweep: repo-wide leftovers outside guardrails and context-budget #5810

Description

@kyle-sexton

Problem

MultiEdit appears in 25 files at 681ca49e6. #5806 (D7, narrowed by decision Q36) removes
only the live hook matchers in guardrails and context-budget and the prose that describes them. It
deliberately keeps the legacy permission rule and the transcript parsers, because the permissions
docs still document legacy MultiEdit and old transcripts still contain it. This issue covers
what that PR leaves.

Evidence (at 681ca49e6)

Files that Phase 7 leaves untouched:

Kept by Phase 7, each with a pointer to the permissions docs:

  • plugins/harness-config/skills/audit-permission-state/scripts/permission-plane-lint.sh:259 and
    plugins/harness-config/skills/audit-permission-state/reference/criteria.md:326;
  • parse_transcript.py:96 and plugins/discovery/tests/count-rereads.py:30;
  • docs/conventions/hook-telemetry/data/block-windows-drive-tmp.schema.json.

The CHANGELOG mentions in guardrails, context-budget, markdown-format and typos-format are release
history and stay (Q42).

Proposed fix / scope

  1. On current main, re-run git grep -n MultiEdit -- . ':!**/CHANGELOG.md' and list any new hits.
  2. For each non-CHANGELOG hit, keep it as a dated record with a recheck trigger, point it to the
    upstream docs, or remove it. In any file touched, remove dated or obsolete material (Q36).
  3. When the permissions page no longer documents
    legacy MultiEdit, retire the kept lint rule, its criteria.md row and its test. Keep the
    transcript parsers while old transcripts may still carry the tool.
  4. Bump each touched plugin and add a CHANGELOG entry.

Acceptance

  • Every non-CHANGELOG MultiEdit hit on main is classified (dated record, upstream pointer,
    kept for legacy input, or removed), and the classification is listed in the closing PR.
  • No live hook matcher anywhere names MultiEdit.
  • Every kept mention carries a permissions-docs or tools-reference pointer with a check date.
  • scripts/affected-tests.sh --run and check-changelog-parity.sh --check-bump pass.

Activity

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

    @kyle-sexton
    ContributorAuthor

    This was generated by AI during triage.

    Triage

    Routing: delegable, priority low (documentation and comment hygiene, no behavior change), work class scoped (each hit needs a classify-and-act judgment). The precondition has landed: #5806 closed via #5822 (merged 2026-10-02).

    Current hits on main (git grep -n MultiEdit excluding CHANGELOGs, at e3bef1210), beyond what the issue lists:

    • plugins/session-flow/skills/audit-sessions/scripts/collect.py:64, an edit-tool set naming MultiEdit with no pointer or check date.
    • plugins/guardrails/README.md:1050 and :1174, release-narrative mentions of the old Write|Edit|MultiEdit|NotebookEdit matcher.
    • Line numbers have shifted for the listed ones (for example the parser comment is now at parse_transcript.py:102-108, the criteria row at criteria.md:334).
    • No live hook matcher names MultiEdit (that acceptance item is already met; keep it as a regression check).
      Basis: verified, git grep -n MultiEdit origin/main -- . ':!**/CHANGELOG.md'.

    Agent Brief

    Type: Task
    Summary: Classify and tidy every remaining non-CHANGELOG mention of the legacy MultiEdit tool.

    Current behavior:
    After #5822 removed the live hook matchers, MultiEdit is still named in plugin READMEs, a performance reference, a permission-lint rule with its criteria row and test, transcript parsers and collectors with their tests, and a telemetry schema. Some carry an upstream pointer, check date and recheck trigger; some do not.

    Desired behavior:
    Every mention falls in exactly one class: dated record with a recheck trigger, upstream pointer, kept for legacy input (old transcripts, old telemetry rows), or removed. Every kept mention carries a permissions-docs or tools-reference pointer and a check date. Transcript parsers and collectors keep accepting MultiEdit because older transcripts contain it. CHANGELOG entries are release history and stay.

    Key interfaces:

    • The permission-plane lint's uncovered-path rule, its criteria row and its test: fetch the current permissions page first; retire all three only if that page no longer names legacy MultiEdit, otherwise keep them with a refreshed check date.
    • The edit-tool sets in the retro transcript parser, the audit-sessions collector and the discovery re-read counter.
    • The hook-telemetry schema for the drive-root temp guard (historical rows still carry the value).

    Acceptance criteria:

    • Re-run the grep on current main; the closing PR lists every non-CHANGELOG hit with its class.
    • No hook matcher anywhere names MultiEdit.
    • Every kept mention has a pointer and a check date; the audit-sessions collector's set gains one.
    • The repository's affected-tests run and the changelog parity bump check pass; each touched plugin is bumped with a CHANGELOG entry.

    Out of scope:

    • CHANGELOG entries.
    • Removing MultiEdit support from any transcript parser or collector.
    • Hook matcher changes beyond confirming none names MultiEdit.
  3. added
    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.
    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.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 4, 2026
  4. kyle-sexton commented on Oct 4, 2026

    @kyle-sexton
    ContributorAuthor

    This was generated by AI during work-loop.

    Approve this for autonomous dispatch, or keep it for a human?

    Triage marked this delegable as a feature-shaped C3 (work-class: scoped). The work-loop admission gate human-gates feature-shaped C3 work, so the lane removed agent-ready and applied needs-human. To dispatch it, flip it back through /work-items:attend-queue.

    Lane: work-loop, instance melo-worker-1, cycle 1.

  5. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 4, 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

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: lowNice-to-have, cosmetic, or speculative; opportunistic.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.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions