| 1 | # Structcopy preservation fixture |
| 2 | |
| 3 | Captured through the real public command dispatcher at upstream commit |
| 4 | `6ce2d2e245fd89b93c232fbdf2ac3d6b6b8c12a5`, before FEAT-026 production edits, |
| 5 | on Linux with stable Rust 1.98.0 and nextest CI profile, hermetic HOME and |
| 6 | RUST_MIN_STACK=16777216. Source: session_structcopy_host_tests.rs fixture. |
| 7 | The temporary capture entry point was removed; ordinary assertions only read |
| 8 | this file. It must never be regenerated from the migrated implementation. |
| 9 | |
| 10 | Only object.started_at_ms in the owned-workflow JSON string is normalized to |
| 11 | 1700000000000, preserving its original 13-byte width and receipt byte counts. |
| 12 | Other values, full canonical JSON strings and localized receipts compare exactly. |
| 13 | The fixture also records clipboard contents and result error flags; test assertions |
| 14 | independently verify no actions, unchanged session/transcript/plan, duplicate-last |
| 15 | selection, busy-plan no-write and missing workflow journal non-creation. |
| 16 | |
| 17 | Capture command and original source/log hashes are retained in the external |
| 18 | FEAT-026 MemoryBank evidence/P2 directory. Numeric test counts do not substitute |
| 19 | for these comparisons. A modified expected receipt is used as a negative control |
| 20 | and then restored byte-for-byte; ordinary tests never write their expectations. |
| 21 | |
| 22 | ## Current-main reconciliation (2026-09-30) |
| 23 | |
| 24 | Upstream added explicit host execution identities and rejects duplicate or |
| 25 | inconsistent tool-call matches. The original fixture remains byte-identical. |
| 26 | The assertion replaces only the historical `tool_duplicate_last` expectation |
| 27 | with the existing tool-unavailable receipt. Tri-state fixtures now contain one |
| 28 | result each, rather than accumulating duplicates. The upstream tests |
| 29 | `tool_copy_selects_execution_when_provider_reuses_wire_id` and |
| 30 | `tool_copy_refuses_ambiguous_or_inconsistent_identity` move unchanged into |
| 31 | `session_structcopy_regression_tests.rs` and protect the new identity rules. |
| 32 | |
| 33 | ## Localization audit reconciliation (2026-10-01) |
| 34 | |
| 35 | The integrated Chinese localization audit changed the turn label from `轮次` |
| 36 | to `回合` in three receipts and shortened the command description to |
| 37 | `将一个会话对象复制为已脱敏的 JSON;不是模型工具`. The assertion applies exactly |
| 38 | these four textual updates to the preserved capture. The fixture itself, |
| 39 | canonical JSON payloads, byte counts, English receipts, authority checks and |
| 40 | transport outcomes remain unchanged. |
| 41 |