maniator / maniator/verticopolis
[Parity][P3]: a pre-v1.14.0 stairless export with a skip-floor shaft cannot be recognized
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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