# GAP paper-to-code and provenance map The recovered original Putnam generator at `PutnamVariants@c3bed737` makes two model calls: Prompt-A returns 1--5 `core_steps` plus mutable-slot descriptions, and Prompt-B directly returns a complete question and solution. Those exact historical prompts remain byte pinned in `prompts.py`. The manuscript describes a richer five-stage procedure. The default executable path in `paper_pipeline.py` implements those operations explicitly, using the paper-aligned prompts in `kernel_prompts.py`. It does not claim these new prompts are byte-identical to the historical two-call generator. | Paper operation | Implementation | Saved artifact | |---|---|---| | Surface rename | `SurfacePipeline.run_family` | `surface__variant.json` | | 1. Reference solution to concrete proof DAG | `PaperKernelPipeline.construct_dag` + `ProofDAG` validation | `01_proof_dag.json` | | 2. Content-free method plan | `PaperKernelPipeline.summarize_methods` | `02_method_plan.json` | | 3. Guarded replacement generation | `PaperKernelPipeline.generate_replacements` | `03_replacement_vNN.json` | | 4. Node-by-node DAG diffusion | `PaperKernelPipeline.diffuse_dag` | `04_diffused_proof_vNN.json` | | 5. Answer-to-question rendering | `PaperKernelPipeline.render_variant` | `05_rendered_variant_vNN.json` | | Five-judge verification | `PaperKernelPipeline.verify` | five call records and one iteration record per round | | Consecutive-pass protocol | `PaperKernelPipeline.verify` | `K=2` on the unchanged bundle hash | | Repair loop | `PaperKernelPipeline.build_bundle` | rerun stages 3--5 from judge feedback; at most `T=15` rounds | ## Enforced contracts - The concrete DAG may branch; every dependency must reference an earlier node, and every node must contribute to the terminal node. - The method plan contains exactly one method label per DAG node. - Every replacement records its source node, exact old/new values, mathematical guard, and guard justification. - The diffused proof must preserve node IDs, dependencies, and method labels. - The rendered solution must cite every node in order and retain the diffused terminal answer. - Every judge must discuss every node ID and every replacement slot ID. ## Per-item artifacts ```text items// input.json config.json calls/.json stages/.json iterations/.json final.json ``` Historical prompt literals are byte-locked by `PROMPT_SHA256SUMS` and `tests/test_prompts.py`. The new five-stage prompts are versioned source code and covered by schema and end-to-end tests. The OpenAI adapter does not pass a temperature argument; `o3` therefore uses its supported default.