You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(docs): recursive field diff in check:openapi + the deep drift it found
A mutation test showed the doc<->contract field diff only compared
top-level properties, so a typo inside the { data } envelope passed.
The diff now descends through matching object properties and array
items (both sides must expose a property set — passthrough contracts
and prose-only docs end the descent instead of false-positive), with
the Zod JSON-schema root doubling as the $defs context.
Deep drift it immediately caught, fixed here: select-column config
(options/multiple) missing from every tables column schema, AddColumnBody
hand-rolling a third column shape (now composed from ColumnInput, with
position/workflowGroupId as the per-op extensions the contracts actually
admit), chunking strategyOptions undocumented, and the deployment
lifecycle fields (activeDeployment/latestDeploymentAttempt) missing from
DeploymentState.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CiHhAk2R1NryaS3R8n2yFz
"description": "Strategy-specific tuning. `pattern`/`strictBoundaries` apply to the `regex` strategy; `separators` to `text`; `recipe` to `recursive`.",
"description": "Whether the column requires a value on insert."
1856
-
},
1857
-
"unique": {
1858
-
"type": "boolean",
1859
-
"default": false,
1860
-
"description": "Whether values in this column must be unique across all rows."
1861
-
},
1862
-
"position": {
1863
-
"type": "integer",
1864
-
"minimum": 0,
1865
-
"description": "Zero-based insert position in the column order. Appended at the end when omitted."
1879
+
{
1880
+
"type": "object",
1881
+
"properties": {
1882
+
"position": {
1883
+
"type": "integer",
1884
+
"minimum": 0,
1885
+
"description": "Zero-based insert position in the column order. Appended at the end when omitted."
1886
+
}
1887
+
}
1866
1888
}
1867
-
}
1889
+
],
1890
+
"description": "The column definition to add."
1868
1891
}
1869
1892
}
1870
1893
},
@@ -1906,6 +1929,17 @@
1906
1929
"unique": {
1907
1930
"type": "boolean",
1908
1931
"description": "Whether values in this column must be unique across all rows."
1932
+
},
1933
+
"options": {
1934
+
"type": "array",
1935
+
"items": {
1936
+
"$ref": "#/components/schemas/SelectOption"
1937
+
},
1938
+
"description": "Declared options for a `select` column; absent on other types."
1939
+
},
1940
+
"multiple": {
1941
+
"type": "boolean",
1942
+
"description": "A `select` column that accepts multiple options per cell."
1909
1943
}
1910
1944
}
1911
1945
}
@@ -2428,6 +2462,21 @@
2428
2462
"description": "Operand. Omit for the `is*` operators. Ranges on `number` columns require numbers, on `date` columns ISO strings (compared as UTC, independent of any session timezone); ranges on `boolean`/`json` columns are rejected."
2429
2463
}
2430
2464
}
2465
+
},
2466
+
"SelectOption": {
2467
+
"type": "object",
2468
+
"required": ["id", "name"],
2469
+
"properties": {
2470
+
"id": {
2471
+
"type": "string",
2472
+
"description": "Stable option id — the value stored in cells."
"description": "Summary of the currently live deployment version, or null when none is active."
975
+
},
976
+
"latestDeploymentAttempt": {
977
+
"type": ["object", "null"],
978
+
"description": "Lifecycle status of the most recent deploy attempt (preparing/activating/active/failed/superseded) — poll this to a terminal state; deploys admit asynchronously, so HTTP success only means the attempt was accepted."
0 commit comments