Files
tokyo-wangan-racing/tools/probe_rebuild.luau
T
jesse 6e50f9718d
CI / quality (push) Failing after 1m9s
Aux-lane suppression + PA geometry fixes; probe/verify tooling
MapBuilder.luau
  - Suppress the aux lane across samples 525-550 (AUX_SUPPRESS_FROM/TO),
    honoring the user's hand deletion in Studio so a rebuild no longer
    regenerates it.
  - Smoothstep the width ramp over AUX_BLEND=5 samples on each side. A hard
    cut produced a 26-stud lateral fence jog; the blend removes it.
  - DO NOT remove this suppression. Re-enabling it resurrects geometry the
    user deleted by hand.

rokit.toml
  - rojo 7.5.1 -> 7.7.0 to match the auto-updating Studio plugin.
    Server older than plugin fails the handshake with
    "attempt to index number with 'protocolVersion'".

tools/
  - 34 read-only probe/verify/capture scripts used to measure the datamodel
    instead of reasoning from source.

Verified-good baseline at this commit:
  total parts       16788
  PAWestSlip        60 segs, 34.4 deg total bend, worst 1.4, 0 kinks >5
  PAEastSlip        60 segs, 30.7 deg total bend, worst 1.3, 0 kinks >5
  AuxLane parts     30 (samples 525-550 deliberately absent)
  barrier coverage  823 samples, 0 unguarded
  fence jogs >10st  0
2026-08-06 08:27:47 -04:00

63 lines
1.9 KiB
Luau

-- Rebuild the map from current source and report what actually landed.
-- The workspace snapshot predates today's edits; this regenerates it.
local SS = game:GetService("ServerScriptService")
local out = {}
local function say(s) table.insert(out, s) end
local mb
for _, d in ipairs(SS:GetDescendants()) do
if d:IsA("ModuleScript") and d.Name == "MapBuilder" then mb = d end
end
if not mb then return "MapBuilder NOT FOUND" end
local okReq, M = pcall(require, mb)
if not okReq then return "require failed: " .. tostring(M) end
local old = workspace:FindFirstChild("Map")
if old then
old:Destroy()
say("destroyed stale Map")
end
local t0 = os.clock()
local okB, err = pcall(function() return M.build() end)
say(("build: %s (%.2fs)"):format(okB and "OK" or ("FAILED -> " .. tostring(err)), os.clock() - t0))
if not okB then return table.concat(out, "\n") end
local map = workspace:FindFirstChild("Map")
if not map then return table.concat(out, "\n") .. "\nMap MISSING after build" end
local parts, slip, aux = 0, {}, 0
for _, d in ipairs(map:GetDescendants()) do
if d:IsA("BasePart") then
parts += 1
for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do
local k = d.Name:match("^" .. s .. "_Deck_(%d+)$")
if k then
slip[s] = slip[s] or {}
table.insert(slip[s], { i = tonumber(k), y = d.Position.Y })
end
end
if d.Name:match("^AuxLane_%d+$") then aux += 1 end
end
end
say(("parts=%d auxLaneSegs=%d"):format(parts, aux))
for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do
local g = slip[s]
if not g or #g == 0 then
say(s .. ": ABSENT")
else
table.sort(g, function(a, b) return a.i < b.i end)
local topY, level = g[1].y, 0
for _, seg in ipairs(g) do
if math.abs(seg.y - topY) < 0.5 then level += 1 else break end
end
say(("%s: segs=%d startY=%.1f endY=%.1f level-run=%d/%d %s"):format(
s, #g, topY, g[#g].y, level, #g,
level >= 12 and "<- PARALLEL ASCENT PRESENT" or "<- old diving profile"))
end
end
return table.concat(out, "\n")