Retain ordered prerequisites in attended reporting and defer the owner token session

This commit is contained in:
codex 2026-10-12 00:11:50 +02:00
parent 30f5072051
commit b21495f318
4 changed files with 28 additions and 4 deletions

View file

@ -85,3 +85,13 @@ Argo adoption. This has not been executed.
so the old ArgoCD is frozen. The founder retires coulombcore and reuses the machine (NK-WP-0022-T08).
- Findings filed: F1 → coulomb-social CSOC-WP-0016; F3 → key-cape KEY-WP-0040-T02 + user-engine
wording; F6 → KEY-WP-0040-T01.
## Later: KEY-WP-0039-T02 owner token session
This follows the first Forgejo SecurityCase and KEY-WP-0038-T02/T03 native
registration/claims proofs. It is not ready for the current window. Existing
registration authorization remains resolved; no additional go-ahead is requested.
After those prerequisites, NetKingdom supplies the registry/env session and the
attended human token through the already prepared runner, with the coding-agent
owner custody path and Platform refusal/capability/cleanup proof. The runner
passes 17 local checks; those do not prove native identity or cleanup.

View file

@ -66,17 +66,17 @@ def classify(tasks):
wp = t["wp"]
if wp["status"] in ("finished", "archived") or wp["flavor"] == "residual":
continue
missing = [d for d in t["deps"] if not dep_done(d)]
if t["status"] in ("todo", "progress"):
missing = [d for d in t["deps"] if not dep_done(d)]
if t["human"]:
out["ATTENDED"].append(t)
out["ATTENDED"].append(t | {"pending_dependencies": missing})
elif missing or t["blocked_on"]:
out["DEPENDENT"].append(t | {"pending_dependencies": missing})
else:
out["READY"].append(t)
elif t["status"] == "wait":
if t["human"]:
out["ATTENDED"].append(t)
out["ATTENDED"].append(t | {"pending_dependencies": missing})
elif t["deps"] and all(dep_done(d) for d in t["deps"]):
out["UNBLOCKED"].append(t)
elif not t["deps"] and t["blocked_on"].startswith("message-from"):
@ -97,7 +97,7 @@ def main():
if a.json:
print(json.dumps({k: [{x: t[x] for x in ("id", "status", "priority", "reason", "blocked_on")}
| {"repo": t["wp"]["repo"]}
| ({"pending_dependencies": t["pending_dependencies"]} if k == "DEPENDENT" else {})
| ({"pending_dependencies": t["pending_dependencies"]} if "pending_dependencies" in t else {})
for t in v] for k, v in res.items()}, indent=1))
return
for k, v in res.items():
@ -106,6 +106,8 @@ def main():
extra = t["blocked_on"] if k == "STALLED" else t["reason"]
if k == "DEPENDENT":
extra = ", ".join(t["pending_dependencies"]) or t["blocked_on"]
elif k == "ATTENDED" and t["pending_dependencies"]:
extra = "After " + ", ".join(t["pending_dependencies"]) + ": " + extra
print(f"- {t['id']} [{t['status']}/{t['priority'] or '-'}] {t['wp']['repo']}"
+ (f" — {extra[:140]}" if extra else ""))

View file

@ -95,3 +95,13 @@ def test_workplan_and_multiline_task_dependencies_both_gate_successor(tmp_path):
assert not result["READY"]
assert result["DEPENDENT"][0]["pending_dependencies"] == [
"ACTIVITY-WP-0042", "ACTIVITY-WP-0041-T03", "ACTIVITY-WP-0041-T04"]
def test_attended_item_keeps_unfinished_ordered_prerequisites_visible(tmp_path):
workplan(tmp_path, "key-cape",
"id: KEY-WP-0039-T02\nstatus: wait\npriority: medium\n"
"needs_human: true\nintervention_note: Attended owner token session\n"
"depends_on: [KEY-WP-0038-T03]")
result = report(tmp_path)
assert not result["READY"] and not result["UNBLOCKED"]
assert result["ATTENDED"][0]["pending_dependencies"] == ["KEY-WP-0038-T03"]

View file

@ -147,6 +147,8 @@ hook. Real temporary-repository tests prove rejection and source-change acceptan
The missing shared guard was installed for the existing repo-manager hook path;
the week's fleet evidence and generator adoption still remain open.
The generated attended list now retains unresolved ordered dependencies. An owner token session following the first SecurityCase can therefore be listed as a future attended act without implying it is ready to run now. CLI regression coverage checks this boundary.
## Attended window #1
```task