Skip to content

Commit 6bd35af

Browse files
author
Grace Lee Rui Yue
committed
benchmarks: add reconstruction deck certificate
1 parent 7f5a035 commit 6bd35af

16 files changed

Lines changed: 1299 additions & 0 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
schema_version="2"
2+
task_id="reconstruction-deck-certificate"
3+
task_name="jacobian/reconstruction-deck-certificate"
4+
evaluation_kind="conjecture-probe"
5+
domain="mathematical-sciences"
6+
primary_domain="graph-theory"
7+
field="graph-reconstruction"
8+
provenance_class="authored-conjecture-probe"
9+
provenance_ref="spreadsheet:unresolved-conjecture/C-042@2026-08-06"
10+
assurance_ceiling="CHECKED"
11+
required_provider="core"
12+
environment_profile="core-python-minimal-verifier"
13+
verifier_contract_version="1"
14+
evaluation_owner="jacobian/conjecture-probes-v1"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Reconstruction deck certificate
2+
3+
Regression benchmark from retained row C-042. Its single objective is exact
4+
graph reconstruction from independently scrambled cards. The verifier checks
5+
nine full isomorphism embeddings and the sevenfold edge-occurrence identity,
6+
while accepting any globally relabeled reconstruction.
7+
8+
Difficulty is provisional Hard because the agent must coordinate nine local
9+
label spaces into one global graph without a supplied correspondence.
10+
Source context: <https://mathworld.wolfram.com/GraphReconstructionConjecture.html>,
11+
status checked 2026-08-06. One finite reconstruction is no global proof.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM python:3.12-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de
2+
COPY input.json submission_schema.json /app/
3+
WORKDIR /app
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"task_id":"jacobian/reconstruction-deck-certificate","conjecture_id":"C-042","vertex_count":9,"edge_count":15,"cards":[{"card_id":"card-0","edges":[[0,1],[0,3],[1,4],[1,6],[2,5],[2,6],[2,7],[3,4],[3,6],[4,5],[4,7]]},{"card_id":"card-1","edges":[[0,1],[0,3],[0,5],[1,2],[1,4],[1,6],[2,5],[2,7],[3,5],[3,6],[3,7],[4,7]]},{"card_id":"card-2","edges":[[0,2],[0,3],[0,4],[1,4],[1,6],[2,5],[2,7],[3,5],[3,6],[4,7],[6,7]]},{"card_id":"card-3","edges":[[0,2],[0,3],[1,4],[1,6],[2,5],[2,7],[3,4],[3,5],[3,6],[4,7],[5,7]]},{"card_id":"card-4","edges":[[0,1],[0,2],[0,3],[1,4],[1,6],[2,4],[2,5],[2,7],[3,6],[4,5],[4,7],[5,6]]},{"card_id":"card-5","edges":[[0,3],[1,2],[1,4],[1,6],[1,7],[2,3],[2,5],[2,7],[3,6],[4,5],[4,7]]},{"card_id":"card-6","edges":[[0,3],[0,7],[1,2],[1,4],[1,6],[2,5],[2,7],[3,5],[3,6],[4,5],[4,6],[4,7],[6,7]]},{"card_id":"card-7","edges":[[0,2],[0,3],[1,2],[1,3],[1,4],[1,6],[2,5],[2,7],[3,4],[3,6],[4,7],[6,7]]},{"card_id":"card-8","edges":[[0,1],[0,3],[0,6],[1,4],[1,5],[1,6],[2,5],[2,7],[3,4],[3,6],[4,7],[6,7]]}],"scope":"nine-card-reconstruction-v1"}
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
{
2+
"$defs": {
3+
"edge": {
4+
"items": {
5+
"maximum": 8,
6+
"minimum": 0,
7+
"type": "integer"
8+
},
9+
"maxItems": 2,
10+
"minItems": 2,
11+
"type": "array"
12+
},
13+
"embedding": {
14+
"additionalProperties": false,
15+
"properties": {
16+
"card_id": {
17+
"pattern": "^card-[0-8]$",
18+
"type": "string"
19+
},
20+
"deleted_vertex": {
21+
"maximum": 8,
22+
"minimum": 0,
23+
"type": "integer"
24+
},
25+
"local_to_original": {
26+
"items": {
27+
"maximum": 8,
28+
"minimum": 0,
29+
"type": "integer"
30+
},
31+
"maxItems": 8,
32+
"minItems": 8,
33+
"type": "array",
34+
"uniqueItems": true
35+
}
36+
},
37+
"required": [
38+
"card_id",
39+
"deleted_vertex",
40+
"local_to_original"
41+
],
42+
"type": "object"
43+
}
44+
},
45+
"$schema": "https://json-schema.org/draft/2020-12/schema",
46+
"additionalProperties": false,
47+
"properties": {
48+
"claimed_assurance": {
49+
"enum": [
50+
"UNVERIFIED",
51+
"COMPUTED",
52+
"CHECKED",
53+
"VERIFIED"
54+
]
55+
},
56+
"completeness": {
57+
"const": "COMPLETE"
58+
},
59+
"conclusion": {
60+
"const": "FINITE_GRAPH_DECK_RECONSTRUCTION"
61+
},
62+
"evidence": {
63+
"items": {
64+
"additionalProperties": false,
65+
"properties": {
66+
"path": {
67+
"const": "evidence/answer.txt"
68+
},
69+
"sha256": {
70+
"pattern": "^sha256:[0-9a-f]{64}$",
71+
"type": "string"
72+
}
73+
},
74+
"required": [
75+
"path",
76+
"sha256"
77+
],
78+
"type": "object"
79+
},
80+
"maxItems": 1,
81+
"minItems": 1,
82+
"type": "array"
83+
},
84+
"limitations": {
85+
"const": [
86+
"ONE_SCRAMBLED_NINE_CARD_DECK",
87+
"EXACT_CARD_EMBEDDINGS",
88+
"NO_GLOBAL_RECONSTRUCTION_CONCLUSION"
89+
]
90+
},
91+
"result": {
92+
"additionalProperties": false,
93+
"properties": {
94+
"edge_card_multiplicity": {
95+
"const": 7
96+
},
97+
"embeddings": {
98+
"items": {
99+
"$ref": "#/$defs/embedding"
100+
},
101+
"maxItems": 9,
102+
"minItems": 9,
103+
"type": "array"
104+
},
105+
"original_edges": {
106+
"items": {
107+
"$ref": "#/$defs/edge"
108+
},
109+
"maxItems": 15,
110+
"minItems": 15,
111+
"type": "array",
112+
"uniqueItems": true
113+
},
114+
"reconstruction_status": {
115+
"const": "EXACT_UP_TO_RELABELING"
116+
}
117+
},
118+
"required": [
119+
"original_edges",
120+
"embeddings",
121+
"edge_card_multiplicity",
122+
"reconstruction_status"
123+
],
124+
"type": "object"
125+
},
126+
"scope": {
127+
"const": "nine-card-reconstruction-v1",
128+
"type": "string"
129+
},
130+
"task_id": {
131+
"const": "jacobian/reconstruction-deck-certificate"
132+
}
133+
},
134+
"required": [
135+
"task_id",
136+
"conclusion",
137+
"result",
138+
"claimed_assurance",
139+
"scope",
140+
"completeness",
141+
"evidence",
142+
"limitations"
143+
],
144+
"type": "object"
145+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Reconstruct a graph from its scrambled vertex deck
2+
3+
The input contains nine independently relabeled eight-vertex cards. Recover a
4+
simple graph on vertices `0..8` with exactly 15 edges. For every card submit
5+
the deleted original vertex and a bijective `local_to_original` map of its
6+
local vertices `0..7` onto the other eight original vertices.
7+
8+
The verifier checks every mapped card edge set against the corresponding
9+
vertex-deleted subgraph. It also aggregates all mapped cards and requires every
10+
original edge to occur exactly seven times and every nonedge zero times.
11+
Relabeled isomorphic reconstructions are accepted.
12+
13+
Evidence is matching JSON with exactly `schema_version`, `task_id`, `result`,
14+
and `limitations`, at most 2 MiB. This reconstructs one finite deck only and
15+
does not prove the Reconstruction Conjecture.
16+
17+
<!-- BEGIN PUBLIC CONTRACT SUBMISSION BLOCK -->
18+
## Submission
19+
20+
Exact reconstruction of one finite deck only.
21+
22+
Write `/app/submission.json` to the exact schema in `environment/submission_schema.json`. The submission envelope requires `task_id`, `conclusion`, `result`, `claimed_assurance`, `scope`, `completeness`, `evidence`, and `limitations`.
23+
24+
- **Conclusion:** exactly `FINITE_GRAPH_DECK_RECONSTRUCTION`
25+
- **Assurance:** scoreable values are `UNVERIFIED`, `COMPUTED`, `CHECKED` (ceiling `CHECKED`); the submission schema accepts any of `UNVERIFIED`, `COMPUTED`, `CHECKED`, `VERIFIED` but only scoreable assurances receive credit.
26+
- **Scope:** the exact value declared in `submission_schema.json`
27+
- **Completeness:** `COMPLETE`.
28+
- **Evidence:** 1-1 item(s); allowed path(s): `evidence/answer.txt`; digest must match `^sha256:[0-9a-f]{64}$`.
29+
- **Evidence media types:** `text/plain`.
30+
- **Required artifact filenames:** `evidence/answer.txt`.
31+
<!-- END PUBLIC CONTRACT SUBMISSION BLOCK -->
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
from __future__ import annotations
2+
3+
import argparse
4+
import hashlib
5+
import json
6+
from pathlib import Path
7+
8+
TASK_ID = "jacobian/reconstruction-deck-certificate"
9+
LIMITATIONS = [
10+
"ONE_SCRAMBLED_NINE_CARD_DECK",
11+
"EXACT_CARD_EMBEDDINGS",
12+
"NO_GLOBAL_RECONSTRUCTION_CONCLUSION",
13+
]
14+
15+
16+
def main():
17+
parser = argparse.ArgumentParser()
18+
parser.add_argument("--root", type=Path, default=Path("/app"))
19+
root = parser.parse_args().root
20+
original = [
21+
[0, 1],
22+
[0, 2],
23+
[0, 3],
24+
[0, 8],
25+
[1, 2],
26+
[1, 4],
27+
[2, 3],
28+
[2, 5],
29+
[3, 4],
30+
[3, 7],
31+
[4, 5],
32+
[5, 6],
33+
[5, 8],
34+
[6, 7],
35+
[7, 8],
36+
]
37+
maps = [
38+
[1, 4, 7, 2, 5, 8, 3, 6],
39+
[2, 5, 8, 3, 6, 0, 4, 7],
40+
[3, 6, 0, 4, 7, 1, 5, 8],
41+
[4, 7, 1, 5, 8, 2, 6, 0],
42+
[5, 8, 2, 6, 0, 3, 7, 1],
43+
[6, 0, 3, 7, 1, 4, 8, 2],
44+
[7, 1, 4, 8, 2, 5, 0, 3],
45+
[8, 2, 5, 0, 3, 6, 1, 4],
46+
[0, 3, 6, 1, 4, 7, 2, 5],
47+
]
48+
result = {
49+
"original_edges": original,
50+
"embeddings": [
51+
{"card_id": f"card-{d}", "deleted_vertex": d, "local_to_original": maps[d]}
52+
for d in range(9)
53+
],
54+
"edge_card_multiplicity": 7,
55+
"reconstruction_status": "EXACT_UP_TO_RELABELING",
56+
}
57+
payload = {
58+
"schema_version": "1",
59+
"task_id": TASK_ID,
60+
"result": result,
61+
"limitations": LIMITATIONS,
62+
}
63+
e = root / "evidence/answer.txt"
64+
e.parent.mkdir(parents=True, exist_ok=True)
65+
e.write_text(json.dumps(payload, sort_keys=True, separators=(",", ":")) + "\n")
66+
s = {
67+
"task_id": TASK_ID,
68+
"conclusion": "FINITE_GRAPH_DECK_RECONSTRUCTION",
69+
"result": result,
70+
"claimed_assurance": "CHECKED",
71+
"scope": "nine-card-reconstruction-v1",
72+
"completeness": "COMPLETE",
73+
"evidence": [
74+
{
75+
"path": "evidence/answer.txt",
76+
"sha256": "sha256:" + hashlib.sha256(e.read_bytes()).hexdigest(),
77+
}
78+
],
79+
"limitations": LIMITATIONS,
80+
}
81+
(root / "submission.json").write_text(json.dumps(s, sort_keys=True) + "\n")
82+
83+
84+
if __name__ == "__main__":
85+
main()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
set -eu
3+
python /solution/solve.py
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
schema_version="1.4"
2+
artifacts=["/app/submission.json","/app/evidence"]
3+
[task]
4+
name="jacobian/reconstruction-deck-certificate"
5+
version="1.0.0"
6+
description="Reconstruct an exact graph from nine independently scrambled vertex-deleted cards."
7+
keywords=["graph-reconstruction","vertex-deck","isomorphism","multiplicity"]
8+
[metadata]
9+
evaluation_kind="conjecture-probe"
10+
domain="mathematical-sciences"
11+
primary_domain="graph-theory"
12+
field="graph-reconstruction"
13+
assurance_ceiling="CHECKED"
14+
answer_visibility="public"
15+
provenance_class="authored-conjecture-probe"
16+
fixture_digest="sha256:fa9628ff393ec8adcf919ebac9d4c260414ebb0318c339b64f768b022e009304"
17+
required_provider="core"
18+
author_name="Jacobian contributors"
19+
difficulty="hard"
20+
category="mathematics"
21+
tags=["difficulty-provisional","graph-reconstruction","isomorphism","offline"]
22+
case_version="conjecture-probes-v1"
23+
contamination_class="authored-finite-conjecture-probe"
24+
derivation="Derived from retained spreadsheet row C-042; the scrambled finite deck is authored and digest-pinned."
25+
[agent]
26+
timeout_sec=600.0
27+
[verifier]
28+
timeout_sec=120.0
29+
environment_mode="separate"
30+
[environment]
31+
network_mode="no-network"
32+
cpus=1
33+
memory_mb=1024
34+
storage_mb=4096
35+
[verifier.environment]
36+
network_mode="no-network"
37+
cpus=1
38+
memory_mb=1024
39+
storage_mb=4096
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM python:3.12-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de
2+
LABEL jacobian.task="jacobian/reconstruction-deck-certificate" \
3+
jacobian.checksum="a6dd6b70690d8cb40cb925d65f830d589d97508d511b2fa95cec76631303df4e"
4+
RUN python -m pip install --no-cache-dir attrs==26.1.0 jsonschema==4.26.0 jsonschema-specifications==2025.9.1 referencing==0.37.0 rpds-py==2026.6.3 typing-extensions==4.16.0
5+
COPY input.json public_contract.json test.sh verifier.py verifier_support.py /tests/
6+
COPY input.json /app/input.json
7+
RUN chmod +x /tests/test.sh && python -c 'import json; assert json.load(open("/tests/input.json"))["task_id"] == "jacobian/reconstruction-deck-certificate"'

0 commit comments

Comments
 (0)