Skip to content

app-control: new plugin plus testing and debugging changes #7581

Open
1 of 6 issues completed
Open

Description

@kyle-sexton

Parent

Refs #7555. Source: PLAN Phase 13, topic poteto-review. Thread: app-control, testing and
debugging.

Depends on

Outcome

A new app-control plugin owns the feature map, the driver and the evidence layout: consumers call
only /app-control:drive, which operates and observes but never judges; testing and debugging
shrink to choosing, reporting and analysis.

Decisions

  • New plugin app-control, created in the same migration as the capture move, owning the feature
    map, driver CLI, readiness step and evidence (D25, D52). Origin: Lauren's
    (create-verification-skill, Control Glass) with ours.
  • /app-control:map create, refresh, check; bare proposes; create only on the explicit word;
    --unattended; replaces map-features and refresh-feature-map (D26, D52).
  • One generated project skill per app, control-<app>: hub, features/ (Reset and States lines),
    optional cli/; shape derived from the repo (D27, D52, D53).
  • Drive records a fingerprint of each ad-hoc script; refresh counts repeats and proposes a CLI verb
    via /developer-experience:build-cli for a human yes (D52, D53).
  • /app-control:drive: operates and observes, never judges; bare drive plus ready, capture,
    cleanup; consumers call only drive; degrades to a stack recipe with a "run map create" note
    (D54). Capture --kind trace|cpu|heap|screenshot|aria|video|logs; --attach always attended
    behind a script; owns only the evidence layout (D55).
  • Capability requests: readiness lists what is reachable, each feature records what it needs, the
    report asks for the narrowest grant; read-only by default (D13, D54). A missing signal is a
    capability gap (D54). Benny control-adapter contract is drive's acceptance list (Q528).
  • Dogfood: a feature map of this repo's skills and a per-PR live smoke of changed skills (D16).
  • run-e2e shrinks to choosing affected entry points and reporting; /testing:check-visual-parity
    uses drive when installed (D26, Q204).
  • /debugging:analyze-profile only analyzes; gains compare <before> <after> and shortest GC-root
    path in its SQLite converter (D55, Q561; Lauren's "dump into sqlite ... diff"). /debugging:debug
    keeps live mechanism proof and the two-failed-fixes stop; adds a minimise step, a pristine-copy diff
    for forced red, a HITL template note (D55, Q16, Q524).
  • /testing:write: settings TDD refactor step on, first test user-flow; bug-fix red fails on
    behavior; one line on what the assumed seam catches and misses (Q524, Q538, Q539).
  • Tests that can't fail: fix the 2 findings on main (child testing: fix the two tests the can't-fail scan flags #7597), scoped scan in the required
    check, test guards on; absence-only and never-called checks into /testing:test-value now (D8,
    Q18). Mutation testing runs post-merge, diff-scoped, never a PR blocker (D71, Q79).
  • Research tags: control-skill size budget measured on the dogfood map first (D52); converter on a
    large heap (Q561); precision run before /testing:audit absence and never-called rules (D8, Q18);
    "did the Refactor step run" inside the K36 eval (Q538).
  • Sub-topic promotion: this thread gets its own plan at phase start (B7).

Key interfaces

From the design's module layout: "app-control: created in the same migration as the capture move.
Owns the feature map, driver CLI, readiness step and evidence layout. /app-control:map (create,
refresh, check) replaces map-features and refresh-feature-map. /app-control:drive (bare,
ready, capture, cleanup) is the only entry consumers call. One generated project skill per app,
control-<app>." "testing: run-e2e shrinks to choosing entry points and reporting;
check-visual-parity uses drive when installed; /testing:write settings; /testing:test-value
gains absence-only and never-called checks; map-features and refresh-feature-map leave for
app-control." "debugging: /debugging:analyze-profile only analyzes (no capture), gains
compare <before> <after> and shortest GC-root path; /debugging:debug gains minimise,
pristine-copy diff, HITL template note."

Contracts: "Capture: --kind trace|cpu|heap|screenshot|aria|video|logs; --attach always attended."
Variation verdicts: "App driver (control-<app>): abstract now; /app-control:drive only, finds the
skill via app-control.yaml or discovery, degrades to a stack recipe (D54)." "Stack-specific tools
(linters, architecture tests, profilers): contain now; research live, write setup into the project
(D65, D66, Q46)."

Done when

  • The app-control map and drive skills exist and testing's map-features and
    refresh-feature-map do not (none of this on main).
  • python3 -m pytest plugins/debugging/skills/analyze-profile/scripts exits 0 with a compare
    case, and bash plugins/testing/skills/audit/scripts/cant-fail-scan.sh --check exits 0.
  • Every slice sub-issue is closed by a merged PR, each skill-body cut with before/after evals.

Out of scope

  • Electron and mobile capture (parked item).
  • The tool-per-job setting itself (Tool per job thread).

Related

Activity

  1. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 16, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Thanks for the report. Automated triage handed this issue to a maintainer.

    Proposed work class: work-class: structural
    Basis: automated intake triage; a maintainer confirms or changes it.

    Automated triage. A maintainer reviews it.

  3. changed the issue type fromtoon Oct 16, 2026
  4. changed the issue type fromtoon Oct 16, 2026
  5. kyle-sexton commented on Oct 21, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. The owner answered in the poteto-review session (2026-10-21, interview round 66, "Yes, go with recommendations."):

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.needs-specNeeds a Brief or plan before anyone can build it.

    Fields

    Work status

    needs-spec

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions