feat: land superpaper v1 notes scaffold

Add the ledger schema, class router, lint codes, ingest/build
pipeline, and three work-tree examples: align derivation,
superfig delegation, and supertensor delegation.
This commit is contained in:
dela
2026-08-17 10:01:30 +08:00
parent c2bec6f55a
commit 3a322aa8dc
89 changed files with 3522 additions and 11 deletions
+67
View File
@@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""Project ledger.yaml into notes/sections/symbols.tex and optional claims.md."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
import yaml
def tex_escape(text: str) -> str:
return (
text.replace("\\", "\\textbackslash{}")
.replace("&", "\\&")
.replace("%", "\\%")
.replace("#", "\\#")
.replace("_", "\\_")
)
def render(work: Path) -> None:
ledger = yaml.safe_load((work / "ledger.yaml").read_text(encoding="utf-8"))
symbols = ledger.get("symbols") or []
claims = ledger.get("claims") or []
sec = work / "notes" / "sections"
sec.mkdir(parents=True, exist_ok=True)
lines = [
"% generated by render_ledger.py — do not edit",
"\\begin{itemize}",
]
if not symbols:
lines.append("\\item (无符号)")
for sym in symbols:
name = tex_escape(str(sym.get("name", "")))
meaning = tex_escape(str(sym.get("meaning", "")))
kind = tex_escape(str(sym.get("kind", "")))
latex = sym.get("latex") or name
lines.append(f"\\item ${latex}$ — {meaning} ({kind};{name})")
lines.append("\\end{itemize}")
(sec / "symbols.tex").write_text("\n".join(lines) + "\n", encoding="utf-8")
md = ["# Claims", ""]
for c in claims:
md.append(f"- `{c.get('id')}` ({c.get('status')}): {c.get('text')}")
(work / "claims.md").write_text("\n".join(md) + "\n", encoding="utf-8")
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--work", required=False)
parser.add_argument("--out", dest="work")
args = parser.parse_args()
if not args.work:
print("usage: render_ledger.py --work <dir>", file=sys.stderr)
return 2
work = Path(args.work).resolve()
if not (work / "ledger.yaml").is_file():
print(f"no ledger at {work / 'ledger.yaml'}", file=sys.stderr)
return 2
render(work)
return 0
if __name__ == "__main__":
sys.exit(main())