demolab-cli 2.2.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of demolab-cli might be problematic. Click here for more details.
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/AGENTS.md +3 -4
- {demolab_cli-2.2.0/demolab_cli/scaffold/root → demolab_cli-2.3.0}/CLAUDE.md +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/PKG-INFO +1 -6
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/README.md +0 -5
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/AGENT.md +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/CHANGELOG.md +24 -3
- demolab_cli-2.3.0/demolab_cli/VERSION +1 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/AUTORESEARCH-RULES.md +3 -3
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/RULES.md +9 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/AUTORESEARCH.md +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/FROM-JUPYTER.md +3 -4
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/GETTING-STARTED.md +4 -5
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/LINT.md +2 -3
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/TOUR.md +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar010.pdf +255 -385
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar018.pdf +339 -349
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar019.pdf +82 -78
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar023.pdf +454 -453
- demolab_cli-2.3.0/demolab_cli/scaffold/demo/artifacts/pdfs/ar027.pdf +0 -0
- demolab_cli-2.3.0/demolab_cli/scaffold/demo/artifacts/pdfs/book.pdf +8381 -6
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar010.typ +0 -6
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar018.typ +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar019.typ +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar023.typ +1 -2
- demolab_cli-2.3.0/demolab_cli/scaffold/demo/writings/ar027.typ +77 -0
- demolab_cli-2.3.0/demolab_cli/scaffold/root/AGENTS.md +4 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0/demolab_cli/scaffold/root}/CLAUDE.md +1 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/demolab.yaml +5 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_engine_build.py +24 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_init_and_staging.py +6 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/entry.typ +2 -1
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/lib.typ +11 -3
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/main.typ +3 -2
- demolab_cli-2.2.0/demolab_cli/VERSION +0 -1
- demolab_cli-2.2.0/demolab_cli/runbooks/FROM-PAPER.md +0 -48
- demolab_cli-2.2.0/demolab_cli/runbooks/GROUND-CLAIMS.md +0 -166
- demolab_cli-2.2.0/demolab_cli/runbooks/NEXT.md +0 -52
- demolab_cli-2.2.0/demolab_cli/runbooks/RED-TEAM.md +0 -72
- demolab_cli-2.2.0/demolab_cli/runbooks/STEELMAN.md +0 -44
- demolab_cli-2.2.0/demolab_cli/scaffold/demo/artifacts/pdfs/book.pdf +4 -8520
- demolab_cli-2.2.0/demolab_cli/scaffold/root/AGENTS.md +0 -5
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.gitattributes +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.github/workflows/landing-preview.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.github/workflows/landing.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.github/workflows/publish.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.github/workflows/tests.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/.gitignore +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/DEVELOPING.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/LICENSE +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/__init__.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/_paths.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/build.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/cli.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/deploy/deploy.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/deploy/preview.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/devserver.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/GLOSSARY.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/HOUSESTYLE.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/SLIDES.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/STRUCTURE.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/guides/SUPPORT.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/overlay.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/DOCTOR.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/EMBED-DOCS.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/LITERATURE-SEARCH.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/MIGRATE-CODE.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/MIGRATE-STACK.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/runbooks/UPDATE.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/data/ar018/swe-bench.svg +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar004.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar005.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar011.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar012.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar013.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar014.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar015.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar016.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar017.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar020.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar021.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar022.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar024.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar025.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/artifacts/pdfs/ar026.pdf +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/demolab.yaml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/site/CNAME +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/site/landing.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar004.slide.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar005.slide.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar011.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar012.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar013.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar014.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar015.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar016.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar017.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar020.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar021.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar022.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar024.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar025.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/demo/writings/ar026.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/root/README.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/root/github/workflows/tests.yml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/root/gitignore +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/root/pyproject.toml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/.gitattributes +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/HOUSESTYLE.local.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/artifacts/data/.gitkeep +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/artifacts/pdfs/.gitkeep +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/experiments/helpers/__init__.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/experiments/helpers/provenance.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/experiments/helpers/style.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/experiments/helpers/test_provenance.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/tools/.gitkeep +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/skeleton/writings/.gitkeep +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/starters/monte-carlo-pi/README.md +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/starters/monte-carlo-pi/exp000.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/scaffold/starters/monte-carlo-pi/exp000.typ +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/slides.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_build_resilience.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_cli.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_command_catalog.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_devserver.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_overlay.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_slide_catalog.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/test_slides.py +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/cite-popover.js +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/favicon.svg +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/demolab_cli/typ/style.css +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/pyproject.toml +0 -0
- {demolab_cli-2.2.0 → demolab_cli-2.3.0}/uv.lock +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
> **demolab lab** — before working here, run `uv run demolab docs` and follow what it
|
|
2
|
-
> prints (the agent manual + runbook menu).
|
|
3
|
-
>
|
|
4
|
-
>
|
|
5
|
-
> (`HELP`, `LINT`, `DOCTOR`, …) is a command — the manual explains.
|
|
2
|
+
> prints (the agent manual + runbook menu). Do not substitute `uvx`: this lab's project
|
|
3
|
+
> environment is the source of truth. A user message that is just a NAME in CAPS (`HELP`,
|
|
4
|
+
> `LINT`, `DOCTOR`, …) is a command — the manual explains.
|
|
6
5
|
|
|
7
6
|
**This checkout is also the demolab-cli source repo** — the engine lives in `demolab_cli/`
|
|
8
7
|
(build code, Typst templates, runbooks, guides, scaffold, and the manual `demolab docs`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Read [AGENTS.md](AGENTS.md) and follow it before doing anything else here.
|
|
2
2
|
|
|
3
3
|
**Command reflex — applies before any other action.** A user message that is *only* a
|
|
4
|
-
NAME in CAPS (SCREAMING-KEBAB) — `HELP`, `LINT`, `DOCTOR`, `
|
|
4
|
+
NAME in CAPS (SCREAMING-KEBAB) — `HELP`, `LINT`, `DOCTOR`, `LITERATURE-SEARCH`, … —
|
|
5
5
|
*is* a command, not a topic to research. Your first move is to run `demolab docs <NAME>`
|
|
6
6
|
(bare `demolab docs` for the menu + manual), read the file it prints, and follow it. Don't
|
|
7
7
|
grep for it, don't guess, don't ask the user what they meant — the runbook says what to do.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: demolab-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Lab notebook for computational science: Python tools produce per-run artifacts; Typst publishes them as a web bundle, per-entry PDFs, and a book.
|
|
5
5
|
Project-URL: Homepage, https://github.com/eoinmurray/demolab
|
|
6
6
|
Project-URL: Changelog, https://github.com/eoinmurray/demolab/blob/main/demolab_cli/CHANGELOG.md
|
|
@@ -70,15 +70,10 @@ Open your lab in your agent and say a runbook's name — it follows that runbook
|
|
|
70
70
|
| **TOUR** | guided walkthrough of the lab — what's here, what it found, where to start |
|
|
71
71
|
| **MIGRATE-CODE** | bring an existing codebase in, one experiment at a time |
|
|
72
72
|
| **FROM-JUPYTER** | launder a Jupyter notebook into a reproducible, seeded experiment |
|
|
73
|
-
| **FROM-PAPER** | scaffold experiments to reproduce a paper's key result in your stack |
|
|
74
73
|
| **MIGRATE-STACK** | write your tools in MATLAB / Julia / R / Octave instead of Python |
|
|
75
74
|
| **EMBED-DOCS** | drop demolab into another project as a `docs/` site |
|
|
76
|
-
| **NEXT** | read your whole arc and propose the next experiments worth running |
|
|
77
|
-
| **GROUND-CLAIMS** | find the source sentences behind each citation |
|
|
78
75
|
| **LINT** | check your writeups against the house style |
|
|
79
76
|
| **DOCTOR** | audit the repo against the conventions |
|
|
80
|
-
| **RED-TEAM** | adversarially check a result holds up before you publish it |
|
|
81
|
-
| **STEELMAN** | build the strongest honest case for a result, so you don't under-sell it |
|
|
82
77
|
| **UPDATE** | update the engine package, leaving your content untouched |
|
|
83
78
|
|
|
84
79
|
## How it works
|
|
@@ -39,15 +39,10 @@ Open your lab in your agent and say a runbook's name — it follows that runbook
|
|
|
39
39
|
| **TOUR** | guided walkthrough of the lab — what's here, what it found, where to start |
|
|
40
40
|
| **MIGRATE-CODE** | bring an existing codebase in, one experiment at a time |
|
|
41
41
|
| **FROM-JUPYTER** | launder a Jupyter notebook into a reproducible, seeded experiment |
|
|
42
|
-
| **FROM-PAPER** | scaffold experiments to reproduce a paper's key result in your stack |
|
|
43
42
|
| **MIGRATE-STACK** | write your tools in MATLAB / Julia / R / Octave instead of Python |
|
|
44
43
|
| **EMBED-DOCS** | drop demolab into another project as a `docs/` site |
|
|
45
|
-
| **NEXT** | read your whole arc and propose the next experiments worth running |
|
|
46
|
-
| **GROUND-CLAIMS** | find the source sentences behind each citation |
|
|
47
44
|
| **LINT** | check your writeups against the house style |
|
|
48
45
|
| **DOCTOR** | audit the repo against the conventions |
|
|
49
|
-
| **RED-TEAM** | adversarially check a result holds up before you publish it |
|
|
50
|
-
| **STEELMAN** | build the strongest honest case for a result, so you don't under-sell it |
|
|
51
46
|
| **UPDATE** | update the engine package, leaving your content untouched |
|
|
52
47
|
|
|
53
48
|
## How it works
|
|
@@ -23,7 +23,7 @@ machine-managed staging. Full tree: `demolab docs STRUCTURE`.
|
|
|
23
23
|
demolab is driven by the user typing a **name in CAPS** (SCREAMING-KEBAB):
|
|
24
24
|
|
|
25
25
|
- **`HELP`** — present the menu at the bottom of this output, one line each.
|
|
26
|
-
- **`<RUNBOOK>`** (e.g. `LINT`, `DOCTOR`, `
|
|
26
|
+
- **`<RUNBOOK>`** (e.g. `LINT`, `DOCTOR`, `TOUR`) — run `demolab docs <NAME>`, read the
|
|
27
27
|
file it prints, then **start it** and drive it step by step: run a step, show the
|
|
28
28
|
result, confirm before the next. Never dump the whole runbook at once.
|
|
29
29
|
- **`<GUIDE>`** (e.g. `RULES`, `SLIDES`) — read it the same way, then **walk the user
|
|
@@ -13,6 +13,27 @@ the runbook shows the entries between your version and the latest.
|
|
|
13
13
|
|
|
14
14
|
## [Unreleased]
|
|
15
15
|
|
|
16
|
+
## [2.3.0] — 2026-08-07
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- **Optional collaborative inline annotations with Hypothesis.** Set `annotations: hypothesis`
|
|
20
|
+
lab-wide in `demolab.yaml` or `annotations: "hypothesis"` on one writing's `meta`; web readers
|
|
21
|
+
can highlight text and use Hypothesis threads and private groups, while PDFs remain unchanged.
|
|
22
|
+
The new `ar027` demo article documents the workflow and opts itself in as a live example.
|
|
23
|
+
|
|
24
|
+
## [2.2.1] — 2026-08-07
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **Lab agent instructions no longer suggest the bootstrap-only `uvx` fallback.** Every
|
|
28
|
+
scaffolded lab now directs agents unambiguously to its project environment with
|
|
29
|
+
`uv run demolab docs`, preventing sessions from falsely claiming that `demolab` is not
|
|
30
|
+
on `PATH` and running a cached or released package instead.
|
|
31
|
+
|
|
32
|
+
### Removed
|
|
33
|
+
- **Retired five overlapping runbooks:** `FROM-PAPER`, `NEXT`, `GROUND-CLAIMS`, `RED-TEAM`, and
|
|
34
|
+
`STEELMAN`. Their command routing, onboarding references, demo documentation, and published demo
|
|
35
|
+
artifacts have been removed with them.
|
|
36
|
+
|
|
16
37
|
## [2.2.0] — 2026-08-07
|
|
17
38
|
|
|
18
39
|
### Added
|
|
@@ -326,7 +347,7 @@ the runbook shows the entries between your version and the latest.
|
|
|
326
347
|
last night + queue the next pre-registered experiments), **NIGHT-SHIFT** (work the queue on a
|
|
327
348
|
branch, open a PR whose description is the digest) — plus the **AUTORESEARCH-RULES** guide
|
|
328
349
|
they cite. DOCTOR gains a one-plan-one-log / every-queued-entry-has-a-kill check; LINT exempts
|
|
329
|
-
the `log` from the prose rules
|
|
350
|
+
the `log` from the prose rules. Opt-in and additive:
|
|
330
351
|
nothing changes for a lab that doesn't create a `plan` article.
|
|
331
352
|
- **Per-PR site previews (`deploy.yml` rewrite + new `preview.yml`).** `demolab deploy-setup` now
|
|
332
353
|
installs two workflows. Production (`deploy.yml`) switched from the GitHub-Actions Pages flow
|
|
@@ -662,8 +683,8 @@ Initial versioned release — the engine after its foundational build-out.
|
|
|
662
683
|
The demo lives in `demolab-engine/scaffold/` and doubles as the smoke-test fixture.
|
|
663
684
|
- **One-line installers** — `install.sh` (macOS/Linux) and `install.ps1` (Windows), served from the
|
|
664
685
|
project landing page at demolab.eoinmurray.info.
|
|
665
|
-
- **
|
|
666
|
-
migrate-stack, embed-docs,
|
|
686
|
+
- **Agent runbooks** — getting-started, tour, migrate-code, from-jupyter,
|
|
687
|
+
migrate-stack, embed-docs, lint, doctor, and update — plus a
|
|
667
688
|
`HELP` index, each triggerable by bare name.
|
|
668
689
|
- **Citations** — `#cite(...)` inline numbered cites + `#reference-list(...)` with DOI links, and
|
|
669
690
|
Wikipedia-style hover popovers on the web (DOIs open in a new tab).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.3.0
|
|
@@ -237,9 +237,9 @@ non-compliant artifact can't ship even if the agent misses the rule.
|
|
|
237
237
|
can't drift from what ran.
|
|
238
238
|
- Pre-registration = **provenance** (RULES §4.7): the mandate's commit predates the results' commits.
|
|
239
239
|
- Long runs use **staged runners** (RULES §7.5) so a night can re-enter compute without repeating it.
|
|
240
|
-
- **
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
- **AUTORESEARCH** reads the night documents' records and digests (not just published results),
|
|
241
|
+
so each review continues from the decision arc and may propose `queued` entries for human
|
|
242
|
+
approval.
|
|
243
243
|
- **DOCTOR** checks program structure (each night document carries a mandate + record + digest,
|
|
244
244
|
every `queued` entry has a `kill`, no AI-attribution trailer in commits or PR descriptions).
|
|
245
245
|
- **LINT** applies the full prose rules to night documents, including the cold-read dimension.
|
|
@@ -31,7 +31,7 @@ The concrete annotated file tree is in [`STRUCTURE.md`](STRUCTURE.md); this sect
|
|
|
31
31
|
|
|
32
32
|
**3.2 — Machine-managed staging** (gitignored, owned by the CLI — never hand-edit): `.demolab/` at the lab root holds the few engine files Typst must read from inside the lab tree (`lib.typ`, the web assets, a `VERSION` stamp); every build refreshes it when the installed engine version changes. `temp/bundle/` holds the staged bundle root (`main.typ`) plus build scratch. Local edits to either are overwritten without warning — a customisation that seems to need them is a missing config knob (see 3.3, or propose it upstream).
|
|
33
33
|
|
|
34
|
-
**3.3 — Your root overrides, optional** (root files the framework reads; never overwritten by updates): `demolab.yaml` (wordmark + PDF titles + collections — also the **lab marker**: the CLI finds the lab root by walking up to it, so don't delete it) and `HOUSESTYLE.local.md` (your house-style overrides, which extend or replace the default `HOUSESTYLE.md`; an agent reads it). Every key defaults ⇒ a minimal file is fine. The root stubs (`AGENTS.md`, `CLAUDE.md`, `README.md`, `pyproject.toml`, `.gitignore`, CI) are laid down once by `demolab init` and are yours from then on.
|
|
34
|
+
**3.3 — Your root overrides, optional** (root files the framework reads; never overwritten by updates): `demolab.yaml` (wordmark + PDF titles + collections + optional web annotations — also the **lab marker**: the CLI finds the lab root by walking up to it, so don't delete it) and `HOUSESTYLE.local.md` (your house-style overrides, which extend or replace the default `HOUSESTYLE.md`; an agent reads it). Every key defaults ⇒ a minimal file is fine. The root stubs (`AGENTS.md`, `CLAUDE.md`, `README.md`, `pyproject.toml`, `.gitignore`, CI) are laid down once by `demolab init` and are yours from then on.
|
|
35
35
|
|
|
36
36
|
**3.4 — User content** (100% the user's — freely deletable and replaceable): `tools/*`, `experiments/*` (runners, plus `playground.py` — the Streamlit demo, exempt from the contract), `writings/*` (`.typ` writeups), `artifacts/*` (`data/` per-run figures + `numbers.json`, `pdfs/` compiled PDFs; `artifacts/site/` is a gitignored build), `temp/*` (regenerable scratch).
|
|
37
37
|
|
|
@@ -118,6 +118,14 @@ Numbers must come from the run (§5.4) — never hand-type a literal that could
|
|
|
118
118
|
|
|
119
119
|
See `ar006` for a worked example — ten references with DOIs, inline cites throughout, and the reference list at the foot of the body.
|
|
120
120
|
|
|
121
|
+
**6.7 — Collaborative annotations are opt-in and web-only.** Set `annotations: hypothesis`
|
|
122
|
+
in root `demolab.yaml` to embed the hosted Hypothesis client on every article and experiment,
|
|
123
|
+
or put `annotations: "hypothesis"` in one writing's `meta` block to enable only that entry. An
|
|
124
|
+
entry-level `annotations: none` disables a lab-wide setting. The client is never emitted into PDFs.
|
|
125
|
+
Hypothesis owns annotation accounts, storage, private-group membership, anchoring, and threads;
|
|
126
|
+
collaborators must choose their private group before posting if the discussion is not public. See
|
|
127
|
+
demo article `ar027` for the complete setup and a live example.
|
|
128
|
+
|
|
121
129
|
## 7. Adding an experiment
|
|
122
130
|
|
|
123
131
|
**7.1 — Tool subcommand.** Add a subcommand (or reuse one) in the relevant `tools/<tool>/tool.py`. Pass a `manifest` to `write_output` declaring the headline metrics (and a video, for a rendering tool).
|
|
@@ -92,7 +92,7 @@ Give one explicit verdict:
|
|
|
92
92
|
- **SUITABLE** — ready to formulate as a program;
|
|
93
93
|
- **NEEDS REFINEMENT** — promising, but an outcome, baseline, contrast, or scope is still vague;
|
|
94
94
|
- **BLOCKED** — required evidence or infrastructure is unavailable;
|
|
95
|
-
- **WRONG WORKFLOW** — this is better handled as a one-off experiment,
|
|
95
|
+
- **WRONG WORKFLOW** — this is better handled as a one-off experiment,
|
|
96
96
|
`LITERATURE-SEARCH`, or another named workflow.
|
|
97
97
|
|
|
98
98
|
Do not force every interesting thought into AUTORESEARCH merely because it owns a capitalized
|
|
@@ -68,10 +68,9 @@ working lab, or a bare `demolab scaffold`) and `demolab build` green before you
|
|
|
68
68
|
and the reproducible version is the correct one. That's a feature, not a regression.
|
|
69
69
|
|
|
70
70
|
6. **Hand off.** Show the page + its PDF. State plainly **what was dropped** (scratch cells) and
|
|
71
|
-
**what was fixed** (seeds added, drifting numbers wired to the run, deps pinned).
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
delete — it's not part of the demolab record once the experiment reproduces.
|
|
71
|
+
**what was fixed** (seeds added, drifting numbers wired to the run, deps pinned). Note: the
|
|
72
|
+
original `.ipynb` is yours to keep or delete — it's not part of the demolab record once the
|
|
73
|
+
experiment reproduces.
|
|
75
74
|
|
|
76
75
|
---
|
|
77
76
|
|
|
@@ -133,7 +133,7 @@ freestyling, not following this runbook.
|
|
|
133
133
|
**scatter** of the sampled points coloured inside/outside with the quarter-circle arc, and a
|
|
134
134
|
**log-x convergence curve** settling toward π. Its `README.md` states the figure contract.
|
|
135
135
|
- **Bringing something in?** Existing codebase → [`MIGRATE-CODE.md`](MIGRATE-CODE.md); a
|
|
136
|
-
notebook → [`FROM-JUPYTER.md`](FROM-JUPYTER.md)
|
|
136
|
+
notebook → [`FROM-JUPYTER.md`](FROM-JUPYTER.md).
|
|
137
137
|
Land the **first** experiment via that runbook (same live-page payoff as below), and set
|
|
138
138
|
the expectation that the rest migrates incrementally, later.
|
|
139
139
|
- **Stack, in passing:** Python (`uv`) is the default — don't ask, just note it. If their
|
|
@@ -208,8 +208,7 @@ freestyling, not following this runbook.
|
|
|
208
208
|
runbook and then every guide as a **numbered list, one per line with its one-line
|
|
209
209
|
description** (don't hand-summarise from memory or trim to a favourite few — the whole
|
|
210
210
|
point is they see everything demolab can do next). Runbooks
|
|
211
|
-
first (**
|
|
212
|
-
**FROM-PAPER**, **LINT**, **DOCTOR**, **RED-TEAM**, **UPDATE**, …), then the guides
|
|
211
|
+
first (**TOUR**, **MIGRATE-CODE**, **FROM-JUPYTER**, **LINT**, **DOCTOR**, **UPDATE**, …), then the guides
|
|
213
212
|
(**RULES**, **HOUSESTYLE**, **STRUCTURE**, **GLOSSARY**, …). Tell them: **HELP** re-shows
|
|
214
213
|
this menu anytime, and typing any name in it starts that job.
|
|
215
214
|
- **Ask me anything about the repo** — how it works, where something lives, why a convention
|
|
@@ -244,8 +243,8 @@ data and the landing site's source — read it for file shapes, never overlay it
|
|
|
244
243
|
- **Missing a prerequisite?** — if `uv` or `typst` doesn't resolve, ask them to install it
|
|
245
244
|
themselves and wait; skip entirely if both already resolve. `[1]`
|
|
246
245
|
- **What should your first experiment be?** — open but shaped: their idea · field → three
|
|
247
|
-
numbered starters · bring in code/notebook
|
|
248
|
-
|
|
246
|
+
numbered starters · bring in code/notebook (→ `MIGRATE-CODE` / `FROM-JUPYTER`).
|
|
247
|
+
No idea / no field? Fall back to the **Monte Carlo π** starter so no one
|
|
249
248
|
freezes here — this is the one question with a safety net, not a hard no-default. `[2]`
|
|
250
249
|
- **Publish to GitHub Pages?** — free unless the repo is private; default yes, if no skip (it
|
|
251
250
|
works locally). `[5]`
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
## When to use
|
|
8
8
|
When you want the prose and plots to read like a person — not an LLM — wrote them, and to
|
|
9
|
-
conform to the house style before publishing. This is the **style** pass
|
|
10
|
-
|
|
11
|
-
*Red-team* audits whether the result is true and defensible. Run all three for a full check.
|
|
9
|
+
conform to the house style before publishing. This is the **style** pass: *Doctor* audits the
|
|
10
|
+
structural RULES, while *Lint* (here) audits the prose **and the figures**.
|
|
12
11
|
`HOUSESTYLE.md` is the source of truth for every rule: this runbook cites it, it does not
|
|
13
12
|
restate it. Scope is `writings/*.typ` (the published prose) **and the rendered figures it
|
|
14
13
|
embeds** (`artifacts/data/<id>/*.svg`, `*.png`) — the plots are half of a writing and are lint
|
|
@@ -27,7 +27,7 @@ Adapt the depth to who's asking: a new lab member wants the on-ramp, a reviewer
|
|
|
27
27
|
|
|
28
28
|
2. **Orient for their goal.** Ask what they're here to do, and tailor the close:
|
|
29
29
|
- *Contributing?* → GETTING-STARTED's add-an-experiment flow, and RULES.
|
|
30
|
-
- *Reviewing?* → the results,
|
|
30
|
+
- *Reviewing?* → the results, their supporting artifacts, and the relevant tests.
|
|
31
31
|
- *Taking it over?* → flag anything undocumented or fragile you noticed while reading.
|
|
32
32
|
|
|
33
33
|
Keep it warm and readable — this is the door into someone else's (or past-you's) thinking.
|