ACTIVITY-WP-0043-T05: owner-return eligibility builder bound to scan revision

Build the planner's current_tasks from immutable Forge commit content at the
C-25 scan SHA (no checkouts, ADR-002). Fails closed on revision mismatch,
non-head scans, missing/malformed fields and duplicate identities; unresolved
predecessors and decisions stay unknown (None).

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 692292@bnt-lap001
Assistant-Session: 89c7d8e8-e1b3-47eb-9411-a0ab227fca2f
This commit is contained in:
tegwick 2026-10-04 13:11:53 +02:00
parent 9741d5cc19
commit c6df768ef0
4 changed files with 808 additions and 2 deletions

View file

@ -85,5 +85,26 @@ blocking_reason: "Activation is a separately reviewed founder action"
state_hub_task_id: "254526ce-5a76-57b3-b7d5-a874518c7b40"
```
Plan: `docs/owner-return-pickup-activation-plan.md`. Requires T03 and an
eligibility-source binding (fresh authoritative `current_tasks`).
Plan: `docs/owner-return-pickup-activation-plan.md`. Requires T03 and T05
(eligibility-source binding of fresh authoritative `current_tasks`).
## Eligibility input builder bound to the scan revision
```task
id: ACTIVITY-WP-0043-T05
status: done
priority: high
```
`src/activity_core/owner_return_eligibility.py::build_current_tasks` builds the
planner's `current_tasks` from immutable Forge commit content at the exact
40-hex `scan_revision` of the C-25 scan (`/contents` and `/raw` with
`ref=<sha>`; no checkouts, ADR-002). It verifies the commit and, by default,
that it is still the default-branch head; refuses on any revision mismatch,
missing/malformed field, duplicate identity or absent task. Predecessors are
task-block plus workplan-frontmatter dependencies, resolved in the same commit
or via an explicit cross-repo resolver (`forge_head_status_resolver`, HEAD
pinned per foreign repo); unresolved targets stay `None`. Decision status comes
from an injected resolver (`state_hub_decision_status`); failure stays unknown.
Tests: `tests/test_owner_return_eligibility.py` (HTTP via MockTransport,
including acceptance by the State Hub planner).