Skip to content

research(track-a): recover world minimap static G1 - #593

Draft
blakinio wants to merge 10 commits into
mainfrom
research/OTC-20260819-track-a-world-minimap-static-g1
Draft

research(track-a): recover world minimap static G1#593
blakinio wants to merge 10 commits into
mainfrom
research/OTC-20260819-track-a-world-minimap-static-g1

Conversation

@blakinio

@blakinio blakinio commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Objective

Continue TIBIA-RE-WORLD-MINIMAP from merged corrected G0 promotion #551/#552 and execute the next bounded current-build static discriminators for F11/F12/F13.

Task: OTC-20260819-track-a-world-minimap-static-g1

Isolation

EXECUTION_CLASS=github_hosted
RUNTIME_ACCESS=none
credentials/login/gameplay/input=none
Synology/KasmVNC/process-memory=none
client-byte mutation=none

PR #475 remains read-only dependency state and grants no runtime/login/mutation authority to this task.

Exact current package

Both disposable producers matched the trusted current Track A Linux-client fence:

packed sha256   1fc26d66cef90723d29293f177fcff41c8e937e7aac830f08e82c2f4c69eb354
unpacked sha256 ed5469b9fa71349de688f719434d23875f76f28a3ebd08a36d30f7f6da0af6b8
unpacked size   52109920
RAW_CLIENT_RETAINED=false

Producer v1:

head      eff3ddf9c2054c1398975d1a2939a5cd01259b63
run/job   32249741341 / 96057873107 = SUCCESS
artifact  9363988901
zip sha   68e1864b990742814d11501fbf6757fcf5da4677d3718bf093227173ba4d5745

Producer v2 repair:

head      91004362eaa5562cf268fff455c161b6f55dc7c2
run/job   32250742374 / 96060897630 = SUCCESS
artifact  9364339983
zip sha   ba5cdae01c702c618a9944de6b4630605ed3eae85b0bed3f0ba66ec69d3ba81f
Track A governance 32250742373 = SUCCESS
CI                 32250742591 = SUCCESS

The temporary producer workflow has been removed. Current PR diff contains exactly three task-owned documentation/evidence paths.

G0/v1 correction

WM-MINIMAP-AUD-001 remains enforced. G1 does not reuse the rejected nearby-relative-table heuristic.

The v1 Qt method-case mapping is accepted only where the exact method-ID lineage, bounds check, relative table, add-to-base and indirect jump were all proven. A later v1 convenience scan for first_direct_call could cross into an adjacent method case, so every such inferred call field is rejected. Producer v2 exists specifically to provide direct bounded disassembly without that attribution heuristic.

Result

F11 — PARTIAL -> PARTIAL, materially strengthened

Direct current-build evidence now establishes:

TMinimapController internal state pointer = controller +0x48
current layer                             = int32(state +0x60)
controller-enforced layer range           = 0..15 inclusive
visible width                             = int32(state +0x84)
visible height                            = int32(state +0x88)

Floor-up decrements and floor-down increments the same layer field. setCurrentLayer clamps to 0..15, recomputes the minimap view and emits the layer-change notification. Visible-area refresh consumes actual QML QQuickItem width/height from the controller's quick-item owner before recomputation.

F12 — PARTIAL -> PARTIAL, materially strengthened

TMinimapMarkerStorage is corrected to three Qt signals followed by onDelayedCallback and setMarkersFromMinimapMarkerFile. The save signal carries shared MinimapMarkerFileContent ownership. onDelayedCallback checks byte storage+0x40 before entering the save-side virtual path.

Current exact evidence retains minimapmarkers.bin, protobuf marker type names, serializer/deserializer error paths and marker action families. The bounded FileDescriptorProto scan returned MINIMAP_DESCRIPTOR_CANDIDATES=0; exact protobuf field numbers/types therefore remain UNKNOWN, not absent.

F13 — PARTIAL -> PARTIAL, materially strengthened

Direct current method-case disassembly binds the main transform entries to their current helpers. For projection mode 0:

forward: X=x+32*L, Y=y+32*L
inverse: x=X-32*L, y=Y-32*L, layer=L
static oracle: (3,5,7) -> (227,229) -> (3,5,7)

setAdditionalColumnsAndRows stores four signed 32-bit values at viewport +0xa0..+0xaf and schedules recomputation. translateBySubfieldOffset component-wise adds the supplied two-integer offset to the viewport pair at +0x88.

Complete non-zero projection/shearing/scale/rounding semantics remain UNKNOWN.

Unchanged blockers

F08 server-delivered map extent/control = BLOCKED
F10 worldmap patch causal propagation   = BLOCKED

This G1 does not consume or replace #475's physical causal frontier.

Durable files

  • docs/agents/evidence/OTC-20260819-track-a-world-minimap-static-g1/20260819-layout-schema-transform.md
  • docs/agents/reports/OTCLIENT-20260819-track-a-world-minimap-static-g1.md
  • docs/agents/tasks/active/OTC-20260819-track-a-world-minimap-static-g1.md

Validation / current source state

The source-docs head immediately before the final blocker checkpoint was:

304400b318ee654245b6a927327ea6768c4808ed
Track A governance 32251606403 = SUCCESS
CI                 32251606609 = SUCCESS
changed files       exactly 3 declared paths

Current blocker-checkpoint head:

dc2eb26d4b90ed0464da311d638fa35074a1ebd2
Track A governance 32251857622 = SUCCESS
CI                 32251857874 = queued on the second and final ordinary observation for this invocation

Current main observed during closeout: f75cdbf8f408812d9508d1e076bdc9a35f82f5ac. Compare against the prior source head showed ahead_by=9, behind_by=4, merge base 724f020d..., with only the three G1 task-owned paths in the diff. PR remains mergeable and Draft. An independent auditor must recheck live main/head freshness before promotion/merge.

Remaining gate

There is no independent review submission on PR #593 in this implementing session. Repository completion policy requires a fresh validator role/session; the implementer cannot self-approve the research evidence.

BLOCKER=REQUIRED_FRESH_INDEPENDENT_RESEARCH_DOCUMENTATION_AUDIT_UNAVAILABLE_IN_CURRENT_SESSION

After a fresh independent audit reports zero material findings: recheck the exact head/current main, resolve any audit remediation, promote/merge under repository policy, archive the task and release lifecycle state.

E2E = NOT_APPLICABLE — GitHub-hosted static reverse-engineering package with runtime_access:none.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant