feat(project-files): add rendered delivery and indexed search
Merged
MZ
3d ago+4448+4448+0123456789012345678901234567890123456789-545-545-012345678901234567890123456789
Summary
- Add authorized Project file rendering, inline content, previews, and indexed search.
- Recheck current owner access, source revisions, and embedded-file identities before delivering rendered bytes. Preserve provenance and invalidate compiled artifacts when their inputs change.
- Apply opaque/excerpt admission before reading and after revalidation; withhold stale search previews. Failed reads preserve shared deterministic render caches.
- Rebase the rendering/search slice onto staging after #9016, retaining streaming source downloads and buffered previews. Keep Project API/CLI documentation unpublished until launch.
Type of Change
- Feature / refactor
Testing
- Latest repair: 85 focused database integration checks and 66 unit tests passed, covering observer refusal, private CLI provenance round trips, registry admission, and HEAD without compilation. Earlier focused delivery/search/cache checks also passed.
- Prior real-app delivery/rendering run: 15 checks passed, including browser cache reuse, authenticated HEAD, DOCX/PPTX/PDF rendering, asset-revision cache invalidation, and foreign/archived dependency rejection.
- Scoped type check introduced no errors beyond the existing test baseline. Scoped formatting and strict API validation passed.
- Pre-deployment source fixtures prepared and verified; post-deployment staging validation remains pending. Full repository checks run in hosted CI.
Checklist
- Code follows project style guidelines
- Self-reviewed my changes
- Focused tests added/updated and passing
- No new warnings introduced
- Full hosted CI passed
- I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)
Review stack
#9015 and #9016 are merged. This PR contains only rendering/search and targets staging. #9018 adds bulk transfers; #9019 adds sharing. Rebase each following slice after its parent merges. #8610 is superseded by this stack.