Add a Tasks tab that lists the kvb-org-rasci register next to the inbox and the heavy-job queue, in list, board and RASCI matrix views, each task with its roles, WSJF, open work and the merge flow of its worktree. - Task priority pins and WSJF estimates are signed with the operator's passkey and applied by the runner through rasci.py; the hub verifies the signature itself before it queues a job or logs the change, the runner verifies it again and runs only the checked argv, from /, with a pinned PATH and a 30 s process-group limit. - The runner refuses task changes into a council that is a symlink, not owned by its uid or given by a relative path, and while the installed council.py, nofollow.py or rasci.py differ from the tree. - Only tasks the hub can sign whole are editable (task slug and length). - Page lookups keyed by register text use Object.hasOwn, so a status or party named like an Object.prototype member cannot break the views. - The inbox screen renders through the tasks screen, so its task filter shows with "Wartet auf Operator" pressed. Tests: 604 unit tests OK, e2e 15/15 OK (Chromium and Firefox). 🎯 Fix: 93 % 💥 Break: 5 % 💸 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>
260 lines
7.2 KiB
JSON
260 lines
7.2 KiB
JSON
{
|
|
"generated_at": "2026-11-06T12:00:00+00:00",
|
|
"host_pid_namespace": true,
|
|
"delete_ready": false,
|
|
"delete_reason": "Secret Service locked",
|
|
"repos": [
|
|
{
|
|
"path": "@ROOT@/repos/github.com/me/demo",
|
|
"remote": "@ROOT@/origin.git",
|
|
"default": "main",
|
|
"missing": false,
|
|
"known": true,
|
|
"forge": "none",
|
|
"scanned_at": "2026-11-06T12:00:00+00:00",
|
|
"warnings": [],
|
|
"items": [
|
|
{
|
|
"branch": "feature",
|
|
"worktree": "@ROOT@/worktrees/github.com/me/demo/feature",
|
|
"head": "e7a0755c85d1c17bcdd24a7dc622681e2af5fc2a",
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "changed",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 1,
|
|
"upstream": null,
|
|
"ahead": null,
|
|
"behind": null,
|
|
"gone": false,
|
|
"local_sha": "e7a0755c85d1c17bcdd24a7dc622681e2af5fc2a",
|
|
"remotes": {},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "dirty",
|
|
"merged_by": null,
|
|
"merged_into": null,
|
|
"size_bytes": null,
|
|
"skip": null,
|
|
"actions": [
|
|
"worktree",
|
|
"local-branch"
|
|
],
|
|
"reason": "dirty: 1 paths",
|
|
"result": null,
|
|
"flow": {
|
|
"pull": [
|
|
"origin/main",
|
|
"store-i18n"
|
|
],
|
|
"push": [
|
|
"main",
|
|
"production"
|
|
],
|
|
"source": "file"
|
|
}
|
|
},
|
|
{
|
|
"branch": "feature/done",
|
|
"worktree": "@ROOT@/worktrees/github.com/me/demo/feature-done",
|
|
"head": "5b1e6fd3a7c0e2d94f8a61b3c2d7e9f0a1b2c3d4",
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "clean",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 0,
|
|
"upstream": "origin/feature/done",
|
|
"ahead": 0,
|
|
"behind": 0,
|
|
"gone": true,
|
|
"local_sha": "5b1e6fd3a7c0e2d94f8a61b3c2d7e9f0a1b2c3d4",
|
|
"remotes": {},
|
|
"compose_projects": [
|
|
"demo-feature-done"
|
|
],
|
|
"images": [
|
|
"demo:feature-done"
|
|
],
|
|
"state": "merged-clean",
|
|
"merged_by": "#12",
|
|
"merged_into": "main",
|
|
"size_bytes": 4096,
|
|
"skip": null,
|
|
"actions": [
|
|
"worktree",
|
|
"local-branch",
|
|
"remote-branch"
|
|
],
|
|
"reason": "merged into main by #12",
|
|
"result": null,
|
|
"flow": null
|
|
},
|
|
{
|
|
"branch": "feature/kept",
|
|
"worktree": null,
|
|
"head": null,
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "none",
|
|
"staged": null,
|
|
"unstaged": null,
|
|
"untracked": null,
|
|
"upstream": null,
|
|
"ahead": null,
|
|
"behind": null,
|
|
"gone": false,
|
|
"local_sha": "0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
|
|
"remotes": {},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "merged-clean",
|
|
"merged_by": "ancestor",
|
|
"merged_into": "main",
|
|
"size_bytes": null,
|
|
"skip": "ignored files beyond known caches: notes.txt",
|
|
"actions": [
|
|
"local-branch"
|
|
],
|
|
"reason": "merged into main",
|
|
"result": null
|
|
},
|
|
{
|
|
"branch": "main",
|
|
"worktree": "@ROOT@/repos/github.com/me/demo",
|
|
"head": "e7a0755c85d1c17bcdd24a7dc622681e2af5fc2a",
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "clean",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 0,
|
|
"upstream": "origin/main",
|
|
"ahead": 1,
|
|
"behind": 0,
|
|
"gone": false,
|
|
"local_sha": "e7a0755c85d1c17bcdd24a7dc622681e2af5fc2a",
|
|
"remotes": {
|
|
"origin": "cff243cb6d57c4b4b435b418fd49d64c9751dda8"
|
|
},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "protected",
|
|
"merged_by": null,
|
|
"merged_into": null,
|
|
"size_bytes": null,
|
|
"skip": null,
|
|
"actions": [],
|
|
"reason": "default or protected branch",
|
|
"result": null,
|
|
"flow": null
|
|
},
|
|
{
|
|
"branch": null,
|
|
"worktree": "@ROOT@/worktrees/github.com/me/demo/detached",
|
|
"head": "e7a0755c85d1c17bcdd24a7dc622681e2af5fc2a",
|
|
"detached": true,
|
|
"locked": null,
|
|
"worktree_state": "clean",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 0,
|
|
"upstream": null,
|
|
"ahead": null,
|
|
"behind": null,
|
|
"gone": false,
|
|
"local_sha": null,
|
|
"remotes": {},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "unmerged",
|
|
"merged_by": null,
|
|
"merged_into": null,
|
|
"size_bytes": null,
|
|
"skip": null,
|
|
"actions": [
|
|
"worktree"
|
|
],
|
|
"reason": "unmerged: 1 commits not in origin/main",
|
|
"result": null,
|
|
"flow": {
|
|
"pull": [],
|
|
"push": [],
|
|
"source": "invalid"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "@ROOT@/outside/elsewhere",
|
|
"remote": null,
|
|
"default": "main",
|
|
"missing": false,
|
|
"known": false,
|
|
"forge": "none",
|
|
"scanned_at": "2026-11-06T12:00:00+00:00",
|
|
"warnings": [],
|
|
"items": [
|
|
{
|
|
"branch": "lone",
|
|
"worktree": "@ROOT@/worktrees/x/y/lone",
|
|
"head": "ff5731c77d13db964854912057ed09267431b6d9",
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "clean",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 0,
|
|
"upstream": null,
|
|
"ahead": null,
|
|
"behind": null,
|
|
"gone": false,
|
|
"local_sha": "ff5731c77d13db964854912057ed09267431b6d9",
|
|
"remotes": {},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "unmerged",
|
|
"merged_by": null,
|
|
"merged_into": null,
|
|
"size_bytes": null,
|
|
"skip": null,
|
|
"actions": [
|
|
"worktree",
|
|
"local-branch"
|
|
],
|
|
"reason": "no own commits",
|
|
"result": null
|
|
},
|
|
{
|
|
"branch": "main",
|
|
"worktree": "@ROOT@/outside/elsewhere",
|
|
"head": "ff5731c77d13db964854912057ed09267431b6d9",
|
|
"detached": false,
|
|
"locked": null,
|
|
"worktree_state": "clean",
|
|
"staged": 0,
|
|
"unstaged": 0,
|
|
"untracked": 0,
|
|
"upstream": null,
|
|
"ahead": null,
|
|
"behind": null,
|
|
"gone": false,
|
|
"local_sha": "ff5731c77d13db964854912057ed09267431b6d9",
|
|
"remotes": {},
|
|
"compose_projects": [],
|
|
"images": [],
|
|
"state": "protected",
|
|
"merged_by": null,
|
|
"merged_into": null,
|
|
"size_bytes": null,
|
|
"skip": null,
|
|
"actions": [],
|
|
"reason": "default or protected branch",
|
|
"result": null
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|