Problem
src/orb/apr-idea-completion.ts always returns { ideaComplete: false }, and
src/orb/apr-repo-binding.ts always returns null. Both fail closed by design pending
#7591 and #7664. Every downstream APR delivery path is therefore built and inert: nothing
can ever report an idea as finished.
This is the single blocking dependency for the whole brief-to-repo flow, and it is also
the hardest product question in it — "when is a project done?" has no answer today.
Approach
Decide done-ness at intake, not at delivery. A brief is converted into acceptance
criteria the customer approves before any work starts; the project is complete when those
criteria are satisfied. That removes the judgment call at the end, which is where disputes
would otherwise live, and it reuses the pattern the gate already applies at PR level
(verify a diff against a linked issue's intent) one level up.
Sub-issues
Acceptance
loadAprIdeaCompletion returns a real, persisted, auditable verdict, and
loadAprRepoBinding resolves a real tenant binding. Both keep their signatures so every
existing caller picks the change up unchanged.
References
#7591, #7664, #9490, #7742
Problem
src/orb/apr-idea-completion.tsalways returns{ ideaComplete: false }, andsrc/orb/apr-repo-binding.tsalways returnsnull. Both fail closed by design pending#7591 and #7664. Every downstream APR delivery path is therefore built and inert: nothing
can ever report an idea as finished.
This is the single blocking dependency for the whole brief-to-repo flow, and it is also
the hardest product question in it — "when is a project done?" has no answer today.
Approach
Decide done-ness at intake, not at delivery. A brief is converted into acceptance
criteria the customer approves before any work starts; the project is complete when those
criteria are satisfied. That removes the judgment call at the end, which is where disputes
would otherwise live, and it reuses the pattern the gate already applies at PR level
(verify a diff against a linked issue's intent) one level up.
Sub-issues
Acceptance
loadAprIdeaCompletionreturns a real, persisted, auditable verdict, andloadAprRepoBindingresolves a real tenant binding. Both keep their signatures so everyexisting caller picks the change up unchanged.
References
#7591, #7664, #9490, #7742