diff --git a/docs/retninger/unix_filosofi.md b/docs/retninger/unix_filosofi.md index 42d4ce4..fb56ddf 100644 --- a/docs/retninger/unix_filosofi.md +++ b/docs/retninger/unix_filosofi.md @@ -66,13 +66,36 @@ synops-transcribe --cas-hash abc123 --model medium ## Konvensjoner for CLI-verktøy +- **Navnekonvensjon:** `synops-` (f.eks. `synops-transcribe`) - **Input:** args + stdin + env-variabler (DATABASE_URL, CAS_ROOT) +- **Payload-modus:** `--payload-json ` for jobbkø-dispatch + (verktøyet parser selv, portvokteren trenger ikke kjenne argumentene) - **Output:** stdout (strukturert — JSON eller markdown) - **Feilhåndtering:** stderr for feilmeldinger, exit-kode != 0 ved feil - **Ingen tilstandsendring uten flagg:** lesing er default, skriving krever `--write` eller `--apply` (sikkerhetsnett for Claude) - **Idempotent der mulig:** kan kjøres flere ganger uten sideeffekter +## Generisk dispatch + +Portvokteren trenger null konfigurasjon per verktøy. Bare en +navnekonvensjon: + +```rust +let binary = format!("synops-{}", job.job_type); +let mut cmd = Command::new(&binary); +cmd.arg("--payload-json").arg(&job.payload_json); +``` + +`job_type: "transcribe"` → `synops-transcribe --payload-json '{...}'`. +Verktøyet parser payload selv. Nytt verktøy = legg binary i PATH, +bruk riktig `job_type` i køen. Ingen rekompilering av portvokteren. + +`cli_tool`-noder i PG bærer metadata (timeout, cpu_weight, +dokumentasjon) — men ikke dispatch-logikk. Portvokteren leser +timeout og cpu_weight fra noden, men selve invokasjon er +konvensjonsbasert. + ## Migrasjonsstrategi Ikke en big-bang refaktor. Gradvis utbryting: