Files
silo-server/docs/design/schemas/client-diagnostics/v1/logline.schema.json
Quick104andClaude Fable 5 4fa84a661a feat(diagnostics): client diagnostics server foundation
Implements slice 1 of docs/design/2026-07-19-client-diagnostics.md: the
versioned contract (schemas, fixtures, Go validator), storage-validated
diagnostics.uploads_enabled gate, account-scoped status endpoint, hardened
streaming multipart ingest with quota reservation and a receiving/ready/
failed report state machine, S3 streaming puts, acting-admin report API
(list/detail/download/delete with audit events), and the retention +
orphan-reconciliation cleanup task.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XppCCycoaskCsW7ja1fZct
2026-07-20 11:13:52 -04:00

96 lines
1.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://silo-server.dev/schemas/client-diagnostics/v1/logline.schema.json",
"title": "Silo Client Diagnostics Log Line v1",
"type": "object",
"required": [
"ts",
"run",
"lvl",
"cat",
"tag",
"msg"
],
"properties": {
"ts": {
"type": "string",
"format": "date-time",
"maxLength": 64
},
"run": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"lvl": {
"type": "string",
"enum": [
"V",
"D",
"I",
"W",
"E"
],
"maxLength": 1
},
"cat": {
"type": "string",
"enum": [
"playback",
"focus",
"network",
"lifecycle",
"browse",
"cast",
"download",
"crash",
"other"
],
"maxLength": 32
},
"tag": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"msg": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"attrs": {
"type": "object",
"description": "Attribute keys are registered in attr-registry.json. Production clients drop unregistered keys before upload.",
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 512
},
{
"type": "number"
},
{
"type": "integer"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"maxItems": 32,
"items": {
"type": "string",
"maxLength": 256
}
}
]
}
}
},
"additionalProperties": true
}