Skip to content

v0.7.0 fix: avoid full catalogue reload for product publication - #6

Open
herefindalex wants to merge 1 commit into
masterfrom
fix/product-visibility-full-reload
Open

herefindalex wants to merge 1 commit into
masterfrom
fix/product-visibility-full-reload

Conversation

@herefindalex

Copy link
Copy Markdown
Owner

Summary

Publishing each Product reloaded and revalidated every active publication, then rebuilt catalogue-wide machine output and the spec-search digest. Installing the sample catalogue therefore repeated database and filesystem work for previously admitted Products.

Install Product visibility through bounded Product/history reads and validate only the changed immutable unit. Preserve synchronous route/revision activation and shared-asset authorization. Pre-generate machine output and refresh the spec digest once per bounded worker batch outside the admission gate; reconcile durable dependencies after convergence. Startup and Website activation continue to verify the full publication set.

Performance evidence

Paired Linux/amd64 runs of the existing actual-worker benchmark, using SQLite, 200 Products and 1,000 intents:

Metric Before After
Elapsed 49.29 s 18.52 s
Allocated bytes 5.64 GB 0.86 GB

Elapsed decreased 62.4%. Both runs verified 200 activations, completed queues, public revisions, complete units and search results. This is one run per revision with randomized fixture identities; it is not a Windows runtime or 1,020-Product benchmark. Copy-on-write maps still have catalogue-size cost.

Machine endpoints can return 503 between a Product change and aggregate consolidation. Core Product access remains available after activation; invalidated aggregates cannot expose revoked content.

Validation

  • Regression first: publishing another Product fails on the old catalogue-wide read, then passes with bounded installation; adjacent installation-read failure denies old visibility.
  • A deterministic overlap regression reproduces a lost spec-refresh signal when machine output replaces a snapshot during adapter I/O. Requeuing refresh on the failed snapshot comparison restores candidate queries on the next idle worker pass.
  • Existing worker, Hide/Archive, shared-asset, ETag/Range, aggregate, Website and restart-repair checks cover adjacent publication contracts.
  • Full Go and PoC suites, publishing race tests, go vet, license policy and four-platform cross-builds.
  • Complete GitHub CI passed for 0e02f27701c617e742c5cf621e09571ce524c07c, including frontend/embedded assets and deterministic sample data.

Independent review's spec-refresh convergence finding is resolved and re-reviewed. Windows is cross-compiled, with native runtime verification outstanding. This PR is ready for Thomas to review and merge; no tag or release is created by this change.

Documentation

No documentation files changed under the source-only contribution scope. Operational caveat: Sitemap, robots.txt, llms.txt and catalog aggregate endpoints may temporarily return HTTP 503 while machine output is regenerated after Product visibility changes. Product activation and revocation retain their atomic visibility boundary. The three operations guides should document this temporary response in follow-up documentation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant