TenantAtlas/specs/206-test-suite-governance/contracts/test-lane-manifest.schema.json
ahmido 3c38192405 Spec 206: implement test suite governance foundation (#239)
## Summary

This PR implements Spec 206 end to end and establishes the first checked-in test suite governance foundation for the platform app.

Key changes:
- add manifest-backed test lanes for fast-feedback, confidence, browser, heavy-governance, profiling, and junit
- add budget and report helpers plus app-local artifact generation under `apps/platform/storage/logs/test-lanes`
- add repo-root Sail-friendly lane/report wrappers
- switch the default contributor test path to the fast-feedback lane
- introduce explicit fixture profiles and cheaper defaults for shared tenant/provider test setup
- add minimal/heavy factory states for tenant and provider connection setup
- migrate the first high-usage and provider-sensitive tests to explicit fixture profiles
- document budgets, taxonomy rules, DB reset guidance, and the full Spec 206 plan/contracts/tasks set

## Validation

Executed during implementation:
- focused Spec 206 guard/support/factory validation pack: 31 passed
- provider-sensitive regression pack: 29 passed
- first high-usage caller migration pack: 120 passed
- lane routing and wrapper validation succeeded
- pint completed successfully

Measured lane baselines captured in docs:
- fast-feedback: 176.74s
- confidence: 394.38s
- heavy-governance: 83.66s
- browser: 128.87s
- junit: 380.14s
- profiling: 2701.51s
- full-suite baseline anchor: 2624.60s

## Notes

- Livewire v4 / Filament v5 runtime behavior is unchanged by this PR.
- No new runtime routes, product UI flows, or database migrations are introduced.
- Panel provider registration remains unchanged in `bootstrap/providers.php`.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #239
2026-04-16 13:58:50 +00:00

694 lines
15 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tenantatlas.local/schemas/test-lane-manifest.schema.json",
"title": "TestLaneManifest",
"type": "object",
"additionalProperties": false,
"required": [
"version",
"lanes",
"artifactDirectory",
"familyBudgets"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1
},
"artifactDirectory": {
"type": "string",
"const": "storage/logs/test-lanes"
},
"lanes": {
"type": "array",
"minItems": 6,
"maxItems": 6,
"items": {
"$ref": "#/$defs/lane"
},
"allOf": [
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "fast-feedback"
}
}
}
},
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "confidence"
}
}
}
},
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "browser"
}
}
}
},
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "heavy-governance"
}
}
}
},
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "profiling"
}
}
}
},
{
"contains": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"const": "junit"
}
}
}
}
]
},
"familyBudgets": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/familyBudget"
}
}
},
"$defs": {
"lane": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"governanceClass",
"description",
"intendedAudience",
"includedFamilies",
"excludedFamilies",
"ownershipExpectations",
"defaultEntryPoint",
"parallelMode",
"selectors",
"artifacts",
"budget",
"dbStrategy"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"governanceClass": {
"type": "string",
"enum": [
"fast",
"confidence",
"heavy",
"support"
]
},
"description": {
"type": "string",
"minLength": 1
},
"intendedAudience": {
"type": "string",
"minLength": 1
},
"includedFamilies": {
"$ref": "#/$defs/stringArray"
},
"excludedFamilies": {
"$ref": "#/$defs/stringArray"
},
"ownershipExpectations": {
"type": "string",
"minLength": 1
},
"defaultEntryPoint": {
"type": "boolean"
},
"parallelMode": {
"type": "string",
"enum": [
"required",
"optional",
"forbidden"
]
},
"selectors": {
"$ref": "#/$defs/selectors"
},
"artifacts": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/artifactType"
},
"uniqueItems": true
},
"budget": {
"$ref": "#/$defs/budget"
},
"dbStrategy": {
"$ref": "#/$defs/dbStrategy"
},
"notes": {
"type": "string"
}
},
"allOf": [
{
"if": {
"properties": {
"artifacts": {
"contains": {
"const": "profile-top"
}
}
}
},
"then": {
"properties": {
"parallelMode": {
"const": "forbidden"
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "fast-feedback"
}
}
},
"then": {
"properties": {
"defaultEntryPoint": {
"const": true
},
"parallelMode": {
"const": "required"
},
"budget": {
"required": [
"baselineDeltaTargetPercent"
],
"properties": {
"baselineDeltaTargetPercent": {
"const": 50
}
}
},
"excludedFamilies": {
"allOf": [
{
"contains": {
"const": "browser"
}
},
{
"contains": {
"const": "heavy-governance"
}
}
]
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "confidence"
}
}
},
"then": {
"properties": {
"parallelMode": {
"const": "required"
},
"includedFamilies": {
"allOf": [
{
"contains": {
"const": "unit"
}
},
{
"contains": {
"const": "non-browser-feature-integration"
}
}
]
},
"excludedFamilies": {
"allOf": [
{
"contains": {
"const": "browser"
}
},
{
"contains": {
"const": "heavy-governance"
}
}
]
},
"selectors": {
"properties": {
"includeSuites": {
"contains": {
"const": "Unit"
}
},
"excludeSuites": {
"contains": {
"const": "Browser"
}
}
},
"anyOf": [
{
"properties": {
"includePaths": {
"minItems": 1
}
}
},
{
"properties": {
"includeGroups": {
"minItems": 1
}
}
},
{
"properties": {
"includeFiles": {
"minItems": 1
}
}
}
]
},
"defaultEntryPoint": {
"const": false
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "browser"
}
}
},
"then": {
"properties": {
"governanceClass": {
"const": "heavy"
},
"includedFamilies": {
"contains": {
"const": "browser"
}
},
"selectors": {
"properties": {
"includeSuites": {
"contains": {
"const": "Browser"
}
}
},
"required": [
"includeSuites"
]
},
"defaultEntryPoint": {
"const": false
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "heavy-governance"
}
}
},
"then": {
"properties": {
"defaultEntryPoint": {
"const": false
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "profiling"
}
}
},
"then": {
"properties": {
"governanceClass": {
"const": "support"
},
"defaultEntryPoint": {
"const": false
},
"artifacts": {
"contains": {
"const": "profile-top"
}
}
}
}
},
{
"if": {
"properties": {
"id": {
"const": "junit"
}
}
},
"then": {
"properties": {
"governanceClass": {
"const": "support"
},
"defaultEntryPoint": {
"const": false
},
"artifacts": {
"contains": {
"const": "junit-xml"
}
}
}
}
}
]
},
"selectors": {
"type": "object",
"additionalProperties": false,
"required": [
"includeSuites",
"includePaths",
"includeGroups",
"includeFiles",
"excludeSuites",
"excludePaths",
"excludeGroups",
"excludeFiles"
],
"properties": {
"includeSuites": {
"$ref": "#/$defs/stringArray"
},
"includePaths": {
"$ref": "#/$defs/stringArray"
},
"includeGroups": {
"$ref": "#/$defs/stringArray"
},
"includeFiles": {
"$ref": "#/$defs/stringArray"
},
"excludeSuites": {
"$ref": "#/$defs/stringArray"
},
"excludePaths": {
"$ref": "#/$defs/stringArray"
},
"excludeGroups": {
"$ref": "#/$defs/stringArray"
},
"excludeFiles": {
"$ref": "#/$defs/stringArray"
}
},
"anyOf": [
{
"properties": {
"includeSuites": {
"minItems": 1
}
}
},
{
"properties": {
"includePaths": {
"minItems": 1
}
}
},
{
"properties": {
"includeGroups": {
"minItems": 1
}
}
},
{
"properties": {
"includeFiles": {
"minItems": 1
}
}
}
]
},
"budget": {
"type": "object",
"additionalProperties": false,
"required": [
"thresholdSeconds",
"baselineSource",
"enforcement",
"lifecycleState"
],
"properties": {
"thresholdSeconds": {
"type": "integer",
"minimum": 1
},
"baselineSource": {
"type": "string",
"enum": [
"measured-current-suite",
"measured-lane"
]
},
"enforcement": {
"type": "string",
"enum": [
"report-only",
"warn",
"hard-fail"
]
},
"lifecycleState": {
"type": "string",
"enum": [
"draft",
"measured",
"documented",
"enforced"
]
},
"baselineDeltaTargetPercent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"notes": {
"type": "string"
},
"reviewCadence": {
"type": "string"
}
}
},
"familyBudget": {
"type": "object",
"additionalProperties": false,
"required": [
"familyId",
"selectorType",
"selectors",
"thresholdSeconds",
"baselineSource",
"enforcement",
"lifecycleState"
],
"properties": {
"familyId": {
"type": "string",
"minLength": 1
},
"selectorType": {
"type": "string",
"enum": [
"testsuite",
"path",
"group",
"file"
]
},
"selectors": {
"$ref": "#/$defs/stringArray",
"minItems": 1
},
"thresholdSeconds": {
"type": "integer",
"minimum": 1
},
"baselineSource": {
"type": "string",
"enum": [
"measured-current-suite",
"measured-lane"
]
},
"enforcement": {
"type": "string",
"enum": [
"report-only",
"warn",
"hard-fail"
]
},
"lifecycleState": {
"type": "string",
"enum": [
"draft",
"measured",
"documented",
"enforced"
]
},
"notes": {
"type": "string"
},
"reviewCadence": {
"type": "string"
}
}
},
"dbStrategy": {
"type": "object",
"additionalProperties": false,
"required": [
"connectionMode",
"resetStrategy",
"seedsPolicy"
],
"properties": {
"connectionMode": {
"type": "string",
"enum": [
"sqlite-memory",
"pgsql",
"mixed"
]
},
"resetStrategy": {
"type": "string",
"enum": [
"none",
"refresh-database",
"dedicated-suite"
]
},
"seedsPolicy": {
"type": "string",
"enum": [
"forbidden",
"restricted",
"allowed-by-exception"
]
},
"schemaBaselineCandidate": {
"type": "boolean",
"default": false
}
}
},
"artifactType": {
"type": "string",
"enum": [
"summary",
"junit-xml",
"profile-top",
"budget-report"
]
},
"stringArray": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true,
"default": []
}
}
}