test(docker): guard the ← Containers back-link (SP-4) #282
No reviewers
Labels
No labels
severity/s2
severity/s3
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/Ops-dashboard!282
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "test/sp4-docker-back-link"
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?
SP-4 / PBI-4 — ST-013 (T-38, T-39, T-40).
app/docker/[name]/page.tsxheeft de← Containers-link al in de header, buiten<ContainerDetail>, consistent metapp/systemd/[unit]/page.tsx. Geen codewijziging.test/docker-detail-back-link.test.ts— faalt alshref="/docker"/← Containersverdwijnt of na<ContainerDetailbelandt (mutatie lokaal gecontroleerd).npm run typecheckschoon,npm run buildslaagt.Openstaand: T-41 (handmatige verify in de draaiende app) vereist een ingelogde sessie met werkende ops-agent.
Bekend, los van deze PR:
test/scrum4us-deploy-trigger.test.tsfaalt lokaal op macOS (geenflock).🤖 Generated with Claude Code
REQUEST_CHANGES
test/docker-detail-back-link.test.ts:15: de positiecheck borgt alleen dathref="/docker"vóór<ContainerDetailin de bron staat. Een wijziging naar{initialSummary && (<Link href="/docker" …>← Containers</Link>)}op dezelfde headerpositie passeert alle vier assertions, terwijl de link bij een summary-fout verdwijnt. Dit is met de bron op de opgegeven head en dezelfde assertions gereproduceerd. Borg dat de link onvoorwaardelijk in de header staat en controleer met een mutatie dat een summary-conditionele link de test laat falen. De implementatie volgt de voorgeschreven indexcheck uit T-39, maar die check voldoet niet aan het expliciete acceptatiecriterium van ST-013.Plan gekoppeld via pr_refs; references: T-38, T-39, T-40, T-41, ST-013. Er is niets omitted. ST-013 wordt door de PR als afgerond gepresenteerd, maar de vereiste bescherming tegen de summary-conditie ontbreekt. ST-014/T-41 is volgens de PR expliciet openstaand en is daarom geen blokkerende finding.
De actuele back-link staat correct buiten ContainerDetail en volgt de systemd-detailstructuur. De test past bij de gedocumenteerde keuze voor een source-level Vitest-guard zonder DOM-infrastructuur; er zijn geen runtime- of architectuurwijzigingen en aanvullende productdocumentatie is niet nodig. PR/head zijn via Forgejo geverifieerd. De assertioncontrole is uitgevoerd met Node; de volledige Vitest-suite, typecheck en build zijn in deze review niet uitgevoerd. De PR meldt geslaagde typecheck/build en een bestaande macOS/flock-testfout.
The index check alone let {initialSummary && (<Link …>)} pass at the same header position, hiding the link on a summary error. Assert no JSX expression wraps the link between the returned root and the link itself. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>Review-fix in
576e753: de test faalt nu ook als de link conditioneel wordt (geen JSX-expressie{…}toegestaan tussenreturn (en de<Link href="/docker">). Mutaties gecontroleerd —{initialSummary && (<Link…>)},{!initialError && (<div header…>)},{initialError ? null : <Link…>}en verwijderde link laten de test falen; basis 3/3 groen,tsc --noEmitschoon.COMMENT
Findings:
{vóór de link. Daardoor faalt ook een geldige, onvoorwaardelijke JSX-expressie (bijvoorbeeldclassName={...}op de page-shell). Niet blokkerend voor de huidige bron; overweeg de check gerichter op conditionele omsluiting te maken.plan gekoppeld via pr_refs — references: T-38, T-39, T-40, T-41, ST-013. Geen omitted onderdelen.
De diff volgt het geplande source-level Vitest-patroon. De link staat in de header vóór en buiten ContainerDetail, consistent met systemd. Rechtstreeks uitvoeren van de assertions bevestigt dat de huidige bron slaagt en verwijdering of omsluiting met
initialSummary && (...)wordt afgewezen. Geen blokkerende code-, architectuur- of documentatiefindings.Verificatie blijft gedeeltelijk: Vitest kon lokaal niet starten doordat native bindings op /tmp niet uitvoerbaar zijn. Typecheck is geprobeerd maar strandt op ontbrekende gegenereerde Prisma-types, @s4m-kit en ops-agent-dependencies; geen bewezen PR-regressie. Build en volledige suite zijn hier niet bevestigd; Forgejo CI voor head
576e753238staat pending. Daarom geen APPROVED bij deze resterende onzekerheid.De PR rondt ST-013 af volgens de beschrijving en meldt T-41 (ST-014, handmatige controle van actief/gestopt/fout) expliciet als openstaand. Die afzonderlijke verificatie is geen blokkerende planfinding voor deze PR.
T-41 toegevoegd in
5659f6e:test/docker-detail-back-link-render.test.tsrendert de echte/docker/[name]-pagina inclusief<ContainerDetail>(renderToStaticMarkup, echtenext/link) voor een running, een exited en een summary-fout-container, met alleen session enpostDockerInspectiongestubd. Mutaties gecontroleerd: link alleen bij summary, alleen bij running, of met andere href laten de betreffende staten falen. Klik-navigatie in een echte browser is niet uitgevoerd; AC2 is geborgd via de gerenderdehref="/docker".APPROVED
Findings
De twee testbestanden borgen de bestaande header-link naar
/docker, inclusief de positie vóór de containernaam en rendering bij running, exited en een summary-fout. De broncodeguard detecteert verwijdering en verplaatsing naar een JSX-conditie. Het bestaande headerpatroon is consistent met systemd-detail en de semantische stylingtokens uit de productstandaarden. Er veranderen geen runtimecode, architectuur of documentatiecontracten.Planconformiteit
plan gekoppeld via pr_refs — references: T-38, T-39, T-40, T-41, ST-013. Er is niets omitted.
ST-013 is binnen de geclaimde scope afgedekt: audit, regressietests, typecheck en build. De aanvullende statische rendertests ondersteunen ST-014, maar bewijzen geen browserklik of visuele zichtbaarheid na hydration. T-41 blijft expliciet open volgens de PR-beschrijving; dit is geen blokkerende planafwijking.
Verificatie
Beoordeeld op commit
5659f6e605c61703662c4e258f8f48c08f640c3e; de actuele Forgejo-diff komt overeen met de payload./docker/[name]./tmpzijn de Node-entrypoints rechtstreeks gestart en native modules via tijdelijke memory-backed bestanden geladen.5659f6e605de748f2aebCOMMENT
Geen blokkerende codefinding vastgesteld. Nog geen APPROVED wegens onvolledig bevestigd test-/buildbewijs voor head
de748f2aebe7f260eb64bf321aaf3eb6ec2e1d93.Findings
/tmpisnoexec, waardoor Vitest/native bindings niet laden; de build faalt na SWC-fallback bij het laden vannext.config.ts. De Forgejo-checks stonden bij controle nog pending. Dit is een verificatiebeperking, geen aangetoonde PR-regressie.Plan en productstandaarden
plan gekoppeld via pr_refs; references: T-38, T-39, T-40, T-41, ST-013. Geen omitted-items.
De diff sluit aan op ST-013: de bestaande header-link staat vóór en buiten ContainerDetail, overeenkomstig systemd; de bron-guard detecteert verwijdering en verplaatsing in een summary-conditie. De aanvullende rendertest controleert de echte pagina bij running, exited en initialError, inclusief href en positie. Beide tests zijn correct opgenomen in de basisgroep conform het CI-eigenaarsmodel. Geen wijziging aan runtimearchitectuur of styling; geen nieuwe productdocumentatie nodig.
T-41/ST-014 blijft volgens de PR-beschrijving expliciet open. Server-rendering bewijst href en aanwezigheid, maar vervangt geen browsercontrole van zichtbaarheid en klikken. Dit is geen blokkade voor de opgegeven ST-013-scope.
Verificatie
tsc --noEmit): geslaagd na initialisatie van submodules, ops-agent-dependencies en Prisma-client.