Represent absent pages in Table and snapshots - #5770
Merged
Merged
Conversation
Preparation for freeing empty pages. Because the snapshot format depends on the density of page vectors and didn't previously reserve a sentinel, to preserve rollback safety we have to do this preparation step before actually implementing freeing pages as part of the row delete operation. In this PR, the `Table`/`Pages` switches to a `Vec<Option<Box<Page>>>`, with pages allowed to be absent. However, until a later patch, outside of tests, no page entry will ever be `None`. The table code is still able to use and reason about `None` page entries, as they may arise if we deploy said later patch, free a page, capture a snapshot, then roll back to this version. In the snapshot format, absent pages are recorded in the pages vec as the all-zeroes hash. Page objects are not written or read in this case; the all-zeroes hash does not correspond to an actual object on disk. When allocating a new page, we attempt to fill the lowest empty slot. We do this in log time by storing a `BTreeSet` of the empty slots, and popping the lowest value from it to use as the slot for the newly allocated page. I believe that for at least some access patterns, this should allow us to gradually converge on a dense array of pages in the case where rows are deleted at a higher rate than new inserts.
2 tasks done
As discussed in the follow-up PR, the benchmarks in the `table` crate appear to have bit-rotted significantly, and fail when run under `cargo test --benches`. I have not endeavored to fix those runtime failures, as I believe them to have been pre-existing, but I have removed any of the benchmarks which no longer compile due to the changes in this branch.
Contributor
Author
|
Manual testing of rollback safety: $ git status
On branch phoebe/free-empty-pages/free-during-delete
# That's the branch from the next PR, #5771.
$ nix build
-- SNIP --
$ result/bin/spacetime server clear
WARNING: This command is UNSTABLE and subject to breaking changes.
Database path: /home/phoebe/.local/share/spacetime/data
Are you sure you want to delete all data from the local database? [y/N]y
Deleted database: /home/phoebe/.local/share/spacetime/data
$ result/bin/spacetime start > server-logs.txt 2>&1 &
# lib.rs for this module is attached.
$ result/bin/spacetime publish --server local --module-path ../../page-alloc-thrashing/spacetimedb/ page-alloc-thrashing
-- SNIP --
$ result/bin/spacetime logs -s local page-alloc-thrashing -n 10
2026-08-21T15:41:13.504599Z INFO: run_loop src/lib.rs:82: Running loop iteration 169880
2026-08-21T15:41:13.506351Z INFO: run_loop src/lib.rs:82: Running loop iteration 169881
2026-08-21T15:41:13.508498Z INFO: run_loop src/lib.rs:82: Running loop iteration 169882
2026-08-21T15:41:13.509593Z INFO: run_loop src/lib.rs:82: Running loop iteration 169883
2026-08-21T15:41:13.510622Z INFO: run_loop src/lib.rs:82: Running loop iteration 169884
2026-08-21T15:41:13.511707Z INFO: run_loop src/lib.rs:82: Running loop iteration 169885
2026-08-21T15:41:13.512798Z INFO: run_loop src/lib.rs:82: Running loop iteration 169886
2026-08-21T15:41:13.513887Z INFO: run_loop src/lib.rs:82: Running loop iteration 169887
2026-08-21T15:41:13.514911Z INFO: run_loop src/lib.rs:82: Running loop iteration 169888
2026-08-21T15:41:13.516017Z INFO: run_loop src/lib.rs:82: Running loop iteration 169889
# Wait patiently...
# On my machine, I do about 1024 iterations/TXes in 1.5 seconds.
# I imagine this is mostly attributable to the overhead of the scheduler,
# and could be dramatically improved by having a client shove requests in via a WebSocket.
$ ls ~/.local/share/spacetime/data/replicas/1/snapshots/
00000000000000000000.snapshot_dir 00000000000001000000.snapshot_dir
$ fg
result/bin/spacetime start > server-logs.txt 2>&1
^C
$ hexdump -x ~/.local/share/spacetime/data/replicas/1/snapshots/00000000000001000000.snapshot_dir/00000000000001000000.snapshot_bsatn
-- SNIP --
# Observe some blocks of zeroes in there.
$ git checkout phoebe/free-empty-pages/snapshot-format-sentinel
Switched to branch 'phoebe/free-empty-pages/snapshot-format-sentinel'
$ nix build
-- SNIP --
$ result/bin/spacetime start > server-logs-reload.txt 2>&1 &
-- SNIP --
$ result/bin/spacetime logs -s local page-alloc-thrashing -n 10 -f
2026-08-21T16:22:23.556253Z INFO: run_loop src/lib.rs:83: Running loop iteration 929792
2026-08-21T16:22:25.225354Z INFO: run_loop src/lib.rs:83: Running loop iteration 930816
2026-08-21T16:22:26.881702Z INFO: run_loop src/lib.rs:83: Running loop iteration 931840
2026-08-21T16:22:28.542179Z INFO: run_loop src/lib.rs:83: Running loop iteration 932864
2026-08-21T16:22:30.163726Z INFO: run_loop src/lib.rs:83: Running loop iteration 933888
2026-08-21T16:22:31.774820Z INFO: run_loop src/lib.rs:83: Running loop iteration 934912
2026-08-21T16:22:33.417616Z INFO: run_loop src/lib.rs:83: Running loop iteration 935936
2026-08-21T16:22:35.056625Z INFO: run_loop src/lib.rs:83: Running loop iteration 936960
2026-08-21T16:22:36.699834Z INFO: run_loop src/lib.rs:83: Running loop iteration 937984
2026-08-21T16:22:38.362725Z INFO: run_loop src/lib.rs:83: Running loop iteration 939008
2026-08-21T16:28:37.357073Z INFO: run_loop src/lib.rs:83: Running loop iteration 940032
2026-08-21T16:28:39.163325Z INFO: run_loop src/lib.rs:83: Running loop iteration 941056
2026-08-21T16:28:40.961482Z INFO: run_loop src/lib.rs:83: Running loop iteration 942080
2026-08-21T16:28:42.762467Z INFO: run_loop src/lib.rs:83: Running loop iteration 943104
^C
# It replayed successfully and is now printing more logs, showing that it's doing more transactions. |
…ages/snapshot-format-sentinel
gefjon
marked this pull request as ready for review
August 21, 2026 16:37
Per Joshua's request, remove these methods (and the stuff that depends on them) now, rather than leaving them in place here to be cleaned up by the next PR.
joshua-spacetime
approved these changes
Aug 21, 2026
joshua-spacetime
left a comment
Collaborator
There was a problem hiding this comment.
LGTM pending the update to the "number of files in snapshot" metric.
Contributor
Author
|
Ah, nuts, I made both of those changes on the wrong branch. Cherry-picking. |
Per Joshua's review, this commit adds a new metric, `spacetime_replay_snapshot_num_absent_pages`. Pages which aren't read from files due to having the all-zeroes hash are counted towards that metric and not towards the existing `spacetime_replay_snapshot_num_objects_read`.
…ages/snapshot-format-sentinel
gefjon
enabled auto-merge
August 22, 2026 01:17
pull Bot
pushed a commit
to Abaso007/SpacetimeDB
that referenced
this pull request
Sep 9, 2026
) ## Summary - Update automatic migration docs to reflect empty-table removal behavior. - Document accessor/source-name metadata changes and index accessor rename limits. - Add a public MCP reference covering `spacetime mcp`, host-wide vs database-scoped tool shapes, permissions, and common errors. - Align the TypeScript server skill and bundled plugin copy so scheduled procedures point to `onSchedule`. - Fix the TypeScript procedures reference so it no longer claims `spacetimedb.procedure` takes a procedure name argument. - Clarify scheduled interval timing and connection ID availability in reducer context docs. # API and ABI breaking changes n/a # Rollback safety impact n/a # Expected complexity level and risk 1 - docs-only audit updates. ## Audit notes - Baseline: existing open `bot/docs-audit` PR clockworklabs#5723; merged current `origin/master` into `bot/docs-audit` before today's audit pass. - 2026-08-15 commit-impact pass checked new master commits `b1291ee11` / clockworklabs#5751 (C# HTTP timeout clamp), `0948a1b3b` / clockworklabs#5752 (2.8.2 version bump), and `524b4487d` / clockworklabs#5583 (LLM benchmark evals and server skill updates). - Checked the changed server skill guidance from clockworklabs#5583 against public docs for procedures, HTTP, scheduled procedures, views/query-builder views, view primary keys, client visibility filters, schedule tables, defaults, lifecycle connection IDs, and deterministic context guidance. - Checked clockworklabs#5751 against public procedure HTTP docs; the 30-second default and 180-second maximum timeout are already documented. - 2026-08-16 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, MCP, scheduling, and cross-language examples. - Source PR for the 2026-08-16 correction: clockworklabs#5728 documented TypeScript `onSchedule` registration for scheduled reducers/procedures; the TypeScript server skill still had one stale scheduled-procedure sentence and the plugin skill copy had not been synced. - 2026-08-17 commit-impact pass found no new `origin/master` commits after the 2026-08-16 audit baseline. - 2026-08-17 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, MCP, scheduling, and cross-language examples. - The 2026-08-17 correction is not from a new master PR; it aligns the TypeScript procedures reference with current TypeScript module examples/tests and the TypeScript server skill. Procedure names come from exported values, not a name argument to `spacetimedb.procedure`. - 2026-08-18 commit-impact pass checked new master commits `053742688` / clockworklabs#5735 (scheduled functions reschedule from intended execution time and skip missed interval ticks) and `e1da590b7` / clockworklabs#5732 (submodule function call separators docs fix). - Source PR for the 2026-08-18 scheduler correction: clockworklabs#5735 changed interval rescheduling semantics; schedule table docs now state that missed interval ticks are skipped and future ticks stay anchored to intended run times. - 2026-08-18 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, scheduling, lifecycle contexts, and cross-language consistency. - The reducer context reference previously said lifecycle reducers may lack `connectionId`; it now distinguishes `init`/scheduled/no-connection calls from client-connected and client-disconnected reducers. - Unrelated untracked local files were present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. ## Validation - `pnpm --dir docs typecheck` - `pnpm --dir docs build` (passed; emitted existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion) - Previous validations on this PR: `pnpm build`, `node codex-plugin/scripts/check-skills-sync.ts`, `git diff --check -- docs/docs/00200-core-concepts/00200-functions/00400-procedures.md` - 2026-08-22 commit-impact pass checked new master commits `7c888afe8` / clockworklabs#5576 (.NET 10 support and C# LLM benchmark cleanup), `6dee26c6e` / clockworklabs#5764 (2.8.3 version bump), `8e410d284` / clockworklabs#5758 (unused dependency cleanup), `8cb9d652d` / clockworklabs#5716 (standalone-supported smoketests in public CI), `6bbe5f2eb` / clockworklabs#5774 (standalone module HTTP config), `e9f37a173` / clockworklabs#5753 (public CI build-time reduction), and `fb7282411` / clockworklabs#5770 (absent table pages in snapshots). - Checked clockworklabs#5774 against public standalone configuration docs; the new `[module-http]` setting is already documented on `master` and did not need an audit-branch correction. - 2026-08-22 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, procedures/HTTP, schedule tables, views, table accessors, MCP, and cross-language naming consistency. - The 2026-08-22 correction is not from a new master PR; it aligns TypeScript public docs examples with the TypeScript server skill and tables reference: `schema({...})` keys become server `ctx.db` accessors verbatim, so examples now use snake_case keys matching table names instead of camelCase accessors. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-22 validation: `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-24 commit-impact pass checked new master commit `310d2e660` / clockworklabs#5517 (websocket liveness checks and idle timeout close behavior). Standalone websocket configuration docs already describe `ping-interval`, `idle-timeout`, `close-handshake-timeout`, and `incoming-queue-length`; no new docs correction was needed. - 2026-08-24 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, table accessors, websocket config, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-24 validation: `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-25 commit-impact pass checked new master commits `1740adf6e` / clockworklabs#5640 (log level audit), `cfa9636a6` / clockworklabs#5775 (MCP route egress tracking), `ee0892a8d` / clockworklabs#5785 (commitlog rotation/compression durability fix), `36ad4bafa` / clockworklabs#5571 (.NET version and host OS handling), and `2432a84b6` / clockworklabs#5780 (remove Emscripten from linux smoketests). - Source PR for the 2026-08-25 correction: clockworklabs#5571 changed NativeAOT host/version support checks; the CLI reference and CLI help now say NativeAOT is supported on Windows and on Linux with .NET 10, instead of Windows only. - 2026-08-25 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, C#/Rust/TypeScript/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, table/index accessors, and cross-language consistency. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the NativeAOT support wording correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-25 validation: `git diff --check`; `cargo test -p spacetimedb-cli dotnet --lib`. - 2026-08-26 commit-impact pass checked new master commits `c0c19366a` / clockworklabs#5761 (TypeScript provider reconnect token retention), `dd804c939` / clockworklabs#5738 (Unity static state reset for generic table handles), `74167cc4e` / clockworklabs#5765 (module host init failure metric cause label), `ea1f39f13` / clockworklabs#5792 (Unity WebGL IEnumerator import), `dca219155` / clockworklabs#5817 (codegen git hash build-script move), and `2f268a89f` / clockworklabs#5819 (docs logo update). - Checked clockworklabs#5761 against TypeScript client/provider connection docs and token persistence examples; provider reconnect behavior and lower-level `DbConnection` responsibilities are already documented. - Checked clockworklabs#5738/clockworklabs#5792 against Unity setup/client docs; the Unity tutorial already notes SDK static state reset with Domain Reloading disabled, and the WebGL IEnumerator fix is an internal import correction with no public docs change needed. - Checked clockworklabs#5765 against public docs/skills; no public metrics reference documents `spacetime_module_host_init_failures_total`, so no docs correction was needed. - 2026-08-26 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, Unity/WebGL, table/index accessors, and cross-language consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-26 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-27 commit-impact pass checked new master commits `79b79e94d` / clockworklabs#5794 (C# connection cleanup/leak fixes), `0a1b68d78` / clockworklabs#5797 (CI build/test-suite cleanup), `6c3572e25` / clockworklabs#5565 (C++ multi-column support for 3+ column queries), `0bc1b0d73` / clockworklabs#5824 (unexpected module host exit metric), and `c1118efbb` / clockworklabs#5809 (commitlog decode error offsets). - Source PR for the 2026-08-27 correction: clockworklabs#5565 added C++ compile coverage for 3+ column multi-column index filters and trailing range filters; the indexes docs now state the generalized prefix/range rule and the C++ range helper include behavior. - Checked clockworklabs#5794 against C# client/Unity docs and skills for connection callbacks, `FrameTick`, token persistence, and disconnect behavior; no public docs correction was needed beyond existing guidance. - Checked clockworklabs#5824 against public docs/skills; no public metrics reference documents the new unexpected module host exit metric, so no docs correction was needed. - 2026-08-27 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, Unity/Unreal ticking, table/index accessors, and cross-language consistency. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the C++ multi-column range query wording correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-27 validation: `git diff --check`; `node codex-plugin/scripts/check-skills-sync.ts`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-30 commit-impact pass checked current master commits `9e0d92412` / clockworklabs#5815 (merge-queue workflow reuse), `436b3e57a` / clockworklabs#5825 (procedure metrics attribution), and `69cd1ca3b` / clockworklabs#5833 (2.9.0 version bump). - Checked clockworklabs#5825 against public procedure/docs skill coverage; the change is internal metrics attribution and no public metrics reference documents the affected procedure metric behavior, so no docs correction was needed. - Checked clockworklabs#5833 against public docs and skills for version-specific installation snippets, TypeScript package metadata, C# package references, and tutorial version claims; no high-confidence public docs drift was found. - 2026-08-30 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, event tables, table/index accessors, procedure/HTTP APIs, Unity/Godot/Unreal ticking, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR description only; no new docs edits or commits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-30 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-01 commit-impact pass checked new master commits `ffc2e4820` / clockworklabs#5768 (snapshot worker now publishes `Option<TxOffset>`) and `b0661c3cc` / clockworklabs#5850 (public release workflow rejects direct manual invocations). - Checked clockworklabs#5768 against public docs and skills; the changed snapshot worker watch API is internal engine plumbing and no public docs correction was needed. - Checked clockworklabs#5850 against public docs and skills; the direct public release workflow guard is internal release automation behavior and no public docs correction was needed. - 2026-09-01 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-01 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-02 commit-impact pass checked new master commits `f49ceae3a` / clockworklabs#5830 (commitlog fdatasync on segment open), `5f3e26bf2` / clockworklabs#5829 (commitlog write-failure regression test), `c97256c88` / clockworklabs#5857 (CI ubuntu version pinning), `a272e1919` / clockworklabs#5852 (Unity WebGL build coverage), `7c462bb47` / clockworklabs#5731 (rollback safety PR checks), `549489e97` / clockworklabs#5707 (TypeScript SDK routes established websocket errors to `onDisconnect`), and `f08dc302a` / clockworklabs#5836 (C++ auto-increment macro symbol collision fix). - Checked clockworklabs#5707 against TypeScript client reference and troubleshooting docs; `onDisconnect` already documents disconnects due to errors, and troubleshooting already tells users to register `onConnectError`/`onDisconnect` callbacks. - Checked clockworklabs#5836 against C++ server skill/docs for auto-increment macros and range-query include guidance; no public docs correction was needed. - Checked clockworklabs#5852 against Unity client docs and skill guidance for WebGL/ticking; the change adds CI coverage and no public docs correction was needed. - 2026-09-02 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-02 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-03 commit-impact pass checked new master commits `2fc8f8221` / clockworklabs#5849 (RootRoutes for `/v1/mcp`) and `2fe329243` / clockworklabs#5861 (CI runner label update). - Source PR for the 2026-09-03 MCP endpoint correction: clockworklabs#5849 added root-route support for `/v1/mcp`; the public MCP reference now documents direct HTTP MCP endpoints alongside `spacetime mcp`. - Checked clockworklabs#5861 against public docs and skills; the CI runner label change is internal workflow plumbing and no public docs correction was needed. - 2026-09-03 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. - Also corrected the TypeScript lifecycle docs to guard nullable `ctx.connectionId`, matching the TypeScript server skill and reducer context reference. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the MCP/lifecycle docs corrections. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-03 validation: `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-04 commit-impact pass checked new master commits `28071acff` / clockworklabs#5610 (C# generated direct dispatch for reducers, procedures, HTTP handlers, views, and anonymous views), `53772f867` / clockworklabs#5866 (jsonwebtoken 11 upgrade and custom header-field regression coverage), `3663fa112` / clockworklabs#5867 (`spacetime dev` no longer forwards C#-only .NET options to non-C# templates), `0c0365406` / clockworklabs#5868 (2.10.0 version bump), and `baca5cdf7` / clockworklabs#5848 (CI runner caching with sccache). - Source PR for the 2026-09-04 C# snippet correction: clockworklabs#5610 reinforced generated C# module entrypoint dispatch through public static module members; public docs now consistently show `public static partial class Module` in C# module examples. - Checked clockworklabs#5866 against public auth/key-architecture docs and skills; the JWT library upgrade and custom header handling are implementation hardening and no public docs correction was needed. - Checked clockworklabs#5867 against CLI docs and the CLI skill; `spacetime dev`/`init` .NET option wording already describes C# targeting without telling non-C# users to pass C#-only options. - Checked clockworklabs#5868 against install/package snippets and versioned references; no high-confidence public docs drift was found beyond current examples using wildcard or unpinned package versions where appropriate. - 2026-09-04 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language consistency. - Also corrected access-permissions view wording so it no longer says views can iterate full tables, and fixed a duplicate C# RLS filter constant in the recursive-rules example. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the C# module snippet/view-access corrections. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-04 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-05 commit-impact pass checked new master commits `9cfb2b7e9` / clockworklabs#5871 (npm release workflow uses GitHub-provided runner) and `3653d2ed4` / clockworklabs#5872 (`update-mirror-latest-version` release workflow uses `ubuntu-latest`). Both are internal release automation changes and no public docs correction was needed. - 2026-09-05 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-05 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-06 commit-impact pass found no new `origin/master` commits after the 2026-09-05 audit baseline; `bot/docs-audit` was already up to date with current `origin/master` after fetch. - 2026-09-06 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, lifecycle contexts, procedures/HTTP, views, indexes, and cross-language consistency. - The 2026-09-06 correction is not from a new master PR; it aligns lifecycle reducer examples with the nullable/optional connection ID API shape used by the language SDKs and server skills. - Updated the existing open `bot/docs-audit` PR with the lifecycle connection ID example correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-06 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check -- docs/docs/00200-core-concepts/00200-functions/00300-reducers/00500-lifecycle.md`; `pnpm --dir docs typecheck`. - 2026-09-08 commit-impact pass found no new `origin/master` commits after the current `bot/docs-audit` branch's merged `origin/master` baseline; `git log HEAD..origin/master` was empty after fetch and merge preflight reported the branch already up to date. - 2026-09-08 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, lifecycle contexts, procedures/HTTP, views, indexes, and cross-language consistency. - The 2026-09-08 correction is not from a new master PR; it aligns current TypeScript docs snippets with the TypeScript server/client skill casing guidance by using camelCase for TypeScript exports, schema keys/accessors, reducer/procedure arguments, and row fields while preserving explicit `name: 'snake_case'` canonical database names where shown. - Updated the existing open `bot/docs-audit` PR with the TypeScript casing correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-08 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check -- docs/docs`; TypeScript docs casing scanner for current TypeScript/TSX docs blocks (only external OIDC field names remain snake_case); `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/Browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
rohanranjan0902
pushed a commit
to rohanranjan0902/SpacetimeDB
that referenced
this pull request
Sep 19, 2026
) ## Summary - Update automatic migration docs to reflect empty-table removal behavior. - Document accessor/source-name metadata changes and index accessor rename limits. - Add a public MCP reference covering `spacetime mcp`, host-wide vs database-scoped tool shapes, permissions, and common errors. - Align the TypeScript server skill and bundled plugin copy so scheduled procedures point to `onSchedule`. - Fix the TypeScript procedures reference so it no longer claims `spacetimedb.procedure` takes a procedure name argument. - Clarify scheduled interval timing and connection ID availability in reducer context docs. # API and ABI breaking changes n/a # Rollback safety impact n/a # Expected complexity level and risk 1 - docs-only audit updates. ## Audit notes - Baseline: existing open `bot/docs-audit` PR clockworklabs#5723; merged current `origin/master` into `bot/docs-audit` before today's audit pass. - 2026-08-15 commit-impact pass checked new master commits `b1291ee11` / clockworklabs#5751 (C# HTTP timeout clamp), `0948a1b3b` / clockworklabs#5752 (2.8.2 version bump), and `524b4487d` / clockworklabs#5583 (LLM benchmark evals and server skill updates). - Checked the changed server skill guidance from clockworklabs#5583 against public docs for procedures, HTTP, scheduled procedures, views/query-builder views, view primary keys, client visibility filters, schedule tables, defaults, lifecycle connection IDs, and deterministic context guidance. - Checked clockworklabs#5751 against public procedure HTTP docs; the 30-second default and 180-second maximum timeout are already documented. - 2026-08-16 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, MCP, scheduling, and cross-language examples. - Source PR for the 2026-08-16 correction: clockworklabs#5728 documented TypeScript `onSchedule` registration for scheduled reducers/procedures; the TypeScript server skill still had one stale scheduled-procedure sentence and the plugin skill copy had not been synced. - 2026-08-17 commit-impact pass found no new `origin/master` commits after the 2026-08-16 audit baseline. - 2026-08-17 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, MCP, scheduling, and cross-language examples. - The 2026-08-17 correction is not from a new master PR; it aligns the TypeScript procedures reference with current TypeScript module examples/tests and the TypeScript server skill. Procedure names come from exported values, not a name argument to `spacetimedb.procedure`. - 2026-08-18 commit-impact pass checked new master commits `053742688` / clockworklabs#5735 (scheduled functions reschedule from intended execution time and skip missed interval ticks) and `e1da590b7` / clockworklabs#5732 (submodule function call separators docs fix). - Source PR for the 2026-08-18 scheduler correction: clockworklabs#5735 changed interval rescheduling semantics; schedule table docs now state that missed interval ticks are skipped and future ticks stay anchored to intended run times. - 2026-08-18 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, SDK APIs, server module APIs, auth, onboarding, deployment, scheduling, lifecycle contexts, and cross-language consistency. - The reducer context reference previously said lifecycle reducers may lack `connectionId`; it now distinguishes `init`/scheduled/no-connection calls from client-connected and client-disconnected reducers. - Unrelated untracked local files were present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. ## Validation - `pnpm --dir docs typecheck` - `pnpm --dir docs build` (passed; emitted existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion) - Previous validations on this PR: `pnpm build`, `node codex-plugin/scripts/check-skills-sync.ts`, `git diff --check -- docs/docs/00200-core-concepts/00200-functions/00400-procedures.md` - 2026-08-22 commit-impact pass checked new master commits `7c888afe8` / clockworklabs#5576 (.NET 10 support and C# LLM benchmark cleanup), `6dee26c6e` / clockworklabs#5764 (2.8.3 version bump), `8e410d284` / clockworklabs#5758 (unused dependency cleanup), `8cb9d652d` / clockworklabs#5716 (standalone-supported smoketests in public CI), `6bbe5f2eb` / clockworklabs#5774 (standalone module HTTP config), `e9f37a173` / clockworklabs#5753 (public CI build-time reduction), and `fb7282411` / clockworklabs#5770 (absent table pages in snapshots). - Checked clockworklabs#5774 against public standalone configuration docs; the new `[module-http]` setting is already documented on `master` and did not need an audit-branch correction. - 2026-08-22 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, procedures/HTTP, schedule tables, views, table accessors, MCP, and cross-language naming consistency. - The 2026-08-22 correction is not from a new master PR; it aligns TypeScript public docs examples with the TypeScript server skill and tables reference: `schema({...})` keys become server `ctx.db` accessors verbatim, so examples now use snake_case keys matching table names instead of camelCase accessors. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-22 validation: `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-24 commit-impact pass checked new master commit `310d2e660` / clockworklabs#5517 (websocket liveness checks and idle timeout close behavior). Standalone websocket configuration docs already describe `ping-interval`, `idle-timeout`, `close-handshake-timeout`, and `incoming-queue-length`; no new docs correction was needed. - 2026-08-24 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, table accessors, websocket config, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-24 validation: `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-25 commit-impact pass checked new master commits `1740adf6e` / clockworklabs#5640 (log level audit), `cfa9636a6` / clockworklabs#5775 (MCP route egress tracking), `ee0892a8d` / clockworklabs#5785 (commitlog rotation/compression durability fix), `36ad4bafa` / clockworklabs#5571 (.NET version and host OS handling), and `2432a84b6` / clockworklabs#5780 (remove Emscripten from linux smoketests). - Source PR for the 2026-08-25 correction: clockworklabs#5571 changed NativeAOT host/version support checks; the CLI reference and CLI help now say NativeAOT is supported on Windows and on Linux with .NET 10, instead of Windows only. - 2026-08-25 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, C#/Rust/TypeScript/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, table/index accessors, and cross-language consistency. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the NativeAOT support wording correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-25 validation: `git diff --check`; `cargo test -p spacetimedb-cli dotnet --lib`. - 2026-08-26 commit-impact pass checked new master commits `c0c19366a` / clockworklabs#5761 (TypeScript provider reconnect token retention), `dd804c939` / clockworklabs#5738 (Unity static state reset for generic table handles), `74167cc4e` / clockworklabs#5765 (module host init failure metric cause label), `ea1f39f13` / clockworklabs#5792 (Unity WebGL IEnumerator import), `dca219155` / clockworklabs#5817 (codegen git hash build-script move), and `2f268a89f` / clockworklabs#5819 (docs logo update). - Checked clockworklabs#5761 against TypeScript client/provider connection docs and token persistence examples; provider reconnect behavior and lower-level `DbConnection` responsibilities are already documented. - Checked clockworklabs#5738/clockworklabs#5792 against Unity setup/client docs; the Unity tutorial already notes SDK static state reset with Domain Reloading disabled, and the WebGL IEnumerator fix is an internal import correction with no public docs change needed. - Checked clockworklabs#5765 against public docs/skills; no public metrics reference documents `spacetime_module_host_init_failures_total`, so no docs correction was needed. - 2026-08-26 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, Unity/WebGL, table/index accessors, and cross-language consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-26 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-27 commit-impact pass checked new master commits `79b79e94d` / clockworklabs#5794 (C# connection cleanup/leak fixes), `0a1b68d78` / clockworklabs#5797 (CI build/test-suite cleanup), `6c3572e25` / clockworklabs#5565 (C++ multi-column support for 3+ column queries), `0bc1b0d73` / clockworklabs#5824 (unexpected module host exit metric), and `c1118efbb` / clockworklabs#5809 (commitlog decode error offsets). - Source PR for the 2026-08-27 correction: clockworklabs#5565 added C++ compile coverage for 3+ column multi-column index filters and trailing range filters; the indexes docs now state the generalized prefix/range rule and the C++ range helper include behavior. - Checked clockworklabs#5794 against C# client/Unity docs and skills for connection callbacks, `FrameTick`, token persistence, and disconnect behavior; no public docs correction was needed beyond existing guidance. - Checked clockworklabs#5824 against public docs/skills; no public metrics reference documents the new unexpected module host exit metric, so no docs correction was needed. - 2026-08-27 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, Unity/Unreal ticking, table/index accessors, and cross-language consistency. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the C++ multi-column range query wording correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-27 validation: `git diff --check`; `node codex-plugin/scripts/check-skills-sync.ts`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-08-30 commit-impact pass checked current master commits `9e0d92412` / clockworklabs#5815 (merge-queue workflow reuse), `436b3e57a` / clockworklabs#5825 (procedure metrics attribution), and `69cd1ca3b` / clockworklabs#5833 (2.9.0 version bump). - Checked clockworklabs#5825 against public procedure/docs skill coverage; the change is internal metrics attribution and no public metrics reference documents the affected procedure metric behavior, so no docs correction was needed. - Checked clockworklabs#5833 against public docs and skills for version-specific installation snippets, TypeScript package metadata, C# package references, and tutorial version claims; no high-confidence public docs drift was found. - 2026-08-30 skills/docs consistency pass compared `skills/*/SKILL.md` against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, auth/onboarding, deployment, MCP, scheduling, views, event tables, table/index accessors, procedure/HTTP APIs, Unity/Godot/Unreal ticking, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR description only; no new docs edits or commits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-08-30 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-01 commit-impact pass checked new master commits `ffc2e4820` / clockworklabs#5768 (snapshot worker now publishes `Option<TxOffset>`) and `b0661c3cc` / clockworklabs#5850 (public release workflow rejects direct manual invocations). - Checked clockworklabs#5768 against public docs and skills; the changed snapshot worker watch API is internal engine plumbing and no public docs correction was needed. - Checked clockworklabs#5850 against public docs and skills; the direct public release workflow guard is internal release automation behavior and no public docs correction was needed. - 2026-09-01 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-01 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-02 commit-impact pass checked new master commits `f49ceae3a` / clockworklabs#5830 (commitlog fdatasync on segment open), `5f3e26bf2` / clockworklabs#5829 (commitlog write-failure regression test), `c97256c88` / clockworklabs#5857 (CI ubuntu version pinning), `a272e1919` / clockworklabs#5852 (Unity WebGL build coverage), `7c462bb47` / clockworklabs#5731 (rollback safety PR checks), `549489e97` / clockworklabs#5707 (TypeScript SDK routes established websocket errors to `onDisconnect`), and `f08dc302a` / clockworklabs#5836 (C++ auto-increment macro symbol collision fix). - Checked clockworklabs#5707 against TypeScript client reference and troubleshooting docs; `onDisconnect` already documents disconnects due to errors, and troubleshooting already tells users to register `onConnectError`/`onDisconnect` callbacks. - Checked clockworklabs#5836 against C++ server skill/docs for auto-increment macros and range-query include guidance; no public docs correction was needed. - Checked clockworklabs#5852 against Unity client docs and skill guidance for WebGL/ticking; the change adds CI coverage and no public docs correction was needed. - 2026-09-02 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-02 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-03 commit-impact pass checked new master commits `2fc8f8221` / clockworklabs#5849 (RootRoutes for `/v1/mcp`) and `2fe329243` / clockworklabs#5861 (CI runner label update). - Source PR for the 2026-09-03 MCP endpoint correction: clockworklabs#5849 added root-route support for `/v1/mcp`; the public MCP reference now documents direct HTTP MCP endpoints alongside `spacetime mcp`. - Checked clockworklabs#5861 against public docs and skills; the CI runner label change is internal workflow plumbing and no public docs correction was needed. - 2026-09-03 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language naming consistency. - Also corrected the TypeScript lifecycle docs to guard nullable `ctx.connectionId`, matching the TypeScript server skill and reducer context reference. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the MCP/lifecycle docs corrections. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-03 validation: `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-04 commit-impact pass checked new master commits `28071acff` / clockworklabs#5610 (C# generated direct dispatch for reducers, procedures, HTTP handlers, views, and anonymous views), `53772f867` / clockworklabs#5866 (jsonwebtoken 11 upgrade and custom header-field regression coverage), `3663fa112` / clockworklabs#5867 (`spacetime dev` no longer forwards C#-only .NET options to non-C# templates), `0c0365406` / clockworklabs#5868 (2.10.0 version bump), and `baca5cdf7` / clockworklabs#5848 (CI runner caching with sccache). - Source PR for the 2026-09-04 C# snippet correction: clockworklabs#5610 reinforced generated C# module entrypoint dispatch through public static module members; public docs now consistently show `public static partial class Module` in C# module examples. - Checked clockworklabs#5866 against public auth/key-architecture docs and skills; the JWT library upgrade and custom header handling are implementation hardening and no public docs correction was needed. - Checked clockworklabs#5867 against CLI docs and the CLI skill; `spacetime dev`/`init` .NET option wording already describes C# targeting without telling non-C# users to pass C#-only options. - Checked clockworklabs#5868 against install/package snippets and versioned references; no high-confidence public docs drift was found beyond current examples using wildcard or unpinned package versions where appropriate. - 2026-09-04 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language consistency. - Also corrected access-permissions view wording so it no longer says views can iterate full tables, and fixed a duplicate C# RLS filter constant in the recursive-rules example. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master` and adding the C# module snippet/view-access corrections. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-04 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). - 2026-09-05 commit-impact pass checked new master commits `9cfb2b7e9` / clockworklabs#5871 (npm release workflow uses GitHub-provided runner) and `3653d2ed4` / clockworklabs#5872 (`update-mirror-latest-version` release workflow uses `ubuntu-latest`). Both are internal release automation changes and no public docs correction was needed. - 2026-09-05 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, procedures/HTTP, views, indexes, and cross-language consistency. No additional high-confidence mismatch was found. - Updated the existing open `bot/docs-audit` PR by merging current `origin/master`; no new docs edits were added in this run. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-05 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check`; `pnpm --dir docs typecheck`. - 2026-09-06 commit-impact pass found no new `origin/master` commits after the 2026-09-05 audit baseline; `bot/docs-audit` was already up to date with current `origin/master` after fetch. - 2026-09-06 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, lifecycle contexts, procedures/HTTP, views, indexes, and cross-language consistency. - The 2026-09-06 correction is not from a new master PR; it aligns lifecycle reducer examples with the nullable/optional connection ID API shape used by the language SDKs and server skills. - Updated the existing open `bot/docs-audit` PR with the lifecycle connection ID example correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-06 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check -- docs/docs/00200-core-concepts/00200-functions/00300-reducers/00500-lifecycle.md`; `pnpm --dir docs typecheck`. - 2026-09-08 commit-impact pass found no new `origin/master` commits after the current `bot/docs-audit` branch's merged `origin/master` baseline; `git log HEAD..origin/master` was empty after fetch and merge preflight reported the branch already up to date. - 2026-09-08 skills/docs consistency pass compared all 11 `skills/*/SKILL.md` files against public docs for CLI flows, TypeScript/C#/Rust/C++ server APIs, client SDK APIs, Unity/Unreal ticking, auth/onboarding, deployment, MCP, scheduling, lifecycle contexts, procedures/HTTP, views, indexes, and cross-language consistency. - The 2026-09-08 correction is not from a new master PR; it aligns current TypeScript docs snippets with the TypeScript server/client skill casing guidance by using camelCase for TypeScript exports, schema keys/accessors, reducer/procedure arguments, and row fields while preserving explicit `name: 'snake_case'` canonical database names where shown. - Updated the existing open `bot/docs-audit` PR with the TypeScript casing correction. - Unrelated untracked local files remained present at repo root (`.openclaw/`, `AGENTS.md`, `HEARTBEAT.md`, `IDENTITY.md`, `SOUL.md`, `TOOLS.md`, `USER.md`) and were left untouched. - 2026-09-08 validation: `node codex-plugin/scripts/check-skills-sync.ts`; `git diff --check -- docs/docs`; TypeScript docs casing scanner for current TypeScript/TSX docs blocks (only external OIDC field names remain snake_case); `pnpm --dir docs typecheck`; `pnpm --dir docs build` (passed; emitted existing Docusaurus update/Browserslist freshness notices and existing llms-txt warning for `/docs/ask-ai/ask-ai` empty-content conversion). --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of Changes
Preparation for freeing empty pages.
Because the snapshot format depends on the density of page vectors and didn't previously reserve a sentinel,
to preserve rollback safety we have to do this preparation step before actually implementing freeing pages as part of the row delete operation.
In this PR, the
Table/Pagesswitches to aVec<Option<Box<Page>>>, with pages allowed to be absent.However, until a later patch, outside of tests, no page entry will ever be
None. The table code is still able to use and reason aboutNonepage entries, as they may arise if wedeploy said later patch, free a page, capture a snapshot, then roll back to this version.
In the snapshot format, absent pages are recorded in the pages vec as the all-zeroes hash. Page objects are not written or read in this case; the all-zeroes hash does not correspond to an actual object on disk.
When allocating a new page, we attempt to fill the lowest empty slot. We do this in log time by storing a
BTreeSetof the empty slots, and popping the lowest value from it to use as the slot for the newly allocated page. I believe that for at least some access patterns, this should allow us to gradually converge on a dense array of pages in the case where rows are deleted at a higher rate than new inserts.As a result of this PR, some operators have changed in such a way as to cause the
tablecrate benchmarks to no longer compile. These benchmarks appear to have already bitrotted significantly. I removed benchmarks sufficient to getcargo check --tests --benchespassing, but did not attempt to repaircargo test --benches, as that appears to have been broken prior to this change.Per Joshua's review, this PR also adds a new metric,
spacetime_replay_snapshot_num_absent_pages.Pages which aren't read from files due to having the all-zeroes hash are counted towards that metric and not towards the existing
spacetime_replay_snapshot_num_objects_read.API and ABI breaking changes
Changes the snapshot format on-disk to recognize a new special sentinel, the all-zeroes hash. When the all-zeroes hash appears in a table's vector of page hashes, it means that no page exists in that slot, and so no object file is read.
As of this PR, it is (or at least, should be) impossible to reach the added codepaths or representation without using a snapshot created by a newer version of SpacetimeDB or through manual editing.
Expected complexity level and risk
3: if it is mistakenly possible to put
Nonein aPageswithin this PR, then the release that introduces this commit may not be rollback-safe. Also, this touches the datastore, which containsunsafecode, though no new unsafe code is introduced, nor is any of it modified in any ways that would affect safety invariants.Testing