@staix/agent-hub 0.12.23 → 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.
Files changed (158) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +8 -3
  3. package/docs/addons/claude-mem.md +24 -0
  4. package/docs/addons/codex-plugin.md +8 -0
  5. package/docs/addons/dot-admit.md +8 -0
  6. package/docs/addons/open-code-review.md +8 -0
  7. package/docs/addons/ponytail.md +23 -0
  8. package/docs/addons/ripwire.md +22 -0
  9. package/docs/agent-notes/README.md +5 -0
  10. package/docs/agent-notes/adapters.md +8 -1
  11. package/docs/agent-notes/bus.md +3 -1
  12. package/docs/agent-notes/daemon.md +7 -1
  13. package/docs/agent-notes/local-worker.md +4 -2
  14. package/docs/agent-notes/tasks.md +4 -0
  15. package/docs/agent-notes/tests.md +2 -1
  16. package/docs/bench.md +28 -3
  17. package/docs/cooperbench.md +4 -0
  18. package/docs/data-policy.md +36 -0
  19. package/docs/events.md +3 -0
  20. package/docs/gsd-collaboration-analysis.md +48 -0
  21. package/docs/memory.md +231 -0
  22. package/docs/operations.md +651 -14
  23. package/docs/plans/2026-10-11-issues-109-sequential.md +81 -0
  24. package/docs/plans/2026-10-11-routing-evaluation-proposal.md +30 -0
  25. package/docs/profiles.md +57 -0
  26. package/docs/quickstart.md +1 -1
  27. package/docs/research.md +31 -1
  28. package/docs/roles.md +85 -0
  29. package/docs/sdlc.md +170 -0
  30. package/docs/security.md +111 -4
  31. package/docs/smoke.md +282 -0
  32. package/docs/specs/2026-09-19-agent-hub-design.md +601 -7
  33. package/docs/specs/2026-10-12-backlog-implementation-plan.md +186 -0
  34. package/docs/specs/2026-10-12-office-view-design.md +212 -0
  35. package/docs/text-projection.md +19 -0
  36. package/docs/verification/2026-10-11-acp-watch-t0.md +33 -0
  37. package/docs/verification/2026-10-11-agent-config-inventory.md +20 -0
  38. package/docs/verification/2026-10-11-jcode-peer-contract.md +27 -0
  39. package/docs/verification/2026-10-13-0.12.24.md +94 -0
  40. package/docs/verification/2026-10-13-board-phone.md +31 -0
  41. package/docs/verification/2026-10-13-fsmonitor-fixture-attribution.md +19 -0
  42. package/docs/verified.json +22 -13
  43. package/package.json +2 -1
  44. package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
  45. package/plugins/agent-hub/ROLE-NOTICE.md +26 -0
  46. package/plugins/agent-hub/server.js +1175 -339
  47. package/scripts/check-docs.mjs +129 -0
  48. package/src/adapters/acp.ts +112 -13
  49. package/src/adapters/claude-channel.ts +48 -11
  50. package/src/adapters/codex-appserver.ts +11 -0
  51. package/src/adapters/jcode.ts +110 -0
  52. package/src/adapters/local-worker.ts +10 -7
  53. package/src/adapters/pi.ts +94 -20
  54. package/src/cli/attention.ts +60 -0
  55. package/src/cli/bench.ts +24 -5
  56. package/src/cli/board-read.ts +12 -0
  57. package/src/cli/console-state.ts +103 -17
  58. package/src/cli/console.ts +54 -8
  59. package/src/cli/facts-hook.ts +12 -4
  60. package/src/cli/help.ts +35 -9
  61. package/src/cli/identity.ts +18 -7
  62. package/src/cli/init.ts +48 -10
  63. package/src/cli/jcode-mcp.ts +58 -0
  64. package/src/cli/kimi-mcp.ts +53 -0
  65. package/src/cli/launch.ts +16 -1
  66. package/src/cli/main.ts +392 -57
  67. package/src/cli/memory.ts +193 -0
  68. package/src/cli/output.ts +45 -4
  69. package/src/cli/pet-config.ts +1 -0
  70. package/src/cli/pet.ts +83 -0
  71. package/src/cli/preview.ts +38 -5
  72. package/src/cli/status-lines.ts +1 -1
  73. package/src/cli/tail-render.ts +1 -0
  74. package/src/cli/upgrade-runtime.ts +32 -3
  75. package/src/cli/watch.ts +31 -0
  76. package/src/hub/activity.ts +53 -0
  77. package/src/hub/ask.ts +10 -5
  78. package/src/hub/bench.ts +10 -3
  79. package/src/hub/board.ts +222 -16
  80. package/src/hub/bus.ts +48 -9
  81. package/src/hub/citations.ts +7 -0
  82. package/src/hub/conductor.ts +12 -7
  83. package/src/hub/config-trust.ts +4 -2
  84. package/src/hub/crash.ts +9 -0
  85. package/src/hub/daemon.ts +910 -120
  86. package/src/hub/delivery-journal.ts +5 -0
  87. package/src/hub/envelope.ts +1 -1
  88. package/src/hub/events.ts +12 -2
  89. package/src/hub/facts.ts +26 -7
  90. package/src/hub/git.ts +8 -2
  91. package/src/hub/github-import.ts +28 -0
  92. package/src/hub/hub-tools.ts +49 -10
  93. package/src/hub/inference.ts +1 -1
  94. package/src/hub/lifecycle-schema.ts +17 -0
  95. package/src/hub/listen.ts +15 -0
  96. package/src/hub/manager.ts +12 -5
  97. package/src/hub/path-policy.ts +96 -0
  98. package/src/hub/peer-catalog.ts +28 -0
  99. package/src/hub/permission-mode.ts +19 -5
  100. package/src/hub/planning.ts +70 -0
  101. package/src/hub/profiles.ts +74 -0
  102. package/src/hub/projected-diff.ts +73 -0
  103. package/src/hub/projection-exec.ts +24 -0
  104. package/src/hub/research.ts +144 -21
  105. package/src/hub/roles.ts +123 -0
  106. package/src/hub/roster.ts +23 -0
  107. package/src/hub/routing.ts +18 -5
  108. package/src/hub/sdlc-queue.ts +112 -0
  109. package/src/hub/sdlc-release.ts +125 -0
  110. package/src/hub/sdlc.ts +250 -0
  111. package/src/hub/settings.ts +34 -15
  112. package/src/hub/shipped-roles.ts +25 -0
  113. package/src/hub/snapshots.ts +89 -15
  114. package/src/hub/start-mode.ts +7 -5
  115. package/src/hub/supervision.ts +1 -0
  116. package/src/hub/task-sweep.ts +1 -1
  117. package/src/hub/tasks.ts +892 -87
  118. package/src/hub/text-projection.ts +126 -0
  119. package/src/hub/tooling.ts +159 -0
  120. package/src/hub/ui.ts +16 -2
  121. package/src/hub/workflow.ts +71 -0
  122. package/src/local/sandbox.ts +6 -4
  123. package/src/local/tools.ts +11 -6
  124. package/src/memory/brief.ts +28 -14
  125. package/src/memory/import.ts +55 -0
  126. package/src/memory/recall.ts +84 -0
  127. package/src/memory/store.ts +750 -0
  128. package/src/memory/sync.ts +145 -0
  129. package/src/pet/NOTICE.md +10 -0
  130. package/src/pet/characters.ts +1438 -0
  131. package/src/pet/config.ts +31 -0
  132. package/src/pet/frame.ts +17 -0
  133. package/src/pet/pixels.ts +28 -0
  134. package/src/role-text.d.ts +1 -0
  135. package/src/ui/index.html +842 -46
  136. package/src/ui/needs.ts +58 -0
  137. package/src/ui/office-model.ts +440 -0
  138. package/src/ui/peer-palette.ts +16 -0
  139. package/src/ui/task-board.ts +49 -0
  140. package/src/ui/task-progress.ts +5 -1
  141. package/templates/AGENTS.block.md +3 -2
  142. package/templates/config.json +5 -1
  143. package/templates/profiles/dev.json +22 -0
  144. package/templates/profiles/general.json +26 -0
  145. package/templates/profiles/research.json +57 -0
  146. package/templates/profiles/writing.json +28 -0
  147. package/templates/roles/NOTICE.md +26 -0
  148. package/templates/roles/dev/backend-engineer.md +26 -0
  149. package/templates/roles/dev/code-reviewer.md +26 -0
  150. package/templates/roles/dev/frontend-engineer.md +26 -0
  151. package/templates/roles/dev/security-reviewer.md +26 -0
  152. package/templates/roles/dev/software-architect.md +26 -0
  153. package/templates/roles/dev/test-engineer.md +26 -0
  154. package/templates/roles/research/analyst.md +26 -0
  155. package/templates/roles/research/fact-checker.md +26 -0
  156. package/templates/roles/research/research-lead.md +26 -0
  157. package/templates/roles/research/researcher.md +26 -0
  158. package/templates/roles/research/statistician.md +26 -0
@@ -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.
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "documents": {
4
4
  "README.md": {
5
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
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": "e3313ddb1673edc91fb567793e42723d441e53f2",
14
+ "verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
15
15
  "paths": [
16
16
  "src/",
17
17
  "templates/"
18
18
  ]
19
19
  },
20
20
  "docs/operations.md": {
21
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
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": "e3313ddb1673edc91fb567793e42723d441e53f2",
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": "e3313ddb1673edc91fb567793e42723d441e53f2",
46
+ "verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
47
47
  "paths": [
48
48
  "src/adapters/",
49
49
  "src/pi/",
@@ -62,7 +62,7 @@
62
62
  ]
63
63
  },
64
64
  "docs/agent-notes/benchmarks.md": {
65
- "verifiedAgainst": "88d49207d57a43e8beed8dbf95ad4a0283495b43",
65
+ "verifiedAgainst": "042c440e23452d62b5aaaf86330431fe0b16baba",
66
66
  "paths": [
67
67
  "scripts/benchmarks/",
68
68
  "test/benchmarks/",
@@ -74,7 +74,7 @@
74
74
  ]
75
75
  },
76
76
  "docs/agent-notes/budget.md": {
77
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
77
+ "verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
78
78
  "paths": [
79
79
  "src/hub/budget.ts",
80
80
  "src/cli/statusline-tee.ts",
@@ -86,7 +86,7 @@
86
86
  ]
87
87
  },
88
88
  "docs/agent-notes/bus.md": {
89
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
89
+ "verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
90
90
  "paths": [
91
91
  "src/hub/bus.ts",
92
92
  "src/hub/envelope.ts",
@@ -98,7 +98,7 @@
98
98
  ]
99
99
  },
100
100
  "docs/agent-notes/daemon.md": {
101
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
101
+ "verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
102
102
  "paths": [
103
103
  "src/hub/daemon.ts",
104
104
  "src/hub/control-client.ts",
@@ -135,7 +135,7 @@
135
135
  ]
136
136
  },
137
137
  "docs/agent-notes/local-worker.md": {
138
- "verifiedAgainst": "88d49207d57a43e8beed8dbf95ad4a0283495b43",
138
+ "verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
139
139
  "paths": [
140
140
  "src/adapters/local-worker.ts",
141
141
  "src/local/",
@@ -146,7 +146,7 @@
146
146
  ]
147
147
  },
148
148
  "docs/agent-notes/models.md": {
149
- "verifiedAgainst": "88d49207d57a43e8beed8dbf95ad4a0283495b43",
149
+ "verifiedAgainst": "6dcc7fe00c38f13613bcf53524fa3d1527a708e5",
150
150
  "paths": [
151
151
  "src/models/",
152
152
  "src/hub/inference.ts",
@@ -155,7 +155,7 @@
155
155
  ]
156
156
  },
157
157
  "docs/agent-notes/tasks.md": {
158
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
158
+ "verifiedAgainst": "230833b4ef9df745552f292ffd6965e4b261ce24",
159
159
  "paths": [
160
160
  "src/hub/tasks.ts",
161
161
  "src/hub/board.ts",
@@ -172,7 +172,7 @@
172
172
  ]
173
173
  },
174
174
  "docs/agent-notes/tests.md": {
175
- "verifiedAgainst": "e3313ddb1673edc91fb567793e42723d441e53f2",
175
+ "verifiedAgainst": "8ffd8babb35b5970c881f81babe951ed70d3f387",
176
176
  "paths": [
177
177
  "test/",
178
178
  "scripts/check.sh",
@@ -189,6 +189,15 @@
189
189
  "src/models/mlx.ts",
190
190
  "src/cli/upgrade-interactive.ts"
191
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
+ ]
192
201
  }
193
202
  }
194
203
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@staix/agent-hub",
3
- "version": "0.12.23",
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.23",
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
+