# v0.7.0 Agent Handoff

| Field | Value |
|------|-----|
| Version | 0.7.0 |
| Status | FINAL |
| Created | 2026-05-17 |

## Handoff Summary

This handoff document provides subsequent implementation agents with key context and considerations for the v0.7.0 spec.

## Spec Location

> **Note**: These paths are workspace-local Kiro spec files. They are
> available when working in the same workspace but may not be committed
> to the public repository.

```text
kiro/specs/27-v070_prod/spec.md    — Requirements spec (40 REQ IDs)
kiro/specs/27-v070_prod/design.md  — Technical design
kiro/specs/27-v070_prod/tasks.md   — Task list (~100 subtasks)
```

## Execution Order

1. **Phase 0 (TASK-A01~A07)** must complete first — P0 runtime correctness is the foundation for all subsequent work
2. **Phase 1 (TASK-B01~B06)** executes after Phase 0 — Rust-first architecture migration
3. **Phase 2 (TASK-C01~C06)** executes after Phase 1 — Package distribution
4. **Phase 3 (TASK-D01~D05)** executes after Phase 2 — K8s/Ingress
5. **Phase 4 (TASK-E01~E06)** can run in parallel with Phases 1~3 (only requires Phase 0 completion)
6. **Phase 5 (TASK-F01~F05)** executes after Phases 0~4 all complete

## Key Constraints

### Must Follow

- All code changes comply with `AGENTS.md` Pre-output Checklist
- `NGX_AGAIN` is suspend-and-resume, **not** success
- Body must not be sent before headers
- Rust-owned memory must have FFI release functions
- New FFI struct fields are only appended to the tail (tail-append only)
- New reason codes/metrics/config must be synchronously updated: implementation + tests + docs + validators
- Coverage ≥ 80% (aggregate), ≥ 90% (critical)

### Prohibited

- Do not move NGINX lifecycle operations into Rust
- Do not hand-write literal values to initialize FFI structs on C side (use helper constructors)
- Do not collapse all decompression failures into a generic conversion_error
- Do not conflate delivery counters with decision counters
- Do not add Python E2E files (Rule 37)
- Do not claim compatibility with arbitrary NGINX vendor builds
- Do not claim generic K8s/Ingress support

## Verification Strategy

After each Phase completes, the corresponding verification commands must be run (see `docs/project/0.7.0-validation-matrix.md`).

Before final release, the following must pass:

```bash
make harness-check-full
make docs-check
make release-gates-check-strict
```

## PR Split Suggestion

| PR Scope | Included Tasks | Estimated Size | Review Focus |
|---------|----------|---------|---------|
| PR1: Fail-open replay + chunk preservation | TASK-A01 | Medium | Rule 1, 2, 38; pending chain; delivery vs decision |
| PR2: Output ordering | TASK-A02 | Small | header-before-body; alloc-before-send |
| PR3: Bounded decompression + error categories | TASK-A03 + A04 | Medium | budget; error enum; FFI mapping |
| PR4: Accept negotiation | TASK-A05 | Medium | q-value; table-driven test |
| PR5: Parse budget + timeout | TASK-A06 | Medium | budget; timeout; metrics |
| PR6: FFI ABI checks | TASK-A07 | Small | cbindgen; static_assert; layout test |
| PR7: Rust-first migration contract | TASK-B01 | Small | docs; ADR |
| PR8: Conditional request/ETag | TASK-B02 | Medium | If-None-Match; weak ETag |
| PR9: URL/Host validation | TASK-B03 | Small | control char; X-Forwarded-* |
| PR10: Header plan + decision engine | TASK-B04 + B05 | Large | plan atomicity; pure function; reason code |
| PR11: Reason-code/metrics normalization | TASK-B06 | Medium | single source; delivery ≠ decision |
| PR12: Package distribution (C01~C06) | TASK-C01~C06 | Large | matrix; build; sign; docs |
| PR13: K8s/Ingress (D01~D05) | TASK-D01~D05 | Medium | manifest; helm; smoke |
| PR14: Operability (E01~E06) | TASK-E01~E06 | Large | diagnostics; dynconf; validators; gates |
| PR15: Final validation (F01~F05) | TASK-F01~F05 | Small | coverage; harness; version |

## Open Questions

- OQ1: Whether musl static-linked builds are in scope for 0.7.0 → Deferred to 0.8.0
- OQ2: F5 Ingress Controller feasibility → Pending TASK-D04 assessment
- OQ3: Diagnostics endpoint access control scheme → Pending design
- OQ4: Decompression budget default multiplier 20x → Pending benchmarking
- OQ5: Homebrew tap → Deferred to 0.8.0
- OQ6: Dynconf dry-run validation timeout threshold → Pending configuration

## Document Updates

| Version | Date | Author | Changes |
|------|------|------|------|
| 0.7.0-draft | 2026-05-17 | spec-agent | Initial v0.7.0 agent handoff |
