Prove released TCP Aetheria witness
This commit is contained in:
parent
0463ddff4e
commit
cb161f620b
4 changed files with 51 additions and 53 deletions
|
|
@ -6,10 +6,10 @@
|
|||
"com.unity.modules.physics": "1.0.0",
|
||||
"com.unity.modules.uielements": "1.0.0",
|
||||
"com.unity.render-pipelines.universal": "17.4.0",
|
||||
"org.gamecult.cultlib": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.32",
|
||||
"org.gamecult.cultlib": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.34",
|
||||
"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.91",
|
||||
"org.gamecult.eve.unity-scene": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.94",
|
||||
"org.gamecult.eve.unity-uitoolkit": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.1"
|
||||
},
|
||||
"testables": [
|
||||
|
|
|
|||
|
|
@ -119,11 +119,11 @@
|
|||
}
|
||||
},
|
||||
"org.gamecult.cultlib": {
|
||||
"version": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.32",
|
||||
"version": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.34",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {},
|
||||
"hash": "d018bb1fb5a8ce73da6f5579e2f475750d901d8b"
|
||||
"hash": "c148d891c1d8713285ae15b2f17b59c106fb9426"
|
||||
},
|
||||
"org.gamecult.eve.plugin-fields": {
|
||||
"version": "https://github.com/GameCult/EvePlugins.git?path=/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields#eve-plugin-fields-unity-v0.2.3",
|
||||
|
|
@ -144,18 +144,18 @@
|
|||
"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.91",
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.94",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {
|
||||
"org.gamecult.cultlib": "1.0.32",
|
||||
"org.gamecult.cultlib": "1.0.34",
|
||||
"org.gamecult.eve.plugin-fields": "0.2.3",
|
||||
"org.gamecult.eve.surface": "0.2.4",
|
||||
"com.unity.mathematics": "1.3.2",
|
||||
"com.unity.render-pipelines.universal": "17.4.0",
|
||||
"com.unity.modules.particlesystem": "1.0.0"
|
||||
},
|
||||
"hash": "c93f09342f4c14e0607a47038df6b8e2e99cbf03"
|
||||
"hash": "0463ddff4e39c9cca14e632b7e46b6b0081c67cc"
|
||||
},
|
||||
"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,16 +4,16 @@
|
|||
|
||||
The generic `ReleaseConsumerProject` is pinned to released Git packages:
|
||||
|
||||
- `org.gamecult.eve.unity-scene` `0.3.91`, commit
|
||||
`c93f09342f4c14e0607a47038df6b8e2e99cbf03`, and
|
||||
- `org.gamecult.eve.unity-scene` `0.3.94`, commit
|
||||
`0463ddff4e39c9cca14e632b7e46b6b0081c67cc`, and
|
||||
`org.gamecult.eve.surface` `0.2.4`, commit
|
||||
`e08fa08335f99e9edddeb706912eecfad07cb281`;
|
||||
- `org.gamecult.eve.plugin-fields` `0.2.3`, commit
|
||||
`c5a4a75c1b727499b16c2dae1895f29e2a9f72f0`;
|
||||
- `org.gamecult.eve.unity-uitoolkit` `0.1.1`, commit
|
||||
`4d0cbe0185bdc4fc65eb63503a7c5cb578539669`;
|
||||
- `org.gamecult.cultlib` `1.0.32`, commit
|
||||
`d018bb1fb5a8ce73da6f5579e2f475750d901d8b`.
|
||||
- `org.gamecult.cultlib` `1.0.34`, commit
|
||||
`c148d891c1d8713285ae15b2f17b59c106fb9426`.
|
||||
|
||||
The hand-run integration gate is the warm released-package witness:
|
||||
|
||||
|
|
@ -36,32 +36,31 @@ 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 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.
|
||||
The current split transport proof is warm. Control/discovery, subscriptions,
|
||||
commands, and receipts use `cultnet+tcp`; the same-machine entity body resolves
|
||||
to `SharedFileMapping`; CDN bytes are advertised on a separate
|
||||
`cultmesh-content+tcp` endpoint. The passing run in
|
||||
`artifacts/aetheria-daemon-tcp-warm` used an explicitly primed 56,204,750-byte
|
||||
provider body and therefore makes no cold-transfer claim. The prior cold path
|
||||
that carried bundle chunks through batched snapshot records timed out and is
|
||||
not accepted as evidence. A fresh empty-cache run over the dedicated TCP
|
||||
content plane remains required before cold CDN delivery is promoted again.
|
||||
|
||||
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
|
||||
The July 19 released-package run in `artifacts/aetheria-daemon-tcp-warm` passes the
|
||||
full-session gate. The generic client lowers the provider-owned bundle through
|
||||
`SharedFileMapping`, docks at the daemon-authored 12-berth Zenith Dockyard,
|
||||
buys and sells one typed item, undocks, moves, targets, aims, runs a held tractor
|
||||
beam, destroys the sole proof hostile, and collects the resulting loot exactly
|
||||
once through daemon-owned proximity. All eight retained witness receipts are
|
||||
provider-owned and reconciled. The run records 65,536 Stardust particles, 147
|
||||
provider-owned and reconciled. The run records 65,536 Stardust particles, 396
|
||||
field composites/dispatches/draws, and both camera-channel invariants. The pilot
|
||||
capture contains the 3D fog/Stardust/ship frame and no map icons; the map capture
|
||||
contains the map icons against its map background. The pilot image remains
|
||||
visually overexposed and is integration evidence, not final art approval.
|
||||
The wrapper starts the client before the daemon so package import time does not
|
||||
advance the live proof world. EveUnity 0.3.94 reports a refused TCP rendezvous as
|
||||
a retryable provider-preparation failure; once the daemon binds, the same generic
|
||||
preparation path connects without an Aetheria-specific reconnect shim.
|
||||
|
||||
The July 19 transport-boundary run in `artifacts/demanded-fields-warm-6`
|
||||
passed its released-consumer PlayMode test and produced both camera captures.
|
||||
|
|
|
|||
|
|
@ -17,10 +17,10 @@ param(
|
|||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$expectedEveUnityCommit = "c93f09342f4c14e0607a47038df6b8e2e99cbf03"
|
||||
$expectedEveUnityCommit = "0463ddff4e39c9cca14e632b7e46b6b0081c67cc"
|
||||
$expectedEveFieldsCommit = "c5a4a75c1b727499b16c2dae1895f29e2a9f72f0"
|
||||
$expectedEveUnityUiToolkitCommit = "4d0cbe0185bdc4fc65eb63503a7c5cb578539669"
|
||||
$expectedCultLibCommit = "d018bb1fb5a8ce73da6f5579e2f475750d901d8b"
|
||||
$expectedCultLibCommit = "c148d891c1d8713285ae15b2f17b59c106fb9426"
|
||||
$repoRoot = Split-Path -Parent $PSScriptRoot
|
||||
$projectRoot = $ClientProject
|
||||
$outputRoot = if ([IO.Path]::IsPathRooted($OutputDirectory)) { $OutputDirectory } else { Join-Path $repoRoot $OutputDirectory }
|
||||
|
|
@ -207,8 +207,8 @@ $daemonArguments = @(
|
|||
"--no-odin-announcements"
|
||||
)
|
||||
$env:AETHERIA_TRACE_EVE_SNAPSHOTS = "1"
|
||||
$env:AETHERIA_TRACE_CLIENT_RUDP = "1"
|
||||
$env:EVEUNITY_RENDEZVOUS_ENDPOINT = "rudp://127.0.0.1:$Port"
|
||||
$env:AETHERIA_TRACE_CLIENT_TRANSPORT = "1"
|
||||
$env:EVEUNITY_RENDEZVOUS_ENDPOINT = "cultnet+tcp://127.0.0.1:$Port"
|
||||
$env:EVEUNITY_PROVIDER_ID = "aetheria"
|
||||
Remove-Item Env:EVEUNITY_SURFACE_ID -ErrorAction SilentlyContinue
|
||||
$env:EVEUNITY_REPLICA_PATH = $replicaPath
|
||||
|
|
@ -227,32 +227,31 @@ $arguments = @(
|
|||
"-testFilter", "GenericCultMeshClientLowersAndMovesAdvertisedWorld",
|
||||
"-testResults", $resultsPath, "-logFile", $unityLogPath
|
||||
)
|
||||
$unity = Start-Process -FilePath $UnityExe -ArgumentList $arguments -WorkingDirectory $repoRoot -PassThru -WindowStyle Hidden
|
||||
Write-Host "Unity witness PID: $($unity.Id)"
|
||||
Write-Host "Unity log: $unityLogPath"
|
||||
$clientReady = $false
|
||||
for ($attempt = 0; $attempt -lt 240; $attempt++) {
|
||||
if ($unity.HasExited) { throw "Unity exited before reaching provider connection. See $unityLogPath" }
|
||||
if (Test-Path -LiteralPath $providerReadyPath) { $clientReady = $true; break }
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
if (-not $clientReady) {
|
||||
Stop-Process -Id $unity.Id -Force -ErrorAction SilentlyContinue
|
||||
throw "Unity did not reach provider connection within 120 seconds. See $unityLogPath"
|
||||
}
|
||||
|
||||
$daemon = Start-Process -FilePath "dotnet" -ArgumentList $daemonArguments -PassThru -WindowStyle Hidden `
|
||||
-RedirectStandardOutput $daemonLogPath -RedirectStandardError (Join-Path $outputRoot "aetheria-daemon.error.log")
|
||||
Write-Host "Aetheria daemon PID: $($daemon.Id)"
|
||||
Write-Host "Daemon log: $daemonLogPath"
|
||||
Write-Host "Poll: Select-String -Path '$daemonLogPath' -Pattern 'Aetheria client CultMesh endpoint'"
|
||||
|
||||
$daemon = $null
|
||||
$unity = $null
|
||||
try {
|
||||
$unity = Start-Process -FilePath $UnityExe -ArgumentList $arguments -WorkingDirectory $repoRoot -PassThru -WindowStyle Hidden
|
||||
Write-Host "Unity witness PID: $($unity.Id)"
|
||||
Write-Host "Unity log: $unityLogPath"
|
||||
$clientReady = $false
|
||||
for ($attempt = 0; $attempt -lt 240; $attempt++) {
|
||||
if ($unity.HasExited) { throw "Unity exited before reaching provider preparation. See $unityLogPath" }
|
||||
if (Test-Path -LiteralPath $providerReadyPath) { $clientReady = $true; break }
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
if (-not $clientReady) { throw "Unity did not reach provider preparation within 120 seconds. See $unityLogPath" }
|
||||
|
||||
$daemon = Start-Process -FilePath "dotnet" -ArgumentList $daemonArguments -PassThru -WindowStyle Hidden `
|
||||
-RedirectStandardOutput $daemonLogPath -RedirectStandardError (Join-Path $outputRoot "aetheria-daemon.error.log")
|
||||
Write-Host "Aetheria daemon PID: $($daemon.Id)"
|
||||
Write-Host "Daemon log: $daemonLogPath"
|
||||
Write-Host "Poll: Select-String -Path '$daemonLogPath' -Pattern 'Aetheria client CultMesh endpoint'"
|
||||
|
||||
$ready = $false
|
||||
for ($attempt = 0; $attempt -lt 240; $attempt++) {
|
||||
if ($daemon.HasExited) { throw "Aetheria daemon exited before publishing CultMesh. See $daemonLogPath" }
|
||||
if ((Test-Path $daemonLogPath) -and
|
||||
(Select-String -Path $daemonLogPath -Pattern "Aetheria client CultMesh endpoint: rudp://127.0.0.1:$Port" -Quiet)) { $ready = $true; break }
|
||||
(Select-String -Path $daemonLogPath -Pattern "Aetheria client CultMesh endpoint: cultnet\+tcp://127.0.0.1:$Port" -Quiet)) { $ready = $true; break }
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
if (-not $ready) { throw "Aetheria daemon did not open CultMesh port $Port within 120 seconds. See $daemonLogPath" }
|
||||
|
|
@ -451,5 +450,5 @@ finally {
|
|||
if ($null -ne $unity -and -not $unity.HasExited) { Stop-Process -Id $unity.Id -Force -ErrorAction SilentlyContinue }
|
||||
if ($null -ne $daemon -and -not $daemon.HasExited) { Stop-Process -Id $daemon.Id -Force }
|
||||
Remove-Item Env:EVEUNITY_RENDEZVOUS_ENDPOINT, Env:EVEUNITY_PROVIDER_ENDPOINT, Env:EVEUNITY_PROVIDER_ID, Env:EVEUNITY_SURFACE_ID, Env:EVEUNITY_REPLICA_PATH, Env:EVEUNITY_AETHERIA_CAPTURE_PATH, Env:EVEUNITY_AETHERIA_MAP_CAPTURE_PATH, Env:EVEUNITY_DISABLE_AUTO_LAUNCHER, Env:EVEUNITY_ASSET_CACHE_PATH, Env:EVEUNITY_WITNESS_FACTS_PATH, Env:EVEUNITY_PROVIDER_READY_PATH, Env:EVEUNITY_WITNESS_PROFILE, Env:EVEUNITY_WITNESS_GAMEPLAY_SCENARIO -ErrorAction SilentlyContinue
|
||||
Remove-Item Env:AETHERIA_TRACE_EVE_SNAPSHOTS -ErrorAction SilentlyContinue
|
||||
Remove-Item Env:AETHERIA_TRACE_EVE_SNAPSHOTS, Env:AETHERIA_TRACE_CLIENT_TRANSPORT -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue