Repository navigation
sco-core SDK 2.2.0
See the SDK 2.2.0 release notes and the
SDK 2.2.0 scope decision.
SDK 2.2.0 packages the entries below without changing frozen plugin ABI 1.1
(include/sco_api.h and tests/abi_v1.c are byte-identical to 2.1.0). Core, legacy,
core-source and host-source-sc use 2.2.0. The maintainer kept the three new game service tables
in the candidate, so under the game-pack policy (a release that adds or grows
a game service raises the minor) the game pack and the optional game-sc overlay move to 0.5.0
(SCO_GAME_PACK_VERSION, was 0.4.0; sco-sdk-game-sc-0.5.0.zip). Nothing below
has run in the game: evidence is macOS local builds and synthetic fixtures. Linux, native
Windows, GPU and real-game acceptance are unproven. The new game capabilities
(game.hangar.lift, game.hangar.atc_cancel, game.reputation.checks,
game.world.free_camera_flag) default OFF, and no production adapter turns them on.
sco.widgets1.1 (additive): the table grows from 24 to 48 bytes with tail members
update_nodes(atomic subtree replace/insert),remove_nodes(refuses to empty a panel) and
capabilities(runtime limits by fixed index). Opt-insco_widget_node_1_1(severity,
tooltip, paged LIST/TABLE windows) andsco_widget_event_1_1(row; newSCO_WIDGET_EVENT_PAGE)
are selected by theirsizefield; panels without a 1.1 node keep byte-identical 1.0 events.
The ImGui adapter draws severity, tooltips and Previous/Next paging, and rebuilds a shared
render snapshot only when a panel changes. 1.0 pins are unchanged except the table size.
sco-plugin-checkremains a 1.0 stand-in; the C++, C# and Lua wrappers expose 1.0 only.
Headless ImGui-shim fixtures only; GPU rendering not verified.- C++
scosdk::PanelBuilder(include/scosdk/menu_builder.hpp): header-only C++20
declarative Row/Column panels forsco.widgets1.0 with typed bindings, preorder ids,
host-equivalentValidateWidgetNodesand callback dispatch that tolerates a callback
destroying its own tree. Compared with the real host on 27 node arrays; ASan clean. - C#
Sco.Sdk.PanelBuilder: fluent Column/Row/Button/Toggle/Slider builder over
sco.widgets1.0 with explicit stable ids, frozen build snapshots and typed dispatch.
Not compiled locally (no .NET SDK on the preparing host); the hosted
sdk/csharp-host-simjob is its first build. - Lua
sco.panel_builder: embedded module installed in every plugin sandbox (new(),
column/row,toggle/slider/button,build()returning node snapshots plus a
dispatcher). Runs inside the existing instruction and memory budgets; norequire,
filesystem or bytecode. - POSIX diagnostics transport recovery: an owner that died without cleanup no longer
blocks every later session. The mapping is published atomically and held underflock; a
stale entry is reclaimed only by the holder of its lock after identity re-checks, peers refuse
a dead owner's mapping, and peer leases are removed on release. Fails closed on the remaining
crash windows. macOS only; Linux unverified. - Game status registry (repository only):
sdk/status_registry.jsongenerates the service
table indocs/game/status.md;tools/status_registry.py --checkruns intest.yml. No
evidence level was raised. - Documentation gate: the public documentation set must name the function, table or test
instead of citing source by line number. A scheduled, read-onlylive-sitejob in
docs-site.ymlchecks that the deployed docs site is fresh againstmain. - Game tables (game-sc headers, host-source-sc implementation):
game.hangar1.0
(include/sc_hangar.h: lift open/close request for a landing area, ATC request cancel),
game.reputation1.0 (include/sc_reputation.h: read-only state of the reputation check
sites) andgame.world1.1 (include/sc_world.hgrows 32 to 40 bytes with the read-only
free_camera_flagtail member). ABI pins intests/abi_game_hangar.c,
tests/abi_game_reputation.candtests/abi_game_world.c; host-sim contract tests
hangar,reputationandworld_free_cam. Windows game-pack adapters are not built or run
locally; no wrapper language exposes these tables yet. - Plugin scaffolder (
sdk/tools/sco-new-plugin.py, shipped astools/sco-new-plugin.pyin
core and core-source): writes a buildable C or C++20 native plugin with optional
--with-menupanel and optional service lookups (logged when missing, never required), and
its CMakechecktarget runssco-plugin-check. It refuses to overwrite files or write
through symbolic links.sdk/test_new_plugin.pybuilds the generated projects on macOS; it
is not wired into CI yet and MSVC builds are unverified. - Engine-native index (repository, site and MCP only, in no SDK zip):
sdk/native_index.json
lists every signature row by id, subsystem, symbolic hash and promotion tier, generated by
tools/native_index.pyand checked intest.yml. The docs site renders it at/natives/
inside four new library hubs, with a downloadable copy of the same JSON. Rows name readiness
only: no patterns, masks, offsets or addresses. Publication follows the
2026-10-14 native-index decision. - Discovery MCP server, opt-in tools (repository only):
tools/sco-core-mcpoffers four
tools behind--extended-tools; the default six tools and the documented launcher are
unchanged.list_engine_nativesandget_engine_nativereadsdk/native_index.jsonand
refuse a malformed index whole.validate_manifest_and_widgetsports thesco-plugin-check
manifest rules and checkssco.widgetsnode arrays.generate_plugin_scaffoldreturns the
filessco-new-plugin.pywould write as text and writes nothing; it runs the granted
checkout's scaffolder in the server's own process, so grant only a reviewed checkout.
Service evidence now preferssdk/status_registry.jsonand never reports gameplay
verification. - Docs site: pages are grouped into four library hubs (start and SDK profiles, language
SDKs and cookbooks, native and service reference, host integration and AI agents) with no
route moved. Page titles no longer show code backticks. - Getting started:
docs/getting-started.mddownloads, verifies and builds against the
2.2.0 core archive; the game extension issco-sdk-game-sc-0.5.0.zip.