The monolithic open-questions.md (1310 lines, 47 OQs) was large enough to be unmanageable, with high size variance (OQ-42 at 220 lines next to OQ-06 at 8). Decomposed into one file per OQ under docs/architecture/questions/ (NNN-slug.md, mirroring the ADR convention), with open-questions.md retained as the index: theme-grouped tables plus a cross-theme Deferred/Blocked section that surfaces the 6 deferred OQs with their Blocked-on conditions inline (the safe-exit visibility surface). Per-OQ content moved verbatim; all 62 inbound links stay valid (none used anchors). README's curated OQ summary dropped (now redundant with the index tables). Also seeds tasks/architecture/ with this task plus two follow-ups found during the decompose: OQ-09/10 missing structured Blocked-on fields, and the tasks/architecture/ blocker-task half of the Safe Exit protocol being unenforced.
1.4 KiB
1.4 KiB
OQ-24: Operation Error Schemas
- Origin: operation-registry.md, call-protocol.md, ADR-017
- Status: resolved
- Door type: One-way (wire format), two-way (mapping mechanism)
- Priority: high
- Resolution:
OperationSpecgainserror_schemas: Vec<ErrorDefinition>where eachErrorDefinitioncarries acode,description,schema(JSON Schema for the error detail payload), and optionalhttp_status(for adapter projection). Thecall.errorpayload gains an optionaldetailsfield carrying the typed error payload. Protocol-level codes (NOT_FOUND,FORBIDDEN,INVALID_INPUT,INVALID_OPERATION_TYPE,INTERNAL,TIMEOUT) are distinct from operation-level domain codes (FILE_NOT_FOUND,RATE_LIMITED, etc.) — protocol codes are emitted by the dispatch machinery, operation codes by handlers. The six-code protocol-level list was extended from five by ADR-049 (INVALID_OPERATION_TYPE).from_openapi/to_openapimap OpenAPI response status codes to/fromErrorDefinitions, making the adapter contract from ADR-017 faithful on the error axis.services/schemaexposeserror_schemasfor client code generation. See ADR-023. - Cross-references: ADR-017, ADR-023, docs/reviews/001-pre-implementation-architecture-sanity-check.md (C5), operation-registry.md, call-protocol.md