Task 24 Execution Packet: Domain E2E Contract Suites (Aligned to 2026-01-25 Plan)

This packet replaces the old Task 24 notes. It is aligned to Phase 16 / Task 24 in docs/plans/2026-01-25-end-state.md and the current repo structure.

Use this as the exact execution guide for an agent implementing Task 24.


Objective

Create spec-driven end-to-end contract suites for:

Each suite must:


Non-negotiables


Step 0 — Resolved defaults (no open questions)

Default ports (match dev unless overridden):


Step 1 — Harness structure

Create:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tests/e2e/
  harness/
    e2e_runner.py
    compose_driver.py
    spec_driver.py
    probes/
      http_probe.py
      auth_probe.py
      policy_probe.py
      nats_probe.py
      otel_probe.py
      drift_probe.py
  fixtures/
    federal/
    finance/
    healthcare/

Add a manual just e2e recipe (do not add to just ci).


Step 2 — Minimal E2E compose stack

Create:

Include (minimal):

Enable AUTH_DEV_MODE=true for BFF.

Port consistency: use the defaults from Step 0 unless there is a conflict; if conflicts exist, document overrides in the fixture env.example.


Step 3 — Contract checks (required)

For each domain suite, run in deterministic order:

A) Spec pipeline determinism

B) Auth + RBAC

C) Policy enforcement

D) Messaging semantics

E) Observability presence (minimal)

F) Drift path (smoke)


Step 4 — Fixtures (spec-first, minimal)

Each domain fixture must include:


Step 5 — Commands

Add manual recipe (not in just ci):

1
2
e2e domain="federal":
  E2E_DOMAIN= python tests/e2e/harness/e2e_runner.py

Acceptance criteria (from plan)