Merge feature/orchestrator/s52-night-per-agent into master

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/requirements/001-agent-orchestrator.md
#	orchestrator/kvb_orchestrator/view.py
#	orchestrator/templates/page-board.js
#	tests/test_hub_state.py
This commit is contained in:
Kevin Veen-Birkenbach committed 2026-11-11 07:53:40 +00:00
commit c3ab6b7e18
18 files changed
+408 -64

No files matched your search

@@ -362,6 +362,15 @@ from three views down to any agent, branch or artefact.
no passkey. Rejected: hub-wide settings with a signature.
64. **3D faces**: agent nodes in the 3D view show their face, on by default
and switchable; repositories and branches stay spheres.
65. **Day/Night per agent** (operator 2026-11-10, decisions 65 and 66): the
Day/Night menu lists "All" and one checkbox per claimed agent. All ticked
runs the global drain, suspend or resume as before; a subset runs it only
for the ticked sessions (`night.py --target`), the passkey signs the
board item with those sessions, and the radio call reaches only them.
Rejected: a second menu for single agents.
66. **Agent panel Day/Night**: every agent panel shows the agent's part and,
for a claimed agent, Drain, Suspend and Resume for that agent alone, by
day too. Rejected: single-agent parts only during a night.
## Approach
@@ -826,6 +835,20 @@ flowchart TD
- [ ] `make orchestrator-install` enables `kvb-orchestrator-sessions.timer`,
and `make orchestrator-check` reports it active.
### Phase 6: Day/Night per agent (S5.2)
- [ ] `night.py drain|suspend|resume --target=<id>` sets and lifts one
session's part by day and during a mode, and `night.py status` prints
it as the `you:` line (`tests/test_night.py`).
- [ ] The Day/Night menu lists "All" and one checkbox per claimed agent; all
ticked sends the unchanged board item, a subset signs and runs only for
the ticked sessions, and none ticked disables the three buttons.
- [ ] A proof for one set of agents is refused for another set and for all,
and an unclaimed session is refused before anything runs
(`tests/test_hub_board.py`).
- [ ] Every agent panel shows the agent's part and Drain, Suspend and Resume
for that agent alone.
### Tests
- **Unit**
@@ -857,6 +880,9 @@ flowchart TD
receipts, a session without a record; the host client's snapshot
from fixture session files with a reused pid; a stale or malformed
snapshot read as absent.
- [ ] S5.2: night.py targets by day and during a mode, the signed board
item with agents (forged set, unclaimed session), the parts in the
state.
- **Integration**
- [ ] Two scratch sessions exchange `post` and `call` through the real hook
entry points (JSON on stdin): the post appears only on the callee's
@@ -892,3 +918,6 @@ flowchart TD
- [ ] S5.3: state symbols in every Agents view and the panel, the Status
menu toggles through a reload, 3D faces on and off, in Chromium and
Firefox at 1920, 1366 and 390 px.
- [ ] S5.2: agent checkboxes in the Day/Night menu and the agent panel's
buttons, signed in Chromium and refused unsigned in Firefox, each at
1920, 1366 and 390 px.