Some checks failed
Main Confidence / confidence (push) Failing after 3m36s
## Summary - add explicit Gitea workflow files for PR Fast Feedback, `dev` Confidence, Heavy Governance, and Browser lanes - extend the repo-truth lane support seams with workflow profiles, trigger-aware budget enforcement, artifact publication contracts, CI summaries, and failure classification - add deterministic artifact staging, new CI governance guard coverage, and Spec 210 planning/contracts/docs updates ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Guards/CiFastFeedbackWorkflowContractTest.php tests/Feature/Guards/CiConfidenceWorkflowContractTest.php tests/Feature/Guards/CiHeavyBrowserWorkflowContractTest.php tests/Feature/Guards/CiLaneFailureClassificationContractTest.php tests/Feature/Guards/FastFeedbackLaneContractTest.php tests/Feature/Guards/ConfidenceLaneContractTest.php tests/Feature/Guards/HeavyGovernanceLaneContractTest.php tests/Feature/Guards/BrowserLaneIsolationTest.php tests/Feature/Guards/FixtureLaneImpactBudgetTest.php tests/Feature/Guards/TestLaneManifestTest.php tests/Feature/Guards/TestLaneArtifactsContractTest.php tests/Feature/Guards/TestLaneCommandContractTest.php` - `./scripts/platform-test-lane fast-feedback` - `./scripts/platform-test-lane confidence` - `./scripts/platform-test-lane heavy-governance` - `./scripts/platform-test-lane browser` - `./scripts/platform-test-report fast-feedback` - `./scripts/platform-test-report confidence` ## Notes - scheduled Heavy Governance and Browser workflows stay gated behind `TENANTATLAS_ENABLE_HEAVY_GOVERNANCE_SCHEDULE=1` and `TENANTATLAS_ENABLE_BROWSER_SCHEDULE=1` - the remaining rollout evidence task is capturing the live Gitea run set this PR enables: PR Fast Feedback, `dev` Confidence, manual and scheduled Heavy Governance, and manual and scheduled Browser runs Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #243
317 lines
7.8 KiB
YAML
317 lines
7.8 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: CI Lane Governance Logical Contract
|
|
version: 1.0.0
|
|
description: |
|
|
Logical contract for Spec 210. This is not a public runtime API.
|
|
It documents the semantics that checked-in Gitea workflows, repo-root wrappers,
|
|
and test-governance support classes must satisfy together.
|
|
paths:
|
|
/logical/ci/workflows/{workflowId}/execute:
|
|
post:
|
|
summary: Execute one governed CI workflow path
|
|
operationId: executeWorkflowProfile
|
|
parameters:
|
|
- name: workflowId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WorkflowExecutionRequest'
|
|
responses:
|
|
'200':
|
|
description: Workflow execution plan resolved
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WorkflowExecutionResult'
|
|
/logical/ci/lanes/{laneId}/evaluate-budget:
|
|
post:
|
|
summary: Evaluate one lane budget under a trigger-specific CI policy
|
|
operationId: evaluateLaneBudget
|
|
parameters:
|
|
- name: laneId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/BudgetEvaluationRequest'
|
|
responses:
|
|
'200':
|
|
description: Budget evaluation returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/BudgetEvaluationResult'
|
|
/logical/ci/lanes/{laneId}/stage-artifacts:
|
|
post:
|
|
summary: Stage lane artifacts into a deterministic upload directory
|
|
operationId: stageLaneArtifacts
|
|
parameters:
|
|
- name: laneId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ArtifactStagingRequest'
|
|
responses:
|
|
'200':
|
|
description: Artifact staging completed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ArtifactStagingResult'
|
|
/logical/ci/runs/{runId}/summary:
|
|
get:
|
|
summary: Read the normalized CI run summary for one governed lane execution
|
|
operationId: readRunSummary
|
|
parameters:
|
|
- name: runId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Run summary returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CiRunSummary'
|
|
components:
|
|
schemas:
|
|
WorkflowExecutionRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- triggerClass
|
|
- gitRef
|
|
- runnerLabel
|
|
properties:
|
|
triggerClass:
|
|
type: string
|
|
enum:
|
|
- pull-request
|
|
- mainline-push
|
|
- scheduled
|
|
- manual
|
|
gitRef:
|
|
type: string
|
|
runnerLabel:
|
|
type: string
|
|
requestedLanes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
WorkflowExecutionResult:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- workflowId
|
|
- laneExecutions
|
|
properties:
|
|
workflowId:
|
|
type: string
|
|
laneExecutions:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/LaneExecutionPlan'
|
|
LaneExecutionPlan:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- laneId
|
|
- executionWrapper
|
|
- requiredArtifacts
|
|
- budgetPolicy
|
|
properties:
|
|
laneId:
|
|
type: string
|
|
executionWrapper:
|
|
type: string
|
|
reportWrapper:
|
|
type: string
|
|
requiredArtifacts:
|
|
type: array
|
|
items:
|
|
type: string
|
|
budgetPolicy:
|
|
$ref: '#/components/schemas/BudgetPolicy'
|
|
BudgetPolicy:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- thresholdSource
|
|
- effectiveThresholdSeconds
|
|
- enforcementMode
|
|
properties:
|
|
thresholdSource:
|
|
type: string
|
|
enum:
|
|
- lane-budget
|
|
- governance-contract
|
|
effectiveThresholdSeconds:
|
|
type: number
|
|
varianceAllowanceSeconds:
|
|
type: number
|
|
enforcementMode:
|
|
type: string
|
|
enum:
|
|
- hard-fail
|
|
- soft-warn
|
|
- trend-only
|
|
lifecycleState:
|
|
type: string
|
|
BudgetEvaluationRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- triggerClass
|
|
- measuredSeconds
|
|
properties:
|
|
triggerClass:
|
|
type: string
|
|
measuredSeconds:
|
|
type: number
|
|
BudgetEvaluationResult:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- laneId
|
|
- budgetStatus
|
|
- blockingStatus
|
|
properties:
|
|
laneId:
|
|
type: string
|
|
budgetStatus:
|
|
type: string
|
|
enum:
|
|
- within-budget
|
|
- warning
|
|
- over-budget
|
|
blockingStatus:
|
|
type: string
|
|
enum:
|
|
- blocking
|
|
- non-blocking-warning
|
|
- informational
|
|
primaryFailureClassId:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
ArtifactStagingRequest:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- workflowId
|
|
- laneId
|
|
- sourceDirectory
|
|
- stagingDirectory
|
|
properties:
|
|
workflowId:
|
|
type: string
|
|
laneId:
|
|
type: string
|
|
sourceDirectory:
|
|
type: string
|
|
stagingDirectory:
|
|
type: string
|
|
sourcePatterns:
|
|
type: array
|
|
items:
|
|
type: string
|
|
ArtifactStagingResult:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- laneId
|
|
- stagedArtifacts
|
|
- complete
|
|
properties:
|
|
laneId:
|
|
type: string
|
|
stagedArtifacts:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ArtifactRecord'
|
|
complete:
|
|
type: boolean
|
|
primaryFailureClassId:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
ArtifactRecord:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- artifactType
|
|
- relativePath
|
|
properties:
|
|
artifactType:
|
|
type: string
|
|
relativePath:
|
|
type: string
|
|
required:
|
|
type: boolean
|
|
CiRunSummary:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- runId
|
|
- workflowId
|
|
- laneId
|
|
- testStatus
|
|
- artifactStatus
|
|
- blockingStatus
|
|
properties:
|
|
runId:
|
|
type: string
|
|
workflowId:
|
|
type: string
|
|
laneId:
|
|
type: string
|
|
testStatus:
|
|
type: string
|
|
enum:
|
|
- passed
|
|
- failed
|
|
artifactStatus:
|
|
type: string
|
|
enum:
|
|
- complete
|
|
- incomplete
|
|
budgetStatus:
|
|
type: string
|
|
enum:
|
|
- within-budget
|
|
- warning
|
|
- over-budget
|
|
blockingStatus:
|
|
type: string
|
|
enum:
|
|
- blocking
|
|
- non-blocking-warning
|
|
- informational
|
|
primaryFailureClassId:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
publishedArtifacts:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ArtifactRecord' |