Prove cold released-package asset delivery
This commit is contained in:
parent
c93f09342f
commit
7f9f290161
4 changed files with 46 additions and 35 deletions
|
|
@ -9,7 +9,7 @@
|
|||
"org.gamecult.cultlib": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.32",
|
||||
"org.gamecult.eve.plugin-fields": "https://github.com/GameCult/EvePlugins.git?path=/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields#eve-plugin-fields-unity-v0.2.3",
|
||||
"org.gamecult.eve.surface": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.2.4",
|
||||
"org.gamecult.eve.unity-scene": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.90",
|
||||
"org.gamecult.eve.unity-scene": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.91",
|
||||
"org.gamecult.eve.unity-uitoolkit": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.1"
|
||||
},
|
||||
"testables": [
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@
|
|||
"hash": "e08fa08335f99e9edddeb706912eecfad07cb281"
|
||||
},
|
||||
"org.gamecult.eve.unity-scene": {
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.90",
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.91",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {
|
||||
|
|
@ -155,7 +155,7 @@
|
|||
"com.unity.render-pipelines.universal": "17.4.0",
|
||||
"com.unity.modules.particlesystem": "1.0.0"
|
||||
},
|
||||
"hash": "f3d4ef7a015fcdfdcb70e163e124f61534f8c252"
|
||||
"hash": "c93f09342f4c14e0607a47038df6b8e2e99cbf03"
|
||||
},
|
||||
"org.gamecult.eve.unity-uitoolkit": {
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.1",
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
The generic `ReleaseConsumerProject` is pinned to released Git packages:
|
||||
|
||||
- `org.gamecult.eve.unity-scene` `0.3.90`, commit
|
||||
`f3d4ef7a015fcdfdcb70e163e124f61534f8c252`, and
|
||||
- `org.gamecult.eve.unity-scene` `0.3.91`, commit
|
||||
`c93f09342f4c14e0607a47038df6b8e2e99cbf03`, and
|
||||
`org.gamecult.eve.surface` `0.2.4`, commit
|
||||
`e08fa08335f99e9edddeb706912eecfad07cb281`;
|
||||
- `org.gamecult.eve.plugin-fields` `0.2.3`, commit
|
||||
|
|
@ -36,12 +36,20 @@ content-hashed body into the local warm cache. This is convenient local setup,
|
|||
not CDN-transfer evidence. On later runs, use `-SkipAssetBundleBuild` and omit
|
||||
the prime flag when neither provider assets nor their catalog changed.
|
||||
|
||||
Cold transfer is not a passing integration gate. The provider bundle is
|
||||
`56,204,750` bytes on disk; the previously observed roughly 13 MB transfer still
|
||||
exceeds the witness deadline while its bytes travel through batched snapshot
|
||||
records. Do not increase the timeout or describe this as proven; the intended
|
||||
repair is mapped or network-body transport. `-CacheState cold` remains a
|
||||
diagnostic run.
|
||||
Cold transfer is a passing released-package integration gate as of
|
||||
`artifacts/cold-release-0391`. The run starts with zero bodies and zero partials,
|
||||
transfers and verifies the `56,204,750`-byte provider bundle through the
|
||||
dedicated `cultmesh.content.v1` session, atomically promotes one content-hashed
|
||||
body with no partial left behind, and grants Unity a `SharedFileMapping` lease
|
||||
over that verified file. The Unity test completes in 54.8 seconds and the full
|
||||
clean import/build/test wrapper completes in 149.6 seconds under the unchanged
|
||||
300-second deadline. Pilot/map channel separation and 65,536 Stardust particles
|
||||
remain proven after the cold load.
|
||||
|
||||
This proves that bulk asset bytes no longer depend on snapshot records. It does
|
||||
not claim remote zero-copy: the current remote content session still copies and
|
||||
fragments bounded chunks before the verified local file becomes mapped. Network
|
||||
body streaming and copy-volume profiling remain transport work.
|
||||
|
||||
The July 19 released-package run in `artifacts/dockyard-trade-warm-8` passes the
|
||||
full-session gate. The generic client lowers the provider-owned bundle through
|
||||
|
|
@ -357,26 +365,22 @@ Primary artifacts:
|
|||
|
||||
## Cold delivery status
|
||||
|
||||
Cold CDN transfer is currently failing and is not part of the passing readiness
|
||||
gate. The latest retained failing runs time out after 300 seconds before the
|
||||
provider bundle is promoted. The current transport still carries large asset
|
||||
payloads through batched snapshot records instead of the intended mapped or
|
||||
network body path.
|
||||
Cold CDN transfer is part of the passing readiness gate. The released `0.3.91`
|
||||
run in `artifacts/cold-release-0391` began with zero cached bodies and partials,
|
||||
received only the typed manifest through snapshot state, transferred bounded
|
||||
content chunks through the managed CultMesh content session, and atomically
|
||||
promoted one `56,204,750`-byte body named by SHA-256
|
||||
`f2c8acf938998703799e909cbf0c6e3ed9ad5d6f83b708a0b7b6e76ee33f7160`.
|
||||
It left zero partials and selected `SharedFileMapping` over the verified file.
|
||||
|
||||
The following is historical evidence, not a current claim. A prior
|
||||
`cold-start-lowering` run in `artifacts/aetheria-daemon-current-cold` began with
|
||||
zero cached bodies, received one typed manifest snapshot, transferred bounded
|
||||
payload chunks through the managed CultMesh content session, and atomically
|
||||
promoted exactly one `56,168,017`-byte body named by SHA-256
|
||||
`f54177cc8aadd5cd39ba0757cfd2b90a403a1b9efcfcb32060b86e8c152dce10`.
|
||||
It left zero partial files, selected `SharedFileMapping` over that verified path,
|
||||
lowered the shield-free provider hull, and preserved pilot/map camera isolation
|
||||
within the unchanged 300-second deadline; total witness time was `102,912.852`
|
||||
milliseconds.
|
||||
The cold-only failure exposed by `0.3.90` was a bootstrap ownership race, not a
|
||||
bulk snapshot transfer: live SoA subscriptions began before the blocking cold
|
||||
asset acquisition, so their retained capability expired before Unity pumped it.
|
||||
`0.3.91` resolves the surface first, completes provider-asset acquisition, and
|
||||
only then starts live subscriptions. A fresh current generation therefore owns
|
||||
the first lowered frame. No retry timer or stale-body reinterpretation exists.
|
||||
|
||||
The separate historical `full-session-gameplay` witness started from the verified
|
||||
warm body and proved movement, combat, destruction-created canonical loot, and
|
||||
exactly-once cargo mutation. This proved cold acquisition
|
||||
and local mapped reuse, not provider-to-client network zero-copy, shared-memory
|
||||
delivery, or GPU zero-copy. Managed network bytes are still copied and fragmented
|
||||
before the transfer owner commits the mapped file.
|
||||
This proves cold acquisition and local mapped reuse, not provider-to-client
|
||||
network zero-copy, shared-memory delivery, or GPU zero-copy. Managed remote
|
||||
chunks are still copied and fragmented before the transfer owner commits the
|
||||
mapped file; network-body streaming and copy-volume profiling remain open.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ param(
|
|||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$expectedEveUnityCommit = "f3d4ef7a015fcdfdcb70e163e124f61534f8c252"
|
||||
$expectedEveUnityCommit = "c93f09342f4c14e0607a47038df6b8e2e99cbf03"
|
||||
$expectedEveFieldsCommit = "c5a4a75c1b727499b16c2dae1895f29e2a9f72f0"
|
||||
$expectedEveUnityUiToolkitCommit = "4d0cbe0185bdc4fc65eb63503a7c5cb578539669"
|
||||
$expectedCultLibCommit = "d018bb1fb5a8ce73da6f5579e2f475750d901d8b"
|
||||
|
|
@ -49,6 +49,13 @@ $importProject = Join-Path $AetheriaRoot "Aetheria.State.Import\Aetheria.State.I
|
|||
foreach ($required in @($UnityExe, (Join-Path $repoRoot $projectRoot), $daemonProject, $importProject, (Join-Path $YmirRoot "src\Ymir.Core\Ymir.Core.csproj"))) {
|
||||
if (-not (Test-Path -LiteralPath $required)) { throw "Required world witness path not found: $required" }
|
||||
}
|
||||
$cultLibHead = (& git -C $CultLibRoot rev-parse HEAD 2> $null).Trim()
|
||||
if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($cultLibHead)) {
|
||||
throw "Released-package witness CultLibRoot is not a readable Git checkout: $CultLibRoot"
|
||||
}
|
||||
if ($cultLibHead -ne $expectedCultLibCommit) {
|
||||
throw "Released-package witness CultLibRoot must resolve to $expectedCultLibCommit, but $CultLibRoot is $cultLibHead."
|
||||
}
|
||||
$canonicalWitnessTest = Join-Path $repoRoot "TestProject\Assets\Tests\PlayMode\GenericWorldCaptureTests.cs"
|
||||
$releaseWitnessTest = Join-Path $repoRoot "ReleaseConsumerProject\Assets\Tests\PlayMode\GenericWorldCaptureTests.cs"
|
||||
if ((Get-FileHash -LiteralPath $canonicalWitnessTest -Algorithm SHA256).Hash -ne
|
||||
|
|
|
|||
Reference in a new issue