The Decoder re-ran both flagged findings rather than arguing them. The pulse ratio -- the leg under rate=0.5 that is independent of the other two -- came back 0.1000 over 16 clean cycles and 0.0993 on a second capture, unchanged by the full-quad reader. Recorded in the authored why, because a leg that has survived a challenge to its own instrument is worth more than one merely repeated. Unit 10's conclusion survives (the parent multiplies in, so F6's gate is unaffected) but its quoted numbers were a printed subset standing in for the population -- the second time that exact error has appeared in evidence this port consumed. Recorded as a pattern rather than a slip: a summary drawn from a subset does not look like an error, it looks like a result, and neither instance was reachable by reasoning because the argument was valid and the inputs were wrong. No code change: both conclusions stand.
235 lines
14 KiB
JSON
235 lines
14 KiB
JSON
{
|
|
"format": "sylpheed.rendering/1",
|
|
"_": [
|
|
"WHICH decoded rules the runtime applies where. AUTHORED because it is a",
|
|
"choice about the REACH of somebody else's decode, not about the disc.",
|
|
"Delete an entry the day the decode covers the case outright.",
|
|
"",
|
|
"The exporter flags `leaf_carries_geometry` on 15 elements -- those whose",
|
|
"nested `.rat` leaf declares a scale or rotation the parent does not. That",
|
|
"flag is a CENSUS FACT and it is emitted for all 15. What is DECODED is",
|
|
"narrower: the Decoder fitted the game's own composed alpha (per-draw vertex",
|
|
"colours C3FFFFFF / B6FFFFFF = 195 and 182) against the ptloop leaves and got",
|
|
"one consistent time, then PREDICTED the quad centres to ~11 px. That covers",
|
|
"`ptloop01` and `ptloop02` and nothing else."
|
|
],
|
|
"draw_leaf_for": [
|
|
"ptloop01",
|
|
"ptloop02"
|
|
],
|
|
"draw_leaf_why": [
|
|
"The two the decode covers. `docs/re/structures/ui-leaf-vs-parent-alpha.md`.",
|
|
"",
|
|
"NOT DRAWN, though the exporter flags them and ships their data:",
|
|
"",
|
|
" `title_jp/ptlogo_eff2` -- OUT OF SCOPE, which is a better reason than",
|
|
" the caution this entry first gave. MISSION section 7 scopes out",
|
|
" 'localisation beyond English', and this element exists only on the",
|
|
" Japanese title. So it is not a thing the menu port has to answer, and the",
|
|
" parked Japanese-locale capture does not need reviving on its account --",
|
|
" that is the human's call and not something either agent widens quietly.",
|
|
"",
|
|
" It is ALSO undecidable here even if it were in scope. Its 125% is a POP,",
|
|
" not a steady scale: scale-0 -> 125% -> scale-0 between t=50 and t=107,",
|
|
" about 0.95 s. The leaf draws at 100%, as two superimposed copies at alpha",
|
|
" 160 and 80, each rotating 360 degrees over 960 units -- 16 s a turn. If",
|
|
" parent scale gates the leaf it is a 0.95 s flash; if the leaf runs free it",
|
|
" spins for 16 s. Nothing on the disc chooses and title_jp has no oracle",
|
|
" capture.",
|
|
" `build_12,15/pgloading_loop5` -- STILL NOT DRAWN, but the reason given here",
|
|
" was WRONG and is replaced. It read \"leaf scale (0,0). A zero scale is one of",
|
|
" the three historical failures this corpus names\" -- which describes t=0 and",
|
|
" t=30 and nothing after them.",
|
|
"",
|
|
" What the leaf actually holds, read out of the export: ONE element,",
|
|
" `pgloading_ring`, with a sprite, whose scale ramps 0 -> 250 -> 800 -> 1000",
|
|
" while its alpha rises to full at t=55 and falls to nothing by t=130. An",
|
|
" expanding, fading ring -- a loading pulse, not a degenerate record.",
|
|
"",
|
|
" \ud83d\udd34 And it is VISIBLE at the instant this port poses. `build_12`'s settle",
|
|
" window is [40, 48], so the pose lands near t=44, where the ring interpolates",
|
|
" to scale 140 at alpha 143. So withholding it is not declining to draw",
|
|
" nothing; it is declining to draw something, and the old reason hid that.",
|
|
"",
|
|
" It stays withheld on the reason below, which is the one that always applied:",
|
|
" there is no way to adjudicate it here. The loading screens have no oracle",
|
|
" capture -- the RE agent records them as not reachable from the title path --",
|
|
" and `verify-screen` compares against a renderer that draws no leaves at all.",
|
|
" Drawing it would put unadjudicable content on a screen, which is the same",
|
|
" test `ptlogo_eff2` fails.",
|
|
"",
|
|
"AND THERE IS NO WAY TO ADJUDICATE EITHER HERE. `title_jp` has no oracle",
|
|
"capture, and `verify-screen` compares against `sylpheed-cli`, which does not",
|
|
"draw leaves at all -- so ANY leaf drawing increases that divergence whether",
|
|
"it is right or wrong. Its max went 155 -> 232 when they were drawn, and that",
|
|
"number is not evidence in either direction.",
|
|
"",
|
|
"What deletes this list: a decode covering those cases, or an oracle capture",
|
|
"of title_jp."
|
|
],
|
|
"draw_leaf_kind": "decoded",
|
|
"loop_leaf_on_screens": [
|
|
"title"
|
|
],
|
|
"loop_leaf_why": [
|
|
"WHICH screens replay a leaf's group instead of letting it run once and park.",
|
|
"MEASURED on the title, UNRESOLVED on the menus, so it is scoped to the title.",
|
|
"",
|
|
"The disc gives one pass: ptloop01's leaf runs t=0..600 and ptloop02's t=0..720,",
|
|
"each ending parked off-screen at x=1521 / -839. The port ran them once.",
|
|
"",
|
|
"THE ORACLE SAYS THEY LOOP ON THE TITLE. Across two title dwells the sweep quad",
|
|
"oscillates over its whole x range and resets hard to the same start value --",
|
|
"one reset inside the first dwell, two inside the second. A run-once-and-park",
|
|
"shows one traverse and then a constant x.",
|
|
"",
|
|
"\ud83d\udd34 THE LOOP-LENGTH FIELD CANNOT SETTLE THIS, and I had hoped it would.",
|
|
"`ptloop01` declares 600 with keyframes to exactly 600; `ptloop02` declares 720",
|
|
"to 720. SLACK ZERO -- and 'loops at 600' and 'runs once for 600 and stops'",
|
|
"write the identical header. 92.3% of records on the disc are in that state, so",
|
|
"the field discriminates loop length only where there IS slack, as the plate's",
|
|
"105-in-120 had.",
|
|
"",
|
|
"\u26a0\ufe0f THE MENUS ARE NOT COVERED, on purpose. Both declare the same 600/720, so",
|
|
"nothing on the disc distinguishes them -- but the oracle measurement is of the",
|
|
"title, and my own weak evidence points the other way for the menu: sweeping the",
|
|
"phase against live-main-menu.png, the port matches best with the sweeps",
|
|
"OFF-SCREEN (0.061%) and three times worse mid-screen (0.183%). If they looped",
|
|
"with a 600-unit period the sweep is on screen for roughly 73% of the cycle, so",
|
|
"a capture showing none is not nothing -- but it is one capture, and 'best",
|
|
"match' is a weak instrument for an absence. Two weak signals in opposite",
|
|
"directions is a reason to scope, not to pick.",
|
|
"",
|
|
"What settles the menu: a direct capture of it, which the Decoder has offered.",
|
|
"",
|
|
"\ud83d\udd34 RE-MEASURED 2026-08-31, BECAUSE THE EVIDENCE ABOVE WAS TAKEN WITH THE WRONG",
|
|
"BLEND. The phase sweep that produced '0.061 % off-screen, 0.183 % mid-screen'",
|
|
"drew the sweeps ALPHA-OVER. They are additive -- measured off the running game",
|
|
"the same day (`additive_elements`) -- so an on-screen sweep composited the wrong",
|
|
"way was being scored against the capture, and 'mid-screen is worse' could have",
|
|
"been an artefact of my own compositing rather than of the sweeps being absent.",
|
|
"",
|
|
"Re-run with additive sweeps and looping switched on for the menu, against",
|
|
"`live-main-menu.png`:",
|
|
"",
|
|
" phase 0 0.0208 % sweeps paint 0 px -- off screen",
|
|
" phase 150 0.0851 % sweeps paint 58 027 px, bbox 884x720",
|
|
" phase 300 0.0205 % sweeps paint 0 px -- off screen",
|
|
" phase 75 / 225 / 375 / 450 / 525: 0.086..0.122 %",
|
|
" run-once-and-park, which is what the port ships: 0.0208 %",
|
|
"",
|
|
"\u2705 THE CONCLUSION HELD AND GOT STRONGER. The ratio was 3x with the wrong blend",
|
|
"and is 4-6x with the right one, and the absolute numbers improved everywhere.",
|
|
"The capture still matches best with the sweeps NOT VISIBLE. So this entry stays",
|
|
"scoped to the title, and the correction is recorded rather than the scoping",
|
|
"changed.",
|
|
"",
|
|
"\u26a0\ufe0f It is still one capture and 'best match' is still a weak instrument for an",
|
|
"absence -- that caveat is not repaired by fixing the blend, only cleared of one",
|
|
"confound.",
|
|
"",
|
|
"\ud83d\udccc AND THE NEW DRAW LOG DOES NOT SETTLE IT EITHER, though it looks like it",
|
|
"should. `docs/re/captures/ui-draws/blend-main-menu-2026-08-31.log` shows both",
|
|
"sweep strips SUBMITTED on the main menu, in every frame group. That is not",
|
|
"evidence they animate there: a quad parked off-screen at x=1521 is still a draw",
|
|
"call. A DRAW IS NOT A VISIBLE ELEMENT, and reading that log as 'the sweeps run",
|
|
"on the menu' would have contradicted the pixels for no reason."
|
|
],
|
|
"loop_leaf_kind": "measured",
|
|
"additive_elements_deleted_why": [
|
|
"\u2705 DELETED 2026-09-01, and the deletion is the point.",
|
|
"",
|
|
"This held `additive_elements`, a per-screen list of element ids transcribed",
|
|
"from the Decoder's per-draw RB_BLENDCONTROL0 log. PORT-MISSION section 3: 'When",
|
|
"the RE agent later decodes something you had authored, delete the authored",
|
|
"entry and let the exporter emit it. That deletion is the measure of progress.'",
|
|
"",
|
|
"The blend is now DECODED -- `T8aD +0x04` bit 0x02, docs/re/structures/",
|
|
"ui-blend-mode-decoded.md -- and reachable since formats-pin-2026-09-01 exposed",
|
|
"`ui_layout::sprite_blend_additive` and `blend_additive_by_name`. The exporter",
|
|
"emits `blend_additive` per element and per nested focus/leaf element, and",
|
|
"ScreenView reads it there.",
|
|
"",
|
|
"\ud83d\udd34 CHECKED BEFORE THE SWAP, and the map turned out to be a SUBSET rather than",
|
|
"the answer. Over main_menu, extras, press_start and title:",
|
|
"",
|
|
" 15 the map called additive AND the disc agrees",
|
|
" 0 the map called additive and the disc does not <- no contradictions",
|
|
" 17 the disc calls additive and the map did not",
|
|
"",
|
|
"So nothing transcribed was wrong; it was incomplete, and was being read as",
|
|
"complete. The 17 include `pteff03`/`pteff03a` -- the sweep LEAVES, which are",
|
|
"what `draw_leaf_for` actually puts on screen while the map listed their parents",
|
|
"`ptloop01`/`ptloop02` -- and TWELVE on `title`, where this map was deliberately",
|
|
"empty and the port therefore drew every title effect alpha-over.",
|
|
"",
|
|
"A name-keyed map can only answer for a screen somebody drove the game to. That",
|
|
"is what made the Japanese menus an open question (BLOCKED.md H6): the port drew",
|
|
"main_menu additive and main_menu_jp alpha-over, asserting by omission that the",
|
|
"JP build blends differently. The bit is on the disc for every screen at once, so",
|
|
"that asymmetry is now answered statically and H6 needs no capture."
|
|
],
|
|
"leaf_clock": {
|
|
"title": {
|
|
"start_units": null,
|
|
"rate": 0.5
|
|
}
|
|
},
|
|
"leaf_clock_why": [
|
|
"leaf_t = rate * screen_t. A null field means 'not measured'.",
|
|
"",
|
|
"rate 0.5 -- the leaf's clock runs at HALF the screen's.",
|
|
" Measured by the Decoder against a DECLARED calibration rather than captured",
|
|
" frame counts: using ptloop01's own declared 30-unit alpha ramp (t=70..100) as",
|
|
" an in-capture title clock, two runs whose frame counts differ 2x give",
|
|
" leaf/title = 0.4795 and 0.4667, 2.7% apart.",
|
|
" docs/re/f6-unit10-parent-alpha-gates-the-sweep.md.",
|
|
"",
|
|
" \u2705 THREE INDEPENDENT CONFIRMATIONS, and it needed them. The number was",
|
|
" adopted as 0.514, withdrawn, then reinstated at 0.5 inside one day. What",
|
|
" failed the first time was quoting a rate in captured FRAMES -- frames are",
|
|
" presents and the present rate differs per run (1168 vs 600 for one",
|
|
" animation). The ratio was sound and was discarded along with the frames.",
|
|
" It now rests on three declared quantities that agree:",
|
|
" - ptloop01's own 30-unit alpha ramp used as an in-capture title clock;",
|
|
" - the leaf's declared 600-unit loop;",
|
|
" - ptbtn00f's pulse at exactly 1/10 of that loop -- 60.0 frames over 16",
|
|
" consecutive cycles with ZERO variance, and 60 leaf units x 0.5 = the",
|
|
" declared 120 title units.",
|
|
" The third has no relationship to the first, which is what makes it worth",
|
|
"",
|
|
" \u2705 RE-VERIFIED after a reader bug, which is what makes the third leg worth",
|
|
" its weight. The Decoder's log reader was found to truncate a batched draw to",
|
|
" its first quad; the pulse ratio was re-run rather than argued about, and came",
|
|
" back 0.1000 over 16 clean cycles and 0.0993 on a second capture. Unchanged.",
|
|
" A leg that has survived a challenge to the instrument behind it is worth more",
|
|
" than one that has only been repeated.",
|
|
" more than a repeat measurement.",
|
|
"",
|
|
" \ud83d\udd34 A STALE CAVEAT REMOVED HERE. This block carried a 1.7x/3.2x title-clock",
|
|
" conflict as an open doubt against every unit-valued figure on the screen.",
|
|
" It was never a conflict: the Decoder had been applying the plate's declared",
|
|
" ramp to ptcopyright, and one mislabelled element generated the whole",
|
|
" discrepancy (docs/re/f6-plate-identity-and-clock-conflict-resolved.md).",
|
|
" Two elements, one label -- the same shape as the port gating a snap on",
|
|
" settle_instant while reading a printed number that came from settle_time().",
|
|
" \ud83d\udccc In both cases what caught it was measuring a RATIO, which needs no",
|
|
" identification, rather than a value, which does.",
|
|
"start_units null -- there is NO authored onset any more, and that is the point.",
|
|
" F6's gate is DECLARED: ptloop01/ptloop02 carry `0:0 70:0 100:255 238:255",
|
|
" 250:0`, so the sweep is invisible until t=70 and full at t=100. The port had",
|
|
" that ramp in its export the whole time and was discarding it, because",
|
|
" ScreenView drew the leaf without multiplying the parent's alpha in.",
|
|
"",
|
|
" A 107-unit offset was authored here earlier, from a measured 0.50 ratio. It",
|
|
" is retired: the ratio was measured against an element identified only by",
|
|
" screen position, and the declared ramp needs no such identification. Deleting",
|
|
" an authored value because the data already says it is the better outcome.",
|
|
"",
|
|
"\u26a0\ufe0f BUILD-SENSITIVE. Builds 5 and 6 of GP_TITLE declare these same two records",
|
|
"as a single flat a=255 keyframe -- no ramp, hence no gate. This export reads",
|
|
"the ramped build (verified: 0:0 70:0 100:255 238:255 250:0). If that ever",
|
|
"changes the gate silently disappears."
|
|
]
|
|
}
|