fix(deploy): weiger een checkout met vreemde eigendomsrechten #84
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/Media-Organizer!84
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/deploy-repo-ownership-gate"
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?
Eén bevoorrecht git-commando in de deploy-checkout (
sudo git fetch) laat root-eigendom refs achter. De volgende onbevoorrechte fetch sneuvelt dan op een ref-lock die hij niet mag aanmaken:Dat gebeurde op max2 op 2026-09-20: 29 objecten onder
.gitkregen root als eigenaar (.git/index,refs/heads/main, negen remote refs, twee packs, de submodule-configs). De storing werd pas een dag later zichtbaar, in een andere stap en ver van de oorzaak. Deze preflight weigert het meteen, met een eigen markerrepo_ownership_driftop stderr naast het generiekemedia_organizer_deploy_failed.Waarom de exitstatus apart wordt getoetst
Niet cosmetisch. De eerste versie van deze gate was
[[ -z "$(find "$repo" ! -uid "$(id -u)" -print -quit)" ]], en die gaf tijdens het testen PASS op een onleesbare map: eenfinddie niet kan afdalen print niets, dus een test op alleen de uitvoer zet de poort open op precies de rechten die hij moet vangen. Nu:Kosten en dekking
findtoegevoegd aan de tool-check.ops-agentmet één root-eigendom ref → TRIP; map die de gebruiker niet in mag → TRIP; alles eigen bezit maar één submap op modus 000 (find faalt zónder uitvoer) → faalt dicht.Testsuite lokaal
src/test/media-deploy.test.tsfaalt op max2 in 5 van de 8 gevallen — óók op onaangeraaktemain. Oorzaak is omgeving, niet code: het script eisttimeout --versionmetGNU coreutils, en max2 heefttimeout (uutils coreutils) 0.8.0. Baseline en deze branch geven exact dezelfde 3 groen / 5 rood, plus de nieuwe test groen. CI is de echte poort.🤖 Generated with Claude Code
APPROVED
Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
Geen blokkerende of niet-blokkerende findings.
Review-notities
De wijziging in
scripts/deploy-media-organizer.sh:20faalt bewust vroeg wanneer de checkout paden bevat die niet van de uitvoerende gebruiker zijn, en faalt ook dicht wanneerfindniet kan traversen. De toegevoegde test rondsrc/test/media-deploy.test.ts:95dekt zowel foreign ownership onder root als untraversable paths onder een niet-root runtime en controleert dat Docker niet bereikt wordt.