Commit Graph
306 Commits
Author SHA1 Message Date
Kevin Veen-BirkenbachandClaude Opus 5.5 c8b2e586de fix(orchestrator): hub gate view reads recorded parents through gates.opened
W5 moved recorded parents into a journal that gates.opened() loads into a TEMP table; the W3 hub opened gates.db raw, so parents_of() raised and the gate view stayed empty. opened() and journal() take the kept directory explicitly (CLI: watch.KEPT, hub: its /kept mount), opened() closes the connection when setup raises, and the W3 tests use opened() plus a test for a parent from the kept journal.

🎯 Fix: 95 %
💥 Break: 3 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 92
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 18:07:17 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 c4b67bb639 Merge feature/radio-set into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:28:13 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 e349198b7f Merge chore/requirement-001-audit into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:28:12 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 39ffb1d45e Merge chore/skills-test-efficiency into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:28:11 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 7036488766 fix(orchestrator): name kvb-git-gc for worktree-held branches
The pkgmgr wrappers replay renamed kvb-git-branch-gc: branch cleanup outside worktrees is now kvb-git-branch-cleanup, and removing merged branches with their worktrees is kvb-git-gc. The hub's held-by-worktree hint, the cleanup dialog and its test now name kvb-git-gc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:28:10 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 8c5c0b118e Merge feature/kvb-git-pkgmgr-wrappers-replay into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:26:39 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 04715f89e3 Merge feature/kvb-code-clean/comments into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:26:39 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 515fe61009 Merge feature/workbench-w4-resources into unify/skills-20261112
Conflicts combined W1 (Inbox leaves the Stream for Tasks, Waits on Operator) with W4 (Resources tab): five tabs with Resources, Stream keeps only the Firewall, the inbox hash keeps its redirect; index.html.j2 includes both diffs.js and resources.js.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:26:29 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 f5b2352f19 Merge feature/workbench-w3-artifacts into unify/skills-20261112
Conflicts kept both sides: runner.py docstring (W2 board changes and W3 gate changes), signing.py constants (W2 STATUSES and W3 GATE_*), index.html.j2 styles (W1 diff and W3 ancestry).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:24:59 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 9d6b3d26bf Merge feature/workbench-w2-kanban-forecast into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:41 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 eb4a335984 Merge feature/workbench-w1-operator-tasks into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:36 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 9a18853f65 Merge fix/orchestrator-e2e-unify-regressions into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:31 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 51fa40a30c Merge fix/orchestrator-refresh-held-by-selection into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:30 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 09762154c3 Merge fix/orchestrator-hub-cpu-cap into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:29 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 f7c585d56e Merge feature/workbench-w5-gates-receipts into unify/skills-20261112
Conflict in queue.py cmd_hold: kept the light-footprint aliases and per-kind stats, added W5's gated() call; W5's qualified() signature is gone and was unused below.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:23:19 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 545e1feaa1 Merge fix/kvb-org-queue-light-footprint into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:19:41 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 03974191e6 Merge fix/kvb-org-queue-reload-config into unify/skills-20261112
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:19:34 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 8711c23a39 docs(requirements): add 004 radio set
The Agent Orchestrator radio as a minimalist marine VHF set: a server CPU gate for speech, a WebAudio noise burst, modes Auto, Quiet and Silence, procedure words that always sound, every radio setting in the panel and a log with Sent, Received and All plus filters. Operator decisions 2026-11-12.

🎯 Fix: 95 %
💥 Break: 1 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 94
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:19:16 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 95337d9d54 docs(requirements): audit 001 against the shipped orchestrator
Ticks the 001 acceptance criteria the shipped code proves and rewords the ones whose mechanism changed.

🎯 Fix: 95 %
💥 Break: 1 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 94
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:18:50 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 6540e4e4f1 perf(kvb-check-security): cache findings and bound scan workers
security.py caches findings for 24 h, keyed by content, mode, the medusa binary, PATH and MEDUSA_ variables, in an owner-only directory, and runs medusa with min(files, 4) workers. Committed below the bar on the operator's word 2026-11-12 (one gate after the merge): test_security 14 green, the before-and-after measurement never ran; the GOMAXPROCS cap stays unstaged.

🎯 Fix: 70 %
💥 Break: 10 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 95 %
🏆 Score: 60
🚦 Gate: ⛔ fix 70 % < 90, break 10 % > 5; security 95 % < 100: ask the operator before the commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:18:08 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 59d9e29bcb fix(kvb-org-queue): book light jobs by their own footprint
Light single-file runs booked about 17 % RAM and 5 GB learned from heavy runs under a polluted signature. Each entry now stores its aliases, freezes its footprint at grant and learns per signature and kind; heavy kinds book at least the old pooled share, and a job keeps its own learned disk need when the old pool is empty. Hooks take the payload cwd and fall back to the old rule when it is unknown or malformed. Six skill docs now agree on what self-admits. test_queue 70, test_watch 46 and test_operator 30 green with negative controls; two independent reviews.

🎯 Fix: 90 %
💥 Break: 5 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 86
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:17:38 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 8a44d504b5 feat(kvb-check-gate): W5 gate receipts, hooks and queue after-wait
gates.py installs hooks that check the merge level before a push without writing git config, writes receipts from green queue gates, and the queue gains the after-wait and rank. Requirement 003 strikes the hook-enforcement criterion: agents keep --no-verify, hooks bind humans and CI. Committed below the bar on the operator's word 2026-11-12 (one gate after the merge): test_gates 15, test_queue 63 and test_watch 46 green, security 100 %, break risk 6 % for the live queue and hook change.

🎯 Fix: 90 %
💥 Break: 6 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 85
🚦 Gate: ⛔ break 6 % > 5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:16:22 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 35c270e120 feat(orchestrator): W4 resources view and host samples
A resources timer samples host CPU, RAM, swap and per-session tokens into samples.jsonl; the hub serves them and a Resources view charts them. Committed below the bar on the operator's word 2026-11-12 (no further per-bundle tests, one gate after the merge): the W4 e2e never ran in a real browser.

🎯 Fix: 92 %
💥 Break: 6 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 86
🚦 Gate: ⛔ break 6 % > 5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:15:43 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 f7a59d43a5 feat(orchestrator): W3 artifacts tree, ancestry, gates and token-free cleanup
Artifacts show the branch tree with ancestry and gate marks. The cleanup runner calls pkgmgr branch cleanup with its real argv and parses its repos[*].items output, refuses any plan with a remote-branch action, marks an item done only when pkgmgr reports it done, and offers no delete for a branch a worktree holds. Every text states what the pkgmgr command does to volumes. Committed below the bar on the operator's word 2026-11-12 (no further per-bundle tests, one gate after the merge): the W3 e2e never ran; the client switches to --local once pkgmgr ships it.

🎯 Fix: 90 %
💥 Break: 6 %
💸 Cost: 30 %
⏱️ Time: 40 %
🛡️ Security: 100 %
🏆 Score: 100
🚦 Gate: ⛔ break 6 % > 5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:15:14 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 8e63b21e21 feat(orchestrator): W2 Kanban board with swimlanes and forecast
Tasks gain a Kanban board: columns Waiting, Running and Done, swimlanes P1 to P4+ and Unpinned by WSJF, after-dependency arrows and the dashed queue line; drag and drop stages status, pin and dependency moves that apply with one passkey. The burn chart gets the trend and a forecast. Committed below the bar on the operator's word 2026-11-12 (no further per-bundle tests, one gate after the merge): the W2 e2e never ran.

🎯 Fix: 80 %
💥 Break: 10 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 72
🚦 Gate: ⛔ fix 80 % < 90, break 10 % > 5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:14:36 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 d09ed61161 feat(orchestrator): W1 operator tasks, diff previews and bound commit asks
Operator tasks move from the Inbox into Tasks with the Waits on Operator filter. Review and commit asks carry the staged diff; a file whose old or new blob holds an armour line or a detection-pattern match, or every file when no pattern loads, ships only its path, status, mode and counts. The approval binds to the staged tree id from git write-tree, the encoded request body respects the hub limit, and the hub image ships every client module signed.py loads. Committed below the bar on the operator's word 2026-11-12 (no further per-bundle tests, one gate after the merge): the full hub suite and the W1 e2e never ran, two high MEDUSA rows (sandbox_paths.py FLOOR, permission_hook.py ask POST) wait for their acceptance.

🎯 Fix: 85 %
💥 Break: 12 %
💸 Cost: 30 %
⏱️ Time: 30 %
🛡️ Security: 50 %
🏆 Score: 100
🚦 Gate: ⛔ fix 85 % < 90, break 12 % > 5; security 50 % < 100: ask the operator before the commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 16:13:58 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 6059930b0a fix(orchestrator): cap the hub at four CPUs
Piper TTS in the hub took every core of a host already at 94 to 100 % CPU. compose.yml now limits the hub to cpus: 4 next to its 2 GB memory limit, and TTS_TIMEOUT rises from 60 to 120 s so a line still renders under the cap. test_hub_speech pins both values.

🎯 Fix: 92 %
💥 Break: 3 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 89
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 14:38:41 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 cd1a48b615 fix(orchestrator): keep 3D places and prove bubble reading in e2e
page-graph3d.js keeps node places across refreshes; the e2e helpers wait for the shown screen. page-bubbles.js marks each fading bubble with data-read, the word count its reading reached, and the W6 e2e test records bubble changes with a MutationObserver instead of sampling frames: counts never go down, data-read is 13, the bubble fades and leaves, and the reading lasts 4.233 to 6.333 s. A mutation run that stopped or rewound the reading failed both widths.

🎯 Fix: 90 %
💥 Break: 5 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 86
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 14:10:04 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 7d1b8aef4d fix(kvb-git-branch-cleanup): trim description to fit the listing budget
The replayed pkgmgr wrapper skills put the description listing at 1501 of 1500 words; one word less brings it back to 1500.

🎯 Fix: 95 %
💥 Break: 1 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 94
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:30:22 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 7c0872ea68 fix(kvb-org-queue): reread the config on every poll of a waiting hold
A waiting hold kept the config.json it started with, so a raised RAM or slot limit only reached it after cancel and re-hold. wait() now calls fresh() each poll; a missing, unreadable or incomplete file keeps the last complete config, so a half-saved edit never ends a wait. The History and learning details move to learning.md, bringing SKILL.md from 605 to 540 of 600 words and clearing master's red test_lock.

🎯 Fix: 92 %
💥 Break: 3 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 89
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:25:24 +00:00
Kevin Veen-Birkenbach 7618492d66 feat(kvb-git): follow the pkgmgr merge flow of each worktree
pkgmgr worktree flow (pkgmgr 7fb2296, live after its release) records per worktree the refs merged in before a gate (pull) and the branches the finished branch merges into (push). The skills now act on it:

- hotfix.py sync merges, after origin/<default> and the register's base chain, every entry of the flow's pull list that is not merged already; an invalid flow file stops sync with exit 2 before any merge. pkgmgr starts only when <git-dir>/pkgmgr/flow.yml exists, so a sync without a flow, and the tests, never run the system pkgmgr wrapper.
- kvb-org-split merges a finished sidetree into each push target of the flow in order, its upstream when none is set.
- kvb-git-commit-next names the push targets the branch flows into when it closes.

Word budgets kept (kvb-git-hotfix and kvb-org-split trimmed back under 600), skill text 2807 -> 2809 tokens. Tests: 38 hotfix tests OK, 3 new (pull list merged after the chain, invalid flow refused before any merge, no pkgmgr start without a flow file).

🎯 Fix: 93 %
💥 Break: 3 %
💸 Cost: 100 %
⏱️ Time: 99 %
🛡️ Security: 100 %
🏆 Score: 91
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 1e1fd0e79821ad9a8d4fea99b38ac59ecb02d7b2)
2026-11-12 10:40:49 +00:00
Kevin Veen-Birkenbach 7199e6bfba feat(kvb-cleanup): take the inventory from pkgmgr gc --report
The /tmp inventory starts from one read-only pkgmgr gc --report pass over /tmp and the write-scope dirs, du -sh only without pkgmgr. The worktree-orphans rule moves into worktrees.md, keeping SKILL.md under its 600-word cap at unchanged token cost.

🎯 Fix: 95 %
💥 Break: 2 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 93
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit ad2e97aae428fe23e3a4828776ff045766ff9722)
2026-11-12 10:38:54 +00:00
Kevin Veen-Birkenbach ebe7886654 feat(kvb-git): wrap the pkgmgr worktree and gc commands as skills
kvb-git-branch-gc becomes kvb-git-branch-cleanup and kvb-git-orphans-find becomes kvb-git-worktree-orphans, which drops its own orphans.py for pkgmgr's output. New wrappers: kvb-git-gc, kvb-git-worktree-cleanup and kvb-git-worktree-up. kvb-cleanup, kvb-dream, AGENTS.md and README.md point at the new names. Merges only after the pkgmgr release that ships these commands.

🎯 Fix: 90 %
💥 Break: 3 %
💸 Cost: new
⏱️ Time: new
🛡️ Security: 100 %
🏆 Score: 87
🚦 Gate: cost new, time new: cleared by the operator's commit word for the Skills wrappers (2026-11-07)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 18dade9a48a84761bf0c3a9b35584367ae0cb0e4)
2026-11-12 10:38:42 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 07d28a62c6 fix(orchestrator): keep polling while text stays selected
The hub page skipped every 10 s state poll while any text was selected, so operator rows that operator.py run had closed stayed on screen until the selection ended (2026-11-12: no /api/state from 09:29 to 09:54 while the CLI closed 19 rows). A selection now holds the poll back for at most 20 s, and returning to the window reloads at once.

🎯 Fix: 90 %
💥 Break: 3 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 87
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 10:20:31 +00:00
Kevin Veen-Birkenbach fd8fc08603 Merge fix/kvb-check-security-accept-key-collision into unify/skills-20261111
🧪 Test / 🧪 Lock + lint (push) Waiting to run
2026-11-12 09:19:56 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 32591405ab fix(kvb-check-security): one acceptance never hides an identical line elsewhere
An acceptance was keyed by rule, path and the sha1 of the stripped line, so two identical flagged lines in one file shared it: Experiment accepted a false positive at utils/docker/registry.py:105 and the real B310 at :78, same text, vanished from the score (2026-11-12). A row without context now accepts a finding only while no other finding of the scan shares its rule, path and text; accept --line binds a row to the sha1 of the five surrounding lines and is required when the line's text occurs more than once in the file, and refuses a --sha1 that is not that line's. Existing rows keep working on unique lines; the new test fails on master (100 percent, 2 accepted) and passes here (50, then 75 percent).

🎯 Fix: 93 %
💥 Break: 4 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 89
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 09:19:45 +00:00
Kevin Veen-Birkenbach 37265fdb4e Merge fix/kvb-org-queue-light-kinds-skip-reservations into unify/skills-20261111 2026-11-12 08:48:17 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 151031ab4a fix(kvb-org-queue): light kinds meet only running and granted jobs, never a reservation
Every entry blocked by budget or disk added its share to the tally of all entries behind it, and a head the host load keeps out counted as granted while a job ran, so test-nostack jobs needing 0 GB and 11 % CPU waited behind 'CPU 170-242 % in use or reserved' (live queue 2026-11-12). Operator pick on the chair's ask: a light_kinds entry is now checked only against running and granted entries; reservations, a load-held head included, hold back heavy kinds alone. resources() returns what a job takes or reserves, so evaluate() keeps both tallies. Heavy-only queues give master's verdicts (skeptic probe: 0 of 40000 random cases differ); a stream of light jobs can delay a heavy head, as the docstring and SKILL.md now state. Tests kill the reviewer's three mutants and fail on master.

🎯 Fix: 92 %
💥 Break: 4 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 88
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 08:47:26 +00:00
Kevin Veen-Birkenbach 64bd13cecb Merge fix/kvb-org-organize-council-git-marker into fix/kvb-org-queue-load-held-reserves-nothing
🧪 Test / 🧪 Lock + lint (push) Waiting to run
2026-11-12 08:40:39 +00:00
Kevin Veen-Birkenbach 4df1c2e48c Merge master into unify/skills-20261111 2026-11-12 08:23:22 +00:00
Kevin Veen-Birkenbach 21a044b428 Merge fix/kvb-org-organize-council-git-marker into fix/kvb-org-queue-load-held-reserves-nothing 2026-11-12 08:15:40 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 256fe2c327 fix(kvb-org-queue): an idle queue no longer waits on a head the host load alone keeps out
evaluate() counted a non-hotfix entry that passed every queue check but was held back by the live host load as granted for every entry after it: its slot, the exclusive-kind drain and its CPU/RAM share. With RAM held outside the queue the head never started and nothing behind it did either (2026-11-12 03:50 UTC: 27 entries, no job active, host idle). While no queue job is active, such an entry now reserves nothing and holds nothing back; with jobs active it keeps its reservation, and a load-held hotfix still holds back every entry after it. Replayed on the live queue, the fix grants test-nostack-1035 at once.

🎯 Fix: 93 %
💥 Break: 4 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 89
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 08:08:40 +00:00
Kevin Veen-Birkenbach 5c96a9fa01 Merge feature/workbench-w6-speech-bubbles into unify/skills-20261111 2026-11-12 07:54:05 +00:00
Kevin Veen-Birkenbach 381aeb3ba0 Merge fix/orchestrator-skipped-view-transition into unify/skills-20261111 2026-11-12 07:54:05 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 a86c0f41b6 test(orchestrator): match the W6 e2e to the radio names and both browsers
The radio drops the session suffix, so the second sender is Skills, not Skills session; the 1366 stream view has no Skills face, so that bubble belongs in the bar; Firefox reports the font family unquoted; Firefox's own favicon request trips the CSP guard like in the other e2e tests. Replayed on the saved browser results of the unify gate, every W6 assertion passes in Chromium and Firefox.

🎯 Fix: 93 %
💥 Break: 1 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 92
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 07:53:59 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 82edf43417 fix(orchestrator): a view transition skipped by the next switch stays quiet
apply() starts a view transition on every hash change; a quick second switch skips the running one, whose ready promise then rejected with an unhandled AbortError, which the presence e2e counted as a page error in Chromium and Firefox. The skip is expected, so its AbortError is caught; every other ready failure is rethrown and still surfaces.

🎯 Fix: 92 %
💥 Break: 2 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 90
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 07:53:29 +00:00
Kevin Veen-Birkenbach 08fd189c30 Merge feature/workbench-w6-speech-bubbles into unify/skills-20261111 2026-11-11 23:39:23 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 770667ced9 feat(orchestrator): 003 W6 speech bubbles at the agents in every view
A toolbar toggle, a hub setting off by default, shows a speech bubble per agent anchored at its face in every view and at its projected node in 3D; an agent without an anchor speaks from a caption bar. The speaking agent's bubble is the largest and reveals its line word by word over the audio duration, or at 180 words a minute without TTS, a failed TTS request included; queued agents wait as smaller ellipsis bubbles sized by order, and a finished bubble fades out while the next one grows. Comic Neue 400 latin is vendored under SIL OFL 1.1 and loaded through the FontFace API, so the CSP stays unchanged.

Residuals: the caption says speaking while bubbles run silently; the word reveal follows the wall clock, not the audio clock; the e2e suite runs once in the unify gate (operator order 2026-11-11 21:15), score gate exit 1 accepted under that order.

🎯 Fix: 82 %
💥 Break: 5 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 78
🚦 Gate: ⛔ fix 82 % < 90

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 23:39:17 +00:00
Kevin Veen-Birkenbach 6b75be39d5 Merge feature/operator-workbench into unify/skills-20261111 2026-11-11 22:51:51 +00:00
Kevin Veen-BirkenbachandClaude Opus 5.5 07099c42ab docs(requirements): 003 W6 speech bubbles
Decision 17 and work package W6: a toolbar toggle shows speech bubbles at the agents in every view; the speaking agent's bubble grows and reveals its text word by word in Comic Neue at reading pace, waiting agents queue as small bubbles sized by order, and a bubble fades once read.

🎯 Fix: 92 %
💥 Break: 2 %
💸 Cost: 100 %
⏱️ Time: 100 %
🛡️ Security: 100 %
🏆 Score: 90
🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 %

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 22:51:37 +00:00