mirror of
https://github.com/mksglu/context-mode.git
synced 2026-10-02 04:14:38 +08:00
docs/tests: update adapter count 15→17 (copilot-cli + antigravity-cli)
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user