feat(pr-review): plan vinden via PR-beschrijving en commit-hashes (ST-052) #183
No reviewers
Labels
No labels
severity/s2
severity/s3
severity/s4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-mcp!183
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/pr-review-plan-linking"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Waarom
De autonome PR-review (
s4m-codex-reviewer) schreef bijna altijd "geen gekoppeld plan gevonden".resolvePrLinkedPlankende maar twee routes: een implementatiejob met dezelfdepr_url, of eenPbi.pr_urlmet een PLAN-doc. Interactief gemaakte PR's hebben geen van beide. Over 60 dagen kreeg ~4 % van de reviews een plan mee (787 reviews op 549 PR's).Wat
Na de twee bestaande routes komen er twee bij. De bestaande routes zelf zijn niet veranderd en geven byte-gelijke output.
src/lib/pr-refs.ts,resolvePlanViaPrRefs):T-/ST-/PBI--codes worden opgezocht binnen het product van de review-job, endocs/…/plans|specs/*.md-paden worden gelezen op de head-SHA uit de repo van de PR.resolvePlanViaCommits): de commits van de PR worden vergeleken metstory_logs.commit_hash(een prefix van minstens 7 tekens), binnen het product.linked_plan. Het plan wordt in een vaste volgorde gevuld: acceptatiecriteria, dan de genoemde taken, dan de planbestanden, dan de overige taken. Wat niet past staat inomitted. Planbestanden worden pas opgehaald als ze aan de beurt zijn.src/git/pr.ts):PrInfo.body,listPullRequestCommitShasenfetchRepoFileAtRef. Ze gooien nooit een fout, zodat de lookup best-effort blijft.wait-for-job: geeft de beschrijving en head-SHA door die het al had opgehaald. Dat kost geen extra Forgejo-call.scripts/probe-pr-linked-plan.ts: een alleen-lezen proef op echte data.Verificatie
npm test, inclusieftypecheck:tests: 250 testbestanden en 2070 tests geslaagd.npm run typecheckis schoon.pr_refs).Bewust niet
Werk
ST-052 (T-157 t/m T-162), PBI-32, sprint S-2026-10-04-1 op product SC2. Plan met review record (dubbel GO na twee rondes):
docs/superpowers/plans/2026-10-04-pr-review-plan-linking.md.Uitrol na merge: de worker-image die de PR_REVIEW-jobs claimt opnieuw bouwen met de nieuwe
MCP_GIT_REF. Prompt en code rollen samen uit.🤖 Generated with Claude Code
De plan-lookup van de PR-review heeft drie dingen nodig die er nog niet waren: de beschrijving (die getPullRequestState al ophaalde maar weggooide), de commit-SHA's van een PR (route B) en een planbestand op de head-SHA (route A). Alle drie geven bij een fout { error } terug, zodat de lookup best-effort blijft. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>COMMENT
Plan gekoppeld via pbi. De vier resolverroutes, productscope, Forgejo-helpers en promptuitbreidingen zijn grotendeels conform het gekoppelde plan. Geen blokkerende findings gevonden; onderstaande randgevallen verdienen aanpassing.
\n: route A retourneertpr_refs, waardoor route B met mogelijk wel bruikbare commitplannen niet meer draait. Controleer inhoud mettrim()en test deze fallback.shortwordt T-1 overgeslagen maar T-2 opgenomen (99.767 JSON-tekens). Dit wijkt af van ontwerpkeuze 6: na het eerste gedeeltelijk/niet passende item gaat alles daarna naaromitted. Implementeer de stopregel of documenteer de gewijzigde semantiek en test dit grensgeval.Verificatie op commit
43b1268194ef51b77154951872e5744f84394d3c: 57 gerichte tests geslaagd; beide TypeScript-configuraties geslaagd na lokale Prisma-clientgeneratie. Volledige suite: 2.066 geslaagd, 69 overgeslagen, 4 mislukt. Dezelfde vier fouten in Git-fixtures zijn afzonderlijk gereproduceerd op basiscommita0cdd98c7c93d7cb600e772d1312363cb525a9bb; ze zijn geen aangetoonde regressie van deze PR. De uitrol en architectuurdoc zijn vervolgwerk na merge volgens het plan.COMMENT
Plan gekoppeld via pbi. De vier resolverroutes, productscope, bestaande outputcontracten en budgetprioriteiten sluiten aan bij het gekoppelde plan. De vervanging van praktijkproef #180 door #291 is expliciet vastgelegd in het uitvoeringsrecord. Uitrol en bewijs van de eerste nieuwe review blijven vervolgstappen na merge.
Findings:
docs/plans/foo.md.baklevertdocs/plans/foo.md;https://example.com/a%20/docs/plans/x.mdlevert20/docs/plans/x.md. Als het afgeleide bestand bestaat, wordt het verkeerde plan gekoppeld en kan route A de commitfallback verhinderen. Valideer het volledige padtoken en voeg voor beide gevallen regressietests toe.Verificatie op head
530c3741c8b6d763c1e790be6e5e7b9196351449: beide TypeScript-checks geslaagd (rechtstreeks via Node), vijf parserfixtures en gerichte controles voor JSON-budget met escaping,omitteden geen documentfetch na budgetuitputting geslaagd. De volledige Vitest-suite kon in deze reviewomgeving niet starten door denoexec-mount van/tmpen native bindings; de in de PR gemelde volledige testrun is dus niet onafhankelijk bevestigd. Productdocumentatie over architectuur en beide typecheckscopes geraadpleegd.Geen blokkerende finding vastgesteld; wegens de kleine parserbevinding en beperkte volledige testverificatie kies ik COMMENT.
COMMENT
Plan gekoppeld via pbi: implementatieplan PR-review plan-linking (ST-052).
Findings
…[afgekapt]het veld volgenshasTextinhoudelijk. Route A retourneert dan een leeg plan en verhindert de fallback naar commits. Reproduceerbaar metacceptance_criteria: ' '.repeat(20001): resultaatsource: pr_refs, met alleen de afkapmarkering als getrimde inhoud. Controleer inhoud vóór afkappen en voeg dit geval toe aan de whitespace-test.De diff volgt de geplande routevolgorde, productscope, Forgejo-helpers, payloadvelden en promptaanpassingen. De gewijzigde praktijkacceptatie (#291 in plaats van #180 wegens productscope) is met het besluit vastgelegd. Uitrol en het bewijs van de eerste review na uitrol blijven na-mergewerk.
Tests voor beide routes, bestaande output, fouten, parser en budget zijn aanwezig. Een gerichte uitvoering van de budgetfunctie met escaping gaf 99.997 geserialiseerde tekens en de verwachte omitted-stories. De volledige testsuite en beide typechecks zijn hier niet uitgevoerd; de PR-beschrijving rapporteert 2.070 geslaagde tests, maar CI voor head
9adeb452db9d812d514f88fe7d38d03173222edastaat bij controle nog op pending. Daarom geen APPROVED.