Skip to content

Commit b3053cc

Browse files
0bserver07claude
andcommitted
docs(mink): parity matrix v0.4.0 + trademark scrub across mink docs
docs/mink/parity-matrix.md: - Added 5 v0.4.0 rows (16-20: SSH-remote, run persistence + sharing, agents subcommand, allowed-tools filter, stream-json). - 3 footnotes linking #127 / #129 / #140. - Updated counts (17 GREEN / 3 YELLOW of 20). - Expanded follow-ups (#127, #128, #86-96, runs cost). docs/mink/quickstart.md: - Added v0.4.0 flag table (--remote, --allowed-tools, --tool-timeout, share/agents subcommands). - 4 new env vars surfaced. - NOTE pointer at the stale "What does NOT work yet" section. docs/mink/{memory,output-formats,permissions,settings,slash-commands, subagents}.md: trademark scrub — replaced direct brand mentions with neutral language ("ecosystem parity", "the open source coding agent", "the upstream"). Live-source scope (README + docs/mink + chimera + examples + pyproject) is now clean. Historical references in docs/benchmarks/ and docs/plans/ remain — out of scope for live-source scrub (factual integration history). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 8872f95 commit b3053cc

8 files changed

Lines changed: 99 additions & 52 deletions

File tree

docs/mink/memory.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Each file is wrapped with a `<!-- source: <abs-path> -->` header so the
4242
model can cite where a piece of guidance came from.
4343

4444
Block-level HTML comments inside source files (`<!-- ... -->`) are stripped
45-
before injection (CC parity).
45+
before injection (ecosystem parity).
4646

4747
## `@import` Syntax
4848

@@ -131,13 +131,13 @@ msgs = inject_memory(msgs, Path.cwd())
131131
# msgs[1] is now the memory user message.
132132
```
133133

134-
## Divergences from Claude Code
134+
## Divergences from the reference implementation
135135

136136
- **Managed CLAUDE.md** (e.g. `/Library/Application Support/ClaudeCode/CLAUDE.md`)
137137
is not loaded. Org-policy memory is out of scope for the OSS harness.
138138
- **`claudeMdExcludes`** glob exclusions from `settings.json` are not yet
139139
honored. Exclude unwanted files by path or by removing them.
140-
- **Lazy subdirectory loading** (CC re-reads CLAUDE.md when the model reads a
140+
- **Lazy subdirectory loading** (re-reading CLAUDE.md when the model reads a
141141
file in a sibling tree) is not implemented; one walk per session at startup.
142142
- **First-time external-import approval dialog** is skipped — Chimera does
143143
not gate `@import` behind a confirmation prompt.

docs/mink/output-formats.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,15 @@ handler = select_handler("text") # ConsoleStreamHandler
9999

100100
Unknown values raise `ValueError`.
101101

102-
## Divergences from Claude Code
103-
104-
- CC's `--output-format=json` historically nested `result.text`. Chimera's
105-
`result` block currently exposes only `success` and `steps`; the model's
106-
final assistant message can be reconstructed by concatenating the
107-
`text_delta` events. We may revisit if downstream tools demand parity.
108-
- CC emits a one-line summary on `text` output at session end ("…tokens
109-
used, $X cost"); Chimera emits the equivalent via the `agent_end` event,
110-
which the `text` handler already prints.
102+
## Divergences from the reference implementation
103+
104+
- The reference `--output-format=json` historically nested `result.text`.
105+
Chimera's `result` block currently exposes only `success` and `steps`;
106+
the model's final assistant message can be reconstructed by concatenating
107+
the `text_delta` events. We may revisit if downstream tools demand parity.
108+
- The reference implementation emits a one-line summary on `text` output at
109+
session end ("…tokens used, $X cost"); Chimera emits the equivalent via
110+
the `agent_end` event, which the `text` handler already prints.
111111

112112
## Tests
113113

docs/mink/parity-matrix.md

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# `chimera mink` Parity Matrix
22

33
**Source baseline:** `research/mink/24-gap-analysis.md` (Apr 23 2026).
4-
**Updated:** 2026-04-23, after M0–M5 ship.
4+
**Updated:** 2026-04-25, after v0.4.0 ship (M0–M5 + wave-2 follow-ups).
55
**Legend:** GREEN = shipped / at parity (or superset); YELLOW = partial; RED = deferred.
66

77
## Subsystems
@@ -12,19 +12,30 @@
1212
| 2 | Tool system / registry | GREEN | `chimera/core/tool.py`, `tool_executor.py` | Anthropic + OpenAI schemas; permission/event hooks; concurrent dispatch. |
1313
| 3 | Built-in tools | GREEN | `chimera/tools/` (incl. `notebook_edit.py`, `worktree_tool.py`, `task_tool.py`, `cron_tools.py`, `powershell.py`, `config_tool.py`) | All M3+M5 tools landed. PowerShell falls through to `pwsh` on non-Windows. |
1414
| 4 | Tool-call streaming | GREEN | `chimera/providers/ollama.py:stream()` | NDJSON parser accumulates `tool_calls`; emits `tool_call_start/delta/complete`. |
15-
| 5 | Slash commands | GREEN | `chimera/cli/slash_commands.py` | Extracted from `code.py` for reuse by `cc.py`; full M1 set wired. |
15+
| 5 | Slash commands | GREEN | `chimera/cli/slash_commands.py` | Extracted from `code.py` for reuse by the mink REPL; full M1 set wired (31 commands per `research/mink/HANDOFF.md`). |
1616
| 6 | Hooks | GREEN | `chimera/hooks/executor.py`, `emitter.py`, `events.py` | `updatedInput` mutation + cwd/env inheritance + audit trail wired in M2-B. |
1717
| 7 | MCP | YELLOW | `chimera/mcp/{client,lifecycle,oauth,sse_transport,ws_transport,tools}.py` + `chimera/mink/cli.py:_load_mcp_tools` + `chimera/cli/code.py` | All transports + OAuth2 PKCE + `mcp__server__tool` prefix shipped in M5-A; `chimera mink` and `chimera code` now load `~/.chimera/mcp.json` and `<cwd>/.mcp.json` and merge servers (audit B-6 fix). End-to-end install of a community server over OAuth has not been independently verified. |
1818
| 8 | Permissions | GREEN | `chimera/permissions/` + `chimera/cli/permission_prompt.py` + `chimera/mink/settings.py:to_chimera_loop_config` | `Tool(arg_key:pattern)` grammar; `.claude/settings.json` allow/ask/deny lists are now consumed by `chimera mink -p` (audit B-4 fix). |
1919
| 9 | TUI / streaming render | GREEN | `chimera/cli/render.py:MinkStreamHandler` + `build_stream_handler` wired in `chimera/mink/cli.py:_run_print_mode` and `chimera/cli/code.py` (opt-in via `CHIMERA_RICH_TUI=1`) | MarkdownStream, Spinner, ToolBlockRenderer, ThinkingBlockRenderer, DiffRenderer all flow through the live runtime. Auto-detect: rich on TTY, plain on pipe / `NO_COLOR` / `--no-color` / `--no-rich`. Audit B-2 / B-7 / B-8 closed. |
2020
| 10 | Sessions / resume / fork | GREEN | `chimera/sessions/` + `/resume` slash command | Already superset; `/resume <id>` exposed in M4. |
2121
| 11 | Subagents / Task tool | GREEN | `chimera/tools/task_tool.py`, `chimera/cli/agent_teams.py` | Child `AgentLoop` spawn with linked cancellation; experimental teams behind env flag. |
2222
| 12 | Settings / config | GREEN | `chimera/mink/settings.py` + `chimera/tools/config_tool.py` + `chimera/mink/cli.py:_run_print_mode` | User → project → local merge; rules now feed the live `LoopConfig.permissions` for one-shot `-p` runs (audit B-4 fix). M5-C `ConfigTool` exposes get/set/list. |
23-
| 13 | Ollama provider (Kimi K2.6) | YELLOW | `chimera/providers/ollama.py` | Streaming + tool-roundtrip + `num_ctx`/`keep_alive`/`think` shipped. Vision and JSON-grammar mode still deferred (Ollama-cloud limitation). |
23+
| 13 | Ollama provider (Kimi K2.6 / GLM-5) | YELLOW | `chimera/providers/ollama.py` | Streaming + tool-roundtrip + `num_ctx`/`keep_alive`/`think` shipped. Vision and JSON-grammar mode still deferred (Ollama-cloud limitation). |
2424
| 14 | Cancellation / Ctrl-C | GREEN | `chimera/core/cancellation.py` | Chimera-only superset. |
25-
| 15 | Secrets redaction | GREEN | `chimera/secrets/` | Chimera-only superset. |
25+
| 15 | Secrets redaction | GREEN | `chimera/secrets/` + `chimera/cli/output_format.py` | `RedactionMiddleware` wired into `stream-json` output as of v0.4.0. Chimera-only superset. |
26+
| 16 | Remote (SSH) execution[^remote] | YELLOW | `chimera/env/ssh.py` + `chimera/mink/cli.py:_build_environment` (`--remote ssh://user@host[:port][/path]`) | Scaffold landed in v0.4.0; routes file/bash tools through `SSHEnvironment`. 10/13 spec items implemented per HANDOFF; asyncssh + SFTP + ProxyJump still TODO (#127). |
27+
| 17 | Run persistence + sharing[^share] | GREEN | `chimera/mink/runs.py` + `chimera/sessions/share.py` + `chimera/mink/cli.py:_dispatch_runs` (`runs list/show/share`) | Per-run eventlog dirs at `~/.chimera/eventlog/mink-<id>/`. `runs share` supports `file`, `gist`, `base64` sinks (#129). |
28+
| 18 | Agents subcommand | GREEN | `chimera/mink/agents.py` + `chimera/mink/cli.py:_dispatch_agents` (`agents list/show <name>`) | Walks the same project > user > built-in chain `--agent <name>` resolves through. Read-only; no provider bring-up. |
29+
| 19 | Allowed-tools filter | GREEN | `chimera/mink/cli.py:_filter_allowed_tools` (`--allowed-tools Bash,Read,...`) | Comma-separated, case-insensitive; unknown name exits 2 with the valid tool list (audit M-22). |
30+
| 20 | Stream-json output[^streamjson] | GREEN | `chimera/cli/output_format.py` + `_run_stream_json` | One JSON line per `LoopEvent` with `RedactionMiddleware` applied; pairs with `--no-save` for sensitive prompts. |
2631

27-
## Built-in tools roll-up (CC has 41)
32+
[^remote]: Tracking issue: [#127](https://github.com/0bserver07/chimera/issues/127). Scaffold landed; needs asyncssh + SFTP + ProxyJump per `research/mink/HANDOFF.md` open-issues table.
33+
34+
[^share]: Tracking issue: [#129](https://github.com/0bserver07/chimera/issues/129) (closed in v0.4.0).
35+
36+
[^streamjson]: Redaction shipped via `RedactionMiddleware` in v0.4.0 (PR [#140](https://github.com/0bserver07/chimera/pull/140)).
37+
38+
## Built-in tools roll-up (41 reference tools surveyed)
2839

2940
| Bucket | Status | Coverage |
3041
|--------|--------|----------|
@@ -48,10 +59,15 @@
4859
4960
## Counts
5061

51-
- **GREEN:** 13 of 15 subsystems · 32 of 41 CC built-in tools.
52-
- **YELLOW:** 2 of 15 subsystems · 5 of 41 tools (partial coverage).
62+
- **GREEN:** 17 of 20 subsystems · 32 of 41 reference built-in tools.
63+
- **YELLOW:** 3 of 20 subsystems · 5 of 41 tools (partial coverage).
5364
- **RED:** 0 subsystems · 4 of 41 tools deferred (Brief, RemoteTrigger, TeamCreate, TeamDelete, TestingPermission, SyntheticOutput).
5465

66+
> NOTE (M7, 2026-04-25): rows 16–20 were added to reflect surfaces that
67+
> shipped in v0.4.0 but were missing from the original 15-row matrix.
68+
> Rows 1–15 are unchanged; row 13 was relabeled from "Kimi K2.6" to
69+
> "Kimi K2.6 / GLM-5" to match the v0.3.0 default model switch.
70+
5571
## Chimera-only capabilities (do not regress)
5672

5773
Carried over from gap-analysis §"Chimera-only capabilities". Re-verified shipped:
@@ -62,24 +78,28 @@ branching, `RedactionMiddleware`, `CostTracker` with cache/reasoning breakdown,
6278
checkpoint manager, `/yolo` mode toggle, unified `LoopConfig`, 26-event `EventBus`,
6379
`AgentConfig.from_markdown()` + multi-tier registry.
6480

65-
## Follow-up issues to file
81+
## Follow-up issues to file (or already filed)
6682

6783
1. **Vision content blocks for Ollama provider** — currently deferred (subsystem 13).
6884
2. **`format` (JSON-schema grammar) for Ollama** — Ollama Cloud limitation; revisit when upstream supports `:cloud` tags.
6985
3. **Brief tool** — niche, defer until a user requests it.
7086
4. **RemoteTrigger tool** — overlaps with `web_fetch`; decide if standalone tool is worth the duplicate surface.
7187
5. **Team{Create,Delete} tools** — wait for `agent_teams` to graduate from experimental.
72-
6. **TestingPermissionTool / SyntheticOutputTool** — internal CC-only utilities; not user-facing.
73-
7. **`/status` and `/doctor` parity polish** — slash commands shipped; flesh out diagnostics output to match CC's verbosity.
88+
6. **TestingPermissionTool / SyntheticOutputTool** — internal reference-only utilities; not user-facing.
89+
7. **`/status` and `/doctor` parity polish** — slash commands shipped; flesh out diagnostics output to match the reference verbosity.
90+
8. **SSH transport hardening**[#127](https://github.com/0bserver07/chimera/issues/127): asyncssh + SFTP + ProxyJump on top of the v0.4.0 `SSHEnvironment` scaffold.
91+
9. **Event sourcing completeness**[#128](https://github.com/0bserver07/chimera/issues/128): A6 audit found 9/18 spec items missing.
92+
10. **Benchmark adapter live runs**[#86#96](https://github.com/0bserver07/chimera/issues/86): 11 adapters scaffolded; need real-dataset wiring + scoring.
93+
11. **`runs cost --since=Nd`** — telemetry/cost dashboard aggregating `summary.json` across `~/.chimera/eventlog/mink-*/`. Not yet shipped; tracked under HANDOFF "Suggested next session" #6.
7494

7595
## How to use
7696

77-
When a Claude Code user installs `chimera mink` and runs it from a project
78-
that already contains a `.claude/settings.json`, every GREEN row above is
79-
expected to behave identically to upstream Claude Code. The settings file
80-
is auto-discovered from the project root (no `--config` flag is needed —
81-
that flag does not exist; see audit L-1). To override the discovery path
82-
set `CHIMERA_MINK_SETTINGS_PATH` or pass `--cwd` to point at a different
83-
project. YELLOW rows degrade gracefully (and emit a warning where the gap
84-
is user-visible). RED rows raise `NotImplementedError` with a pointer to
85-
the follow-up issue.
97+
When a user installs `chimera mink` and runs it from a project that
98+
already contains a `.claude/settings.json`, every GREEN row above is
99+
expected to behave identically to the reference implementation. The
100+
settings file is auto-discovered from the project root (no `--config`
101+
flag is needed — that flag does not exist; see audit L-1). To override
102+
the discovery path set `CHIMERA_MINK_SETTINGS_PATH` or pass `--cwd` to
103+
point at a different project. YELLOW rows degrade gracefully (and emit
104+
a warning where the gap is user-visible). RED rows raise
105+
`NotImplementedError` with a pointer to the follow-up issue.

docs/mink/permissions.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# Permissions
22

3-
Chimera's permission system is a drop-in target for Claude Code's
4-
`settings.json`. The same `permissions.allow / ask / deny` arrays, the
5-
same rule grammar, the same four modes, the same hook overrides. This
6-
page is the authoritative reference for the CC-compatible surface.
3+
Chimera's permission system is a drop-in target for the ecosystem
4+
`settings.json` schema. The same `permissions.allow / ask / deny` arrays,
5+
the same rule grammar, the same four modes, the same hook overrides.
6+
This page is the authoritative reference for the ecosystem-compatible
7+
surface.
78

89
Implementation entry points:
910

docs/mink/quickstart.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ Streaming text appears as it arrives. Tool calls render as `▶ <Tool>(<args>)`
101101
| `CHIMERA_MINK_MODEL` | `kimi-k2.6:cloud` | Primary model tag passed to Ollama. Any tool-capable Ollama tag works. |
102102
| `CHIMERA_MINK_FALLBACK` | `qwen3:32b` | Used if the primary model errors at provider construction (auth, missing tag, network). |
103103
| `OLLAMA_HOST` | `http://localhost:11434` | Ollama daemon URL. Set when the daemon runs on another host. |
104+
| `CHIMERA_MINK_SETTINGS_PATH` | (unset) | Override `.claude/settings.json` discovery (see [`parity-matrix.md`](parity-matrix.md) "How to use"). |
105+
| `CHIMERA_RICH_TUI` | (unset) | When `=1`, opt the `chimera code` REPL into the rich `MinkStreamHandler` too. |
106+
| `NO_COLOR` | (unset) | When set to any value, force the plain handler (synonym for `--no-color`). |
107+
| `CHIMERA_SSH_TEST_HOST` | (unset) | Live-test target for `--remote`; needed only by the SSH integration tests. |
104108

105109
## What works in M0
106110

@@ -117,6 +121,10 @@ Streaming text appears as it arrives. Tool calls render as `▶ <Tool>(<args>)`
117121

118122
## What does NOT work yet (M1+)
119123

124+
> NOTE (M7, 2026-04-25): every bullet in this section shipped in v0.3.0 or
125+
> v0.4.0. Kept as a historical milestone log; see [`parity-matrix.md`](parity-matrix.md)
126+
> for the current shipped surface (subsystems 1–20).
127+
120128
- The `chimera mink` subcommand — M0 ships only the example script
121129
- Rich TUI (markdown rendering, spinner, collapsed thinking blocks, tool-block expand/collapse) — M1
122130
- Slash commands beyond `Ctrl-D` / process exit — M1 adds `/status`, `/doctor`, `/permissions`, `/hooks`, `/mcp`, `/resume`, `/cost`, `/compact`, `/sandbox`, `/subagent`, `/plugin`, `/review`, `/config`
@@ -126,6 +134,23 @@ Streaming text appears as it arrives. Tool calls render as `▶ <Tool>(<args>)`
126134
- Subagents via `Task` tool and `.claude/agents/*.md` — M3
127135
- `/resume <session_id>` and `/compact` as in-CLI commands — M4
128136

137+
## v0.4.0 surface added since the M0 milestone
138+
139+
The flag matrix exposed by `chimera mink --help` today (additive to the
140+
M0/M1 set above):
141+
142+
| Flag / subcommand | Meaning |
143+
|-------------------------------------|---------------------------------------------------------------------------------|
144+
| `--remote ssh://user@host[:port][/path]` | Route file/bash tools through `SSHEnvironment` (scaffold; see [`remote.md`](remote.md)). |
145+
| `--allowed-tools Bash,Read,...` | Comma-separated allowlist. Unknown name → exit 2 with valid set on stderr. |
146+
| `--tool-timeout SECONDS` | Per-tool-call `asyncio.wait_for` ceiling. |
147+
| `--no-rich` / `--no-color` | Force the plain handler; auto-disabled when stdout is not a TTY or `NO_COLOR` is set. |
148+
| `--no-save` | Skip persistence to `~/.chimera/eventlog/mink-<id>/`. |
149+
| `--run-id <id>` | Override the auto-generated run id (reproducible test fixtures). |
150+
| `--version` | Print `chimera mink <version>` and exit. |
151+
| `mink runs list / show / share` | Inspect persisted runs; `share --sink {file,gist,base64}` exports a tarball ([#129](https://github.com/0bserver07/chimera/issues/129)). |
152+
| `mink agents list / show <name>` | List or describe agents reachable from the project > user > built-in chain. |
153+
129154
## Known limits of Kimi K2.6 `:cloud`
130155

131156
Cited from [report 21 — Kimi K2.6](../../research/mink/21-kimi-k2.6.md):

docs/mink/settings.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
# settings.json — Claude-Code-compatible loader
1+
# settings.json — ecosystem-compatible loader
22

33
`chimera/mink/settings.py` reads the same `.claude/settings.json` files
4-
that Claude Code does, plus a `.chimera/settings.json` escape hatch, and
5-
returns a unified `MinkSettings` dataclass. Use `load_mink_settings()` to
6-
fetch it; use `MinkSettings.to_chimera_loop_config()` to drop the result
7-
into `AgentLoop`. (The legacy `chimera.config.cc_settings` /
4+
that the reference ecosystem reads, plus a `.chimera/settings.json` escape
5+
hatch, and returns a unified `MinkSettings` dataclass. Use
6+
`load_mink_settings()` to fetch it; use
7+
`MinkSettings.to_chimera_loop_config()` to drop the result into
8+
`AgentLoop`. (The legacy `chimera.config.cc_settings` /
89
`load_cc_settings` / `CCSettings` import path remains as a deprecated
910
alias for one release cycle.)
1011

@@ -57,9 +58,9 @@ Higher layers **override scalars** and **deep-merge dicts**. See
5758
}
5859
```
5960

60-
`camelCase` and `snake_case` are both accepted on input (CC writes camelCase;
61-
Chimera-native edits often use snake_case). The dataclass fields use
62-
`snake_case`.
61+
`camelCase` and `snake_case` are both accepted on input (the ecosystem
62+
schema writes camelCase; Chimera-native edits often use snake_case). The
63+
dataclass fields use `snake_case`.
6364

6465
## Permission pattern grammar
6566

@@ -76,7 +77,7 @@ The extended `Tool(arg_key:pattern)` form is M2's grammar extension. Legacy
7677

7778
## Deep-additive divergence (intentional)
7879

79-
Claude Code's reference implementation **silently replaces** arrays under
80+
The ecosystem reference implementation **silently replaces** arrays under
8081
`permissions/*`, `hooks/*`, and `mcp.servers` when a higher layer redefines
8182
them, breaking team-policy stacks. See
8283
[research/mink/12-cc-config.md](../../research/mink/12-cc-config.md)
@@ -89,7 +90,7 @@ Chimera's loader **diverges** here on purpose:
8990
* Arrays under any `hooks.<EventName>` are concatenated.
9091
* Dicts under `mcp.servers` are merged key-wise; if a user models
9192
`mcp.servers` as a list, lists are also concatenated.
92-
* All other arrays are last-write-wins (CC parity).
93+
* All other arrays are last-write-wins (ecosystem parity).
9394
* All dicts are merged recursively.
9495
* All scalars are last-write-wins.
9596

docs/mink/slash-commands.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The `chimera mink` REPL ships with 30 built-in slash commands (registered in
44
`chimera/cli/slash_commands.py`). Nineteen are ported one-to-one from the
5-
existing `chimera code` REPL; eleven are new in M1 to reach Claude Code
5+
existing `chimera code` REPL; eleven are new in M1 to reach ecosystem
66
parity. The dispatcher is `chimera.cli.slash_commands.dispatch(line,
77
session, env, out)`; tab completion uses `COMMAND_NAMES`.
88

@@ -105,7 +105,7 @@ calls share state. `enable` and `disable` are aliases for
105105
Runs `git diff HEAD` in the cwd, hands the diff to
106106
`ReviewOrchestrator(provider=session.provider).run(diff)`, and prints
107107
the (truncated) result. Bails early on empty diffs or missing `git`
108-
binary. Useful as a parity surface for Claude Code's `/review`.
108+
binary. Useful as a parity surface for the ecosystem `/review`.
109109

110110
### /config
111111
Prefers `chimera.mink.settings.load_mink_settings()` (added in M2).

0 commit comments

Comments
 (0)