Skip to content

Commit abacf98

Browse files
yuelgrace1810-opsGrace Lee Rui YueGrace Lee Rui Yue
authored
benchmarks: add nowhere-zero flow domain audit (#796)
* benchmarks: add nowhere-zero flow domain audit * Bound raw submission reads in PR #796 benchmark * Refresh verifier checksum * Document JSON evidence contract * Harden flow-audit verifier diagnostics * Retrigger benchmark validation * Reject ambiguous flow submissions * benchmarks: separate flow assurance diagnostics * benchmarks: split flow-audit reward output * fix(ci): allow Zarankiewicz validation subprocess * benchmarks: bind flow-audit diagnostics * Bound Tutte evidence comparison depth --------- Co-authored-by: Grace Lee Rui Yue <graceleeruiyue@mac.lan> Co-authored-by: Grace Lee Rui Yue <graceleeruiyue@Graces-MacBook-Air-2.local>
1 parent a1f5091 commit abacf98

17 files changed

Lines changed: 1373 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="tutte-flow-domain-audit"
3+
task_name="jacobian/tutte-flow-domain-audit"
4+
evaluation_kind="assurance"
5+
domain="mathematical-sciences"
6+
primary_domain="graph-theory"
7+
field="network-flows"
8+
provenance_class="authored-conjecture-probe"
9+
provenance_ref="spreadsheet:unresolved-conjecture/C-050@2026-08-07"
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: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# tutte-flow-domain-audit
2+
3+
An Assurance benchmark derived from retained row C-050. It separates the linear conservation equations for a modular flow from the nonzero-domain obligation, then requires a genuine repair on a nontrivial bridgeless graph.
4+
5+
The verifier accepts arbitrary valid flows, reconstructs all ten balances, rejects the all-zero shortcut by requiring exactly one zero in the flawed pass and none in the repair, and limits assurance to this finite graph. Difficulty is provisionally Hard because the agent must diagnose a domain omission and solve two constrained modular-flow systems; baseline calibration is pending.
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/tutte-flow-domain-audit","modulus":5,"orientation":"each listed edge is directed from its first endpoint to its second","graph":{"vertices":[0,1,2,3,4,5,6,7,8,9],"edges":[[0,1],[1,2],[2,3],[3,4],[0,4],[5,7],[7,9],[6,9],[6,8],[5,8],[0,5],[1,6],[2,7],[3,8],[4,9]]},"flawed_contract":{"checks":"Kirchhoff conservation modulo 5","omits":"every edge value must be nonzero modulo 5"},"source":{"inventory_id":"C-050","name":"Tutte's 5-Flow Conjecture","scope":"one Petersen graph verifier audit"}}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
{
2+
"$defs": {
3+
"balances": {
4+
"items": {
5+
"maximum": 4,
6+
"minimum": 0,
7+
"type": "integer"
8+
},
9+
"maxItems": 10,
10+
"minItems": 10,
11+
"type": "array"
12+
},
13+
"flow": {
14+
"items": {
15+
"maximum": 4,
16+
"minimum": 0,
17+
"type": "integer"
18+
},
19+
"maxItems": 15,
20+
"minItems": 15,
21+
"type": "array"
22+
}
23+
},
24+
"$schema": "https://json-schema.org/draft/2020-12/schema",
25+
"additionalProperties": false,
26+
"properties": {
27+
"claimed_assurance": {
28+
"enum": [
29+
"UNVERIFIED",
30+
"COMPUTED",
31+
"CHECKED",
32+
"VERIFIED"
33+
]
34+
},
35+
"completeness": {
36+
"const": "COMPLETE"
37+
},
38+
"conclusion": {
39+
"const": "CONSERVATION_ONLY_IS_UNSOUND_AND_REPAIRED"
40+
},
41+
"evidence": {
42+
"items": {
43+
"additionalProperties": false,
44+
"properties": {
45+
"path": {
46+
"const": "evidence/answer.json"
47+
},
48+
"sha256": {
49+
"pattern": "^sha256:[0-9a-f]{64}$",
50+
"type": "string"
51+
}
52+
},
53+
"required": [
54+
"path",
55+
"sha256"
56+
],
57+
"type": "object"
58+
},
59+
"maxItems": 1,
60+
"minItems": 1,
61+
"type": "array"
62+
},
63+
"limitations": {
64+
"const": [
65+
"ONE_PETERSEN_GRAPH_INSTANCE",
66+
"MODULAR_FLOW_DOMAIN_AUDIT_ONLY",
67+
"TUTTE_FIVE_FLOW_CONJECTURE_NOT_ASSESSED"
68+
]
69+
},
70+
"result": {
71+
"additionalProperties": false,
72+
"properties": {
73+
"flawed_balances": {
74+
"$ref": "#/$defs/balances"
75+
},
76+
"flawed_flow": {
77+
"$ref": "#/$defs/flow"
78+
},
79+
"repair_balances": {
80+
"$ref": "#/$defs/balances"
81+
},
82+
"repair_flow": {
83+
"$ref": "#/$defs/flow"
84+
},
85+
"zero_edge_index": {
86+
"maximum": 14,
87+
"minimum": 0,
88+
"type": "integer"
89+
}
90+
},
91+
"required": [
92+
"flawed_flow",
93+
"flawed_balances",
94+
"zero_edge_index",
95+
"repair_flow",
96+
"repair_balances"
97+
],
98+
"type": "object"
99+
},
100+
"scope": {
101+
"const": "petersen-nowhere-zero-five-flow-audit-v1",
102+
"type": "string"
103+
},
104+
"task_id": {
105+
"const": "jacobian/tutte-flow-domain-audit"
106+
}
107+
},
108+
"required": [
109+
"task_id",
110+
"conclusion",
111+
"result",
112+
"claimed_assurance",
113+
"scope",
114+
"completeness",
115+
"evidence",
116+
"limitations"
117+
],
118+
"type": "object"
119+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Nowhere-zero 5-flow domain audit
2+
3+
The frozen validator checks Kirchhoff conservation modulo five but forgets that a nowhere-zero flow must exclude the zero residue on every edge.
4+
5+
For the oriented Petersen graph, submit:
6+
7+
1. a flawed-pass modular flow with exactly one zero edge and fourteen nonzero edges;
8+
2. the complete ten-vertex signed balance vector and the zero edge index; and
9+
3. a repaired nowhere-zero 5-flow, again with the complete balance vector.
10+
11+
Flows are fifteen integers in the frozen edge order, each in `0..4`. For an edge `(u,v)`, its value contributes positively at `u` and negatively at `v`; every balance must be zero modulo five. The verifier independently recomputes balances, zero support, and all domain constraints. Alternative valid flows are accepted.
12+
13+
This finite Assurance audit demonstrates one contract defect and one Petersen-graph repair. It does not establish Tutte's 5-Flow Conjecture. Claim at most `CHECKED`.
14+
15+
<!-- BEGIN PUBLIC CONTRACT SUBMISSION BLOCK -->
16+
## Submission
17+
18+
Exact nonzero-domain audit and repair for one Petersen-graph modular flow only.
19+
20+
The evidence file must be a JSON object with exactly four fields: `schema_version` must be `"1"`, `task_id` must equal the submission task ID, `result` must be an exact JSON copy of `submission.json`'s result object, and `limitations` must be an exact JSON copy of its limitations list.
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 `CONSERVATION_ONLY_IS_UNSOUND_AND_REPAIRED`
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.json`; digest must match `^sha256:[0-9a-f]{64}$`.
29+
- **Evidence media types:** `application/json`.
30+
- **Required artifact filenames:** `evidence/answer.json`.
31+
<!-- END PUBLIC CONTRACT SUBMISSION BLOCK -->
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
from __future__ import annotations
2+
3+
import hashlib
4+
import json
5+
from pathlib import Path
6+
7+
TASK_ID = "jacobian/tutte-flow-domain-audit"
8+
EDGES = [
9+
(0, 1),
10+
(1, 2),
11+
(2, 3),
12+
(3, 4),
13+
(0, 4),
14+
(5, 7),
15+
(7, 9),
16+
(6, 9),
17+
(6, 8),
18+
(5, 8),
19+
(0, 5),
20+
(1, 6),
21+
(2, 7),
22+
(3, 8),
23+
(4, 9),
24+
]
25+
LIMITATIONS = [
26+
"ONE_PETERSEN_GRAPH_INSTANCE",
27+
"MODULAR_FLOW_DOMAIN_AUDIT_ONLY",
28+
"TUTTE_FIVE_FLOW_CONJECTURE_NOT_ASSESSED",
29+
]
30+
31+
32+
def balances(flow: list[int]) -> list[int]:
33+
result = [0] * 10
34+
for value, (source, target) in zip(flow, EDGES, strict=True):
35+
result[source] = (result[source] + value) % 5
36+
result[target] = (result[target] - value) % 5
37+
return result
38+
39+
40+
def main() -> None:
41+
root = Path("/app")
42+
flawed = [3, 2, 1, 4, 0, 1, 2, 4, 2, 1, 2, 1, 1, 2, 4]
43+
repair = [2, 1, 4, 3, 1, 1, 3, 3, 3, 1, 2, 1, 2, 1, 4]
44+
result = {
45+
"flawed_flow": flawed,
46+
"flawed_balances": balances(flawed),
47+
"zero_edge_index": flawed.index(0),
48+
"repair_flow": repair,
49+
"repair_balances": balances(repair),
50+
}
51+
payload = {
52+
"schema_version": "1",
53+
"task_id": TASK_ID,
54+
"result": result,
55+
"limitations": LIMITATIONS,
56+
}
57+
evidence = root / "evidence/answer.json"
58+
evidence.parent.mkdir(parents=True, exist_ok=True)
59+
evidence.write_text(
60+
json.dumps(payload, sort_keys=True, separators=(",", ":")) + "\n"
61+
)
62+
submission = {
63+
"task_id": TASK_ID,
64+
"conclusion": "CONSERVATION_ONLY_IS_UNSOUND_AND_REPAIRED",
65+
"result": result,
66+
"claimed_assurance": "CHECKED",
67+
"scope": "petersen-nowhere-zero-five-flow-audit-v1",
68+
"completeness": "COMPLETE",
69+
"evidence": [
70+
{
71+
"path": "evidence/answer.json",
72+
"sha256": "sha256:" + hashlib.sha256(evidence.read_bytes()).hexdigest(),
73+
}
74+
],
75+
"limitations": LIMITATIONS,
76+
}
77+
(root / "submission.json").write_text(json.dumps(submission, sort_keys=True) + "\n")
78+
79+
80+
if __name__ == "__main__":
81+
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/input.json","/app/submission.json","/app/evidence"]
3+
[task]
4+
name="jacobian/tutte-flow-domain-audit"
5+
version="1.0.0"
6+
description="Audit the missing nonzero-domain constraint in modular-flow validation."
7+
keywords=["nowhere-zero-flow","petersen-graph","domain-constraint","verifier-audit"]
8+
[metadata]
9+
evaluation_kind="assurance"
10+
domain="mathematical-sciences"
11+
primary_domain="graph-theory"
12+
field="network-flows"
13+
assurance_ceiling="CHECKED"
14+
answer_visibility="public"
15+
provenance_class="authored-conjecture-probe"
16+
fixture_digest="sha256:0e8a8c5575ca4ef0141d125af35057f916944cb9468e5fe74db7ad08769a5d21"
17+
required_provider="core"
18+
author_name="Jacobian contributors"
19+
difficulty="hard"
20+
category="mathematics"
21+
tags=["difficulty-provisional","contract-audit","modular-flow","exact-verification","offline"]
22+
case_version="conjecture-probes-v1"
23+
contamination_class="authored-source-transformation"
24+
derivation="Derived from retained row C-050; the missing nonzero-domain check is authored."
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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM python:3.12-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de
2+
LABEL jacobian.task="jacobian/tutte-flow-domain-audit" jacobian.checksum="bb52efb5fc91b40b5d56f6d40c710a5398b239b7addcc5c5dfc5ade0db58b36a"
3+
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
4+
COPY input.json public_contract.json test.sh verifier.py verifier_support.py /tests/
5+
COPY input.json /app/input.json
6+
RUN chmod +x /tests/test.sh

0 commit comments

Comments
 (0)