maniator / maniator/verticopolis

[Parity][P3]: a pre-v1.14.0 stairless export with a skip-floor shaft cannot be recognized

Open
#745 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Accepted limitation from PR #742, recorded so it is a decision rather than a surprise.

The shape

A .TDT that is ALL of:

  • exported by Verticopolis 2.9.0 or earlier (serviced-floor payload layout), AND
  • exported before v1.14.0 (so the file stops after the stairs table instead of carrying the 0xFF routing region), AND
  • stairless (its 64 stair records are empty), AND
  • carrying a shaft that skips floors.

Why it is not fixed

The importer takes the legacy layout only when the file corroborates it, by placing a structure whose old-writer position is known exactly where that walk's table would end. This shape has no such structure: no stairs table to anchor on, no routing region.

Anchoring on the file's END was tried (c9f28e3) and withdrawn one round later. A CURRENT-layout file truncated at exactly the shorter walk's end plus finance, parking and stairs is byte-identical to this shape whenever both regions are zeros, which they are for a stairless tower with no connected stalls. Nothing can separate them, so an EOF anchor cannot recover the old file without silently mis-reading the damaged one, and a silent wrong answer is the worse failure. Both directions are pinned by tests in tdtImport.integration.test.ts.

What a player sees

The import falls back to synthesized transports WITH a warning, which is the pre-#742 behavior for these files. Nothing is silently wrong; the tower's own shafts are not recovered.

If it ever matters

The population is tiny: exports from before v1.14.0 are the ones that page-faulted the 1994 game on load (backlog tdt-trailing-structure-layout), so they never worked for their only purpose. Recovering them would need a positive marker inside the file, e.g. stamping our own exports with a format-generation byte, which is worth doing for its own sake if we ever revise the writer: it would replace all of this inference with a fact.

Story id: tdt-legacy-pre-tail-import

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tdtImport.integration.test.ts, which pins both the indistinguishable legacy and truncated current-layout cases, and review the importer path that chooses the legacy layout. This issue specifies no implementation; completion would require an agreed positive format marker and corresponding importer and test changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
data
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.