fix nav template
Home /
Input Output /
formal-ledger-specifications
Jun 29, 8-9 PM (1)
Jun 29, 9-10 PM (0)
Jun 29, 10-11 PM (0)
Jun 29, 11-12 AM (0)
Jun 30, 12-1 AM (0)
Jun 30, 1-2 AM (0)
Jun 30, 2-3 AM (0)
Jun 30, 3-4 AM (1)
Jun 30, 4-5 AM (0)
Jun 30, 5-6 AM (0)
Jun 30, 6-7 AM (0)
Jun 30, 7-8 AM (2)
Jun 30, 8-9 AM (5)
Jun 30, 9-10 AM (1)
Jun 30, 10-11 AM (0)
Jun 30, 11-12 PM (0)
Jun 30, 12-1 PM (0)
Jun 30, 1-2 PM (0)
Jun 30, 2-3 PM (1)
Jun 30, 3-4 PM (0)
Jun 30, 4-5 PM (0)
Jun 30, 5-6 PM (0)
Jun 30, 6-7 PM (0)
Jun 30, 7-8 PM (0)
Jun 30, 8-9 PM (1)
Jun 30, 9-10 PM (0)
Jun 30, 10-11 PM (0)
Jun 30, 11-12 AM (0)
Jul 01, 12-1 AM (2)
Jul 01, 1-2 AM (0)
Jul 01, 2-3 AM (1)
Jul 01, 3-4 AM (2)
Jul 01, 4-5 AM (0)
Jul 01, 5-6 AM (0)
Jul 01, 6-7 AM (0)
Jul 01, 7-8 AM (0)
Jul 01, 8-9 AM (1)
Jul 01, 9-10 AM (0)
Jul 01, 10-11 AM (0)
Jul 01, 11-12 PM (0)
Jul 01, 12-1 PM (0)
Jul 01, 1-2 PM (0)
Jul 01, 2-3 PM (0)
Jul 01, 3-4 PM (0)
Jul 01, 4-5 PM (0)
Jul 01, 5-6 PM (0)
Jul 01, 6-7 PM (0)
Jul 01, 7-8 PM (0)
Jul 01, 8-9 PM (1)
Jul 01, 9-10 PM (1)
Jul 01, 10-11 PM (0)
Jul 01, 11-12 AM (0)
Jul 02, 12-1 AM (0)
Jul 02, 1-2 AM (0)
Jul 02, 2-3 AM (0)
Jul 02, 3-4 AM (0)
Jul 02, 4-5 AM (0)
Jul 02, 5-6 AM (4)
Jul 02, 6-7 AM (0)
Jul 02, 7-8 AM (0)
Jul 02, 8-9 AM (0)
Jul 02, 9-10 AM (0)
Jul 02, 10-11 AM (0)
Jul 02, 11-12 PM (0)
Jul 02, 12-1 PM (3)
Jul 02, 1-2 PM (1)
Jul 02, 2-3 PM (0)
Jul 02, 3-4 PM (0)
Jul 02, 4-5 PM (0)
Jul 02, 5-6 PM (0)
Jul 02, 6-7 PM (0)
Jul 02, 7-8 PM (0)
Jul 02, 8-9 PM (0)
Jul 02, 9-10 PM (0)
Jul 02, 10-11 PM (0)
Jul 02, 11-12 AM (0)
Jul 03, 12-1 AM (1)
Jul 03, 1-2 AM (0)
Jul 03, 2-3 AM (0)
Jul 03, 3-4 AM (0)
Jul 03, 4-5 AM (0)
Jul 03, 5-6 AM (0)
Jul 03, 6-7 AM (0)
Jul 03, 7-8 AM (0)
Jul 03, 8-9 AM (1)
Jul 03, 9-10 AM (2)
Jul 03, 10-11 AM (2)
Jul 03, 11-12 PM (2)
Jul 03, 12-1 PM (2)
Jul 03, 1-2 PM (0)
Jul 03, 2-3 PM (0)
Jul 03, 3-4 PM (0)
Jul 03, 4-5 PM (0)
Jul 03, 5-6 PM (0)
Jul 03, 6-7 PM (0)
Jul 03, 7-8 PM (1)
Jul 03, 8-9 PM (0)
Jul 03, 9-10 PM (0)
Jul 03, 10-11 PM (0)
Jul 03, 11-12 AM (0)
Jul 04, 12-1 AM (0)
Jul 04, 1-2 AM (0)
Jul 04, 2-3 AM (0)
Jul 04, 3-4 AM (2)
Jul 04, 4-5 AM (0)
Jul 04, 5-6 AM (0)
Jul 04, 6-7 AM (0)
Jul 04, 7-8 AM (0)
Jul 04, 8-9 AM (0)
Jul 04, 9-10 AM (0)
Jul 04, 10-11 AM (0)
Jul 04, 11-12 PM (0)
Jul 04, 12-1 PM (0)
Jul 04, 1-2 PM (0)
Jul 04, 2-3 PM (0)
Jul 04, 3-4 PM (0)
Jul 04, 4-5 PM (0)
Jul 04, 5-6 PM (0)
Jul 04, 6-7 PM (0)
Jul 04, 7-8 PM (0)
Jul 04, 8-9 PM (0)
Jul 04, 9-10 PM (0)
Jul 04, 10-11 PM (0)
Jul 04, 11-12 AM (0)
Jul 05, 12-1 AM (0)
Jul 05, 1-2 AM (0)
Jul 05, 2-3 AM (1)
Jul 05, 3-4 AM (0)
Jul 05, 4-5 AM (0)
Jul 05, 5-6 AM (0)
Jul 05, 6-7 AM (0)
Jul 05, 7-8 AM (0)
Jul 05, 8-9 AM (0)
Jul 05, 9-10 AM (0)
Jul 05, 10-11 AM (0)
Jul 05, 11-12 PM (0)
Jul 05, 12-1 PM (0)
Jul 05, 1-2 PM (0)
Jul 05, 2-3 PM (0)
Jul 05, 3-4 PM (0)
Jul 05, 4-5 PM (0)
Jul 05, 5-6 PM (0)
Jul 05, 6-7 PM (0)
Jul 05, 7-8 PM (0)
Jul 05, 8-9 PM (0)
Jul 05, 9-10 PM (0)
Jul 05, 10-11 PM (0)
Jul 05, 11-12 AM (0)
Jul 06, 12-1 AM (0)
Jul 06, 1-2 AM (0)
Jul 06, 2-3 AM (0)
Jul 06, 3-4 AM (0)
Jul 06, 4-5 AM (0)
Jul 06, 5-6 AM (0)
Jul 06, 6-7 AM (0)
Jul 06, 7-8 AM (0)
Jul 06, 8-9 AM (0)
Jul 06, 9-10 AM (0)
Jul 06, 10-11 AM (0)
Jul 06, 11-12 PM (0)
Jul 06, 12-1 PM (0)
Jul 06, 1-2 PM (0)
Jul 06, 2-3 PM (0)
Jul 06, 3-4 PM (0)
Jul 06, 4-5 PM (0)
Jul 06, 5-6 PM (0)
Jul 06, 6-7 PM (0)
Jul 06, 7-8 PM (0)
Jul 06, 8-9 PM (0)
41 commits this week
Jun 29, 2025
-
Jul 06, 2025
Artifacts generated from 50f9fa62a1fa87b57f88509299fad6c7b498512b
address change requests
add footnotes extension and fix admonitions
Artifacts generated from a53e698191f2ddd8aa77cbc0857043832c76f727
Rename collectP2Scripts to collectP2ScriptsWithContext (to align with cardano-ledger)
Start cleaning ScriptVerification
Artifacts generated from a6a04408c53763d3a2f2474f78b58b528547c1bc
Artifacts generated from 0e6280b12957abd9c51aca50c8d11d66205a3291
Refactor getInputHashes and getDataHashes; rename premises in UTxOw
Artifacts generated from 89aaf46c5c1577d61294f00851c96aa718624bae
Artifacts generated from aaa3fc4d9aa57093adfb09001cda60a277b201a6
Artifacts generated from cfc380b6f7ce202c22f69c83eadc1eab67f90fc5
Clean Script.Validation
Artifacts generated from 716c45934bcee6a96a470d51f56bdc0fab592829
Refactor functionality related to scripts
+ Move `credsNeeded` to ScriptValidation + Refactor `getDatum` + Rename premises in UTxOw
more removal of imperative try-except error handling
more refactoring
Artifacts generated from 7f7e8c01bf10365c64a43119174f368d05ce07a7
cleanup, remove dead code, groups related functions
Clean up the project structure, remove dead code, and group related functions more logically without changing the pipeline's overall behavior. This refactoring replaces large, imperative `try-except` blocks with collections of smaller, pure, testable functions composed in a robust chain. It's a significant improvement in the clarity and reliability of the Agda processing stage. + Functions in `modules/` orchestrate the pipeline logic. They describe *what* to do and should be free of `try-except` blocks for I/O. They operate on `Result` objects. + Functions in `utils/` provide reusable tools that perform the "impure" work. They are the "boundary" and use `try-except` internally to convert exceptions into `Err` values. + Move pure logic to utility modules. + All functions in `postprocess.py` that perform text replacements are pure transformations; move them to `utils/text_processing.py`, making them reusable utilities. To make them truly pure, modified them to accept data (like code blocks and label maps) as arguments instead of relying on global variables. + Update Pipeline Orchestrator. Add new function to `modules/latex_pipeline.py` that orchestrates these post-processing steps. Replaces old method of calling `postprocess.py` as an external script, which eliminates a `subprocess` call and integrates the logic seamlessly. + Delete Legacy Script. `postprocess.py` is now retired. + Add new `utils/file_ops.py` utility module including directory functions from `setup.py`. + Merge `asset_generator.py` into `site_assembly.py`, since `site_assembly.py` already uses functions from `asset_generator.py`. + Clean up `build_config.py` (remove `get_legacy_paths()`---it's now dead code) + Error handling is now more precise: it skips files that are missing their intermediate parts (a recoverable issue) but will correctly halt the entire build on a more serious problem (like a permissions error when writing the final file). + More specific exceptions. The functions now catch `OSError` for file system permission issues, which is more descriptive than a generic `Exception`. + Cleaner Logic. functions are now simpler and no longer returns a `Result`, as a `FileNotFoundError` is not a critical failure for this specific task—it simply means the file size is 0. 1. **Correct Usage (Boundary Functions):** The `try` blocks in `utils/command_runner.py` and `utils/file_ops.py` are fine; they serve as the necessary bridge between impure libraries (`subprocess`, `shutil`) and our functional code. These should stay. 2. **Candidates for Refactoring (Orchestration Logic):** Most other `try` blocks, especially those in the `modules/` directory, are wrapping larger chunks of logic. These are prime candidates for refactoring. Instead of a large `try...except` block, these functions should be chains of smaller operations that each return a `Result`. + No `try-except`. The main logic is now free of explicit exception handling. All I/O error handling is delegated to the `ls_dir` utility. + Clarifies Error Handling. The `calculate_file_metadata` function remains a good example of a case where a local `try-except` is a valid choice because the goal is to **provide a default value**, not to halt the entire pipeline on failure. This distinguishes it from critical I/O operations where failure must be propagated. + Declarative. The code now reads like a description of what it does ("list the directory and then map the result to processed files") rather than a sequence of imperative steps. + Preserves Behavior. Because our `calculate_file_metadata` function already handles its own `FileNotFoundError` by returning a default value, the mapping operation `[... for p in paths]` is safe and won't crash the whole pipeline if one file has an issue, perfectly preserving the logic of your original implementation.
remove html from ci and fix bottom of intro
factor more functionality out of build.py
+ `build-tools/scripts/md/modules/site_assembly.py` handles all final steps: copying staged content, deploying all assets (CSS, JS, BibTeX), and generating the final `mkdocs.yml`. + `build-tools/scripts/md/modules/content_staging.py` prepares the processed markdown files for the site assembly step.