Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/LOCAL_VALIDATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ comparison, and artifact commands for every study.
| Uncertainty and grounding experiments | `python -B -m graph_synthesis.uncertainty.run --check` |
| Dependence-aware graph certificates | `python -B -m graph_synthesis.certificates.run --check` |
| Post-certificate research | `python -B -m graph_synthesis.post_certificates.run --check` |
| Post-certificate structural extensions | `python -B -m unittest discover -s graph_synthesis/post_certificate/tests -v`; `python -B -m graph_synthesis.post_certificate.run --check`; `python -B -m graph_synthesis.post_certificate.report --check --update-paper` |
| Corpus methodology | `python -B -m unittest discover -s graph_synthesis/corpus/tests -v` |
| DSPy Jev optimizer | `python -B -m graph_synthesis.dspy_jev_optimizer.verify`; `python -B -m unittest discover -s graph_synthesis/dspy_jev_optimizer/tests -v` |

Expand All @@ -61,7 +62,7 @@ authorize new paid model calls.

## Automation status

All 21 research workflows run only through explicit `workflow_dispatch` requests.
All research workflows run only through explicit `workflow_dispatch` requests.
Pull requests and pushes do not start research Actions jobs. In the Actions tab,
select a study and choose **Run workflow** on the revision to verify. Existing
replay and report checks run on the selected revision; the six historical
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/jev-multicall.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,9 @@ jobs:
python -B -m graph_synthesis.novel_mechanisms.regret --report
python -B -m graph_synthesis.certificates.report --update-paper
python -B -m graph_synthesis.post_certificates.report --update-paper
python -B -m graph_synthesis.post_certificate.report --update-paper
python -B -m graph_synthesis.render_current_paper --output "$RUNNER_TEMP/multicall-paper.pdf"
git diff --exit-code -- experiments/jev-multicall-20260918/REPORT.md manuscript/paper-current.md CURRENT_RESULTS.md graph_synthesis/risk_control graph_synthesis/reliability graph_synthesis/structural graph_synthesis/source_structural graph_synthesis/assumption_aware graph_synthesis/uncertainty graph_synthesis/frontier graph_synthesis/certificates graph_synthesis/post_certificates/RESULTS.md graph_synthesis/post_certificates/summary.csv
git diff --exit-code -- experiments/jev-multicall-20260918/REPORT.md manuscript/paper-current.md CURRENT_RESULTS.md graph_synthesis/risk_control graph_synthesis/reliability graph_synthesis/structural graph_synthesis/source_structural graph_synthesis/assumption_aware graph_synthesis/uncertainty graph_synthesis/frontier graph_synthesis/certificates graph_synthesis/post_certificates/RESULTS.md graph_synthesis/post_certificates/summary.csv graph_synthesis/post_certificate
git diff --exit-code -- manuscript/paper-current.html
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
Expand Down
80 changes: 80 additions & 0 deletions .github/workflows/post-certificate-improvements.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Post-certificate structural improvements

on:
workflow_dispatch:

permissions:
contents: read

jobs:
replay-and-validate:
runs-on: ubuntu-latest
timeout-minutes: 30
env:
PYTHONDONTWRITEBYTECODE: '1'
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: '3.12'
- name: Verify frozen protocol ancestry and bytes
shell: bash
run: |
set -euo pipefail
protocol=8187cc4e4b98e40f3146ce787b71f262b62b3abd
git merge-base --is-ancestor "$protocol" HEAD

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the frozen protocol commit in the ancestry

This verification deterministically fails for the reviewed commit: git merge-base --is-ancestor 8187cc4e4b98e40f3146ce787b71f262b62b3abd 7e79b3a54a68b822df0a27c1c7b6320d00d4680b returns 1 because the commit's sole parent is baseline 9d2e4a6, not the frozen protocol commit. Although the copied protocol bytes match, the required pre-execution ancestry is absent, so every PR run exits at this step before reaching the tests; include the protocol commit in the history rather than only copying its file.

Useful? React with 👍 / 👎.

git show "$protocol:graph_synthesis/post_certificate/PROTOCOL.md" | cmp - graph_synthesis/post_certificate/PROTOCOL.md
python -B -m graph_synthesis.verify
- name: Focused regressions and frozen replay
run: |
python -B -m unittest discover -s graph_synthesis/post_certificate/tests -v
python -B -m graph_synthesis.post_certificate.run --check
python -B -m graph_synthesis.post_certificate.report --check --update-paper
- name: Install rendering dependencies
run: |
python -m pip install -r graph_synthesis/requirements-figures.txt
sudo apt-get update
sudo apt-get install -y poppler-utils
- name: Verify committed build hashes and deterministic manuscript
shell: bash
run: |
set -euo pipefail
python - <<'PY'
import hashlib,json
from pathlib import Path
sha=lambda p:hashlib.sha256(Path(p).read_bytes()).hexdigest()
b=json.loads(Path('manuscript/paper-current.build.json').read_text(encoding='utf-8'))
assert sha('manuscript/paper-current.md')==b['source_sha256']
assert sha('graph_synthesis/render_current_paper.py')==b['renderer_sha256']
assert sha('manuscript/paper-current.pdf')==b['pdf_sha256']
PY
python -B -m graph_synthesis.render_current_paper --output "$RUNNER_TEMP/post-certificate-paper.pdf"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Verify the HTML that the PR render silently overwrites

In the pull_request path, this render command writes the independently rendered PDF to the temporary directory but render_current_paper.render() always rewrites manuscript/paper-current.html in the worktree. A PR can therefore commit stale HTML and pass because the later git diff --check only warns about conflict markers and whitespace errors, not ordinary uncommitted changes. Check the deterministic HTML before overwriting it, or fail on a nonempty worktree diff after rendering.

Useful? React with 👍 / 👎.

git diff --exit-code -- manuscript/paper-current.md manuscript/paper-current.html
git diff --check
- name: PDF structural and raster smoke check
shell: bash
run: |
set -euo pipefail
pdf="$RUNNER_TEMP/post-certificate-paper.pdf"
pdfinfo "$pdf" | tee "$RUNNER_TEMP/pdfinfo.txt"
pages=$(pdfinfo "$pdf" | awk '/^Pages:/ {print $2}')
test "${pages:-0}" -gt 0
pdftoppm -f 1 -singlefile -png -r 120 "$pdf" "$RUNNER_TEMP/paper-first"
pdftoppm -f "$pages" -singlefile -png -r 120 "$pdf" "$RUNNER_TEMP/paper-last"
test -s "$RUNNER_TEMP/paper-first.png"
test -s "$RUNNER_TEMP/paper-last.png"
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
if: always()
with:
name: post-certificate-pdf-review-${{ github.run_id }}
path: |
${{ runner.temp }}/post-certificate-paper.pdf
${{ runner.temp }}/post-certificate-paper.build.json
${{ runner.temp }}/pdfinfo.txt
${{ runner.temp }}/paper-first.png
${{ runner.temp }}/paper-last.png
if-no-files-found: warn
retention-days: 14
8 changes: 8 additions & 0 deletions CURRENT_RESULTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,11 @@ The archived root README and original manuscript are retained as part of the imm
## Five follow-up improvements (PR #13)

[Executed results](graph_synthesis/followup/RESULTS.md), [frozen protocol](graph_synthesis/followup/PROTOCOL.md), [five figures](graph_synthesis/followup/figures/), and the updated full paper distinguish same-data response replay from controlled algorithm tests. No new service calls; negative results retained; no production-policy change.

<!-- POST_CERTIFICATE_RESEARCH_START -->

## Five post-certificate structural extensions

[Executed report](graph_synthesis/post_certificate/RESULTS.md), [frozen protocol](graph_synthesis/post_certificate/PROTOCOL.md), [corrections](graph_synthesis/post_certificate/CORRECTIONS.md), and [five figures](graph_synthesis/post_certificate/figures/). Recorded target outcomes: **H1: met; H2: not met; H3: met; H4: met; H5: met.** H4 covers only endpoint scenarios; its broader continuous-interval minimax claim is unsupported, with an interior counterexample retained. Counted H1 reduction: 99.26%; local H2 reduction: 90.11%, connected-control saving: 0.00%. No fresh Jev calls, independent semantic-accuracy claim, external-system superiority or production-policy change.

<!-- POST_CERTIFICATE_RESEARCH_END -->
2 changes: 1 addition & 1 deletion graph_synthesis/followup/artifact-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"graph_synthesis/followup/figures/05_lineage.png": "b9ca0b08042385d2cffd93f2f919b5e7a366995111e5f18dc9c5c7588e6957fc",
"graph_synthesis/followup/figures/05_lineage.svg": "80cd4b81336b0e48916574c8e62236d35d91bd9308663a36b79ff575cfba4f51",
"graph_synthesis/followup/methods.py": "5a0c1f47683bcb31990096e3a625fb0fd10e1fe85f6d36190025e0d40d0ff6b6",
"graph_synthesis/followup/report.py": "c834ad187d06f057508be69b78db4306268a0724e5195d96da995782566d944d",
"graph_synthesis/followup/report.py": "90c2f7e055d9d30986ac33e256a51843aa2d21d1bab7c0a44c90e8091a7208bd",
"graph_synthesis/followup/results.json": "2a3c57a2fefcd41dc7aca97ebc42e85d6e0c0ac7b75cf7b00c7f7c399ac7fdd7",
"graph_synthesis/followup/run.py": "db8afe1bf70ec74f082bd6841d12870540446d552417b4be364e7e9ddc4527b3",
"graph_synthesis/followup/tests/test_followup.py": "86466d1356fee23205e4446c7aa1339cbfffe5544a4fda172bd2ed6a7cbdab8d"
Expand Down
22 changes: 19 additions & 3 deletions graph_synthesis/followup/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,25 @@ def update_paper(r: dict):
note = '\n## Five follow-up improvements (PR #13)\n\n[Executed results](graph_synthesis/followup/RESULTS.md), [frozen protocol](graph_synthesis/followup/PROTOCOL.md), '
note += '[five figures](graph_synthesis/followup/figures/), and the updated full paper distinguish same-data response replay from controlled algorithm tests. '
note += 'No new service calls; negative results retained; no production-policy change.\n'
if '\n## Five follow-up improvements (PR #13)' in text:
text = text.split('\n## Five follow-up improvements (PR #13)')[0]
entry.write_text(text.rstrip()+'\n'+note,encoding='utf-8')
heading = '\n## Five follow-up improvements (PR #13)'
if heading in text:
start = text.index(heading)
after = start + len(heading)
# This entry pre-dates marker-based additive studies and historically
# assumed it was last. Preserve any later research blocks/headings so
# older regeneration workflows cannot delete newly appended evidence.
candidates = [p for p in (
text.find('\n<!-- ', after),
text.find('\n## ', after),
) if p != -1]
suffix = text[min(candidates):] if candidates else ''
# Replace exactly the legacy entry, including its leading newline.
# note already carries that leading newline and suffix carries the
# separator before the next additive section, preserving bytes.
text = text[:start] + note + suffix
else:
text = text.rstrip() + '\n' + note
entry.write_text(text,encoding='utf-8')


def manifest():
Expand Down
1 change: 1 addition & 0 deletions graph_synthesis/manuscript_navigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class Study:
Study('Structural frontiers for evidence-preserving Jev graph synthesis', '1. Motivation, novelty scope and frozen design', 'Controlled algorithms and decision models', 'Review misses; four structural targets meet.'),
Study('Dependence-aware certificates for Jev graph synthesis', '1. Motivation, novelty boundary and frozen methodology', 'Saved responses; controlled algorithms', 'Forecasting misses; four controlled targets meet, with documented overlap.'),
Study('Five post-certificate improvements for Jev graph synthesis', '1. Frozen methodology and novelty boundary', 'Saved responses; controlled algorithms', 'Source-risk stacking misses; four controlled targets meet.'),
Study('Post-certificate structural extensions for Jev graph synthesis', '1. Frozen protocol and evidence boundary', 'Controlled algorithms; finite endpoint scenarios', 'H2 misses an injected-failure control; H4 passes only its endpoint-scenario target, not continuous interval minimax.', '2026-09-28'),
Study('Do additional Jev calls improve graph edges?', 'Design and evidence boundary', '3,024 fresh Jev calls', 'No added-call policy establishes a matched-volume advantage.'),
Study('Fresh Jev execution and graph-synthesis falsification', 'Evidence scope', 'Fresh same-data Jev repeat; synthetic challenge', 'Original entity improvement is unresolved on fresh macro-F1 interval.'),
Study('Follow-up: five evidence-driven improvements', 'Summary of fixed operational targets', 'Saved responses; controlled algorithms', 'Mixed target outcomes; no independent semantic validation.'),
Expand Down
72 changes: 72 additions & 0 deletions graph_synthesis/post_certificate/CORRECTIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Correction record: structural extensions in PR #33

Reviewed September 28, 2026. This record supplements the unchanged
[frozen protocol](PROTOCOL.md) at commit
`8187cc4e4b98e40f3146ce787b71f262b62b3abd`. Original implementation and results
remain inspectable at PR head `26131e887164bc59f0cb29f3512f36f98f967356`.
No frozen fixture population, seed, threshold, comparator or cap was retuned.
No fresh model calls or new scientific documents were used.

## H4: endpoint scenarios and the rejected broader interpretation

The frozen H4 Method explicitly evaluates the worst case across all interval
endpoint vectors. Its original heading and some publication prose described this
as interval minimax without making the finite scenario restriction clear.
Expected residual Bernoulli variance need not be largest at an endpoint, so that
broader continuous-interval claim is withdrawn.

The corrected implementation names the function `select_endpoint_minimax`.
`H4.primary_target_met` continues to mean the original endpoint-scenario
conjunction, with the original 128 fixtures and 16 point controls. Its measured
status is generated from the recorded booleans, separately from
`continuous_interval_claim_supported: false`.

A supplemental negative control has three singleton queries, review budget two,
and intervals `0=[0.1,0.9]`, `1=[0.3,0.4]`, `2=[0.5,0.5]`. Endpoint optimization
selects reviews `(1,2)` and reports worst residual variance `0.09`. The permitted
interior value `p0=0.5` yields `0.25`; reviewing `(0,2)` instead has continuous
worst variance `0.24`. For these singleton queries the continuous maxima follow
directly from `p*(1-p)`, maximized at the allowed point nearest `0.5`.
This falsifies continuous-interval minimax, even when the frozen endpoint target
passes. The control is labeled post-review evidence and does not enter the
original fixture count or threshold.

## Implementation and validation repairs

- H1/H5 reject over-width scopes before allocating exponential tables and check
cumulative table allocation before construction. The original counted
elimination-evaluation metric is retained separately from that allocation
guard; it is not a memory or runtime measurement.
- All graph sizes use actual deterministic min-fill ordering. Numeric vertex
distance is no longer substituted for induced width. H1 large chains now use
the promised independent prefix dynamic-programming oracle, replacing the
earlier closed-form-only check.
- H2 validates graph dependencies, computes topological order, and rejects cycles.
Accepted transactions still compare their returned state with independent full
recomputation. Each rejection control additionally requires the expected
exception; unchanged input alone is insufficient. A mutation regression proves
the benchmark fails when these exceptions are suppressed.
- Report outcomes derive from each `primary_target_met` field. Failed targets
remain failed in CSV, abstract, outcome table and current-results snippet.
Standard CSV quoting preserves the five-column schema.
- Manual validation preserves protocol ancestry/bytes and rejects any changed
deterministic manuscript Markdown or HTML after rendering. It does not publish
commits or perform model calls.

The corrected [results](results.json), [report](RESULTS.md), figures and cumulative
manuscript are regenerated from the unchanged frozen seed. Inspect individual
outcomes and limitations; separate target passes are not a semantic-success rate.

## Corrected measured outcome

The frozen H2 conjunction is **not met**: only 63 of 64 selected evaluation-failure
controls actually raise. One selected primitive has no affected derived node, so
the old control passed without injecting a failure. It remains in the original
denominator; no replacement fixture was selected. All 640 accepted transactions
match recomputation, stale/malformed controls each pass 64/64, and the local
evaluation reduction remains 90.1092529296875%. These favorable endpoints do not
rescue the failed conjunction. The exact failed control is retained in results.

H1, H3 and H5 retain their controlled target passes. H4 retains its finite endpoint
conjunction (45/128 strict endpoint gains); continuous interval minimax remains
unsupported and explicitly falsified by the supplemental control.
7 changes: 7 additions & 0 deletions graph_synthesis/post_certificate/CURRENT_SNIPPET.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<!-- POST_CERTIFICATE_RESEARCH_START -->

## Five post-certificate structural extensions

[Executed report](graph_synthesis/post_certificate/RESULTS.md), [frozen protocol](graph_synthesis/post_certificate/PROTOCOL.md), [corrections](graph_synthesis/post_certificate/CORRECTIONS.md), and [five figures](graph_synthesis/post_certificate/figures/). Recorded target outcomes: **H1: met; H2: not met; H3: met; H4: met; H5: met.** H4 covers only endpoint scenarios; its broader continuous-interval minimax claim is unsupported, with an interior counterexample retained. Counted H1 reduction: 99.26%; local H2 reduction: 90.11%, connected-control saving: 0.00%. No fresh Jev calls, independent semantic-accuracy claim, external-system superiority or production-policy change.

<!-- POST_CERTIFICATE_RESEARCH_END -->
Loading