Status: Active Owner: Dr. Daniel Ari Friedman (docxology), Active Inference Institute Last reviewed: 2026-08-02 (mega-deep documentation review + implementation pass)
Section guide:
- Minor = typo, broken link, formatting, single stale number
- Medium = stale section rewrite, doc restructure, added missing guide
- Major = large doc system overhaul, cross-cutting refactors
- ✓
software/docs/AGENTS.md:11"18 files" → 17 (actual file count). (f4789c39) - ✓
software/docs/AGENTS.md:36"all 22 scripts" → 23. (f4789c39) - ✓
software/docs/AGENTS.md:37"all 17 courses" → 14 courses. (f4789c39) - ✓
software/docs/AGENTS.md:54"21 modules" — verified correct (21 modules); no change. - ✓
software/docs/README.md:39"all 22 CLI scripts" → 23. (f4789c39) - ✓
software/docs/README.md:42"1,021+ test suite" → 1,014 collected / ~995 CI-passing / 34 deselected. (f4789c39) - ✓
software/docs/README.md:43"all 17 courses" → 14 courses. (f4789c39) - ✓
ARCHITECTURE.md:119"65+" test files → 67. (f4789c39) - ✓
TESTING.md:14"65+" → 67 test files. (f4789c39) - ✓
TESTING.md:48nonexistent test nodeTestProcessModuleByType::test_success→ real node (test_process_module_by_type_structure). (f4789c39) - ✓
TESTING.md:68--cov-fail-under=70presented as project threshold — no threshold configured; reworded. (f4789c39) - ✓
TESTING.mdtables now list the 4 previously undocumented test files (test_*_extended.py×3,test_youtube_render.py). (pending commit) - ✓
CONTENT_AUTHORING.md:120"Coming Soon" placeholder endorsement → no-placeholder rule. (f4789c39) - ✓
COURSE_CATALOG.md:248has_course_subdirregistry field — not a real key; removed. (f4789c39) - ✓
QUICKSTART.md:76-79course-ID list missingai-comedyandyoutube; added. (f4789c39) - ✓
CLI_REFERENCE.md:157python -m scripts.translate_published→scripts/translate_published.pyconvention. (f4789c39) - ✓
ORCHESTRATION.md:5"All examples useuv run" overstatement clarified (rootpublish.pyruns barepython). (f4789c39) - ✓
COURSE_GENERATOR.md:5/:39— noted comedy/crochet have 5 units × 40 modules. (f4789c39) - ✓
software/README.md:232"1,021 tests collected" → 1,014 + CI-gate detail. (2cedf6fe) - ✓
software/src/AGENTS.md:3"Test Coverage: 1020 tests passed" → current reality. (2cedf6fe) - ✓ Root
AGENTS.md:7"1,021 passing tests" → 1,014 (~995 CI, 34 deselected). (2cedf6fe) - ✓ Root
AGENTS.md:17"21 modules, 22 scripts, 18 docs, 1,021 tests" → "21 modules, 23 scripts, 17 docs, 1,014 tests". (2cedf6fe) - ✓ Root
AGENTS.md:65"All 10 courses" → "All 14 courses". (2cedf6fe) - ✓
README.md:11"17 total entries in COURSE_REGISTRY" → 19. (2cedf6fe) - ✓
README.mdYouTube sub-claims corrected (171 livestreams, 142 GuestStreams — measured fromyoutube_courses.json). (2cedf6fe) - ✓
CLAUDE.md:30uv run black→uv run ruff format;:86"(black and ruff)" → "(ruff and mypy)";:5822→23 scripts. (2cedf6fe) - ✓
.agents/skills/courses/SKILL.md— 22→23 CLI entry points, complete domain list (7),active_inference→active-inferencecommand. (2cedf6fe) - ✓
course_development/README.md:128~2,600 → ~821 YouTube videos. (2cedf6fe) - ✓
publish.toml— added missingai-comedytoggle; youtube count comment fixed. (f4789c39)
- ✓ Broken CLI examples fixed:
ORCHESTRATION.md:102process_course_modulesmissingcourse_name;ORCHESTRATION.md:170generate_module_website.py <path>→--course/--module;CLI_REFERENCE.md:44generate_module_renderings.py <PATH>→--course/--module;CLI_REFERENCE.md:145translate_course.pypositional →--course/--lang;DANVAS.md:86pytest tests/test_danvas/→ real flat test files. (f4789c39) - ✓
MODULES.mdsignature drift fixed:create_module_structure,upload_module_to_canvas,render_markdown_to_pdf,generate_speech,transcribe_audio,convert_file,generate_module_website,course_generator.generate,transcribe_channel. (f4789c39) - ✓
validate_published_directory→validate_publishedinMODULES.mdandORCHESTRATION.md. (f4789c39) - ✓ Layer taxonomy reconciled:
publish/validationmoved to Layer 4 (matching ARCHITECTURE.md). (f4789c39) - ✓
TRANSLATION.md:79OLLAMA_MODELdefaultllama3.2→gemma3:4b;:69chunk "~2,000 tokens" → 4,096. (f4789c39) - ✓
YOUTUBE.md— "~2,600 videos" → 38 playlists / ~821 videos;manifest.jsonfiction → realyoutube_courses.json+ per-playlist numbered-video-dir structure. (f4789c39) - ✓
COURSE_CATALOG.md:16/:177"~2600 videos" → 38 playlists / ~821 videos. (f4789c39) - ✓
CLI_REFERENCE.md— all 23 scripts documented (addedflatten_published.py,import_legacy_materials.py,verify_no_mocks.py). (f4789c39) - ✓ Created
published/AGENTS.md(root AGENTS.md links were dead; repo rule requires AGENTS.md at every level). (2cedf6fe) - ✓ Biology-era drift removed from
src/*/AGENTS.md: content_processing, html_website, legacy_import, module_organization, publish, schedule, validation (biol-1/biol-8/bio_1_2025 → Active Inference course examples). (2cedf6fe) - ✓
llm/AGENTS.mddefault modelllama3.2→gemma3:4b(matchesllm/config.py). (2cedf6fe) - ✓
CONTRIBUTING.md:71"100% test coverage" claim → measured reality (~75% source, no fail-under gate). (f4789c39) - ✓
QUICKSTART.md:57-58uv run python publish.pyfrom repo root →python publish.py --dry-run. (f4789c39) - ✓
course_development/youtube/AGENTS.md— corrected playlist/video counts. (f4789c39)
- ✓ CLI_REFERENCE.md completeness — all 23 scripts documented; every example command now copy-pasteable (verified against
argparsedefinitions). (f4789c39) - ✓ YOUTUBE.md archive rewrite — replaced fictional
manifest.json/transcripts//rendered/layout with the realyoutube_courses.json+ per-playlist numbered-video-dir structure. (f4789c39) - ✓ Cross-cutting stale-count sweep — every numeric claim in root + software/docs + software developer docs now matches measured ground truth (see REVIEW_LOG_2026-08-02.md). (f4789c39, 2cedf6fe)
- ✓ published/AGENTS.md — new doc for the generated-outputs directory, fixing 2 dead links from root AGENTS.md. (2cedf6fe)
- None from this pass.
-
software/tests/ruff findings (15) resolved: dead locals replaced with real assertions (test_canvas_integration_main.pyupload-readiness,test_format_conversion_utils.pyHTML content), dependency probes useimportlib.util.find_spec(test_dependencies.py,test_legacy_import_main*.py), unused imports/vars removed (test_danvas_comprehensive.py,test_flatten_published.py), resume-semantics assertions strengthened (test_youtube_transcript_main.py). All verified by test run. - Stray root-level
software/test_new_modules.py(debug scratch file, outside the pytest gate) deleted. -
software/tests/formatted withruff format(54 files). -
ruffnow excludes generatedpublished/output trees viaextend-excludeinpyproject.toml— 57 false lint findings in the rendered Japanese translation tree no longer mask real ones; repo-wideuv run ruff check .andruff format --check .both clean. - Verified after all changes: CI-equivalent gate 995 passed / 0 failed / 34 deselected; mypy clean (109 files).
Notes from the earlier doc-only pass:
- Heavy test suite not run at that time (CI-equivalent gate is ~995 tests; run via
cd software && uv run pytest tests/ -m "not requires_internet and not requires_api and not requires_whisper"). No runtime code was changed in this pass — doc/config edits only — so the gate is unaffected;publish.tomlgained one course toggle (ai-comedy). youtube_courses.jsonreports 821 videos vs 791module.mdon disk — the30-video gap is pre-render state (playlists enumerated but not yet transcribed); docs now use the metadata count with a "" qualifier.DOMAINS_TO_DO.md(330 proposed domains) is a forward-looking planning tracker, not stale; left untouched.youtube/AGENTS.mdandYOUTUBE.mdintentionally still describe pipeline commands; verified against current script flags.
All findings from the previous hostile red-team review were implemented, tested, and verified: CI-equivalent gate 995 passed / 0 failed / 34 deselected;
ruff checkclean;ruff format --checkclean;mypy src/— Success (109 source files).
mypy src/passes with zero errors across all 109 source files (was ~288 chronic errors). Annotation-only changes; no runtime behavior changed.
- Fixed 4 genuine test bugs:
test_generate_all_outputs::test_main_execution(wrong"ai-philosophy"assertion) and monkeypatch lambda-signatureTypeErrors intest_transcribe_youtube(×2) andtest_render_youtube_courses.
- Path-traversal guard (
store.validate_course_id), role-basedcheck_permission(403), POST body cap (64 KiB) +Content-Lengthvalidation, input validation (grades, dates, event types), concurrency viastore_transaction+fsync, corrupt-store fallback, XSS escaping; threat model indanvas/AGENTS.md. Tests added.
- translation (safe
target_lang, fail-loud), course_config (malformed TOML raises, deepcopy, scalarpdf = false), llm (error wrapping, TTL-cached probe, retry/backoff,overlap_tokens), course_generator (shell-quoting,chmodon write, duplicatedir_namecheck), html_website (quiz JS really grades), text_to_speech (cross-platform gTTS honoringlang/slow), batch_processing (robust course-id suffix match,finallycleanup), markdown_to_pdf (pdf_optionsapplied via@pageCSS), format_conversion (None-guard, heading-preserving docx, true HTML escaping), publish (flatten_moduleunique-name fallback), speech_to_text (chunked capture), validation (layout-aware module discovery), lab_manual (deterministicfeas_{idx}), llm/dashboards (deterministiczlib.crc32).
validate_outputs.py/publish_course.pypropagate exit codes viasys.exit(); dead imports/locals removed;# noqa: E402documented bootstrap.
ruff checkandruff format --checkclean; docs corrected to measured reality (1,014 tests collected, ~995 CI-passing, 75% source coverage).
- Live-network YouTube and WeasyPrint-render tests fail only where the environment blocks YouTube or lacks native Pango/cairo — deselected/failing purely environmentally, not code bugs.