feat: add fail-closed Local Delegation to Cairn (signals-dashboard 0.3.0) (#2666)

* feat: add fail-closed Local Delegation to Cairn dashboard

Port the-workshop Local Delegation seam into signals-dashboard 0.3.0.
Orthogonal off/on control beside repo/connected profiles; enable only when
local-agent-delegation is installed and a qualified route receipt is present.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: address Local Delegation review (skill path + README catalog)

- Walk marketplace/plugin and _direct install roots for local-agent-delegation
- Update plugins/signals-dashboard README and regenerate docs/README.plugins.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: keep Local Delegation Windows launches from reparsing -i prompt

Long LD orientation text split under wt/cmd on Windows (0x80070002). Keep
-i short/quote-free; rely on WORKSHOP_LOCAL_DELEGATION=enabled (+ skill)
for policy. Add charset/length guard tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: surface Local Delegation effective state on open toast and badge

Keep -i short with one optional ASCII line. Show operators
"Local Delegation effective · route <id>" on open and in the summary control.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: address Local Delegation GHCP review comments

- Cross-platform path.join in receipt fixture
- Atomic .local-delegation.json write (no symlink follow)
- Case-insensitive WORKSHOP_LOCAL_DELEGATION env clear
- Windows Terminal: set/clear env via cmd before agent
- aria-pressed on Local toggle

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: store Local Delegation preference user-locally, not in the workshop repo

A cloned workshop must not be able to ship preference:on. Key operator intent
under ~/.copilot/workshop-local-delegation/ by canonical workshop path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: preserve path case in Local Delegation preference key

Lowercasing collided distinct workshops on case-sensitive filesystems.
Normalize separators only; realpath already supplies a stable path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: allow parentheses in quoted Windows Local Delegation launches

Args are quote-wrapped; only block % and ! expanders inside quotes so paths
like C:\Work\Project (1) still launch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

* fix: apply quoted-arg Windows safety guard in launch path

Complete the parentheses fix: use isSafeQuotedWindowsCmdArg for cmdSafe.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750

---------

Co-authored-by: Jenny Ferries <jenny.ferries@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Michael Recachinas <mrecachinas@github.com>
Copilot-Session: c39b7696-c854-40c2-b2d6-cce84ba09750
This commit is contained in:
jennyf19
2026-08-16 22:42:37 -07:00
committed by GitHub
parent 5af5c28fbb
commit 5163dc2e4d
12 changed files with 1129 additions and 59 deletions
+15 -3
View File
@@ -1,15 +1,27 @@
# Signals Dashboard Plugin
Real-time Workshop dashboard with agent signals, honesty calibration, and cost-aware repo or connected desk launch profiles.
Real-time Workshop dashboard with agent signals, honesty calibration, cost-aware
desk profiles (`repo` / `connected`), and fail-closed Local Delegation.
## Installation
``bash
```bash
copilot plugin install signals-dashboard@awesome-copilot
``
```
## Features
- Live desk signals, score bars, patterns, and escalations
- Cost-aware **open** (repo) and **connected** desk launch profiles
- **Local Delegation** toggle: when available, the frontier desk may use the
installed `local-agent-delegation` skill for bounded read/evidence work
- Fail-closed availability (skill + qualified route receipt); no silent savings credit
## Source
Canonical implementation: [jennyf19/the-workshop](https://github.com/jennyf19/the-workshop).
Local worker runtime: [jennyf19/sealed-delegation](https://github.com/jennyf19/sealed-delegation).
This plugin is part of [Awesome Copilot](https://github.com/github/awesome-copilot).
## License
+4 -3
View File
@@ -1,7 +1,7 @@
{
"name": "signals-dashboard",
"description": "Real-time Workshop dashboard with agent signals, honesty calibration, and cost-aware repo or connected desk launch profiles.",
"version": "0.2.0",
"description": "Real-time Workshop dashboard with agent signals, honesty calibration, cost-aware desk profiles, and fail-closed Local Delegation.",
"version": "0.3.0",
"author": {
"name": "jennyf19",
"url": "https://github.com/jennyf19"
@@ -11,7 +11,8 @@
"dashboard",
"multi-agent",
"coordination",
"canvas"
"canvas",
"local-delegation"
],
"extensions": {
"com.github.copilot": {
+7
View File
@@ -45,6 +45,13 @@ Each desk card has two launch choices:
- **connected** — the full configured tool surface for work that needs external
systems such as issue trackers, mail, or service APIs.
The summary bar also has a **Local** toggle. It is orthogonal to repo/connected:
when available and on, the frontier desk may use
[Sealed Delegation](https://github.com/jennyf19/sealed-delegation)'s
`local-agent-delegation` skill for bounded read/evidence work. Availability is
fail-closed (installed skill + qualified route receipt). Local output is a
proposal and never earns savings credit on its own.
Set `WORKSHOP_DESK_PROFILE=connected` to make the main **open** button use the
full tool surface; in that mode the separate **connected** button is omitted.