# DevOps agent guide ## Mission The DevOps module captures release, deployment, and migration playbooks that keep StellaOps deterministic across environments. ## Advisory Handling - Any new/updated advisory triggers immediate doc + sprint updates (no approval). - Update high-level + detailed docs; inline only short snippets; put runnable/long code in `docs/benchmarks/**` or `tests/**` (deterministic/offline) and link. - Add tasks + Execution Log entries in relevant `SPRINT_*.md` with doc paths/owners; add risks if schema/feed/transparency caps apply. - Check archived advisories; mark supersedes/extends if overlapping. - Defaults: hybrid reachability, deterministic/frozen feeds; act first, report after. ## Key docs - [Module README](./README.md) - [Architecture](./architecture.md) - [Implementation plan](./implementation_plan.md) - [Task board](./TASKS.md) - [Task Runner simulation notes](./task-runner-simulation.md) ## How to get started 1. Open sprint file `/docs/implplan/SPRINT_*.md` and locate the stories referencing this module. 2. Review ./TASKS.md for local follow-ups and confirm status transitions (TODO → DOING → DONE/BLOCKED). 3. Read the architecture and README for domain context before editing code or docs. 4. Coordinate cross-module changes in the main /AGENTS.md description and through the sprint plan. ## Known Quirks (CI/Test Runner Infrastructure) - **Q1 — PowerShell exit code capture**: `Start-Process -Wait -RedirectStandardOutput` returns null `ExitCode` for `dotnet test`. Use `System.Diagnostics.Process` with `ProcessStartInfo` and `WaitForExit(timeout)` instead. - **Q2 — xUnit v3 output format**: Test output is `Failed: 0, Passed: 8, Skipped: 0, Total: 8`. Parse with `Passed:\s+(\d+)` regex, not the older `Tests succeeded:` format. - **Q3 — xUnit v3 empty projects**: Projects with no `[Fact]`/`[Theory]` methods return exit code 1 (`NO_TESTS`), not 0. Account for this in CI scripts. - **Q6 — MSBuild OOM at high parallelism**: Running >3 concurrent `dotnet test` processes causes out-of-memory (0x5aa). Limit to max 3 concurrent processes. `RestoreDisableParallel=true` is set in `Directory.Build.props`. - **Q7 — Windows Git Bash Docker socket path**: MSYS converts `/var/run/docker.sock` to `C:/var/run/docker.sock`. Use `MSYS_NO_PATHCONV=1` and double-slash `//var/run/docker.sock`. ## Guardrails - Honour the Aggregation-Only Contract where applicable (see ../../aoc/aggregation-only-contract.md). - Preserve determinism: sort outputs, normalise timestamps (UTC ISO-8601), and avoid machine-specific artefacts. - Keep Offline Kit parity in mind—document air-gapped workflows for any new feature. - Update runbooks/observability assets when operational characteristics change. ## Required Reading - `docs/operations/devops/README.md` - `docs/operations/devops/architecture.md` - `docs/operations/devops/implementation_plan.md` - `docs/modules/platform/architecture-overview.md` ## Working Agreement - 1. Update task status to `DOING`/`DONE` in both correspoding sprint file `/docs/implplan/SPRINT_*.md` and the local `TASKS.md` when you start or finish work. - 2. Review this charter and the Required Reading documents before coding; confirm prerequisites are met. - 3. Keep changes deterministic (stable ordering, timestamps, hashes) and align with offline/air-gap expectations. - 4. Coordinate doc updates, tests, and cross-guild communication whenever contracts or workflows change. - 5. Revert to `TODO` if you pause the task without shipping changes; leave notes in commit/PR descriptions for context.