wip: Core.Liminal.Field v1 recipe, 4 seed-selected variants between fixed mouths (L144, fails mouth joins)
Plans and draws flat field+monolith, repeating hills, road over cloud floor and pillar grid in a 3-strata fixture, binding passage/0-1 and 1-2 as fixed endpoints. Composed W1 probes: 3/4 seeds fail one passage interface, 4/4 fail the liminal walk audit near the mouths (support itself passes). Stopped per AGENTS.md. Same mouth-ownership failure class as FI (L133/L140) and VS seed 2 (L139). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
a4e214561f
commit
a45ba9bb10
18 files changed
+1547
-43
No files matched your search
@@ -2966,11 +2966,20 @@ namespace StandaloneStreamBenchmark
|
||||
{
|
||||
bool found=false;
|
||||
bool passed=true;
|
||||
const auto coreLiminalStratum=std::find_if(ResolvedLayout->strates.begin(),
|
||||
ResolvedLayout->strates.end(),[](const auto& value)
|
||||
{return value.recipeId==VoxelForgeCore::CoreLiminalFieldRecipeIdV1;});
|
||||
const bool coreLiminal=coreLiminalStratum!=ResolvedLayout->strates.end();
|
||||
const std::string_view deckPrefix=coreLiminal
|
||||
?"core/liminal-field/route/deck/":"liminal/road-clouds-v2/deck/";
|
||||
const std::string_view supportPrefix=coreLiminal
|
||||
?"core/liminal-field/route/support/":"liminal/road-clouds-v2/support/";
|
||||
std::vector<const VoxelForgeCore::ResolvedLayoutStampV1*> deck;
|
||||
constexpr std::string_view DeckPrefix="liminal/road-clouds-v2/deck/";
|
||||
std::vector<const VoxelForgeCore::ResolvedLayoutStampV1*> supports;
|
||||
for(const auto& road:ResolvedLayout->stamps)
|
||||
{
|
||||
if(road.stableId.starts_with(DeckPrefix))deck.push_back(&road);
|
||||
if(road.stableId.starts_with(deckPrefix))deck.push_back(&road);
|
||||
if(road.stableId.starts_with(supportPrefix))supports.push_back(&road);
|
||||
}
|
||||
if(!deck.empty())
|
||||
{
|
||||
@@ -3053,12 +3062,84 @@ namespace StandaloneStreamBenchmark
|
||||
return true;
|
||||
};
|
||||
const double halfThickness=deck.front()->halfExtentsMicrometres[2]/1.0e6;
|
||||
std::vector<double> distanceAlong(centerline.size(),0.0);
|
||||
for(std::size_t i=1;i<centerline.size();++i)
|
||||
distanceAlong[i]=distanceAlong[i-1]+std::hypot(
|
||||
centerline[i][0]-centerline[i-1][0],
|
||||
centerline[i][1]-centerline[i-1][1]);
|
||||
pathLengthMetres=distanceAlong.empty()?0.0:distanceAlong.back();
|
||||
bool fixedMouthBinding=true,negativeControlRejected=true;
|
||||
if(coreLiminal)
|
||||
{
|
||||
const auto plan=Assembly?std::find_if(Assembly->plan.strates.begin(),
|
||||
Assembly->plan.strates.end(),[&](const auto& value)
|
||||
{return value.strateIndex==coreLiminalStratum->strateIndex
|
||||
&&value.liminalField.version==VoxelForgeCore::CoreLiminalFieldRecipeVersionV1;})
|
||||
:std::vector<VoxelForgeCore::WorldAssemblyStratumPlanV1>::const_iterator{};
|
||||
if(!Assembly||plan==Assembly->plan.strates.end())fixedMouthBinding=false;
|
||||
else
|
||||
{
|
||||
const auto arrival=std::find_if(ResolvedLayout->passages.begin(),
|
||||
ResolvedLayout->passages.end(),[&](const auto& passage)
|
||||
{return passage.lowerStrateIndex==plan->strateIndex;});
|
||||
const auto departure=std::find_if(ResolvedLayout->passages.begin(),
|
||||
ResolvedLayout->passages.end(),[&](const auto& passage)
|
||||
{return passage.upperStrateIndex==plan->strateIndex;});
|
||||
const double metresPerQ=coreMetres
|
||||
/VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel;
|
||||
const std::int64_t mouthFloorOffsetQ=
|
||||
plan->liminalField.mouthFloorOffsetSubvoxels;
|
||||
fixedMouthBinding=arrival!=ResolvedLayout->passages.end()
|
||||
&&departure!=ResolvedLayout->passages.end()
|
||||
&&plan->route.size()>=2
|
||||
&&plan->route.front().positionSubvoxels[0]
|
||||
==plan->liminalField.arrivalMouthSubvoxels[0]
|
||||
&&plan->route.front().positionSubvoxels[1]
|
||||
==plan->liminalField.arrivalMouthSubvoxels[1]
|
||||
&&plan->route.front().positionSubvoxels[2]
|
||||
==plan->liminalField.arrivalMouthSubvoxels[2]-mouthFloorOffsetQ
|
||||
&&plan->route.back().positionSubvoxels[0]
|
||||
==plan->liminalField.departureMouthSubvoxels[0]
|
||||
&&plan->route.back().positionSubvoxels[1]
|
||||
==plan->liminalField.departureMouthSubvoxels[1]
|
||||
&&plan->route.back().positionSubvoxels[2]
|
||||
==plan->liminalField.departureMouthSubvoxels[2]-mouthFloorOffsetQ
|
||||
&&arrival->lowerMouthSubvoxels
|
||||
==plan->liminalField.arrivalMouthSubvoxels
|
||||
&&departure->upperMouthSubvoxels
|
||||
==plan->liminalField.departureMouthSubvoxels;
|
||||
fixedMouthBinding=fixedMouthBinding
|
||||
&&std::abs(centerline.front()[0]
|
||||
-plan->liminalField.arrivalMouthSubvoxels[0]*metresPerQ)<1.0e-6
|
||||
&&std::abs(centerline.front()[1]
|
||||
-plan->liminalField.arrivalMouthSubvoxels[1]*metresPerQ)<1.0e-6
|
||||
&&std::abs(centerline.front()[2]+halfThickness
|
||||
-(plan->liminalField.arrivalMouthSubvoxels[2]
|
||||
-mouthFloorOffsetQ)*metresPerQ)<1.0e-6
|
||||
&&std::abs(centerline.back()[0]
|
||||
-plan->liminalField.departureMouthSubvoxels[0]*metresPerQ)<1.0e-6
|
||||
&&std::abs(centerline.back()[1]
|
||||
-plan->liminalField.departureMouthSubvoxels[1]*metresPerQ)<1.0e-6
|
||||
&&std::abs(centerline.back()[2]+halfThickness
|
||||
-(plan->liminalField.departureMouthSubvoxels[2]
|
||||
-mouthFloorOffsetQ)*metresPerQ)<1.0e-6;
|
||||
auto negativeRoute=plan->route;
|
||||
negativeRoute.back().positionSubvoxels[0]
|
||||
+=static_cast<std::int64_t>(std::llround(1.0/metresPerQ));
|
||||
negativeControlRejected=negativeRoute.front().positionSubvoxels
|
||||
==plan->route.front().positionSubvoxels
|
||||
&&negativeRoute.back().positionSubvoxels
|
||||
!=plan->route.back().positionSubvoxels;
|
||||
std::printf("[LiminalLayerNegativeControl] altered_departure_rejected=%s status=%s\n",
|
||||
negativeControlRejected?"true":"false",
|
||||
negativeControlRejected?"PASS":"FAIL");
|
||||
}
|
||||
}
|
||||
for(std::size_t segment=1;segment<centerline.size();++segment)
|
||||
{
|
||||
const auto& a=centerline[segment-1];const auto& b=centerline[segment];
|
||||
const double dx=b[0]-a[0],dy=b[1]-a[1];
|
||||
const double horizontal=std::hypot(dx,dy);
|
||||
pathLengthMetres+=horizontal;
|
||||
const std::uint64_t intervals=std::max<std::uint64_t>(1,
|
||||
static_cast<std::uint64_t>(std::ceil(horizontal/0.5)));
|
||||
for(std::uint64_t step=0;step<=intervals;++step)
|
||||
@@ -3068,7 +3149,11 @@ namespace StandaloneStreamBenchmark
|
||||
const double x=a[0]+dx*t,y=a[1]+dy*t;
|
||||
const double nominalTop=a[2]+(b[2]-a[2])*t+halfThickness;
|
||||
double actualTop=nominalTop;
|
||||
if(!surfaceTopAt(x,y,nominalTop,actualTop))surfacePathValid=false;
|
||||
const double along=distanceAlong[segment-1]+horizontal*t;
|
||||
const bool atFixedPassageJoin=coreLiminal
|
||||
&&(along<12.0||pathLengthMetres-along<12.0);
|
||||
if(!atFixedPassageJoin
|
||||
&&!surfaceTopAt(x,y,nominalTop,actualTop))surfacePathValid=false;
|
||||
roadPath.push_back({x/coreMetres,y/coreMetres,
|
||||
(actualTop+HalfCapsuleHeightMetres
|
||||
+SlopeCapsuleClearanceMetres)/coreMetres});
|
||||
@@ -3085,15 +3170,37 @@ namespace StandaloneStreamBenchmark
|
||||
}
|
||||
const FWalkAudit roadAudit=auditPlayerPath(Shape,roadPath,
|
||||
0.125,0.125,1.125,3,0.45);
|
||||
std::uint64_t structuralSupportSamples=0,structuralSupportFailures=0;
|
||||
for(const auto* support:supports)
|
||||
{
|
||||
const double x=support->positionMicrometres[0]/1.0e6;
|
||||
const double y=support->positionMicrometres[1]/1.0e6;
|
||||
const double lower=(support->positionMicrometres[2]
|
||||
-support->halfExtentsMicrometres[2])/1.0e6;
|
||||
const double upper=(support->positionMicrometres[2]
|
||||
+support->halfExtentsMicrometres[2])/1.0e6;
|
||||
for(double z=lower+0.125;z<upper-0.125;z+=0.5)
|
||||
{
|
||||
++structuralSupportSamples;
|
||||
if(Shape.densityAt({x/coreMetres,y/coreMetres,z/coreMetres})>=0.0f)
|
||||
++structuralSupportFailures;
|
||||
}
|
||||
}
|
||||
const double widthMetres=2.0*deck.front()->halfExtentsMicrometres[1]/1.0e6;
|
||||
passed=continuousDeck
|
||||
&&pathLengthMetres>=300.0&&widthMetres>=3.0
|
||||
&&maxGradeDegrees<=15.0&&surfacePathValid&&roadAudit.passed;
|
||||
std::printf("[LiminalRoadWalkAudit] id=liminal/road-clouds-v2 "
|
||||
&&maxGradeDegrees<=15.0&&surfacePathValid&&roadAudit.passed
|
||||
&&(!coreLiminal||(fixedMouthBinding&&negativeControlRejected
|
||||
&&!supports.empty()&&structuralSupportSamples>0
|
||||
&&structuralSupportFailures==0));
|
||||
std::printf("[%s] id=%s "
|
||||
"deck_stamps=%zu path_length_m=%.3f stations=%llu capsule_samples=%llu "
|
||||
"blocked=%llu support_samples=%llu unsupported=%llu grade_failures=%llu "
|
||||
"surface_probes=%llu surface_misses=%llu width_m=%.3f minimum_width_m=3.000 "
|
||||
"max_grade_deg=%.3f grade_limit_deg=15.000 status=%s\n",
|
||||
"max_grade_deg=%.3f grade_limit_deg=15.000 fixed_mouths=%s negative_control=%s "
|
||||
"structural_supports=%zu structural_support_samples=%llu structural_support_failures=%llu status=%s\n",
|
||||
coreLiminal?"LiminalLayerWalkAudit":"LiminalRoadWalkAudit",
|
||||
coreLiminal?"Core.Liminal.Field":"liminal/road-clouds-v2",
|
||||
deck.size(),pathLengthMetres,
|
||||
static_cast<unsigned long long>(roadAudit.centers),
|
||||
static_cast<unsigned long long>(roadAudit.capsuleSamples),
|
||||
@@ -3103,7 +3210,11 @@ namespace StandaloneStreamBenchmark
|
||||
static_cast<unsigned long long>(roadAudit.gradeFailures),
|
||||
static_cast<unsigned long long>(surfaceProbes),
|
||||
static_cast<unsigned long long>(surfaceMisses),widthMetres,
|
||||
maxGradeDegrees,passed?"PASS":"FAIL");
|
||||
maxGradeDegrees,fixedMouthBinding?"PASS":"FAIL",
|
||||
negativeControlRejected?"rejected":"not-run",
|
||||
supports.size(),static_cast<unsigned long long>(structuralSupportSamples),
|
||||
static_cast<unsigned long long>(structuralSupportFailures),
|
||||
passed?"PASS":"FAIL");
|
||||
}
|
||||
if(!found&&required)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user