Terrence exposes bounded, reviewable projections for state history, plans, fleet selection, dependency impact, drift, import mapping, promotions, upgrade rehearsals, and policy experiments. These endpoints share the existing durable_jobs retention surface. Their rows are records for the API and are not claimed by the worker queue.
Every projection is scoped through the existing workspace or organization permission checks. A missing, cross-organization, expired, or revoked object is returned as a not-found response. Payloads are canonicalized and capped at 512 KiB before persistence. Sensitive values are masked; opaque or client-encrypted state returns a limited comparison. A comparison proves a difference between retained Terrence artifacts only. It does not prove a live cloud change.
POST /api/v2/workspaces/:workspace_id/state-comparisonscompares two retained state-version IDs. It reports resource additions, removals, updates, moves, output changes, digests, and whether the result is detailed or limited.POST /api/v2/runs/:run_id/plan-comparisonscompares two runs from the same workspace using their retained public plan projections. Raw plans and sensitive values are never returned.GET /api/v2/workspaces/:workspace_id/inventory-historyreturns resource observations derived from finalized retained state versions.qoraddressfilters the projection; it is not a live provider inventory query.
POST /api/v2/organizations/:org_name/fleet-operations/previewsmaterializes an immutable target manifest. Fleet execution returns HTTP 501 until an executor is implemented; it does not consume the preview or report target success.POST /api/v2/workspaces/:workspace_id/dependency-impact-previewsrecords bounded dependency edges and detected cycles. Queueing the preview preserves the input graph and does not apply a workspace.POST /api/v2/workspaces/:workspace_id/import-workbenchvalidates provider IDs and addresses, emits import blocks, reports existing-ID conflicts, and preserves unresolved arguments for review. It has no apply authority.POST /api/v2/organizations/:org_name/promotionscreates an ordered promotion graph..../:promotion_id/advancereturns HTTP 501 until configuration digest binding and stage completion checks are implemented..../stoprecords an explicit stop; it does not mutate the workspace.POST /api/v2/workspaces/:workspace_id/upgrade-rehearsalsvalidates a candidate engine/version against a retained baseline and records a speculative-plan review. Rehearsal promotion is rejected until an explicit workspace configuration change is made.POST /api/v2/organizations/:org_name/policy-playgroundvalidates an OPA or Sentinel source against a supplied plan projection. Results are review-only and never authorize apply.
Use the normal plan/apply endpoints after a review result has been accepted and an explicit configuration or workspace change has been made. These projections are deliberately evidence and orchestration records, not a second execution authority.