Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/developer-reading-guide.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ Guaはgameが公開したUIのrole・名前・状態から対象を探し、操
[基本protocol](../protocol/specs/protocol.md)と機能別仕様が規範です。
ガイドに同じ契約を複製せず、各READMEは用途と使用例、仕様は条件、evidence文書は
対象commit・環境・結果の証拠を担当します。
恒久的なガイド・仕様には現行の契約、再現手順、判定制約と設計理由を残し、
一回限りの変更内容・レビュー経緯・実行結果はPRまたは既存の検証記録に記載します。
過去の証拠を移すときは出典・対象版・未検証範囲を保ち、参照先を確認してから重複を除きます。

## 2. 公開から結果確認まで

Expand Down
52 changes: 16 additions & 36 deletions docs/distribution-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ the latest schemas or rebuilds the Viewer.

`0.0.0-ci` is the existing private CI candidate identifier. It is meaningful only
with a full commit and SHA-256 manifest, and must never be uploaded as a public
release. The source default `0.5.0-preview.3` and existing GitHub releases do not
release. Existing source defaults and GitHub releases do not
select the next release version or channel. No tag or publication is needed to
run artifact acceptance. Issue #129 is judged against actual artifacts built
from an identified target commit/version, including retained hashes and evidence
Expand Down Expand Up @@ -77,28 +77,15 @@ tests on a source fixture are supporting evidence only; artifact acceptance
must use the identified addon/UPM payload in the engine fixture and verify the
actual archive composition separately. A published release is not required.

The [PR #168 execution record](spatial-acceptance-followup.md) provides actual
Godot 4.7 stable GodotPhysics3D/Jolt bridge, built Native MCP and isolated
NuGet-consumer runs on all four RIDs. It uses the candidate addon payload also
assembled into validated ZIPs, rather than demonstrating engine execution from
the extracted ZIPs. Its reviewed head is
`0fd01cbcd11c5b5d30399c9a6273418d193edd68`; CI artifacts pin the identical-tree
checkout `9c2eb7b59a356680806e287a4e2c48fb3b0fb1be` and package version `0.0.0-ci`.
Windows Unity 6000.5.3f1 standalone Mono/PhysX passed the same three spatial
client paths. The later [identified UPM route record](distribution-route-evidence.md)
also establishes Windows artifact-only Editor Play Mode and Player UI operation,
plus a precompiled-provider Player spatial run, at its stated commit/archive hash.
These results establish their measured scope, not every feature in the engine
packages. Existing release-only CI already defines four-RID Unity jobs; the
separate candidate workflow makes Player validation available without a tag or
publication. The [current acceptance record](remaining-route-acceptance.md#current-acceptance-status)
retains Windows/Linux Editor, four-RID Mono Player/spatial and Godot evidence,
and the later native arm64 Editor success. Native Intel macOS / Unity
6000.5.3f1 / actual UPM / Editor Play Mode is **UNVERIFIED**: no Intel Mac is
available and the test was not executed. This is not a failed or unsupported
route. Issue #129/#130 closure does not establish Intel Editor acceptance;
M4, Rosetta and Intel Player results cannot substitute for it. This limitation
does not extend to all Intel routes or other measured features, patches or backends.
Measured route outcomes, tested commits, package/archive hashes and CI references
are retained in the [current acceptance record](remaining-route-acceptance.md#current-acceptance-status),
[Godot/Unity spatial record](spatial-acceptance-followup.md) and
[identified UPM record](distribution-route-evidence.md). Read each within its
recorded product/recipe scope; no later-source or all-feature acceptance is implied.
Native Intel macOS / Unity 6000.5.3f1 / actual UPM / Editor Play Mode remains
**UNVERIFIED** because no Intel Mac is available and the test was not executed.
M4, Rosetta and Intel Player results do not substitute for it. This limitation
does not invalidate the other measured Intel routes.

Godot C# runtime samples, Unity IL2CPP, Unity IMGUI, EditorWindow automation,
unlisted RIDs and experimental browser paths are outside this desktop acceptance.
Expand Down Expand Up @@ -134,14 +121,11 @@ Godot addon archives include the MIT notice for the pinned godot-cpp dependency
## Compatibility and completion gates

Previously published package names, native ABI and public managed signatures are retained.
The new Value package is `gua-value-tools`; the rejected `gua-value` name was
never published. See the [1.1.0 release plan](release-1.1.0.md) for the bounded
compatibility review and publication prerequisites.
The Value package is `gua-value-tools`. The historical naming decision and
bounded compatibility review are retained in the [1.1.0 release plan](release-1.1.0.md).
External tools that pin the strict 1.0.10 diagnostics/version schemas must
update those schemas when upgrading: added response fields fail their old
unknown-property rules. No failure was demonstrated on the supported
same-release paths; this caveat does not require a runtime compatibility fix
or a major-version change before the proposed 1.1.0 publication.
unknown-property rules. Use the schemas distributed with the selected release.
The current native version API reports `abiVersion: 1` and
`protocolSchemaVersion: "2"`; versioned descriptor structs remain additive C ABI
extensions. The external consumer asserts these values and retains
Expand Down Expand Up @@ -195,17 +179,13 @@ scripts/verify-distribution-consumer.ps1 -PackageDirectory artifacts/packages `
| AT-PACK-002 | Consumer copied outside the repository; isolated NuGet caches; local-feed-only acceptance restore; native overrides rejected |
| AT-PACK-003 | Extracted self-contained consumer ZIP and fresh installed .NET Tool run, package manifests and embedded report |

Candidate acceptance incorporates merged #122 at
`989163781a0e5ce6ac629e99a7d140a47e0db1ad` and repeats the four-RID consumer gates.
Issue closure requires exact-head required CI/audit success and a mapping of
the original #129 acceptance conditions to the identified target artifacts,
environment, assertions, results and remaining support scope. Retain package
versions, source commits, hashes, dependency/license manifests, Viewer evidence
and actual launch/attach/operation evidence for each declared RID/route; skips,
loading alone and unrelated consumer success do not satisfy those conditions.
The four-RID package gates and PR #168 Godot evidence can be reused within their
measured scope. The owner closed #129/#130 with the native Intel Editor
unverified limitation retained and tracked in #174; see the current acceptance
record above. Closure is not a claim that every declared route passed. Public
publication is separate and is neither required for closure nor authorized by
Historical closure and execution evidence are retained in the acceptance records
linked above. Closure does not establish that every declared route passed. Public
publication is a separate operation and is not authorized by
successful artifact acceptance.
13 changes: 9 additions & 4 deletions docs/spatial-transport-r1.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ before packing Gua.Testing. No release or deployment is performed by these check

## Measured support / 実測対応表

The table below records PR #168 scope. For later pinned route results and current
limitations, use the [current acceptance record](remaining-route-acceptance.md#current-acceptance-status).
It does not revalidate any route at the current source revision.

| Engine / OS / backend | Native scheduler & bindings | WebSocket / Native MCP | Built-in browser privilege |
| --- | --- | --- | --- |
| Godot 4.7 stable / Windows x64 / GodotPhysics3D | Real packaged addon and host pump | TypeScript, built native MCP and isolated candidate NuGet consumer passed; common Trace/report generated | Unsupported |
Expand All @@ -134,7 +138,7 @@ before packing Gua.Testing. No release or deployment is performed by these check
| Unity Linux/macOS / other engine patches/backends | Unverified for #134; no inherited transport acceptance claim | Unverified | Unsupported built-in privilege path |
| Godot Web / Unity WebGL | Existing ports project Player/PublicAgent | No authorized r1 Testing/Debug browser channel | Unsupported; tools absent |

The current engine/consumer execution record is [PR #168](https://github.com/gua-project/gua/pull/168)
The historical engine/consumer execution record is [PR #168](https://github.com/gua-project/gua/pull/168)
and [parent #130](https://github.com/gua-project/gua/issues/130): tested commits,
commands, per-RID CI artifacts and unverified scope are recorded there. The
desktop Godot CI checks require three actual physics batches (TypeScript, MCP,
Expand All @@ -152,6 +156,7 @@ Report payload/HTML checks do not imply a new browser visual QA pass.
Input ports remain public projections. A future privileged browser transport
needs its own host authorization and actual engine/browser verification.

Parent #130 evidence is mapped to #131 contracts, #132 scheduling, #133 engine
geometry/profiling and #134 routes/Trace/package acceptance. Distribution #129
remains open; neither this change nor the previous engine merge completes #130.
Parent acceptance conditions, closure and retained limitations are recorded in
the [acceptance record](remaining-route-acceptance.md#current-acceptance-status).
Contract, scheduling, engine and transport evidence have distinct scopes; no
individual fixture establishes all routes or all features.
24 changes: 8 additions & 16 deletions protocol/specs/observe-transport-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,28 +101,20 @@ remote `GuaWebSocketContext`のObserve APIはtransport形式を返す。
InspectorはObserve panelで候補と通知を表示し、gap/staleで再購読を要求する。
MCP/WebMCPは同名の4 commandを公開し、remote側から登録・profile選択はできない。

## 実行した検証と残る境界
## 再現手順と判定範囲

Windows MSVC / Godot 4.7 / Unity 6000.7.0b2で検証。

- native C/C++ CTest 8/8。catalog破棄後のsnapshotと履歴、空enum set、buffer契約を含む。
- .NET Selector tests 193/193(Observe transport統合9件を含む)。実native runtime→WebSocket→.NET。
- 実Godot GDScript smoke:enum、空list、Player投影、非公開化のgap、破棄通知。
- 実Unity desktop Player:Debug/Player 2/2。World位置、追加phase、候補、空list、秘密値除外、変更、reset。
- 実Godot→Inspector/MCPの各WebSocket client:独立購読、semantic click、変更poll。
- TypeScript全workspace check成功。対象Bun tests 226/226。
WebMCPはcapability、購読解除、timeout後の遅延応答の解除を試験。
過去の実行環境・成功件数・修正経緯は[検証記録](https://github.com/gua-project/gua/pull/185#issuecomment-6487401918)を参照。
以下の手順では実行した版・環境とログを保存し、実engineとfixtureの結果を区別する。

外部clientの再現はGodotで`--headless --path examples/godot-gdscript --script scripts/gua_observe_fixture.gd`
を起動し、`GUA_BRIDGE_PORT`と`GUA_OBSERVE_BRIDGE_URL`を揃え、
`bun scripts/run-observe-client-smoke.ts`を実行する。
Godot Web/Unity WebGLの実exportをheadless Chromeで起動し、実Object登録→Player snapshot→
SDK toolからsemantic click→両独立購読の変更通知→解除を確認した。
Godotは空enum set、Unityは空enum list。両方ともenumTypeと候補を保持する。
UnityのIL2CPPで非参照Bootstrap assemblyが除去される問題を再現し、
`AlwaysLinkAssembly`でフレーム駆動を維持する修正後の実exportで確認した。
.NETは応答喪失時のsocket破棄・再接続と64件上限の明示拒否後の既存token維持を試験。
不足symbolのDLL注入では初期化失敗時のnative destroyが一度だけ呼ばれることを確認した。
SDK toolからsemantic click→両独立購読の変更通知→解除を確認する。
Godotは空enum set、Unityは空enum list。両方ともenumTypeと候補を保持すること。
UnityのIL2CPPでは非参照Bootstrap assemblyも保持し、フレーム駆動を維持する必要がある。
.NETは応答喪失時のsocket破棄・再接続、64件上限の明示拒否後の既存token維持、
初期化失敗時にnative destroyが一度だけ呼ばれることを確認する。

Webの再現はGodotのmain sceneを`GuaObserve.tscn`へ設定してWeb debug exportし、
Unityは通常fixtureをWebGLへexportする(TMP準備は既存`import-unity-tmp-resources.ps1`)。
Expand Down
28 changes: 10 additions & 18 deletions protocol/specs/observe-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,29 +134,21 @@ phase.Notify();
var changes = subscription.PollJson(); // statusを必ず確認する
```

## 要件・検証・後続
## 要件と検証の対応

| 要件 | G-02の検証 | 後続 |
| 要件 | 検証 | 関連契約 |
| --- | --- | --- |
| AT-OBS-001 | 複数Owner同名、重複拒否、解除・破棄・再生成、reset | #120 実エンジン寿命への接続 |
| AT-OBS-003 | added/changed/removed、取得不能・復旧、理由、秘密値 | #125 Trace保存 |
| AT-OBS-004 | 原子的Snapshot+cursor、並列publish、独立購読、件数/byte欠損 | #120 transport切断、#125 欠損保存 |
| VALUE-002 | 共通Value等価・不正値・collectionコピー | #120 wireでの型保持 |
| TIME-002 | frame/explicitの順序、UI/World別frame、epoch | #125 収集時計との関連付け |
| AT-OBS-001 | 複数Owner同名、重複拒否、解除・破棄・再生成、reset | [transport](observe-transport-v1.md)の実エンジン寿命 |
| AT-OBS-003 | added/changed/removed、取得不能・復旧、理由、秘密値 | [Trace](trace-v1.md)保存 |
| AT-OBS-004 | 原子的Snapshot+cursor、並列publish、独立購読、件数/byte欠損 | transport切断、Trace欠損保存 |
| VALUE-002 | 共通Value等価・不正値・collectionコピー | transportのwire型保持 |
| TIME-002 | frame/explicitの順序、UI/World別frame、epoch | Trace収集時計との関連付け |

共通fixtureは `protocol/fixtures/observe-v1.json`。native/C++と.NETが遷移例を実行し、
Bun/Ajvが正常・異常documentを検証する。既存Value/UI/World/reset試験を維持する。
Godot/Unity、Gua.Runtime/bridge、MCP/WebMCP、Inspectorの接続は[Observe transport v1](observe-transport-v1.md)を参照。
Trace writer/reader/Viewerと製品E2Eは#125ほか。GuaのCIからPlaytestを参照しない。
Trace writer/reader/Viewerは[Trace仕様](trace-v1.md)を参照。製品E2Eは利用側で検証し、GuaのCIからPlaytestを参照しない。
検証実績は変更の引き渡し時に記載し、未実行のremote CIやengine E2Eを成功扱いしない。

### ローカル検証記録(2026-09-29)

- MSVC 19.51 + Ninja、Godot無効・WebSocket bridge有効でビルド成功。
VS2026標準presetはローカルのinstance検出に失敗したため、VsDevCmd経由のNinja構成を使用。
- CTest 8/8、Gua.Selector.Tests 144/144(skipなし)。C++ getter内Context moveの追加回帰も成功。
- Gua.Coreのnet10.0 / netstandard2.1ビルド、全workspaceの`bun run check`成功。
- Value/ObserveのBun 87/87、実native/.NET出力8 documentのAjv検証成功。
- 読み取り専用監査のOwner明示破棄後Player履歴、.NET getter内Disposeを失敗試験で再現し修正。
C++ getter内Context moveも寿命tokenを維持する回帰試験で修正を確認。
- remote CI、他OS、エンジンのObserve接続、Traceへの保存は未実行・今回の統合完了対象外。
過去のローカル検証結果・監査経緯は[検証記録](https://github.com/gua-project/gua/pull/185#issuecomment-6487401918)を参照。
対象版・環境に限定した証拠であり、現在のengine E2Eの成功を意味しない。
6 changes: 3 additions & 3 deletions protocol/specs/spatial-r1.md
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,6 @@ the tests; the Value Bun suite picks up schema tests. Legacy tests remain active
| bracket/estimate, missing normals/refs | SP-03 | anonymous/truncated bracket and estimate fixtures |
| legacy World/Input and old clients | SP-06 | unchanged schemas, existing tests, additive version check |

Fresh prerequisites #72/#73/#98/#118 were closed/completed at implementation
start on main 60c903b3b218310cc2bf13d2d583fdcc987dee51. Contract tests are not
adapter execution, engine precision, performance, distribution or Trace proof.
Implementation prerequisite history is retained in the [implementation record](https://github.com/gua-project/gua/pull/185#issuecomment-6487401918).
Contract tests are not adapter execution, engine precision, performance,
distribution or Trace proof.
Loading
Loading