* Rename Branch.Hash -> Branch.CausalHash for clarity.
* WIP simplifying types for Causals and hashes
* Single type for causal hashes.
* Remove vestigial function
* Clean up some rogue hashes
* Formatting
* Fix tests
* Add namespace hash migration
* Cleanup
* Finish writing migration for bad branches, add some sanity checks too.
* Keep hash_object mappings up to date.
* Working migration
* More checks
* Dependency-order migration WIP
* Finish first draft of crawled migration strategy
* Improve speed and reliability of migration.
* Better migration logging
* Perform integrity checks once after all migrations are done.
* Considerably speed up migration by only re-hashing branches which have
the same causal hash as value hash.
* Clarify migration docs
* Move 'differing causal value hash' check to integrity checks
* Bump schema version for new codebases
* PR cleanup
* Remove commented out migration
* PR feedback cleanup
* Add integrity check for hash_objects.
* Correctly set 'changes' key
* Don't check hash object integrity in migrations
Some codebases (like mine) are borked in this area and we'll need to fix
them later on.
* Correct final migration number
* Check namespace hash even if branch has no children
* Rehash every branch regardless
* Use v4 of base.
Expand the Doc Embed variant to support embedding videos and
frontmatter. The latter will be rendered at the top of the output of the
html file rendered via the `docs.to-html` command.
Previously, breaking a long line with an `&&` or `||` would naively
incorrectly print without indentation, like this:
```
("a long piece of text to force unison to hang the line" == "")
&&
("a long piece of text to force unison to hang the line" == "")
```
This is a syntax error. The pretty-printer now correctly hangs the line
as
```
("a long piece of text to force unison to hang the line" == "")
&& ("a long piece of text to force unison to hang the line" == "")
```
Additionally, subsequent chains of `&&` and `||` have too-restrictive
parenthesis rules, so `a && b && c` will be printed as `(a && b) && c`.
Now, the pretty-printer will search for a chain of `&&`s or `||`s and
render it without extra parens. For clarity, parentheses are kept when
`&&` and `||` are mixed.
Previously, terms that are identical other than the order a set of
effects is listed hashed differently. The following two terms should
have the same hash, and now they do.
foo : Nat ->{Exception, IO} Nat
bar : Nat ->{IO, Exception} Nat