S00 Endpoint Contract Ledger v2 (Pack 22 Delta)

Status: Historical Pack 22 contract baseline; not current UI route authority (2026-07-13) Date: 2026-02-20 Working directory: docs/modules/ui/v2-rewire Template source: S00_contract_ledger_template.md Supersedes for new IA planning: S00_endpoint_contract_ledger_v1.md remains historical baseline for pre-Pack-22 structure.

Verify backend contract rows against their owning source. Current UI route and scope authorities are linked from the directory currency notice.

Status class definitions

Status classMeaning
EXISTS_COMPATEndpoint exists and is compatible with Pack 22 screen needs without schema change.
EXISTS_ADAPTEndpoint exists but requires schema additions, filter/sort extensions, or composition changes for Pack 22.
MISSING_NEWNo endpoint exists; must be designed and implemented before the consuming sprint can complete.

Ledger

DomainScreen/PageCanonical source refsCurrent route/pageCurrent endpoint candidate(s)StatusOwner moduleAuth scope impactSchema delta summaryDecision/risk notesAction ticket
Global contextRegion/Environment top-bar selectors and persistencesource-of-truth.md 2.2, pack-22.md 3, authority-matrix.md ACanonical v3 top-bar context route family under /api/v2/context/*GET /api/v2/context/regions; GET /api/v2/context/environments?regions=; GET /api/v2/context/preferences; PUT /api/v2/context/preferencesEXISTS_COMPATPlatformNew read/write scope pair (platform.context.read, platform.context.write) implemented in Platform auth policy mapShipped in sprint SPRINT_20260220_018 with migration 047_GlobalContextAndFilters.sql (platform.context_regions, platform.context_environments, platform.ui_context_preferences) and deterministic ordering indexesFE top-bar context cutover unblocked for contract baseline; keep v1 aliases for unrelated surfaces during transitionS22-T01-CTX-01
DashboardMission control posturesource-of-truth.md 3.2, pack-22.md 5, pack-16.md/, /dashboardExisting GET /api/v1/dashboard/summary plus policy/scanner aggregatesEXISTS_ADAPTPlatformReuse viewer scopesExtend dashboard payload with blocked promotion reasons, hotfix lane, evidence posture summary, quick-action countersKeep /api/v1/dashboard/summary alias while adding /api/v2/dashboard/postureS22-T02-DASH-01
ReleasesReleases list (standard + hotfix)source-of-truth.md 3.3, pack-22.md 5/release-control/releases (legacy)GET /api/v2/releases; fallback composition from /api/v1/release-control/bundles, /api/v1/approvalsEXISTS_COMPATPlatform + ReleaseOrchestratorExisting orch:read plus release list scope alias (policy mapped via platform.releasecontrol.read)Shipped release type, gate summary, risk delta, and region/env filters in deterministic read-model projection backed by migration 048_ReleaseReadModels.sqlB22-02 shipped list contract; maintain legacy routes until B22-06 deprecation telemetry passS22-T03-REL-01
ReleasesRelease detail tabs (overview/timeline/deploy/security/evidence/audit)source-of-truth.md 3.3, pack-22.md 5, pack-13.md, pack-14.md, pack-17.mdSplit across /release-control/*, /deployments/*, /approvals/*GET /api/v2/releases/{releaseId}; GET /api/v2/releases/{releaseId}/timeline; GET /api/v2/releases/{releaseId}/deployments; GET /api/v2/releases/{releaseId}/security; GET /api/v2/releases/{releaseId}/evidence; GET /api/v2/releases/{releaseId}/auditEXISTS_ADAPTPlatform + ReleaseOrchestrator + Policy + Scanner + EvidenceLockerExisting read scopes; add composite read policyBase detail endpoint GET /api/v2/releases/{releaseId} now ships summary+versions+recent activity+approvals projection with correlation keys from migration 048; tab-specific sub-endpoints remain pendingPartial closure in B22-02; keep row open for timeline/deploy/security/evidence/audit endpoint split completionS22-T03-REL-02
ReleasesRun detail provenance tabs (timeline/gate/approvals/deployments/security-inputs/evidence/rollback/replay)source-of-truth.md 3.3, pack-22.md 5, docs/implplan/SPRINT_20260220_022_FE_pack22_run_detail_provenance_contract.md/releases/runs/:runId (target canonical route)GET /api/v2/releases/runs/{runId}; GET /api/v2/releases/runs/{runId}/timeline; GET /api/v2/releases/runs/{runId}/gate-decision; GET /api/v2/releases/runs/{runId}/approvals; GET /api/v2/releases/runs/{runId}/deployments; GET /api/v2/releases/runs/{runId}/security-inputs; GET /api/v2/releases/runs/{runId}/evidence; GET /api/v2/releases/runs/{runId}/rollback; GET /api/v2/releases/runs/{runId}/replay; GET /api/v2/releases/runs/{runId}/auditEXISTS_COMPATPlatform + ReleaseOrchestrator + Policy + Scanner + EvidenceLocker + AttestorExisting read scopes plus v1 alias reads for cutover compatibilityShipped in SPRINT_20260220_023 with deterministic run-detail contracts and migrations 052_RunInputSnapshots.sql through 056_RunCapsuleReplayLinkage.sqlFE sprint SPRINT_20260220_022 unblocked for tab-by-tab binding; monitor alias telemetry before removing legacy v1 readsS23-T01-RUN-01
ReleasesActivity (cross-release runs timeline)source-of-truth.md 3.3, pack-22.md 5, pack-14.md/release-control/runs (legacy)GET /api/v2/releases/activity with filters; fallback from /api/v1/runs/*EXISTS_COMPATReleaseOrchestrator + PlatformExisting orch:readShipped cross-release activity projection with correlation keys + region/env filters from deterministic read-model compositionDeterministic order enforced by occurredAt DESC + stable activityId tie-breakS22-T03-REL-03
ReleasesApprovals queue (cross-release)source-of-truth.md 3.3, pack-22.md 5, pack-17.md/release-control/approvals (legacy)Existing /api/v1/approvals; add /api/v2/releases/approvals alias with richer metadataEXISTS_COMPATPolicy + ReleaseOrchestrator + PlatformExisting reviewer/approver scopes (orch:read path for queue projection)Shipped release identity fields, blocker summaries, and region/env filters in /api/v2/releases/approvals projectionSingle queue UX dependency unblocked for FE contract migration; v1 approvals endpoint remains for backward compatibilityS22-T03-REL-04
TopologyRegions, Environments, Targets/Hosts, Agentssource-of-truth.md 3.4, pack-22.md 5, pack-18.mdLegacy under /release-control/regions, /platform-ops/agents, /integrations/hostsGET /api/v2/topology/regions; GET /api/v2/topology/environments; GET /api/v2/topology/targets; GET /api/v2/topology/hosts; GET /api/v2/topology/agentsEXISTS_COMPATPlatform + ReleaseOrchestrator + Integrationsplatform.topology.read policy now mapped to existing orch:read scope in Platform auth wiringShipped migration 049_TopologyInventory.sql with normalized region/environment/target/host/agent projection tables and sync watermark trackingDuplicate inventory placement can now be removed from Integrations/Operations nav during FE route migrationS22-T04-TOP-01
TopologyPromotion Paths, Workflows, Gate Profilessource-of-truth.md 3.4, pack-22.md 5, pack-13.mdLegacy setup pages under /release-control/setup/*GET /api/v2/topology/promotion-paths; GET /api/v2/topology/workflows; GET /api/v2/topology/gate-profiles; write routes in follow-up sprintEXISTS_COMPATReleaseOrchestrator + Policy + PlatformTopology read policy uses existing orch:read scope; write-authoring scopes stay in module-owned follow-up routesShipped deterministic read projections for paths/workflows/gate profiles with region/environment filters; write contracts remain follow-up scopeFE can consume read contracts now; explicit write routes can phase in a subsequent sprint without blocking Pack 22 IA cutoverS22-T04-TOP-02
PolicyPolicy Simulation Studio (history, compare, reproducibility, conflicts, batch evaluations)source-of-truth.md 3.8, pack-22.md 5/policy/simulation/*GET /policy/simulations/history; GET /policy/simulations/compare; POST /policy/simulations/{simulationId}/verify; PATCH /policy/simulations/{simulationId}; POST /policy/conflicts/detect; POST /policy/conflicts/{conflictId}/resolve; POST /policy/conflicts/auto-resolve; POST /policy/batch-evaluations; GET /policy/batch-evaluations; GET /policy/batch-evaluations/{batchId}; POST /policy/batch-evaluations/{batchId}/cancelEXISTS_COMPATPolicyExisting policy:simulate + policy read scopesFE runtime cutover (Sprint 042) removed inline component mock datasets and now binds these screens to backend responses through POLICY_SIMULATION_API -> PolicySimulationHttpClientKeep mock simulation service for test harness wiring only; runtime bindings must remain tokenized in app configS22-T10-POL-01
SecurityGraph Explorer (runtime graph metadata/tile fetch)source-of-truth.md 3.5, pack-19.md, pack-22.md 5/analyze/graphGET /api/graph/graphs; GET /api/graph/graphs/{graphId}/tilesEXISTS_COMPATGraph + PlatformExisting graph:read viewer scopeFE runtime cutover (Sprint 042) removed inline MOCK_NODES/MOCK_EDGES from graph explorer and now maps graph tile payloads to canvas node/edge view-modelsIf graph inventory is empty, UI renders deterministic empty state; endpoint aliasing remains gateway-ownedS22-T10-SEC-04
SecurityFindings unified explorer with pivotssource-of-truth.md 3.5, pack-22.md 5, pack-19.md/security-risk/findings, /security-risk/vulnerabilities, /security-risk/reachabilityGET /api/v2/security/findings; legacy /api/v1/security/findings and /api/v1/security/vulnerabilities retained during migrationEXISTS_COMPATScanner + Platformplatform.security.read mapped to existing findings:read viewer scope in Platform policy mapShipped pivot/facet schema (CVE/package/component/release/environment), disposition summary columns, and deterministic filter/sort envelope in B22-04Legacy endpoints stay available through cutover window; FE security explorer can migrate to v2 contractS22-T05-SEC-01
SecurityDisposition (VEX + Exceptions UX join)source-of-truth.md 2.3, source-of-truth.md 3.5, pack-22.md 5/security-risk/vex, /security-risk/exceptions (legacy split)GET /api/v2/security/disposition; GET /api/v2/security/disposition/{findingId}; exception/VEX writes remain module-owned routesEXISTS_COMPATPolicy + Scanner + Platformplatform.security.read mapped to findings:read for read projection; exception/VEX writes keep module approval scopesShipped migration 050_SecurityDispositionProjection.sql for read-only disposition projection joining VEX state and exception stateWrite authority boundaries preserved by design: no combined /api/v2/security/disposition/exceptions POST route in PlatformS22-T05-SEC-02
SecuritySBOM Explorer (table/graph/diff)source-of-truth.md 2.3, source-of-truth.md 3.5, pack-22.md 5/security-risk/sbom, /security-risk/sbom-lake`GET /api/v2/security/sbom-explorer?mode=tablegraphdiff` with release compare filtersEXISTS_COMPATScanner + Graph + Platformplatform.security.read mapped to existing findings:read viewer scopeShipped unified response envelope for table/graph/diff views with deterministic diff composition from migration 050 projection objects
EvidenceEvidence packs, audit, replay linkage from Releases/Securitysource-of-truth.md 3.6, pack-22.md 5, pack-20.md/evidence-audit/* (legacy)Existing /api/v1/evidence/*; add release/finding correlation filters on /api/v2/evidence/*EXISTS_ADAPTEvidenceLocker + Attestor + PlatformExisting evidence read scopesAdd optional filters (releaseId, findingId, approvalId) and deterministic paginationEnsures inline evidence references across modulesS22-T06-EVID-01
Platform / IntegrationsAdvisory feeds and VEX source setup + health/activitysource-of-truth.md 2.3, source-of-truth.md 3.8, pack-23.md 2, pack-10.md/platform/integrations/feedsGET /api/v2/integrations/feeds; GET /api/v2/integrations/vex-sources; legacy /api/v1/integrations/* retained during migrationEXISTS_COMPATIntegrations + Concelier + Platformplatform.integrations.read mapped to advisory:read; platform.integrations.vex.read mapped to vex:readShipped source-type discriminator plus status/freshness/last-sync metadata and Security/Dashboard consumer hints, backed by migration 051_IntegrationSourceHealth.sqlIntegrations setup + health routes are now v2-ready for FE cutover while legacy aliases remain available during transitionS22-T07-INT-01
Platform / OpsPlatform health/data integrity/offline/schedulersource-of-truth.md 3.7, pack-23.md 2, pack-15.md/platform/ops/*Existing /api/v1/platform/data-integrity/*, scheduler/jobengine/health routesEXISTS_COMPATPlatform + Scheduler + OrchestratorExisting ops scopesNo schema change required for baseline migration; route names will change in FEKeep aliases from old path prefix during cutoverS22-T08-OPS-01
AdministrationIdentity/tenant/notifications/usage/policy/systemsource-of-truth.md 3.9, pack-22.md 5, pack-21.md/administration/*Existing /api/v1/administration/*EXISTS_COMPATPlatform + Authority + PolicyExisting admin scopesNo immediate schema change in Pack 22 baselineTrack trust-posture entry points from Evidence as FE taskS22-T09-ADM-01

Sign-off requirement

Before readiness closure, frontend and backend leads must confirm:

Sign-off output should be captured in an updated handoff packet after the first Pack 22 implementation wave.