Skip to content

Commit e97e955

Browse files
committed
docs(scm): document real size-changing PAC reintegration
1 parent 2699e8f commit e97e955

1 file changed

Lines changed: 198 additions & 0 deletions

File tree

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
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

Comments
 (0)