Problem
loadAprIdeaCompletion is a fail-closed stub. It needs a real evaluation that decides
whether an idea's approved criteria are satisfied.
Scope
- Evaluate each blocking criterion: mechanical assertions run and are checked directly;
judgment criteria are evaluated by the same review machinery the gate uses at PR level,
against the criterion text
- Completion requires all blocking criteria satisfied AND the mapped issues closed —
neither alone is sufficient (closed issues that don't satisfy their criterion must not
complete a project, and satisfied assertions with open blocking work must not either)
- Evaluate the assembled repository state, not the sum of individual PRs: twenty PRs that
each passed their own gate can still not integrate. At minimum, the project's own test
suite and build must pass on the default branch at evaluation time
- Write a completion verdict record with per-criterion results and the evaluated commit
sha, so a delivery decision is auditable after the fact
- Replace the body, keep the signature — every existing caller must pick it up unchanged
Acceptance
loadAprIdeaCompletion returns a real verdict backed by a persisted record; a project with
an unsatisfied blocking criterion never reports complete; the verdict names the commit it
was evaluated against.
Out of scope
Anti-gaming hardening of criteria (follow-up), and the transfer/delivery action itself.
Problem
loadAprIdeaCompletionis a fail-closed stub. It needs a real evaluation that decideswhether an idea's approved criteria are satisfied.
Scope
judgment criteria are evaluated by the same review machinery the gate uses at PR level,
against the criterion text
neither alone is sufficient (closed issues that don't satisfy their criterion must not
complete a project, and satisfied assertions with open blocking work must not either)
each passed their own gate can still not integrate. At minimum, the project's own test
suite and build must pass on the default branch at evaluation time
sha, so a delivery decision is auditable after the fact
Acceptance
loadAprIdeaCompletionreturns a real verdict backed by a persisted record; a project withan unsatisfied blocking criterion never reports complete; the verdict names the commit it
was evaluated against.
Out of scope
Anti-gaming hardening of criteria (follow-up), and the transfer/delivery action itself.