BusDK Update

Dev-task workerit saavat eristetyt Git-worktreet

bus-integration-task tekee paikallisesta rinnakkaiskehityksestä turvallisemman: task-container saa workspace-näkymän read-only-muodossa ja kirjoittaa vain oman vastaanottajansa eristettyyn Git-worktreehen.

Malli sopii BusDK:n superprojektiin, mutta sitä ei ole sidottu BusDK:n hakemistorakenteeseen. Worker lukee Git-superprojektin riippuvuudet .gitmodules-tiedostosta ja root-repository valitaan konfiguroidulla vastaanottajanimellä.

4.5.2026bus-integration-taskGit worktreeparallel agents

Tiiviisti

TL;DR

  • Jokaisella workerilla on yksi vastaanottaja, ja writable mount kuuluu vain sen task-worktreelle.
  • Read-only workspace tarjoaa riippuvuudet muille repositoryille, joten rinnakkaiset workerit eivät kirjoita samoihin checkoutteihin vahingossa.
  • BUS_DEV_TASK_WORKSPACE_RECIPIENT kertoo, mikä vastaanottaja tarkoittaa workspace-rootia itseään; BusDK:n paikallinen Compose käyttää arvoa busdk.

Paikallisessa kehityspinoissa task-worker käynnistetään nyt niin, että worktree-eristys on normaali toimintatapa. Oleellinen konfiguraatio näyttää tältä:

BUS_DEV_TASK_WORKSPACE_ROOT=/workspace
BUS_DEV_TASK_WORKSPACE_HOST_ROOT=/path/to/project
BUS_DEV_TASK_WORKSPACE_RECIPIENT=busdk
BUS_DEV_TASK_WORKTREE=true
BUS_DEV_TASK_WORKTREE_ROOT=/workspace/tmp/bus-dev-task-worktrees
BUS_DEV_TASK_COMMIT=true

Kun tehtävä osoitetaan esimerkiksi vastaanottajalle @bus-bank, worker valmistelee bus-bank-repositoryn erillisen task-worktreen ja antaa containerille write-oikeuden vain siihen. Muut superprojektin repositoryt näkyvät dependency-polkuina read-only-näkymän kautta. Jos tehtävän oikea kohde on superprojekti itse, se lähetetään erilliselle workspace-vastaanottajalle, esimerkiksi BusDK:ssa @busdk.

Tämä tekee rinnakkaisesta työstä käytännössä hallittavampaa. Useat Codex-workerit voivat ajaa eri moduleissa samaan aikaan ilman, että yksi worker jättää toisen moduulin checkoutin task-branchille tai muuttaa dependency-repositorya sivuvaikutuksena. Container vain muokkaa tiedostoja; onnistuneen ajon jälkeen trusted bridge palauttaa mahdollisesti uudelleenkirjoitetun .git-osoittimen, tekee deterministisen task-commitin ja promotedaa työn päächeckouttiin konservatiivisella fast-forward-polulla. Dirty checkout tai non-fast-forward-tilanne pysäyttää tehtävän ennen kuin päächeckoutia muutetaan.

Operaattorin näkyvä pinta on dokumentoitu bus-integration-task-moduulisivulla. Sama mount-sopimus kulkee provider-neutralin bus containers -pinnan läpi, ja paikallinen Docker-toteutus on bus integration docker.