feat(orchestrator): S5 Tasks with choices, Gantt, estimates and burn charts
Requirement 001 phase 6, S5: - Tasks tab: every pending ask, rule request, operator row and choice card shows under "waits on Operator"; a choice request goes out on a fixed channel button, post and call with an agent multi-select, and a click on an option sends a passkey-signed answer the agent checks with operator_message. The unsigned /api/decisions/<id>/choose route is gone, and a decision, choice answer or choice recipient whose name holds "*" is refused, so a signed answer never reaches every agent. - Gantt view: one bar per task from start to end (running to now), one arrow per explicit, branch-base and queue-order edge, hatched forecast bars (always, points only, real only) from the median duration or points times median hours per point. - rasci.py set --after/--drop-after stores task dependencies and refuses unknown tasks and cycles. - Estimation toggle (No estimate default, Story points) is stored in the hub settings; burndown and burnup per whole register, list filter or one agent or line, counting tasks or summing complexity with the unestimated tasks as their own line. - New skill kvb-org-queue-estimate: "Request estimates" (story points mode, passkey-signed board action) or the skill sends exactly one newsletter listing every unestimated task with its RASCI parties; a party name that is no plain name shows as "unnamed party". - Business value per task or in bulk is stored only with a verified passkey assertion over the exact ids and values; WSJF uses it instead of the median. The task list sorts by every decision-50 mode both ways. - e2e: the walk's pending ask lives an hour instead of 60 s, and the CDP and BiDi drivers retry removing the browser profile while the browser exits (ENOTEMPTY). Evidence: make test 709 OK, ruff and markdownlint clean (/tmp/s5-make-test-fix-2.log); e2e 26 OK in Chromium and Firefox (/tmp/s5-e2e-fix-2.log); MEDUSA 50 files, an independent skeptic rejected four holes (unsigned choose route, unsigned estimates request, free-text party names, "*" recipients incl. normalizer bypasses), all fixed and re-verified, the 8 remaining pattern hits accepted, rescan 0 open. 🎯 Fix: 92 % 💥 Break: 4 % 💸 Cost: 100 % ⏱️ Time: – 🛡️ Security: 100 % 🏆 Score: 88 🚦 Gate: ✅ 90/5, cost and time <= 100, security 100 % Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5c8b69d53d
commit
d9eb121d12
49 files changed
+2162
-148
No files matched your search
@@ -619,11 +619,11 @@ flowchart TD
|
||||
|
||||
### Phase 6: Tasks with asks and choices (S5)
|
||||
|
||||
- [ ] Every pending ask, rule request, operator row and choice card shows in
|
||||
- [x] Every pending ask, rule request, operator row and choice card shows in
|
||||
the Tasks tab under "waits on Operator"; no Choices column exists.
|
||||
- [ ] Each channel button sends the fixed choice request with no text field;
|
||||
- [x] Each channel button sends the fixed choice request with no text field;
|
||||
`post` and `call` take a multi-select of agents.
|
||||
- [ ] A click on a choice option sends a passkey-signed answer the agent can
|
||||
- [x] A click on a choice option sends a passkey-signed answer the agent can
|
||||
check with `operator_message`.
|
||||
|
||||
### Phase 6: Firewall (S6)
|
||||
@@ -656,31 +656,31 @@ flowchart TD
|
||||
|
||||
### Phase 6: Gantt, estimates, burndown and burnup (S5)
|
||||
|
||||
- [ ] `rasci.py set <task> --after <other>` stores the dependency and
|
||||
- [x] `rasci.py set <task> --after <other>` stores the dependency and
|
||||
`--drop-after <other>` removes it; an unknown task and a cycle are
|
||||
refused.
|
||||
- [ ] The Gantt view draws one bar per task from start to end, a running
|
||||
- [x] The Gantt view draws one bar per task from start to end, a running
|
||||
task to now, and one arrow per explicit, branch-base and queue-order
|
||||
edge of a fixture register and queue.
|
||||
- [ ] The forecast selector offers `always` (default), `points only` and
|
||||
- [x] The forecast selector offers `always` (default), `points only` and
|
||||
`real only`; a hatched bar is as long as the median duration of done
|
||||
tasks (no estimate) or points times median hours per point (story
|
||||
points).
|
||||
- [ ] The estimation toggle defaults to `No estimate`, is stored in the hub
|
||||
- [x] The estimation toggle defaults to `No estimate`, is stored in the hub
|
||||
settings and survives a reload.
|
||||
- [ ] Burndown and burnup offer the scopes whole register (default), list
|
||||
- [x] Burndown and burnup offer the scopes whole register (default), list
|
||||
filter within the time window, and one agent or line; with no estimate
|
||||
they count tasks, with story points they sum complexity and draw the
|
||||
unestimated tasks as a line of their own.
|
||||
- [ ] "Request estimates" shows only in story points mode; a click or
|
||||
- [x] "Request estimates" shows only in story points mode; a click or
|
||||
`/kvb-org-queue-estimate` sends exactly one newsletter to all agents
|
||||
that lists every unestimated task with every party holding a RASCI
|
||||
role in it; a state build or a mode switch sends none.
|
||||
- [ ] A per-task or bulk business value change is stored only with a
|
||||
- [x] A per-task or bulk business value change is stored only with a
|
||||
verified passkey assertion over the exact task ids and values; a
|
||||
forged, replayed or altered batch changes nothing, and WSJF uses the
|
||||
operator value instead of the median.
|
||||
- [ ] The task list sorts by each mode of decision 50 in both directions.
|
||||
- [x] The task list sorts by each mode of decision 50 in both directions.
|
||||
|
||||
### Tests
|
||||
|
||||
@@ -700,7 +700,7 @@ flowchart TD
|
||||
rename-once timeline, squelch scheduler, face generator, settings
|
||||
writer (forged, replayed, unlisted file), token sums, German text
|
||||
scan.
|
||||
- [ ] S5 Gantt and estimates: dependency edges and cycle refusal, forecast lengths, burn
|
||||
- [x] S5 Gantt and estimates: dependency edges and cycle refusal, forecast lengths, burn
|
||||
sums per mode and scope, newsletter body and its single send, bulk
|
||||
business value signature (forged, replayed, altered), sort orders.
|
||||
- **Integration**
|
||||
@@ -725,6 +725,6 @@ flowchart TD
|
||||
- [ ] Phase 6: no page scrollbar on any view, agent and node popups,
|
||||
choice request and signed answer, Firewall settings diff and
|
||||
signature, Resources charts, each at 1920, 1366 and 390 px.
|
||||
- [ ] S5: Gantt with arrows, burndown and burnup, the estimation toggle,
|
||||
- [x] S5: Gantt with arrows, burndown and burnup, the estimation toggle,
|
||||
"Request estimates" and a signed bulk business value change, each at
|
||||
1920, 1366 and 390 px.
|
||||
Reference in new issue
Block a user