TenantAtlas/specs/201-enforcement-review-guardrails/contracts/guardrail-governance.logical.openapi.yaml

451 lines
12 KiB
YAML

openapi: 3.1.0
info:
title: UI Surface Enforcement & Review Guardrails
version: 1.0.0
description: |
Logical contract for the repository-owned guardrail workflow introduced by Spec 201.
It documents authoring, review, repository-signal, test-guardrail, and exception
semantics. It is not a public HTTP API.
servers:
- url: https://tenantpilot.local/logical
paths:
/logical/ui-guardrails/spec-impact/validate:
post:
summary: Validate one spec-level UI guardrail impact block
operationId: validateSpecGuardrailImpact
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SpecImpactValidationRequest'
responses:
'200':
description: Spec guardrail impact evaluated
content:
application/json:
schema:
$ref: '#/components/schemas/SpecImpactValidationResult'
/logical/ui-guardrails/reviews/classify:
post:
summary: Classify one UI or surface change through the reviewer checklist
operationId: classifyReviewOutcome
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewClassificationRequest'
responses:
'200':
description: Review classification returned
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewClassificationResult'
/logical/ui-guardrails/repository-signals/assess:
post:
summary: Assess repository-level technical signals for a change
operationId: assessRepositorySignals
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RepositorySignalAssessmentRequest'
responses:
'200':
description: Repository-signal assessment returned
content:
application/json:
schema:
$ref: '#/components/schemas/RepositorySignalAssessmentResult'
/logical/ui-guardrails/test-guardrails/resolve:
post:
summary: Resolve the required test profile for a surface contract class
operationId: resolveTestGuardrailProfile
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestGuardrailResolutionRequest'
responses:
'200':
description: Test guardrail profile returned
content:
application/json:
schema:
$ref: '#/components/schemas/TestGuardrailResolutionResult'
/logical/ui-guardrails/exceptions/assess:
post:
summary: Assess whether an exception record is complete and bounded
operationId: assessExceptionWorkflow
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExceptionAssessmentRequest'
responses:
'200':
description: Exception assessment returned
content:
application/json:
schema:
$ref: '#/components/schemas/ExceptionAssessmentResult'
/logical/ui-guardrails/closeout/prepare:
post:
summary: Prepare the active feature PR close-out entry for guarded work
operationId: prepareCloseoutEntry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CloseoutPreparationRequest'
responses:
'200':
description: Close-out entry requirements returned
content:
application/json:
schema:
$ref: '#/components/schemas/CloseoutPreparationResult'
/logical/ui-guardrails/guidance:
get:
summary: Read the current guardrail guidance pack
operationId: readGuardrailGuidance
responses:
'200':
description: Guardrail guidance returned
content:
application/json:
schema:
$ref: '#/components/schemas/GuardrailGuidancePack'
components:
schemas:
SpecImpactValidationRequest:
type: object
additionalProperties: false
required:
- specPath
- uiSurfaceChange
- nativeCustomClassification
- stateLayers
- sharedFamilyRelevance
- exceptionNeeded
properties:
specPath:
type: string
uiSurfaceChange:
type: boolean
nativeCustomClassification:
type: string
stateLayers:
type: array
items:
type: string
enum:
- shell
- page
- detail
sharedFamilyRelevance:
type: string
exceptionNeeded:
type: boolean
plannedGuardrailClasses:
type: array
items:
type: string
closeoutEntryTarget:
type: string
SpecImpactValidationResult:
type: object
additionalProperties: false
required:
- status
- findings
- closeoutEntryTarget
properties:
status:
type: string
enum:
- complete
- needs-revision
findings:
type: array
items:
type: string
reviewerHandOff:
type: string
closeoutEntryTarget:
type: string
ReviewClassificationRequest:
type: object
additionalProperties: false
required:
- changeRef
- triggeredMappings
- checklistAnswers
properties:
changeRef:
type: string
triggeredMappings:
type: array
items:
type: string
checklistAnswers:
type: array
items:
type: string
exceptionClaimed:
type: boolean
closeoutEntryTarget:
type: string
ReviewClassificationResult:
type: object
additionalProperties: false
required:
- outcomeClass
- workflowOutcome
- recordLocation
properties:
outcomeClass:
type: string
enum:
- blocker
- strong-warning
- documentation-required-exception
- acceptable-special-case
workflowOutcome:
type: string
enum:
- keep
- split
- document-in-feature
- follow-up-spec
- reject-or-split
missingEvidence:
type: array
items:
type: string
recordLocation:
type: string
RepositorySignalAssessmentRequest:
type: object
additionalProperties: false
required:
- changeRef
- signalIds
properties:
changeRef:
type: string
signalIds:
type: array
items:
type: string
exceptionClaimed:
type: boolean
scopeNote:
type: string
RepositorySignalAssessmentResult:
type: object
additionalProperties: false
required:
- status
- handlingModes
- closeoutEntryRequired
properties:
status:
type: string
enum:
- complete
- needs-review
handlingModes:
type: array
items:
type: string
requiresException:
type: boolean
closeoutEntryRequired:
type: boolean
notes:
type: array
items:
type: string
TestGuardrailResolutionRequest:
type: object
additionalProperties: false
required:
- surfaceClass
properties:
surfaceClass:
type: string
enum:
- shared-detail-family
- monitoring-state-page
- global-context-shell
- exception-coded-surface
- standard-native-filament
changedContractAreas:
type: array
items:
type: string
exceptionType:
type: string
TestGuardrailResolutionResult:
type: object
additionalProperties: false
required:
- requiredTestTypes
- specialCoverageRequired
- profileId
properties:
profileId:
type: string
requiredTestTypes:
type: array
items:
type: string
manualSmokeExpectations:
type: array
items:
type: string
specialCoverageRequired:
type: boolean
ExceptionAssessmentRequest:
type: object
additionalProperties: false
required:
- changeRef
- exceptionType
- brokenRules
- boundaryPlan
- closeoutEntryTarget
properties:
changeRef:
type: string
exceptionType:
type: string
brokenRules:
type: array
items:
type: string
productReason:
type: string
boundaryPlan:
type: array
items:
type: string
standardizationPlan:
type: array
items:
type: string
closeoutEntryTarget:
type: string
ExceptionAssessmentResult:
type: object
additionalProperties: false
required:
- status
- spreadAllowed
- closeoutEntryRequired
properties:
status:
type: string
enum:
- complete
- needs-revision
spreadAllowed:
type: boolean
closeoutEntryRequired:
type: boolean
closeoutNotes:
type: array
items:
type: string
CloseoutPreparationRequest:
type: object
additionalProperties: false
required:
- changeRef
- outcomeClass
- handlingModes
- workflowOutcome
properties:
changeRef:
type: string
outcomeClass:
type: string
enum:
- blocker
- strong-warning
- documentation-required-exception
- acceptable-special-case
handlingModes:
type: array
items:
type: string
workflowOutcome:
type: string
enum:
- keep
- split
- document-in-feature
- follow-up-spec
- reject-or-split
proofDepth:
type: array
items:
type: string
duplicatePromptNotes:
type: array
items:
type: string
CloseoutPreparationResult:
type: object
additionalProperties: false
required:
- entryName
- requiredFields
properties:
entryName:
type: string
requiredFields:
type: array
items:
type: string
lowImpactAllowed:
type: boolean
notes:
type: array
items:
type: string
GuardrailGuidancePack:
type: object
additionalProperties: false
required:
- entryPoints
- outcomeClasses
- workflowOutcomes
- closeoutEntryName
properties:
entryPoints:
type: array
items:
type: string
outcomeClasses:
type: array
items:
type: string
workflowOutcomes:
type: array
items:
type: string
closeoutEntryName:
type: string
notes:
type: array
items:
type: string