# Verification and packaging support for C632–C731

Prepared without writing the journal, research.py, source files, or any numbered research script. No prior archive or completed research suite was replayed.

## Frozen predecessor

The C631 record was read once from the completed preceding journal. Its canonical record hash recomputes exactly as:

`8da995fbc41dba4a3b78b59a6a6a316b712980b5052087bc963cd75e15db6351`

The new journal's first predecessor field must be:

`C631:8da995fbc41dba4a3b78b59a6a6a316b712980b5052087bc963cd75e15db6351`

Root supplies `evidence/C631_PREDECESSOR.json`, source snapshots, and `evidence/SOURCE_MANIFEST.json`. The verifier reads the manifest dynamically; it does not impose the former cycle's28-source count.

Required source names for predecessor/primary bindings:

| Snapshot filename | Binding |
|---|---|
|`C631_checkpoint.md`|`490d_Research_Checkpoint_After_C631_20260928.md` from C631's deliverable hashes|
|`C631_synthesis.md`|`490d_Chronological_Families_Integrated_Draft_20260928.md` from the same record|
|`File52c_latest.md`|Pinned primary SHA256 `a5ea84562101158b60d0cf296765d6eff38e7a2abda4e74ad1b353dfd13b9530`|

Optional `C631_reading_guide.md` is also bound when included. Number-prefixed repository snapshot names automatically map back to the same filename in workspace `project_sources`. `File51a.md` and `Strategy.md` retain the previous known mappings. For any additional aliases, root may supply `evidence/SOURCE_BINDINGS.json` with `{ "snapshot.md": "relative/current/path.md" }`, or a list of paths per snapshot. All available mapped copies must match. Bindings do not change frozen source hashes.

## Read-only verification

Completed prefix:

```bash
python3 c632_c731/evidence/verify.py --through 641 --require-current-sources --output c632_c731/VERIFY_THROUGH_C641.json
```

Final, only after C731 is complete:

```bash
python3 c632_c731/evidence/verify.py --require-current-sources --output c632_c731/VERIFY.json
```

For a separately extracted packet, run `python3 evidence/verify.py`; omit `--require-current-sources` when originals are unavailable. All snapshot hashes and the pinned primary/predecessor identities still must pass. Missing current originals are reported rather than claimed checked.

The runner replaces journal begin/finish functions in memory and sets `research.REPLAY=True`. The artifact helper computes the exact generated bytes, digest and relative path without writing. A replay audit hook rejects write-capable opens, filesystem mutations, subprocesses and network operations. It also checks the journal after replay: the entire starting prefix must remain identical; concurrent root appends are allowed only during intermediate verification and are reported. Final100-step verification requires unchanged journal bytes and no pending step.

Every selected record is checked for schema, complete hash, predecessor link, timestamp order, declared metadata, source list, inputs, outputs, findings, reassessments, and Boolean checks. Each script must call exactly one begin and finish. Placeholder-preserving inversion is independently reimplemented; nested inv calls and inversion of tracked inverse-derived values are rejected. Fresh input3430 and unrelated numeric coincidences are permitted. This is a practical guard for trusted research scripts, not a proof against deliberately reimplemented or obfuscated reversal.

The final gate requires exactly100 completed steps632–731. A default full-range run is inappropriate before completion. `--through N` supports intermediate review without making that100-step claim.

## Packaging

Root creates source snapshots and their dynamic manifest. `evidence/package.py` verifies those snapshots, creates the selected reading report, and captures the completed cycle's evidence into one ZIP without altering the journal or predecessor. Example:

```bash
python3 c632_c731/evidence/package.py --first 632 --through 651 --date 20260928
```

For a later report batch, change `--first`, while the accompanying evidence ZIP still contains the complete current cycle prefix. Final C731 packaging requires `VERIFY.json` with PASS,100 completed records, and the exact current journal digest. The packager excludes a pending record, bytecode caches, and future-step scripts. It reads payload bytes once and uses those same bytes for the hash manifest and ZIP, avoiding manifest/archive races. It fails if the journal changes during packaging, so call it between numbered research steps.

No package has been generated by this preparation task. Root retains control of checkpoint timing and persistence.

## Preparation checks

- Both helper files compile.
- The C631 predecessor record hash matches the pinned digest.
- Direct guard checks reject write-open, removal, and subprocess actions before any action occurs.
- No new research script was replayed and no unfinished100-step verification was attempted.

Once C632–C641 are complete, this reviewer can inspect and replay that first new batch separately.
