docs(audit): fix .ciagent/ file discipline findings from v0.2 P01 audit

CIAgent audit (.ciagent/AUDIT_v0.2_P01.md) surfaced 3 .ciagent/ file
discipline issues. This commit addresses all 3:

1. config.json: re-add the 'workflow' top-level block. It was added in
   d10f89d (v0.1 milestone) and lost from main during the parallel-
   history resolution that produced origin/main's be9afa2 PR-#1 merge.
   The 4 standing rules (no_hitl, release_flow_per_phase, merge_strategy,
   branching) are restored.

2. PROJECT.md: add literal '## What This Is' and '## Key Decisions'
   section headers. The v0.1 audit-fix (f1c55ca) added the content
   inline but without the explicit headers, so the audit check missed
   them. The Key Decisions section summarizes D-011..D-018.

3. REQUIREMENTS.md: consolidate two overlapping REQ tables (the v0.1
   status table and the v0.2 traceability table) into a single
   canonical table covering all 40 REQs (REQ-001..REQ-040). Each row
   has REQ-ID, summary, priority, phase, status. v0.1 REQs show
   'Complete'; v0.2 REQs show 'Complete' (P01 shipped) or 'Pending
   (P##)'. The v0.1 Milestone Summary and v0.2 Milestone Summary
   sections are preserved below the table.

4. AUDIT_v0.2_P01.md: the audit report itself, with reconstruction
   state, file discipline table, branch hygiene, commit discipline,
   and the 3 findings above (plus non-blocking observations). The
   report's verdict: 'v0.2 P01 ship is healthy; 3 issues are
   paper-cleanup items addressed in this commit. None block P02
   EXECUTE.'

---ci---
project: orca
phase: 0
milestone: v0.2
status: fix
---/ci---
This commit is contained in:
ciagent
2026-06-03 22:19:45 +00:00
parent f31bed2dc3
commit f503404dda
4 changed files with 218 additions and 70 deletions
+112
View File
@@ -0,0 +1,112 @@
---
description: CIAgent audit report — v0.2 P01 mTLS ship + v0.1 backfill state
date: 2026-06-03
audit: ciagent-audit
---
# Audit Report — v0.2 P01 mTLS Ship
## Reconstruction: PASS
The project state is fully reconstructable from `---ci---` blocks in git log.
### Reconstructed Timeline (newest first)
| SHA | Phase | Milestone | Status |
|-----|-------|-----------|--------|
| f31bed2 | 8 | v0.2 | **ship** (v0.2.1) |
| 1b14a5b | 8 | v0.2 | verify |
| 31ccb52 | 8 | v0.2 | execute (B/C/D wave) |
| 181cc76 | 8 | v0.2 | execute (A wave) |
| bed5a2e | 0 | v0.2 | plan |
| 1ee82fc | 0 | v0.2 | ideate |
| 08d321f | 0 | v0.2 | research |
| b48f5cf | 0 | v0.2 | clarify |
| 907f25e | 0 | v0.2 | specify |
| e600e25 | 0 | v0.1 | complete |
| 00127ce | 7 | v0.1 | ship (security untrack) |
| b1b2e3d | 7 | v0.1 | execute |
| 4fd17c5 | 7 | v0.1 | execute |
| 995892a | 7 | v0.1 | ship (v0.1.7) |
| dc67522 | 7 | v0.1 | verify |
| 477b08c | 7 | v0.1 | execute |
| de69788 | 7 | v0.1 | execute |
| d10f89d | 0 | v0.1 | execute (workflow block — see finding #1) |
| f1c55ca | 0 | v0.1 | fix |
| 37b6a14 | 0 | v0.1 | fix (entry-point) |
| 939ce8b | 6 | v0.1 | complete |
| d76ff84 | 0 | v0.1 | complete (v0.1.6/v0.2.0) |
Reconstructed state matches the actual branch/HEAD state of `main`, `milestone/v0.1-initial`, and `milestone/v0.2-networking-observability-security`.
## .ciagent/ File Discipline
| File | Status | Notes |
|------|--------|-------|
| `config.json` | ⚠️ Partial | Valid JSON, top-level keys present, but `workflow` subfield MISSING (see finding #1) |
| `PROJECT.md` | ⚠️ Partial | Required sections present (Requirements, Constraints); `What This Is` and `Key Decisions` are referenced in the v0.1 audit-fix but the literal section headers are absent (see finding #2) |
| `ROADMAP.md` | ✅ Pass | v0.1 marked COMPLETE; v0.2 marked IN PROGRESS with 4 phases listed |
| `REQUIREMENTS.md` | ⚠️ Issue | Two overlapping REQ tables (see finding #3) |
| `ARCHITECTURE.md` | ✅ Pass | v0.2 sections (transport, doctor, certificate data model, 4 v0.2 flows) match the code structure under `internal/transport`, `internal/doctor`, `internal/security` |
| `PLANS.md` | ✅ Pass | 4 v0.2 phase plans present (P08P11) with REQ coverage and must-haves |
| `PERSONAS.md` | ✅ Pass | v0.2 personas documented (network-engineer, phase_specific assignments) |
| `IDEATION.md` | ✅ Pass | 30 v0.1 + 35 v0.2 ideas, 64 accepted |
| `RELEASE_POLICY.md` | ✅ Pass | 4 standing rules documented |
| `PHASE{5,6}_VERIFICATION.md` | ✅ Pass | Verifier artifacts present |
| `PHASE7_SECURITY_AUDIT.md` | ✅ Pass | P0 secret leak documented for human remediation |
## Branches
| Branch | Status | Notes |
|--------|--------|-------|
| `main` | At `bed5a2e` (PLAN commit, v0.2 P00) | Not yet merged with v0.2 milestone |
| `milestone/v0.1-initial` | At `995892a` (P07 ship) | Frozen; v0.1 complete |
| `milestone/v0.2-networking-observability-security` | At `f31bed2` (P01 ship) | Active; P01 shipped |
| `phase/01..07` (v0.1) | Local only; mostly not pushed | P07 (v0.1) is on origin; P01-P06 either on origin (P01-P04) or local-only (P05, P06) |
| `phase/08-mtls` | At `1b14a5b` (verify) | P01 verified; pre-ship SHA |
| `phase/09-scheduling` | At `f31bed2` | P02 branch created, no work yet |
Active work: `phase/09-scheduling` (P02). All other phase branches are either merged or frozen.
## Commits
- **54 total commits** across all branches
- **48 commits with `---ci---` block** (89%)
- **6 commits without `---ci---` block**: 5 historical v0.1 ship commits (P02P04, predating the convention) + 1 external PR-#1 merge commit (`be9afa2`)
- No unresolved escalations; no stale decisions older than the v0.1 milestone
## P0 Findings (require remediation before v0.2 milestone→main ship)
### Finding #1: `config.json` `workflow` block missing
The `workflow` block (added in `d10f89d` for v0.1) was lost from `main` during the parallel-history resolution. The v0.1 milestone branch has it; `main` does not. This is a real divergence that needs to be re-applied to `main` before merging the v0.2 milestone.
**Remediation**: Re-apply the `workflow` block to `config.json` on `main`. This is a one-commit fix (forward-merge the `d10f89d` change to the file alone).
### Finding #2: PROJECT.md section header drift
The audit-fix in v0.1 (`f1c55ca`) added content to `PROJECT.md` describing "What This Is" and "Key Decisions" but used inline prose rather than literal `## What This Is` and `## Key Decisions` section headers. The content is there; the structural markers are not. The audit check fails to find them.
**Remediation**: Add literal `## What This Is` and `## Key Decisions` headers (or update the audit to match the inline style). Low priority.
### Finding #3: REQUIREMENTS.md has two overlapping tables
The v0.1 audit-fix (f1c55ca) added a richer traceability table (with REQ-ID, summary, priority, status, phase, ideation-source) below the v0.1 status table. The v0.2 ideation agent's update flipped REQ-011/014/022/023 from "Deferred (v0.2)" to "Pending (v0.2 PXX)" in the v0.1 table but did NOT touch the new traceability table — so the same REQs appear in BOTH tables with different status wording.
**Remediation**: Consolidate to a single table. Either delete the v0.1 status table (preserving only the v0.2 traceability table), or update the v0.1 table to defer to the v0.2 table. Recommend the former: the v0.2 table is more informative.
## Non-Blocking Observations
- **scripts/release.sh bug**: The `tea releases create` call is missing `--repo coreci/orca`. Worked around in P01 by invoking `tea` directly. Worth a P0 fix in P03 (security-scan phase is a natural cleanup point).
- **5 historical ship commits lack `---ci---` blocks**: Predate the convention. The reconstructed state from git log is sufficient — these don't break reconstruction.
- **PR-#1 merge commit (`be9afa2`)**: External commit (not CI-generated); doesn't need a `---ci---` block.
- **P07 has a duplicate ship commit** (`56b4274` on phase branch, `e96427b` on milestone). Cosmetic; the content is the same.
## Overall
- Reconstruction: **PASS** (89% of commits have `---ci---` blocks; the rest are historical and don't break reconstruction)
- .ciagent/ files: **3 issues, 1 P0, 2 cosmetic**
- Branches: **clean** (all active branches have recent work; no orphans)
- Commits: **clean** (no stale decisions, no escalations)
**Verdict**: The v0.2 P01 ship is healthy. The 3 issues are paper-cleanup items that should be addressed in a follow-up commit before the v0.2 milestone→main merge. None of them block P02 EXECUTE.
+26
View File
@@ -1,6 +1,11 @@
# Project: Orca
## What This Is
A minimalist, offline-first, CLI-first orchestration engine inspired by HashiCorp Nomad, prioritizing stability, security, and simplicity over feature richness. Single-binary distribution, no container runtime, no cloud dependencies, no K8s-level complexity.
## Vision
A minimalist, offline-first, CLI-first orchestration engine inspired by HashiCorp Nomad, prioritizing stability, security, and simplicity over feature richness.
## Objective
@@ -78,3 +83,24 @@ security and richer I/O. The 4 phases are:
The vision ("minimalist, offline-first, CLI-first orchestration engine")
is unchanged. v0.2 is a hardening + small-cluster extension, not a
direction change.
## Key Decisions
The 18 D-series decisions (D-001..D-018) are recorded in the "Clarified
Decisions" table above. The 10 v0.1 decisions (D-001..D-010) are stable
and unchanged in v0.2. The 8 v0.2 decisions (D-011..D-018) were
auto-resolved under full autonomy and are summarized here:
- **D-011: Internal CA with CSR join** (vs. self-signed per-node or SPIFFE).
Single trust root, no external PKI, CSR workflow.
- **D-012: Operator-mediated CA cert distribution with fingerprint verify**
(no automated secret distribution — matches offline-first principle).
- **D-013: 90d server certs, 10y CA cert, 30d pre-expiry rotation.**
- **D-014: Eager mTLS handshake at `orca node join` time** (fail fast).
- **D-015: TLS 1.3 only, AEAD cipher allowlist** (no TLS 1.2 fallback).
- **D-016: `gosec`+`govulncheck` in `validate` pipeline of `.coreci.yml`**
(gates merges to main). `gitleaks` in pre-commit (opt-in).
- **D-017: `iter.Seq` for `orca job list --watch` and `orca node list --watch`**
(pull-based, ctx cancellation, ctrl-c via `signal.NotifyContext`).
- **D-018: Bin-packing by CPU/memory with FIFO within node; JSON-over-HTTP
orca.v1.Dispatch for cross-node** (no ConnectRPC dep).
+64 -70
View File
@@ -1,80 +1,74 @@
# Requirements: Orca
## Milestone v0.1: Foundation
The canonical requirements table. Each row carries the REQ-ID, the
milestone it belongs to, the requirement summary, priority, the phase
that addresses it, and the current status. This single table is the
source of truth — superseded any per-milestone status tables in
earlier versions of this file.
| ID | Requirement | Priority | Status |
|----|-------------|----------|--------|
| REQ-001 | Go 1.25+ toolchain support | High | **Complete** |
| REQ-002 | CLI-first interface for all operations (single binary) | High | **Complete** |
| REQ-003 | Offline-first operational mode (no cloud deps) | High | **Complete** |
| REQ-004 | Basic task deployment (single-node process execution) | Medium | **Complete** |
| REQ-005 | Local state storage via modernc/sqlite (CGO-free) | Medium | **Complete** |
| REQ-006 | Security-first audit logging via `log/slog` | High | **Complete** |
| REQ-007 | CoreCI full release flow integration via `.coreci.yml` | High | **Complete** |
| REQ-008 | Structured JSON logging (slog) | High | **Complete** |
| REQ-009 | HCL/YAML job spec parsing | Medium | **Complete** |
| REQ-010 | `--json` output flag for machine consumption | High | **Complete** |
| REQ-011 | mTLS for inter-node communication | Medium | Pending (v0.2 P01) |
| REQ-012 | `~/.orca/config.hcl` and `/etc/orca/orca.hcl` config locations | Low | **Complete** (CLI uses ~/.orca/ + ORCA_DB env) |
| REQ-013 | Pre-push git hook triggers CoreCI on every push | High | **Complete** |
| REQ-014 | `gosec` + `govulncheck` in CI pipeline | High | Pending (v0.2 P03) |
| REQ-015 | MIT LICENSE | Low | **Complete** |
| REQ-016 | README.md with quickstart | Medium | **Complete** |
| REQ-017 | `context.Context` propagation in all I/O | High | **Complete** |
| REQ-018 | Error wrapping with `fmt.Errorf("...: %w", err)` | High | **Complete** |
| REQ-019 | Cobra CLI framework | High | **Complete** |
| REQ-020 | HCL parser integration (`hashicorp/hcl`) | Medium | **Complete** |
| REQ-021 | `os/exec` with `WaitDelay` (Go 1.25+) | Medium | **Complete** |
| REQ-022 | `iter.Seq` for streaming job lists (Go 1.25+) | Low | Pending (v0.2 P04) |
| REQ-023 | Self-signed mTLS cert generation | Medium | Pending (v0.2 P01, paired with REQ-011) |
| REQ-024 | `Makefile` with standard targets | High | **Complete** |
## Milestone v0.1: Summary
**Status: Complete** — all 6 phases shipped (P00P06), 4-layer verification passed at every phase, tagged `v0.2.0` for next-minor promotion per `run.md` versioning logic.
**Coverage**: 21/24 requirements complete; 4 deferred to v0.2 (REQ-011, REQ-014, REQ-022, REQ-023) — all paired with multi-node networking, richer I/O scanning, or streaming I/O which are explicitly out of scope for v0.1.
## Milestone v0.2: Networking, Observability, Security Hardening
**Status: In Progress** — IDEATE stage complete on `main`. 4 phases (P01P04) covering mTLS, multi-node scheduling, security scanning, and streaming I/O.
### v0.2 requirements (carried over from v0.1 deferral)
| ID | Requirement | Priority | Phase | Source |
| ID | Requirement | Priority | Phase | Status |
|----|-------------|----------|-------|--------|
| REQ-011 | mTLS for inter-node communication | Medium | P01 | v0.1 deferral |
| REQ-014 | `gosec` + `govulncheck` in CI pipeline | High | P03 | v0.1 deferral |
| REQ-022 | `iter.Seq` for streaming job lists (Go 1.25+) | Low | P04 | v0.1 deferral |
| REQ-023 | Self-signed mTLS cert generation | Medium | P01 (paired with REQ-011) | v0.1 deferral |
| REQ-001 | Go 1.25+ toolchain support | High | v0.1 P01 | **Complete** |
| REQ-002 | CLI-first interface for all operations (single binary) | High | v0.1 P01 | **Complete** |
| REQ-003 | Offline-first operational mode (no cloud deps) | High | v0.1 | **Complete** |
| REQ-004 | Basic task deployment (single-node process execution) | Medium | v0.1 P03 | **Complete** (single-node); multi-node dispatch in v0.2 P02 |
| REQ-005 | Local state storage via modernc/sqlite (CGO-free) | Medium | v0.1 P02 | **Complete** |
| REQ-006 | Security-first audit logging via `log/slog` | High | v0.1 P04 | **Complete** |
| REQ-007 | CoreCI full release flow integration via `.coreci.yml` | High | v0.1 P06 | **Complete** (per-phase releases) |
| REQ-008 | Structured JSON logging (slog) | High | v0.1 P05 | **Complete** |
| REQ-009 | HCL/YAML job spec parsing | Medium | v0.1 P03 | **Complete** |
| REQ-010 | `--json` output flag for machine consumption | High | v0.1 P01 | **Complete** |
| REQ-011 | mTLS for inter-node communication | Medium | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-012 | `~/.orca/config.hcl` and `/etc/orca/orca.hcl` config locations | Low | v0.1 P01 | **Complete** (CLI uses `~/.orca/` + `ORCA_DB` env) |
| REQ-013 | Pre-push git hook triggers CoreCI on every push | High | v0.1 P01 | **Complete** |
| REQ-014 | `gosec` + `govulncheck` in CI pipeline | High | v0.2 P03 | Pending (P03) |
| REQ-015 | MIT LICENSE | Low | v0.1 P01 | **Complete** |
| REQ-016 | README.md with quickstart | Medium | v0.1 P01 | **Complete** |
| REQ-017 | `context.Context` propagation in all I/O | High | v0.1 | **Complete** |
| REQ-018 | Error wrapping with `fmt.Errorf("...: %w", err)` | High | v0.1 | **Complete** |
| REQ-019 | Cobra CLI framework | High | v0.1 P01 | **Complete** |
| REQ-020 | HCL parser integration (`hashicorp/hcl`) | Medium | v0.1 P03 | **Complete** |
| REQ-021 | `os/exec` with `WaitDelay` (Go 1.25+) | Medium | v0.1 P03 | **Complete** |
| REQ-022 | `iter.Seq` for streaming job lists (Go 1.25+) | Low | v0.2 P04 | Pending (P04) |
| REQ-023 | Self-signed mTLS cert generation | Medium | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-024 | `Makefile` with standard targets | High | v0.1 P01 | **Complete** |
| REQ-025 | Bounded cert rotation history: retain last N=3 server certs per node for rollback | Medium | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-026 | Trusted-CA fingerprint pinned in config; daemon refuses to start on mismatch | High | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-027 | `govulncheck` runs in offline mode in CI (no `vuln.go.dev` calls; pre-mirrored DB or `-format json` + `jq` gate) | High | v0.2 P03 | Pending (P03) |
| REQ-028 | HCL/YAML schema for `NodeCapacity` declaration (`orca node join` flag and/or `~/.orca/node.hcl`) | High | v0.2 P02 | Pending (P02) |
| REQ-029 | `gitleaks` baseline file committed to repo to suppress pre-existing `.env` SHA-1 leak in git history | Medium | v0.2 P03 | Pending (P03) |
| REQ-030 | `--watch` output format mode: table (default) vs streaming one-line JSON per event | Low | v0.2 P04 | Pending (P04) |
| REQ-031 | `go test -race` enabled in CI for all v0.2 packages | High | v0.2 P01P04 | **Complete** for P01 (cross-cutting, verified P01); P02P04 ongoing |
| REQ-032 | `orca doctor` subcommand for diagnostics (CA/cert health, db integrity, peer reachability) | Medium | **v0.2 P01** | **Complete** for cert checks (P01); network/db are stubs, full impl in P02 |
| REQ-033 | Cert file mode enforcement: 0600 for keys, 0644 for certs (refuses to start on violation) | High | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-034 | Cert proactive rotation alarm: structured slog WARN 30 days before `not_after` | Medium | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-035 | `orca cert show` redacts private key material from default and `--json` output | High | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-036 | Server cert SAN validation: SAN entries (DNS + IP) populated at sign-time; refuses to sign a CSR without them | High | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-037 | `X-Orca-Idempotency-Key` header on cross-node POST; dispatcher retries only when header is present | Medium | v0.2 P02 | Pending (P02) |
| REQ-038 | Structured slog fields for mTLS failures: `event=mtls.handshake`, `peer`, `cert_fp`, `err` | Medium | **v0.2 P01** | **Complete** (P01 shipped v0.2.1) |
| REQ-039 | `.gitleaks.toml` extended with stopwords for test data paths and CA cert PEM blocks | Medium | v0.2 P03 | Pending (P03) |
| REQ-040 | `.golangci.yml` unified lint config superseding per-tool invocations | Low | v0.2 P03 | Pending (P03) |
### v0.2 requirements (added by IDEATE stage, commit pending)
## v0.1 Milestone Summary
| ID | Requirement | Priority | Phase | Source idea |
|----|-------------|----------|-------|-------------|
| REQ-025 | Bounded cert rotation history: retain last N=3 server certs per node for rollback | Medium | P01 | I-201 (REQ-cand-A) |
| REQ-026 | Trusted-CA fingerprint pinned in config; daemon refuses to start on mismatch | High | P01 | I-202 (REQ-cand-B) |
| REQ-027 | `govulncheck` runs in offline mode in CI (no `vuln.go.dev` calls; pre-mirrored DB or `-format json` + `jq` gate) | High | P03 | I-101 (REQ-cand-C) |
| REQ-028 | HCL/YAML schema for `NodeCapacity` declaration (`orca node join` flag and/or `~/.orca/node.hcl`) | High | P02 | I-203 (REQ-cand-D) |
| REQ-029 | `gitleaks` baseline file committed to repo to suppress pre-existing `.env` SHA-1 leak in git history | Medium | P03 | I-102 (REQ-cand-E) |
| REQ-030 | `--watch` output format mode: table (default) vs streaming one-line JSON per event | Low | P04 | I-204 (REQ-cand-F) |
| REQ-031 | `go test -race` enabled in CI for all v0.2 packages | High | P01P04 (cross-cutting) | I-103 |
| REQ-032 | `orca doctor` subcommand for diagnostics (CA/cert health, db integrity, peer reachability) | Medium | P01 (initial) | I-301 |
| REQ-033 | Cert file mode enforcement: 0600 for keys, 0644 for certs (refuses to start on violation) | High | P01 | I-104 |
| REQ-034 | Cert proactive rotation alarm: structured slog WARN 30 days before `not_after` | Medium | P01 | I-205 |
| REQ-035 | `orca cert show` redacts private key material from default and `--json` output | High | P01 | I-105 |
| REQ-036 | Server cert SAN validation: SAN entries (DNS + IP) populated at sign-time; refuses to sign a CSR without them | High | P01 | I-106 |
| REQ-037 | `X-Orca-Idempotency-Key` header on cross-node POST; dispatcher retries only when header is present | Medium | P02 | I-206 |
| REQ-038 | Structured slog fields for mTLS failures: `event=mtls.handshake`, `peer`, `cert_fp`, `err` | Medium | P01 | I-302 |
| REQ-039 | `.gitleaks.toml` extended with stopwords for test data paths and CA cert PEM blocks | Medium | P03 | I-303 |
| REQ-040 | `.golangci.yml` unified lint config superseding per-tool invocations | Low | P03 | I-304 |
**Status: Complete** — all 6 phases shipped (P00P06) plus P07 backfill,
4-layer verification passed at every phase, tagged `v0.2.0` per
`run.md` versioning logic (next-minor after all feature-patches
v0.1.1..v0.1.7 ship).
### v0.2 totals
**Coverage**: 21/24 v0.1-declared requirements complete by v0.1 ship;
the 3 deferred (REQ-011, REQ-014, REQ-022, REQ-023) all moved to v0.2.
Plus REQ-025..REQ-040 (16 net-new) added by v0.2 IDEATE stage.
- 4 carried over from v0.1 (REQ-011, REQ-014, REQ-022, REQ-023)
- 16 net-new from IDEATE (REQ-025..REQ-040)
- **20 total v0.2 requirements**
## v0.2 Milestone Summary
### v0.2 deferred to v0.3
**Status: In Progress** — P01 (mTLS) shipped (v0.2.1). 3 phases remain
(P02 multi-node scheduling, P03 gosec+govulncheck+gitleaks, P04 iter.Seq).
P01 covered REQ-011, REQ-023, REQ-025, REQ-026, REQ-031, REQ-032 (partial),
REQ-033, REQ-034, REQ-035, REQ-036, REQ-038 (10 REQs complete; REQ-032
complete for cert checks only).
- pprof endpoint on `orca daemon` (idea I-308, 0.70 confidence): deferred to keep v0.2 lean; revisit in v0.3 once P02's dispatcher is stable.
## Deferred to v0.3
- pprof endpoint on `orca daemon` (idea I-308, 0.70 confidence): deferred
to keep v0.2 lean; revisit in v0.3 once P02's dispatcher is stable.
+16
View File
@@ -31,6 +31,22 @@
"max_verification_retries": 2,
"escalation_hooks": ["delete", "drop", "force", "reset --hard"]
},
"workflow": {
"no_hitl": true,
"release_flow_per_phase": true,
"merge_strategy": {
"allowed": ["fast-forward", "rebase-then-fast-forward"],
"forbidden": ["merge-commit-no-ff", "squash"],
"phase_to_milestone": "fast-forward",
"milestone_to_main": "rebase-then-fast-forward"
},
"branching": {
"hierarchy": "main < milestone/<slug> < phase/<NN>-<slug>",
"phase_branches": "phase/NN-<slug> merges into milestone/<slug> via fast-forward",
"milestone_branches": "milestone/<slug> rebases onto main, then fast-forwards main",
"default_branch": "main"
}
},
"personas": {
"enabled": true,
"territory_enforcement": "warn",