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
{{ message }}
Repository navigation
schema sync: loose ends of publishing column changes (#32848) — ADR-0113 D5 wording, MySQL lock wait and COMMENT, cli.mdx table, Turso remote pin #32883
Review follow-up of #32590 (PR #32848, seat review PASS on 038057cd). Nits from that review, filed instead of a rework round.
Filing gate: ② review nits (review-checklist: small findings go to a follow-up card under the source card). class: b · type: Hardening · Suggested-grade: p2 · lane: domain:server (triage to confirm).
N2 — MySQL lock wait. On MySQL, MODIFY waits without a limit on its table metadata lock. The Postgres arm now bounds its wait to 5 s. Bound the MySQL wait too, minding that the timeout is per connection on pooled connections.
N3 — MySQL COMMENT.MODIFY drops any column COMMENT. Carry it over, or record why not.
N5 — Turso remote pin. Add an end-to-end test that the Turso remote path's skipped rebuild reaches the object-column-changes-not-applied advisory.
N6 — Postgres re-read under the lock (optional). Every replica takes the exclusive lock just to re-read the column (now time-limited). Optionally check the type before locking.
Not here: the Postgres datetime → date time-zone read is #32851.
Claim: area-lease pilot #33059, area thread A4 (data layer) · p3 (no claimable p1/p2 left in A4) · dispatched to an os-dev subagent of this area thread · N4 + N5 in one PR (Part of #32883); N1 (ADR-0113, governed) in its own PR for the seat; N2/N3 (MySQL-only) and N6 (optional) reported, not done here
Session: session_016WV4cw787kMeaX7oyz7DDC (area thread; subagent of it)
Account: os-elon-musk
Branch: claude/area-A4-32883
Worktree: objectstack-a4-32883
Domain: domain:server
Seat: domain:server#5
File surface: content/docs/deployment/cli.mdx, packages/drivers/driver-turso/** tests, docs/adr/0113-required-write-contract-vs-column-constraint.md (N1, separate branch claude/area-A4-32883-adr). Stop on breach.
Container & model: M, mode:subagent, model: default, effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: the cli.mdx classification table matches what publish applies; a Turso remote skipped rebuild is pinned to reach the object-column-changes-not-applied advisory; ADR-0113 D5 states the reported storage.notNull: false
Thread-read: none
Premise: re-read at origin/main before any edit
Serial constraints cleared: no open PR of this area touches these files
{
"issue": 32883,
"status": "done",
"branch": "claude/area-A4-32883 (N4 + N5) and claude/area-A4-32883-adr (N1)",
"pr": "https://github.com/objectstack-ai/objectstack/pull/33387 (N4 + N5, Part of #32883); https://github.com/objectstack-ai/objectstack/pull/33382 (N1, governed docs/adr, draft for the seat)",
"session": "session_016WV4cw787kMeaX7oyz7DDC",
"premise_still_valid": true,
"summary": "N4: cli.mdx drift table moves relax NOT NULL from safe to needs_confirm (schema-drift.ts classes both relax_not_null arms needs_confirm; dev auto-reconcile applies safe only), adds widen_date_to_datetime to the safe row, and adds a paragraph on what the publish of an object applies (every safe column change plus a relax_not_null whose field declares storage.notNull false; index changes stay with os migrate apply; an unapplied change answers the object-column-changes-not-applied warning). The same misclassification was corrected in the page's plan example (relax_not_null rendered under Needs confirmation) and the dev self-heal callout. N5: a Turso REMOTE describe in packages/runtime/src/domains/meta-object-publish-column-changes.test.ts publishes storage.notNull true to false over a libsql:// driver backed by an @libsql/client file client; it asserts publish success, one warning advisory object-column-changes-not-applied naming 'title' (relax_not_null), and notnull=1 still in the file. Placed in the runtime harness, not driver-turso, because the advisory is produced by metadata-protocol, which driver-turso does not depend on (deviation from the card's reader path, stated in the PR). N1: one sentence in ADR-0113 D5, separate draft PR. N2, N3 and N6 not done, per the dispatch.",
"tests": "At 11c91b454: pnpm --filter @objectstack/runtime exec vitest run --maxWorkers=2 src/domains/meta-object-publish-column-changes.test.ts gives Test Files 1 passed (1), Tests 4 passed (4), lock VERDICT command-exit 0; the log shows 'relax_not_null on leave_request.title is unsupported on the Turso REMOTE transport, skipped'. pnpm --filter @objectstack/runtime typecheck exit 0 (tsc and check:test-typecheck OK). Ablation, change committed first, driver-turso resolves to src in the runtime vitest config: scripts/ablation-replace.mjs removed skipped.push(d) on the needs-table-rebuild arm of TursoDriver.applyMigrationEntries (anchor x1 to x0, blob 22c770ffb78c to 168795236a53); Turso test red with expected [] to deeply equal [ 'warning' ], 1 failed / 3 passed; restored blob 22c770ffb78c = HEAD, git diff HEAD empty. Declared narrowing: full runtime suite not run locally (one test file changed, no source), Test Core carries it in CI.",
"gates": "Main PR at 11c91b454: dispatch-gates --commands derived 81 families; 79 exit 0 on the first pass; spec check:skill-examples and check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, no dist) first, then exit 0 after the full build check:type-check-debt runs; dispatch-gates --ran: 81 accounted, 81 run, 0 NOT-MEASURED. ADR PR at 2f46edaa5: 21 derived; 20 exit 0; lint check:doc-formula-expressions exit 3 (formula not built in that worktree), NOT MEASURED locally, CI carries it; --ran: 21 accounted. CI at report time: 33387 checks in_progress; 33382 Governed Surface Queue Guard success, Dogfood Regression Gate success, PR-body guards success, Check Changeset failure (no changeset, needs skip-changeset), Type Check, Lint and Test Core still in_progress.",
"dogfood_battery": "n/a: no ! in either PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "3: relay pr_create for 33382 (with its assignees leg), relay pr_create for 33387 (with its assignees leg), post-stamped os-dev-report comment on issues/32883/comments. Plus 4 git pushes (not REST).",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: #32883 · N6 (optional Postgres re-read under the lock) skipped as the dispatch said; N2/N3 MySQL-only, left on the card",
"carrier: #32883 · cli.mdx os migrate table and example still say apply 'Applies loosening changes' / 'Apply safe (loosening) changes', while applyMigrationEntries also applies needs_confirm entries (only destructive needs --allow-destructive); docs wording only, noted, not filed",
"carrier: seat · both PRs publish nothing (content/docs, a runtime test outside files[], docs/adr): each needs the skip-changeset label; 33382 Check Changeset is already red for that reason; not attached by the dev"
]
}
Activity
date→datetimekeeps a DATE column (times silently truncated), andrequired: true→falsekeeps NOT NULL (create refused with "<field> 不能为空") #32590objectstack-fleet commentedon Nov 13, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: first-touch audit (pre-labeled card) ·
p2→p3· 2026-11-13T08:14Z⛔ Not a claim; the claim (if any) is unchanged.
Generated by Claude Code
objectstack-fleet commentedon Nov 14, 2026
domain:server#5 · os-elon-musk · session_016WV4cw787kMeaX7oyz7DDC
Claim: area-lease pilot #33059, area thread A4 (data layer) · p3 (no claimable p1/p2 left in A4) · dispatched to an os-dev subagent of this area thread · N4 + N5 in one PR (Part of #32883); N1 (ADR-0113, governed) in its own PR for the seat; N2/N3 (MySQL-only) and N6 (optional) reported, not done here
Session:
session_016WV4cw787kMeaX7oyz7DDC(area thread; subagent of it)Account:
os-elon-muskBranch:
claude/area-A4-32883Worktree:
objectstack-a4-32883Domain:
domain:serverSeat:
domain:server#5File surface: content/docs/deployment/cli.mdx, packages/drivers/driver-turso/** tests, docs/adr/0113-required-write-contract-vs-column-constraint.md (N1, separate branch
claude/area-A4-32883-adr). Stop on breach.Container & model:
M,mode:subagent,model: default,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: the cli.mdx classification table matches what publish applies; a Turso remote skipped rebuild is pinned to reach the
object-column-changes-not-appliedadvisory; ADR-0113 D5 states the reportedstorage.notNull: falseThread-read: none
Premise: re-read at
origin/mainbefore any editSerial constraints cleared: no open PR of this area touches these files
objectstack-fleet commentedon Nov 14, 2026
domain:server#5 · os-elon-musk · session_016WV4cw787kMeaX7oyz7DDC
os-dev-report
{ "issue": 32883, "status": "done", "branch": "claude/area-A4-32883 (N4 + N5) and claude/area-A4-32883-adr (N1)", "pr": "https://github.com/objectstack-ai/objectstack/pull/33387 (N4 + N5, Part of #32883); https://github.com/objectstack-ai/objectstack/pull/33382 (N1, governed docs/adr, draft for the seat)", "session": "session_016WV4cw787kMeaX7oyz7DDC", "premise_still_valid": true, "summary": "N4: cli.mdx drift table moves relax NOT NULL from safe to needs_confirm (schema-drift.ts classes both relax_not_null arms needs_confirm; dev auto-reconcile applies safe only), adds widen_date_to_datetime to the safe row, and adds a paragraph on what the publish of an object applies (every safe column change plus a relax_not_null whose field declares storage.notNull false; index changes stay with os migrate apply; an unapplied change answers the object-column-changes-not-applied warning). The same misclassification was corrected in the page's plan example (relax_not_null rendered under Needs confirmation) and the dev self-heal callout. N5: a Turso REMOTE describe in packages/runtime/src/domains/meta-object-publish-column-changes.test.ts publishes storage.notNull true to false over a libsql:// driver backed by an @libsql/client file client; it asserts publish success, one warning advisory object-column-changes-not-applied naming 'title' (relax_not_null), and notnull=1 still in the file. Placed in the runtime harness, not driver-turso, because the advisory is produced by metadata-protocol, which driver-turso does not depend on (deviation from the card's reader path, stated in the PR). N1: one sentence in ADR-0113 D5, separate draft PR. N2, N3 and N6 not done, per the dispatch.", "tests": "At 11c91b454: pnpm --filter @objectstack/runtime exec vitest run --maxWorkers=2 src/domains/meta-object-publish-column-changes.test.ts gives Test Files 1 passed (1), Tests 4 passed (4), lock VERDICT command-exit 0; the log shows 'relax_not_null on leave_request.title is unsupported on the Turso REMOTE transport, skipped'. pnpm --filter @objectstack/runtime typecheck exit 0 (tsc and check:test-typecheck OK). Ablation, change committed first, driver-turso resolves to src in the runtime vitest config: scripts/ablation-replace.mjs removed skipped.push(d) on the needs-table-rebuild arm of TursoDriver.applyMigrationEntries (anchor x1 to x0, blob 22c770ffb78c to 168795236a53); Turso test red with expected [] to deeply equal [ 'warning' ], 1 failed / 3 passed; restored blob 22c770ffb78c = HEAD, git diff HEAD empty. Declared narrowing: full runtime suite not run locally (one test file changed, no source), Test Core carries it in CI.", "gates": "Main PR at 11c91b454: dispatch-gates --commands derived 81 families; 79 exit 0 on the first pass; spec check:skill-examples and check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, no dist) first, then exit 0 after the full build check:type-check-debt runs; dispatch-gates --ran: 81 accounted, 81 run, 0 NOT-MEASURED. ADR PR at 2f46edaa5: 21 derived; 20 exit 0; lint check:doc-formula-expressions exit 3 (formula not built in that worktree), NOT MEASURED locally, CI carries it; --ran: 21 accounted. CI at report time: 33387 checks in_progress; 33382 Governed Surface Queue Guard success, Dogfood Regression Gate success, PR-body guards success, Check Changeset failure (no changeset, needs skip-changeset), Type Check, Lint and Test Core still in_progress.", "dogfood_battery": "n/a: no ! in either PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "3: relay pr_create for 33382 (with its assignees leg), relay pr_create for 33387 (with its assignees leg), post-stamped os-dev-report comment on issues/32883/comments. Plus 4 git pushes (not REST).", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: #32883 · N6 (optional Postgres re-read under the lock) skipped as the dispatch said; N2/N3 MySQL-only, left on the card", "carrier: #32883 · cli.mdx os migrate table and example still say apply 'Applies loosening changes' / 'Apply safe (loosening) changes', while applyMigrationEntries also applies needs_confirm entries (only destructive needs --allow-destructive); docs wording only, noted, not filed", "carrier: seat · both PRs publish nothing (content/docs, a runtime test outside files[], docs/adr): each needs the skip-changeset label; 33382 Check Changeset is already red for that reason; not attached by the dev" ] }