|
| 1 | +# DMC3 SCM — real size-changing canonical rebuild and parent PAC reintegration |
| 2 | + |
| 3 | +Date: 2026-09-13 |
| 4 | +Project: DMC Rengine |
| 5 | +Branch: `reverse/mod-completion-20260907` |
| 6 | +PR: #386 |
| 7 | +Evidence class: `REAL_CORPUS_BOUND_SCM_SIZE_CHANGING_CANONICAL_REBUILD_AND_PARENT_PAC_REINTEGRATION` |
| 8 | + |
| 9 | +## Purpose |
| 10 | + |
| 11 | +Close the explicit SCM writer/integration blocker that remained after the preserve-layout alpha/translation/rotation receipts: |
| 12 | + |
| 13 | +```text |
| 14 | +hash-bound real SCM payload |
| 15 | + -> typed size-changing structural edit |
| 16 | + -> preserve-layout rejection |
| 17 | + -> deterministic canonical_rebuild |
| 18 | + -> canonical SCM reparse |
| 19 | + -> real parent PAC packed reflow |
| 20 | + -> staged reopen |
| 21 | + -> exact authored-child rematerialization |
| 22 | + -> exact preservation of every non-target physical slot |
| 23 | +``` |
| 24 | + |
| 25 | +This proves a bounded real-retail size-changing SCM reflow path. It does **not** prove NBZ delivery or original `dmc3.exe` acceptance. |
| 26 | + |
| 27 | +## Source authority |
| 28 | + |
| 29 | +Real hash-bound child: |
| 30 | + |
| 31 | +```text |
| 32 | +resource st001.scm |
| 33 | +size 887,760 bytes |
| 34 | +SHA-256 3ed787cc8a41f4c21b972664cf4174739382230ce0010f166c32c2a9e3626ba5 |
| 35 | +parent slot PAC physical slot 2 |
| 36 | +slot offset 3,485,792 / 0x353060 |
| 37 | +``` |
| 38 | + |
| 39 | +Real parent: |
| 40 | + |
| 41 | +```text |
| 42 | +resource st001.pac |
| 43 | +size 4,632,960 bytes |
| 44 | +SHA-256 43034a2e0596f744ea2d50fd785b2783d319fe5f0c7e15061e7c68b2786a57d9 |
| 45 | +format PAC |
| 46 | +slots 8 |
| 47 | +``` |
| 48 | + |
| 49 | +The child and parent are hash-bound real corpus evidence. The parent is not promoted to protected-install/original-resolver-selected provenance. |
| 50 | + |
| 51 | +## Exact CI-built runner |
| 52 | + |
| 53 | +The acceptance run used the Ubuntu artifact from PR #386 exact branch head: |
| 54 | + |
| 55 | +```text |
| 56 | +branch head SHA 08d9c7935316d9afa2991e3210a02561099a9011 |
| 57 | +workflow run 34759963639 |
| 58 | +Ubuntu Build + full CTest PASS |
| 59 | +Windows Build + full CTest PASS |
| 60 | +artifact id 10318353331 |
| 61 | +artifact name dmc-rengine-linux-fcc9df0cd25addcc288c2f0ed36f59d37fba1b06 |
| 62 | +artifact digest sha256:77b106594215287e9d7514910b016c1094288b944cd2d9d709dcf3d8c5d97c02 |
| 63 | +executable SHA e22f7ee8cf31e26758c207658e20416abcfdbef6b83ea15681c5e920b2997a86 |
| 64 | +``` |
| 65 | + |
| 66 | +The artifact filename is workflow-generated and carries the PR merge-ref SHA label; the artifact metadata separately binds it to branch head `08d9c793...`. |
| 67 | + |
| 68 | +## Controlled size-changing edit |
| 69 | + |
| 70 | +Command class: `scm-append-break-vertex-copy` / typed API `append_break_vertex_copy()`. |
| 71 | + |
| 72 | +Selected target: |
| 73 | + |
| 74 | +```text |
| 75 | +object 0 |
| 76 | +mesh 0 |
| 77 | +source vertex 166 |
| 78 | +source mesh count 167 |
| 79 | +output mesh count 168 |
| 80 | +``` |
| 81 | + |
| 82 | +The authoring operation copies one existing vertex across position/normal/UV/RGB data and appends the confirmed topology break bit `0x02`. This grows the serialized stream count while deliberately not creating an additional non-degenerate triangle. |
| 83 | + |
| 84 | +Exact observed result: |
| 85 | + |
| 86 | +```text |
| 87 | +SCM_SIZE_CHANGING_REBUILD_OK |
| 88 | +sourceVertices=167 |
| 89 | +outputVertices=168 |
| 90 | +sourceObjectVertices=167 |
| 91 | +outputObjectVertices=168 |
| 92 | +sourceSize=887760 |
| 93 | +outputSize=887776 |
| 94 | +sizeDelta=16 |
| 95 | +trianglesBefore=118 |
| 96 | +trianglesAfter=118 |
| 97 | +appendedTopology=2 |
| 98 | +reparse=PASS |
| 99 | +publication=NO_REPLACE_PASS |
| 100 | +``` |
| 101 | + |
| 102 | +`preserve_layout` rejected the stream-count change as required. `canonical_rebuild` succeeded and produced: |
| 103 | + |
| 104 | +```text |
| 105 | +size 887,776 bytes |
| 106 | +SHA-256 467734f48d96c76eb44abb395280a8743fac0ce959dbd26c5ce226f928cb9cc2 |
| 107 | +``` |
| 108 | + |
| 109 | +A second independent run with the same exact CI binary produced byte-identical authored SCM output. |
| 110 | + |
| 111 | +## Real parent PAC packed reflow |
| 112 | + |
| 113 | +The authored SCM was passed to the provenance-bound `verify-scm-reintegration` path against physical slot 2 of the source parent. |
| 114 | + |
| 115 | +Observed result: |
| 116 | + |
| 117 | +```text |
| 118 | +SCM_REINTEGRATION_VERIFIED |
| 119 | +format=PAC |
| 120 | +slot=2 |
| 121 | +targetAliases=1 |
| 122 | +sourceScmBytes=887760 |
| 123 | +authoredScmBytes=887776 |
| 124 | +sourceParentBytes=4632960 |
| 125 | +outputParentBytes=4632976 |
| 126 | +targetAliasRematerialization=PASS |
| 127 | +nonTargetPhysicalSpansExact=PASS |
| 128 | +authoredScmReparse=PASS |
| 129 | +publication=NO_REPLACE_PASS |
| 130 | +``` |
| 131 | + |
| 132 | +Rebuilt parent: |
| 133 | + |
| 134 | +```text |
| 135 | +size 4,632,976 bytes |
| 136 | +size delta +16 |
| 137 | +SHA-256 adb978f58926f0f04cd2d72fe3fc12a410d9dd9c2277819f9637cb71d4b9c5f6 |
| 138 | +``` |
| 139 | + |
| 140 | +A repeated run produced the same parent bytes and SHA-256. |
| 141 | + |
| 142 | +## Independent slot-preservation check |
| 143 | + |
| 144 | +After rebuilding, the output PAC was reopened independently and every top-level physical slot was extracted and hashed. |
| 145 | + |
| 146 | +| Slot | Source offset | Output offset | Size | SHA-256 / result | |
| 147 | +| ---: | ---: | ---: | ---: | --- | |
| 148 | +| 0 | 48 | 48 | 48 | `7efcf182f28135a3d694324ba06715ca6f6b075a028d035c89c69809df23faa5` — exact | |
| 149 | +| 1 | 96 | 96 | 3,485,696 | `976e6a6961686572c66cb6935f7e44dd450990016071604d99ff831ed9d36d5a` — exact | |
| 150 | +| 2 | 3,485,792 | 3,485,792 | 887,760 -> 887,776 | source `3ed787...` -> authored `467734...` | |
| 151 | +| 3 | 4,373,552 | 4,373,568 | 26,160 | `80b4b64318d84748c34a9e4f08065e35998e2e14e3766affb653e0f26adab77a` — exact | |
| 152 | +| 4 | 4,399,712 | 4,399,728 | 256 | `36d40827c90e7ce0750a56c0f267be6721dd2b2e4bf30f4100a0cd6ecdabc07e` — exact | |
| 153 | +| 5 | 4,399,968 | 4,399,984 | 167,888 | `500dadbc8e0db8d8d232fa04c49db437d41cbe6c50e555e24d91e758c6bcc4b0` — exact | |
| 154 | +| 6 | 4,567,856 | 4,567,872 | 1,648 | `0f3d9952b61e3d1346dc9910c9c401fc0214d0d6fb2593791e0c000cc4599f64` — exact | |
| 155 | +| 7 | 4,569,504 | 4,569,520 | 63,456 | `f0c0a2252f26d8e6f1538bc307b9c2ebf9a785e5d11b1fbe4ffc45672a3a5487` — exact | |
| 156 | + |
| 157 | +All seven non-target top-level slots are byte-identical. Slots after the changed SCM shift by exactly `+16` bytes, matching the child growth. The nested PNST in slot 5 and nested PAC in slot 7 still expand through the canonical container path. |
| 158 | + |
| 159 | +## Independent authored-child rematerialization |
| 160 | + |
| 161 | +Physical slot 2 was re-extracted from the rebuilt parent after reopen: |
| 162 | + |
| 163 | +```text |
| 164 | +size 887,776 bytes |
| 165 | +SHA-256 467734f48d96c76eb44abb395280a8743fac0ce959dbd26c5ce226f928cb9cc2 |
| 166 | +``` |
| 167 | + |
| 168 | +It is byte-identical to the authored SCM emitted before reintegration, and canonical SCM parse succeeds. |
| 169 | + |
| 170 | +## Promotion result |
| 171 | + |
| 172 | +The previous blocker **`real-retail size-changing canonical rebuild` is closed for this explicit bounded class**. |
| 173 | + |
| 174 | +The evidence now supports: |
| 175 | + |
| 176 | +- a typed size-changing SCM edit on a hash-bound real payload; |
| 177 | +- mandatory preserve-layout rejection for that stream-count change; |
| 178 | +- deterministic canonical layout reflow; |
| 179 | +- canonical reparse of the larger SCM; |
| 180 | +- real parent PAC packed reflow; |
| 181 | +- exact authored-child rematerialization after parent reopen; |
| 182 | +- byte-exact preservation of every non-target top-level physical slot. |
| 183 | + |
| 184 | +## Evidence boundary |
| 185 | + |
| 186 | +Still open and not promoted by this receipt: |
| 187 | + |
| 188 | +- provenance-bound retail texture rewrite; |
| 189 | +- broader PNST authored-delivery coverage for SCM; |
| 190 | +- retail NBZ authored-resource delivery; |
| 191 | +- original resolver selection of the authored overlay; |
| 192 | +- original `dmc3.exe` acceptance and consumer-visible effect; |
| 193 | +- universal/100% production SCM writer authority; |
| 194 | +- Capcom offline-builder equivalence. |
| 195 | + |
| 196 | +Machine receipt: `data/reverse/dmc3-scm-real-size-changing-pac-reintegration-attestation-20260913.json`. |
| 197 | + |
| 198 | +No proprietary SCM or PAC payload bytes are committed. |
0 commit comments