diff --git a/samples/eve-two-runtime/README.md b/samples/eve-two-runtime/README.md index 9e9f1656..6f7fe349 100644 --- a/samples/eve-two-runtime/README.md +++ b/samples/eve-two-runtime/README.md @@ -12,12 +12,12 @@ Eve. It intentionally has one owner for each decision: Run it from the CultLib repository: ```powershell -powershell -ExecutionPolicy Bypass -File .\scripts\verify-eve-two-runtime-sample.ps1 ` - -EveRoot ..\Eve +pwsh -File ./scripts/verify-eve-two-runtime-sample.ps1 -EveRoot ../Eve ``` -The verifier builds package artifacts, installs them into a new empty temporary -consumer, and runs `sample.mjs`. Success proves: +From clean CultLib and Eve checkouts, the verifier installs missing build +dependencies, builds package artifacts, installs them into a new empty +temporary consumer, and runs `sample.mjs`. Success proves: 1. no source-tree import is required by the consumer; 2. the provider surface and receipt pass Eve's generated runtime validators; diff --git a/scripts/verify-eve-two-runtime-sample.ps1 b/scripts/verify-eve-two-runtime-sample.ps1 index 8dfef6dd..98e81cb9 100644 --- a/scripts/verify-eve-two-runtime-sample.ps1 +++ b/scripts/verify-eve-two-runtime-sample.ps1 @@ -1,5 +1,6 @@ param( - [string] $EveRoot = (Join-Path (Split-Path -Parent $PSScriptRoot) "..\Eve") + [string] $EveRoot = (Join-Path (Split-Path -Parent $PSScriptRoot) "..\Eve"), + [switch] $SkipDependencyInstall ) $ErrorActionPreference = "Stop" @@ -53,6 +54,26 @@ foreach ($packageRoot in $packageRoots) { } } +if (-not $SkipDependencyInstall) { + $dependencyRoots = @($cultLibRoot, $eveContractsPackage, $eveBrowserPackage) + foreach ($dependencyRoot in $dependencyRoots) { + $typescript = Join-Path $dependencyRoot "node_modules\typescript\bin\tsc" + if (Test-Path -LiteralPath $typescript -PathType Leaf) { + continue + } + Push-Location $dependencyRoot + try { + & $npmPath ci --no-audit --no-fund + if ($LASTEXITCODE -ne 0) { + throw "Dependency installation failed: $dependencyRoot" + } + } + finally { + Pop-Location + } + } +} + $tempBase = [IO.Path]::GetFullPath([IO.Path]::GetTempPath()) $workRoot = Join-Path $tempBase ("gamecult-eve-two-runtime-" + [guid]::NewGuid().ToString("N")) $artifactRoot = Join-Path $workRoot "artifacts" diff --git a/src/GameCult.Mesh/docs/getting-started/03-publish-an-eve-surface.md b/src/GameCult.Mesh/docs/getting-started/03-publish-an-eve-surface.md index 65a2895b..1a94cce8 100644 --- a/src/GameCult.Mesh/docs/getting-started/03-publish-an-eve-surface.md +++ b/src/GameCult.Mesh/docs/getting-started/03-publish-an-eve-surface.md @@ -39,8 +39,7 @@ The package-artifact DOM-lowerer/headless checkpoint is executable from CultLib: ```powershell cd CultLib -powershell -ExecutionPolicy Bypass -File .\scripts\verify-eve-two-runtime-sample.ps1 ` - -EveRoot ..\Eve +pwsh -File ./scripts/verify-eve-two-runtime-sample.ps1 -EveRoot ../Eve ``` The verifier builds and packs `cultcache-ts`, `cultnet-ts`, `cultmesh-ts`, @@ -57,8 +56,8 @@ survive reopening the `.cc` store. Current verification for the Unity consumer remains: ```powershell -cd E:\Projects\EveUnity -powershell -ExecutionPolicy Bypass -File .\scripts\run-release-consumer-tests.ps1 +cd ../EveUnity +pwsh -File ./scripts/run-release-consumer-tests.ps1 ``` This first checkpoint proves clean package consumption, canonical Eve contract diff --git a/src/GameCult.Mesh/docs/getting-started/README.md b/src/GameCult.Mesh/docs/getting-started/README.md index d5e91d74..ebc38057 100644 --- a/src/GameCult.Mesh/docs/getting-started/README.md +++ b/src/GameCult.Mesh/docs/getting-started/README.md @@ -7,11 +7,12 @@ APIs, name the owner of each decision, and include a verification checkpoint. Run the current clean-consumer checkpoint first: ```powershell -powershell -ExecutionPolicy Bypass -File .\scripts\verify-eve-two-runtime-sample.ps1 ` - -EveRoot ..\Eve +pwsh -File ./scripts/verify-eve-two-runtime-sample.ps1 -EveRoot ../Eve ``` -It installs packed artifacts into an empty temporary project, validates the Eve +From clean CultLib and Eve checkouts, the command installs the package build +dependencies when absent, packs the five TypeScript packages, installs only +those artifacts into an empty temporary project, validates the Eve surface and receipt, executes one idempotent counter command, proves two local consumers converge, and reopens the durable `.cc` store. It is deliberately not called a networked-browser proof; chapter 3 names that remaining boundary.