TenantAtlas/specs/212-test-authoring-guardrails/contracts/test-authoring-governance.logical.openapi.yaml
Ahmed Darrazi b9fdd847a6
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 49s
docs: add spec 212 test authoring guardrails
2026-04-18 12:00:17 +02:00

302 lines
8.0 KiB
YAML

openapi: 3.1.0
info:
title: Test Authoring Constitution & Review Guardrails
version: 1.0.0
description: |
Logical contract for the repository-owned authoring and review workflow
introduced by Spec 212. This documents constitution, template, checklist,
and escalation semantics. It is not a public HTTP API.
servers:
- url: https://tenantatlas.local/logical
paths:
/logical/test-governance/spec-impact/validate:
post:
summary: Validate one spec-level testing and lane impact block
operationId: validateSpecImpactBlock
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SpecImpactValidationRequest'
responses:
'200':
description: Spec impact block evaluated
content:
application/json:
schema:
$ref: '#/components/schemas/SpecImpactValidationResult'
/logical/test-governance/plan-impact/validate:
post:
summary: Validate one planning-time test-governance block
operationId: validatePlanImpactBlock
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PlanImpactValidationRequest'
responses:
'200':
description: Plan impact block evaluated
content:
application/json:
schema:
$ref: '#/components/schemas/PlanImpactValidationResult'
/logical/test-governance/tasks/checklist/evaluate:
post:
summary: Evaluate whether a task checklist keeps test-governance obligations visible
operationId: evaluateTaskGovernanceChecklist
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TaskChecklistEvaluationRequest'
responses:
'200':
description: Task-level governance checklist evaluation returned
content:
application/json:
schema:
$ref: '#/components/schemas/TaskChecklistEvaluationResult'
/logical/test-governance/reviews/escalation-assessment:
post:
summary: Assess whether a test change requires governance escalation
operationId: assessReviewEscalation
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EscalationAssessmentRequest'
responses:
'200':
description: Escalation assessment returned
content:
application/json:
schema:
$ref: '#/components/schemas/EscalationAssessmentResult'
/logical/test-governance/guidance:
get:
summary: Read the contributor guidance pack for test authoring decisions
operationId: readContributorGuidance
responses:
'200':
description: Contributor guidance returned
content:
application/json:
schema:
$ref: '#/components/schemas/ContributorGuidancePack'
components:
schemas:
SpecImpactValidationRequest:
type: object
additionalProperties: false
required:
- specPath
- validationLanes
- testFamilyImpact
- heavySurfaceImpact
- fixtureCostImpact
- reviewValidationCommand
properties:
specPath:
type: string
validationLanes:
oneOf:
- type: string
enum:
- N/A
- type: array
items:
type: string
enum:
- fast-feedback
- confidence
- heavy-governance
- browser
- profiling
- junit
testFamilyImpact:
type: string
heavySurfaceImpact:
type: string
fixtureCostImpact:
type: string
budgetTrendImpact:
type: string
reviewValidationCommand:
type: string
escalationNeeded:
type: boolean
SpecImpactValidationResult:
type: object
additionalProperties: false
required:
- status
- findings
properties:
status:
type: string
enum:
- complete
- needs-revision
findings:
type: array
items:
type: string
reviewerHandOff:
type: string
PlanImpactValidationRequest:
type: object
additionalProperties: false
required:
- planPath
- changedTestTypes
- helperFixtureImpact
- laneReshapeImpact
- closingValidation
properties:
planPath:
type: string
changedTestTypes:
type: array
items:
type: string
helperFixtureImpact:
type: string
laneReshapeImpact:
type: string
closingValidation:
type: string
driftDocumentationTarget:
type: string
PlanImpactValidationResult:
type: object
additionalProperties: false
required:
- status
- findings
properties:
status:
type: string
enum:
- complete
- needs-revision
findings:
type: array
items:
type: string
taskChecklistRequirements:
type: array
items:
type: string
TaskChecklistEvaluationRequest:
type: object
additionalProperties: false
required:
- checklistId
- items
- runtimeChange
properties:
checklistId:
type: string
items:
type: array
items:
type: string
runtimeChange:
type: boolean
evidenceTarget:
type: string
TaskChecklistEvaluationResult:
type: object
additionalProperties: false
required:
- status
- missingCoverage
properties:
status:
type: string
enum:
- complete
- incomplete
missingCoverage:
type: array
items:
type: string
notes:
type: array
items:
type: string
EscalationAssessmentRequest:
type: object
additionalProperties: false
required:
- changeRef
- triggers
properties:
changeRef:
type: string
triggers:
type: array
items:
type: string
enum:
- new-heavy-family
- new-browser-coverage
- material-lane-cost-shift
- broad-filament-livewire-governance-surface
- revived-expensive-default
- budget-or-baseline-relevant-change
- major-suite-reshaping
contextNote:
type: string
EscalationAssessmentResult:
type: object
additionalProperties: false
required:
- outcome
- reason
properties:
outcome:
type: string
enum:
- none
- document-in-feature
- follow-up-spec
- reject-or-split
reason:
type: string
recordLocation:
type:
- string
- 'null'
ContributorGuidancePack:
type: object
additionalProperties: false
required:
- guidanceId
- decisionPoints
- entryPoints
- sharedVocabulary
properties:
guidanceId:
type: string
decisionPoints:
type: array
items:
type: string
examplePatterns:
type: array
items:
type: string
entryPoints:
type: array
items:
type: string
sharedVocabulary:
type: array
items:
type: string