You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every hive work cycle starts from enumeration: EnumerateActionable in pkg/github lists a repo's open issues and PRs and β in the same pass β
applies the policy that makes hive safe to run: hold and exempt labels, project.issue_filter, SLA tracking, tracker detection, the standing-meta
skip (#6158), clustering. Because that choke point is GitHub-only, a hive
configured for any other forge enumerates nothing, which is why the forge
adapters sit "wired but unreachable" (forge-app-setup.md). The roadmap names
neutralizing this as the next step for the forge abstraction; this task
designs it before anyone moves code.
The exact field gap between forge.Issue/forge.ChangeRequest and
what fetchIssues/fetchPRs consume (timestamps, author, body, draft
status, assignees, head ref, β¦) β enumerated exhaustively, since it becomes
the wave-1 data-type PR's checklist.
The bulk-list shape the roadmap asks for, so an N-repo hive does not
pay NΓ enumeration, with a pagination budget.
The compatibility proof. Golden tests running the old GitHub path and
the new engine on identical fixtures, requiring byte-identical ActionableResult β the merge gate for the later extraction PR, designed
now so the extraction cannot drift.
Scope statement: one forge per hive (project.forge stays a single
global selector); mixed-forge hives explicitly deferred.
Constraints
GitHub behavior must be byte-identical through the whole series β the
policy in fetchIssues is documented as the reason label gates cannot be
bypassed by a re-listing agent, and none of its semantics may shift as a
side effect of moving.
An ADR under src/docs/adr/ (PR): the chosen home, the field-gap table, the
bulk-list interface sketch, the golden-test plan, and the scope statement.
Docs only; no behavior change.
Model / effort
Planned execution: Claude Fable 5 at max effort β the field-gap
enumeration sweeps go to low-effort subagents; the design and the ADR text
stay at max.
Summary
Every hive work cycle starts from enumeration:
EnumerateActionableinpkg/githublists a repo's open issues and PRs and β in the same pass βapplies the policy that makes hive safe to run: hold and exempt labels,
project.issue_filter, SLA tracking, tracker detection, the standing-metaskip (#6158), clustering. Because that choke point is GitHub-only, a hive
configured for any other forge enumerates nothing, which is why the forge
adapters sit "wired but unreachable" (forge-app-setup.md). The roadmap names
neutralizing this as the next step for the forge abstraction; this task
designs it before anyone moves code.
Part of #6167 (Gitea forge support series).
What the ADR must decide
pkg/actionableconsuming
forge.Forge+ policy config and producingActionableResult;alternative is housing it under
pkg/forge. Maintainer preference asked inπ± design: Gitea forge support β wave plan from adapter-only to working agentsΒ #6167.
forge.Issue/forge.ChangeRequestandwhat
fetchIssues/fetchPRsconsume (timestamps, author, body, draftstatus, assignees, head ref, β¦) β enumerated exhaustively, since it becomes
the wave-1 data-type PR's checklist.
pay NΓ enumeration, with a pagination budget.
the new engine on identical fixtures, requiring byte-identical
ActionableResultβ the merge gate for the later extraction PR, designednow so the extraction cannot drift.
project.forgestays a singleglobal selector); mixed-forge hives explicitly deferred.
Constraints
policy in
fetchIssuesis documented as the reason label gates cannot bebypassed by a re-listing agent, and none of its semantics may shift as a
side effect of moving.
writes: GitHub keeps its concrete client; only the static type at the call
site changes.
Deliverable / definition of done
An ADR under
src/docs/adr/(PR): the chosen home, the field-gap table, thebulk-list interface sketch, the golden-test plan, and the scope statement.
Docs only; no behavior change.
Model / effort
Planned execution: Claude Fable 5 at max effort β the field-gap
enumeration sweeps go to low-effort subagents; the design and the ADR text
stay at max.