day11: unified solution type, profiles, CLI fixes, doc forward deps
Major changes:
- Rename day11_graph to day11_solution: Graph.solution → Deps.t,
Solve_result.t carries both build_deps and doc_deps, Solution_json → Json
- Solve.solve returns Solve_result.t with both dependency graphs,
eliminating the separate recompute_with_post function
- Fix doc forward deps: link phase now mounts doc_deps (not just
build_deps) so x-extra-doc-deps like odig are available for
cross-referencing in odoc link
- Merge doc_layer into doc library, hide Day11_opam.Deps (inline
get_extra_doc_deps into solver), remove build- prefix from layer dirs
- Profile system: day11 profile create/show/list/delete with persistent
config at ~/.day11/profiles/. All commands take --profile instead of
individual --cache-dir/--os-dir args. Shared cache at ~/.day11/cache/,
per-profile snapshots at ~/.day11/snapshots/
- Snapshot system: point-in-time state of all repos, keyed by hash of
commit SHAs. Solutions, packages, runs stored per-snapshot
- Wire Summary.finish into cmd_batch so status/results/disk tools work.
Fix disk_usage to scan odoc-store. Fix cmd_results to scan run subdirs
- DAG executor stats: separate ok/failed/cascaded/cached counters.
Cascades don't inflate failure count. Cached failures pre-resolve
as Failed (not Ok). Write cascade layer.json with failed_dep
- New day11 build command for single-package builds within a profile
- Public library names (day11.solution, day11.layer, etc.) for odoc docs.
Per-library .mld index pages. Fix load_package_list to accept JSON arrays
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>