proto: liminal looks - pool rooms, backrooms grid, staircase to nowhere, terraced hills (L161)

Stamp vocabulary v7 (opt-in fillBox, carveBox, fillSteps; carveArch reused); flat-field liminal stamp fixtures; capsule
walk audit with doorway-width gate (1.2 m control fails as expected). Clang/GCC W1/W8/W12 identical; owner canonical
hashes unchanged; fast tier 273/273. Terraced wide view not yet legible.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-11-02 10:11:37 +01:00
1 parent 4290672d1c
commit ff52c9b576
17 files changed
+861 -12

No files matched your search

+29 -4
View File
@@ -176,7 +176,7 @@ namespace
{
const auto value=static_cast<std::uint8_t>(kind);
return value>=static_cast<std::uint8_t>(ResolvedSdfStampKindV1::carveEllipsoid)
&&value<=static_cast<std::uint8_t>(ResolvedSdfStampKindV1::fillSweptDeckSegment);
&&value<=static_cast<std::uint8_t>(ResolvedSdfStampKindV1::fillSteps);
}
bool LayoutStampIsMotif(ResolvedSdfStampKindV1 kind)
{return kind==ResolvedSdfStampKindV1::fillMonolith
@@ -711,6 +711,8 @@ namespace
<<",\"minimum_spacing_um\":"<<stamp.minimumSpacingMicrometres
<<",\"attachment_policy\":"<<static_cast<unsigned>(stamp.attachmentPolicy)
<<",\"floor_um\":"<<stamp.floorMicrometres;
if(stamp.kind==ResolvedSdfStampKindV1::fillSteps)
out<<",\"step_count\":"<<stamp.stepCount;
out<<'}';
}
out<<']';
@@ -1279,8 +1281,9 @@ bool ResolvedLayoutSnapshotV3::validate(ResolvedLayoutValidationModeV3 mode,
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV3
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV4
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV5
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV6)
add("stamp_vocabulary_version","resolved stamps require supported vocabulary version 1 through 6");
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV6
&&stampVocabularyVersion!=ResolvedLayoutStampVocabularyVersionV7)
add("stamp_vocabulary_version","resolved stamps require supported vocabulary version 1 through 7");
std::vector<std::string> stampIds;
for(const auto& stamp:stamps)
{
@@ -1292,8 +1295,18 @@ bool ResolvedLayoutSnapshotV3::validate(ResolvedLayoutValidationModeV3 mode,
if(!LayoutStampKindValid(stamp.kind)||stamp.yawQuarterTurns>3
||(stamp.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment
&&stampVocabularyVersion<ResolvedLayoutStampVocabularyVersionV4)
||((stamp.kind==ResolvedSdfStampKindV1::fillBox
||stamp.kind==ResolvedSdfStampKindV1::carveBox
||stamp.kind==ResolvedSdfStampKindV1::fillSteps)
&&stampVocabularyVersion<ResolvedLayoutStampVocabularyVersionV7)
||(motif&&stampVocabularyVersion<ResolvedLayoutStampVocabularyVersionV3))
add("stamp_kind","stamp has an unsupported kind or orientation");
if((stamp.kind==ResolvedSdfStampKindV1::fillSteps
&&(stampVocabularyVersion<ResolvedLayoutStampVocabularyVersionV7
||stamp.stepCount<2||stamp.stepCount>128
||stamp.roundingRadiusMicrometres!=0))
||(stamp.kind!=ResolvedSdfStampKindV1::fillSteps&&stamp.stepCount!=0))
add("stamp_steps",stamp.stableId+" has an invalid step count or rounding mode");
bool validExtents=true;
for(const auto extent:stamp.halfExtentsMicrometres)
validExtents=validExtents&&extent>=500000&&extent<=100000000;
@@ -1777,6 +1790,7 @@ std::optional<ResolvedLayoutSnapshotV3> ResolvedLayoutSnapshotV3::FromJson(
stamp.floorMicrometres=LayoutInt(v,"floor_um");
stamp.irregularitySeed=static_cast<std::uint64_t>(LayoutInt(v,"irregularity_seed"));
stamp.yawQuarterTurns=static_cast<std::uint8_t>(LayoutInt(v,"yaw_quarter_turns"));
stamp.stepCount=static_cast<std::uint16_t>(LayoutInt(v,"step_count"));
s.stamps.push_back(std::move(stamp));
}
for(const auto& v:root.Get("cavern_rooms").AsArray())
@@ -1901,7 +1915,13 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t
});
const bool hasSweptDeck=std::any_of(ordered.begin(),ordered.end(),[](const auto& request)
{return request.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment;});
candidate.stampVocabularyVersion=hasContinuousSweptDeck
const bool hasVocabulary7Stamp=std::any_of(ordered.begin(),ordered.end(),[](const auto& request)
{return request.kind==ResolvedSdfStampKindV1::fillBox
||request.kind==ResolvedSdfStampKindV1::carveBox
||request.kind==ResolvedSdfStampKindV1::fillSteps;});
candidate.stampVocabularyVersion=hasVocabulary7Stamp
?ResolvedLayoutStampVocabularyVersionV7
:hasContinuousSweptDeck
?(hasNonMonotoneSweptDeck?ResolvedLayoutStampVocabularyVersionV6
:ResolvedLayoutStampVocabularyVersionV5)
:hasSweptDeck?ResolvedLayoutStampVocabularyVersionV4
@@ -1914,6 +1934,10 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t
&&ordered[requestIndex-1].stableId==request.stableId))
{error="stamp requests require non-empty unique stable IDs";return false;}
if(!LayoutStampKindValid(request.kind)||request.yawQuarterTurns>3
||(request.kind==ResolvedSdfStampKindV1::fillSteps
?(request.stepCount<2||request.stepCount>128
||request.roundingRadiusMicrometres!=0)
:request.stepCount!=0)
||request.placementRadiusMicrometres<0
||request.placementRadiusMicrometres>100000000
||(request.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment
@@ -1998,6 +2022,7 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t
stamp.smoothWidthMicrometres=request.smoothWidthMicrometres;
stamp.irregularityAmplitudeMicrometres=request.irregularityAmplitudeMicrometres;
stamp.irregularityWavelengthMicrometres=request.irregularityWavelengthMicrometres;
stamp.stepCount=request.stepCount;
stamp.irregularitySeed=baseSeed;stamp.yawQuarterTurns=request.yawQuarterTurns;
std::array<std::int64_t,3> offset{};
if(request.placementRadiusMicrometres>0)