docs/tests: update adapter count 15→17 (copilot-cli + antigravity-cli)

This commit is contained in:
Mert Koseoglu
2026-06-21 17:48:58 +03:00
parent b9bc682de3
commit 73cf07e015
7 changed files with 22 additions and 18 deletions
+8 -7
View File
@@ -25,7 +25,7 @@ directive.
---
> Run /diagnose for everything in parallel with an agent army. All 15
> Run /diagnose for everything in parallel with an agent army. All 17
> adapters and all 3 operating systems matter equally. We do not get
> to pick favorites. I want you to coordinate this team as an
> Engineering Manager. Each agent must run in parallel and delegate
@@ -61,7 +61,7 @@ directive.
> a clear, readable table. Wear your PO hat. Wear your OSS hat. Wear
> your Distribution hat. Wear your open-source hat. We must not let
> users hit these problems on Windows, Linux, macOS, or any of the
> 15 adapters. Instead of fixing these issues directly, first
> 17 adapters. Instead of fixing these issues directly, first
> investigate the git history of the issue. Why did we cause this?
> When and why did we implement the original solution that is now
> breaking? You must understand all of that. The Architects are our
@@ -101,7 +101,7 @@ They MUST be honored on every ops cycle, without exception:
config") is CATEGORICALLY UNACCEPTABLE.
- **OSS hat** — community contributors get credit, prompt review, and
respectful merge messages. Their PRs are reviewed line-by-line.
- **Distribution hat** — Linux + macOS + Windows × 15 adapters, all
- **Distribution hat** — Linux + macOS + Windows × 17 adapters, all
weighted equally. There are no second-class platforms and no
second-class adapters. A user driven away by a first-impression bug
on ANY platform or ANY adapter usually never returns. Any
@@ -173,9 +173,10 @@ Skeptics for adversarial probes, Domain Specialists per adapter / per
OS. Lead-level coordination is your job; staff-level execution is
their job.
**MUST-3 — Respect all 15 adapters equally.** claude-code, codex,
**MUST-3 — Respect all 17 adapters equally.** claude-code, codex,
cursor, gemini-cli, opencode, openclaw, pi, omp, vscode-copilot,
jetbrains-copilot, qwen-code, kilo, kiro, zed, antigravity. No
jetbrains-copilot, qwen-code, kilo, kiro, zed, antigravity,
copilot-cli, antigravity-cli. No
favourites. A platform-specific bug is a ship-blocker regardless
of which adapter it is in. We rewrote a contributor's Windows
config once — that is the worst kind of failure and must not recur
@@ -217,7 +218,7 @@ git history, and platform claims without `refs/` citation.
**MUST-8 — TDD is the law for implementation.** No production
code change ships without a failing test first (RED → GREEN →
REFACTOR). Vertical slices only. Architects REJECT untested PRs,
no exceptions. The codebase has 15 adapters × 3 OS × hooks ×
no exceptions. The codebase has 17 adapters × 3 OS × hooks ×
FTS5 × sessions — it is fragile. One untested change breaks
everything.
@@ -343,7 +344,7 @@ If you cannot verify the claim, ask the reporter for evidence BEFORE writing a s
<tdd_enforcement>
STOP. Before writing ANY implementation code, you MUST have a failing test.
No exceptions. No "I'll add tests later." No "this change is too small for tests."
This codebase has 15 adapters, 3 OS, hooks, FTS5, sessions — it is FRAGILE.
This codebase has 17 adapters, 3 OS, hooks, FTS5, sessions — it is FRAGILE.
One untested change breaks everything. TDD is not optional, it is the gate.
</tdd_enforcement>
+1 -1
View File
@@ -92,7 +92,7 @@ export function __seedClaudeCodePluginCacheMissForTests(): void {
*
* Issue #545 — algorithmic env-leak fix. The split allows resolveProjectDir
* to derive ALLOW (own workspace vars) and BAN (other platforms' workspace
* vars) sets from a single registry, satisfying MUST-3 (15 adapters equal).
* vars) sets from a single registry, satisfying MUST-3 (17 adapters equal).
*
* Issue #561 — FOREIGN identification vars MUST be scrubbed when spawning a
* child under a different host (e.g. Pi spawning context-mode child must
+1 -1
View File
@@ -1118,7 +1118,7 @@ describe("ClaudeCodeAdapter", () => {
//
// The HookAdapter contract grew an OPTIONAL `getHealthChecks(pluginRoot)`
// (src/adapters/types.ts) returning HealthCheck[] — a uniform doctor
// surface across 15 adapters. Default behaviour: adapters that don't
// surface across 17 adapters. Default behaviour: adapters that don't
// override return nothing. claude-code overrides with hook-script
// existence checks that use DIRECT `existsSync(join(pluginRoot,
// "hooks", scriptName))` — NO regex round-trip through extractHookScriptPath.
+1 -1
View File
@@ -4,7 +4,7 @@
* Both issues request that ctx_execute / ctx_execute_file / ctx_batch_execute
* surface WHAT the agent ran so users can audit, debug, and block command
* patterns. The server is the right layer — adapters render whatever the
* response carries, so one fix covers all 15 adapters.
* response carries, so one fix covers all 17 adapters.
*
* Coverage by behaviour (vertical slices):
* 1. runBatchCommands per-command section echoes `$ <command>` after `# <label>`
@@ -267,7 +267,7 @@ describe("Issue #531 — asymmetric-drift invariant", () => {
// workspace-committed `.github/hooks/context-mode.json` etc.). The fix was
// surgical at the adapter layer; nothing structural prevents a future
// contributor from accidentally re-introducing the same bug class in any
// of the 15 adapters under configs/.
// of the 17 adapters under configs/.
//
// This invariant scans every committed config template under configs/**
// and asserts that no string value contains an absolute path, an fnm
+1 -1
View File
@@ -13,7 +13,7 @@
* Cited code:
* src/session/analytics.ts:592-731 — current getLifetimeStats (single-dir)
* src/session/analytics.ts:887-989 — current getRealBytesStats (single-dir)
* src/adapters/detect.ts:92-111 — getSessionDirSegments map (15 platforms)
* src/adapters/detect.ts:92-111 — getSessionDirSegments map (17 platforms)
*
* Filter (decided in /diagnose conversation, B3a PRD):
* real = eventCount >= 100
+9 -6
View File
@@ -10,9 +10,9 @@
* 3. With ONLY CONTEXT_MODE_PROJECT_DIR="/escape" set, result is "/escape"
* for every host (universal escape hatch invariant).
*
* Generates 15 × 14 × 3 = 630 assertions from one parameterized test. Adding
* adapter #16 to PLATFORM_ENV_VARS grows the matrix automatically — no edit
* to this file. This is the structural test for MUST-3 (15 adapters equal).
* Generates 17 × 16 × 3 = 816 assertions from one parameterized test. Adding
* adapter #18 to PLATFORM_ENV_VARS grows the matrix automatically — no edit
* to this file. This is the structural test for MUST-3 (17 adapters equal).
*/
import { describe, it, expect } from "vitest";
@@ -26,9 +26,10 @@ import {
import type { PlatformId } from "../../src/adapters/types.js";
// Hard-coded list of all registered platforms — kept in sync with detect.ts
// CLIENT_NAME_TO_PLATFORM. If a 16th adapter is added, append it here.
// CLIENT_NAME_TO_PLATFORM. If an 18th adapter is added, append it here.
// (We can't reflect it from PLATFORM_ENV_VARS alone because some adapters
// have no env vars — kiro, openclaw, antigravity-via-mcp-only, zed.)
// have no env vars — kiro, openclaw, antigravity-via-mcp-only, zed,
// copilot-cli, antigravity-cli.)
const ALL_PLATFORMS: ReadonlyArray<PlatformId> = [
"claude-code",
"gemini-cli",
@@ -45,6 +46,8 @@ const ALL_PLATFORMS: ReadonlyArray<PlatformId> = [
"zed",
"pi",
"omp",
"copilot-cli",
"antigravity-cli",
];
describe("resolveProjectDir matrix — MUST-3 invariant (issue #545)", () => {
@@ -124,7 +127,7 @@ describe("resolveProjectDir matrix — MUST-3 invariant (issue #545)", () => {
assertions++;
}
}
// Sanity: with N=15 platforms, we expect 15 * 14 * 3 = 630 assertions.
// Sanity: with N=17 platforms, we expect 17 * 16 * 3 = 816 assertions.
// Looser bound here to avoid the test itself becoming brittle if a
// future adapter is added — just assert "many" and the per-iteration
// expects above carry the real signal.