Orchestrata Ultimate › Plans › spec-audit › reverify-2026-10-18 › J-standards-arch

Cluster J — Standards & Architecture (SPEC-097 … SPEC-101) — Re-verification 2026-10-18

Source: plans/spec-audit/reverify-2026-10-18/J-standards-arch.md at 8a2cb42ad · last changed 2026-10-18 · first committed 2026-10-18 · 319 lines.

Prose pending.

Plan text

Cluster J — Standards & Architecture (SPEC-097 … SPEC-101) — Re-verification 2026-10-18

Re-verification agent J. READ-ONLY, evidence-by-code-only, against the CURRENT tree (components branch, 337 commits past the 3-month-old session-195 audit). Prior audit confirmed/updated, not redone: plans/spec-audit/J-standards-arch.md (session 195), plans/spec-audit/00-MASTER-PLAN.md §2/§6 (S3 Gatekeeper, S8 Scribe, D4/D5).

Method note: Python structure read exclusively via the AST toolkit (scripts/serialize_codebase_ast.py symbols/refs/source/check-deps/trace-lint), per the repo mandate. check-deps and trace-lint parse the live tree. The Key-Rule gate.py run gate reads a Prolog fact base and is currently INVALID (stale snapshot — src/orchestrata_ultimate/tools/__init__.py not_in_snapshot), so its "0 violations" verdict from session 195 could NOT be re-confirmed without an infra write (uv run ast-sync, out of scope for this read-only pass).

Headline (what changed since session 195):

  1. K1 landed. The gateway now has a real HTTP surface (gateway/http_surface.py: /health, /api/v1/health, /ready, /metrics, CORS, security headers, X-Request-ID), wired in gateway/server.py:916–923. This closes SPEC-098's "no HTTP surface" finding and SPEC-100's "/metrics not exposed" finding.
  2. SPEC-098 was re-written in-tree. Its spec.md now carries a 2026-08-09 APPLICABILITY ruling: 9 FRs APPLIED (error taxonomy, security headers, request-id, health, CORS, token auth, message types) and 13 REST-only FRs marked N/A. So 098 moved from "DIVERGENCE/GAP" to a recorded, implemented divergence.
  3. D4 landed. structlog + the four opentelemetry-* packages are gone from pyproject.toml; check-deps --include-tests is green, which proves zero imports of them anywhere in src+tests+scripts.
  4. SPEC-099 is untouched. Spec text still the full aspirational SaaS framework (MFA/OAuth/AES-256-GCM/bcrypt/lockout/hash-chain/7-yr retention). checklists/ still MISSING. Zero @traces(spec="099") exist (task #142's dangling-id situation was resolved by removing/retargeting the traces — JWT now traces SPEC-014 — not by adding the checklist). D5's re-spec (S8 Scribe) is still owed.
  5. Test-review.py grew T1→T20 (was T1–T15 in session 195; T15/T16 xdist now split into usage + import). The stale --dist=loadfile addopt from the session-195 audit is gone.

SPEC-097 Testing Standards — PARTIAL (enforcement DONE+expanded; spec text DIVERGENT)


SPEC-098 API Standards — DIVERGENCE (spec re-written; 9 FRs implemented+tested; 13 N/A recorded)


SPEC-099 Security & Auth Framework — GAP (unchanged; only JWT+PAM++ authz + audit exist; checklist missing; D5 re-spec not done)


SPEC-100 Logging & Exception Handling — PARTIAL (/metrics now exposed + dead deps pruned; UltimateBaseError/LOG_LEVEL divergence + retry/bulkhead/graceful gap remain)


SPEC-101 Ultimate Architecture — DONE (constitutional invariants hold; component depth delegated)


Cluster summary table

Spec Class Effort Hard deps
SPEC-097 Testing Standards PARTIAL (enforce DONE, T1–T20; spec text DIVERGENT) S Constrains ALL clusters (T1–T20); none inbound
SPEC-098 API Standards DIVERGENCE (re-written; 9 FRs applied+tested; 13 N/A) S (optional tidy) SPEC-014 (owns http_surface/JWT), 099, 100
SPEC-099 Security & Auth GAP (unchanged; only JWT+PAM+++audit; checklist missing; D5 re-spec owed) S re-spec / M slice / L full(rejected) SPEC-014 (owns JWT), 098, governance, 100
SPEC-100 Logging & Exceptions PARTIAL (/metrics done + deps pruned; UltimateBaseError/LOG_LEVEL diverge; retry/bulkhead/graceful gap) M Constrains ALL clusters (logging+errors); SPEC-098/099
SPEC-101 Ultimate Architecture DONE (constitutional invariants; gate.py needs fact-base re-sync) — Umbrella over ALL clusters

Gates note: check-deps and trace-lint are green live. gate.py run (Key-Rule) is INVALID pending an ast-sync fact-base refresh (tools/__init__.py delta) — a maintenance item, not a rule violation. The two dead-dependency families that session 195 flagged (structlog, opentelemetry-*) are now removed per D4, so the "declared-but-unused passes check-deps" blind spot is closed for them.