Skip to content
Changelog

What PPortal shipped.

Every entry in docs/CHANGELOG.md, read at d376f56 and dated by the commit that wrote it.

Atom feed
  1. nothing in the tree can configure a Qt build carrying WebEngine, so PP46's before cannot be produced at all

    reference-build-msvc.ps1 builds the WebEngine Qt client from e4e482e7; measure-startup exits 0 on it, 208.6 MB of Chromium present (design recorded in tools/measure-startup/README.md).

    PP63 · 80cf9bf
  2. the rumble intensity and haptic override sliders change nothing in a session

    A stream run reads the Controllers tab's rumble intensity and haptic override from the store and hands them to the haptics player and the actuator matrix.

    PP858 · d132e07
  3. a console set to haptics Off still drives the pad, because the intensity it raises is held and never read

    The console's haptic intensity reaches the haptics player as it arrives, and Off now silences both the rumble fold and the actuator waveform, stopping a rumbling pad once.

    PP857 · 1b654b4
  4. no workflow builds the installer or attaches it to a GitHub release, so every installer comes off one desk

    release.yml builds through compile.cmd and package.cmd on a runner, refuses a tag the exe disagrees with, and drafts the release with the installer and SHA256SUMS.txt.

    PP856 · 2dba27c
  5. the picture smears for the rest of a scene and nothing asks for a keyframe, because no loss the port counts occurred

    The live video receiver now gets the slice parser and the run's IDR flag, so a P-frame without its reference is dropped, its gap reported and a FEC failure asks for a keyframe.

    PP855 · 2cf56c5
  6. RawBody reads a block-commented function as a real one, and nothing checks that the C contains none

    CFunction now finds block-commented definitions and bodies whose comment braces do not balance, and a test sweeps lib/src and shim for both on every run.

    PP852 · 4974aed
  7. a call-shaped check names the whole argument list, so an added argument breaks checks about something else

    CalledWith asks a callee and a prefix of its arguments, with the argument boundary the hand fixes lacked; four checks converted and the reader is not C-only.

    PP850 · 14f3b68
  8. the prose census states its four per-verdict counts in a docstring, and the method deriving them has no caller

    the breakdown is qualitative now and the one number left, the fragile four, is held against Count in the census's own test (design superseded: Count had three callers, all in that test).

    PP849 · ac50227
  9. 51 files credit PP696 and PP763 reverted it whole, so no check can tell a live attribution from a dead one

    PP696's ledger entry names the revert and the three that put each half back, so one write answers all 92 mentions and a check holds that write.

    PP848 · 913753f
  10. the function-body reader keeps comments, so a note inside a body is a use and a check finds its own explanation

    Body strips before it counts braces and RawBody is the named door; 160 call sites get the safe answer and the two that are about a comment ask for one.

    PP847 · 6e672d7
  11. the console's haptics reach no motor: HapticsRumble and DualSenseEffects are modelled and neither has a caller

    the fold reaches a motor at last: three strengths averaged every thirty milliseconds, routed by the pad's own vendor and product, and one zero to stop it.

    PP846 · 8baf264
  12. PadTranslation writes buttons, triggers and sticks only, so a PS4 or PS5 pad's touchpad and sensors reach no console

    the three touchpad events reach PP129's tracker and sensor updates reach PP130's, scaled by the console's own pad, and the run reports which halves arrived.

    PP845 · ad182d0
  13. a check's control names a file a prepared deletion aims at, so it goes red about its own fixture when that lands

    each control's file is declared with its polarity and held against what an arranged deletion claims and against the build graph, so one aimed at is answerable before the commit.

    PP844 · c7ef773
  14. ShimFramePathShape says the flip has happened and the option is off, and PP763 put the four files back

    the flip state is read from the build files and the loaded shim and held against the class's own claim, so a revert that leaves the prose is red.

    PP843 · 45325c4
  15. the frame path's oracle has no recording, so the flip that must turn it off to delete takion spends it

    tests/oracles/framepath.json holds what jerasure, the frame processor and the video receiver answered, and six comparisons now run on every build instead of declining with the C.

    PP842 · 44932dd
  16. the shim's takion wrappers are not behind their define, so the flip that deletes the C cannot be one commit

    Five regions of the body carry them behind an option that is on by default: configured off the shim links, exports 25 fewer and still answers the guard.

    PP841 · 6e23508
  17. opening the microphone makes Windows duck the stream's own audio, so the game the port is playing goes quiet

    The render session's opt-out is asked and reported; Windows 11 26200 accepts it and ducks anyway, so the run says which and the docs name the setting that works.

    PP840 · b9d818f
  18. the capture pump outlives the takion, so a session ending with the microphone open throws and kills the process

    The capture stops when the run returns and a closed takion refuses there: a 20-second run sent 1601 mic packets and ended clean, where the same one crashed before.

    PP839 · 8ce5762
  19. a pad connected after the stream starts is never opened, so it works only if it was plugged in first

    SDL's device-added event now reaches an open on the pump's own thread: a run that began with no pad ended holding an Xbox Series X Controller, 1 adopted and 156 states pushed.

    PP838 · 711c41f
  20. no live run has opened the microphone, so nothing says a console accepts the packets the port now formats

    A run with --microphone sent 1601 signed mic packets and the console kept streaming: 828 frames decoded and 807 shown beside them, with the canceller in the path.

    PP837 · 718684f
  21. the ported fullscreen state machine has no consumer, so nothing in the app can go fullscreen

    F11 toggles as handleShortcut does and alt+enter as Windows does, driving PP11's state machine onto the run's window: the minimum pinned, and adjustable a second after.

    PP836 · 459943b
  22. the picture waits on SDL opening a pad, so connecting one after the stream starts freezes the window

    A person plugged one in mid-session and the picture neither froze nor stopped, so the freeze is gone and the death at 741 arrivals did not recur with it.

    PP835 · 9a079dd
  23. the relay records only what the console sent, so no capture can answer what the port actually put on the wire

    A second writer takes both directions off the relay callback, leg per row: a relayed run wrote 4565 datagrams, 318 sent by this machine, and the replay corpus is untouched.

    PP834 · 4cf891c
  24. the audio engine is fed one frame at a time as they decode, so a late frame empties the queue and the sound gaps

    A prefill holds the first n frames and releases them together: ten read 0 and 1 dry against 0 to 17 without one, five changed nothing, and it stays off unless a run asks.

    PP833 · 0713640
  25. the stream report never says how many IDR requests went out, so a corrupted picture cannot be read back

    StreamOutbound counts the requests, the refusals and the reports beside them, and the run prints all four: a 20-second session read 0 requested against 28 frames lost to the network.

    PP832 · 52b30c7
  26. no check joins a managed send's arguments to the C call it ports, so an inverted pair passes every builder test

    A check reads the C's parameter names off takion.h and compares each argument's KIND - constant against constant, varying against varying - so the inversion that shipped twice is refused.

    PP831 · 3dbcbe1
  27. the copy off the decode surface is known to exist and untimed, so the FFmpeg decision still has no total

    The GPU clock says ~25us a copy - 25.3, 28.9, 25.1 over 64-copy batches - so Media Foundation totals ~775us and the copy is 89 times cheaper than d3d11va's readback.

    PP828 · 74b0ee1
  28. the microphone's packet is built and no takion sends one, so PP676's mic layout has only tests as callers

    ManagedMicrophone runs a WASAPI unit through the canceller, the encoder and audiosender.c's window into SendMicrophone; --microphone opens one, off by default.

    PP825 · e8a14e3
  29. the stream's arrivals never set the ack sink, so a live session answers no data message the console sends

    The root hands the arrivals the takion, and two live runs streamed through it: 81 signed acks at key_pos_local, 958 frames drawn, and no teardown where 1170 unsigned ones ended a session.

    PP824 · 9592675
  30. the shim downloads every hardware frame to system memory and uploads it back, including d3d11va's own texture

    The decoder is put on the presenter's device and the frame goes over as a texture: 931 decoded, 911 shown, the round trip gone and the picture unchanged.

    PP821 · e791f7d
  31. senkusha runs before the stream phase and calls four of takion's exports, so the transport cannot leave with it

    session.c had two arms and a console said they agree at 1454 both ways, so the callback is the only one now and senkusha.c has lost its last caller.

    PP784 · 3520634
  32. forward error correction is two vendored C libraries doing Galois field arithmetic per lost packet

    gf-complete and jerasure are out of the build: sixteen vendored C files gone, the link line, the option, the find module, and the field init in chiaki_lib_init that outlived every FEC caller.

    PP30 · 48d825f
  33. takion.c is 2007 lines of C over raw sockets and timers, and the whole stream rides on it

    Twelve files leave lib in one commit and not three - videoreceiver.c holds two of streamconnection.c's symbols - and a live PS5 session showed 943 frames afterwards.

    PP27 · 6c9da1f
  34. the stream dies within 85ms through the relay, so a capture holds the handshake and none of the traffic

    The stream phase dialled the console while the session went through the relay, so it rode past the forwarder; pointed at the target it carries 10521 datagrams over twenty seconds.

    PP830 · 6350e6a
  35. the relay never carries senkusha's handshake, so a capture through it dies before the session reaches the stream

    Senkusha's port is forwarded now, so a session through the relay completes its first handshake and measures the link instead of timing out on loopback.

    PP829 · 03265ab
  36. the port sends the BIG whole where the C splits it against the MTU, so a long launch spec leaves as one datagram

    The sink cuts the BIG against senkusha's own MTU and sends the fragments through both takion exports, the last one carrying the end-of-message flag.

    PP827 · 3ffee9f
  37. PP818's whole margin is a readback it did not measure, because no renderer has taken one of its textures

    The decoded surface is D3D11_BIND_DECODER with no shader-resource bind, so a renderer cannot sample it and PP818's readback of none is wrong.

    PP826 · f741ca8
  38. every send takes its key position from the receive ledger, so the MAC is stamped where the console never advanced

    ManagedTakion keeps key_pos_local now, advanced at each of the four sizings the C passes, so a send's position counts what left rather than what arrived.

    PP823 · 898184a
  39. no Media Foundation decode has ever been timed, so 87.6 MB of FFmpeg is weighed against a guess

    Paced, Media Foundation decodes a frame in about 750us and pays no readback, which is second of four and beats both paths it would replace.

    PP818 · 7130cc6
  40. the GCM tag is a hand-written GHASH, and the only thing ever asked about it was AesGcm's contract

    CNG takes the block-sized nonce AesGcm refuses and reports 12-to-16-byte tags, so the crypt's GMAC is the platform's now and the hand-written GHASH is its oracle.

    PP817 · 26526c5
  41. nothing reports whether audio dropped, so a crackling stream and a clean one read identically

    The engine's own queue depth is the only thing that knows, and it says a live run ran dry seven times in twenty-four seconds while every decode counter read clean.

    PP814 · 040208b
  42. the port's senkusha gets the bang then loses every pong, so the RTT test answers Unknown and the link is unmeasured

    senkusha's data_type is takion's CHANNEL and the port spent it as the chunk flags, so every command left on channel one - acked by a console that then echoed nothing.

    PP813 · 1fb3e79
  43. the datagram capture taps the C's takion and the port opens its own, so a run without a relay records nothing

    The managed dispatch fills the capture now, so a run without a relay records the port's whole stream where it recorded nothing.

    PP812 · c410f68
  44. the ported send path has no caller, so a live takion stamps its MAC and sends with no lock across the two

    ManagedTakion's four sends go through the ported paths now, so a live takion signs under gkcrypt_local (design superseded: the C unlocks between the MAC and send_raw, so the send is outside).

    PP811 · e94791d
  45. no path installs a senkusha phase, so every session still measures the link with the C's run

    The live run reaches MtuOutMeasured and the session carries the port's own numbers - rtt 5721us and 1454 both ways - which the C's fallback triple is not.

    PP809 · 7bdb0d5
  46. the port never sends the data ack the C sends after a drained message, so nothing tells the console it arrived

    Senkusha's router acks what its queue releases and nothing else, through the path PP811 wired; the stream's own join still waits on a live run.

    PP807 · 3ca5636
  47. the ring, the drain and the pump are built and never started, so the code the click came from is still in the tree

    AudioRing, AudioRingSink, AudioPlayback and WasapiRender are gone with their tests, and a live run still plays every frame it decodes - 3330 of them, none lost.

    PP820 · c9a86a4
  48. the port hand-rolls a ring, a drain and a pump over WASAPI, and two attempts to make that path lossless both failed

    A listener reports the click gone: 4846 decoded, 4846 submitted, every sample played or queued over sixty seconds against a console in a game.

    PP816 · e72fccf
  49. the audio ring is written by the receive thread and drained by the pump with no lock, so its cursors and fill tear

    Write, Read and Reset run under one gate, so a drain cannot take a span the writer's eviction is moving; the assertion reads bytes, because no counter could see this.

    PP815 · f7d45f3
  50. nothing raises a takion disconnect, so a wait on a transport that died runs its whole timeout

    ManagedTakion raises it at the C's own beach - every exit the receive thread has, and the close - once per takion, and both composition roots hand it to the arrivals that were waiting.

    PP808 · 9e98218
  51. the stream driver reads any .InstallOn( in a path file, so a second seam's install answers the stream's question

    A session path that composes its own must now name the stream's seam as well as call the install, so a senkusha phase installed beside it answers nothing.

    PP806 · 31cdf61
  52. senkusha's four arrival arms are called by tests alone, so a run driving a real takion ends every wait in a timeout

    A datagram now walks to the arm the C's callback would reach, an ack calls the arm once per released number, and the wiring ties the knot a run over a real takion needs.

    PP805 · d8e016f
  53. senkusha's ack expectation is set around the send where the C sets it inside one, so a fast ack meets the wrong number

    The state, the send and the wait now run under one lock, so the number is written BY the send and an ack arriving mid-send blocks instead of meeting a number nobody awaits.

    PP804 · 7904189
  54. the two arranged flips are checked by reading text, and nothing ever builds the shape either one leaves

    flip.cmd builds chiaki-unit as either arranged deletion leaves it, in a build directory of its own - and both shapes link, which PP786's repair had only ever been read about.

    PP803 · 1be4e2e
  55. PP785's sixty takion guards are named by no census row, and the closed-list check cannot see a guard it never heard of

    The takion wrappers are three declared guards with nineteen rows, so the sweep can see them at all: the floor the gate prints goes from 35 declined assertions to 88.

    PP802 · 6e48d4c
  56. two of the three paths that open a session install no phase, so the captures and the front door stop where the port runs

    The captures and the front door install a phase before the session starts, and a closed check names any path that opens one, means to stream and does not.

    PP801 · ffeb083
  57. SeamReach counts an implementation that no path in app ever constructs, so a sink only tests build reads as reached

    A third axis asks whether an implementation is ever built, in both of C#'s spellings, and it found a ported send path with no caller on the commit that wrote the check.

    PP800 · 93c1f6e
  58. one access unit per session is refused by the decoder and the log says which error, never which frame

    A refused unit is recorded with its ordinal, its size and whether anything had decoded yet - which is the fact that tells a first unit before the codec's extradata from a corruption mid-session.

    PP798 · 4d5f835
  59. the console's audio reaches a receiver whose output goes nowhere, and nothing drains the ring into a speaker

    The root's audio arm is an opus decoder writing into the ring, and a drain above the renderer moves it out on the engine's cadence - filling to two buffers and clearing past three.

    PP797 · 6c432a4
  60. a stale suite binary is a warning and the floor then fails naming ffmpeg, so it reads as a shrunken suite

    A binary ninja says is out of date ends the run, so no count is read off the previous build; and where a suite did shrink, the stale case is ruled out before the build option is named.

    PP796 · 617d943
  61. session.c runs senkusha itself and there is no callback to hand it to, so a managed run is unreachable

    session.c asks for an installed run before starting its own, and the three measurements cross with the outcome that decides whether they are used; the C's run stays as the other arm.

    PP792 · f9dfdfc
  62. the port streams and never says it connected, so a window waiting on the event holds a spinner over a live picture

    The composition root attaches PP747's router now, and the run's CONNECTED travels on to the session's own handler - so a caller hears the port's stream as it hears the C's.

    PP799 · d1c72ea
  63. the takion takes its AV arm at construction and the keys arrive with the bang, so video reaches nothing

    The arm is installed where the C installs its crypt - inside the keying - and a live console went from zero decoded frames to 2675.

    PP795 · 5755f95
  64. the record says one export dies with the flip and a trial says four, because the measurement counted prose

    Four, measured through a sweep that reads code - and the idr request is the one PP758 was right about, referenced through the shim.

    PP794 · a0ea56e
  65. the export sweep counts a symbol named in a comment as a reference, so prose keeps dead C looking alive

    The sweep reads code and not text, and seven exports that prose alone was holding alive are now on the record as dead C nobody has decided about.

    PP793 · 6b91df3
  66. nothing implements senkusha's run host or turns its arrivals into the flags its waits end on

    ManagedSenkushaRunHost drives the run over the port's own takion, with the six protobufs written, a raw send for the pings, and senkusha's three waits moved out of the unported group.

    PP791 · 24240b4
  67. chiaki_senkusha_run's sequence has no managed counterpart, so the ordering that is its behaviour cannot be held

    The nine calls in the C's order over a host that records them, and three exits that differ in whether the console is told at all.

    PP790 · bc2fbd7
  68. senkusha's three measurements have no managed model, and they are the numbers the launch spec spends

    The average divides by the pings that answered, the two searches start apart and answer with the floor, and the timeout is five round trips clamped.

    PP789 · 023e672
  69. senkusha's nine states and the flags its waits end on have no managed model, so nothing can drive its run

    Nine states, eight reachable, and the predicate reads two of three flags - each held against the file, so a repair upstream turns a check red.

    PP788 · dd2ca90
  70. the decoder is reachable only through the C's video callback, so a managed run has no way to hand it a frame

    The C's own sample callback is reachable with the same decoder, and its managed shape is the delegate a composition root already takes.

    PP787 · 873e0b5
  71. three of the C suite's files exercise takion directly and the case floor counts them, so the deletion drops it silently

    CHIAKI_UNIT_HAVE_TAKION guards the three suites, each switch answers for its own files, and the allocator wrap follows allocbudget.c - the link failure both flips had.

    PP786 · ac7915f
  72. the shim's eighteen takion symbols are the oracle, so the deletion takes away what proves the port right

    tests/oracles/takion.json holds what the C answered for the queue scripts, the send buffer, the MAC gate and both AV parsers, and the managed four are compared against it on every build.

    PP785 · 5503821
  73. session.c runs the stream itself and nothing in app installs the port's phase, so PP295's four files cannot leave

    session.c stops asking and StreamRun installs the phase; a live PS5 gave 890 shown against the C path's 972, with the pad's sink armed and pushing.

    PP783 · f86d7c5
  74. the deletion's blocker list names six lib files and the link answers four, two of them never reaching it

    Four, and the two that came off are kept beside it with the reason each is not a blocker - one permanent, one true of this tree.

    PP782 · 7314f6d
  75. the deferral line still says the suite never calls the two broken queue functions, which its section retracts

    The line carries the corrected sentence, and a seventh fact refuses the retracted one on PP107's own row rather than in its section.

    PP781 · 55ba715
  76. nothing counts what deleting takion's three files leaves undefined, and the biggest consumer is this port's oracle

    Twenty-four symbols across eight units, in three groups - and eighteen are the shim's, which is the oracle the deletion would take with it.

    PP780 · 6cd15b7
  77. every arrival is appended to a list nothing releases, so a session holds one reading per datagram

    A ring of the last thirty-two, and twenty thousand arrivals through the AV path allocate zero bytes, measured.

    PP779 · 455a38f
  78. every stream message goes out with the data type in the chunk flags and the channel left at zero

    The data type rides in the channel field and the flags are the constant one, so a console reads each message where it looks for it.

    PP778 · bb9d153
  79. the BIG's launch spec is hidden with a zeroed rpcrypt, so the console acks it and never bangs

    The crypt, the mtu, the profile and the target come off the session, and a console answers the spec with a bang it accepts.

    PP777 · 8cdda94
  80. a seam filled by a refusal reads as reached, so the sweep cannot tell a stub from an implementation

    A seam every one of whose fillers has a constant-bodied member is reported as filled by a stand-in, which the type graph cannot say.

    PP776 · 5520cb8
  81. the state wait restarts its whole timeout on every pulse, so anything pulsing faster than it never times out

    The wait honours an absolute deadline across every wake, so a 300ms timeout under a 5ms pulse now returns in 320ms where it used to return never.

    PP775 · 47a6e2e
  82. the run enters four states without clearing the flags, which its own model requires of the C

    The run clears both flags at all four state entries, in the C's position - after the state and before the action - and PP746's driver stops setting finished once.

    PP774 · cb9ec4e
  83. nothing turns a takion event into the host's signal, so every state the run waits on times out

    A live PS5 keyed the session and announced the stream: the bang and the streaminfo each finished their state, and audio arrived on the run's own thread.

    PP773 · 8cdda94
  84. the rung report stops at congestion control, and the six steps after it are where a live run now fails

    The walk climbs its own eleven-step ladder beside the teardown's six, and a live run now names the step it stops at: CongestionStarted, the wait after it.

    PP772 · 8d2b1b5
  85. the phase lets a caller pick the port and the first one picked 9295, so a console answered nothing at all

    The phase takes an address and aims at 9296 itself, and the same handshake then completed with a real PS5 first try each way - the run now stops at CongestionControl.

    PP771 · 7b4cf6a
  86. the run collapses every rung's failure into Unknown, so a live one cannot be told from any other

    The run carries out the rung its cascade already computes, so five failures that answered one code now say which of the five, and the old one-argument shape is unchanged.

    PP770 · 4cafbcc
  87. the managed run opens its own socket and the console's stream rides the one senkusha left, so a handover fails at once

    The socket crosses the trampoline, the runner and the host, and the takion adopts it without owning it; a live handover now reaches the run instead of failing at the connect.

    PP769 · 86e254a
  88. the phase frees its handover while the runner still waits on it, so the gate crashes intermittently

    A cancel that sets the flag before both signals, a runner that reads it rather than building, and a Dispose that joins first and leaks rather than freeing under a waiter.

    PP768 · 3674bbb
  89. the driver check counts a call inside a class nothing constructs, so a phase nobody uses reads as a driver

    The port's half is a path that opens a session and installs on it, so a composition root nothing constructs no longer reads as a driver.

    PP767 · 6022ffc
  90. a managed BIG needs four things out of a live session - the id, the handshake key, senkusha's numbers and an ecdh pair

    Four shim readers over fields the C holds, each answering null before a session has one, and a real BIG of 1346 bytes built from what they return.

    PP766 · 13125c6
  91. the run host takes eleven parts and nothing says which a live session supplies, so the wiring is unsized

    Eleven rows held against the constructor by reflection: none is missing, two reach into the session, and the BIG is a factory every test has been handing a heartbeat.

    PP765 · a18ed1c
  92. the gate passes on a tree whose stream phase has no driver, which is how it shipped a client that cannot stream

    The C's run and the port's install are read together as four states, and putting session.c back the way PP696 left it turns the gate red on Nobody.

    PP764 · 01ab86c
  93. the frame path's deletion shipped and left no way to stream, so the four files and the C's run are back

    The four files, session.c's run and the floor are back and a five-second capture records 4025 datagrams again; the callback, the trampoline and the runner stay unused.

    PP763 · a546b61
  94. the stream phase is a callback now and nothing installs one, so a live session ends at senkusha

    The eleven parts compose in one class, the runner's thread goes up before the install, and the BIG is built late and refuses by naming which of its four pieces is missing.

    PP762 · 07c34a4
  95. two readers hold lib's build list and session.c's reason line, which the deletion rewrites

    Both read the shape first, and a second trial of the whole deletion leaves only the two new exports the port has yet to import.

    PP761 · ee2aba3
  96. test/main.c names the four suites unguarded, so removing their files breaks the link

    The four suites sit behind a switch the test target defines, read in both directions; the suite still runs 149 cases, which is the no-op it should be.

    PP760 · bab20f0
  97. the handoff names the call it replaces and not what replaces it, and lib cannot reach the shim's handover

    The callback's shape, the borrowed reason, the sliced wait and the stop's replacement are written and asserted, so PP696 writes against a contract.

    PP759 · f95cc78
  98. PP696 may edit no test file, and twelve assertions still demand the calls and files it deletes

    Twelve assertions in seven classes ask the shape first, and a trial deletion runs the managed suite green on both sides of the flip.

    PP758 · 5b592b8
  99. the port's resting feedback state is ten zeroes and the C's is not, so a still pad reports free fall

    FeedbackSnapshot.Idle rests under gravity as the C's does, asserted as a round trip off a fresh state rather than against a constant of this side's own.

    PP757 · f6147e3
  100. the pad's state goes to the C session, and the deletion leaves that call with no feedback sender to reach

    PadFeed takes an IControllerStateSink, satisfied by the C session and by a managed sink over the port's own sender; gyro and accel now read back in one call.

    PP756 · e377658
  101. the disconnect reason is parsed and the host holds no field for it, so the runner takes it as a parameter

    The host carries the reason where the C keeps it, set with the flag in one call as the disconnect handler sets them, and the runner reads it rather than being handed one.

    PP755 · 378a353
  102. nothing in the application builds a run host or calls the run, so the deletion would leave it with no streaming

    ManagedStreamRunner waits on the seam, builds the host from parts a caller supplies, runs and reports both values - so a session thread handing over is answered rather than timing out.

    PP754 · 3d248c8
  103. the session thread has no way to hand the stream phase over and take an outcome back, so the deletion cannot land

    Two bool-pred conds and a copied reason let the C thread block where its run was and take back the error and the disconnect reason, with no managed pointer crossing.

    PP753 · fe355bd
  104. the handoff that replaces the C's stream run is undecided, so the commit that edits the C has nothing to aim at

    One of PP28's seven steps becomes managed and six stay, held against session.c: the run is replaced, unlocked across as the C leaves it, and the C thread waits rather than returns.

    PP752 · 1f52335
  105. the audio path decodes nothing, so a frame the receiver delivers has no way to become sound

    Four shim exports and ManagedOpusDecoder turn a received frame into PCM, and PP740's concealed frame becomes the NULL packet Opus fills in rather than a dropped one.

    PP751 · 599a465
  106. the port derives a gmac key and a key stream and composes neither, so nothing encrypts or signs a packet

    ManagedGkCrypt gained Encrypt and Gmac, and the takion's feedback send spends the three positions the C uses, so a state arrives encrypted and signed on a real socket.

    PP750 · ff50ee1
  107. the congestion report has no bytes and no way out, so the thread that produces one reports into a double

    TakionCongestion writes the fifteen bytes at the C's offsets and SendCongestion puts them on the socket, so PP714's thread reports to a wire instead of a double.

    PP749 · 807ec3a
  108. the takion frames a data message and owns a wire, and nothing joins the two, so no managed message ever leaves

    ManagedTakion.SendData spends the key position, the sequence number and the socket in PP671's order, and TakionMessageSink puts the run's built messages through it onto a real wire.

    PP748 · e17233f
  109. the port holds 3681 real AV heads and its own parser can read none of them, two bytes short of the cheapest layout

    The tap keeps twenty-eight bytes, the capture was recorded again, and the differential parses 7506 real heads across three passes where every AV head used to be refused.

    PP742 · 8aa4013
  110. nothing managed drives a live session, so the flip that stops session.c asking removes the only path that streams

    A host outside the test project drives the sequence over a loopback socket to SUCCESS, every output seam it needs is filled, and the handoff the C's deletion must make is decided.

    PP707 · 4092ac7
  111. after the frame-path flip the models describe a C that has gone, in the present tense

    Eight models say what the frame path was rather than what it is, and a swept floor of 101 predicates over the four files says none was deleted with them.

    PP697 · 3013b33
  112. the frame path's deletion has no commit that edits the C, so four files stay while their ports exist

    session.c handed the run to a callback and the four library files left the build; PP763 reverted all of it, and PP27, PP783 and PP784 re-established each half.

    PP696 · 0defc5b
  113. Fec.Recovers with no decoder named runs the C, so after the flip a default becomes a loader failure

    Fec.Recovers defaults to the managed decoder, so the sixty-four recorded cases assert on the build this tree ships and the guarded differentials fall from six to five.

    PP671 · 9293cb7
  114. streamconnection.c is 1540 lines and calls the video receiver, so every deletion below waits on it

    The five ports beneath it are the only implementation now: the stream connection, the video receiver, the frame processor and the codec are all out of the build.

    PP295 · 148de68
  115. the nine events reach a seam nothing in app implements, so the pad state they carry is counted unheard and dropped

    SessionEventRouter holds what each of the nine decides - rumble, triggers, LED, index, both intensities, the motion reset and the FEC failure - so the seam stops counting them unheard.

    PP747 · 0cc89ef
  116. the run's sequence has never executed against a socket, so every ordering is asserted over a script

    The sequence runs to SUCCESS over a loopback socket on a real takion, congestion thread and feedback sender, and the failed connect unwinds without closing one that never opened.

    PP746 · 68fade9
  117. the run's host has twenty-five counterparts and no implementation outside the test project

    ManagedStreamRunHost delegates twenty-four members to the counterparts the census names and waits on the C's own predicate, so three censuses lost the row that said the host was a shape.

    PP745 · 9546239
  118. the pad-info order is read by a copy of the raiser sweep, still anchored on the local name PP722 widened

    ReportOrderIn composes on the widened sweep and strips the prefix, so the second copy is gone and a renamed local no longer reads as a handler that sends nothing.

    PP744 · b31d048
  119. eleven fixture ids sit 158 ids ahead of the ledger, so the tasks that reach them are born counted as covered

    The eleven moved above the floor two comments already stated, and FixturesBelowTheFloor holds them there, so no task arrives with its coverage debt already paid.

    PP743 · 7def4a2
  120. seven interfaces in app are implemented only by test doubles, and only two of them were ever counted

    SeamReach asks the reached question of every public interface the assembly declares, so the seven are a declared list with a reason each rather than two censuses' blind spot.

    PP741 · 490aa04
  121. nothing managed receives audio, so the run's two audio arms answer with a seam only the test project implements

    ManagedAudioReceiver ports the jitter buffer and a pair puts two behind IAudioSink, so the run host's seam-only axis is empty and both sound arms reach shipping code.

    PP740 · 31f970e
  122. the ratchet's absent id is a constant any other file can spell, and a comment is what guards it

    AnAbsentId asks the suites what they spell and returns one they do not, so no literal in any file can turn the ratchet's absent-id question red again.

    PP739 · 45a8130
  123. the run-host census answers two members with an audio seam only doubles implement, and calls its list empty

    Both censuses now answer the reached question with the same three lines, and this one names its two audio rows rather than reporting only that nothing is owed.

    PP738 · 5f5ba8c
  124. the key stream makes an AES object and an array per block on every call, and nothing has held it to PP44's budget

    The measurement named the wrong suspect: 88 bytes a block was the one-shot cipher call, not the counter array, and one ECB call over pooled counters takes it to zero.

    PP737 · 671c905
  125. the stats count one push per audio packet against a ceiling that advances per unit, and nothing states the ratio

    Measured on the 439 Opus heads a PS5 sent: one source unit per packet, so the stats' count and span advance together and the feared loss report does not exist.

    PP736 · 9629a7d
  126. a census naming an export in a string counts as its caller, so the sweep's dead list is short by an unknown amount

    Five, measured before the rule was applied: four new names and the one PP716 kept by hand, so the exclusion list goes and the dead list is sixteen.

    PP735 · 726f8f0
  127. one census row is answered by an interface member nothing in app implements, and the check cannot tell that apart

    Reflection finds the one row on its own and proves the other interface row is filled, so the census says which counterpart is a shape rather than a call.

    PP734 · a56c391
  128. nothing counts the managed readers that parse a takion message, so a fourth one can be lenient in silence

    Four files and six sites, swept rather than remembered, and a row claiming the check is read for the call that makes it - so a verdict cannot be taken on trust.

    PP733 · f11ebaa
  129. two more managed readers decide on a message nanopb would refuse, and one of them is the streaminfo

    The check goes where PP687's bound goes, so an absent audio header is a failed decode and an absent reason is not an empty one - and one test had said otherwise.

    PP732 · 580f393
  130. the step after the bang builds two gk crypts at fixed indices and hands them to takion, and none of it is ported

    Two crypts at 2 and 3 share nothing but their inputs, the window advances forward only, and the release order is a list rather than a comment.

    PP731 · 301617b
  131. nanopb refuses a bang with no required fields and this port reads it as a refusal, so one message leaves two states

    Required is read off the descriptor and checked ahead of every refusal, so what this port accepts is what nanopb accepts across four cases.

    PP730 · a5689b1
  132. the third dispatch layer routes a protobuf to three handlers and the one that keys the session has no port

    Four refusals in the C's order set a flag PP365 proved dead, and the four not-a-bang arms leave both flags alone, so only a keyed bang ends the wait.

    PP729 · 5710298
  133. a criterion can state a count from a program and go false as that program changes, with the gate green

    CriterionCounts joins three of PP295's numbers to the census each was copied from, two-sided: the stated number is the program's and the phrase spells it, so a row added anywhere goes red.

    PP728 · 838f9fd
  134. nothing turns the launch spec into the BIG's payload, and the obfuscation there is not the encryption it looks like

    The spec is hidden by a key stream rather than encrypted, its terminator rides inside, and one block of agreement with a direct encrypt is what the test asserts.

    PP727 · eeda3ad
  135. nothing managed formats the launch spec, so the JSON that tells the console the stream's shape has no port

    The C's own template is the oracle, joined out of its literals and compared byte for byte; a PS5 HDR spec takes 912 of the buffer's 1024, and 951 at its widest.

    PP726 · 718e065
  136. the sender's overflow rung copies a packet buffer onto itself, and nothing records that the port left it out

    The identity holds for all sixty-four positions, so the copy is a no-op by arithmetic rather than by inspection, and the departure is a row with a reading behind it.

    PP725 · 42a96b8
  137. nothing notices when an unported wait gains a managed counterpart, which happened once already and was caught by hand

    The define-reading sweep found SESSION_EXPECT_TIMEOUT_MS answered while filed as unported, and now holds every unported row's group against the managed tree.

    PP724 · 8077d3d
  138. nothing composes PP676's serialisers into a sender, so a controller change is recorded and never reaches a wire

    A button press rides the history alone, a quiet 200ms still sends a state, and a flush leaves four events to send again - so PP707's host owes one subsystem.

    PP723 · aa37d9d
  139. seven events outside the frame path have no managed raiser, and one enum member is raised by nothing at all

    All seventeen are held against the C that raises them: the eight outside are four subsystems, two already consumed, and the owed pair is one callback where only one can fire.

    PP722 · 9e06c9c
  140. nothing calls the managed event seam, so the five a pad info decides and the FEC failure still reach nobody

    The pad state is held across messages, so the same pad info decides five things and then one, and the FEC failure reaches the seam without crossing a wire.

    PP721 · b094e7e
  141. the suite's staleness warning globs every .c under lib, so a file no target builds warns on every run

    The launcher asks ninja whether the target has work to do rather than globbing the tree, so the warning fires on a real edit and clears when compile.cmd runs.

    PP720 · 727a7a3
  142. nothing managed raises a session event, so the frame path's nine reach nobody and the run's CONNECTED is owed

    The nine the frame path raises go through one seam whose send drops an event where nothing is listening, so PP707's host owes two subsystems rather than three.

    PP719 · dc5dcc1
  143. packetstats' sequence arm is pushed with no mutex while three neighbours take one, and two threads reach it

    The lock stays, on PP499's reasoning rather than PP402's, and the departure is one row of five with the reading of packetstats.c that keeps it honest.

    PP716 · 3079f3a
  144. one wrap past 65535 makes the client report 1.8e19 packets lost, and nothing says what the console does then

    The console is told 16425 and 49152 - three quarters - because narrowing to sixteen bits discards the clamp's ratio (design superseded: the console sees far above the ceiling).

    PP715 · a932267
  145. eleven rows of the frame path's census name a type with no member, and nothing says which are ctors

    Seven of the eleven had a member waiting, two are constructors and two are finis; the four file rows say the type itself, so no row is silent now.

    PP713 · 3cecb94
  146. PP585's wait census still calls congestioncontrol.c unported, and nothing in the gate can tell it is wrong

    The macro moved to the mirrored group, twenty against twelve, and a row calling a file unported that another row follows now fails rather than counting correctly.

    PP718 · 7a666ab
  147. nothing decides which history events a controller change becomes, so PP676's serialisers have no caller

    A controller change becomes history events in the C's own order, with eleven decisions read out of feedbacksender.c and every event serialised by PP676's formatters.

    PP717 · 0522f27
  148. nothing managed reports congestion, so a managed run would tell the console nothing about what it lost

    The thread reports every 200ms out of stats held to the C over fifteen cases, so PP707's host owes five members across three subsystems rather than seven across four.

    PP714 · 3421fa9
  149. three rows of the run-host census name a type with no member that answers, and the check cannot see it

    An answered row names a member now, so the three that named a type alone became owed: seven members and four subsystems where the census had said four and two.

    PP712 · 49cd04a
  150. WasapiCapture can only be asked for the announced format, so the cleaning stage resamples both inputs itself

    A capture takes a format now, so a real microphone opened at 16000 delivering 320-byte units, and the stage has a door that skips both downward legs and cancels just as well.

    PP711 · c3db86d
  151. the port cannot change an audio rate, so the cleaner's 22050 ceiling keeps it out of the announced 48000 chain

    Every rate the canceller accepts reaches the announced one through the in-box resampler, and the DMO plumbing both are driven through is written once.

    PP710 · 96ade28
  152. nothing drives the in-box echo canceller, so PP52's second criterion has a reading of it and no stage

    Filter mode reports its two inputs and cleans - fifty frames in, twenty-one kilobytes back - and it refuses the announced 48000, taking 22050 and below.

    PP709 · 63adfd8
  153. nothing in the port renders audio, so a session shows a picture and plays no sound at all

    The default render endpoint opens and plays, and PP698's loopback hears the tone back off the same endpoint - two of this port's subsystems, one playing and one listening.

    PP708 · 1fd2886
  154. the microphone has a capture, a unit splitter, an encoder and a head, and nothing runs them as one path

    Captured bytes reach a packet through all four pieces, and the C's two surprises are reproduced: two frames of silence at the start, and the newest frame sent twice while the oldest never is.

    PP706 · 0a78cb8
  155. four sweeps over app/ hand-write their own exclusion, so a new census has to be added to the others by hand

    A recording file says so in a comment and the four sweeps ask, so a sixth needs no edit in a file it does not own - and the fixture in tests turned out to be one of them.

    PP705 · 9e9985b
  156. FeedbackPayloadTests guards eight comparisons on an oracle the census does not name, and it is not the only file

    The floor rose from eighteen to thirty-one and the list is closed: a file calling a guard the census knows and naming no row fails by name.

    PP704 · 08bad7d
  157. ManagedTakion's video queue is only ever set to null, so one step of its recorded teardown is unreachable

    A takion given a sink owns an arm, so one video datagram opens the queue and the teardown step reserved for it is appended where the C releases it.

    PP703 · 717ea22
  158. senkusha.c calls five takion symbols, so PP27's fourth criterion cannot be met while the file stands

    The five are read out of senkusha.c and each resolves to a managed member; a sixth would fail by name, because the reader matches takion's whole namespace.

    PP702 · 45fa731
  159. the host shows a console's picture and sends it no input, so nothing can be played on it

    One SDL pad opened, translated from Controller::HandleButtonEvent and pushed on change; a real session sent 1210 states and a person played on it.

    PP701 · e7eb6be
  160. every piece of the video path exists and none is joined to a session, so a stream decodes and shows nothing

    A window shows a PS5's home screen: decoder on the session, a renderer held between frames, the shared surface WPF takes, and the D3DImage bound and empty since PP10.

    PP700 · de6f8b5
  161. there is no managed presenter to count dropped frames, and the counter that did is in the retired client

    The presenter tallies what it showed and what it never did, folding in the receiver's total as the Qt client does, and a live session appends a row to the ledger both builds share.

    PP699 · 076978f
  162. the echo canceller wants a reference of what is playing and nothing captures the render side

    The render endpoint opens as a capture with one flag more, and a tone played into it comes back in the microphone's own units; a quiet one reads as PP695's silence.

    PP698 · 40b5f62
  163. the capture opens the default endpoint and a Bluetooth headset answers with silence, reporting success

    The capture reads its own clock and counter, so an endpoint that opened and never spoke is a named state with advice; the two-second grace sits between a 222ms success and a 30s silence.

    PP695 · 595b785
  164. the microphone's units reach nothing, and libopus's second consumer is why the dependency cannot leave

    The encoder is managed and agrees with libopus on every frame's length and TOC and on no payload; libopus stays, held by the unported decoder and by the oracle itself.

    PP694 · 4d6842c
  165. a COM method declared without PreserveSig reads an uninitialised int as its HRESULT and answers anyway

    A sweep over app, tests, spike and tools names any COM method returning int or uint without the attribute; the tree is clean, and the check demonstrates the omission on its own excluded fixture.

    PP693 · b1a8669
  166. gf-complete's only caller is the library init, and the census counting FEC callers reads the decode alone

    gf-complete's one caller is chiaki_lib_init, swept from the tree and not in fec.c, and fec.h's six includers are placed three ways: four use the decode, one the word size, one neither.

    PP692 · 009bdcf
  167. checks that match a roadmap sentence literally go red when the sentence gets more precise

    The census is thirty-two literals, judged and swept so the list cannot go stale; four demand a spelling that prose is free to improve, and PP666's two are not among them.

    PP691 · 74e7ebd
  168. a deletion's end state names a shipped task as what must happen first, so its blocker resolves to nothing

    PP295's end state names the order that closes it instead of a shipped id, and a check reads every criterion's blockers against the ledger so the next one fails rather than waits.

    PP690 · 4c7bc24
  169. the pad info message has two layouts and five reports, and nothing managed reads either one

    Both layouts read at their own offsets, a third length reports nothing and holds its state, and the five go out in the C's order rather than the order they were parsed.

    PP689 · b957bfd
  170. the idle handler's switch has no counterpart, so a running stream's four messages reach nothing managed

    The four arms route and the rest is dropped as the C drops it, and a round trip is milliseconds unless it is zero, negative or not finite, when the last reading stands.

    PP688 · f42e274
  171. a bounded field longer than its buffer fails the whole decode in the C, and PP686 reads it as a wrong size

    A field past its bound is undecodable on both readers, PP686's case names fifteen the other way now, and a disconnect's reason reads back with 255 and 256 one apart.

    PP687 · 3ed785c
  172. nothing managed reads a console's STREAMINFO, so the video receiver is only ever handed headers a test wrote

    A PS5's own streaminfo parses into padded profiles and a fourteen-byte audio header, a ninth is dropped, a wrong size refuses, and the receiver takes what the console announced.

    PP686 · fc43238
  173. PP395's chokepoint comment calls the two data-type-2 sends the keyboard pair, which they are not

    The clause now names the video receiver's pair, and a check reads the file for the word it used instead - so a correction that merely deleted the sentence would not pass.

    PP685 · 6845348
  174. four of the stream connection's seven sends have no managed bytes, two of them the video receiver's own

    The disconnect equals the one a PS5 was sent, all seven round-trip through both generators with the data type their call site passes, and a lost frame reaches a sink as bytes.

    PP684 · 6a75aac
  175. the oracle guard census reads test files only, so the selftest's guarded comparisons are invisible to it

    The host's selftest is a row now, so the floor the gate prints stops at what a bare build skips instead of at a project boundary.

    PP683 · 63ef103
  176. test.cmd reads a step's exit code with 'if errorlevel 1', so a crash's negative code passes the gate

    Seven steps in both launchers now test both signs, measured at -532462766, 3 and 0; a named list holds each, and a half-written verdict is red.

    PP682 · 0eb8976
  177. the selftest asks the header whether the device id oracle exists, so a default build's shim crashes it

    The guard asks chiaki_shim_has_holepunch like the nine, the bare side proves the DLL agrees by requiring the throw, and the selftest runs 460 checks to exit zero.

    PP681 · 717e192
  178. takion_handle_packet_av is only a branch in managed code, so no video packet reaches the flush

    The arm delivers the capture's video in the flush's own order, and the video gate before the parse is what keeps a disabled stream from keying its cipher.

    PP680 · f21c23e
  179. the v7 AV parse and header formatter are unported, and the formatter's callers are senkusha's

    Both go managed and the C's copy stands until senkusha is ported; the round trip found a fourth difference and a key position the formatter never byte-swaps.

    PP679 · 12c7318
  180. the receive loop runs only against test doubles, and nothing owns takion's state

    A takion that owns its tags, ledger, queues, send buffer and socket: it connects to PP606's responder over loopback, loops on that socket, and releases in the C's order.

    PP678 · a253382
  181. the key state has no managed transcription, so every key position the port expands is the shim's

    The expansion is managed now and agrees with the shim's at every step of 4025 real positions, 26 repeats among them, committed and peeked alike.

    PP677 · aa9d5d9
  182. the feedback and mic sends have no managed code, and each places its MAC where packet_mac's table does not look

    feedback.c's serialisers ported and compared byte for byte through six new shim wrappers; the mic head is held to audiosender.c, which exports none.

    PP676 · 77a66f4
  183. no managed code sends a takion datagram, so every takion send is a model that emits no bytes

    The three layouts are written into a caller's span and read back by PP673's parser, and one send path stamps and sends under the recursive cipher lock at zero bytes over a thousand sends.

    PP675 · 824f6a7
  184. takion's data queue is 32-bit and the managed reorder queue is 16-bit only, so no managed push can hold a data packet

    The width is injected as the C injects it, held against a new create_32 export step for step across the wrap, and a data message becomes an entry with PP491's drops freeing.

    PP674 · e7fa1e7
  185. no managed code parses a takion control message, so a control datagram stops at the dispatch branch

    The parse is PP672's reader lifted, with the commit the C makes on every message and the switch whose arms differ in who owns the buffer; 344 recorded control heads run through it.

    PP673 · dec1b94
  186. no managed code writes the INIT or reads the INIT_ACK, so the port's only takion client is the C

    The client writes both datagrams and reads both acks, byte for byte the C's over one exchange, and connects against PP606's responder over loopback in one attempt each way.

    PP672 · 9d631d0
  187. AvPacket is built from the v9 parse alone, so IsHaptics is false on every packet the port sees

    The AV header is parsed in managed code for both versions, so the haptics bit can be true; the v9 arm agrees with the shim field for field on every length across all four lead bytes.

    PP668 · 523d223
  188. a table and the test written from it were wrong together at every rung, and only a consumer noticed

    Two of the three tables already had a consumer; the third had none and was wrong in both rows, so it derives from the criteria now — and two literal readers beside it were wrong the same way.

    PP666 · 1554de8
  189. a relay test sends real UDP between three loopback sockets and failed once in a run that passed twice

    The count moves after the send, so receiving was never a receipt for it; the test waits, the counter is interlocked across its two threads, and 200 runs failed none.

    PP659 · 2848b43
  190. four subsystems carry the microphone and nothing in the host opens a capture device

    WasapiCapture opens the default communications endpoint and delivers 100 units a second of the announced format; the resample the spike implied is Windows's, not the port's.

    PP652 · 9eb999c
  191. the decoder stays native and nobody has priced FFmpeg against Media Foundation for the job

    One D3D11-aware decoder per codec here and neither is a vendor MFT, against 87.6 MB of FFmpeg and the two paths - cuda and vulkan - Media Foundation has no concept of.

    PP650 · 4c6bf59
  192. two <summary> elements on one member compile, and the wrong one wins silently

    Twelve members carried a stacked summary, ten were another member's docstring stranded by an insertion, and a scan over 933 files now refuses the next one.

    PP643 · ef2fcc8
  193. a ship's recorded in clause names a file and nothing checks the file ever received the design

    Every clause's file is opened and has to name the id, three exempt by name because the file is a recording with no room for one, and PP446's own paragraph was the miss it found.

    PP642 · 69864ff
  194. PP10's HUD is XAML, and the compositor tree PP319 chose covers a WPF window's own drawing entirely

    The bitmap shape wins because its price was a premise, not a property: the HUD measures 156x138, costing 0.8% of a 60fps frame, while the full-plane render the section priced needs 125%.

    PP641 · 20f7dd9
  195. the decoder preference is measured on synthetic frames, and drops under network jitter are what a stream is judged by

    Three played sessions on a jittering link: cuda loses 1.44% of decoded frames, vulkan 1.65%, d3d11va 2.23-2.27% across two runs.

    PP76 · f18ba89
  196. nothing runs echo cancellation, and the vendor answer is absent on a machine with the card

    A stage sits between the capture and the encoder and is read off the samples: a perfect echo goes in at 11584 and comes back at 44, while a voice the speakers never played survives.

    PP52 · 2e25f62
  197. HTTP and JSON in the core are curl and json-c, two vendored dependencies for what the runtime already does

    The curl submodule, json-c, the option and both shim oracles left the tree; json-c's answers were recorded first, so 16 comparisons now run on every build instead of none.

    PP33 · 99b10d8
  198. Six managed test files call the frame-path oracles unguarded, so the flip that deletes the four files turns them red

    chiaki_shim_has_framepath answers for the built DLL, nine guards in six files ask it before an oracle runs, and NativeSeam allows the fourteen only once the shape is bare.

    PP670 · da9a78b
  199. PP295's third criterion has no check: the seventeen consumers PP638 named are a count in the ledger, not a mapping

    FramePathConsumers reads session.c's five, the shim's thirteen and the suite's four and resolves each by reflection; a call with no row, or a row with no call, fails by name.

    PP669 · 92821d5
  200. The AV route has no managed counterpart: video, haptics and audio reach only a C receiver

    StreamAvDispatch decrypts with gkcrypt's own padding or drops, tests haptics before audio, and drives PP291's receiver; the frame it delivers is the unit less its two-byte head.

    PP667 · b9c04e5
  201. PP663 made 23 assertions opt-in and an early return is a pass, so the gate prints the same total either way

    Every run now prints which oracles are present and how many comparisons their absence costs, counted from the five files that guard rather than declared beside them.

    PP665 · f3c4215
  202. the seam's prose reads as though the shim wraps holepunch unconditionally, which PP663 made false

    Both places gain a sentence rather than losing one, and PP655's order is complete at three of three - PP33 is not, because the flag still carries PP481's oracle.

    PP664 · 52a4200
  203. libchiaki links curl and json-c in every build for one file two console-only test groups reach

    The default build links neither library and the suite is green; -DCHIAKI_ENABLE_HOLEPUNCH=ON restores curl, json-c, the file and both oracles, and it is green there too.

    PP663 · 113caf2
  204. the seam's shape was read from source text, and an #ifdef is invisible to a text reader

    Two exports the shim carries whichever way the option went answer it now, so a guard asks the DLL it loaded rather than a file on disk beside it.

    PP662 · 0126991
  205. sixteen comparisons hold managed JSON against json-c and would throw rather than fail once it is gone

    The sixteen decline on a shim with no json oracle and a counterpart says which state the tree is in, so PP655's first step now covers all three sets of callers.

    PP661 · 0a78517
  206. PP655 sized the flip from a linker answer taken while json-c was still linked, so it counted one oracle

    The flip's surface is both oracles counted from the shim - 25 exports where the linker named 10 - so PP655's first step has a third set of callers still to convert.

    PP660 · d53592d
  207. five tests drive the C through the nine wrappers and would throw rather than fail once they are gone

    The five that call the C decline on a bare seam and a counterpart asserts the removal instead, so PP655's first step is finished and its flip edits no test file.

    PP658 · 755df24
  208. PP656 taught the seam its two shapes and the census that reads it still knows only one

    The allowance is derived from the seam's shape, so it is empty today and becomes the nine when the header goes bare - and the flip edits neither this check nor a test.

    PP657 · 3121bd6
  209. PP655's first step has no mechanism, so each model of the shim's seam would learn two shapes its own way

    One reading answers while the shim wraps and a counterpart answers once it does not, keyed on the header NativeSeam reads - so exactly one side runs on any tree.

    PP656 · 08302aa
  210. PP33's remaining blocker is an oracle, and the obvious way to gate it is the one PP437 exists to catch

    The second flip has an order now: two-state the seam, gate the header with the bodies and the host's imports, then turn the prose - three landable commits instead of one diff.

    PP655 · 6a6b590
  211. the one holepunch wrapper the host actually runs makes a device id from a prefix and 16 random bytes

    The login generates its own device id and the C is kept beside it as the oracle, so every consumer of holepunch.c is now a testing seam rather than a feature.

    PP654 · 7c28c6e
  212. PP33's fourth criterion names a linker question and nobody had asked it since two callers left

    Everything compiles, one target fails, and its ten undefined references are all holepunch's - no curl, no json-c - so the callers are down to the shim, which has ten wrappers and not nine.

    PP653 · 2e9313c
  213. PP32's Opus half was a preference with no measurement, and both decoders were reachable all along

    Managed costs 1.58x the native p50 at 24.9us a frame - 0.25% of one - so cost decides nothing; its p99 is 5.6x its own median in every run, and the audio differs by 15 of 32767.

    PP651 · 9d9ac7c
  214. the switch-ack wait has a predicate reading three fields and an arm after it reading one

    PP28's second join is modelled: the five wakes, the one arm three of them share, and the stop check too late to record a stop - reproduced rather than repaired.

    PP649 · 724b76f
  215. PP47 read VSR as not engaging with the driver switch off, and PP49's HDR extension engaged on the same card

    Still 0 of 8,294,400 pixels, on the card where PP49's extension moved 2.07 million - so the toggles are per feature and a call that succeeds is not a feature that ran.

    PP648 · fe38492
  216. PP53 is a vendor-neutral DXGI mechanism sitting in the block titled NVIDIA path

    The label is a schedule and the floor is where the claim belongs, so a fourth row says the present needs no vendor and a test reads the shim for one (design recorded in docs/HARDWARE-CONTRACT.md).

    PP647 · eab3efd
  217. the tearing probe presents to a composition swapchain with no visual, the one place a no-op would hide

    It survives the tree: a ten-bit composition swapchain that is a visual's content, committed, takes the tearing present and refuses it where the flag was not asked for.

    PP646 · 1834975
  218. both NVIDIA spikes report a mean, and four of PP49's six runs carried 200-300us outliers on it

    The eye is a check: both spikes print p99/p50 and the gate holds the two committed runs to 1.5, with decode-path named as excluded because its tail is PP65's finding.

    PP645 · 44cbbe4
  219. spike/video-upscale calls the extension read-back a hint, and PP49 measured that it is not one

    Both spikes say what PP49 measured and the call stays: the two committed runs echo identical zeros while disagreeing on engagement, and a test holds the pair.

    PP644 · c0002a4
  220. audio decode is Opus in lib and the microphone's noise and echo stages are speexdsp in the Qt client

    The audio path says which three it is: speex left with the client, Opus is measured and moves with the encoder it shares a library with, and the capture is PP652.

    PP32 · e15fd32
  221. the video decoder is where 100% managed stops being achievable, and no task above says so

    The boundary is a non-goal now, not a paragraph: no managed video decoder, 100% Windows rather than 100% managed, with a guard so the promise cannot come back.

    PP31 · 6eb9dc5
  222. session.c 1196, ctrl.c 1767 and streamconnection.c 1531, three state machines with no oracle

    The three joins are modelled: senkusha's fallback, the switch wait that reports three endings as one, and the handover that releases the lock for exactly the run.

    PP28 · 79498f2
  223. fullscreen, HDR handoff and refresh-rate switching are handled by the Qt window

    HDR has a presentation path: a container visual, ten bits below and an eight-bit premultiplied overlay above, read on a screen and not only committed (design recorded in app/Views/DcompDemo.cs).

    PP11 · e2d90f4
  224. PP295's first criterion has no oracle: nothing states the sequence a port has to reproduce

    Six orderings held as positions in streamconnection.c, each with what a port loses by not keeping it, and readers that see each one broken.

    PP640 · fe59bb0
  225. three deletion lines have an end state their own dependents come before, and each was untied by hand

    PP295 has criteria that separate its port from its deletion, PP28 is released, and a check holds that no line an end state waits on declares a dep on it.

    PP639 · db773ca
  226. PP295 names the video receiver's callers and not streamconnection's own, which is session.c

    The build named seventeen symbols over three consumers: session.c drives the stream connection, one of its six calls carries no prefix, and the C suite links four of the files.

    PP638 · 79820fb
  227. the vendored-C rule names PP33 and PP30 as what it does not reach, and PP295's deliverable is a deletion too

    The rule names PP295 beside PP33 and PP30, and the three checks that pin the exempt list say why PP27 is still not among them.

    PP637 · 4469395
  228. PP295 waits on the whole of PP27, whose last criterion is the deletion PP295 has to happen before

    PP295 no longer declares PP27, the six files the fourth criterion waits on are named, and an assertion holds that the criterion is still the end state.

    PP636 · fd1030a
  229. PP27's timing criterion asks for the loop against the C, and that comparison would measure the socket

    The criterion carries the reason now: the gate is comparable, the loop is not, and what answers it is a thousandth of the arrival gap with nothing allocated.

    PP635 · 1e54eaa
  230. PP623's third step would delete the predicates that keep session.c's nine from coming back

    The predicates stay and the prose around them is what turns, and the plan says so before PP27 follows the same three steps by reading them.

    PP634 · 3c2e5d9
  231. PP44's budget is measured over heads, and the copy the keeping branches do needs a payload to exist

    Over 3.69MB a PS5 sent, the keeping branches copied 3693956 bytes and the loop allocated nothing, and the gate's share is unchanged because it stops at eighteen.

    PP633 · 36147c9
  232. nothing has taken PP623's middle step, so session.c still asks and the Qt client's build still stands

    The nine and both fields are gone, the Qt client's build retired with them, and GuiFreshness answers Retired so no checkout is left permanently stale.

    PP632 · b3f6ed7
  233. the census's tests read session.c directly, so PP33's flip would turn every one of them red

    Ten test files read session.c through the pair now, so the flip makes them decline rather than fail, and a drift check catches any that go back to reading it themselves.

    PP631 · 0cf455f
  234. PP623's first step has no mechanism, so ten models would each hold two shapes of session.c their own way

    One reading answers while session.c asks and a counterpart answers once it stops, so exactly one side runs on any tree and neither is a check that declined to look.

    PP630 · f5ebb9e
  235. this port writes the Qt client's settings now, and a running client saves its own cache back over them

    The client owns the store and the person is told: a removal made while one is running says so, by both the built name and the released one, and locking was never available.

    PP629 · 3e97179
  236. the console list connects, holds a session and answers a PIN, and only a flag opens it

    A run with no flag opens the list, one screen is chosen rather than two queued, and two screen flags are answered by order so both spellings still mean something.

    PP628 · ab2348b
  237. a console asking for a login PIN gets no answer, so the front door sits at Connecting for ever

    A shim wrapper carries the PIN to the waiting session, the prompt goes up when the console asks and down when it is spent, and the second ask raises it again.

    PP627 · 75a348f
  238. ConsoleActions models a wake and three removals, and the row draws a Connect button and nothing else

    The wake sends the client's own credential, hiding and deleting write the store through the inverse of the reader's rules, and the silent third outcome stays silent.

    PP626 · a3e35da
  239. the front door starts a session and releases it in the same call, so a connect that succeeds ends at once

    The starter hands back a handle the list holds, a second connect releases the first, and a quit becomes the sentence qmlbackend's own dialog composes.

    PP625 · f3e5615
  240. ConsoleList keys registration and hiding on a MAC, and discovery answers with a host-id in another spelling

    The Qt client's own six-byte parse is read, so both sets are the store's bytes, the hidden one works, and a row carries the identity that tells two nicknames apart.

    PP624 · 3d14ce7
  241. PP33's deletion has no order, and PP598 has it riding in one commit that PP621 shows is an oracle rewrite

    Three steps, of which exactly one edits the C and it is the middle: the models learn both shapes first, and the shape that cannot occur goes last.

    PP623 · c3abc34
  242. PP33's line cannot honestly say one caller, because the check demands the phrase 'one files call it'

    The clause is chosen per count rather than assembled from a plural, so one takes a singular verb and zero says no file calls it at all.

    PP622 · 6b68251
  243. nothing counts what reads session.c's holepunch handle, so PP33's deletion is sized at its two C callers

    The handle's readers are found from the tree and the tests asserting against them counted apart, so PP33's two callers are no longer the size of its deletion.

    PP621 · ebdd854
  244. five probe methods still write the STA scaffolding out inline, around bodies that hand a value back

    The five inline runners are Apartment.Run now - four through the Func overload that hands the value back - and the exception list naming their two files is deleted rather than emptied.

    PP620 · c939e3b
  245. the host starts a session only from the capture flags, so nothing a user can click reaches one

    --consoles opens the list against real discovery and a row's button reaches a session through a seam, so every refusal is a named sentence on the screen rather than silence.

    PP600 · a94fb96
  246. the two-layer tree commits and nobody has looked at it, which is the mistake PP163 made one layer down

    Read on a screen: a green block inside the red with no blue, and its half-alpha half olive - so the overlay composes above and the alpha is taken once.

    PP322 · 1acc7b6
  247. the mapping screen's row slots are templated buttons with no automation id

    The slot carries an id built from the row's stable key, so a check addresses one by name instead of by the absence of the field an application controls.

    PP619 · 602e47a
  248. twenty-six view test files each carry their own copy of the STA runner every one of them depends on

    Deleted twenty-six times over for one package reference: 589 lines out, 178 in, and a thread that times out now names itself and rethrows what it caught.

    PP618 · 86f2404
  249. the relay's one UDP socket is bound to loopback, so a datagram sent to the console has a source it cannot answer

    Two sockets, one facing each side: a real console answered and the capture holds whole datagrams at a 956 byte mean, where one loopback-bound socket got no init ack.

    PP617 · 309ce7b
  250. the relay, the address and the wider keep are three pieces and nothing composes them into a run

    One word composes the three: the writer takes no tap, the relay offers the console's arrivals whole, and the session points at loopback.

    PP616 · aa37564
  251. the capture truncates to eighteen on the managed side too, so a relay handing it whole datagrams gains nothing

    The width is the caller's now: eighteen unasked, so every tap capture is unchanged, and whole where PP613's relay is what fed it.

    PP615 · a8a3344
  252. the capture connects to the registered host's own address, so no session can be aimed at a relay

    The capture takes an address to go through, the console still supplies the keys and the discovery, and the host passes the flag to the call rather than dropping it.

    PP614 · b66884b
  253. no relay sits between the console and the C, so whole datagrams are reachable only by patching the vendored C

    A TCP forwarder on 9295 and a UDP forwarder on 9296, reporting every datagram whole and telling the two directions apart by endpoint, which is what loopback needs.

    PP613 · 25c2a01
  254. the tap truncates at eighteen inside the vendored C, so a full capture is the patch PP27 is not exempt from

    The constant is in messagetap.h and takion.c applies it, both asserted, and the patch route is joined to the rule that closes it - so payloads are a decision, not a task.

    PP612 · 3e72e72
  255. PP27's section says its loop is unreachable, which PP607 made false, and omits what the capture cannot time

    PP27's section says the loop is reachable and names the eighteen-byte head as what bounds the rest, so the next session reads the state it is in.

    PP611 · cac05bb
  256. PP531's MAC gate numbers were never taken over a console's own traffic, and nothing holds the headroom

    Both sides timed over 4025 heads a PS5 sent: 0.18us managed against 0.08us for the C, and what is asserted is the share of a 1159us gap, not the microseconds.

    PP610 · edd8836
  257. the replay prints its report over the committed capture and nothing asserts a line of it

    The replay's report over the committed capture is a gate now: the MAC gate agrees on every head, no branch is unknown, and nothing allocates after the warm-up.

    PP609 · a8d17c0
  258. the loopback harness has no datagrams to pump, and no capture is on this machine to give it any

    A five-second capture of a live PS5 is in tests/corpus - 4025 datagrams at a 1159us mean gap, heads only - and its count and spacing are checked against the file.

    PP608 · 9c478f7
  259. no shim entry point creates a takion, so the responder has nothing to answer and the C loop stays unreached

    A real takion connects to loopback, our responder answers, and the connected event fires - so the receive loop runs with no patch to the vendored C.

    PP607 · dea3fca
  260. the three handshake pieces are functions and nothing owns a socket, so the responder cannot run

    The three pieces are a peer with a state now: it answers a retried init again, refuses a wrong cookie or tag, and runs the whole exchange over loopback.

    PP606 · 4057081
  261. the responder can answer and cannot read, so nothing parses the INIT that carries the client's tag

    The INIT is read into the same record the ack is written from, the header tag is zero before the ack as the C sends it, and the cookie is compared.

    PP605 · 954e1d4
  262. the cookie ack is the responder's second datagram and the header writer is sealed inside the init ack

    One writer serves both answers, the INIT_ACK's header is compared byte for byte against it, and the COOKIE_ACK is that header with the addend alone.

    PP604 · b1999f0
  263. TakionHandshake models the handshake's rules and sizes and cannot produce a datagram, which a responder is made of

    The INIT_ACK is written from TakionHandshake's own sizes, checked field by field at the offsets the C reads, and joined to takion.c's header writer.

    PP603 · 66591ee
  264. a recorded peer cannot drive takion's handshake, because the client's tag is fresh on every connect

    The fresh tag and the tagless connect info are both asserted, so the harness PP601 opened needs a responder on the far end and a recording cannot be one.

    PP602 · 1a204ab
  265. takion's receive is static in the C and a non-goal forbids exposing it, which PP27's section records as merely absent

    Every receive handler is asserted file-local and the header receive-free, the patch route joined to the rule that closes it, and the socket parameter held as the way in.

    PP601 · b203b37
  266. PP533 settled that session.c takes five results, and decision A means nothing will ask it for PSN at all

    The retiring client is the only PSN driver of the C session, held as an identity between two models, so PP533's five-result conversion has no caller left.

    PP599 · 2349e6f
  267. retiring the Qt client's build touches compile.cmd, GuiFreshness and the client path, and nothing holds the three

    The decision is recorded and the argument asserted; two of the three pieces are joined by a compile-time reference, so a retirement cannot land halfway.

    PP598 · 62a1006
  268. deleting session.c's nine would make gui/ uncompilable, and GuiFreshness then fails forever for anyone who built it

    The join is asserted, so the commit that deletes the field goes red naming the choice it owes: retire the client's build, or give GuiFreshness a state for it.

    PP597 · 32a6cd0
  269. session.c's nine holepunch asks are unreachable in everything this port builds, and PP33 is sized as if they run

    Two files call chiaki_session_init and only the unbuilt Qt client passes a handle; rudp's one assignment is inside the guard, so gui/ blocks the deletion.

    PP596 · 9fe4940
  270. the roadkeep skills, hook and launcher this checkout ships are older than the engine answering here, and lint says so

    install wrote all four surfaces - the launcher, SKILL.md and the two skill files that were absent - and the wiring to the committed launcher is asserted rather than assumed.

    PP595 · 0073314
  271. --recount prints the calls that fix a stale count and cannot see the same numbers hardcoded in the suite's InlineData

    The rows keep the subject and drop the count CountedClaimTests already holds, so a .c line change is answered once, where --recount can print it.

    PP594 · 1ad825b
  272. the vendored-C rule names PP33 as what it does not reach and says nothing about PP30, which lint flags the same way

    The rule names PP30 beside PP33 and the check requires all of them, so a second line bounded by it cannot pass on the first being named.

    PP593 · 6973ff0
  273. session.c and the shim both fini a holepunch session, and they are disjoint only because the shim never wires one in

    The Qt client creates and never destroys, so the two finis are its only destructor; the shim is a second owner, and the guard is on the shim not wiring a handle in.

    PP592 · 8d10078
  274. holepunch-test.c reads /tmp/token.txt on a Windows-only port, and its only live effect is to be PP33's second consumer

    holepunch-test.c and its target are deleted: PP544's three outcomes settled on removal, and PP33's deletion is down to session.c and the shim.

    PP591 · dae85d9
  275. ctrl.c asks holepunch.c for a port session.c already read, and that one ask is all that makes it PP33's fourth consumer

    ctrl.c no longer calls into holepunch.c: session.c records the control port where it already reads it, and ctrl.c takes the record, keeping its own fallback for paths with none.

    PP590 · 6e60c51
  276. nothing parses build.yml, so a syntax error in it is invisible until a push spends a run

    every .github/workflows/*.yml is parsed as a YAML document by WorkflowParseTests, so a syntax error is red in the local gate rather than on the first push that spends a run.

    PP572 · 60767e8
  277. the C suite's pass is satisfied by a temp-file variable named ctest_out, so deleting the ctest call leaves it green

    The C suite is joined to its call the way the tools are: named outright in CI, reached through $CTEST in the gate, with an assignment and a banner counting as neither.

    PP589 · 15b971a
  278. either tool's pass is satisfied by its own echo plus the other tool's flag, so deleting a call leaves it green

    Each tool's pass is now the join its files make - one line in CI, a set and its variable in the gate - and an echo is excluded, so deleting either call turns that pass red.

    PP588 · d972249
  279. the local gate never runs roadkeep lint, so a governed-file drift is first reported by a CI run

    test.cmd runs roadkeep lint now - a note when the tool is absent, a failure when it says so - the gate-and-CI table reads all three workflows, and a step's own banner no longer counts as running it.

    PP587 · 2871578
  280. compile.cmd's deploy ending names the Qt client whenever one exists on disk, not when this run built it

    The deploy ending asks CHIAKI_ENABLE_GUI now, so a default run names the .NET host and marks a leftover Qt client as an earlier run's, and a one-line if exist guards its own claim.

    PP586 · 5f7d279
  281. 31 C timeout macros and 33 managed waits mirror each other by hand, and nothing says which are meant to agree

    The C names 32 timing macros, not 31: nineteen are followed by a managed constant, thirteen are unported, and four managed waits follow an inline number a same-file macro would mis-join.

    PP585 · e861d89
  282. the third deletion line understates its callers, and all three omitted the same one

    PP295's why names the shim, and a check holds that every deletion line says the seam is among what calls its target.

    PP584 · ae029a8
  283. the open count mixes lines somebody could start with lines that cannot be begun until hardware arrives

    A --backlog reading splits the open lines into startable and waiting, naming what each waiting line waits for, guarded against a stale host like the other two.

    PP583 · ef27401
  284. five of the six partial lines carry no definition of done, so how much is left has no answer

    All six partial lines carry criteria derived from their own sections, and a hard assertion names any partial line that arrives without one.

    PP582 · 7d0bc65
  285. six function pointers cross to the shim and nothing checks a managed signature against the C typedef

    Each typedef's signature is read from the header and each thunk's from the source and compared, with bool mapped to byte because C's is one and .NET's default is four.

    PP581 · 29b9535
  286. nothing checks that every shim entry point the host imports is one the shim exports, or the reverse

    Both sets are read from the shim's definitions and the host's entry points and asserted equal, so a rename fails the gate instead of the call.

    PP580 · 53e66f0
  287. the SDL_Event size is a hand-written 56 in a StructLayout and nothing holds it against SDL's header

    The size is a named constant the layout uses, held against SDL's padding declaration and its own compile-time assert, reading the 64-bit arm rather than the digits.

    PP579 · 7bd3466
  288. two more managed enums are cast from C values on the lines after the one PP577 held, and neither is checked

    The three mirrors are one list compared once, the error-specific copy is gone, and the count is asserted so a fourth cast cannot arrive unchecked.

    PP578 · 1ee5268
  289. the managed error enum mirrors an implicitly valued C enum by hand and nothing compares them

    The header's members are read in order and compared with the enum's by letters, and an insertion in the middle is caught by index rather than by membership.

    PP577 · 373f4af
  290. the sized-buffer names are declared in a list nothing reads and again inside the regex that does the work

    The pattern is named so its names can be compared with the list's, and a name the list carries that the pattern ignores turns the suite red.

    PP576 · 95a9513
  291. PresetIsPersisted is the one check method nothing calls, and its body tests a different question from its summary

    The rule is the row of buttons: the five that have one write both the window and the setting, Fast has neither, and the check now has a caller holding it against the QML.

    PP575 · c9407a9
  292. PP30's line says fec has one caller left and it has three, the shim among them as in PP33's

    PP30's line names three callers, held against a list that names the shim, with the two declaring files excluded so a plain sweep's five is not the number.

    PP574 · ffbc73c
  293. PP33's own line says session.c is its only caller, which three shipped tasks have each falsified

    PP33's line names four callers and the count is asserted against HolepunchConsumers, so a line claiming one turns the suite red.

    PP573 · a7edb16
  294. the no-local-patch non-goal reads as forbidding PP33's deletion, which must edit session.c and ctrl.c

    The rule names PP33 as what it does not reach, and the exemption is asserted inside its own paragraph so a check cannot pass on PP33 being named elsewhere.

    PP571 · 631d6b6
  295. measure-startup ships the same selftest and is not in the solution, so no gate builds it let alone runs it

    It carries the warning policy and joins the solution, both gates run its selftest, and PP433's table names binaries so one tool wired no longer answers for two.

    PP570 · 2f55c7c
  296. compare-baselines ships a selftest its README calls its own assertion, and neither the gate nor CI ran it

    The gate and CI both run it now, recorded as PP433's fourth pass; it is safe in CI where the host's selftest is not, so the local-only ceiling stays at one.

    PP569 · 192f80d
  297. the decision not to patch vendored C is argued only in a deferred section, so resolving that line deletes it

    The rule is the seventh non-goal, durable and refused at input, and an assertion holds that it is still there and still under the non-goals.

    PP568 · d95183f
  298. the CI workflow runs the managed suite with no filter, so it would run the interaction tests on a runner with no desk

    The step carries the trait expression the gate uses, and both sides are held to the same word so a rename cannot put the five back silently.

    PP567 · cc8c0db
  299. PP33's build criterion reads as one step and is two, so the measured half of it cannot be recorded as met

    The criterion's reason names both halves and what each waits on: compiling without either is already true, linking waits on the four callers rather than on the libraries.

    PP566 · 61f0548
  300. PP33's done-when line about building without curl and json-c rests on a grep, and nothing has tried the build

    Built with holepunch.c out and both libraries unlinked, every other source in lib compiles and the archive is produced: the dependency is one file deep.

    PP565 · 6b20512
  301. nothing has asked the build what PP33's deletion costs, and reading the tree missed ctrl.c

    Building the library without holepunch.c names four consumers and thirty-four references: ctrl.c is the fourth, and one export carries no chiaki prefix.

    PP564 · 2d74ad0
  302. PP33's deletion has a third consumer nothing names: the port's own shim wraps nine holepunch exports

    The shim's nine wrappers are named beside the harness, and the deletion's three consumers are listed rather than counted - four of the nine overlap session.c's, five do not.

    PP563 · aff3951
  303. PP107's deferral opens by saying the C suite never calls the two broken functions, and the suite calls and pins both

    A sixth fact holds the claim: the suite calls both and pins the drop defect in C, and PP107's opening sentence and title are corrected to say so.

    PP562 · dbfa4a5
  304. the three sequences and the session are each joined to nothing, so eight tasks are pieces that fit and were never fitted

    The three sequences run over one queue and one stop, the stage that failed is named, and no session comes back unless every stage ran.

    PP561 · 0e473f8
  305. the punch's eleven steps are declared and nothing reads holepunch.c to check them, so five tasks rest on a belief

    The ten steps that are calls are read out of the punch's own body in order and compared with the sequence's list; the eleventh is named as a guard this cannot check.

    PP560 · 0fe49fc
  306. the create's wait ends on either of the C's two notifications, leaving the client's own join for the start to find

    The wait runs until both halves have come, which also consumes the client's own join before the start looks - so PP546's departure cannot fire on it.

    PP559 · 60cbe66
  307. no adapter removes a handled notification, so the second punch completes on the first punch's messages having sent none

    Each wait now takes what it handled off the queue as the C's loops do, and leaves what is not its business, so the data punch cannot finish on the ctrl punch's messages.

    PP558 · c0e7b92
  308. the start's wait handles one of the C's two notification types, so a member joining reports a started session on its own

    The wait is the C's loop over both notification types until both halves arrive, each half checked once, and PP257's three custom data failures can happen for the first time.

    PP557 · c774a45
  309. the prepare cannot record the socket it punched, so a prepared session throws on the first ask session.c makes

    The prepare is an instance call that records the socket the ctrl punch produced, and a punch with no socket is not prepared rather than success until the first ask.

    PP556 · 9e245e3
  310. the offer step's guard cannot fire against the sequenced session, so a refused offer reads as an ordinary punch failure

    The session records that the punch stopped on the offer it sends, so the cause survives a failure that arrives a step later under another name.

    PP555 · 9570710
  311. a cancelled token throws out of PunchHole, whose contract is an error code and whose caller is C

    A cancellation is Canceled, the answer the one-shot would have given; anything else is Unknown and the exception is kept for a managed caller.

    PP554 · 0071e3c
  312. the session interface has only the implementation that P/Invokes holepunch.c, so nothing answers it the other way

    The seven are answered from PP548's create, PP549's start and PP550's punch, and PP479's flow runs to the end over it with no library loaded.

    PP553 · 08006cf
  313. the start and punch waits poll on after the websocket has ended, costing minutes of deadline that cannot be met

    The channel's end is exposed by the create and given to the other two as a predicate, and the queue is read before it is asked so a message that already arrived is still delivered.

    PP552 · 471f3d1
  314. PP533 restated PP478's five carried values and said five results without saying four outlive their call

    The five are read from PP478's list rather than restated, four are marked as outliving their call, and PP479's outcome is asserted to carry those four and not the scoped one.

    PP551 · 7d409fc
  315. PP547's punch interface has nothing behind it, so the last of the three sequences runs only against a test double

    The punch runs over the queue, SessionCalls and PP459's race; the eleven steps map to four wire actions, and the action is read from its key so a RESULT naming an OFFER is not one.

    PP550 · 3b490ee
  316. the start sequence has no implementation behind its interface, and its HostDown outcome is unreachable

    The start runs over SessionCalls and PP212's queue, following the C's own pointer to name each way the joining console is wrong; and one that never joins answers null, the only path to HostDown.

    PP549 · c06b7dc
  317. PP545's create interface has nothing behind it, so the sequence runs only against a test double

    SessionCalls, PushChannel and PP212's queue now sit behind the create's steps, with the connect started in one step and bounded in the next.

    PP548 · cb94e89
  318. fifteen files model parts of the punch and nothing sequences them, so its five checkpoints have no order to sit in

    The eleven steps run in the C's order, and each of the five checkpoints is reached by cancelling from inside the step before it.

    PP547 · 6bd0fcf
  319. the start is modelled and never run, so the failure the C reports as success has nowhere to be reported

    The four steps run in the C's order, the PS4 wakeup is skipped rather than ignored, and the wrong console is a failure here and success in the C.

    PP546 · d5f4f03
  320. nothing composes the ported holepunch pieces, so the create sequence is modelled and never run

    The five steps run in the C's order over PP538's one-shot at PP539's four points, with the websocket wait bounded and that departure carried as a value.

    PP545 · 2b89d8c
  321. PP33 records holepunch-test.c as absent, and it is a built executable calling eight holepunch exports

    holepunch-test.c is in the tree, built every time, and calls eight exports - so PP33's deletion has a second consumer its own design recorded as absent.

    PP544 · 5bb862f
  322. PP541 added a second reader of a shape SessionCreateSource already checks, so one repair would turn two red

    The second reader is gone, and its one new fact - that the cancel signals both conds - moved into SessionCreateSource, which already held the other four.

    PP543 · b029136
  323. session_create waits for the websocket with no timeout, and every failure path leaves the bit it waits on unset

    Four facts hold it: the wait is untimed, one line sets its bit, the thread's cleanup sets and signals nothing, and the cancel wakes a loop that cannot leave.

    PP541 · ef47058
  324. the census list must equal the sweep's output, so a model naming a C symbol in a comment turns the suite red

    The list is no longer required to equal the sweep, so only an unquoted function nothing answers is news; entries stay when a model mentions them.

    PP540 · 878cf6b
  325. nothing says where the holepunch honours a cancel, and three of the fourteen places are inside the waits

    The fourteen sit in six functions and three are the blocking waits, which is how a cancel gets out of a wait instead of serving it out.

    PP539 · bfb310b
  326. nothing models the holepunch stop, whose cancel is consumed by whichever of fourteen checkpoints reaches it first

    The stop is a one-shot the C consumes at all fourteen checkpoints, beside a websocket flag it never consumes, with the signal outside the lock.

    PP538 · 4edf70f
  327. the census annotation says nothing builds the session-id header, and PsnEndpoints builds it

    PsnEndpoints builds the session-id header too, so nine of ten are answered and the tenth is the cancel, which arrives with the loop PP533 writes.

    PP537 · e11cb41
  328. the census reads a function no managed file quotes as one nothing has looked at, and eight of its ten have counterparts

    Eight of the ten are answered under names that do not quote the C symbol, each now carried beside it and checked to exist.

    PP536 · 2e7c884
  329. the CI configure hands cmake a literal dollar-env token, so build.yml has never once been green

    The toolchain value is quoted, so pwsh expands it instead of handing cmake the text; a rule now refuses a bare env reference in any run step.

    PP535 · 686cb52
  330. nothing counts which of holepunch.c's functions app/ already answers, so PP533's scope is a sentence

    57 of holepunch.c's 67 functions are already named under app/ and ten are not; the candidate and STUN work is among the 57, not the remainder.

    PP534 · c05bcff
  331. session.c asks the C holepunch for all nine, and those asks are the only reason libchiaki links curl and json-c

    Every mention of the handle in session.c is the assignment, a guard or one of the nine, so it carries nothing between them: session.c takes five results, not four, and holepunch.c goes.

    PP533 · e1352e5
  332. compile.cmd reports a Qt client it no longer builds, as the nodeploy output and in the failure line

    Four lines named a client no ordinary run builds, and a rule now refuses any that claims it without testing the flag or the file first.

    PP532 · 66f3614
  333. nothing times the managed transport against the C, so PP27's comparison is bytes and never cost

    Over 24150 real heads the managed gate costs 0.13us against the C's 0.06us, both inside a copy of 0.04us and a mean arrival gap of 1178us.

    PP531 · 8d62edf
  334. ChiakiNg.exe exists twice, only Debug is built by the gate, and --recount and --ratchet answer from whichever was run

    --recount and --ratchet now refuse and name the source that moved, on the two flags whose whole value is being trusted; a host built before this cannot guard itself.

    PP530 · d643c2c
  335. nothing compiles gui/ - the gate and CI both pass ENABLE_GUI=OFF - while the drift checks keep it edited

    compile.cmd gui builds the client nothing else compiles - the old note named a -D the script refuses - and a client older than gui/ now fails the suite.

    PP529 · a5e2a2f
  336. the pulled loss count is discarded on the two returns before presentFrame, so frames_dropped under-reports

    The two returns now carry the count to the next frame that presents, and a check over the region refuses a third that would not.

    PP528 · 1b2c51c
  337. nothing implements the nine asks over the real C, and no test can exercise one without a live console

    Nine wrappers, an ABI bump to 35, and a session built from a recorded exchange: six of the seven asks now run against the real C, and only the punch needs a console.

    PP481 · b489acf
  338. the auto decoder order prefers cuda over d3d11va on an OpenGL renderer, and the paced numbers now say the opposite

    The default stands - one synthetic stream on one card reverses nothing - and an explicit d3d11va outranking it is now asserted, so the comparison stays collectable.

    PP72 · 835c6b0
  339. frame generation would smooth a 30fps stream and cost a frame of latency to do it

    No FRAME_RATE_CONVERSION under any usage, and the 2-out-per-1-in doubling returns a byte-identical copy: the 33.3ms hold buys nothing (design recorded in spike/frame-generation/README.md).

    PP50 · a034cdd
  340. the replay calls the key stream NOT MONOTONIC and never says by how much, so 16 reorderings read as a fault

    The key position line now reports how many datagrams arrived out of send order and how far the worst one moved, which is the reordering the video indices cannot see.

    PP527 · 8de24e5
  341. the capture's bounds and the session's hold are constants, so a longer sample cannot be asked for

    --capture-seconds sets the window, the count and the hold from one asked-for length, so a longer sample is a longer file rather than the same one.

    PP526 · 5c76880
  342. PP523 could not tell a quiet link from a lost packet, and the capture's packet indices settle it

    The indices settle what the gaps could only raise: 1609 steps, 122 frames, zero losses and zero reorders - so the twelve timeout crossings were idle time.

    PP525 · 7fa5718
  343. nothing reads the AV head's own fields, so the FEC ratio and the codec byte a console sends are unmeasured

    A real session sends one FEC unit per video frame of 13 to 29, codec 5 on audio where the receiver demands it, and 255 in the prologue the postpone keeps from that guard.

    PP524 · b2dd40b
  344. nothing has measured arrival gaps against the AV reorder timeout, which a healthy session's p99 reaches

    The gaps are reported as a distribution: a real session's p50 is 89us and its p99 13763, with 12 crossings of the 16000us timeout the mean of 1244 hid entirely.

    PP523 · a5a2e30
  345. the replay says the cipher exists from the first packet, so the postponed branch reads zero on every capture

    The cipher's arrival comes from the capture's first nonzero position, so a real opening reports 12 postponed packets and 8332 bytes where the branch had always read zero.

    PP522 · e50421d
  346. PP519 counted 26 repeated key positions and all 26 are zero, in the 27 packets before the cipher exists

    All 26 repeats are at zero in the 27 packets before the cipher, and the reader now separates those from a repeat after it - of which a real capture has none.

    PP521 · 1f8d15c
  347. PP515 changed what the Length column means and the version did not move, so an old capture reads as new

    The version is 2 and a version 1 file is refused by name, so the capture whose lengths were the head's cannot be replayed as a measurement - a fresh one costs one command.

    PP520 · ca8b512
  348. the key position expansion has never seen a console's own positions, where equal values occur 26 times in 2000

    The repeat is pinned as no wrap, and a console's own 2000 positions run through the C's expansion: 1973 advances, 26 repeats, all block-aligned, one monotonic stream.

    PP519 · 563e614
  349. two send buffers exist in this port, the C's and PP27's model, and nothing has ever compared them

    The same pushes and acks run through both and their counts agree after every step, including across the wrap where integer order would keep what the C releases.

    PP518 · c65235d
  350. PP497's MAC gate model has never been run against the C, which exports the function it models

    The model and the C agree on all 1040 swept inputs and on 2000 real heads, once the shim stopped refusing the null crypt that made the no-cipher path unreachable.

    PP517 · 54b8d25
  351. the two captures on disk have no reader, so PP513's replay has never run against a datagram a console sent

    A real capture replays through the managed path and reports 0 bytes allocated over 2000 datagrams a PS5 sent, with the wire bytes per branch that PP515 made readable.

    PP516 · 6044518
  352. every captured datagram records length 18: the emit truncates before the capture sees the real size

    The tap's type carries the datagram's length, so a second real capture reports video at a mean of 1137 bytes and control at 33 where every packet read 18.

    PP515 · e929932
  353. the datagram capture has no command: the one thing that starts a real session records the other four channels

    One session path records either kind, chosen by a flag, so --capture-datagrams wakes the console and writes PP512's file where --capture-exchange writes PP297's.

    PP514 · 35234dc
  354. a capture can be written and nothing replays one, so the file a session leaves has no managed number beside it

    A written capture reads back and replays through PP500's path at zero allocated bytes, reporting branches and copies - the managed half, with the C's named as the console's.

    PP513 · f4c7b87
  355. PP511 fills a capture that lives in memory, so the session PP27 waits for would end with nothing on disk

    The capture writes and reads back as a versioned file, and a writer that owns the tap leaves one on dispose - driven end to end through lib/src's own emit.

    PP512 · 17c068f
  356. the tap has four channels and none carries a datagram, so PP510's capture has nothing to fill it from

    Every arrival crosses a fifth channel above the MAC gate, guarded by the tap's active check, with the base type as its type and the head truncated at the emit.

    PP511 · b63ecb1
  357. PP27's timing run needs takion datagrams with arrival times, and nothing in this tree records one

    The capture keeps arrival, length, base type and an 18-byte head under two bounds, with the head's length derived from the furthest offset PP497's gate reads.

    PP510 · d4634f5
  358. three deferred lines are set aside for a console the project has, so nothing can offer them to a caller who has one

    PP50, PP72 and PP76 are roadmap lines declaring console, and a check refuses any set-aside reason naming a requirement this project declares.

    PP509 · c5383a8
  359. the seam joins nine call sites to seven methods and nothing says the managed flow ever calls all seven

    Three runs of the flow invoke exactly the seam's seven, with both socket ports seen and Fini reached only by the failing runs - which one good run would have reported as six.

    PP508 · 72287be
  360. the session teardown runs ten steps in a fixed order and hands freeaddrinfo the NULL a PSN session leaves

    The nine steps are managed in order, with the mutex outliving its users and the unguarded freeaddrinfo named as a reliance rather than repaired.

    PP507 · 9919c97
  361. PP33's deletion depends on PP340's object but not on PP481, which is what puts an implementation behind it

    PP481 is in PP33's deps and a reader for the group holds it there, so the deletion waits on the implementation as well as on the object PP340 delivers.

    PP506 · b4f2fec
  362. the session request is addressed two ways, and the local one can send Host: unknown after a failed lookup

    Both arms are managed with their four hostname sources, and the fallback is stated as a request that is built and reaches the console while naming nothing.

    PP505 · 7ea5604
  363. a PSN session's regist key comes from the console, and the wait for it has a timeout arm that leaves it zeroed

    The fork's two arms and the wait's three endings are modelled, with the timed-out one named as the only path reaching the session request holding no key and no reason.

    PP504 · 5b81089
  364. the punch's start event is unconditional and its finish fires only on success, so a failure leaves it mid-punch

    The three runs of the punch block end in three different states, and the managed model has no finally - so the start left standing alone is reproduced rather than balanced.

    PP503 · 330953a
  365. the holepunch session creates both sockets and closes neither, so a managed owner double-closes or leaks

    The two closers are named and the creator is neither, held by an interface with no member that could close one - so the reflex to make the flow's owner IDisposable is refused.

    PP502 · bd62f91
  366. PP27's remaining half is a timing run needing hardware, and its line still promises a transport that shipped

    PP27 now declares the live console its timing run needs and no longer promises PP500's work, so pick stops offering a half nothing in a checkout can start.

    PP501 · 431022f
  367. the takion pieces modelled so far allocate for their traces, so none is the receive path PP44's budget applies to

    One composed path from datagram to branch allocates zero bytes across 200 datagrams, with PP487's loop asserted to still allocate so the zero cannot be read as vacuous.

    PP500 · dc329d1
  368. the v9/v12 audio bound stops before the nalu-info structs the parser then skips, so av_size underflows

    The audio bound reserves the skip's three bytes, so the two lengths that used to parse into a payload past the buffer - measured at DataSize -2 and -1 - are refused.

    PP499 · a80111c
  369. the pre-start socket drain has no success return, so its normal outcome is the timeout its caller forgives

    The drain is managed with all four of its endings and none of them success, and the caller's forgiveness of exactly the timeout is asserted from the other side.

    PP498 · 765fee9
  370. the MAC gate rewrites the packet it checks, and only control and congestion hide key_pos from the MAC

    The gate is managed as the rewrite it is, with the six offsets read out of the C and the invariant they carry - key_pos begins where the MAC ends - asserted for all four types.

    PP497 · 05917b2
  371. a data send spends a sequence number and a key position before it can fail, and neither is ever given back

    Both variants are managed with their six outcomes, and the two that leave an unresendable gap are named - one reports the error and the other reports success.

    PP496 · b424414
  372. advance_key_pos rounds by adding the remainder and its six callers pass four different sizes, all of it protocol

    The ledger is managed with its arithmetic unimproved, and the six call sites are read out of the C - which is what caught two of them being attributed to the wrong functions.

    PP495 · 1a5f8dc
  373. takion refuses a data ack that is not exactly 12 bytes, so a gap ack is rejected before the branch that names it

    The received ack is managed and cumulative-only by arithmetic: a payload carrying blocks is never 12 bytes, so the first check refuses it and the gap-ack branch names nothing.

    PP494 · 1d099e3
  374. takion acks the data queue once per drain with the last sequence pulled, and a dropped or unnamed entry still acks

    The drain is managed with its four per-entry outcomes and one ack, whose flag is set on the pull - so a drain that delivered nothing still acks the last sequence it took.

    PP493 · 86748b6
  375. compile.cmd clean with the GUI off leaves the portable tree holding two DLLs and none of what they import

    The native-only deploy stages SDL2 and walks the closure through one script the Qt path shares, so a clean GUI-off build leaves a tree the host can load from.

    PP492 · 9f0e4f8
  376. takion_handle_packet_message_data drops the datagram on both early returns, and its one caller frees nothing

    Both early returns free packet_buf, so the reachable one - a tagged control datagram of 17 to 25 bytes arriving before the cipher - drops it rather than leaking it once per packet.

    PP491 · 170c0a4
  377. takion_handle_packet's five branches each end the datagram's life, and over a pooled buffer none of them can free

    The dispatch is managed with a borrow-or-copy verdict per branch: three of the six keep the datagram past the call, and audio borrows where video, sharing its case label, copies.

    PP490 · c8775d9
  378. the receive step's allocation budget is measured in the C and nothing states the managed number against it

    The managed receive step costs none of PP59's measured three per packet, with the drop path stated as the exception and 1500 asserted equal in all three places.

    PP489 · a306d76
  379. takion_recv's four outcomes collapse to two in the loop, and a zero-length UDP datagram is one that ends it

    The socket read is managed, with the four codes collapsed to the loop's two on purpose and an empty datagram pinned as the network error that ends the thread.

    PP488 · 7212081
  380. nothing models takion's receive loop, where two once-only transitions and three exits decide what the thread does

    The thread's order is managed over PP485's buffer, with the MAC re-check and the postpone flush firing once each and their differing guards asserted against the C.

    PP487 · 19fc4ea
  381. PP481 says no test can run without a live console and declares no requirement, so pick offers it as ready

    A line whose prose names a live console or a person looking must declare it, so PP481 reports as needing hardware instead of as the next ready thing, and console is declared again.

    PP486 · 31d4001
  382. takion.c mallocs 1500 bytes per datagram and reallocs it down, on the thread the whole stream rides on

    The receive buffer is rented once and reused, so ten thousand datagrams allocate zero where the C mallocs and reallocs each one, with a copy only where postpone keeps a packet.

    PP485 · 53471b9
  383. the two dead guards in request_header_format are harmless only because the head cannot exceed 190 of its 256 bytes

    The head is 190 of 256 at the subtraction and writes 211 in all, derived from the format strings and asserted, so a longer header eats the margin loudly.

    PP484 · f9de546
  384. two lib/ defects are recorded not repaired because this port does not edit lib/, and 20 files in lib/src are edited

    Both rationales now say what is true, and a guard over app/ goes red on any reason resting on lib/ being untouched, with the census that falsifies it asserted.

    PP483 · 75267dc
  385. PP303's middle option needs a size budget for this application, and nothing measures the package at all

    the payload and the installer are measured against ceilings that may fall and may not rise, on PP38's contract, needing no Qt build to produce a number.

    PP482 · ab898af
  386. PP479's interface is joined to nothing, so a tenth holepunch call site could arrive with no method to answer it

    the nine sites are joined to the seven methods that answer them, with the two collapses named and the socket's port-type distinction asserted.

    PP480 · 43cab17
  387. nothing managed owns the PSN flow: the order, the guards and the state are all modelled and nothing drives them

    a managed flow drives PP460's order against the nine asks as an interface, applies each guard, and holds the four pieces that outlive the block but not the fifth.

    PP479 · 9996855
  388. nothing states what the PSN flow holds between its nine calls, and one piece is a pointer to a stack local

    the five pieces and their three lifetimes are stated, with the four calls that must stay inside the registration info's block and the null that means a local session.

    PP478 · 292bbdc
  389. takion's socket setup is unported and four of its logs name IP_MTU_DISCOVER where the call sets IP_DONTFRAGMENT

    the socket is modelled with its two branches and the window it buffers to, and all four fragment-bit logs now name the option the call sets.

    PP477 · a80d975
  390. PP464's guarded step-back is in takion's resend loop too, but the ack there removes an unknown number of packets

    the scan restarts after a give-up, because the ack removes every packet at or before that sequence number and the buffer is in send order.

    PP476 · b32ff0e
  391. takion's resend loop is unported: the two waits, the try limit, and that giving up acks the packet to itself

    the resend loop is modelled: a timeout with packets and none without, the strictly-greater due test, and the give-up that takes the console's own ack path.

    PP475 · 6b651b7
  392. three paths in takion's postpone lose a datagram it owns, and the array is never freed if the cipher never arrives

    both early returns free the buffer the dispatcher let go of, and the teardown releases anything still postponed - so a session dying before the cipher leaks nothing.

    PP474 · b4fceca
  393. takion holds AV packets back until the cipher exists, and three paths lose the datagram buffers it took ownership of

    the postpone buffer is modelled with its ownership rule: two of four outcomes lose the packet, and the array is released only by a flush the cipher guards.

    PP473 · c00463e
  394. PP470 says the six-edit fix changes no sequence, and nothing has read what each of the six ctrl_failed calls relies on

    the six are read: five leave the loop at once so a release around them is unobservable, and the sixth breaks only its switch, so the fix is not uniform.

    PP472 · 2ad9a49
  395. the ctrl channel's two mutexes can deadlock, and the two fixes trade one edit against a changed atomic sequence

    the PIN is taken out of the session under state_mutex and the lock released before crossing into ctrl, so one order is left and the cycle is gone.

    PP470 · 45325fc
  396. six of seven ctrl_failed calls hold notif_mutex while it takes state_mutex, and nothing has checked for reverse order

    both orders exist: the session thread holds state_mutex across the PIN call which takes notif_mutex, and the ctrl thread holds notif across ctrl_failed which takes state.

    PP469 · b3c2d4e
  397. ctrl.c has two mutexes on two objects and nothing states which guards what, or that one call site treats them apart

    the two mutexes are stated with the fields each guards and what wakes its waiter, and the seven ctrl_failed calls are counted with the one that releases first.

    PP468 · 02632ea
  398. two arriving ctrl types are once-only and nothing states it, and their flags take the lock in one of four reads

    the two once-only types are stated with their different log levels, and the locking is recorded with why levelling it in either direction would break.

    PP467 · 5fc4b12
  399. PP440's census does not say which ctrl types arrive, so a missing handler and a type no console sends look the same

    the ten arriving types are read out of the switch and held against the census, and the remote counter is stated: a bare message spends nothing, as on the send side.

    PP466 · 6da3385
  400. the PSN path lives in session.c's nine holepunch call sites, so PP33's deletion would take remote play with it

    The managed flow owns the PSN sequence: PP479 drives it, PP502 to PP507 settle the rules around it, and PP508 shows by running it that all seven seam methods are reached.

    PP340 · 5ca3f54
  401. ctrl.c is 1763 lines of control channel and PP28 sizes it together with two files it does not resemble

    the control channel is modelled end to end: all 22 message types with their direction, the once-only state, both mutexes and the deadlock they formed, and a real PS5 capture replayed.

    PP294 · f3e7789
  402. one selftest asserts a 400ms deadline within 30ms, and its design forces two waits that can each overshoot a quantum

    the wake moves to 300 of 2000 so the bound sits 150ms from a correct wait and from a per-wake one, against two scheduler quanta of jitter.

    PP465 · e8a8d58
  403. the drop pass guards its step-back, so a stale host that moves into slot 0 is skipped and waits a whole ping cycle

    the step-back is unconditional, so the increment lands on the slot the shift filled at every index including zero, and a whole table going stale empties in one pass.

    PP464 · c589b49
  404. both bind-failure logs in discovery print the port after moving it on, so each names the rung it is about to try

    both branches log before moving the port on, so a failure on 9303 says 9303 and one on 9319 says 9319 instead of naming the rung it is about to try.

    PP463 · 48a3fa4
  405. the discovery socket's bind ladder and receive thread are unported, so nothing states where it binds or when it leaves

    the ladder is eighteen rungs with each log's port beside the real one, and the loop's six turns are stated including the failed receive that leaves.

    PP462 · 96c82ce
  406. the nine holepunch calls are recorded in file order, which is not the order they run and says nothing about failures

    execution order is held apart from PP429's file order, the finis are excluded as teardown, and each step's guard is named: two quit, one is caught indirectly, one is not.

    PP460 · 4d8ec62
  407. the candidate race has never run over sockets, so its own claim that the first to answer wins cannot be shown

    the race runs over three stub sockets: the last candidate offered wins by answering first, and an answer from an unprobed port becomes a derived candidate.

    PP459 · ac88e06
  408. PP238 and PP256 each ported the same punch loop, so two step machines model one function and neither knows it

    one enum, one decision and one source reader for the loop, with the guard counting files that name its definition rather than files that mention it.

    PP458 · a7c2098
  409. extra responses and failed receives both re-arm the punch loop's full timeout, so a stream of either never times out

    both discard paths count against a consecutive limit read from the C's own define, and a request gives the budget back so no legitimate flow reaches it.

    PP457 · 0e32bbf
  410. the punch answering loop has never run, so nothing shows that receiving something never returns success

    the loop runs against a stub console: every request is answered, silence after one is the only success, and an ignored response is measured not counting as one.

    PP456 · c57f5bc
  411. the punch response's masked tail is built and never sent, and nothing in the port un-masks one

    the reply crosses a socket, the session-id key is un-masked from the other side, and a v6 candidate is measured sending four of its sixteen bytes.

    PP455 · 04b1130
  412. three classes each read the probe packet's thirteen offsets out of holepunch.c, and all three agreeing hid it

    PunchResponse is the one place the packet's geometry is a number, the other three derive, and a fourth copy or a re-literalised constant now fails a test.

    PP454 · 4e8bd21
  413. the STUN reader skips an attribute by 4 + length, so a conformant response with a padded attribute loses its address

    both halves round the attribute advance up to the next multiple of four, so a conformant response with a padded attribute keeps its mapped address.

    PP453 · baa2416
  414. the STUN exchange has never sent a datagram, so the request layout and the address reader only check each other

    one binding request crosses a loopback socket and both XOR round trips come back, and the unpadded skip is now measured: a conformant response loses its address entirely.

    PP452 · 45971b7
  415. takion's cookie ack tests byte 0xd before the length check, and the second receive inherits the first datagram's size

    one helper receives a cookie ack and refuses it before any byte is read, taking its capacity from the caller's sizeof so neither datagram can narrow the other.

    PP451 · 36d40f6
  416. takion's handshake is unported, so nothing states that a send failure aborts it while a lost ack costs a retry

    the handshake is modelled - the send-aborts/receive-retries asymmetry, both init ack gates in order, the crossed stream check, and the tag as both initial sequence numbers.

    PP450 · a76fa0d
  417. takion's AV reorder timeout is unported, and nothing states that a loss burst costs one timeout rather than one each

    the AV reorder timeout is managed - one timeout per loss burst, a skip that jumps to the first buffered packet, and the two deadline tests that disagree at the deadline itself.

    PP449 · 6af9aa7
  418. a PIN reply over rudp is encrypted one counter behind every other ctrl message, and nothing managed models that

    The send's counter is modelled: a PIN reply over rudp encrypts one behind, a bare message spends nothing, and the zero-counter underflow is the arithmetic the C performs and unreachable.

    PP448 · 75764ac
  419. the two sections declaring a remaining query state its count in prose, and one of the two is stale

    Both stated counts are held against the query that answers them, run over the tree - and the count may be stated outside the section that declares the fence, as PP33's is.

    PP447 · 753a4ed
  420. the site has no documentation area, so a page explaining how a frame reaches the screen has nowhere to be published

    A documentation area at /pportal/docs, built by Starlight into the site's dist, with three joins between the two builds asserted on both sides (design recorded in site/README.md).

    PP446 · c9c48cf
  421. the shim exports no general rpcrypt aeropause, so the PS5 half of the registration payload has no oracle

    The PS5 aeropause is exported, so the managed derivation and layout reproduce the C's head byte for byte; the offset is bounded here because the C bounds only the target.

    PP445 · d2f1394
  422. the registration request payload is still C behind a P/Invoke wrapper, so nothing managed lays out the PIN exchange

    The fill, both aeropause layouts and the two inner-header forms are managed and hold against the C's own payload byte for byte; the general aeropause stays C, unexported.

    PP444 · 5fb6dc4
  423. three backlog lines state a line total no filename anchors, and all three are stale - one by 561

    Three stale totals restated as one number per file so the recount checks them, and a guard that reports any line total no claim covers - which found a fourth, correct and uncheckable.

    PP443 · 986c9c6
  424. the ctrl participant's payloads are C literals transcribed once, and nothing holds them against ctrl.c

    The five payloads copied from a C array are read back out of ctrl.c and compared whole, zero-filled to the declared size so PP383's fifteen initialisers for sixteen bytes is not a false alarm.

    PP442 · 18b4042
  425. seven of ctrl.c's 22 message types appear in the only recording, and nothing says which fifteen are unwitnessed

    Seven of the 22 are witnessed by the recording and fifteen are not, read from the corpus so a new capture moves a type on its own; the eighth value seen is the one the enum cannot name.

    PP441 · 251107a
  426. nothing says which of ctrl.c's message types the port already answers, so what is left of PP294 is a guess

    The 22 types ctrl.c declares, each with the managed type that answers it and a phrase saying what, compared by value and checked by reflection.

    PP440 · e3f6b84
  427. ctest reports the C suite as one test, so a whole munit suite can vanish and the gate still prints 100 percent passed

    The gate reads munit's own count through ctest -V and holds it against a floor of 145 that may rise and may not fall, printing the whole capture on a red or a hang.

    PP439 · d4bb093
  428. PP436 gated a third project and WarningPolicy names two, so the gate builds code whose warnings nothing enforces

    The gated set is read out of ChiakiNg.slnx, so what compile.cmd builds is what the policy binds, and compare-baselines refuses every warning like the other two.

    PP438 · 28a9069
  429. nothing holds the host's imported entry points against the shim's exports, and a mismatch is a runtime crash

    The 241 entry points the host names are held against the 242 the two shim headers declare, comments stripped, and the one export nothing imports is named with its reason.

    PP437 · a9f5004
  430. the site's hand-written prose names a tool and two flags, and nothing holds any of the three against the tree

    compare-baselines is in the solution now, so compile.cmd builds what the front page promises, and the two flags typed into the prose are joined to the host's table.

    PP436 · d5f0721
  431. scripts/holepunch carries the only two tracked ELF binaries, 14.4 MB nothing references, in a Windows-only port

    Two unreferenced Linux binaries and a session log gone from HEAD, the .go source kept, a .gitignore against their return, and a check that no ELF sits under this port's source.

    PP435 · c20be45
  432. PP230's manifest check reads only the root CMakeLists.txt, so an unconditional REQUIRED in lib/ is invisible

    The walk reaches lib/ and shim/ by the same column-zero rule the lookups use, so what lib/CMakeLists.txt requires is measured rather than assumed; Threads is excluded on purpose.

    PP434 · 1667415
  433. CI runs two of the three suites test.cmd runs, and the third is 454 runtime checks over the native seam

    the three passes are held against both files, the selftest is named local-only with PP117's hang as the reason, and a second cannot appear quietly.

    PP433 · 6bb8b34
  434. the site's generated flag list is two behind the host, and nothing joins it to the table it is derived from

    the site states the sixteen flags the host declares, and a rule in the suite that runs refuses a disagreement either way.

    PP432 · d576a58
  435. the build finds Python through a module CMake removed, and its comment names a purpose the call does not serve

    FindPython3 replaces the module CMake removed, the generator runs as its interpreter, and a rule refuses both by name.

    PP431 · ba5e23f
  436. CHIAKI_ENABLE_RUDP is declared and never read, so turning Remote Play over Internet off does nothing at all

    the option nothing read is gone rather than wired up, and a rule refuses any option the build declares and never reads.

    PP430 · 1aa264c
  437. PP340's nine holepunch call sites are named only in prose, so a tenth would change what PP33 is blocked on in silence

    the nine are named by what each asks for and held in file order, and the two sockets are told apart by their port type.

    PP429 · 86793d2
  438. seventeen asserted error codes are their variable's only reader, and nothing joins that count to PP404's census

    a derived reader finds the seventeen the compiler prints, every one is in PP404's census, and only bright_ambassador can fail.

    PP428 · 3ffcd8a
  439. ecdh.c's eight calls are all deprecated as of OpenSSL 3.0, and they are the whole of the key agreement

    ecdh.c is written against EVP: EVP_EC_gen for the key, EVP_PKEY_fromdata for both halves, EVP_PKEY_derive for the secret - and the recorded vector agrees byte for byte.

    PP427 · ca58835
  440. two of eleven socket calls in lib/src pass an unsigned buffer uncast, and the build has printed their warnings all along

    takion's two socket calls carry the cast, and a rule over lib refuses an unsigned buffer handed over uncast, read from its declaration.

    PP426 · 42a75d2
  441. the senkusha and stream participants carry bytes copied from the capture, so the replay confirms a table not the port

    the two participants build their messages from field numbers and values, and the capture judges the encoding rather than supplying it.

    PP425 · a9e05a1
  442. the stream connection has no replay participant, so the last of PP23's four channels replays against nothing

    the handshake replays against the capture and the BANG's four checks are read from it, with the derivation named as the boundary.

    PP424 · b7f7ba9
  443. the stream's BANG is redacted whole, so the console's verdict on the handshake goes with the keys beside it

    the BANG's three key fields are zeroed in place and its six others stay, so the console's verdict is in the corpus (design recorded in tests/corpus/exchange-ps5-four-channels.txt).

    PP423 · 442ae48
  444. the microphone's audio header is built with channels and bits swapped, so the console is told 16 channels at 1 bit

    the channel count goes where the signature wants it, both callers are held to that, and a fresh capture carries 16 (design recorded in tests/corpus/exchange-ps5-four-channels.txt).

    PP422 · 5d91a8e
  445. senkusha's handshake has no replay participant, so the one channel the corpus holds whole replays against nothing

    the handshake replays against PP396's capture byte for byte, and the measurement after BANG is named as out of scope rather than left to be found.

    PP421 · a7038a4
  446. nothing says which recorded entries belong in a corpus, and the first stream capture is 566 corrupt-frame reports of 677

    the corpus selects and the recorder still records everything, with the recurring types listed per channel and the dropped counts reported.

    PP420 · 3e75dd6
  447. the senkusha tap emits takion's data type where the recording says protobuf payload type, and redaction reads it as one

    both protobuf channels emit the payload type: senkusha's send chain threads it and its receive peeks for it, as the stream already did.

    PP419 · ddd7e22
  448. the senkusha channel's redaction set is empty on prose alone, and the first capture of it is about to be published

    both BIGs are read out of the C: senkusha's three fields still empty, and the stream's session key still the session id that earns its redaction.

    PP418 · a41c66c
  449. every commit touching a .c file restates four counted claims by hand, from commands --recount already prints exactly

    --recount --apply runs the calls it prints through roadkeep, off one argument list, and stops on the first refusal.

    PP417 · 1712d15
  450. the ctrl drain's failure breaks the inner loop only, so the outer loop re-enters and sends what it meant to leave

    leaving the drain now drops what is still queued, so the outer loop finds nothing to re-enter it for, and the count no longer races.

    PP416 · 6eadd1f
  451. ctrl_connect_tcp is unported, and its sockaddr allocation failure reaches the user as a connect failure

    the connect is modelled with its five outcomes and its dropped mutex, and the sockaddr allocation failure now reports memory rather than the network.

    PP415 · 09330ee
  452. the rudp offset helper carries takion's doc comment, promising a -1 nobody returns for a default that is a real answer

    the comment says what the helper returns, the default is stated as an answer rather than a sentinel, and the linkage matches its neighbours.

    PP414 · 1ac468e
  453. the rudp unknown-subtype arm acks a counter it never read, and zero drops half the resend buffer

    the unknown arm acks no packet, the rule is that an arm may only ack a counter it read, and the send-ack it does make is unchanged.

    PP413 · 72605d0
  454. a quoted example in a rationale section is read as a claim, so citing a stale number turns the gate red on the citation

    the shape is refused rather than the reader blinded, and a quoted example writes a placeholder where the number would go.

    PP412 · 11d2193
  455. the ctrl login-PIN request handler is unported, so a PIN asked for after the session id ends the session unstated

    the request is modelled with the session id test between the two flags, and a PIN asked for too late ends the session rather than prompting.

    PP411 · 6612db1
  456. three line-count claims sit in a shape the recount reader cannot see, and one of them is stale by 139 lines

    the reader takes up to six lowercase words between a filename and its number, which brings three unscanned claims under the gate and turned the stale one red.

    PP410 · 5b6d4c9
  457. the three keyboard messages the console sends are unported, and an empty text arrives as no text at all

    the three arrivals are modelled with PP357's size check whole, and an empty text is stated to reach a screen as the same nothing a close carries.

    PP409 · b1c744e
  458. the ctrl login-result handler is unported, so nothing states that an unsolicited PIN-incorrect raises no prompt

    the handler is modelled with its warn-and-carry-on size guard, and an unsolicited PIN-incorrect is stated to raise no prompt.

    PP408 · c26cefe
  459. all four tap channels exist and two have never been recorded, so PP23 owes a capture and nothing else

    a run against PS5-385 recorded all four channels, and PP420's rule selected 33 entries of 677 with the dropped counts reported (design recorded in tests/corpus/exchange-ps5-four-channels.txt).

    PP396 · 7530015
  460. eight asserts still carry weight about data across four files, and PP357's check reads only one of them

    seven of the eight are guarded elsewhere or state a fact, each with its reason censused, and the init ack's payload size is a check.

    PP369 · e6e41ee
  461. regist.c 918, discovery.c 495 and discoveryservice.c 384, which decide whether a console pairs

    registration and discovery are modelled end to end: the reply parser, the wake packet, the PIN exchange, the bind ladder, both read loops and the service's own ping and host table.

    PP29 · 8014d20
  462. the protocol has no specification, so a managed rewrite has no oracle except the C code it replaces

    Four channels of a real PS5 exchange replay with derived bytes, so the oracle is hardware and not the C; the opaque BIG, the ECDH derivation and the MTU remain declared limits.

    PP23 · 8c5e0cb
  463. eight stop-pipe inits in lib/src check their result and take a failure path, and the two in holepunch.c assert it

    both stop pipes take a failure path with a cleanup ladder behind them, and a rule over lib/src refuses an asserted one.

    PP407 · 9d7e59a
  464. PP404 counts 53 asserted error codes without asking which callee can fail, and on Windows most of them cannot

    the census splits by whether the callee has a failure path, read out of thread.c, and the twenty that can fail carry their own ceiling.

    PP406 · 412cb9b
  465. two logs print a sized receive buffer with %s, and neither buffer is terminated at the length the caller knows

    both take %.*s with the length the caller already had, and a rule over lib/src refuses a third.

    PP405 · cfefa2e
  466. 54 asserts in lib/src inspect an error code, and PP357 established that the shipped build compiles every assert out

    a census counts every error code inspected by nothing but an assert, ratcheted so it may fall and not rise, and the websocket thread checks its notification lock.

    PP404 · 701f3ee
  467. three strncpy copies in holepunch.c are bounded by sizeof(dest), so a full-length name or address leaves no terminator

    the three copies go through copy_bounded, which truncates as before and terminates, and a rule over holepunch.c refuses any copy bounded by the size of what it writes into.

    PP403 · 334cd92
  468. a short duid leaves the rest of a stack local untouched, so a device identifier carries stack contents to PSN

    the decoder fills its destination before parsing, so a short duid yields zeros rather than stack contents.

    PP401 · 5568c9b
  469. the session id comes from srand(time(NULL)) and rand(), so two sessions in the same second share it

    the session id draws sixteen bytes from the crypto generator, a nibble per digit, and PP33's shape is unchanged.

    PP400 · fabc824
  470. bytes_to_hex clamps against twice its output buffer, so its bound permits four times the room it has

    the clamp is against the room it has, a zero destination leaves first, and PP33's check now watches for the old shape.

    PP399 · a36ee75
  471. two allocations in lib/src are used without being checked, and one is a null dereference on the PSN path

    the two are checked and the rule is stated over lib/src, with the shapes where NULL is a correct answer excused by their consumer.

    PP398 · e9247b6
  472. a recorded BIG would publish the session id PP326 redacts on ctrl, because the secret list is keyed by ctrl type

    the recorder asks the channel as well as the type, the tap carries the protobuf payload type, and a BIG is redacted.

    PP397 · 192f476
  473. streamconnection has no tap channel, which is the last of PP23's four modules without one

    the last of PP23's four modules gets a channel: eight sends behind a chokepoint, the BIG tapped whole, the receive above the lock.

    PP395 · 93ba9eb
  474. senkusha has no tap channel, so PP393's first half is unbuilt for one of the two modules PP23 owes

    senkusha gets a channel: six protobuf sends behind one chokepoint that taps, and the receive tapped above the decode.

    PP394 · 9341535
  475. the session request and its answer are asserted as two halves, and nothing says the request comes first

    the client-opened channel replays as a conversation, and a participant can say what it opens with.

    PP392 · cfa499b
  476. the replay harness has only ever been fed recordings the tests wrote, so no managed module answers the real capture

    PP342's table answers PP297's capture end to end, and the harness learns which conversation a participant owns.

    PP391 · 7f0ae96
  477. the fourth attempt to fix holepunch.c's log prefixes, and nothing in that file records the three decisions against it

    the seven carry a marker naming the decision that made them, and the rule asks whether the file still matches PP235 and PP238.

    PP390 · 6e8916a
  478. 20 ordering predicates mix compacted call positions with raw offsets, so none can move onto CCall alone

    every ordering predicate reads one compacted space, and the raw slicer keeps its anchor without the terminator.

    PP388 · 61b32f5
  479. 47 drift predicates pin a bare call to its exact spelling, semicolon included, and four broke this block

    the 27 occurrence predicates ask CCall whether a call happens; the 20 ordering ones need their arithmetic moved and are PP388.

    PP386 · 52b3aef
  480. seven more sends in ctrl.c discard their result, and PP383's rule ships as a ceiling of seven rather than zero

    the drain leaves, the PIN and heartbeat fail the channel, the four fallbacks report, and the ceiling is zero.

    PP385 · 242d88a
  481. chiaki_rudp_send_recv discards all four send results, so a send that never left is reported as a receive timeout

    all four arms read what they sent, a failed send skips the wait, and the summary says how many tries never left.

    PP384 · be99c56
  482. ctrl_enable_features sends seven messages, discards every result, and returns void so its caller cannot know either

    the feature burst returns a code, stops at the first failure, and both callers end a channel whose counter has drifted.

    PP383 · ca00a69
  483. 22 multi-byte accesses in lib/src go through a plain cast on pointers that carry no alignment guarantee

    22 plain casts go through the unaligned type, four keep theirs by name, and the locator that left both lib/src sweeps dead resolves directories.

    PP382 · 17cad9b
  484. PP374's width check reads 5 of the 38 byte-order conversions in lib/src, missing every doubled parenthesis

    the width reader matches both spellings of the cast, and a floor under the sweep's count is what asserts its reach.

    PP381 · 6fab75a
  485. six waits in senkusha.c log that nothing arrived and then report the measurement, or the whole run, as passed

    all six wait blocks answer a silence the way the RTT loop always did, under a rule over every wait in the file.

    PP380 · f6db5c3
  486. the senkusha disconnect is sent and its answer dropped, so one that never left is never logged

    the senkusha disconnect reads and logs its answer, and the rule covers every answering call in the file.

    PP379 · 5325828
  487. the pong tag is read through a plain uint32_t pointer, three lines from where the file uses the unaligned type

    the pong tag reads through the unaligned type, and a rule over senkusha.c covers every cast in it.

    PP378 · 86d26c4
  488. three failure logs in the generic ack helper name the echo command, which is only one of its two callers

    the name arrives as an argument now, and the check reads both files: senkusha's five encoders are the negative control PP373's file could not be.

    PP377 · eceba65
  489. a BIG that lands exactly on a fragment boundary never gets its end-of-message flag

    the remainder was tested against the first-message overhead even on a continuation, so a remainder of exactly mtu - 25 was consumed whole and the trailing send that carries the end flag was skipped.

    PP376 · 61735d2
  490. the BIG fragment loop discards every send result but the last, so a truncated BIG reports success

    err was assigned per fragment and read after the loop, where the trailing send had already overwritten it; the loop now leaves on the fragment that failed and names it.

    PP375 · bc1695e
  491. the pad info timestamp is read 32 bits wide and byte-swapped 16, so the logged value is the field's top half

    ntohs takes a uint16_t, so the four-byte read was truncated to its top network half before any swap; the rule is now over every conversion in lib/src, and this was the only mismatch.

    PP374 · 3b114de
  492. two encoding-failure logs name a message the function is not encoding

    both lines were the neighbour's, and one existed verbatim in two functions; the rule is now derived from each function's own name rather than from a table.

    PP373 · efa9ce4
  493. a decoded video header has no owner until the receiver takes it, and three paths lose it

    the count check sat below the realloc, the streaminfo exits freed nothing, and the handover was void so a refusal could not be told from a transfer; it answers now.

    PP372 · d14cdc5
  494. a NULL disconnect reason is dereferenced twice, on the path that runs whenever a console hangs up

    the flag saying the reason is there is set before the strdup that fills it; both reads now go through one tested local, and the comparison stays exact so PP336 holds.

    PP371 · 7c3227b
  495. the streaminfo ack's result was discarded, so a client reports connected while the console waits to be told

    the ack's result is read and failing ends the state, the disconnect logs, and a check over all eight sends refuses any answer thrown away.

    PP370 · 1d29a0d
  496. a gkcrypt owning a live thread was released with a bare free, leaving that thread writing into freed memory

    the gkcrypt goes through the wrapper that joins its thread, the early buffer is tested before it is written, and both are checked as shapes across three files.

    PP368 · 85b4d86
  497. the AV decrypt's result is discarded, so a failed decrypt hands ciphertext to the video receiver

    the AV decrypt's result is read and a failed packet is dropped, and a check over every cipher call refuses any result thrown away.

    PP367 · 3ed3866
  498. one protobuf on the wire is three messages depending on the state, and the AV route is where every deletion waits

    the three dispatch layers are a table, and the AV route's block offset and video call are asserted as PP30's premise.

    PP366 · 9b3ec75
  499. state_failed is written eight times in streamconnection.c and read nowhere, so a failed handler waits out its timeout

    reproduced as dead, with the predicate and the spent signal both asserted - and the same shape found in senkusha.c, ten writes and a two-field predicate, so both files are checked.

    PP365 · 2e78d60
  500. six cascading exit labels lift two measurements before freeing what made them, and the order is load-bearing

    the six-label cascade is a table, and both measurement rescues are asserted against the frees that would lose them.

    PP364 · 9195949
  501. the stream's idle loop treats a timeout as work, which is the inverse of the ctrl loop PP349 ported

    the idle loop is a table where a timeout is the work, asserted against the ctrl loop it inverts.

    PP363 · e8bd643
  502. the stream connection walks three states before a stream exists, and one message can arrive before it is expected

    the three states, the predicate the wait actually uses, and the early streaminfo that is replayed rather than dropped.

    PP362 · 2fb8f99
  503. the microphone toggle logs the opposite of what it sends, and the rudp subtype switch says it is wrong

    the log word is derived from the byte it describes, and the switch's three fallthroughs are a table rather than four tidy arms.

    PP361 · 383f388
  504. the ctrl handshake's response side is unported, and the remote counter starts at one or zero depending on it

    the one-shot retry, the remote counter spent only where the server type decrypts, and the two downgrades - only one of which the auto-downgrade flag gates.

    PP360 · 383f388
  505. RP-Prohibit hides the stream without touching either display flag, so any DisplayA zero un-hides it

    RP-Prohibit raises a third flag the DisplayA recovery branch also guards on, so nothing un-hides a prohibited session.

    PP359 · ecea469
  506. the ctrl response parser matches headers with strcmp, which is the defect PP296 fixed in its sibling

    both ctrl headers matched without regard to case, and the check runs over every parser in lib/src rather than the one PP296 reached.

    PP358 · 89a2f61
  507. the two keyboard handlers bound their copy with an assert, and the shipped build defines NDEBUG

    both handlers check the announced length against what arrived, and a shape check refuses any assert left as the only bound on a copy.

    PP357 · 9000eca
  508. the ctrl connect spends the crypt counter three to six times, so the first message is not encrypted at zero

    the counter accounting per target and transport, the little-endian streaming type, and the conditional headers appended last.

    PP356 · 1dfe4ac
  509. ctrl fini frees the login pin and never the message queue, so anything queued when the loop errors out leaks

    the fini releases the queue as well as the pin, and the check is the symmetry over both rather than a note about one.

    PP355 · 001a6be
  510. two ctrl receive buffers share one size field, and the rudp read limit subtracts the wrong buffer's fill

    the dead 520-byte field is gone and the rudp receive takes the whole datagram, which on a UDP socket is a truncated ctrl message no longer lost.

    PP354 · 89e5f43
  511. two display flags decide whether the stream is shown, and the one value the capture holds is the clearing one

    the table over both flags: A raises silently, B stops the stream once, clearing is silent, and only a DisplayA zero ever says it is back.

    PP353 · 3a5f6ee
  512. the two display handlers read payload bytes without checking the size, so a short message is decided by leftovers

    both display handlers check before they index, and a count over every handler holds at zero rather than a check on the two that were wrong.

    PP352 · e412450
  513. accept and reject are the same ctrl message told apart by one unnamed byte, and nothing managed builds either

    the 36-byte header with its length in two fields, the pre-incremented counter, and accept and reject named rather than spelled four bytes at a time.

    PP351 · 73fc62e
  514. the ctrl channel owns two stop pipes for different jobs and nothing managed states which wakes what

    each pipe's job named and read out of the source: the select waits on notify, a blocking send is given stop, and only a stop pokes both.

    PP350 · d72bda6
  515. the ctrl thread's loop is unported, and a cancelled select is its work branch rather than a failure

    a cancelled wait is the work branch, the three conditions are read in order before and after it, and the buffer frames two messages out of one read.

    PP349 · 704853f
  516. ctrl.c's ctrl_failed overwrites a recorded quit reason, which is the rule PP336 asserted the label keeps

    the generic ctrl failure guards on NONE like the label does, so a cause the user can act on outlives the control channel dying after it.

    PP348 · ba08dfc
  517. the rudp arm copies a message into the 512-byte ctrl buffer with no bound, and its source buffer is 520

    both rudp arms check the room left in the destination, and a count of unbounded copies into it holds at zero rather than a check on the two that were wrong.

    PP347 · 17c24c4
  518. the ctrl read loop adds eight to a uint32 length, and the wrap defeats the overflow check below it

    the bound is on the announced length alone, before anything is added to it, so a header claiming four gigabytes ends the channel instead of being decrypted in place.

    PP346 · db652fe
  519. chiaki_ctrl_set_login_pin returns void, so an allocation failure reaches the user as a wrong PIN

    the ctrl login PIN handover returns a code, and a dropped PIN ends the session naming memory instead of accusing the user.

    PP345 · f79fb4e
  520. the two ctrl send paths disagree about a null payload with a size, and nothing managed has either

    the queue's copy, its order and the null-payload disagreement, both answers reproduced and each held against the path that gives it.

    PP344 · dcf240a
  521. the only reader that finds a C function body rather than its prototype is named after the reorder queue

    one reader named for what it reads, counting braces rather than trusting a closing one in column zero, with the two copies delegating to it.

    PP343 · 22c6bfd
  522. a session id makes the client send three messages and nothing managed reproduces the order

    the burst a session id triggers, in order, held against the capture; the heartbeat answered regardless; and the four rungs that substitute an id rather than fail.

    PP342 · 64fdac6
  523. a ctrl type the enum does not name arrives on every session, and the line that would say which is commented out

    the unhandled ctrl branch names the type at an informational level, and its hexdump no longer shouts.

    PP331 · e8f18ef
  524. the rudp ctrl send sizes a stack buffer with a uint8_t, so a payload of 248 bytes or more overflows it

    the length is a size_t, so the sum that fills the buffer is the sum that sized it, and a check reads for the shape rather than the line.

    PP341 · c0a2226
  525. a failed rudp init is logged as an error and then ignored, so the session fails later naming something else

    both failures now quit instead of polling for a stop nobody asked for, and a check finds the shape rather than the line - which is how the second one was found.

    PP339 · 7ef7843
  526. stop, join and fini have an order nothing states, and both wrong orders fail as something else

    the phase table saying what stop, join and fini do in each phase, and the four wake-ups a stop performs, held against session.c.

    PP338 · f8f2513
  527. the device id a console is told is mostly fixed bytes, and nothing managed builds one

    the device id's fixed prefix and written zeroes, the colon that pins the address family, the target, and the 360p a disabled video actually asks for.

    PP337 · 5cbfdc2
  528. the session thread ends through two labels with different cleanup, and nothing managed says which reason a client sees

    the two exits, the fall-through that guarantees one quit event, and the rule that a recorded reason outlives the generic failure after it.

    PP336 · a3f0ae5
  529. the login PIN loop says a PIN was wrong from a flag set before anyone could know, and nothing managed has it

    the loop, the unbounded wait for a person, the inner ctrl-failure check, and the flag that says a PIN was wrong because the console asked twice.

    PP335 · 9f77a95
  530. the RP-Version retry is three attempts and the third reads the same reply differently, and nothing managed reproduces it

    the three rungs, the strcmp guard, the 5.0 substitution and the asymmetry the last attempt reads a reply with, as a decision table over one answer.

    PP334 · 0ada1fe
  531. PP332 added a second HTTP head parser beside PP33's, and the two disagree about spacing and duplicates

    the duplicate reader is gone and the answer goes through PP33's parser, so libchiaki's three transcribed quirks apply to it like every other reply.

    PP333 · f68dd94
  532. nothing managed builds the session request, so PP297's recording is an oracle with nothing to judge

    the managed session request, redacted the way the capture was, is character for character the head that reached a real PS5.

    PP332 · 3adf853
  533. the executable, its window and the installer carry upstream's chiaki mark, and the site now ships a different one

    the site's mark rendered to a seven-size .ico that the executable, its window and the installer all carry, stamped with the SVG's hash so a redrawn logo turns the suite red.

    PP330 · e847c3e
  534. --capture-mapping and --ratchet take whatever follows them, so a flag after either is swallowed as its argument

    one rule reads the value a flag takes and refuses a following --flag as that value, so the three callers that take an optional argument all answer the same way.

    PP329 · 2c5966f
  535. the recorder divides the tick rate down first, so every offset it stamps is wrong where that division has a remainder

    the offset is the ticks scaled by the counter's own rate, so a machine whose counter is not a whole number of ticks per microsecond records the time that passed.

    PP328 · d6f2b97
  536. the recorder exists and nothing turns it on, so making a capture is still a code change rather than a flag

    --record arms the recorder before any window opens and writes the exchange on exit, so a capture is a session with a console rather than a code change.

    PP327 · 067016c
  537. nothing joins PP323's tap to PP297's recording, and a ctrl payload rendered as hex is eaten by the log sanitiser

    a recorder turns tapped messages into entries, rendering ctrl bytes as dash-separated pairs no sanitiser rule matches and dropping the payload of the six types that carry a secret.

    PP326 · 2188bb7
  538. the recording's redaction is shaped for log lines, so RP-Nonce reaches the file the moment a payload is structured

    a second sanitiser takes a value because of the header above it, composed in front of PP88's, so a short registration key and a base64 nonce never reach the recording.

    PP325 · 45e3818
  539. libchiaki hands a managed caller a log and nothing else, so a recording of a session has no payload to hold

    the four chokepoints where a session is still plaintext now emit a direction, a channel, a type and the bytes to an installable tap, so PP297's recording has a source the log could never be.

    PP323 · e47b3ee
  540. no session exchange has ever been captured, so the four modules with no test cannot be ported against anything

    a real PS5 woken out of standby, one session driven end to end, and the exchange recorded to tests/corpus with every secret redacted by the rule written for it.

    PP297 · e49691c
  541. session.c is 1206 lines and owns the session lifetime, and PP28 sizes it together with two files it does not resemble

    the connect sequence, the retry ladder, the PIN loop, the teardown, the init constants and the stop-join-fini order, each against session.c or against PP297's capture.

    PP293 · 7cdd146
  542. the buffered pacer's interval comes from the display and nothing states what a rate change mid-stream does to it

    the display's rate paces the present, a rate change gets past an armed pace thread, and a missed deadline catches up in whole intervals.

    PP321 · a1e8c4c
  543. the log sanitiser redacts nothing in a hexdump, so RP-RegistKey and RP-Nonce survive in the bytes and the ASCII gutter

    a hexdump row is redacted whole, bytes and gutter, before any line rule runs (design §PP320 superseded: field names and grouped hex leave the tail on the next row unlabelled).

    PP320 · 103d02f
  544. no presentation path carries HDR: D3DImage refuses ten bits and a DirectComposition visual hides WPF's overlay

    the overlay goes above the video in the compositor's tree, measured to Commit and the only one of three that keeps both (design §PP319 superseded: topmost is about child windows).

    PP319 · bd0367e
  545. an assertion comparing two constants passes every analyzer, and one grep found one still standing in the suite

    A source sweep over the assertion corpus fails on the shape, and the one Assert.Equal(0, 0) it was written against is deleted.

    PP318 · cdd8389
  546. four MSBuild warnings print on every build of the test project, and PP316's policy cannot reach any of them

    The two bare Reference items are gone and the framework reference supplies both assemblies, so the build prints zero warnings where it printed four.

    PP317 · 4db91ac
  547. a test named for the UUID's four dashes asserts one literal against another, and the analyzer says so in every run

    TreatWarningsAsErrors on both gated projects, and the four it would have refused are fixed - one of them a property whose rename found a caller no grep for its type could see.

    PP316 · d353ae6
  548. an HDR picture cannot reach the display through D3DImage, which refuses any surface wider than eight bits

    topmost FALSE and TRUE draw the same red over WPF's content, so PP10's overlay is not seen either way (design §PP163 superseded: the compositor accepts the tree and the pixel does not follow).

    PP163 · 59d757b
  549. the ceiling reads 32 and none of the 32 is a task that needs a test written, so the number still is not the debt

    the index takes every file a commit carried, twenty gates and measurements say so, and the ceiling reads zero.

    PP315 · a0597ae
  550. the ceiling says 95 and the port owes about one, so the number a reader acts on overstates the debt by two orders

    an index of which assertion file each shipping commit carried, generated from git: 95 to 32.

    PP314 · f8f97af
  551. brief has offered the same unstartable task four sessions running, because what blocks it is a console and not a dep

    five lines say what they wait on, and the names are held against the config that declares them.

    PP312 · 3b28dd1
  552. an id written in a fixture or an expected value pays a real task's debt, because the join reads the whole file

    the join cannot be parsed apart, so every payment is auditable: --ratchet <id> says where.

    PP311 · 46596c1
  553. a task whose output is prose cannot ship: nothing asserts it, so the debt rises past a ceiling that may not rise

    an exempt line in the ceiling file, refused unless it carries the reason it is exempt.

    PP310 · 4226476
  554. PP225 is the one code change in the port that shipped with nothing asserting it, and it is still unasserted

    the two silent halves of PP225 read out of the source, and the ratchet down to 95.

    PP309 · cb9aa9f
  555. the ratchet's id join misses 75 tasks whose test shipped in the same commit, and only git can see that

    git answers where the test already is, as a diagnostic; the gate stays the id join, free and offline.

    PP308 · 3510a9c
  556. the ratchet holds 96 tasks with no assertion naming them and nothing schedules paying any of them

    the 96 read against git: 75 have a test in their own commit, 11 could not, and 1 is real.

    PP307 · 1be2d07
  557. the host has seven command-line flags, nothing lists them, and a mistyped one opens the window instead of refusing

    --help lists every flag, an unknown one is refused, and the list is held against the dispatch.

    PP306 · 52579ad
  558. the ratchet's join is one id per task, so work asserted under the id it continued reads as untested

    --ratchet lists the debt beside the ledger's sentences, and PP300's own assertions now name it.

    PP305 · cdcd65a
  559. every counted claim a commit invalidates is restated by hand, from a list a red test produces after the work is done

    ChiakiNg.exe --recount prints each stale size with the governed call that fixes it, anchor resolved.

    PP304 · 3799373
  560. discovery's protocol half is wrapped rather than ported, so its parser and classifier are still C

    Discovery's packets, classifier and reply parser are now managed code, each answer compared with the C's on the same bytes.

    PP300 · 5dbfe67
  561. a console omitting system-version crashes discovery through an unguarded atoi(NULL) in the classifier

    the guard in discovery.c, and the shim's substitution deleted so a test can reach the null.

    PP299 · 46e78da
  562. the GMAC needs a 16-byte nonce and a 4-byte tag, and .NET's AesGcm accepts neither, so PP26 cannot finish on the BCL

    GHASH and the GCM tag by hand, agreeing with the runtime's GCM where it answers and with chiaki's where it will not.

    PP298 · b5f6f56
  563. RP-Nonce is matched case-sensitively though HTTP header names are not, so a console spelling it otherwise fails

    all three header names matched without regard to case, in session.c and in the port together.

    PP296 · 1030a0b
  564. the frames-lost count subtracts a wrapped sequence number as a plain int, so a loss across the wrap counts -65528

    the count reduced against the wrap on both sides, so the two still agree and the number is right.

    PP292 · e4fe156
  565. videoreceiver.c is the next link above the ported frame processor and no task owns it, so the chain stops there

    a managed receiver assembles the ported decisions behind a four-method seam, and matches the C frame for frame where the C can be driven.

    PP291 · c9517f7
  566. thirteen exported C functions are referenced nowhere in the tree, and nothing names them as deletable

    a test names the thirteen exports nothing references, asserts the set exactly, and reports movement in either direction.

    PP290 · 166e6c5
  567. frameprocessor.c is the only caller of the FEC decode and no task owns porting it, so PP30 cannot finish

    a managed assembler produces the same frame and verdict as the C on six loss patterns, and the two agree on a second flush being destructive.

    PP289 · 4a867ff
  568. chiaki_fec_encode has no caller anywhere in the tree, and it is the half of fec.c that pulls in jerasure_matrix_encode

    the dead encode and its jerasure call are gone, PP30 reads 13, and PP285's guard caught the lib/src total the deletion moved.

    PP288 · 01acad3
  569. fec.c's encode and decode are jerasure calls with no managed counterpart, so PP30's 14 sites cannot go

    a managed decode produces byte-identical frames to jerasure on all 64 recorded cases, and nothing in the suite survives a decoder that does nothing.

    PP287 · 759231e
  570. the Galois field and Cauchy matrix jerasure computes have no managed counterpart, so PP30 has nothing to build on

    a managed GF(2^8) and Cauchy matrix agree with jerasure's entry for entry on eight shapes, and a rival polynomial is what proves the comparison bites.

    PP286 · cde332f
  571. PP23 sizes the oracle from 16935 lines in lib/src and 5512 in test, and no reading of the tree produces either

    a directory total is checked where it names its counting rule, and PP23's two are restated from the tree instead of from memory.

    PP285 · a359c7c
  572. PP163's last question needs somebody to look at a window, and nothing in the tree opens one to look at

    --dcomp-demo puts the visual and a WPF overlay on screen in the arrangement the design proposes, and says what each colour means.

    PP284 · d92bcca
  573. nothing asks whether a WPF window's own HWND accepts a DirectComposition target, which PP163's design assumes

    a WPF window's own HWND takes the target and the tree Commits, so the compositor half of PP163's option survives the window it would run in.

    PP283 · a734c9d
  574. PP281 built the DirectComposition path with the visual on top of the window, the arrangement that hides PP10's overlay

    the probe takes the topmost flag and both arrangements Commit, including the one that puts the video behind PP10's overlay.

    PP282 · 1ea0807
  575. PP163 names DirectComposition the only way out that keeps PP10's overlay, and never built the path to see if it holds

    the path is built to Commit and it succeeds on a ten-bit composition swapchain, and mingw's dcomp.h forced the shim's one C++ file.

    PP281 · 0a26a80
  576. a line-count premise is prose, so nothing rechecks it and two of seven no longer match the tree

    every line count the backlog states about a file is now checked against the file, and the four that had drifted are corrected.

    PP280 · 582cd39
  577. a one-segment drift path is recognised by existing, so deleting roadkeep.toml or package.cmd leaves the corpus silently

    the five root files are named and tested on membership, so one going missing fails by name, and a constant naming an undeclared one is reported.

    PP279 · 022a9a4
  578. the corpus guard sweeps only paths starting gui\, so every drift source outside it is held by a hand-written list

    the corpus is reflected against the checkout instead of filtered on a prefix - 17 hand-listed paths became 58 found ones, and a literal is now refused.

    PP278 · 089d4e8
  579. the installer keeps upstream's AppId, so it upgrades an installed chiaki-ng in place rather than sitting beside it

    an AppId and an install name of this port's own, held against the assembly rather than a literal.

    PP277 · a0e6b49
  580. a drift locator returns the first match walking up, so a name that also exists under app\ resolves to the wrong file

    one walk finds the root and every repository path is built from it, proved on a tree with a decoy nearer the caller than the real file.

    PP276 · 20b59ad
  581. .gitignore ignores scripts/chiaki-ng.iss, which this port maintains by hand rather than generates

    the inherited rule deleted; git add -A stages the script's removal with no message, and two assertions now read the root's ignore list.

    PP275 · 003556f
  582. the Inno Setup script packages ..\chiaki-ng-Win\chiaki.exe, a path no build creates and a client that is off

    the script points at PP273's payload, ISCC compiles it to a 92 MB installer at 1.10.0 read off the exe, and three assertions hold the spellings.

    PP274 · a587955
  583. nothing assembles what an installer would ship, so the native libraries the host loads beside itself are never packaged

    package.cmd walks the payload from the resolver's own table and proves it under TEMP, where no checkout can answer for a DLL it missed.

    PP273 · cf021b6
  584. nothing counts the shipped lines that carry no assertion, so the rule is a sentence rather than a gate

    the shipped tasks no assertion names, counted against a ceiling that may fall and not rise.

    PP38 · d6ac72d
  585. the only CI job is the roadkeep lint gate, so no test result can turn a branch red

    both suites fail the job that builds, and their results are kept from the run that goes red.

    PP36 · 62ec429
  586. 3242 lines of crypto over OpenSSL sit between a registration and a session

    rpcrypt and gkcrypt both run on the base class library and a hand-written GHASH, agreeing with the C on every vector and every path.

    PP26 · b5f6f56
  587. every CI workflow was deleted, so nothing builds, signs or packages the application

    MSVC and vcpkg on a runner, with every path the workflow names asserted.

    PP22 · 014065b
  588. a drift check whose anchor moved extracts nothing, and its negative assertions then pass

    every drift predicate must answer no to an empty file, and the sweep named seven that answered yes.

    PP272 · 5333276
  589. ninety drift locators can each answer null, and the test using one then passes without reading anything

    every locator in the assembly must find its file, and the sweep named one that never had - unblocking three checks that had asserted nothing.

    PP271 · 86f364b
  590. nothing fails when the shim the managed suite loaded is older than the sources it is built from

    a stale native library now fails the managed suite by name, and the check was proved by backdating the one this run loads.

    PP270 · d10ebf6
  591. every managed test since PP21 loads a shim the build did not make, the deploy that refreshes it being off

    the deploy refreshes the shim with the Qt client off, and PP261's reading of the encoder is now produced by calling it.

    PP269 · ba67683
  592. the candidate probe is built and judged and never sent, so the layout has not been across a socket

    one probe exchange runs over a real socket, so the packet layout and the judgements are exercised rather than agreed upon.

    PP268 · d1e1e26
  593. the push socket is described and never opened, so nothing turns a frame into a notification

    the push channel is opened and read from the pieces already ported, with both places a managed socket cannot reproduce the core written down.

    PP267 · 579de39
  594. the five session calls have a transport, shapes and outcomes, and no function that performs one

    the five call sites are built on the transport and shapes already ported, and a bodyless request now carries the content type the core sends.

    PP266 · 685bf8c
  595. the port guessing settings are unported, and a refused value is indistinguishable from an accepted one

    the settings are ported with the outcome of a change kept apart from the value, and the pair a caller cannot set named.

    PP265 · 8556367
  596. the public accessors are unported, and one copies forty-six bytes into a buffer whose size it never states

    the surface is ported with what is written kept apart from what is documented, and the guard count measured across all six.

    PP264 · e395f66
  597. the event glue is unported, and the callback keeps only the last socket to fire

    the glue is ported with watching separated from succeeding, and the round's last socket stated as what the wait actually reports.

    PP263 · d6544a4
  598. the queue's ownership is unported, and its link invariant lives in the constructor not the enqueue

    the queue's ownership is ported apart from its behaviour, and the removal PP239 rests on is stated as one match per call.

    PP262 · d6cde70
  599. the diagnostic printers are unported, and a failed encode is handled then printed anyway

    the printers are ported with the encoding arithmetic computed rather than trusted, so the unreachable branch is kept and its reason stated.

    PP261 · c0f314c
  600. the upnp mappings are unported, and they are added with a lease that never expires

    the mappings are ported with what removes them stated as a value, and the address buffer's width carried so the family limit is visible.

    PP260 · 25b8d59
  601. the stun lookup is unported, and its first call uses the ipv4 servers whatever family it was asked for

    the lookup is ported with which call ran kept apart from what was asked, and the commented-out fetcher measured rather than described.

    PP259 · aebffef
  602. creating a session is unported, and a websocket that fails to connect blocks the caller forever

    the create is ported with bounded and cancellable as separate questions, so the wait that is neither is named rather than looking like the others.

    PP258 · a812f41
  603. starting a session is unported, and two of its failures return success through a shadowed variable

    the start is ported with what went wrong kept apart from what is reported, so the two failures the shadow swallows are named rather than absent.

    PP257 · a7deaec
  604. the followup receive loop is unported, and a socket error spins it with no way out

    the loop is ported with leaving and continuing as separate answers, so the one failure that only ever continues can be named.

    PP256 · 8c6c718
  605. the upnp discovery thread is unported, and its timeout writes the status outside the lock

    the discovery is ported with holding the lock and having company as separate questions, so the one writer that is neither can be named.

    PP255 · c09bae6
  606. the websocket fqdn lookup is unported, and its tokener failure reports success with no address written

    the lookup is ported with whether it failed kept apart from whether it wrote, and the two allocation failures asserted as answering differently.

    PP254 · 3c2aee5
  607. the NAT diagnosis that writes back into the session is unported, and PP251 stated a rule the repo already contradicted

    the write-back is ported as a verdict separate from its values, and PP251's restated rule is replaced by asking the generators that already existed.

    PP253 · 7e26a39
  608. the offer's address discovery is unported, and a failed local lookup is advertised as an empty address

    the discovery is ported as one function of gateway status, with what the local lookup knew kept apart from what is advertised.

    PP252 · b163361
  609. the offer's candidate layout is unported, and what it hands forward as the mapped port can be a guess

    the five layouts are ported as one function of the path taken, and slot zero's port is separated from its address so the comment's half-truth is visible.

    PP251 · 4dfea9b
  610. the session message writer's SIZING is unported - the buffer comes from a different format string than the text

    the sizing half is ported with the two format lengths measured off the source, and the reported length separated from the one actually produced.

    PP250 · d16fdfb
  611. the punch's two cleanups are unported, and one path reaches success holding a timeout

    the two endings are ported apart with their three differences named, and the path where the held code and the returned one disagree is asserted.

    PP249 · 09f438c
  612. every private-address test in the punch compares one byte too many, so none of them can match

    the classification is ported over a faithful strncmp, so the tests produce the failure from the counts the core passes instead of describing it.

    PP248 · bcdcb9c
  613. response validation is unported, and a derived candidate is exempt from every check that aborts

    the checks are ported with the derived exemption as a parameter rather than a special case, and the two aborts' error placement asserted apart.

    PP247 · ea36261
  614. reading a candidate response is unported, and the address it allocates leaks on the common path

    the intake is ported with the release accounting written down per exit, and the index bound stated as the guard it actually depends on.

    PP246 · aac531b
  615. the candidate wait loop is unported, and one of its errors says the opposite of what happened

    the wait is ported with both timeout shapes intact, and the branch claiming no socket had data now carries the assertion that one did.

    PP245 · b336015
  616. the probe send loop is unported, and the flag saying it worked only means one address resolved

    the send loop is ported with sending and clearing the flag as separate answers, and the unreachable clause kept rather than simplified away.

    PP244 · ebb4aeb
  617. the candidate probe is unported, and its arrays are sized by a count the other end chose

    the probe is ported against the same constants the reply uses, and the count the console chooses now has a measured stack size beside it rather than an adjective.

    PP243 · 1909159
  618. the accept wait is unported, and its failure names a wider wait than the one that was made

    the wait asking one action is ported and the branch reporting two is asserted as still saying so, with the acknowledgement now built by the one function that serves all three sites.

    PP242 · 0af933a
  619. two calls in the punch path have their answers thrown away, and one of them cannot always report failure

    the offer and the check whose answers are discarded, and the ids that look reused and are not.

    PP241 · 4f14a98
  620. the call that opens a hole is unported: two preconditions, an offer, and an ordering that decides who answers next

    the two preconditions, and the flag set before the answer so a second offer has an owner.

    PP240 · 5ee70b6
  621. the PS4 wakeup is unported: a discovery hop whose answer is copied into a fixed stack buffer

    the wakeup's discovery hop, with the shadowed url given two names and the buffer the network fills.

    PP239 · 76f1f99
  622. the loop answering punch requests is unported, and it reports success only by the traffic stopping

    the answering loop whose only success is a silence, and PP237's log count corrected to three.

    PP238 · 7461a47
  623. the other reply sender is the same function twice, and its failure logs an int through a string format

    the two senders asserted identical so one builder serves both, and the copy that logs an int as a string.

    PP237 · da41b8b
  624. the hole punching reply is unported: twenty-byte ids in thirty-two-byte slots, and an address xored over the session ids

    the hole punching reply built byte by byte, with the gap the ids leave and the key they double as.

    PP236 · e73873b
  625. deleting a session is unported, and both its failure messages name a different function entirely

    the delete as a custom request, and the three log messages that name the wrong call counted together.

    PP235 · 04f9640
  626. the local address pick is unported, and its rule prefers wireless over ethernet by where the walk stops

    the local address pick, where wireless wins by ending the walk, and the length nothing reads.

    PP234 · c63bd2e
  627. the session check is unported: one call, two endpoints, and a response parsed only to be thrown away

    the session check as two endpoints and four outcomes, one of which is a failure answered with success.

    PP233 · eddf7a9
  628. the fetched STUN lists are unported: two files from a third-party repository, parsed by two different rules

    the two fetched lists, cut on a colon and on a bracket, with the IPv6 failure that names the IPv4 file.

    PP232 · 497632f
  629. the websocket thread's auto-ACK of offers is unported, and its parse failure drops the notification entirely

    the offer acknowledged with its own request id, and the parse failure that drops the notification instead.

    PP231 · 5090e7b
  630. the vcpkg manifest does not carry a package the build now requires unconditionally, so CI cannot configure

    the manifest holding what the build cannot start without, compared against cmake instead of remembered.

    PP230 · 4885328
  631. no check confirms a press reaches the document and the grid, so the last link is verified by a person looking

    a press pushed through SDL's own queue, reaching the document and the rows with no pad and no window.

    PP229 · 8f7362a
  632. with no pad attached the mapping screen dies on a null mapping instead of saying there is no pad

    absence asked of the count, because a struct's zero value is not nothing and the guard beneath it could only pass.

    PP228 · 3c1b988
  633. no test raises a real click, so the handler that turns one into a row is the one thing nothing exercises

    the real window driven through UI Automation, invoked rather than clicked so it needs no foreground.

    PP227 · 1f70f8a
  634. nothing in this port has ever looked at what a screen draws, so a screen that never appeared kept the suite green

    the screen rendered off-screen to a PNG, and the background without which it is unreadable.

    PP226 · 192ebe1
  635. setting StartupUri to null throws, so the run dies inside OnStartup and no window appears at all

    the startup work queued behind the window instead of clearing a property that refuses to be cleared.

    PP225 · 0d3d195
  636. the mapping screen never appears and nothing says why, because the window it looks for does not exist yet

    the window opened by the method that fills it, and every reason for not filling it said in the window.

    PP224 · 55bdab3
  637. the mapping screen has never been on screen, and its row buttons are markup that answers no click

    the mapping screen shown against a real pad, with the click resolved as a plain method and the device opened last.

    PP223 · e770eb7
  638. with the analog opt-in off the triggers vanish from the log too, so pressing one produces no sign it was seen

    a trigger pull as one line, shown while the sticks stay out, because only the sticks flood.

    PP222 · 7f24584
  639. the axis report waits for movement, so a stick resting off centre and still reads the same as a centred one

    the axis position read instead of waited for, against the header's own band for what counts as centred.

    PP221 · 3b7aa18
  640. the capture diagnostic asks for analog and a resting stick drowns it, so the presses that matter cannot be found

    the analog opt-in off unless asked for, and the axis range printed either way, which is what tells noise from a stick off centre.

    PP220 · 9bfa66c
  641. the port never opens the device, so a pad that enumerates correctly delivers no button, axis or hat event at all

    the device opened, without which no press arrives at all, and a live capture diagnostic that says which silence it is.

    PP219 · 5ce534c
  642. nothing in the port lists SDL's devices, names one or reads its mapping string, so the screen has no pad to show

    SDL's device list read through the thread that owns it, and a --controllers report carrying the mapping string whole.

    PP218 · c2c1b16
  643. nothing joins the SDL thread, the capture and the mapping screen, so every piece of PP18 is a component with no consumer

    the mapping screen joined to the pad by draining its own request log, with the cross-thread arm the port's dedicated poll created.

    PP217 · 20d92a9
  644. the websocket loop feeds every frame to one json-c tokener, and reads a frame that yields nothing as a bad frame

    json-c's tokener measured through the shim: unfinished input is permanent, so the port parses each frame with no state between them.

    PP215 · 10f314f
  645. nothing in the port drives the push socket's frames, so the ping cadence and what each frame kind means are unstated

    the frame loop's keepalive and dispatch, where the pong deadline and the ping cadence are one subtraction asked twice.

    PP214 · 0ac939e
  646. the two session-message waits are unported, and an ack for the wrong request id has nothing that ends it

    the two session-message waits as dispositions, terminate asked before the mask, and the ack path that clears nothing.

    PP213 · 4cfda7f
  647. nothing in the port holds the websocket notifications, so every holepunch wait has no queue to walk

    the notification queue as a walk with a cursor that removes nothing, and a timeout that bounds silence rather than the call.

    PP212 · 72e0c22
  648. the mapping grid navigates by Left, Right and three-row jumps, none of which the ported focus chain answers

    the mapping grid's four directions as arithmetic over three columns whose first cell is the checkbox, that checkbox's unguarded Down reproduced.

    PP211 · f31a0b8
  649. the session create body sends the same word for three identity fields, and the account id is an int in one payload

    the four bodies a session is set up with, and what they call things.

    PP210 · 544ecce
  650. an account with no consoles is reported as out of memory, on the one error path that returns without cleaning up

    the console list, with the empty case told apart from the failing one.

    PP209 · da75f5f
  651. the session uuid is drawn from rand reseeded by the clock, so two sessions in one second share an identifier

    the shape reproduced, the collision demonstrated rather than shipped.

    PP208 · bc4a2c4
  652. eight of the session's nineteen states are never entered, and one of them is what the already-started guard tests

    the machine as a history, with the dead branches counted from the source.

    PP207 · 34364ce
  653. the wake-up URL is built in a buffer too small for most online ids, and asks for a PS4 the device list refuses

    the whole URL built here, with the clipping measured rather than counted.

    PP206 · 2d83161
  654. the probe packet leaves thirty-five of its eighty-eight bytes empty, and its reply masks the console address with sids

    what the candidate race actually puts on the wire.

    PP205 · 9cfff91
  655. the two port guessers wrap the same overflow to places far apart, and disagree on offering the port that answered

    both generators ported, with the wraps that do not match each other.

    PP204 · 5bb773f
  656. the RUDP exchange recognises what it asked for by one byte, and unwraps a wrong message instead of dropping it

    the wait matched a byte at a time, and what a short answer costs.

    PP203 · 7812446
  657. giving up on one RUDP packet acknowledges every older one, and the loop's rewind skips as many as the ack removed

    sixteen packets, twenty-five tries, and what one timeout takes with it.

    PP202 · 75253fa
  658. the RUDP size field is read twice and answers differently, and four packet types pass as one control message

    the frame under the hole punching, with its marker nibble and its recursive tail.

    PP201 · 816d40d
  659. the STUN reader believes the first mapped address it meets, and skips attributes without their padding

    twenty bytes out, an address back, and one check this port refuses to lose.

    PP200 · 6c367ad
  660. the port allocation tree looks further ahead the less it knows, and one leaf subtracts the wrong way round

    a shrinking look-ahead, a backwards leaf, an unsigned one, and PP198's check covering half its header.

    PP199 · 0a3cdb1
  661. the STUN server shuffle looks like Fisher-Yates but excludes the index it is shuffling, so the last can never stay last

    the bias reproduced and pinned, so a correction announces itself.

    PP198 · cba22d3
  662. the candidate race is settled by the first datagram to answer, not by which candidate is better

    the decision the sockets feed, ported so it can be tested without opening one.

    PP197 · f8a7f5d
  663. the message writer cannot use a JSON library, because one field must be written broken for the console to accept it

    written with format strings, broken where the console needs it, and read back whole.

    PP196 · 9167dd2
  664. the candidate reader defaults three fields the core requires, and reads the struct's key rather than the wire's

    all five fields required, mappedAddr by its wire name, one bad candidate failing the message.

    PP195 · ce340d0
  665. a malformed route MAC in a connection request becomes six zeros with no error, and one base64 field sizes by input

    six fields, a MAC that silently zeroes, and a decode not copied.

    PP194 · 5d7a022
  666. the candidate reader names three type words and the writer produces four, so the fourth is a fallback

    three words read, four written, and the fourth is the fallback.

    PP193 · a46fb0f
  667. customData1 is base64 twice, so one decode yields printable bytes of a plausible length that are not the payload

    base64 twice, and a band that tolerates four bytes it discards.

    PP192 · f1e2999
  668. PSN sends a session message field with no value at all, and the action flags skip a bit a port would fill

    the payload three layers down, and the field PSN sends broken.

    PP191 · 76435d5
  669. the push notification types are a mask a caller waits on, and six of them are namespaced strings no rule derives

    six identifiers, powers of two, and a zero that wakes nobody.

    PP190 · a83a86c
  670. the bodies the core posts are JSON only because a header overrides what POSTFIELDS would announce them as

    four posts and a delete, with the header that stops JSON being form data.

    PP189 · 1a44f10
  671. the one call site that is a WebSocket sends its subprotocol as a header and disables the timeout every other one sets

    the push socket, its fixed strings, and the transfer with no timeout.

    PP188 · 49ef2fc
  672. the three curl behaviours HttpClient lacks were a plan, so each call site would still decide what curl was doing

    a transfer that fails the way curl fails, driven against a real server.

    PP187 · 427daff
  673. PP33 is sized at 420 call sites, which is the wrong number to plan a translation from and the only one anybody has

    ten behaviours behind four hundred sites, and the three that are the work.

    PP186 · 0aa4127
  674. which of the C suite's files the port answers for was an audit run by hand, right on the day it was run

    the audit as a check, and a new C case that arrives red.

    PP185 · ce00e10
  675. the two HTTP parsers have one signature and were compared nowhere, so a divergence would surface as a reply misread

    a corpus through both parsers, and nothing between them.

    PP184 · 2d82be1
  676. json-c cannot tell a null value from a missing key and the port could, so it would read a field the other client skips

    one corpus through both, and the null json-c calls nothing.

    PP183 · 9743d0a
  677. nothing held the managed side to appending the ledger rather than truncating it, or to reporting a write it could not do

    two rows where two sessions ran, and a failed write that says so.

    PP182 · 9de6cdf
  678. the seam skipped the two setters whose defaults are the ledger's never-empty rule, so a row could carry two blanks

    the two never-empty fields, which the seam could leave blank.

    PP181 · bd964de
  679. the five frame stages are carried in the ledger and nothing could fill them, so the port wrote zeros regardless

    the five stages fillable, separate from each other and from the handoff.

    PP180 · ad30856
  680. nothing holds the managed ledger row to carrying every field and no hostname, and it is the file users attach to reports

    every field carried, nothing identifying, and a check proved able to catch a leak.

    PP179 · a3ab721
  681. the ledger the two clients share replaces dangerous characters rather than escaping, and nothing held the port to it

    hostile text through the seam, and one parseable row out of it.

    PP178 · 67cc71d
  682. the baseline seam exposes only the average, which is the number its own header warns overstates and understates at once

    the percentile the average hides, reachable and asserted on the C's own numbers.

    PP177 · 5b7d14a
  683. the C suite's allocation budget is the one case the port never carried, and it is what a managed rewrite loses first

    zero bytes per packet on the managed side, and a counter proved able to fail.

    PP176 · 619136e
  684. PP163 named two ways out of the eight-bit ceiling and priced neither, so the HDR decision has no measurement

    the other path carries HDR10 at ten bits, and the obvious test for it is not one.

    PP175 · de52aa9
  685. nothing stops a second copy of a pad's size being typed back into the port, which is how the Qt client reached three

    one client, one answer, as a check rather than a claim.

    PP174 · c369722
  686. the mapping grid draws a row one button wide or two, and nothing yet draws the capture the pad drives

    the grid, the capture modal, and the slot that is drawn only when it binds something.

    PP173 · 5499bd0
  687. the mapping screen suppresses one quit per capture with a flag that puts itself back, and closes twice without a guard

    the screen's call sequence, and the two one-shots it turns on.

    PP172 · 581dc39
  688. four scaler combos share two lists and take four different defaults, and eleven switches are stored as words

    two lists behind four combos, and eleven switches spelt yes or no.

    PP171 · a5a6e42
  689. the tuning screen's hue slider is radians cut short at 6.28, and temperature carries bounds that are round in no unit

    eighteen rows in one table, with the four numbers rounding would lose.

    PP170 · 3c21fb3
  690. the renderer presets are three names for one choice, and the store's word for Custom is the empty string

    seven preset lists, five of them hiding a section behind an empty string.

    PP169 · 31f2390
  691. the colour mapping sliders repeat each row's condition, and one option is named for the function that hides it

    twenty-two rows in one table, and the three things repeating them hid.

    PP168 · 8866911
  692. the settings screen's nine tabs each exist and nothing composes them into one dialog

    the strip, the order two switches dispatch on, and the one tab that computes its own focus.

    PP167 · 7aa8ad1
  693. the Config tab reads its profile from the default store and turns verbose on by clearing one bit

    the ninth tab, the profile from the other store, and a mask that subtracts.

    PP166 · 6379cda
  694. the Remote tab decides its one button from four credentials, and its two sliders default differently

    the tab, the four values one login is, and a clamp with a floor and no ceiling.

    PP165 · ae773eb
  695. the Controllers tab stores a rumble word whose capital letter is not the label's, and an increment in hundredths

    the tab, the word a derived label loses, and the band shared with the audio path.

    PP164 · 7643d61
  696. the view tests race through WPF's static initialisation and the whole suite reports a hang, intermittently

    one runner config, and the assertion that it still reaches the runner.

    PP162 · 1e5fbb1
  697. the Keys tab derives each binding's settings key from a translatable label, and two labels contradict their enum

    the tab, its raw lookup beside PP2's declared table, and the two inverted labels named.

    PP161 · 0c2f0c5
  698. the startup harness labels a warm run cold, because the OS file cache outlives the process

    the caller states the cache, the report stamps it, and unknown compares with nothing.

    PP61 · 74bb83f
  699. Qt6 is still required to build: Core, Gui, Quick, Qml, Svg, Widgets, Concurrent and WebEngineQuick

    Qt off in the build, the port's own libplacebo moved out of its branch, and the source the drift checks read now guarded.

    PP21 · 83966ca
  700. the controller mapping screen is QML bound to the live SDL mapping strings

    the screen, its capture and the pad joined, with the device's own bindings confirmed against it.

    PP18 · d224562
  701. the renderer tuning and colour mapping screens are 2132 lines of QML over libplacebo options

    both screens, their forty labels, and the one rule these two turned out to follow.

    PP17 · 925a563
  702. the settings screen is 2984 lines of QML against 149 properties exposed from C++

    the other eight tabs, each with the rules its own store spells differently.

    PP16 · 8ae0daa
  703. the PSN login and token dialogs are 882 lines of QML wrapped around the embedded browser

    the token screen, its log, and the ask that decides what the browser clears.

    PP15 · cead813
  704. the stream HUD and the in-stream menu are QML drawn over the video and disappear with the renderer

    the menu's two inversions, the mode that is not stored, and the preset that starts at one.

    PP10 · a298270
  705. the video is presented by libplacebo into a Vulkan-backed QQuickWindow, which WPF cannot host

    libplacebo on D3D11 into a surface WPF composes, with a decoded NV12 frame to prove it.

    PP9 · 6cfc3ac
  706. PSN OAuth login runs in a QtWebEngine view, a bundled browser the WPF host has no equivalent for

    WebView2 in the slot, its rules asserted, and the user-agent forgery deleted not ported.

    PP7 · 73b33e9
  707. the Consoles tab deletes by index and unhides by MAC, and streamer mode hides the address rather than the name

    the tab, its two captions, the radio group over one setting and the two ways a row is named.

    PP160 · b161b9d
  708. PP158 shipped the Audio tab's rules with no screen to draw them on, and its device lists are the only dynamic ones

    the screen, and the one list on any tab that has to be refilled rather than assigned.

    PP159 · e27c28d
  709. four Audio tab controls carry a unit conversion the store does not show, and one of two percent sliders scales

    the tab's four unit conversions, and the empty-first-entry rule moved into one type.

    PP158 · c76ea8f
  710. the Stream tab's resolution has three representations and choosing one silently zeroes a bitrate

    the tab, its three-layer resolution and the bitrate a resolution change quietly zeroes.

    PP157 · 87f65ce
  711. the shortcut dialog writes outside the application, and carries a second copy of the PSN chain

    the dialog ported as-is, its success-only preference write and one copy of the PSN chain.

    PP156 · 873873e
  712. two display targets carry a mode and a value in one integer, and the contrast one's index order is not its value order

    the dialog, its two sentinel-carrying integers and the focus chain that moves with the mode.

    PP155 · 055e439
  713. the one function that edits the bitstream is positioned by the reader, and nothing compares where a managed one writes

    the rewriter transcribed and compared byte for byte at every prefix, guard included.

    PP154 · c6f97a0
  714. the slice-header parsers decide every loss response, and a failed header parse silently zeroes the SPS they need

    both parsers transcribed and agreeing on the recorded NALs and every prefix of them.

    PP153 · aaeb15a
  715. the bit reader both slice-header parsers sit on is header-only, so nothing links it and nothing checks it

    the bit reader transcribed and agreed at all four alignments, whose state differs and output does not.

    PP152 · bea8523
  716. the frame timing has three fallback chains and its oracle could not reach the duration one at all

    the duration made reachable, then the timing transcribed and agreed over the whole cross product.

    PP151 · 629ccb8
  717. the reorder queue is the module a rewrite would most confidently get wrong, and nothing compares one to libchiaki's

    the queue transcribed, stepped against libchiaki's over random sequences, and two tidy-ups rejected.

    PP150 · 3b594af
  718. the port calls across the seam for two one-line comparisons, so nothing checks a managed version against them

    the comparison in managed code, agreeing with libchiaki across the whole 16-bit domain.

    PP149 · ca3e6c7
  719. the Video tab stores words that are not its labels on three of six rows, and its first decoder stores nothing

    the tab, its two combos that store something other than their labels, and the checkbox that restarts.

    PP148 · 65bd796
  720. the port has two touchpad answers in two files, so the SDL path is a third place 1079 could be typed

    one type holds both pads and names the third; the SDL path is handed its extents.

    PP147 · 84646ed
  721. json-c's accessors are lenient where System.Text.Json is strict, so holepunch.c's reads translate wrongly

    the accessors and the pointer, measured against json-c and agreeing with it in 81 cases.

    PP146 · 5452f73
  722. the login's two browserless paths have no port, so a machine WebView2 will not start on cannot log in at all

    the paste-back form, the online-id lookup, and the button only one of them gets back after a failure.

    PP145 · 3a90f75
  723. the PSN token exchange is three Qt network requests whose shapes the port has to match exactly

    The three requests, the account id and the expiry, asserted offline; the four surprising shapes are pinned against the Qt source.

    PP144 · a501537
  724. a mistyped XAML binding is not a build error, it is a control that silently shows nothing

    the console list screen loads and its bindings resolve, proved by a path that builds clean and fails red.

    PP143 · 22f89e8
  725. the port has 148 preferences and no names for them, and the names cannot be derived

    the naming is the QML's own: a convention for 63, no property for 65, and three renames that cannot be derived.

    PP142 · 0257334
  726. the registration progress dialog ignores whether the operation succeeded, and nothing says so

    the dialog stays open on both outcomes, and Escape leaves mid-registration where Return does not.

    PP141 · 53ffd36
  727. the settings screen writes on commit and nothing in the port says so

    commit-on-finish with JavaScript's lenient parse, and chiaki-render.dll deployed where its deps are.

    PP140 · 9a03e92
  728. three of the four registration dialogs have validation rules nothing in the port states

    manual host, console PIN and profile as view models, with the two PIN validators kept apart.

    PP139 · b66cc48
  729. the console list merges three sources and two of them are suppressed by different mechanisms

    the merge is a view model now, with both suppressions kept distinct and held against the Qt source.

    PP138 · 3e1b7f0
  730. the focus visual PP12 asks for exists on one of the Qt client's six controls

    Button's accent-background rule is ported and the other five are recorded as having none.

    PP137 · b0e9bee
  731. the focus chain is a decision with nothing binding it to a WPF control

    attached properties on any focusable control, with the decision split from the handler and asserted on all six.

    PP136 · ee3cbea
  732. nothing has asked WPF whether it will take the shared surface, only Direct3D

    a D3DImage reports a front buffer available at 1920x1080 for the shared surface.

    PP135 · 21ba149
  733. pl_render_image itself has never run, only the texture it would render into

    pl_render_image runs into the shared texture with a hand-built target, and there is no swapchain.

    PP134 · 1280b68
  734. nothing says libplacebo can render into the shared texture, only that the texture exists

    the shared texture wraps renderable and sampleable, which is what pl_renderer uses and all it uses.

    PP133 · 96b7a1d
  735. the D3D11-to-D3D9Ex hop D3DImage requires was accepted as a cost and never built

    a libplacebo texture opens as the surface D3DImage takes, and the share is adapter-bound both ways.

    PP132 · 4de318e
  736. PP9's renderer decision was taken from the source and nothing has ever built it

    libplacebo's D3D11 backend initialises on both adapters here, in a DLL of its own at ABI 1.

    PP131 · c7f93af
  737. the pad's sensors are fused into an orientation by a stateful filter the port has no access to

    the fusion is carried at ABI 32, and the two conversions around it are held against the Qt client.

    PP130 · e89253a
  738. SDL names a touch by touchpad and finger, the console by an id from a pool of two, and nothing maps them

    the pairs map onto the console's two slots, freed on lift, with the Qt client's three rules held.

    PP129 · a19c811
  739. the roster a hotplug event updates is keyed by identity and enumerated by position, and nothing checks it

    the reconcile keys on instance ids and filters buttonless motion pads, with the Qt list read rather than copied.

    PP128 · eaea890
  740. the 47-byte DualSense effects report is a wire format the port writes by offset and nothing checks

    the three reports built by offset, held against the Qt struct's own comments and its firmware split.

    PP127 · 1114860
  741. what a button press becomes on the mapping screen is a token two clients have to agree on

    the three tokens and the three rules around them, held against the Qt client's own source.

    PP126 · 3bdb1c2
  742. takion's send buffer decides what gets retransmitted and the port drove none of it

    six properties across the seam, the serial-order wrap included, and the double free on a refused push is gone.

    PP125 · 3fbbfc9
  743. nothing the port sends upstream is checked, and the congestion report is recorded twice

    the fifteen bytes match before and after the MAC, and every field is asserted to change them.

    PP124 · 99a13ee
  744. the only end-to-end recording in the tree, 24 real video packets, is checked by nothing in the port

    all 24 packets parse and decrypt to their recorded NALUs, and both the block offset and the crypt index are asserted negatively too.

    PP123 · fb62692
  745. the four bitstream cases that parse a truncated packet are recorded and the port drove none

    all four are xUnit cases now, and the overrun check goes red when the length is believed rather than checked.

    PP122 · b13334b
  746. eight of test/rpcrypt.c's nine recorded cases are unchecked, four of them a whole console generation

    the registration schedule is checked on both generations now, with the PIN and the key offset each proven to matter.

    PP121 · eaa6f15
  747. the GMAC that authenticates every takion packet has four recorded vectors and the port checks none

    the shim carries GMAC at ABI 27, and all four recorded vectors are xUnit cases now.

    PP120 · b93f4bb
  748. the registration request head is regist.c's snprintf, and its request line carries HTTP/1.1 twice

    the head is formatted in managed code now, doubled request line included, held against regist.c's own strings.

    PP119 · 4e5a6da
  749. SDL has no thread of its own, so its event pump has nowhere to run but the dispatcher

    SDL owns a thread from init to quit, at Qt's 4ms interval, where the hotplug window lives.

    PP118 · ed161cd
  750. loading the portable tree's SDL2.dll does not return, so the managed host cannot call SDL at all

    the resolver puts the portable tree on the process search path, and sets the error mode so a failed load reports instead of waiting on a dialog nobody can see.

    PP117 · 3107c77
  751. the frame timing fallbacks run only from the C suite, so nothing managed knows when a decoded frame is due

    all three timing fallbacks answer from managed code, with ffmpeg's AVFrame kept on the side of the seam that owns it.

    PP116 · 2bdddf8
  752. the registration request runs only from the C suite, so nothing managed can pair a console

    the whole recorded registration payload is produced from managed code byte for byte, with the PIN shown to key it.

    PP115 · 889136a
  753. the packet parse and the frame delivery still take arrays, so the hot path allocates where the C one does not

    parsing a packet header allocates nothing per packet, measured, and the receiver's one-frame limit is stated where it bites.

    PP114 · a47fa2c
  754. nothing on the managed side of the seam is measured against the zero-allocation budget PP44 set for the transport

    the span path through the frame processor allocates zero bytes per packet, measured, against 2202 for the array one it exists to replace.

    PP113 · 6b9ea4f
  755. the frame processor runs only from the C suite, so nothing managed can turn units into a frame or drive FEC

    units become frames from managed code, with reconstruction driven and the stage accounting asserted, under eleven assertions.

    PP112 · 900ff05
  756. the key position expansion and the AV packet header run only from the C suite, so a managed transport has neither

    the key position ladder and a recorded AV packet header parse from managed code, the payload named by offset rather than pointer.

    PP111 · 8f06988
  757. the bitstream parser runs only from the C suite, so nothing managed can tell an I frame from a P frame

    both codecs' recorded headers and slices parse from managed code, reference rewriting included, out of the C suite's own vectors.

    PP110 · ffd6414
  758. the two reorder queue functions with defects in them are the two the suite never calls

    peek and drop are covered by the C suite for the first time, pinning the behaviour PP107 names so a fix has to change a test.

    PP109 · bae24f3
  759. the reorder queue runs only from the C suite, so a managed transport would rebuild its window from scratch

    the window, both drop strategies and the offset-not-sequence-number indexing run from managed code under twelve assertions.

    PP108 · ca1b342
  760. sequence number comparison is two inline functions in a C header, so a managed transport would spell them as integers

    both comparisons answer from managed code across all 65536 values twice, with the divergence from a plain integer compare measured.

    PP106 · 97da219
  761. chiaki_ecdh_derive_secret is handed the console's signature and the handshake key and reads neither

    reachability pinned as five facts; the port matches libchiaki, refusing nothing.

    PP105 · 6e364f8
  762. the recorded key agreement and the session key stream run only from the C suite

    the recorded ECDH exchange and the key stream at its recorded position run from managed code, out of the C suite's own vectors.

    PP104 · 9775999
  763. the 3081 lines of recorded erasure cases run only from the C suite, so a managed FEC would have no judge

    all sixty-four recorded erasures decode from managed code, parsed out of the C suite, with a misdirected erasure proving the decode does work.

    PP103 · f14c24f
  764. a discovery reply parses in place, so every field of a parsed console points into the datagram it came from

    a reply crosses as a console whose strings outlive the datagram, and the shim's undeclared import is held against libchiaki's definition.

    PP102 · 9efa1b0
  765. the volume step is an SDL_MixAudioFormat call, so no managed host can scale a frame without SDL

    the volume scale, its drop-at-zero and its ceiling at 128 run in managed code under six assertions.

    PP101 · d282fa7
  766. the two DualSense intensity events pack into one byte through two tables, and neither is derivable from its enum

    both intensity tables, the nibble packing and the off sentinel that gates two paths run in managed code, under ten assertions.

    PP100 · 28b3def
  767. the three latches between the pads and the wire are QTimer state on a QObject, so nothing managed can reproduce a press

    the input block, the shortcut chord and the dpad-touch gate run in managed code, and pads merge through libchiaki's own union.

    PP99 · 7042708
  768. the haptics-to-rumble fold wraps at full scale, so the loudest frame tells the pad to rumble at zero

    all five intensity branches narrow through one saturating call in both clients, so the loudest frame is the strongest rumble.

    PP98 · 02a8ed6
  769. the haptics-to-rumble fold is SDL and a controller list, so no managed host can tell a PS4 pad what to feel

    a haptics frame folds to a rumble strength in managed code, with the floor, the ladder and the nine-bit minimum, under nine assertions.

    PP97 · ccc752c
  770. the microphone ring is a second copy of the audio output ring, fifty lines that differ in one bound

    the port carries one ring for both paths, the capture drain being the same read with no target, under twenty assertions.

    PP96 · f068e0c
  771. the audio output ring is a QMutex around SDL, so no managed host can queue a frame without both

    the drop-oldest ring, its seam-bounded reads and its once-per-patch overflow report run in managed code under sixteen assertions.

    PP95 · 20c0f77
  772. the dpad-as-touchpad gesture is a QTimer state machine, so no managed host can drive a finger with it

    the gesture's priority, its edge starts and both clamps run in managed code against a real controller state, under eleven assertions.

    PP94 · 7b5a941
  773. the keyboard and mouse paths are QKeyEvent and QMouseEvent, so no managed host can move a stick or a finger

    bindings and touchpad coordinates reach a real ChiakiControllerState from managed code, under thirteen assertions including both touchpad shapes.

    PP92 · 806d24c
  774. std::clamp's arguments are transposed in both touch paths, so a drag past the window edge is never clamped

    both clients clamp the value and not the literal, so a drag off the window stops at the edge of the touchpad instead of past it.

    PP91 · 9cbdd42
  775. the baseline ledger both builds are compared with has no managed writer, so the port contributes no rows

    the .NET host fills libchiaki's own baseline record and appends it with libchiaki's own formatter, with the schema pinned against the shim.

    PP90 · e16f281
  776. the session log's name and its sanitiser are QDateTime and QRegularExpression, so no managed host can write one

    the log name, its rotation and all nine sanitiser rules are managed code, asserted against six filenames the Qt build left on disk.

    PP89 · c69e82c
  777. the log sanitiser leaves the tail of a compressed IPv6 address in a file users paste into issues

    both clients now redact a compressed address whole, from one pattern text the selftest holds them to character for character.

    PP88 · d5bea20
  778. the video and audio sample callbacks are the last uncrossed part of the seam, and nothing offline can drive one

    a frame reaches a managed handler as a span over libchiaki's own buffer, driven with no console, no renderer and no decoder.

    PP87 · 0675ce1
  779. the controller state is 21 scalars and a touch array, and nothing managed can put one into a session

    a controller state built in C crosses by handle and comes back equal by chiaki_controller_state_equals, under fifteen assertions.

    PP86 · 74211de
  780. the session thread and its event callback are unreached, so nothing managed can hear a session end

    start, the event callback and join are reachable from .NET, and a quit off the session thread arrives at a managed handler under seven assertions.

    PP85 · 816be4e
  781. nothing managed has called chiaki_lib_init or built a ChiakiSession, so the lifecycle has no first end

    chiaki_lib_init and chiaki_session_init are reachable from .NET over an opaque connect-info builder, under twelve assertions and no console.

    PP84 · 77ff962
  782. the 22 callbacks libchiaki takes are uncrossed in the direction it calls them, so nothing above the seam can be built

    a managed handler now receives libchiaki's log callback through an UnmanagedCallersOnly thunk and a GCHandle, under ten assertions including one across a forced collection.

    PP83 · 2e4879c
  783. the 148-row preference table was extracted from settings.cpp once and nothing re-checks it

    the extraction runs as a check now, both ways, and the first audit found the 148 rows correct.

    PP82 · 4bbe788
  784. the store reader knows registered_hosts and none of the other three arrays beside it

    hidden hosts, manual hosts and controller mappings are read, both spellings of a mapping key included, off a store written in QSettings' own array shape.

    PP81 · 3ebd184
  785. picking "none" in the decoder setting fails the session instead of decoding in software

    chiaki_decoder_choice answers software for none and never returns the literal, so the caller's existing software mapping carries it to a stream that starts.

    PP78 · cea048b
  786. a screen ported into code-behind can only be exercised by opening a window

    the first view model is the registration dialog, nineteen assertions and not one window.

    PP37 · 9d133cd
  787. 5512 lines of munit tests cover the modules this port rewrites, and nothing in a managed tree runs them

    every module's recorded vectors are xUnit cases now, one per case, over the readers that parse the C.

    PP35 · fa5f7ab
  788. the threading and logging layer exists to paper over pthreads and Win32, an abstraction .NET does not need

    the shim is deleted, not translated; only the predicate wait needed writing, and its deadline is asserted.

    PP34 · ebfe8e3
  789. the wire format is generated by nanopb, a C generator with no managed output

    both generators encode and decode a bang for each other, callback-backed string and bytes fields included, from one checked-in .proto.

    PP25 · 1ff76f0
  790. the build is CMake with vcpkg, so Visual Studio opens a folder rather than a solution

    the tree is a solution: Visual Studio opens ChiakiNg.slnx, compile.cmd builds through it, and Block F's components add their projects to it.

    PP24 · 9000395
  791. the confirm, remind, display, steam shortcut and dialog host screens are still QML

    the host: back rejects and closes where escape only closes, and accept closes nothing at all.

    PP19 · 92fa9b1
  792. registration, manual host, console PIN and profile dialogs are QML with their own validation

    Registration is one dialog on a path and three reached from elsewhere; the identifier is text for one console and eight decoded bytes for the rest.

    PP14 · bb41d77
  793. the console list, the front door of the application, is QML bound to the discovery model

    The row actions and the auto-connect screen; removing branches three ways and one of them is silence, and the exit outlasting the grace is load-bearing.

    PP13 · 3a37d20
  794. the six custom QML controls carry the theme, and gamepad focus navigation is built into them

    the chain, its binding and the focus visual; the theme is ThemeMode and there is no vocabulary to subclass.

    PP12 · 44efc9d
  795. controller input is SDL wired into Qt events, and 950 lines of it decide what a button does

    the input path is off Qt: thread, mappings, effects, roster, touchpad, motion and now the rumble routing.

    PP8 · 59d4827
  796. console discovery and wake use QUdpSocket, so the console list has no source in a Qt-free host

    the service, its socket, its search timer and its reply callback all run against a loopback that answers, so no console is needed to prove the path.

    PP6 · 8f67375
  797. streamsession.cpp drives the session through Qt signals and QThread, so a session cannot run without Qt

    the session runs Qt-free: settings, log, input, feedback, audio and the baseline are managed, and what is left waits on a renderer or a device.

    PP5 · 655457c
  798. libchiaki is C with function-pointer callbacks and no managed binding, so no .NET code can start a session

    the seam is settled and proved: opaque handles, an UnmanagedCallersOnly thunk per callback and a C-side builder per struct, with the sample sinks filed as PP87.

    PP4 · 07100b0
  799. the store reader knows the byte-array encoding and none of the other five, so an @ nickname reads back wrong

    bool, double, uint, rect and the @ escape are read the way a probe store proved Qt writes them, under 21 more assertions.

    PP80 · a9900f2
  800. the .NET store reads the default hive, so a user with an active profile sees none of their consoles

    the reader resolves the active profile first and derives every path from it, with five assertions on the join and the third store named.

    PP79 · e67d34c
  801. the decoder choice that holds the non-NVIDIA floor is 70 lines inside a Qt method, so nothing can assert it

    the decode branch that holds the non-NVIDIA floor is now chiaki_decoder_choice in lib/, a pure function nine assertions cover, and dropping its d3d11va arm turns the suite red.

    PP77 · 5c953b8
  802. app data, session logs and key files are placed by QStandardPaths, which the .NET host does not share

    the log, shader, placebo and baseline paths are stated as the Qt paths a probe measured, with the roaming/local split and the missing Downloads folder both asserted.

    PP3 · c3321d3
  803. settings, registered consoles and the PSN token live in QSettings, which the .NET host cannot read

    the remaining 148 preferences are declared with the store, kind and default Settings reads them with, extracted from source and read back through the grammar PP80 measured.

    PP2 · 68b8b1a
  804. test.cmd runs ctest and nothing runs the .NET host's selftest, so 11 assertions sit in the tree ungated

    test.cmd runs the C suite and then the .NET host's selftest; a broken decoder that the gate could not see now exits 1, and noapp skips it out loud.

    PP75 · 1a6ba8f
  805. compile.cmd builds the Qt client and knows nothing about app/, so the tree's only gate now covers half of it

    A default compile.cmd builds app\ after the Qt client and goes red when it breaks; noapp skips it and says so, and a machine with no .NET SDK gets a note rather than a refusal.

    PP74 · 10b123e
  806. nothing rechecks a task's counted premise against the tree, and three of four spot-checked lines did not match it

    Only where a regex is the premise: PP16, PP30 and PP33 now declare a roadkeep-remaining query answering 149, 14 and 420 from the tree; the rest count lines, which no query expresses.

    PP73 · aa6d85a
  807. paced at 60fps the cuda decoder's send p99 reaches 13480us against d3d11va's 548us, and varies wildly run to run

    Contamination is out - alone in a fresh process it is the same or worse - and the clocks fall with the idleness pacing creates; vulkan and d3d11va both beat cuda at 60fps.

    PP71 · b074a84
  808. vl_vlc_valid_bits returns 32 minus a count that can exceed 32, unsigned, so an exhausted reader reports billions of bits

    vl_vlc_valid_bits clamps at zero, so the loops that trusted it terminate, held by a munit assertion at the alignment that hung and 132 tests still green.

    PP70 · 24753f3
  809. slice_set_reference_frame_h265 edits the frame from a parse that ran out of input, and reports that as success

    The write is refused when the parse overran or would reach behind the caller's buffer, held by a munit assertion at the one length of 128 measured where that changes the answer.

    PP69 · fa439bf
  810. chiaki_bitstream_header never returns on a truncated SPS, and the header it is handed comes off the network

    vl_rbsp_ue now stops at the end of the NAL and at 32 leading zeroes, and every parse that overran is refused, held by 2 munit assertions that used to hang the suite.

    PP68 · 83e8201
  811. nothing launches the suite, so running ctest means knowing it is a MinGW64 shell away and not on PATH

    test.cmd runs the suite through the MinGW shell, bounds it with a timeout so a hang is not silence, cuts one test out of a full run, and warns when the binary predates lib.

    PP67 · d30ce90
  812. spike/decode-path writes a result.json naming no adapter, so two runs cannot be told apart by the file

    Every run now names the card, read out of the d3d11va device by the DXGI route video-upscale already takes, and the two committed results carry it flagged as annotated.

    PP66 · b87aa3e
  813. d3d11va's decode submission stalls: a 103us median send against a 26990us p99, which is 1.6 frame intervals

    It is the harness, not the driver: fed at 60fps instead of as fast as it will take them, the p99 is 548us against 25124us, while the surface pool and the held frames move nothing.

    PP65 · 934ff36
  814. videoreceiver reads slice.slice_type uninitialised when the bitstream parser declined the frame, which is UB

    The slice is zeroed at declaration and the log names a type only when the parse produced one, held by 2 munit assertions over a declined frame that still reaches the callback.

    PP57 · c0d2c56
  815. compile.cmd never builds chiaki-unit, so ctest reports green against whatever binary was last linked by hand

    A default build now links chiaki-unit with the client, so ctest answers about the tree that is there; notests keeps the fast path and warns that it did not.

    PP56 · 3925374
  816. NVIDIA first has no stated contract for what happens on an AMD or Intel machine

    The floor is written down in docs/HARDWARE-CONTRACT.md - d3d11va decode, a neutral renderer, an SDR present with no NGX - and a non-goal now binds a proposal to it.

    PP51 · 19fcc85
  817. the client already prefers the cuda decoder on an NVIDIA card, and nothing measures whether that helps

    Decode does not separate the paths, the per-frame copy does, and PP71's p99 contradicts the ordering (design §PP48 superseded: the auto ordering PP71 reverses and the stall PP65 answered).

    PP48 · 5f0a8c8
  818. no .NET host exists, so a XAML window has nowhere to live

    app/ builds one self-contained 62MB ChiakiNg.exe on net10.0-windows with Fluent, opens an empty 1280x720 window, and fails its own build when app.manifest and Version drift.

    PP1 · b657d29
  819. a field can be added to the baseline record without bumping the schema, and 34b10cbf already did it

    The emitted key set is pinned per schema number, so a field added without a bump and a bump with no recorded row both turn the suite red.

    PP64 · ea45a45
  820. the tree's only build cannot include QtWebEngine, so the login screen the port replaces is compiled out

    The reference build is an MSVC configure built once for the purpose, filed as PP63: MSYS2 has no qt6-webengine and the published Windows releases carry no Chromium, measured.

    PP62 · f5b713f
  821. one baseline file accumulates records of four schemas and the comparison tool refuses all but the newest

    compare-baselines now reads every shape by the fields present rather than the schema number, compares the intersection and prints what it had to drop.

    PP60 · d36d7a3
  822. takion mallocs a queue entry and a packet buffer per video packet, so the receive step has no budget

    The receive step costs 3 allocator calls and 1754 bytes per video packet, measured through a seam the counter can reach, and the gate fails when either rises.

    PP59 · 2efb927
  823. the airspace present path runs at half the shared surface's frame rate and nothing says why

    PresentEx waits a vblank even at PresentInterval.Immediate, and stacking that on WPF's vblank-synced render tick costs one frame in two; off that tick the same child window holds 60fps.

    PP58 · c0f4e69
  824. no harness runs the old build and the new one against the same input and prints the difference

    compare-baselines reads two records and prints p50, p99 and max per stage with the delta, refusing a verdict and flagging mismatched conditions; the median arrived with it as schema 4.

    PP45 · 21746c5
  825. a managed transport allocating per packet would show up as stutter, and nothing would fail when it does

    The budget is 0 bytes per packet, measured rather than agreed: the C reassemble path allocates nothing per packet in steady state, and a munit counter plus a managed gate both fail when it rises.

    PP44 · 1cae892
  826. the present path is the largest risk in the port and would be chosen by argument rather than by measurement

    Measured on an RTX 4060: the shared surface holds 60fps at a 47us median present with a 5ms p99, while the airspace child window settles at 32fps - numbers and caveats in spike/present-path.

    PP43 · 422c744
  827. telemetry has no sink: the counters live in the window and end with it

    The row now names the configuration that produced it - decoder, requested bitrate, both loss knobs - and its field set is closed against an address ever entering it, held by 11 munit assertions.

    PP42 · c4add78
  828. only one stage of the frame path is timed, so a slower build says which build and never which stage

    Receive, reorder dwell, reassemble, FEC correct and the decoder's send-to-pull are each timed now, as min/max/mean plus a p99 from a fixed log histogram, held by 6 munit assertions.

    PP41 · 4f8ed40
  829. the vendored munit does not compile on gcc 16, so the only test target in the tree cannot be built at all

    munit is a pinned submodule, so this repo's CMake now builds that one file as the C11 it was written for, and chiaki-unit compiles on gcc 16 with 113 of 113 passing.

    PP54 · 598d4d7
  830. glass to glass latency is not among the numbers measured, and it is the one users judge on

    The record now carries a latency floor: input queueing plus the console's reported round trip, read as milliseconds against ICMP, plus the decode-to-present handoff, held by 4 munit assertions.

    PP40 · 34b10cb
  831. the numbers the stream already computes are drawn on screen and never recorded, so the Qt build leaves no baseline

    The counters the stream already computes are now written as one JSON line per session to chiaki_baseline.jsonl in the log dir, timestamped and held by 8 munit assertions.

    PP39 · 49661e9
  832. the pad stops driving the console after the window loses focus, and every layer this port can see stays healthy

    A live run now prints the pad's inputs, sensor readings and wire states per second, and names the second inputs stopped while states kept going.

    PP854
  833. no history packet reaches the wire in a live session, so a button press is the one input the console never hears

    A press from an SDL event to the wire is proven offline under a motion flood, and a live run now prints buttons seen, taken and history packets queued.

    PP853
  834. a DualSense feels what a PS4 pad feels: the console's haptic stream is folded to rumble rather than played

    A USB DualSense's endpoint is found by its vid:pid and XAudio2 plays each haptics frame on it at 3000 Hz, routed to channels two and three, with the fold switched off.

    PP851
  835. the dpad touch path uses a third pair of touchpad bounds, matching neither console's pad

    the dpad walks the connected console's own pad in both clients, so a PS4 finger stops at 942 instead of 1079.

    PP93
  836. frames arrive with network jitter and are presented against a fixed refresh, so each waits for a vblank it missed

    DXGI reads the flags and a composition swapchain takes them, so PP319's choice does not foreclose tearing - and an API answer is not a pixel.

    PP53
  837. the console sends SDR on most titles and an HDR display shows it flat, with nothing in the client trying

    It engages: 2,073,580 of 2,073,600 pixels move and it costs 29.0us a frame, 0.17% of a 60fps interval - on a driver interface of its own, not PP47's.

    PP49
  838. DLSS needs motion vectors and a depth buffer, and a decoded video stream carries neither

    DLSS cannot apply and VSR is the candidate; the plain video-processor upscale 1080p to 4K costs 262.9us on an RTX 4060, and VSR itself did not engage.

    PP47
  839. the claim that dropping the bundled browser makes startup and the installer smaller is untested

    measure-startup takes cold start, tree size and idle working set in one command and stamps webengine_present, so a row taken without Chromium cannot be read as the before.

    PP46

← PPortal's product page