Skip to content

feat(app-control): add /app-control:map check #9582

Description

@kyle-sexton

Slice A3 of #9507, from poteto's draft (comment), as the script-plus-model hybrid.

Problem

When an agent updates a control skill, nothing checks it is still correct.

Fix

  • plugins/app-control/skills/map/scripts/check-map.sh (0755): index matches folders, section set and order, entry-point markers, links resolve, a shared/ item used by fewer than two slices, a shared/ item whose README lacks its why-shared line, an index source glob that matches nothing. Prints <rule> | <path> | <detail>, never edits, exits 0 even with findings.
  • check-map.test.sh: one fixture per rule plus a clean fixture that prints nothing.
  • Map body check action: run the script, judge copied-recipe-versus-pointer, report findings with no verdict word.
  • Evals check-dead-index-line, check-missing-not-driven-reason, check-copied-recipe, each with no file change. Fragment: app-control minor.

Done when

  • bash plugins/app-control/skills/map/scripts/check-map.test.sh exits 0.
  • test -x plugins/app-control/skills/map/scripts/check-map.sh exits 0.
  • The three evals pass; git status --porcelain is empty after each case.

Blocked by: A2.

Activity

  1. github-actions commented on Oct 24, 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: Known
    Flags: none

    Understood: add a check action to /app-control:map. It has a read-only check-map.sh script that prints findings per rule, a fixture-based test script, a model judgment step for copied recipes versus pointers, three evals and a minor fragment for app-control. The done-when items are all checkable in a run. The issue says it is blocked by A2, so the work depends on that slice landing first. No clear duplicate found; related open items are #9582's siblings such as the /app-control:map refresh issue (#20-area titles in the open list).

    Automated triage, applied by the lanes App.

  2. 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.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  3. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: a Feature needs an open parent issue a listed human filed that awaits no decision. A recorded decision does not change these rules (.github/actions/resolve-config/admission-rules.json); a person who wants it worked adds agent-ready.

  4. self-assigned this
    on Oct 24, 2026
  5. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

Fields

No fields configured for Feature.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions