object — Additional properties rejected
| Field | Required at this level | Type | Description and constraints |
|---|---|---|---|
schemaVersion |
Yes | Constant agent-project-health-report-v1 |
— |
classification |
Yes | Constant PUBLIC_MARKET |
— |
organizationId |
Yes | string |
Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$ |
runId |
Yes | string |
Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$ |
projectId |
Yes | string |
Pattern: ^project_[0-9a-f]{32}$ |
captureHash |
Yes | string |
Pattern: ^0x[0-9a-f]{64}$ |
sourceCutoff |
Yes | string |
Format: date-time |
status |
Yes | string |
Allowed: PARTIAL, ABSTAINED |
marketHealth |
Yes | Constant NOT_ASSESSED |
— |
findings |
Yes | Array of ProjectHealthFinding | Max items: 12 |
gaps |
Yes | Array of string |
Max items: 24; Items must be unique |
nextChecks |
Yes | Array of string |
Max items: 4; Items must be unique |
evidence |
Yes | Array of SavedProjectObservation | Min items: 1; Max items: 2 |
financialAuthority |
Yes | Constant false |
— |
Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.
Exact definition: #/components/schemas/ProjectHealthReport in the OpenAPI contract.