@staix/agent-hub 0.12.22 → 0.12.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +117 -0
- package/README.md +22 -9
- package/docs/addons/claude-mem.md +24 -0
- package/docs/addons/codex-plugin.md +8 -0
- package/docs/addons/dot-admit.md +8 -0
- package/docs/addons/open-code-review.md +8 -0
- package/docs/addons/ponytail.md +23 -0
- package/docs/addons/ripwire.md +22 -0
- package/docs/agent-notes/README.md +5 -0
- package/docs/agent-notes/adapters.md +18 -6
- package/docs/agent-notes/benchmarks.md +3 -0
- package/docs/agent-notes/budget.md +4 -0
- package/docs/agent-notes/bus.md +3 -1
- package/docs/agent-notes/daemon.md +14 -1
- package/docs/agent-notes/local-worker.md +6 -3
- package/docs/agent-notes/tasks.md +6 -1
- package/docs/agent-notes/tests.md +4 -1
- package/docs/bench.md +28 -3
- package/docs/cooperbench.md +4 -0
- package/docs/data-policy.md +36 -0
- package/docs/events.md +10 -3
- package/docs/gsd-collaboration-analysis.md +48 -0
- package/docs/memory.md +231 -0
- package/docs/operations.md +873 -30
- package/docs/plans/2026-10-11-issues-109-sequential.md +81 -0
- package/docs/plans/2026-10-11-routing-evaluation-proposal.md +30 -0
- package/docs/profiles.md +57 -0
- package/docs/quickstart.md +9 -4
- package/docs/research.md +31 -1
- package/docs/roles.md +85 -0
- package/docs/sdlc.md +170 -0
- package/docs/security.md +124 -8
- package/docs/smoke.md +354 -5
- package/docs/specs/2026-09-19-agent-hub-design.md +676 -15
- package/docs/specs/2026-10-12-backlog-implementation-plan.md +186 -0
- package/docs/specs/2026-10-12-office-view-design.md +212 -0
- package/docs/text-projection.md +19 -0
- package/docs/verification/2026-10-10-cli-output-phase1.md +309 -0
- package/docs/verification/2026-10-10-cli-output-phase2.md +672 -0
- package/docs/verification/2026-10-11-0.12.23.md +90 -0
- package/docs/verification/2026-10-11-acp-watch-t0.md +33 -0
- package/docs/verification/2026-10-11-agent-config-inventory.md +20 -0
- package/docs/verification/2026-10-11-jcode-peer-contract.md +27 -0
- package/docs/verification/2026-10-13-0.12.24.md +94 -0
- package/docs/verification/2026-10-13-board-phone.md +31 -0
- package/docs/verification/2026-10-13-fsmonitor-fixture-attribution.md +19 -0
- package/docs/verified.json +34 -16
- package/package.json +2 -1
- package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
- package/plugins/agent-hub/ROLE-NOTICE.md +26 -0
- package/plugins/agent-hub/server.js +1108 -261
- package/scripts/check-docs.mjs +129 -0
- package/src/adapters/acp-quota.ts +13 -0
- package/src/adapters/acp.ts +201 -20
- package/src/adapters/claude-channel.ts +48 -11
- package/src/adapters/codex-appserver.ts +54 -13
- package/src/adapters/jcode.ts +110 -0
- package/src/adapters/local-worker.ts +10 -7
- package/src/adapters/pi.ts +94 -20
- package/src/cli/attention.ts +60 -0
- package/src/cli/bench.ts +26 -6
- package/src/cli/board-read.ts +12 -0
- package/src/cli/console-state.ts +131 -39
- package/src/cli/console.ts +73 -17
- package/src/cli/facts-hook.ts +12 -4
- package/src/cli/help.ts +52 -21
- package/src/cli/identity.ts +19 -8
- package/src/cli/init.ts +48 -10
- package/src/cli/jcode-mcp.ts +58 -0
- package/src/cli/kimi-mcp.ts +53 -0
- package/src/cli/launch.ts +16 -1
- package/src/cli/main.ts +641 -193
- package/src/cli/memory.ts +193 -0
- package/src/cli/output.ts +404 -0
- package/src/cli/pet-config.ts +1 -0
- package/src/cli/pet.ts +83 -0
- package/src/cli/preview.ts +40 -6
- package/src/cli/reset.ts +3 -0
- package/src/cli/status-lines.ts +1 -29
- package/src/cli/tail-render.ts +1 -0
- package/src/cli/terminal-recovery.ts +27 -1
- package/src/cli/upgrade-runtime.ts +56 -10
- package/src/cli/upgrade.ts +23 -5
- package/src/cli/watch.ts +31 -0
- package/src/hub/activity.ts +53 -0
- package/src/hub/ask.ts +10 -5
- package/src/hub/bench.ts +10 -3
- package/src/hub/board.ts +224 -16
- package/src/hub/budget.ts +39 -7
- package/src/hub/bus.ts +58 -20
- package/src/hub/child-process.ts +11 -0
- package/src/hub/citations.ts +7 -0
- package/src/hub/conductor.ts +34 -17
- package/src/hub/config-trust.ts +20 -7
- package/src/hub/conflicts.ts +2 -0
- package/src/hub/context-window.ts +8 -1
- package/src/hub/crash.ts +11 -1
- package/src/hub/daemon.ts +1218 -113
- package/src/hub/db-timeout.ts +3 -0
- package/src/hub/delivery-journal.ts +7 -1
- package/src/hub/envelope.ts +1 -1
- package/src/hub/events.ts +14 -2
- package/src/hub/execution-budget.ts +2 -0
- package/src/hub/facts.ts +28 -8
- package/src/hub/git.ts +38 -0
- package/src/hub/github-import.ts +28 -0
- package/src/hub/hub-tools.ts +49 -10
- package/src/hub/inference.ts +1 -1
- package/src/hub/lifecycle-schema.ts +17 -0
- package/src/hub/lifecycle.ts +10 -4
- package/src/hub/listen.ts +15 -0
- package/src/hub/manager.ts +26 -6
- package/src/hub/path-policy.ts +96 -0
- package/src/hub/peer-catalog.ts +28 -0
- package/src/hub/peers.ts +5 -3
- package/src/hub/permission-mode.ts +33 -5
- package/src/hub/planning.ts +70 -0
- package/src/hub/profiles.ts +74 -0
- package/src/hub/project.ts +2 -1
- package/src/hub/projected-diff.ts +73 -0
- package/src/hub/projection-exec.ts +24 -0
- package/src/hub/recovery-error.ts +31 -0
- package/src/hub/recovery-store.ts +6 -5
- package/src/hub/registry.ts +2 -1
- package/src/hub/research.ts +144 -21
- package/src/hub/roles.ts +123 -0
- package/src/hub/roster.ts +23 -0
- package/src/hub/routing.ts +132 -18
- package/src/hub/sdlc-queue.ts +112 -0
- package/src/hub/sdlc-release.ts +125 -0
- package/src/hub/sdlc.ts +250 -0
- package/src/hub/settings.ts +411 -0
- package/src/hub/shipped-roles.ts +25 -0
- package/src/hub/snapshots.ts +92 -16
- package/src/hub/start-mode.ts +50 -0
- package/src/hub/supervision.ts +1 -0
- package/src/hub/task-sweep.ts +1 -1
- package/src/hub/tasks.ts +1014 -111
- package/src/hub/terminal-open.ts +64 -0
- package/src/hub/text-projection.ts +126 -0
- package/src/hub/tooling.ts +159 -0
- package/src/hub/ui.ts +40 -14
- package/src/hub/workflow.ts +71 -0
- package/src/local/deny.ts +29 -7
- package/src/local/sandbox.ts +50 -10
- package/src/local/tools.ts +11 -6
- package/src/memory/brief.ts +28 -14
- package/src/memory/import.ts +55 -0
- package/src/memory/recall.ts +86 -2
- package/src/memory/store.ts +750 -0
- package/src/memory/sync.ts +145 -0
- package/src/models/mlx.ts +2 -1
- package/src/pet/NOTICE.md +10 -0
- package/src/pet/characters.ts +1438 -0
- package/src/pet/config.ts +31 -0
- package/src/pet/frame.ts +17 -0
- package/src/pet/pixels.ts +28 -0
- package/src/pi/tool-receipts.ts +2 -1
- package/src/role-text.d.ts +1 -0
- package/src/ui/index.html +983 -40
- package/src/ui/needs.ts +58 -0
- package/src/ui/office-model.ts +440 -0
- package/src/ui/peer-palette.ts +16 -0
- package/src/ui/task-board.ts +49 -0
- package/src/ui/task-progress.ts +5 -1
- package/templates/AGENTS.block.md +3 -2
- package/templates/config.json +5 -1
- package/templates/profiles/dev.json +22 -0
- package/templates/profiles/general.json +26 -0
- package/templates/profiles/research.json +57 -0
- package/templates/profiles/writing.json +28 -0
- package/templates/roles/NOTICE.md +26 -0
- package/templates/roles/dev/backend-engineer.md +26 -0
- package/templates/roles/dev/code-reviewer.md +26 -0
- package/templates/roles/dev/frontend-engineer.md +26 -0
- package/templates/roles/dev/security-reviewer.md +26 -0
- package/templates/roles/dev/software-architect.md +26 -0
- package/templates/roles/dev/test-engineer.md +26 -0
- package/templates/roles/research/analyst.md +26 -0
- package/templates/roles/research/fact-checker.md +26 -0
- package/templates/roles/research/research-lead.md +26 -0
- package/templates/roles/research/researcher.md +26 -0
- package/templates/roles/research/statistician.md +26 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Agent-hub 0.12.23 verification
|
|
2
|
+
|
|
3
|
+
Release preparation for 0.12.23, performed on 2026-10-11 with Bun 1.4.2 on macOS. The release changes no file under `src/`, `test/` or `scripts/` relative to main at `94b489d`: it carries the version, the rebuilt plugin bundle, the changelog section, the document review below and the stamps in `docs/verified.json`. Production application is verified separately after publication.
|
|
4
|
+
|
|
5
|
+
## What the release holds
|
|
6
|
+
|
|
7
|
+
Seventeen pull requests merged since `v0.12.22` (`deeae76..94b489d`): settings and start modes (#269, pull requests #290 and #292), the assignment delivery fixes (#276, #297), the sandbox follow-ups and the hub's one git helper (#281), Kimi's context reading (#285 phase 1), the Codex steer and dashboard start fixes (#296, #298), readable command output (#284, pull requests #291, #299 and #314), the SQLite busy timeouts and the named retryable restart outcome (#303, pull requests #305 and #313), the ACP cancellation wait (#304), the Kimi quota refusal pause and handoff (#306) the macOS timing fixtures (#287), and the console's Left and Right tab keys, Events colours and unrepeated context readings (#309, pull request #312).
|
|
8
|
+
|
|
9
|
+
Control protocol stays 16 (`PROTOCOL` in `src/hub/control-client.ts`) and the events schema stays 1 (`EVENTS_SCHEMA` in `src/hub/events.ts`). The new console-role requests (`settings_get`, `settings_set`, `settings_undo`, `settings_preview`, `peer_start`) are answered as unknown by an older hub, and the new fields are optional.
|
|
10
|
+
|
|
11
|
+
## Changelog
|
|
12
|
+
|
|
13
|
+
Sixteen of the seventeen pull requests have their entry in the 0.12.23 section; #291 and #299 share the #284 entry, and #305 and #313 each have their own #303 entry. #314, merged while this release was prepared, corrects how the unreleased #284 output splits a file name that holds combining marks or joined emoji; it is a clause of the #284 entry. The #309 line arrived under Unreleased with the merge of #312 and was moved into the section. No entry describes work that is not merged. The section heading carries no date, as no earlier section does. A closing line records the protocol and schema.
|
|
14
|
+
|
|
15
|
+
## Document review
|
|
16
|
+
|
|
17
|
+
`node scripts/check-docs.mjs` listed 13 stale documents at `bce5d00`. For each, the source commits since its stamp were read as the changed lines of `src/`, `scripts/`, `templates/`, `package.json` and `.github/`, with the commit messages, and the document was read against the code at `bce5d00`. All 13 are restamped; none is deferred. The corrections are in `88d4920`.
|
|
18
|
+
|
|
19
|
+
`origin/main` then moved by #314 (`76f1695`, `src/cli/output.ts` and its test) and was merged into the branch with a merge commit, `002abf4`. Its change was read against the five documents it made stale again: none describes the split at that level and nothing needed a correction.
|
|
20
|
+
|
|
21
|
+
`origin/main` moved once more by #312 (`94b489d`: `src/cli/console-state.ts`, `src/cli/console.ts` and the context line of the tail in `src/hub/daemon.ts`), merged in `e3313dd`. It made ten documents stale. Its own text in the operations guide ("Operator console and panels", "Native context readings") was read against the reducer, the paste branch and the tail's stamp and is accurate; README, the quickstart, the security guide and the six agent notes say nothing the change touches. No correction was needed and the ten are stamped at that merge commit.
|
|
22
|
+
|
|
23
|
+
| Document | Source commits | Changed | Stamp |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| `README.md` | 16 | yes | `e3313dd` |
|
|
26
|
+
| `docs/security.md` | 16 | yes | `e3313dd` |
|
|
27
|
+
| `docs/operations.md` | 17 | yes | `e3313dd` |
|
|
28
|
+
| `docs/quickstart.md` | 16 | yes | `e3313dd` |
|
|
29
|
+
| `docs/agent-notes/adapters.md` | 12 | scope line only | `e3313dd` |
|
|
30
|
+
| `docs/agent-notes/benchmarks.md` | 5 | no | `88d4920` |
|
|
31
|
+
| `docs/agent-notes/budget.md` | 9 | yes | `e3313dd` |
|
|
32
|
+
| `docs/agent-notes/bus.md` | 9 | no | `e3313dd` |
|
|
33
|
+
| `docs/agent-notes/daemon.md` | 12 | yes | `e3313dd` |
|
|
34
|
+
| `docs/agent-notes/local-worker.md` | 2 | scope line only | `88d4920` |
|
|
35
|
+
| `docs/agent-notes/models.md` | 1 | no | `88d4920` |
|
|
36
|
+
| `docs/agent-notes/tasks.md` | 12 | no | `e3313dd` |
|
|
37
|
+
| `docs/agent-notes/tests.md` | 17 | no | `e3313dd` |
|
|
38
|
+
|
|
39
|
+
README, the operations guide and the quickstart cover `package.json`, so their stamp has to follow the version commit (`62318e1`); the merge commit `e3313dd` does. Both stamps (`e3313dd` and `88d4920`) name commits of the release branch: the release pull request is merged with a merge commit, never squashed or rebased.
|
|
40
|
+
|
|
41
|
+
### What changed
|
|
42
|
+
|
|
43
|
+
- `README.md`, `docs/quickstart.md`: the dashboard also starts a peer in its start mode and shows the settings, and what an ordinary session may change (#269). The unified dashboard's Start opens a TUI only through a terminal provider; both pages said TUIs are launched from a terminal only.
|
|
44
|
+
- `docs/security.md`:
|
|
45
|
+
- `terminal.open` is in `MACHINE_LOCAL` (`src/hub/config-trust.ts`) and was missing from the list of machine-local fields under "Trust boundaries".
|
|
46
|
+
- "A conductor may ... start supported headless peers" contradicted the page's own start-mode paragraph: `conductorStart` starts any startable peer in the mode a person set.
|
|
47
|
+
- The list of what the browser receives omitted the settings rows and the start plans (`settingsSnapshot`, `startPlans` in `src/hub/daemon.ts`).
|
|
48
|
+
- `docs/operations.md`: the authority paragraph of "Settings" omitted that an ordinary session may set a start mode back to `tui` (the registry's `floor`, `settingRefusal` in `src/hub/settings.ts`). The version, the protocol-16 source lists and the upgrade commands follow the release.
|
|
49
|
+
- `docs/agent-notes/daemon.md`: two rules the changes introduced and no note held. Every `new Database(` under `src/` is followed by its own named `busy_timeout`, enforced by `test/db-busy-timeout.test.ts` (#303). The manager's `start_peer` deadline is matched by the exact text `ControlClient.request` resolves with, and the reopen guard and the retry hold share `PEER_START_RETRY_MS` (#298).
|
|
50
|
+
- `docs/agent-notes/budget.md`: Kimi's occupancy is a context reading only, and a gate crossing sends a checkpoint request to Claude and Codex only (#285); a quota resume notice is published before the unread notices it replaces are withdrawn (#306).
|
|
51
|
+
- `AGENTS.md` and the scope lines of the daemon, adapters and local-worker notes name the files this release added (`start-mode.ts`, `terminal-open.ts`, `recovery-error.ts`, `db-timeout.ts`, `git.ts`), and `docs/verified.json` covers them, with `ui.ts` and `settings.ts` for the daemon note.
|
|
52
|
+
|
|
53
|
+
### What was checked and found accurate
|
|
54
|
+
|
|
55
|
+
- `docs/operations.md`: "Command output" against `src/cli/help.ts` and the flag handling in `src/cli/main.ts`; "Settings" and "Start modes" against `src/hub/settings.ts`, `src/hub/start-mode.ts`, `src/hub/terminal-open.ts` and `hubStart`; the assignment delivery paragraph against `assignOwner` and `undeliveredNotice`; the Kimi quota paragraphs against `src/adapters/acp-quota.ts`, `Budget.report` and `Bus.failed`; the `database_busy` paragraph against `src/hub/recovery-error.ts` and `runRecovery`; the Kimi context reading against `acpContext` and the adapter's idle acceptance; the dashboard Start timings against `src/hub/manager.ts`. The ACP cancellation wait (#304) needs no operator text: the daemon's bus always has a journal, and the wait applies to a bus without one.
|
|
56
|
+
- `docs/security.md`: the settings and start-mode sections against the registry, `NEVER_EDITABLE`, the dashboard session window (`SETTINGS_MS`) and `personEnv`; the sandbox paragraph against `hubWriteRegexes` and `moduleGitDirs`.
|
|
57
|
+
- `adapters.md`: the steer rule (#296), the occupancy rule (#285), the cancellation wait (#304), the quota contract (#306), the `stop(reason)` return of journal-less work and the terminal environment rule (#269), each against `src/adapters/acp.ts`, `src/adapters/codex-appserver.ts` and `src/hub/child-process.ts`.
|
|
58
|
+
- `tasks.md`: the `assignOwner` rule against `src/hub/tasks.ts` at the head (#276, #297), and the overlay rule against `checkOverlay`.
|
|
59
|
+
- `bus.md`: the quota flag changes `Bus.failed` only for a paused peer and is stated in `budget.md`; nothing in the note is contradicted.
|
|
60
|
+
- `local-worker.md`: the submodule rules and the git helper against `src/local/deny.ts`, `src/local/sandbox.ts` and `src/hub/git.ts`.
|
|
61
|
+
- `benchmarks.md`: the two #304 paragraphs against the adapter's cancellation deadline. `models.md`: its one commit renames a busy-timeout constant.
|
|
62
|
+
- `tests.md`: against the workflow change, the ACP fake's held trailing updates and the harness of the new test files (`settings`, `start-modes`, `recovery-busy`, `hub-git`, `output-cli`).
|
|
63
|
+
|
|
64
|
+
### What was not checked
|
|
65
|
+
|
|
66
|
+
- The 5,600 changed lines under `test/` were not read assertion by assertion: for `tests.md` the fakes, the helpers and the opening of each new test file were read.
|
|
67
|
+
- `src/ui/index.html` was read for the start controls only; the Settings section's rendering was not compared with the guides line by line.
|
|
68
|
+
- The table-rendering code of `src/cli/output.ts` was not compared with the wrapping and banding sentences of "Command output"; `docs/verification/2026-10-10-cli-output-phase1.md` and `-phase2.md` record that check.
|
|
69
|
+
- Sections of the operations guide that none of the merged commits touch in substance were not re-read in full.
|
|
70
|
+
- `docs/events.md`, `docs/smoke.md` and the design spec are outside `docs/verified.json` and were not reviewed.
|
|
71
|
+
|
|
72
|
+
## Checks
|
|
73
|
+
|
|
74
|
+
All at the head of the branch after the merge of #312 and the last restamp, unless a line says otherwise.
|
|
75
|
+
|
|
76
|
+
- `node scripts/check-docs.mjs`: `docs: OK (0 stale documents)`.
|
|
77
|
+
- `bun x tsc --noEmit`: clean (exit 0).
|
|
78
|
+
- `bun scripts/build.mjs --check`: the bundle and the plugin manifest are fresh (exit 0).
|
|
79
|
+
- `scripts/check.sh`, admitted through `dot admit` and run without the agent session's environment markers, on the tree of the commit that holds this restamp (the merge `e3313dd` plus documents only): 1972 tests across 132 files in 311 s, 1972 pass, 0 fail, 26,811 expectations, no daemon leak; `check: OK`. This is the first full run on #312 and #314 together. An earlier run at `7ebd860`, before either merge, had 1953 pass and 0 fail.
|
|
80
|
+
- `git diff origin/main...HEAD -- src test scripts` is empty.
|
|
81
|
+
- CI at `e80c7af` (run 38104252746), first attempt: `check` on macOS (1972 pass, 0 fail, `check: OK`), `check` on Ubuntu (1941 pass, 31 skips, 0 fail, `check: OK`) and `seeded guards` (`seeded: OK (6 sequential guards, 13.237 s)`). The commit after `e80c7af` adds only this line; its own run is recorded on the pull request.
|
|
82
|
+
|
|
83
|
+
## Not proven live (human-only)
|
|
84
|
+
|
|
85
|
+
No live leg was run for this release. `docs/smoke.md` lists what stays unverified against real agents, among it: the settings leg and the start-mode legs (#269), Kimi 2.1.1's `usage_update` arrival through the hub (#285), the native measurement owed for #304, and the interactive upgrade legs (#272). An upgrade of a running 0.12.22 hub to this release has not been run.
|
|
86
|
+
|
|
87
|
+
## Left for the owner
|
|
88
|
+
|
|
89
|
+
- `test/upgrade-cli.test.ts` gained `withRestartDiagnostics` and the `AHUB_RESTART_DIAGNOSTICS_DIR` variable CI sets (#303). No note says a new installed-layout restart fixture should use it; whether that is a rule for `tests.md` is undecided.
|
|
90
|
+
- `docs/operations.md` still says "From an installed CLI older than 0.12.22, start it once by hand" and titles the start-mode migration "from 0.12.22 and earlier"; both are historical and were left.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# ACP watch verification, 2026-10-11
|
|
2
|
+
|
|
3
|
+
- Scope: #286 Part 1, headless Kimi/Qwen transient watch only. No native account, model, TUI or production hub was started during this solo implementation.
|
|
4
|
+
- Base: e4146115, agent-hub 0.12.23, protocol 16. Fake protocol tests establish the hub contract; they do not establish what a vendor actually emits.
|
|
5
|
+
- Kimi source baseline: 2.1.1, recorded in #286. Qwen source baseline: expected ACP 0.25.0; #256's source inventory found installed CLI 0.25.0 versus ACP/package 0.24.1. The production adapter refuses that identity drift.
|
|
6
|
+
|
|
7
|
+
| Check | Verdict | Reason and consequence |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| K1 | Unverified | Native read/edit/command/approval turn not run. Fake ACP message/thought/tools/plan/approval projection is tested, actual field coverage unknown. |
|
|
10
|
+
| K2 | Unverified | No concurrent native visualizer session. No `watch --native` offered. |
|
|
11
|
+
| K3 | Unverified | No second writer started. No concurrent resume command offered. |
|
|
12
|
+
| K4 | Unverified | No Kimi web session inspection. ACP transport retained. |
|
|
13
|
+
| Q1 | Unverified | Installed ACP identity drift; no native turn run. Fake 0.25.0 contract only. |
|
|
14
|
+
| Q2 | Unverified | Dual output busy/submit round trip not run. TUI mode remains refused. |
|
|
15
|
+
| Q3 | Unverified | Native dual-output approvals and MCP identity not run. No TUI permission mapping shipped. |
|
|
16
|
+
| Q4 | Unverified | No native external turn cancellation test. No TUI watchdog shipped. |
|
|
17
|
+
| Q5 | Unverified | Unread native event-file limit not tested. No file transport shipped. |
|
|
18
|
+
| Q6 | Unverified | Native TUI recovery not tested. Existing ACP recovery stays separate. |
|
|
19
|
+
| Q7 | Unverified | Final isolated provider environment not exercised; CLI version alone is insufficient. |
|
|
20
|
+
|
|
21
|
+
# Delivered contract
|
|
22
|
+
|
|
23
|
+
- `ahub watch kimi|qwen` subscribes to a console-only memory ring, replays it, then streams new items. It sends only `watch` and `status` requests. `q` and Ctrl+C leave without stopping the peer.
|
|
24
|
+
- The ring holds at most 500 items and 256 KiB of serialized UTF-8 JSON per peer. Item text is bounded at 4096 UTF-16 code units. Message/thought chunks coalesce up to that cap or a 50 ms flush boundary; tool/permission/end boundaries flush synchronously.
|
|
25
|
+
- Tool updates project only declared fields, locations and bounded last text lines, or diff line counts. ACP terminal references without inline output say output is unavailable; filesystem/terminal capability remains disabled. No terminal RPC or native session file is read.
|
|
26
|
+
- Private envelopes, daemon-marked private turns and associated PII work show one stub. Privacy stays latched if the task closes during the turn; unreadable privacy state also withholds activity.
|
|
27
|
+
- Watch is unavailable for Kimi pull-only TUI mode, off-roster Qwen and non-ACP peers. Jcode is outside this slice. No terminal-provider automation or console Peers-panel shortcut ships here.
|
|
28
|
+
- Existing final-answer delivery and existing native approval display (console and dashboard) retain their own policies. Watch adds no copy to the bus, events, hub.log, UI, tools or claude-mem. A final answer containing a marker can still reach the existing answer bus; that is not a watch side channel.
|
|
29
|
+
- Native payload coverage, model/tool execution and TUI claims remain unverified. No performance or quality comparison was measured.
|
|
30
|
+
|
|
31
|
+
# Marker fixture provenance
|
|
32
|
+
|
|
33
|
+
- Existing ACP approval payloads appear in the dashboard as well as the console (`uiSnapshot` and the existing dashboard allow/deny integration test). Watch does not change that approval policy. The transient-only marker is in thoughts, read/edit tool arguments and tool output; the separate executable approval command and final answer are ordinary unmarked fixtures. The test checks the transient marker is absent even while that independent approval is pending. All marker assertions are retained.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Project agent configuration inventory (#323)
|
|
2
|
+
|
|
3
|
+
Read on 2026-10-11. No native model turn was run. Version commands: Claude Code 2.1.296, Codex 0.146.0, Kimi 2.1.1, Qwen 0.25.0, Pi 1.0.1. The Qwen npm manifest at the selected executable tree says 0.24.1 despite the CLI reporting 0.25.0; do not use the manifest as served/native-version proof.
|
|
4
|
+
|
|
5
|
+
| Peer | Project paths established | Source and limit |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Claude | `.claude/settings.json`, `.claude/settings.local.json`, `.claude/skills/`, `.claude/agents/`, `.mcp.json` | [Vendor settings](https://code.claude.com/docs/en/settings), [skills](https://code.claude.com/docs/en/skills), [MCP](https://code.claude.com/docs/en/mcp). Closed vendor source; current documentation, no native discovery run. |
|
|
8
|
+
| Codex | `.codex/config.toml`, `.agents/skills/`; legacy skills in config roots | [0.146.0 loader](https://github.com/openai/codex/blob/be449751a978f02e5bbba886999662956c7f38f5/codex-rs/core-skills/src/loader.rs), `repo_skill_roots` probes `.agents/skills` between cwd and project root. Config commands and trust are vendor-owned. |
|
|
9
|
+
| Kimi | `.kimi-code/mcp.json`, `.kimi-code/local.toml`, `.kimi-code/skills/`, `.agents/skills/` | [2.1.1 skills](https://github.com/MoonshotAI/kimi-code/blob/a00639d0654d2c91c6f0c1388267b62ad51f8b9c/docs/en/customization/skills.md), [configuration](https://github.com/MoonshotAI/kimi-code/blob/a00639d0654d2c91c6f0c1388267b62ad51f8b9c/docs/en/configuration/config-files.md), [MCP](https://github.com/MoonshotAI/kimi-code/blob/a00639d0654d2c91c6f0c1388267b62ad51f8b9c/docs/en/customization/mcp.md). Project stdio MCP entries run local commands. Legacy `.kimi` remains protected for earlier versions. |
|
|
10
|
+
| Qwen | `.qwen/settings.json`, `.qwen/skills/`, `.agents/skills/`, `.qwen/hooks/`, `.qwen/commands/`, `.qwen/agents/`, `.mcp.json` | Installed `chunks/chunk-ZYDMQCQP.js` declares `SKILL_PROVIDER_CONFIG_DIRS = [".qwen", ".agents"]`; `chunk-J6QWYIXU.js` maps them to `<projectRoot>/<provider>/skills` and lists startup/configuration paths. [Vendor skills](https://qwenlm.github.io/qwen-code-docs/en/users/features/skills/). Package-version mismatch above; no live discovery claim. |
|
|
11
|
+
| Pi | `.pi/settings.json`, `.pi/skills/`, `.pi/extensions/`, resource paths configured there | [1.0.1 resource loader](https://github.com/earendil-works/pi/blob/a7229ddc21810d6245105978033b7df645ecc2f7/packages/coding-agent/src/core/resource-loader.ts). Installed package documentation also lists `.agents/skills`; that additional discovery path was not proven in the executing bundled CLI. It is protected by the shared rule regardless. |
|
|
12
|
+
| Local | `.agenthub/config*.json`, `.agenthub/routing*.toml`; no native skill/MCP discovery | Repository loader and local tool implementation. The existing hub configuration refusal applies. |
|
|
13
|
+
|
|
14
|
+
## Decisions
|
|
15
|
+
|
|
16
|
+
- Exclude `.agents` from scoped automatic file grants: skills may direct code/tool use and are loaded by several supported peers. Existing `.claude`, `.codex`, `.qwen`, `.kimi`, `.kimi-code`, `.pi` and `.mcp.json` exclusions cover their configured project resources.
|
|
17
|
+
- Exclude `.claude.json` conservatively as an agent configuration filename. The documented default is home-level `~/.claude.json`, not a project-local file; default project discovery of `.claude.json` was not established. Do not claim that adding this name proves a project loader exists.
|
|
18
|
+
- The owner's 2026-10-11 decision keeps `AGENTS.md`, `CLAUDE.md`, `QWEN.md` grantable by default. `scoped_grants.protect_instructions` enables protection for those three names only, including folded and symlink spellings. It persists as machine-local `protect_instruction_files`, applies after the settings write or undo, and is available only through person settings surfaces.
|
|
19
|
+
- Configured arbitrary skill/hook paths and configurable context filenames are not a complete name inventory. The hub does not infer additional protected filenames from arbitrary native settings. No guarantee for every vendor-loaded path follows from this list.
|
|
20
|
+
- The option affects scoped writes/edits, not instruction reads or explicit human approval/never-ask. A tracked project file cannot set this machine-local policy. Ordinary dashboard sessions may enable protection, but weakening it requires a settings session; agent/tools/conductor surfaces cannot change it.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Jcode peer contract (#332)
|
|
2
|
+
|
|
3
|
+
Installed CLI: jcode 0.94.0, release build b6c63ff04ca6786d4d328a086d7f3ac06d6fb578, read through version --json. This identifies [1jehuang/jcode](https://github.com/1jehuang/jcode/tree/b6c63ff04ca6786d4d328a086d7f3ac06d6fb578), not the unrelated cnjack/jcode project.
|
|
4
|
+
|
|
5
|
+
## Verified source surfaces
|
|
6
|
+
|
|
7
|
+
- src/cli/acp.rs: native identity jcode/package version, protocol 1, new/load/prompt/cancel/close. Session-scoped mcpServers arrays are tolerated but ignored. No session/set_mode or request_permission mapping is provided.
|
|
8
|
+
- crates/jcode-base/src/mcp/protocol.rs and manager.rs: per-session project directory selects .jcode/mcp.json, then .mcp.json, then .claude/mcp.json. Later names override. Both servers and mcpServers are accepted; shared:false makes the connection session-owned.
|
|
9
|
+
- src/cli/dispatch.rs and crates/jcode-app-core/src/server/socket.rs: serve runs in the foreground, a private --socket selects the runtime, JCODE_READY_FD signals listening, temporary-server/owner-pid support cleanup. Automatic updates and self-dev can be disabled. No global stop command is required.
|
|
10
|
+
- Native MCP first-use import can write Codex definitions into Jcode's global store. The hub refuses startup until that native store exists; it never initializes or copies it. Credentials stay in the operator's native store.
|
|
11
|
+
- ACP load returns no restored id while attach_existing_session can replace its internal id from History. Therefore 0.94.0 cannot prove restored identity through this interface. Automatic crash/controlled recovery is withheld. A manually requested load must echo an exact id or refuses without a model prompt or restored claim. Fakes can exercise that positive echo contract; they do not establish native 0.94.0 restoration.
|
|
12
|
+
|
|
13
|
+
## Alternative assessment
|
|
14
|
+
|
|
15
|
+
| Surface | Jcode | Qwen | Pi |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| Integration | Owned daemon/socket plus ACP and project MCP | Owned ACP, session MCP | Native events and hub-moderated tools |
|
|
18
|
+
| Permission boundary | Unmanaged native policy, no hub sandbox | Version-specific native modes, no hub sandbox | Hub path guard/sandbox for managed tools |
|
|
19
|
+
| Provider choice | Operator's native provider profile | Operator's native provider | Existing hub relay policy |
|
|
20
|
+
| Recovery | Refuse unproven native identity restoration | Saved ACP conversation | Existing file/id restoration |
|
|
21
|
+
| Quota | Unknown unless observed/pinned | Unknown unless observed/pinned | Existing on-prem policy and measurements |
|
|
22
|
+
|
|
23
|
+
No local comparison of RAM, latency, quality, resources or operator overhead ran. Upstream performance claims are not this workspace's measurement. Jcode is optional and does not replace class defaults or establish reliable verification from a role label.
|
|
24
|
+
|
|
25
|
+
## Unverified native legs
|
|
26
|
+
|
|
27
|
+
Provider/model serving, project MCP discovery and a real hub-tool call, native permissions, native stop/child teardown and recovery all remain unverified. Source inspection, fakes, a CLI version and a listening socket are separate evidence, not native model/tool readiness.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# 0.12.24 release verification
|
|
2
|
+
|
|
3
|
+
This record describes release preparation and source verification. These checks do not certify tagging, package publication, global installation or a live upgrade; operational receipts are recorded separately.
|
|
4
|
+
|
|
5
|
+
## Source and document review
|
|
6
|
+
|
|
7
|
+
The candidate includes the reviewed project-board/planner stack, optional hub memory, console/dashboard attention characters, and fixture/automatic-port fixes. Control protocol remains 16. Research tracks remain open; implementation does not establish native account ingestion, model consumption, measured effects, physical font/tmux behavior or the two-release planner cycle.
|
|
8
|
+
|
|
9
|
+
The documentation review reconciles README and Quickstart install/version examples with package metadata; Operations with the shipped board, character and recovery commands; Security with the closed Tasks/dashboard actions, body-free attention and optional hub-memory persistence/sync boundaries. Earlier phase-pending character/board wording was removed. Private task and external-source rescreens remain fail-closed.
|
|
10
|
+
|
|
11
|
+
Area-note contracts were checked against their current implementations and retained: native transport/permission/generation fences; benchmark source/model/restoration evidence; independent budget/manual/recovery holds; bus delivery/retry/sanitization; exact-row console navigation and controlled recovery; guarded local tools/Git; model privacy and unchanged routing; Tasks authority/projection/atomicity; and named green-before-mutated testing. The model routing/privacy contract remains unchanged; ScreenRecord adds an explicit inherited source without inventing a new screening verdict or latency. The background note continues to describe the exact-row regression without introducing instructions.
|
|
12
|
+
|
|
13
|
+
Documentation stamps identify reviewed source ancestry, not runtime proof. All 14 entries require fresh committed readback before tagging. A later covered-source change requires another review and stamp.
|
|
14
|
+
|
|
15
|
+
## Recorded checks
|
|
16
|
+
|
|
17
|
+
- Approved Board fixture canonical-path correction: 7 pass, 0 fail, 46 assertions. Original assertions and production project/instance checks retained.
|
|
18
|
+
- Latest related split/pull/import/CLI/card suite: 49 pass, 0 fail, 232 assertions. Typecheck passed.
|
|
19
|
+
- The undo mutation guard: green original, named assertion detected after mutation. Original object assertion retained with a preceding non-null assertion; classifier unchanged.
|
|
20
|
+
- Official frozen-lockfile build run 38352373600: generated plugin 0.12.24, 593 KB bundle, equal to the admitted local build after dependency installation. Initial 594 KB build resolved parent-worktree dependencies and differed only in generated dependency path comments; freshness correctly refused it. Full freshness/tarball/test and mutation gates remain required for the final release head.
|
|
21
|
+
- PR #362 merged as 702219c1 after exact-head Linux/macOS checks, 297 mutation guards, completed Codex/OCR review and final merge fence. Reviewed and merged whole trees agree. Owned branch/worktree cleaned.
|
|
22
|
+
- Earlier character/dashboard delivery: PR #373 and #374 merged after their exact-head checks and 268/277 guards. Issues #369 and #375 closed with their documented source evidence; original failed port-listener identity remains unknown.
|
|
23
|
+
|
|
24
|
+
## Remaining verification
|
|
25
|
+
|
|
26
|
+
- Final stacked PR heads: complete both platform checks and all mutation guards, current reviews, resolved threads, separate successful merge fence, merge-tree equality and cleanup.
|
|
27
|
+
- Final release PR: fresh document readback, full platform/tarball/bundle/tests and mutation gates, current review, merge commit preserving stamp ancestry.
|
|
28
|
+
- Tag and publication: release workflow and package/release artifact readback.
|
|
29
|
+
- Installation and live activation: installed version/plugin and current registered runtime/instance readback. Human-console identity restrictions still apply; no agent-marker stripping or console impersonation has been performed.
|
|
30
|
+
- Native/account/research legs remain unverified unless separately recorded with actual evidence.
|
|
31
|
+
|
|
32
|
+
## Later source corrections
|
|
33
|
+
|
|
34
|
+
After the 7acd75c candidate, source review added planner WIP/hold checks to automatic reroutes, refusal of split undo with child-scoped memory entries, explicit inherited PII provenance, and a 2 MiB GitHub-intake reader ceiling covering the worst-case escaped 33-row sentinel page. Default SDLC reads retain 256 KiB. Four named mutation guards and actual state/reader regression cases cover these corrections; current-head results are pending.
|
|
35
|
+
|
|
36
|
+
The admitted local full gate at 7acd75c completed with 2598 pass, 0 fail, 188563 assertions, no current-invocation daemon leaks and `check: OK`. This certifies that earlier candidate, not the later source corrections. Documentation contracts were rechecked for these additions before restamping.
|
|
37
|
+
|
|
38
|
+
The output-ceiling change preserves the existing third `cwd` argument and adds an optional fourth byte ceiling, forwarded through the Tasks project-scoped reader. Corrected import unit/task/actual CLI suites: 10 pass, 0 fail, 53 assertions; typecheck passed. Prior latest related suite: 56 pass, 0 fail, 269 assertions. Final release full gates remain required.
|
|
39
|
+
|
|
40
|
+
The terminal board uses the same preserved visible-row context for column placement and stage rendering. Actual Board suites: 8 pass, 0 fail, 47 assertions; typecheck passed. Seven focused mutation probes (automatic WIP, child memory, inherited PII, escaped import output, effective rank, proposed-parent order and plan privacy) each recorded green→named assertion detection. The stage snapshot guard and all final-head full gates remain required.
|
|
41
|
+
|
|
42
|
+
The admitted full gate at 91e654e9 completed with 2603 pass, 0 fail, 188580 assertions, no current-invocation daemon leaks and `check: OK`. Later review corrections preserve explicit person reservation provenance across pull undo, preflight accepted automatic handoffs and roster previews with shared WIP/hold constraints, and persist memory-reference attempts before external writes. The new legacy-note fixture metadata correction was explicitly approved; its assertions and the production validator remain unchanged. Current split21/0 (77 assertions) and WIP11/0 (60 assertions), with their typechecks, passed. Latest full-head gates remain required.
|
|
43
|
+
|
|
44
|
+
Memory file-mode documentation now states exactly what the source sets: new segments request 0600, index.db receives best-effort chmod, and SQLite sidecars/existing modes have no per-file 0600 guarantee. The directory is explicitly chmodded 0700. No production memory permissions were altered.
|
|
45
|
+
|
|
46
|
+
The WIP assignment guard now exercises actual automatic rescreen admission after a clear privacy verdict; independent offline preflight remains covered by its original regression. Current WIP12/0 (62 assertions), typecheck and its named mutation probe passed. The strict manifest rejected an empty replacement in a new guard; it was replaced by an equivalent nonempty boolean mutation without changing the classifier or assertions.
|
|
47
|
+
|
|
48
|
+
Latest integrated planner/split/sweep/settings/schema checks: 52 pass, 0 fail, 257 assertions; import/CLI/column/table checks: 21 pass, 0 fail, 104 assertions. Typechecks passed. Twelve related mutation probes each recorded green→named assertion detection. The owner-approved sweep fixture retains all assertions while making non-target peers unavailable/busy as intended. The WIP settings assertion now checks defined refusal before its original string matcher, with classifier unchanged. Phone source-fixture proof is recorded separately; native/account/measurement claims remain unverified. Final plugin freshness and full release-head gates remain required.
|
|
49
|
+
|
|
50
|
+
The latest propagated source candidate passed 219 related tests with 0 failures and 1163 assertions, plus typecheck and official plugin build/freshness. The owner-approved dependency recovery fixture completes its parent before approval; all assertions and production state guards remain intact. Seven recent mutation probes detected their named assertions, including recovered readiness and prerequisite reachability. The prerequisite seed now disables actual reachability rather than a redundant bypass; classifier and original regression remain unchanged. Historical full gate at 6435857b passed 2615 tests, 0 failures and 188614 assertions with `check: OK`; it does not certify these later changes. Final current-head full gates remain required.
|
|
51
|
+
|
|
52
|
+
The admitted full gate at 4ed6cfaf passed 2621 tests, 0 failures and 188629 assertions, with no invocation-owned daemon leaks and `check: OK`. Subsequent review found pending WIP editor initialization, dot-prefixed repository validation and phase-checklist child references. Their focused suites passed 5/0 (39 assertions), 6/0 (35 assertions), and 24/0 (86 assertions), with typechecks and three named mutation probes. The owner approved a single Tasks pull in the new checklist fixture before recording lifecycle evidence; all assertions and state guards remain. These later changes require fresh full-head gates.
|
|
53
|
+
|
|
54
|
+
The recovered-redo regression now passes through declined ownerless To Do and reassignment after alternative WIP clears: 15 pass, 0 fail, 71 assertions; typecheck and its green/mutated assertion guard passed. The owner-approved fixture uses a valid persisted in_review-to-changes_requested snapshot, reflecting interruption before reopen. The production Board state table now permits declined changes_requested-to-proposed, with Tasks authority intact; no assertion was weakened. Official plugin build/freshness passed. Numeric release examples now use --release-id rather than shell-sensitive unquoted hash ids. Final exact-head gates remain required.
|
|
55
|
+
|
|
56
|
+
The admitted full gate at cb0ee364 passed 2625 tests, 0 failures and 188651 assertions, no invocation-owned daemon leaks, and `check: OK`. Subsequent cut-unknown and child-budget corrections passed 9/0 (24 assertions) and 25/0 (93 assertions), both typechecks and named mutation guards. The owner approved replacing the unsupported Codex budget fixture peer with instrumented local; all assertions and the production instrumented-peer constraint remain. The child budget remains intact on refusal, and disabling it permits otherwise-unused child undo. These later changes need current-head full gates. Actual cb0ee364 document stamps were independently confirmed ancestors for all 14 entries and fresh; an unresolvable 4cd18a4 reported by review was not the PR head.
|
|
57
|
+
|
|
58
|
+
The admitted full gate at 44f6be01 passed 2627 tests, 0 failures and 188660 assertions, with no invocation-owned daemon leaks and `check: OK`. Later independent review found a deterministic privacy race across routing-pattern reload during split screening. Captured child/parent privacy signals now survive final revalidation; 26 split tests passed with 0 failures and 97 assertions, typecheck passed, and both the new policy-reload guard and the retargeted existing plan-privacy guard detected their named assertions. All original assertions/classification rules remain. Current-head full gates remain required for this later correction.
|
|
59
|
+
|
|
60
|
+
The inverse policy-reload case is now covered: a pattern added while a clear model screen is pending records regex-private history/telemetry from captured final deterministic signals. Split27/0 (100 assertions), typecheck, final-provenance guard and both earlier policy-retention/plan-privacy guards passed. Original assertions and strict classifier remain. Current-head gates are required.
|
|
61
|
+
|
|
62
|
+
The outer split HTTP boundary now allocates a native per-request bound above manager forwarding without altering ordinary action allocation. Its approved observed-deadline fixture passed 1 test/0 failures, 8 assertions (26ms), retaining all earlier session/TCP/count assertions and adding deadline scope checks. Bun 1.4.2 pending-handler idle expiry did not reproduce at 23 seconds even with explicit idleTimeout=1; this evidence is recorded rather than claimed as natural expiry. Current typecheck/mutation/full gates remain required because local compilation admission was deferred.
|
|
63
|
+
|
|
64
|
+
Fresh UI source6d311a51 was recaptured in the single approved Space44. Visual review exposed a clipped phone Cut control despite document width390; source now stacks phone split grids. Same-space recapture confirmed all visible form controls inside panels, full calendar controls in both themes, unknown-cut wording, pending WIP2/0/inherit and Save payload2, keyboard Pull, and all nine PNG contents were viewed. Space44 finished exactly once and its server stopped. Historical1bb byte-identity wording is withdrawn; the source-qualified phone report and smoke ledger supersede only source-fixture pending evidence.
|
|
65
|
+
|
|
66
|
+
The release macOS gate at 75a8896c failed the original ACP #160 idle assertion: a native mode acknowledgement could return before cancelled-prompt cleanup. The source now awaits the existing bounded cancellation gate after that acknowledgement. Original and new regression cases passed (2 pass, 0 fail, 23 assertions), typecheck passed, and the new mutation guard recorded green then named assertion detection. The owner approved the new fixture marker correction to the fake's existing CANCEL_WAIT branch; production deadlines and all original assertions remain unchanged. The manager unconfirmed-reply guard now checks its scalar contract before the original object assertion, avoiding timeout text in the mutation diagnostic without changing the classifier. Its named test and mutation probe passed. These focused receipts do not certify the forthcoming full release head.
|
|
67
|
+
|
|
68
|
+
Full gate 0b476561 failed the existing ACP #304 test (2630 pass, 1 fail; no current-invocation daemon leaks), also reproduced in Linux CI. The unconditional cleanup wait interfered with still-unreported cancelled prompts. The corrected source waits only after observing that prompt response. ACP suite: 99 pass, 0 fail, 633 assertions; typecheck passed. The approved fixture now batches the cancellation and mode replies into one stdout write, reproducing queued cleanup deterministically. Its original run passed and its mutation, removing the cleanup wait entirely, failed the named assertion. The earlier Promise.resolve mutation survived because it retained a microtask delay; that result was not accepted as verification. Final full gates remain required for the corrected head.
|
|
69
|
+
|
|
70
|
+
Full gate at44830bb1 passed2631 tests,0 failures,188679 assertions,429.06s, no invocation-owned daemon leaks and `check: OK`; Linux/macOS CI also passed. Subsequent review found memory-reference bookkeeping resetting idle sweeps. The corrected pure sweep calculation skips that marker and preserves activity identity through all three ladder steps for proposed/in-progress/in-review tasks. Related suite12/0,80 assertions, typecheck and named mutation detection passed. Current covered-source stamps were reviewed again; final gates must cover this later correction.
|
|
71
|
+
|
|
72
|
+
Full gate at `6b54e974` passed 2632 tests, 0 failures and 188691 assertions in 425.22 s, with no invocation-owned daemon leaks and `check: OK`. Later review found a split-reason policy-reload privacy gap. The source now retains initial and final deterministic reason privacy, including the parent privacy boundary. The split suite passed 28 tests and 109 assertions; typecheck and a named mutation guard passed. Both policy-add and policy-remove cases preserve withheld history after later policy removal. Final gates remain required for this corrected source.
|
|
73
|
+
|
|
74
|
+
Import review identified CSV quote stripping in `gh --label` beyond the already-refused comma case. Quote-containing labels now fail before the reader is called. GitHub import suite: 7 pass, 0 fail, 39 assertions; typecheck and a named mutation probe passed. The parent split PR head is unchanged by this import correction. Final release gates remain required.
|
|
75
|
+
|
|
76
|
+
Full gate at `fb34d7aa` passed 2634 tests, 0 failures and 188704 assertions in 418.85 s, with no invocation-owned daemon leaks and `check: OK`. The Linux mutation gate then rejected an otherwise correct manager assertion because the fixture path contained the seed ID suffix `timeout`. Renaming that ID to `split-manager-unconfirmed-reply` preserves production code, assertions, mutation and classifier. The actual seededCheck runner, including its named-path checkout, hang watcher and process-leak checks, passed the selected green/mutated pair. Earlier lightweight focused runners had omitted the ID from their paths and could not reveal this diagnostic interaction.
|
|
77
|
+
|
|
78
|
+
A subsequent quiet-bookkeeping audit fixed ask evidence: both displayed last activity and note privacy now select the latest non-marker entry. Ask suite: 10 pass, 0 fail, 61 assertions; typecheck and the actual seededCheck runner mutation pair passed. The review of remaining direct latest-history reads distinguished immediate Board/transition return values from evidence selection. The unrelated release ancestry claim referenced306e272, while current GitHub/local395ff567 passed committed freshness and all14 ancestor checks; that thread was answered with exact-head evidence. Final gates remain required for this later ask correction.
|
|
79
|
+
|
|
80
|
+
Local full gate at `9bec0c04` passed 2635 tests, 0 failures and 188712 assertions in 410.10 s, with no invocation-owned daemon leaks and `check: OK`. Subsequent import review found that the final awaited staging operation could cross the total deadline yet return complete=true. The post-await deadline check now retains confirmed task IDs and reports partial=true/complete=false. Import task suite: 6 pass, 0 fail, 24 assertions; typecheck and actual seededCheck runner mutation proof passed. Final CI must cover this later correction.
|
|
81
|
+
|
|
82
|
+
Post-insert import recovery now retains confirmed IDs after later bookkeeping errors and preserves the planner Backlog notice. A failed canonical identity readback remains unconfirmed. Import task suite: 8 pass, 0 fail, 34 assertions; typecheck and three actual seededCheck runner guard pairs passed (7.051 s). PR #364 merged as `21ec2cf0` from reviewed `dbf3015b` after both platform checks, 352 guards, resolved reviews and a separate merge fence. Whole-tree equality and root main fast-forward were verified; its owned worktree and local/remote branch were removed. Final downstream CI remains required.
|
|
83
|
+
|
|
84
|
+
A follow-up import audit reproduced loss of earlier confirmed IDs when a later canonical lookup threw outside the per-issue catch. Moving lookup and profile preparation inside that failure boundary fixes the rejected-promise case. The new regression failed before the source fix, then the import task suite passed 9 tests and 37 assertions. Typecheck and four actual seededCheck runner guard pairs passed (9.393 s), covering deadline, post-write identity, planner notice and lookup progress.
|
|
85
|
+
|
|
86
|
+
Release audit projection was bounded after review identified repeated cross-release ID arrays and history scans. Task scope is grouped once, approval dates are read once per task, sorted date indexes give exact counts, and each category previews at most32 IDs. Dashboard task-state lookup is shared across release cards, and rendered truncation text includes exact totals. Board/DOM suites21/0,88 assertions and typecheck passed before stack merge; four actual seededCheck guards verified cut/unknown semantics, preview size and history-read work. The16-release/96-task fixture verifies counts, own-scope exclusion and strict cut boundaries. Final merged-stack checks remain required.
|
|
87
|
+
|
|
88
|
+
A real DOM update-cache regression reproduced stale blocked counts when an outside prerequisite became approved without changing release rows. The refresh key now includes task states. The regression failed before the fix, then all12 source DOM tests passed (54 assertions); typecheck and the actual runner mutation guard passed. PR #365 merged as `ae334cd9` from `b2f0f720` after both platforms, 367 guards and a separate fresh fence. Whole-tree equality, root main fast-forward, child-base retarget and owned worktree/branch cleanup were verified.
|
|
89
|
+
|
|
90
|
+
The older macOS run at `bead65d5` failed the crash-recovery fixture after observing the Kimi report but before the following Claude report was appended. The production recovery loop reports both recorded peers; the owner-approved fixture now waits for both exact reports before retaining all original assertions and the existing bounded wait. Focused recovery: 1 pass, 0 fail, 15 assertions; typecheck passed. No production recovery or identity policy changed.
|
|
91
|
+
|
|
92
|
+
## Post-merge tag preflight
|
|
93
|
+
|
|
94
|
+
Release PR #376 merged as `230833b4ef9df745552f292ffd6965e4b261ce24`; its full tree equals verified head `7568c395`. The pre-tag committed documentation gate then reported four stale entries (adapters, daemon, tasks and security). Their covered source trees are byte-identical to their previous stamps, but Git path-history simplification in the merged graph includes previously reviewed merge commits `65583963`, `f4555ce0`, `810fee78` and `bc8a215b`. The four documents were rechecked against the merged source and restamped to `230833b4`. No checker, covered scope, production source or assertion changed. The tag remains withheld until the corrective PR passes the full gates and its merge passes the pre-tag checks.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Project board phone-width source fixture verification
|
|
2
|
+
|
|
3
|
+
Source: 6d311a51dccd41d3703079175cac65a487189b15. This is source-fixture evidence, not an installed/native/account run. No byte-identity claim is made for later candidates; any later UI or rendering change requires current evidence.
|
|
4
|
+
|
|
5
|
+
The actual loopback startDashboard implementation served synthetic task, peer, release and guidance data through its normal ticket/session/CSP path. Its action callback refused production changes. The explicitly approved refresh used only Ego Space 44. That same space was retained after finding date-control clipping, then reused for the source fix and finished exactly once after successful visual review. The fixture server exited and ready.json was removed.
|
|
6
|
+
|
|
7
|
+
At 1440x1000 and 390x844 (light and dark), document width equalled viewport width; all five column headings and six cards were present. Role and release guidance appeared in accessible card names. Tab from the first card reached Pull into To Do. All nine PNG contents were viewed for readable layout and controls.
|
|
8
|
+
|
|
9
|
+
The earlier c37a9aeb capture exposed clipping despite document width 390: release-cut ended at x434 outside its panel. At phone width, split form grids now use one column. Every visible split form control stays within the panel; the release date controls span x37..353 within panel x18..372. Both themes show complete date text and calendar buttons. The release-cut unknown text wraps visibly. Pending WIP editors show 2, 0 and inheritance as an empty input; pressing Save sends tasks.wip_limits.codex=2 to the refusing fixture callback.
|
|
10
|
+
|
|
11
|
+
## Captures
|
|
12
|
+
|
|
13
|
+
- board-1440-light.png: SHA256 8345fb637ab467af6a649da5ea61c48c466181de4fd6147b8bd7425289cd5035.
|
|
14
|
+
- board-390-light.png: SHA256 00cd5685c2f57b64cd6208a9a3e8af6c6130b31a4ef59ba30e3c5aacad9c98fd.
|
|
15
|
+
- board-390-dark.png: SHA256 d99603964afaedb7846fa134cbb2de58bc4b2d3bfa0c11819cf171ea72e0228c.
|
|
16
|
+
- release-390-light.png: SHA256 49983dc8c536c9ea070ca7440691b0c9b080dcef085f9d65513181b92f484895.
|
|
17
|
+
- release-390-dark.png: SHA256 59ce16d7a7e61b15e868f77d9db90a60dfbfdf23cdb4c9d6bf874082130ff4c5.
|
|
18
|
+
- dates-390-light.png: SHA256 22f9e1a57b6902fde7019cdcbd9bd8e9ff38b3d10c009b48fc54108a7c17a3c9.
|
|
19
|
+
- dates-390-dark.png: SHA256 97e6e4dec27975034333e72226179bfdbf548850c08ff803b87191bb8dc2fc77.
|
|
20
|
+
- settings-390-light.png: SHA256 04a0eb0f0134f3fa582f7f694f700fd51d21a8873eb8e29bfbb74a3f5900e122.
|
|
21
|
+
- settings-390-dark.png: SHA256 8e7a8b44ce73cce8751b34a7e86464f45bba77ebdcf8dc009ab1ca3cae3c256c.
|
|
22
|
+
|
|
23
|
+
## Historical scope
|
|
24
|
+
|
|
25
|
+
The 1bbced04/Space 39 captures establish only their original source-fixture result. They do not establish later pending-WIP or release-cut rendering. The earlier broader byte-identity statement is withdrawn; this refresh supplies current evidence for the source named above.
|
|
26
|
+
|
|
27
|
+
Native planner grooming across two releases, real-account import, model ingestion, measured effects, native terminal glyph width and tmux remain unverified. Browser theme changed only through the fixture page dataset; no shared theme cookie was written.
|
|
28
|
+
|
|
29
|
+
## Later audit preview text
|
|
30
|
+
|
|
31
|
+
A later rendering change bounds release audit examples and adds exact-total text such as showing32 of96. Current DOM tests verify both known and unknown audit labels and totals. The phone layout styles are unchanged, but the PNGs above predate this suffix and do not constitute a new visual capture of truncated audit content.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Fsmonitor fixture attribution (#369)
|
|
2
|
+
|
|
3
|
+
## Evidence
|
|
4
|
+
|
|
5
|
+
- Failed macOS run: [38340462476](https://github.com/STAIxBWLB/agent-hub/actions/runs/38340462476). The original full-gate failure and diagnostic replay 20 are retained separately from the 19 passing replays.
|
|
6
|
+
- Artifact: `docs-git-diagnostics-0addbb4290934a59299c3e66144445567a4462f9`, `git-20.jsonl` and `test-20.log`. Versions: Git 2.55.0, Bun 1.4.2, Node 22.23.2.
|
|
7
|
+
- The marker writer is a descendant of fixture `commit -qm "Record reviewed documentation"`, through detached auto maintenance, repack, and pack-objects with `--indexed-objects`. Root trace SID: `20261013T031954.147942Z-H0482c2ec-P000098b4`.
|
|
8
|
+
- The fixture configured the trap at 03:19:54.169372 UTC. Pack-objects started at 03:19:54.178275 and spawned the trap at 03:19:54.179892. The checker first Git invocation started at 03:19:54.215564 with `core.fsmonitor=false`. The only trap invocation belongs to fixture maintenance, before checker startup.
|
|
9
|
+
|
|
10
|
+
## Correction
|
|
11
|
+
|
|
12
|
+
- The owner approved the exact fixture exception: add `-c maintenance.auto=false -c gc.auto=0` to fixture Git invocations. This prevents fixture-owned detached jobs from crossing the checker observation window.
|
|
13
|
+
- All original assertions, the planted trap, production checker behavior, and user Git configuration remain unchanged. No unrelated process was stopped.
|
|
14
|
+
- A new deterministic regression traces fixture commits with aggressive repository-local gc settings and requires no maintenance child. Explicit pack controls prove `core.fsmonitor=false` keeps the marker absent and the enabled trap writes it.
|
|
15
|
+
|
|
16
|
+
## Verification
|
|
17
|
+
|
|
18
|
+
- Actual local document-check suite: 14 pass, 0 fail, 72 assertions, including the new regression and both controls.
|
|
19
|
+
- Exact final-head Linux/macOS/full seeded gates and current-head review remain required before issue closure. Earlier passing runs are not a correction receipt. No native deployment is claimed by this report.
|
package/docs/verified.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"documents": {
|
|
4
4
|
"README.md": {
|
|
5
|
-
"verifiedAgainst": "
|
|
5
|
+
"verifiedAgainst": "22993206f309720e714cbd7c045aadaef9ac9ba1",
|
|
6
6
|
"paths": [
|
|
7
7
|
"package.json",
|
|
8
8
|
"src/",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"docs/security.md": {
|
|
14
|
-
"verifiedAgainst": "
|
|
14
|
+
"verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
|
|
15
15
|
"paths": [
|
|
16
16
|
"src/",
|
|
17
17
|
"templates/"
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"docs/operations.md": {
|
|
21
|
-
"verifiedAgainst": "
|
|
21
|
+
"verifiedAgainst": "22993206f309720e714cbd7c045aadaef9ac9ba1",
|
|
22
22
|
"paths": [
|
|
23
23
|
"package.json",
|
|
24
24
|
"src/",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
37
|
"docs/quickstart.md": {
|
|
38
|
-
"verifiedAgainst": "
|
|
38
|
+
"verifiedAgainst": "22993206f309720e714cbd7c045aadaef9ac9ba1",
|
|
39
39
|
"paths": [
|
|
40
40
|
"package.json",
|
|
41
41
|
"src/",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"docs/agent-notes/adapters.md": {
|
|
46
|
-
"verifiedAgainst": "
|
|
46
|
+
"verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
|
|
47
47
|
"paths": [
|
|
48
48
|
"src/adapters/",
|
|
49
49
|
"src/pi/",
|
|
@@ -56,11 +56,13 @@
|
|
|
56
56
|
"src/hub/permission-mode.ts",
|
|
57
57
|
"src/hub/tool-refusal.ts",
|
|
58
58
|
"src/cli/identity.ts",
|
|
59
|
-
"src/local/tools.ts"
|
|
59
|
+
"src/local/tools.ts",
|
|
60
|
+
"src/hub/start-mode.ts",
|
|
61
|
+
"src/hub/terminal-open.ts"
|
|
60
62
|
]
|
|
61
63
|
},
|
|
62
64
|
"docs/agent-notes/benchmarks.md": {
|
|
63
|
-
"verifiedAgainst": "
|
|
65
|
+
"verifiedAgainst": "042c440e23452d62b5aaaf86330431fe0b16baba",
|
|
64
66
|
"paths": [
|
|
65
67
|
"scripts/benchmarks/",
|
|
66
68
|
"test/benchmarks/",
|
|
@@ -72,7 +74,7 @@
|
|
|
72
74
|
]
|
|
73
75
|
},
|
|
74
76
|
"docs/agent-notes/budget.md": {
|
|
75
|
-
"verifiedAgainst": "
|
|
77
|
+
"verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
|
|
76
78
|
"paths": [
|
|
77
79
|
"src/hub/budget.ts",
|
|
78
80
|
"src/cli/statusline-tee.ts",
|
|
@@ -84,7 +86,7 @@
|
|
|
84
86
|
]
|
|
85
87
|
},
|
|
86
88
|
"docs/agent-notes/bus.md": {
|
|
87
|
-
"verifiedAgainst": "
|
|
89
|
+
"verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
|
|
88
90
|
"paths": [
|
|
89
91
|
"src/hub/bus.ts",
|
|
90
92
|
"src/hub/envelope.ts",
|
|
@@ -96,7 +98,7 @@
|
|
|
96
98
|
]
|
|
97
99
|
},
|
|
98
100
|
"docs/agent-notes/daemon.md": {
|
|
99
|
-
"verifiedAgainst": "
|
|
101
|
+
"verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
|
|
100
102
|
"paths": [
|
|
101
103
|
"src/hub/daemon.ts",
|
|
102
104
|
"src/hub/control-client.ts",
|
|
@@ -123,21 +125,28 @@
|
|
|
123
125
|
"src/cli/main.ts",
|
|
124
126
|
"src/cli/launch.ts",
|
|
125
127
|
"src/hub/child-process.ts",
|
|
126
|
-
"src/hub/bus.ts"
|
|
128
|
+
"src/hub/bus.ts",
|
|
129
|
+
"src/hub/ui.ts",
|
|
130
|
+
"src/hub/settings.ts",
|
|
131
|
+
"src/hub/start-mode.ts",
|
|
132
|
+
"src/hub/terminal-open.ts",
|
|
133
|
+
"src/hub/recovery-error.ts",
|
|
134
|
+
"src/hub/db-timeout.ts"
|
|
127
135
|
]
|
|
128
136
|
},
|
|
129
137
|
"docs/agent-notes/local-worker.md": {
|
|
130
|
-
"verifiedAgainst": "
|
|
138
|
+
"verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
|
|
131
139
|
"paths": [
|
|
132
140
|
"src/adapters/local-worker.ts",
|
|
133
141
|
"src/local/",
|
|
134
142
|
"src/memory/capture.ts",
|
|
135
143
|
"src/hub/facts.ts",
|
|
136
|
-
"src/hub/permission-mode.ts"
|
|
144
|
+
"src/hub/permission-mode.ts",
|
|
145
|
+
"src/hub/git.ts"
|
|
137
146
|
]
|
|
138
147
|
},
|
|
139
148
|
"docs/agent-notes/models.md": {
|
|
140
|
-
"verifiedAgainst": "
|
|
149
|
+
"verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
|
|
141
150
|
"paths": [
|
|
142
151
|
"src/models/",
|
|
143
152
|
"src/hub/inference.ts",
|
|
@@ -146,7 +155,7 @@
|
|
|
146
155
|
]
|
|
147
156
|
},
|
|
148
157
|
"docs/agent-notes/tasks.md": {
|
|
149
|
-
"verifiedAgainst": "
|
|
158
|
+
"verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
|
|
150
159
|
"paths": [
|
|
151
160
|
"src/hub/tasks.ts",
|
|
152
161
|
"src/hub/board.ts",
|
|
@@ -163,7 +172,7 @@
|
|
|
163
172
|
]
|
|
164
173
|
},
|
|
165
174
|
"docs/agent-notes/tests.md": {
|
|
166
|
-
"verifiedAgainst": "
|
|
175
|
+
"verifiedAgainst": "8ffd8babb35b5970c881f81babe951ed70d3f387",
|
|
167
176
|
"paths": [
|
|
168
177
|
"test/",
|
|
169
178
|
"scripts/check.sh",
|
|
@@ -180,6 +189,15 @@
|
|
|
180
189
|
"src/models/mlx.ts",
|
|
181
190
|
"src/cli/upgrade-interactive.ts"
|
|
182
191
|
]
|
|
192
|
+
},
|
|
193
|
+
"docs/agent-notes/README.md": {
|
|
194
|
+
"verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
|
|
195
|
+
"paths": [
|
|
196
|
+
"src/cli/console-state.ts",
|
|
197
|
+
"src/cli/attention.ts",
|
|
198
|
+
"test/console-attention.test.ts",
|
|
199
|
+
"docs/agent-notes/daemon.md"
|
|
200
|
+
]
|
|
183
201
|
}
|
|
184
202
|
}
|
|
185
203
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@staix/agent-hub",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.24",
|
|
4
4
|
"description": "Native multi-agent hub: Claude Code, Codex, Kimi Code, Pi and local inference as peers in one project",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"src",
|
|
27
27
|
"plugins",
|
|
28
28
|
"templates",
|
|
29
|
+
"scripts/check-docs.mjs",
|
|
29
30
|
"docs",
|
|
30
31
|
"README.md",
|
|
31
32
|
"LICENSE",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-hub",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.24",
|
|
4
4
|
"description": "Channel between Claude Code and the agent-hub daemon: peer messages from Codex, Kimi and the local worker arrive as channel events; hub_send replies.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Young Joon Lee",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Role catalog attribution
|
|
2
|
+
|
|
3
|
+
Selected role guidance is adapted from msitarzewski/agency-agents at f99f6aa910a442b0197b768ce0ea7751e35e2060. Each adapted definition names its upstream path. The other three research definitions are original agent-hub guidance. Upstream persona, code samples and autonomy claims are excluded.
|
|
4
|
+
|
|
5
|
+
MIT License
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2025 AgentLand Contributors
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in all
|
|
17
|
+
copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
|
+
SOFTWARE.
|
|
26
|
+
|