Skip to content

Commit 1da4919

Browse files
committed
Release 0.1.1 — docs output guardrail (docs validate)
1 parent 0317e27 commit 1da4919

3 files changed

Lines changed: 14 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,18 @@ the running pyclawd has a different `major.minor`, pointing here for what change
1111

1212
## [Unreleased]
1313

14+
## [0.1.1] - 2026-06-28
15+
1416
### Added
17+
- **`pyclawd docs validate`** + an automatic guardrail in `pyclawd docs build`
18+
fail the build when a notebook that executed *with* output renders to HTML
19+
*without* it (the empty-page failure mode, where `nbsphinx_execute='never'`
20+
renders whatever output state is on disk and a render that races ahead of
21+
hydration ships blank cells). Compares each executed `.ipynb` under
22+
`docs.source_dir` against its rendered page under `docs.build_html`; false-
23+
positive resistant (output-free pages assert nothing) and skips pages not
24+
rendered in the run (`--changed`). `docs validate` runs the same check against
25+
an already-built tree, for use as a standalone pre-deploy gate.
1526
- **`pyclawd web`** — an optional live, multi-project **diff & review dashboard**
1627
(`pip install 'pyclawd[web]'`, then `pyclawd web serve`). Watch changes across all
1728
your repos while agents work, compare any two refs (working tree ↔ branch/tag/SHA)

src/pyclawd/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
TestConfig,
3636
)
3737

38-
__version__ = "0.1.0"
38+
__version__ = "0.1.1"
3939

4040
__all__ = [
4141
"FAIL",

tests/golden/test_golden_dogfood.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"test_scaffold_config_render": {
3-
"hash": "sha256:92d82ceafa0d066db0935193741fa3fbf43737e26960c1792241e9fab6e2a779",
4-
"value": "\"\"\"acme-tool's pyclawd config \u2014 drives `pyclawd test/lint/typecheck/...` for this repo.\n\"\"\"\n\nfrom pyclawd import DoctorConfig, Project, QualityConfig, TestConfig\n\nproject = Project(\n name='acme-tool',\n conda_env=None,\n root_markers=[\"pyproject.toml\"],\n # The pyclawd this config was built on. `pyclawd doctor` WARNs if the\n # running pyclawd has drifted to a different minor (migration may be needed).\n pyclawd_version='0.1.0',\n # Default directory `pyclawd ls` lists (the code/source root).\n src_dir=\"src\",\n quality=QualityConfig(\n lint_cmd=[\"ruff\", \"check\"],\n lint_fix_cmd=[\"ruff\", \"check\", \"--fix\"],\n format_cmd=[\"ruff\", \"format\"],\n format_check_cmd=[\"ruff\", \"format\", \"--check\", \"--quiet\"],\n typecheck_cmd=[\"mypy\"],\n check_sequence=[\"format-check\", \"lint\", \"typecheck\", \"descriptions\", \"test\"],\n ),\n test=TestConfig(\n tests_dir='tests/',\n classname_prefix=\"tests.\",\n integration_files=[],\n markers={\"fast\": \"not slow and not integration\", \"default\": \"not slow\", \"all\": \"\"},\n ),\n doctor=DoctorConfig(\n core_deps=[],\n dev_deps=[\"pytest\", \"pytest-xdist\", \"pytest-cov\"],\n tool_files=[],\n binaries=[\n (\"ruff\", \"pip install ruff\"),\n (\"mypy\", \"pip install mypy\"),\n ],\n ),\n)\n"
3+
"hash": "sha256:8447f89763bfd04a4d6d608f70165bc6d45480a106afb8cce9caee034999d4e6",
4+
"value": "\"\"\"acme-tool's pyclawd config \u2014 drives `pyclawd test/lint/typecheck/...` for this repo.\n\"\"\"\n\nfrom pyclawd import DoctorConfig, Project, QualityConfig, TestConfig\n\nproject = Project(\n name='acme-tool',\n conda_env=None,\n root_markers=[\"pyproject.toml\"],\n # The pyclawd this config was built on. `pyclawd doctor` WARNs if the\n # running pyclawd has drifted to a different minor (migration may be needed).\n pyclawd_version='0.1.1',\n # Default directory `pyclawd ls` lists (the code/source root).\n src_dir=\"src\",\n quality=QualityConfig(\n lint_cmd=[\"ruff\", \"check\"],\n lint_fix_cmd=[\"ruff\", \"check\", \"--fix\"],\n format_cmd=[\"ruff\", \"format\"],\n format_check_cmd=[\"ruff\", \"format\", \"--check\", \"--quiet\"],\n typecheck_cmd=[\"mypy\"],\n check_sequence=[\"format-check\", \"lint\", \"typecheck\", \"descriptions\", \"test\"],\n ),\n test=TestConfig(\n tests_dir='tests/',\n classname_prefix=\"tests.\",\n integration_files=[],\n markers={\"fast\": \"not slow and not integration\", \"default\": \"not slow\", \"all\": \"\"},\n ),\n doctor=DoctorConfig(\n core_deps=[],\n dev_deps=[\"pytest\", \"pytest-xdist\", \"pytest-cov\"],\n tool_files=[],\n binaries=[\n (\"ruff\", \"pip install ruff\"),\n (\"mypy\", \"pip install mypy\"),\n ],\n ),\n)\n"
55
},
66
"test_tier_marker_mapping": {
77
"hash": "sha256:2feb42f5d3f3372de50bd61ac39231a31df3917ceb850cf1998176447a59fe14",

0 commit comments

Comments
 (0)