Skip to content

Proposal: ongoing Copilot CLI compatibility framework — tests → report → auto-updated wiki matrix (maister × Copilot × OS) #9

Description

@robmar-net

This can be removed, apologies for the clutter.

Goal

A self-serve framework so that every time maister-copilot is (re)generated, anyone can verify how it behaves on a specific Copilot CLI version/OS — and a compatibility matrix on the wiki stays current, keyed by maister version × Copilot CLI version × OS.

Context: maister-copilot is auto-generated by platforms/copilot-cli/build.sh; live testing on Copilot CLI 1.0.73 (2026-07-22) confirmed it is runnable (see #8). The generator-remediation work adds a committed test harness (WS7) — this ticket proposes turning it into an ongoing, self-updating compatibility framework.

Proposed shape — script-first

Recommendation: a committed script is the core, not a skill/prompt. Rationale: the harness must be deterministic, CI-runnable, and free of model-credit cost for orchestration. The few checks that genuinely need a live agent run (the task/skill delegation and hook-firing) are exercised by tiny fixed prompts the script drives via copilot -p … --log-level debug and parses from the logs. A skill/agent layer for the harness itself would add nondeterminism + credit cost for no benefit.

Components

  1. Test runnerplatforms/copilot-cli/compat-tests/run-compat-tests.sh (the WS7 harness): loads the freshly-generated plugin via copilot --experimental --plugin-dir and asserts the runtime contracts:
    • install/load · skills register with 0 load failures · agents resolve as maister-copilot:* · a live task(agent_type:"maister-copilot:<agent>") and skill("<name>") delegation execute · SessionStart + PreToolUse hooks fire (incl. ${CLAUDE_PLUGIN_ROOT}) · plugin .mcp.json loads.
  2. Reportreport-<maister>-<copilot>-<os>-<date>.md (+ machine-readable .json), header capturing maister version (plugin.json/git), Copilot CLI version (copilot --version), OS (uname -sm), date, per-contract PASS/FAIL + evidence. Raw reports optionally committed under compat-tests/reports/.
  3. Wiki updaterupdate-wiki.sh: clones SkillPanel/maister.wiki.git, upserts a row keyed by (Copilot version × OS × maister version) into a Copilot-CLI-Compatibility page, commits + pushes. Token-gated in CI; runnable manually.
  4. Wiki page — the matrix: rows = (maister × Copilot × OS), columns = the contracts, cells = ✅/❌ with a link to the raw report.

Flow

build maister-copilotrun-compat-tests.sh (drives Copilot, asserts, writes report) → update-wiki.sh (upserts the matrix row) → wiki page current.

Triggers / cadence

On each maister-copilot rebuild (CI), on new Copilot CLI releases, and/or scheduled (e.g. weekly). Always runnable manually.

Open decisions (let's refine together to maximize sense)

  • Wiki auth/automation: token in CI to push to *.wiki.git, vs GitHub API, vs manual-for-now.
  • Cadence & triggers: per-rebuild / per-Copilot-release / scheduled.
  • Matrix scope: how many historical (maister × Copilot) combos to retain; single page vs per-major-version pages.
  • CI policy: should a contract regression fail the build, or only report to the matrix?
  • Report retention: commit raw reports in-repo vs wiki-only vs artifacts.

Depends on / relates to

Why separate from the remediation

The harness ships with the fix (build/verify asset). This — the version-matrix + wiki publishing + cadence — is an ongoing maintenance/reporting process with its own lifecycle and infra decisions. Keeping it separate keeps the remediation focused.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions