title_ids took every title ID from the Unblocks field, so a field that
starts with "none" and then names a title for context ("none by
itself; foundation for PPSA27836 in #6570") got the unblocks title
label. A field that starts with "none" now names no title.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
daily_commits grouped commits by %cs, the committer date in the
committer's own offset. With merges from +13:00 and +02:00 interleaved
on main, the newest commit labelled with the later date can be older
than the newest commit labelled with the earlier one, so the chart
ended on an older tree and showed a drop that did not happen.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
debt_split resolve anchored an added entry to the previous entry of the whole index. When that entry was in another section or another library's file, the new entry was appended to the end of its section instead of being placed before the entry it precedes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Each interval was compared with the first one, so 'changed at interval' listed every interval that differed from the first instead of where a change happened: commits a, a, b, b, a gave 3, 4 instead of 3, 5.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Only the first 'Depends on:' was read. When it was empty, such as the template checklist line with its placeholder comment, a later 'Depends on: #N' was ignored and the dependent pull requests were reported as overlapping.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The NID patcher and check_conventions resolve
fstat_nid_disambig1_nid_postfix to fstat. import_audit hashed it as
fstat_nid_disambig1, so a throwing stub with the suffix was keyed under
the wrong NID, and nid_names reported fstat and pwrite as rename-ready
instead of already-implemented.
unwrap_self copied every segment that does not sit inside a PT_LOAD with
alignment 1. On real dumps that puts the comment and version segments
(p_align 0x10) right after the last load segment, at offsets that break
p_offset % p_align == p_vaddr % p_align. Those regions now use the
segment's own p_vaddr and p_align, the same as the load segments, which
is what the module docstring already promises. Load segment placement
and bytes do not change.
Library functions and shader instructions were drawn on one y-axis with
ambiguous labels and overlapping fills. Each now gets its own panel and
scale, with implemented (solid) against declared (dashed); shaders gain
their declared total from the ISA list. Date labels are horizontal and
every day has a hover tooltip.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
unwrap_self reads the vaddr-less segments that follow the recorded
comment segment back to back from right after its data, and refuses the
whole container when one of them runs past the end of the file. Some
dumps end right after the last recorded segment and do not store the
version segment at all. The sce_module/libc.prx of PPSA15552 is one:
its last record, the 0x58-byte comment at 0x13b590, ends at 0x13b5e8,
which is the file size, so the 0x1a-byte PT_SCE_VERSION has no bytes
and the tool failed with "segment 12 does not fit the file" although
every load, dynamic and comment segment is complete.
A trailing segment that would run past the end of the file is now
emitted without file bytes, the same way as the PT_NOTE the container
leaves out. The relinker does not read PT_SCE_VERSION
(GuestImageReader skips it). Containers that store the version segment
unwrap byte for byte as before.