wip(assembler): round L29 -- strate transitions honoured at the bedrock/ceiling interface
EVoxelStrateTransition from the upper strate shapes the bedrock(N)/ceiling(N+1) interface in the shared composition layer: Hard flat; Gradient = smooth 2D hash surface (16 m owner width, about 4 m measured undulation); Interleaved = 3D domain-warped fingered overlap within the width. Each band keeps >= 2 Core voxels solid; faces return to the seam near passage mouths. Interface audit over 512 m: 0 hole columns for all modes; wider-than-declared and too-thin controls rejected. All passage, route, proof and validator audits pass; deterministic Clang = GCC. Evaluator 15. Cost +4% SW, +1.3% FI vs L28. Open: ring-like artifact on the FI floor capture; transition look unverified. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
1 parent
f23ab7b9fa
commit
63c7e563d0
16 files changed
+794
-42
No files matched your search
@@ -69,6 +69,9 @@ namespace
|
||||
bool AuditResolvedLayoutBoundaries=false;
|
||||
bool AuditResolvedLayoutPassages=false;
|
||||
bool AuditSurfaceClearance=false;
|
||||
bool AuditStrateTransitions=false;
|
||||
int TransitionModeOverride=-1;
|
||||
int TransitionWidthChunksOverride=-1;
|
||||
};
|
||||
|
||||
bool ParseInteger(std::string_view text,int& output)
|
||||
@@ -103,6 +106,38 @@ namespace
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OverrideTransitions(VFJson::Value& root,int mode,int widthChunks,std::string& error)
|
||||
{
|
||||
auto* object=std::get_if<VFJson::Value::Object>(&root.Data);
|
||||
if(!object){error="transition fixture override requires an owner JSON object";return false;}
|
||||
const auto stratesIt=object->find("strates");
|
||||
if(stratesIt==object->end())
|
||||
{error="transition fixture override cannot find the resolved strate array";return false;}
|
||||
auto* strates=std::get_if<VFJson::Value::Array>(&stratesIt->second.Data);
|
||||
if(!strates||strates->empty())
|
||||
{error="transition fixture override found an empty or invalid strate array";return false;}
|
||||
for(auto& strate:*strates)
|
||||
{
|
||||
auto* strateObject=std::get_if<VFJson::Value::Object>(&strate.Data);
|
||||
if(!strateObject){error="transition fixture contains a malformed strate";return false;}
|
||||
const auto assetIt=strateObject->find("asset");
|
||||
if(assetIt==strateObject->end())continue;
|
||||
auto* asset=std::get_if<VFJson::Value::Object>(&assetIt->second.Data);
|
||||
if(!asset)continue;
|
||||
if(mode>=0)
|
||||
{
|
||||
VFJson::Value value;value.Data=static_cast<double>(mode);
|
||||
(*asset)["TransitionType"]=std::move(value);
|
||||
}
|
||||
if(widthChunks>=0)
|
||||
{
|
||||
VFJson::Value value;value.Data=static_cast<double>(widthChunks);
|
||||
(*asset)["TransitionBlendChunks"]=std::move(value);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ParseOptions(int argc,char** argv,FOptions& options)
|
||||
{
|
||||
const std::filesystem::path executable=std::filesystem::absolute(argv[0]);
|
||||
@@ -126,6 +161,8 @@ namespace
|
||||
" --resolved-layout-output=FILE (canonical plan-time layout snapshot)\n"
|
||||
" --resolved-layout-only (exit after plan and snapshot validation)\n"
|
||||
" --audit-resolved-layout-boundaries (query Core at each recorded endpoint)\n"
|
||||
" --audit-strate-transitions (measure interface crossing, band thickness and holes)\n"
|
||||
" --transition-mode=hard|gradient|interleaved --transition-width-chunks=N (fixture override)\n"
|
||||
" --audit-resolved-layout-passages (capsule, support, route-binding and blocked-control audit)\n"
|
||||
" --audit-surface-clearance (sample biome terrain/caps against the resolved ceiling)\n"
|
||||
" --auto-surface-camera (place the 27-tile cube on this seed's surface)\n"
|
||||
@@ -149,6 +186,21 @@ namespace
|
||||
else if(arg=="--audit-resolved-layout-boundaries")options.AuditResolvedLayoutBoundaries=true;
|
||||
else if(arg=="--audit-resolved-layout-passages")options.AuditResolvedLayoutPassages=true;
|
||||
else if(arg=="--audit-surface-clearance")options.AuditSurfaceClearance=true;
|
||||
else if(arg=="--audit-strate-transitions")options.AuditStrateTransitions=true;
|
||||
else if(arg.starts_with("--transition-mode="))
|
||||
{
|
||||
const std::string_view mode=arg.substr(std::string_view("--transition-mode=").size());
|
||||
if(mode=="gradient")options.TransitionModeOverride=0;
|
||||
else if(mode=="hard")options.TransitionModeOverride=1;
|
||||
else if(mode=="interleaved")options.TransitionModeOverride=2;
|
||||
else {std::fprintf(stderr,"Invalid transition mode: %.*s\n",static_cast<int>(mode.size()),mode.data());return false;}
|
||||
}
|
||||
else if(arg.starts_with("--transition-width-chunks="))
|
||||
{
|
||||
if(!readInt("--transition-width-chunks=",options.TransitionWidthChunksOverride)
|
||||
||options.TransitionWidthChunksOverride<0||options.TransitionWidthChunksOverride>64)
|
||||
{std::fprintf(stderr,"transition width chunks must be in 0..64\n");return false;}
|
||||
}
|
||||
else if(arg=="--stream-benchmark")options.StreamBenchmark=true;
|
||||
else if(arg=="--stream-pipeline")options.StreamPipeline=true;
|
||||
else if(arg=="--stream-hash")options.StreamHash=true;
|
||||
@@ -303,6 +355,10 @@ int main(int argc,char** argv)
|
||||
if(options.FloatingIslandsRecipe
|
||||
&&!StandaloneWorldAssemblyPrototype::SelectTopStrateAsFloatingIslands(ownerJsonRoot,error))
|
||||
{std::fprintf(stderr,"Floating-island recipe selection failed: %s\n",error.c_str());return 2;}
|
||||
if((options.TransitionModeOverride>=0||options.TransitionWidthChunksOverride>=0)
|
||||
&&!OverrideTransitions(ownerJsonRoot,options.TransitionModeOverride,
|
||||
options.TransitionWidthChunksOverride,error))
|
||||
{std::fprintf(stderr,"Transition fixture override failed: %s\n",error.c_str());return 2;}
|
||||
if(!StandaloneOwnerLoader::Resolve(ownerJsonRoot,*ownerWorld,error))
|
||||
{std::fprintf(stderr,"Owner data load failed: %s\n",error.c_str());return 2;}
|
||||
std::printf("[ColdTimeline] stage=owner_data_load end_ms=%.3f\n",
|
||||
@@ -551,6 +607,6 @@ int main(int argc,char** argv)
|
||||
options.RegionCrossing,options.AuditTileShapeReadiness,
|
||||
options.DiagnosticSlowShapeCompileMs,options.AuditBasePageEquivalence,
|
||||
options.AuditRouteParity,options.AuditResolvedLayoutBoundaries,
|
||||
options.AuditResolvedLayoutPassages,
|
||||
options.AuditResolvedLayoutPassages,options.AuditStrateTransitions,
|
||||
&resolvedLayout);
|
||||
}
|
||||
Reference in new issue
Block a user