Boardstate's downstream deployments evolved after extraction: OpenClaw's in-tree Workspaces gained post-vendoring PRs (#101792 charts, #101354 secure preview, #101826 agent status + decisions, #109627 full-bleed tabs, community fix #108204) and the Hermes plugin shipped v1.0→v1.4 (operational-layer hardening + fixes). A systematic audit (every downstream change classified against library source; each backport claim independently adversarially verified with file:line citations) found 21 confirmed backports. This epic tracks them.
Security / trust boundary
Correctness
Features / parity
Verified NOT needing backport
Already upstream (often richer than downstream): full-bleed single-widget tabs; builtin:agent-status; the pending-approval queue/decision flow; sparkline + detail mode (OC's vendored sparkline is a no-op fall-through — the library is ahead there); preview core (URL gate/sandbox/viewports); event-driven binding invalidation. Platform-specific by design: Hermes' color(srgb) token mapping, operator-secret split, embed-policy wiring, tokenized asset route; OC's sandbox-ceiling tier, gateway RPC params. OC's six post-vendoring refactor/tooling commits contain no hidden behavior fixes.
Suggested trains: T1 security (S1-S6), T2 correctness (B1-B9), T3 parity (F1-F8) — one changeset release each.
Boardstate's downstream deployments evolved after extraction: OpenClaw's in-tree Workspaces gained post-vendoring PRs (#101792 charts, #101354 secure preview, #101826 agent status + decisions, #109627 full-bleed tabs, community fix #108204) and the Hermes plugin shipped v1.0→v1.4 (operational-layer hardening + fixes). A systematic audit (every downstream change classified against library source; each backport claim independently adversarially verified with file:line citations) found 21 confirmed backports. This epic tracks them.
Security / trust boundary
BrokerToolErrorand connection errors propagate rawerror.message(packages/broker/src/broker.ts:295,:239); spawn/HTTP failures embed commands/URLs. Port the Hermes plugin's redaction (config command/url/args/env values + nonce, longest-first, length-agnostic) into the broker error path.packages/server/src/broker-agent-tools.ts:236); a connector can swap a tool between assembly and execute. Re-verify the grant'stoolsHashat invoke time on the direct-read path (mutations already re-check in the engine).workspace_replacecan mint a fabricatedpendingregistry entry for a name that was never scaffolded; validate registry entries against known scaffolds/installs.Correctness
loadWorkspace(no ordering guard inpackages/host/src/store.ts). Same race fixed downstream by community PR openclaw#108204 — port the newest-wins guard.nearestFreeSlotcan return an out-of-rangeythat schema validation then rejects (packages/core/src/grid.ts).normalizeSeries/resolveTypesilently coerce bad input to defaults (packages/core/src/transforms/chart.ts:43-64); port OC's 3-state model (empty/error/ready) +role="status"invalid placeholder + i18n key (openclaw#101792).capabilitiesRegistry. The wipe is legitimate document semantics, but nothing re-registers the connector-config-declared grants asrequestedafterward (the Hermes plugin needed a re-registration listener; template applies hit this).layout: "full"is absent fromvalidateTab.||fallback can emit an empty label (use??+ real fallback).Features / parity
props.min/props.max+ numerically-stable degenerate/extreme-range handling (libraryyScalecan hitInfinityat extreme finite values) — openclaw#101792.bindings.valueprecedence overprops.url) — openclaw#101354.aria-pressed/aria-label/:focus-visibleparity with the library's other pressed-state buttons.dashboard tabsfull/grid layout-toggle verbs (the schema + view already ship full-bleed).BOARDSTATE_STATE_DIRdouble-write today; the Hermes plugin's port-file adoption pattern is the reference).docs/connectors/officecli.md+examples/operational-demo/fake-officecli.mjsmodel fictional tools (read_workbook/generate_document); the realofficecli mcpexposes a singleofficeclitool taking{command}. Align docs + fixture (the Hermes plugin hit exactly this).Verified NOT needing backport
Already upstream (often richer than downstream): full-bleed single-widget tabs;
builtin:agent-status; the pending-approval queue/decision flow; sparkline + detail mode (OC's vendored sparkline is a no-op fall-through — the library is ahead there); preview core (URL gate/sandbox/viewports); event-driven binding invalidation. Platform-specific by design: Hermes' color(srgb) token mapping, operator-secret split, embed-policy wiring, tokenized asset route; OC's sandbox-ceiling tier, gateway RPC params. OC's six post-vendoring refactor/tooling commits contain no hidden behavior fixes.Suggested trains: T1 security (S1-S6), T2 correctness (B1-B9), T3 parity (F1-F8) — one changeset release each.