diff --git a/research/frontier-source-retention/README.md b/research/frontier-source-retention/README.md new file mode 100644 index 0000000000..a307b65fe0 --- /dev/null +++ b/research/frontier-source-retention/README.md @@ -0,0 +1,132 @@ +# Retention of the eight selected-frontier source pulls + +**Overlap receipt. No new κ and no ledger edit.** The selected conditional +exponent stays `605457647/200000000000`. + +## Result + +On main `32890bc5de034ab8fc93ac88ead7279a6a416d04`, the first eight entries of +`certificates/selected-result.json` `source_prs` are 5413, 5414, 5402, 5407, +5398, 5400, 4610 and 5241. Each recorded head is an ancestor of that main. +Every `research/` path named in those ledger rows is present at the pull-request +head and byte-identical there and on this main. + +The selected execution closure is a different object from that archive +retention. `certificates/frontier5413-source.json` lists 1,245 paths. All +1,245 hashes match the files on this main. Its three package roots are the +incorporated pulls 5407, 5413 and 5414. The trees of 5398, 5400 and 5402 are +not in that closure. + +| PR | Ledger disposition | Research tree vs its head | Selected-record role | +|---|---|---|---| +| 5413 | incorporated | identical | audited source head of the selected certificate | +| 5414 | incorporated | identical | `audit_pr` / `audit_head` | +| 5407 | incorporated | identical | one of the three closure roots | +| 5402 | partially reviewed | identical | named source; no autonomous credit for the eight coupled outputs | +| 5398 | partially reviewed | identical | named source; author evidence not replayed in the ledger row | +| 5400 | partially reviewed | identical | named source; same unresolved archival sentence as 5398 | +| 4610 | incorporated | identical | previous frontier; `selected-result.json` has since changed | +| 5241 | incorporated | identical | previous admission; same certificate change | + +5398 and 5400 still say that archival publication does not admit a supplier, +an outer theorem, or an improved κ. The promotion text for 5413 says the final +`+5×10^-12` over #5398/#5400 is compiler/outer headroom of the selected +exponent, not a new recursive-price saving. Both sentences are in the pinned +files. This receipt does not choose between them and does not mark either row +incorporated. + +4610 and 5241 also name `certificates/selected-result.json`, which differs from +both heads, and `docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md`, which +is absent at both heads and present now. Those two paths are successor records. +They are not edits of the retained research trees. Every one of the eight +GitHub closures is `merged_for_archive_only`. + +## Scope + +Task card `overlap-receipt`, priority revision 7, base +`32890bc5de034ab8fc93ac88ead7279a6a416d04`. Scope status is **refined**. + +The card asks what content and credit of one small named set has been retained. +The set is the selected certificate's eight-pull prefix. Scope stays inside +disposition, byte identity and the published credit sentences. + +Ordered eligible list for session r38, rebuilt on 2026-10-25 against that +main. Open handoffs from the 19 October index come first. A closed smallest +task is dropped; a distinct remainder stays. Priority-table rows whose stated +next decision is still open come next. Catalogue cards that are not already +those rows follow, skipping cards the 23 October rebuild had already dropped +and rows closed on this main or covered by an open pull request. + +1. A caller that accepts `(w, q, v_N)` without restoring the original source + slots (comment 19030045; open question 1 of + `research/p104-role-exchange-caller-audit`). +2. The cost of placing L561 on the four scratch windows before + `L546 -= L561` (comment 19030049; open question 1 of + `research/qq16-l546-head-move`). The head-move bill itself is on main. +3. `BIT.md` weighted leaves and fast header routes at the new `c` + (`uniform-transfer-audit`). The `2^{-4p}` sentence, the row-field pad, the + uniform evaluator and the continuation-stack bound are already delivered. +4. The fixed-tape visit count of one blank-return of the 9,475-row R437 + parent (`r437-carrier-integration`; open question 1 of + `research/r437-parent-spectator-blank`). +5. `coverage-law-change` on the current selected construction. The older + #1094 screens are not a constraint on this selection. +6. This package. + +Dropped before the cut: the T385 wrapper, closed by +`research/t385-r437-copy-audit`; the retiming handoff; the four-provider +rebind, on main in `research/mixed-provider-admission`; the matched +park/restore bill, covered by open #4167; the #4091 equivalence, on main in +`research/fourth-entry-ceiling-transfer` and #5280; `p104-side-correction` as +its own row, because item 1 is that consumer; and the catalogue cards dropped +in `research/rank8-u2-entrance-obstruction` (`formal-interface-lemma`, +`bit-helper-contract`, `bit-new-register-model`, +`complex-rank-shape-decoder`, `centre-path-sharing`, +`connector-alphabet-change`, and the stock, census, replay, packing and +scalar-itinerary cards). Work already delivered by this account is excluded, +including every pull through #5281 and the fork `cursor/*` branches named in +the session note. + +## Reproduce + +Python 3.12, standard library only, from the repository root. The eight +recorded heads must be present in the local Git object store. + +```sh +python3 -B research/frontier-source-retention/verify.py +python3 -B scripts/research_package.py --package research/frontier-source-retention +``` + +Expected line: + +```text +PASS_FRONTIER_SOURCE_RETENTION prs=8 identical_paths=26 manifest_files=1245 partial_but_named=5398,5400,5402 certificate_moved_after=4610,5241 no_ledger_edit=true no_new_kappa=true +``` + +The checker hashes all 1,245 manifest paths, compares each integration path +with `git diff` under `GIT_NO_REPLACE_OBJECTS=1`, and rejects a forged +`incorporated` label on 5398 and a one-path manifest mismatch. Not run: the +frontier replay, Lean, Docker, and any edit of `docs/research/pr-ledger.json`. + +## Open next questions + +1. Should a maintainer leave the 5398 and 5400 rows partially reviewed, given + that their unresolved sentence still denies an improved κ, while the + selected promotion uses them as the base of a `5×10^-12` headroom term? + The first step is to quote those two sentences together. This package + cannot edit the ledger. +2. Which fields of `certificates/selected-result.json` changed after the 4610 + head `20bb93cd990d2ff683e4d0fc56b87a42cd5d3296`? The receipt only shows that + the file differs. The first step is a key-wise diff. The blocker is that + this checker does not interpret the successor certificate. + +## Credit + +The ledger rows, the promotion note and the contributor map are the +maintainer intake records for Chris R / Clear1nsight (#5398, #5400, #5407, +#5413, #5414, #5241), Dillon Amburgey / dillona (#5402) and Cao Yifan / +intqwq (#4610), with the lineages those records already name. This package +does not replay their mathematics. + +Prepared by unpaidmoon with substantial Cursor Grok assistance. Apache-2.0. +No independent human review and no formal-kernel acceptance are claimed. diff --git a/research/frontier-source-retention/SOURCES.json b/research/frontier-source-retention/SOURCES.json new file mode 100644 index 0000000000..4ead3cad45 --- /dev/null +++ b/research/frontier-source-retention/SOURCES.json @@ -0,0 +1,42 @@ +{ + "schema_version": 1, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "files": [ + { + "path": "certificates/frontier5413-source.json", + "usage": "input", + "git_blob": "02297a45018410b9ae807a097a16c2efa2547867", + "sha256": "a24f0f9461c8625c016d4a43e381a527b820530fa886ce0231583713ada246dd" + }, + { + "path": "certificates/selected-result.json", + "usage": "input", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "docs/research/community-neutral5413-contributors.md", + "usage": "input", + "git_blob": "7102f05762378c53d17e7067496c107430ea3ba1", + "sha256": "f3476ddf94ce6821c195fff9f07b71617e39f0320ce1d3bb2be7e8d5d373b678" + }, + { + "path": "docs/research/pr-intake-evidence/pr5413-promotion/PROMOTION.md", + "usage": "input", + "git_blob": "93bcfcbf83460d7a6c069c7c238929e4cc3c3bb0", + "sha256": "9419931de95e317f5e08ffa98c86e069836b53f6438c2f413b0722377819aa44" + }, + { + "path": "docs/research/pr-ledger.json", + "usage": "input", + "git_blob": "0ef27eee22300a0a512af129a0d8778ae4af46ab", + "sha256": "30af48f6f9bb64c698feeeafcf5c68e5ff76f6175f8757ee6ff45566152d1529" + } + ] +} diff --git a/research/frontier-source-retention/TASK.json b/research/frontier-source-retention/TASK.json new file mode 100644 index 0000000000..bb1f350e7c --- /dev/null +++ b/research/frontier-source-retention/TASK.json @@ -0,0 +1,66 @@ +{ + "schema_version": 1, + "task_id": "overlap-receipt", + "priority_revision": 7, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "original_card": { + "id": "overlap-receipt", + "question": "What exact content and credit of a small named PR set has already been retained?", + "starting_points": [ + "docs/research/pr-ledger.md", + "CONTRIBUTORS.md" + ], + "methods": [ + "Compare exact heads and retained artifacts to write a source-bound disposition receipt.", + "Audit an existing receipt for missing content or predecessor attribution." + ], + "acceptance_gate": "Separate complete integration, partial retention and changed heads; make no autonomous closures.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read one small PR set in the ledger and identify exact reviewed heads and unresolved content.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Compare that set to retained artifacts; produce a complete or explicitly partial disposition receipt.", + "bottleneck_link": "Reliable overlap evidence preserves credit and prevents repeated review of already-retained material.", + "allowed_variations": [ + "One small related PR family or one existing integration receipt." + ], + "scope_change_triggers": [ + "Treating matching titles or one shared blob as proof of full incorporation." + ], + "overlap_terms": [ + "overlap receipt", + "partial integration", + "attribution" + ] + }, + "scope_status": "refined", + "actual_scope": "For the eight pull requests named first in certificates/selected-result.json source_prs, separate byte retention of each ledger integration path from the ledger disposition and from the selected-record role. Do not change any disposition.", + "scope_change_reason": "The overlap-receipt card asks for one small named PR set. This set is the selected frontier's own source_prs prefix at base 32890bc5de034ab8fc93ac88ead7279a6a416d04: 5413, 5414, 5402, 5407, 5398, 5400, 4610 and 5241. The question is retention versus disposition, not a new supplier.", + "bottleneck_link": "The selected conditional kappa cites these eight pulls. A later reader who trusts only the partially_reviewed rows would drop predecessors the selected record still names, and a reader who treats source_prs as a replay would over-claim 5398 and 5400.", + "budget_minutes": 60, + "stop_rule": "Stop after the eight-row retention table. Do not edit the ledger, do not replay the frontier, and do not promote a partially_reviewed row.", + "outcome": "partial", + "evidence": "verify.py checks ancestry, byte-identical research trees, the 1245-file frontier manifest, ledger dispositions, and the promotion and contributor sentences. It rejects a forged incorporated label on 5398 and a forged manifest mismatch.", + "author": "unpaidmoon", + "ai_assistance": "Prepared by unpaidmoon with substantial Cursor Grok assistance.", + "open_questions": [ + { + "question": "Should a maintainer leave 5398 and 5400 partially_reviewed after the 5413 promotion, or record a narrower successor disposition that still does not claim their author evidence was replayed?", + "why_it_matters": "Their ledger rows still say archival publication does not admit an improved kappa, while the selected record lists them as sources of kappa 0.003027288235.", + "first_step": "Quote the 5398 unresolved_question beside the promotion sentence that the final 5e-12 over 5398/5400 is compiler/outer headroom, and decide which sentence remains the disposition.", + "blocked_by": "This package is forbidden from editing the ledger or closing a review." + }, + { + "question": "Which bytes of the previous 4610 certificate does the current selected-result.json replace, beyond the kappa fraction?", + "why_it_matters": "The 4610 and 5241 research trees match their heads, but certificates/selected-result.json does not. The difference is a successor record, not a silent edit of those packages.", + "first_step": "Diff selected-result.json at 20bb93cd990d2ff683e4d0fc56b87a42cd5d3296 against the pinned current file and list changed keys.", + "blocked_by": "The receipt only proves the files differ. It does not interpret every changed field." + } + ] +} diff --git a/research/frontier-source-retention/VERIFY.json b/research/frontier-source-retention/VERIFY.json new file mode 100644 index 0000000000..d7aba703cd --- /dev/null +++ b/research/frontier-source-retention/VERIFY.json @@ -0,0 +1,24 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "certificates/frontier5413-source.json", + "certificates/selected-result.json", + "docs/research/community-neutral5413-contributors.md", + "docs/research/pr-intake-evidence/pr5413-promotion/PROMOTION.md", + "docs/research/pr-ledger.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Eight source PRs: merged ancestry, research-tree identity with each head, ledger disposition, 1245 manifest hashes, promotion and contributor sentences, and two rejection controls." + } + ] +} diff --git a/research/frontier-source-retention/verify.py b/research/frontier-source-retention/verify.py new file mode 100644 index 0000000000..15bf46317b --- /dev/null +++ b/research/frontier-source-retention/verify.py @@ -0,0 +1,267 @@ +#!/usr/bin/env python3 +"""Byte retention versus ledger disposition for the selected frontier's source PRs. + +No ledger edit, no frontier replay, and no new kappa. +""" +import hashlib +import json +import os +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +PARTIAL = (5398, 5400, 5402) +CERTIFICATE = "certificates/selected-result.json" +REVIEW = "docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md" + +# integration paths, in ledger order, with the git relationship to current HEAD. +# identical: present at the PR head and byte-identical on HEAD. +# changed: present at both, and the trees differ. +# added: absent at the PR head and present on HEAD. +ROWS = [ + { + "number": 5413, + "disposition": "incorporated", + "head": "0c1fa2f47fb5ea17b93a4b67063d08e49cc38e51", + "paths": {"research/coupled-helper-neutral-completion": "identical"}, + "unresolved_has": "Five inherited framework assumptions persist", + }, + { + "number": 5414, + "disposition": "incorporated", + "head": "bc37fb01c58d20e799d3299dec63e654f67d9d1b", + "paths": {"research/neutral632-independent-verification": "identical"}, + "unresolved_has": "Narrow independent screen", + }, + { + "number": 5402, + "disposition": "partially_reviewed", + "head": "3348fccea855082786d5f0fc5558b73d4974e745", + "paths": {"research/native-rank8-helper-provider": "identical"}, + "unresolved_has": "no autonomous credit for its eight coupled outputs", + }, + { + "number": 5407, + "disposition": "incorporated", + "head": "b62252c61113d2863b36ce2419aa81a07f393c42", + "paths": {"research/coupled-provider-independent-audit": "identical"}, + "unresolved_has": "Scoped independent audit accepted", + }, + { + "number": 5398, + "disposition": "partially_reviewed", + "head": "174fb211493b43a42210434083e9702b4fb7a2ce", + "paths": {"research/kappa-backward-controller-20261023": "identical"}, + "unresolved_has": "does not admit a supplier, outer theorem or improved kappa", + }, + { + "number": 5400, + "disposition": "partially_reviewed", + "head": "7ea72fb692cbfd64fea556de84327bbf88555986", + "paths": {"research/direct-backward-independent-validation": "identical"}, + "unresolved_has": "does not admit a supplier, outer theorem or improved kappa", + }, + { + "number": 4610, + "disposition": "incorporated", + "head": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "paths": { + "research/kappa-interface-round2-20261022": "identical", + "research/kappa-lean-verification-20261022": "identical", + "research/kappa-round3-audit-20261022": "identical", + "research/kappa-round3-warp-20261022": "identical", + "research/kappa-round3-warp-lean-20261022": "identical", + "research/kappa-round6-compiler-tightening-20261022": "identical", + "research/kappa-round7-4610-construction-checkpoint-20261022": "identical", + "research/kappa-round7-4610-coupled-recursion-20261022": "identical", + "research/kappa-round7-4610-frontier-review-20261022": "identical", + "research/kappa-round7-4610-independent-audit-20261022": "identical", + "research/kappa-round7-4610-phase-debt-audit-20261022": "identical", + "research/kappa-round7-4610-phase-recursion-20261022": "identical", + "research/kappa-round7-4610-review-20261022": "identical", + "research/kappa-round7-4610-scalar-contract-20261022": "identical", + "research/kappa-round7-rankone-phase-20261022": "identical", + "research/kappa-search-20261022": "identical", + "research/query-projector-interface-20261022": "identical", + "research/scalar-reorder-20261022": "identical", + "research/warp-interface-20261022": "identical", + CERTIFICATE: "changed", + REVIEW: "added", + }, + "unresolved_has": "No blocking obligation in the admitted change", + }, + { + "number": 5241, + "disposition": "incorporated", + "head": "13efb5fc5f3b7c14ec2cfa181dd9eb6480972cf2", + "paths": { + "research/final4610-independent-admission": "identical", + CERTIFICATE: "changed", + REVIEW: "added", + }, + "unresolved_has": "No blocking obligation in the admitted change", + }, +] + + +def git(args): + env = os.environ.copy() + env["GIT_NO_REPLACE_OBJECTS"] = "1" + return subprocess.run( + ["git", *args], cwd=ROOT, env=env, capture_output=True, check=False, + ) + + +def exists(spec): + return git(["cat-file", "-e", spec]).returncode == 0 + + +def relation(head, path): + at_head = exists(f"{head}:{path}") + at_now = exists(f"HEAD:{path}") + if at_head and at_now: + diff = git(["diff", "--name-only", head, "HEAD", "--", path]) + if diff.returncode != 0: + return "diff-error" + names = [line for line in diff.stdout.decode().splitlines() if line] + return "identical" if not names else "changed" + if (not at_head) and at_now: + return "added" + if at_head and not at_now: + return "removed" + return "absent" + + +def faults(ledger_by, selected, manifest, promotion, contributors): + problems = [] + prefix = [row["number"] for row in ROWS] + if selected.get("source_prs", [])[:8] != prefix: + problems.append("source_prs prefix " + str(selected.get("source_prs", [])[:8])) + if selected.get("kappa") != "605457647/200000000000": + problems.append("kappa fraction") + if selected.get("decimal") != "0.003027288235": + problems.append("kappa decimal") + if selected.get("audited_source_head") != ROWS[0]["head"]: + problems.append("audited_source_head") + if selected.get("audit_pr") != 5414 or selected.get("audit_head") != ROWS[1]["head"]: + problems.append("audit binding") + roots = [ + "research/coupled-provider-independent-audit", + "research/coupled-helper-neutral-completion", + "research/neutral632-independent-verification", + ] + if manifest.get("package_roots") != roots: + problems.append("package_roots") + files = manifest.get("files") + if not isinstance(files, dict) or len(files) != 1245: + problems.append("manifest file count " + str(len(files) if isinstance(files, dict) else None)) + files = files if isinstance(files, dict) else {} + matched = 0 + for path, digest in files.items(): + disk = ROOT / path + if not disk.is_file(): + problems.append("manifest missing " + path) + continue + actual = hashlib.sha256(disk.read_bytes()).hexdigest() + if actual != digest: + problems.append("manifest mismatch " + path) + else: + matched += 1 + if matched != 1245: + problems.append("matched manifest files " + str(matched)) + for root in roots: + if not any(path == root or path.startswith(root + "/") for path in files): + problems.append("root absent from manifest " + root) + for number in PARTIAL: + root = next(iter(ROWS[prefix.index(number)]["paths"])) + if root in files or any(path.startswith(root + "/") for path in files): + problems.append("partial package entered the execution closure " + root) + if "three-package execution closure" not in promotion: + problems.append("promotion closure sentence") + if "PR5407" not in promotion or "PR5413" not in promotion or "PR5414" not in promotion: + problems.append("promotion package names") + if "the final +5×10^-12 over #5398/#5400 is compiler/outer headroom" not in promotion: + problems.append("promotion headroom sentence") + for needle in ("[#5398]", "#5400", "[#5402]", "[#5407]", "[#5413]", "[#5414]", "[#4610]", "#5241"): + if needle not in contributors: + problems.append("contributor credit " + needle) + if "gain over\n#5398/#5400 is 5×10^-12" not in contributors: + problems.append("contributor headroom sentence") + for row in ROWS: + record = ledger_by.get(row["number"]) + if record is None: + problems.append("ledger missing " + str(row["number"])) + continue + if record.get("disposition") != row["disposition"]: + problems.append(f"{row['number']} disposition {record.get('disposition')}") + if record.get("current_head") != row["head"]: + problems.append(f"{row['number']} head") + if record.get("github_state") != "MERGED": + problems.append(f"{row['number']} github_state") + closure = record.get("closure") or {} + if closure.get("kind") != "merged_for_archive_only": + problems.append(f"{row['number']} closure {closure.get('kind')}") + merge = closure.get("merge_commit") + if not isinstance(merge, str) or git(["merge-base", "--is-ancestor", merge, "HEAD"]).returncode != 0: + problems.append(f"{row['number']} merge commit") + if git(["merge-base", "--is-ancestor", row["head"], "HEAD"]).returncode != 0: + problems.append(f"{row['number']} head is not an ancestor") + unresolved = record.get("unresolved_question") or "" + if row["unresolved_has"] not in unresolved: + problems.append(f"{row['number']} unresolved question") + locations = record.get("integration_location") + if locations != list(row["paths"]): + problems.append(f"{row['number']} integration paths") + continue + for path, expect in row["paths"].items(): + found = relation(row["head"], path) + if found != expect: + problems.append(f"{row['number']} {path} is {found}, expected {expect}") + for item in record.get("evidence") or []: + evidence = item.get("evidence") + if not isinstance(evidence, str) or not exists(f"HEAD:{evidence}"): + problems.append(f"{row['number']} evidence path {evidence}") + return problems + + +def main(): + ledger = json.loads((ROOT / "docs/research/pr-ledger.json").read_text(encoding="utf-8")) + selected = json.loads((ROOT / CERTIFICATE).read_text(encoding="utf-8")) + manifest = json.loads((ROOT / "certificates/frontier5413-source.json").read_text(encoding="utf-8")) + promotion = (ROOT / "docs/research/pr-intake-evidence/pr5413-promotion/PROMOTION.md").read_text(encoding="utf-8") + contributors = (ROOT / "docs/research/community-neutral5413-contributors.md").read_text(encoding="utf-8") + by_number = {record["number"]: record for record in ledger["pull_requests"]} + problems = faults(by_number, selected, manifest, promotion, contributors) + if problems: + print("FAIL_FRONTIER_SOURCE_RETENTION") + print("\n".join(problems)) + return 1 + forged = json.loads(json.dumps(by_number[5398])) + forged["disposition"] = "incorporated" + forged_ledger = dict(by_number) + forged_ledger[5398] = forged + forged_faults = faults(forged_ledger, selected, manifest, promotion, contributors) + if not any(item.startswith("5398 disposition") for item in forged_faults): + print("FAIL_FRONTIER_SOURCE_RETENTION control did not catch a forged incorporated label") + return 1 + tampered = json.loads(json.dumps(manifest)) + first = next(iter(tampered["files"])) + tampered["files"][first] = "0" * 64 + tampered_faults = faults(by_number, selected, tampered, promotion, contributors) + if not any(item.startswith("manifest mismatch") for item in tampered_faults): + print("FAIL_FRONTIER_SOURCE_RETENTION control did not catch a manifest mismatch") + return 1 + identical = sum(1 for row in ROWS for kind in row["paths"].values() if kind == "identical") + print( + "PASS_FRONTIER_SOURCE_RETENTION" + f" prs=8 identical_paths={identical} manifest_files=1245" + " partial_but_named=5398,5400,5402" + " certificate_moved_after=4610,5241" + " no_ledger_edit=true no_new_kappa=true" + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main())