refactor: use per-package directories with multiple layer symlinks
Replace single symlink per package with directory structure:
packages/{pkg.version}/
build-{hash} -> ../../build-{hash} # all builds
doc-{hash} -> ../../doc-{hash} # all doc layers
blessed-build -> ../../build-{hash} # canonical if blessed
blessed-docs -> ../../doc-{hash} # canonical if blessed
This handles packages built multiple times with different deps:
- All builds are tracked via symlinks
- blessed-* symlinks mark the canonical build for docs
- Web dashboard checks blessed-build first, falls back to listing
Changes:
- bin/util.ml: New ensure_package_layer_symlink and
ensure_package_blessed_symlink functions
- bin/main.ml: Create doc layer symlinks and blessed symlinks
when doc generation succeeds
- web/data/layer_data.ml: Updated to use new directory structure,
checks blessed-build first
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>