Files
git.stella-ops.org/docs/operations/devops/AGENTS.md
2026-02-01 21:37:40 +02:00

50 lines
3.5 KiB
Markdown

# 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.