2.1 KiB
2.1 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| analysis/type-compat | Implement typeCompat function — deep structural schema compatibility checking | completed |
|
moderate | high | phase | implementation |
Description
Implement the typeCompat function that performs deep recursive structural comparison between two TypeBox schemas to determine if an output schema is compatible with an input schema. This is the core of the operation graph's type-compatibility edge construction.
Acceptance Criteria
typeCompat(outputSchema: TSchema, inputSchema: TSchema): TypeCompatResult— standalone function insrc/analysis/type-compat.tsTypeCompatResult:{ compatible: boolean; detail?: string; mismatches?: TypeMismatch[] }TypeMismatch:{ path: string; expected: string; actual: string }- Exact match →
compatible: true - Output is superset of input (output has extra fields beyond input requirements) →
compatible: true - Output is subset of input (output missing required fields) →
compatible: falsewith mismatches - Type mismatch at field level →
compatible: falsewith mismatches at that path - Either schema is
Type.Unknown()→ return nothing / undefined (no edge should be created, compatibility unknown) - Handles: nested objects (recursive), arrays (element type comparison), optional fields, union types (subtype checking)
- Subtype checking: output must be at least as specific as input (string compatible with string|number, but NOT reverse)
mismatchesarray provides JSON-path level diagnostics for incompatible results- Unit tests: exact match, superset, subset, type mismatch, unknown passthrough, nested objects, arrays, unions, optional fields, complex realistic schemas
References
- docs/architecture/analysis.md — typeCompat contract, compatibility rules, depth of checking, subtype rules
- docs/architecture/schema.md — TypeCompatResult, TypeMismatch interfaces
Notes
To be filled by implementation agent
Summary
To be filled on completion