Skip to content

Centralize package hub documentation and per-project status - #1

Merged
VolkerChristian merged 1 commit into
mainfrom
docs/modular-package-hub
Oct 11, 2026
Merged

VolkerChristian merged 1 commit into
mainfrom
docs/modular-package-hub

Conversation

@VolkerChristian

@VolkerChristian VolkerChristian commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

What was built

Addresses Claude's distribution-hub review with one ownership invariant: DistributionPackages owns public authored presentation and the single status projection; Packages serves it. Product jobs report facts without knowing Markdown structure. Available packages and a replacement build attempt are separate facts.

  • Split public authored docs into site/, distinct from signer/maintainer README and operations docs. Retain installation commands, prerequisites, package catalogs, runtime boundaries and signing fingerprints while removing redundant tables/navigation.
  • Replace the combined status matrix with a directory and individual status/snodec.md / status/mqttsuite.md pages: available versions, attempted source/revision, attributable capture/publication/event times, run/files/record links, visible needs-attention summaries. Preserve old distribution/release links through a generated navigation page, not a second matrix.
  • Consolidate project presentation into the existing deliberate repository allow-list metadata. A future project's presentation is metadata-driven; actual building/signing still needs explicitly reviewed adapters and App access.
  • Record accepted-event timestamps and failure stage beside authoritative state, without changing terminal ordering, reservations, retries, status names or badge bytes. Timestamp remains fixed across lease retries; project-specific publication facts survive replacement attempts.
  • Publisher reads authored site/ data from its API/event-provided default branch; executable/signing/installer tooling stays capture-pinned. Overlay only authored data at historical doc paths so older recipe captures cannot copy old authored prose over current docs.
  • Use the shared 16 px button typography, slate infra identity, and quarter-height repository banners, without importing Landingpages artwork or treating the hub as a product README.

Local verification

python3 -m unittest discover -s tests -v

The renderer consumes the existing filesystem snapshot plus status.json; public projection is ci.publish.publication.render(snapshot_path, recorded_state). It does not mutate feed records or event state. Do not run a new package build merely to review these changes.

Change accounting

Python/shell/workflow production: +134 / -58 (net +76). Rendering template: +8 / -65 (net -57). Tests: +136 / -13 (net +123). Documentation/SVG presentation: +1212 / -1582 (no-renames accounting).

Reduction removes the duplicate combined matrix and public/signer document identity. The approved net source growth stores facts absent from existing state and projects them into extensible project pages; formatting alone could not invent reliable timestamps. No parallel renderer or new refresh workflow is added. Source plus rendering-template growth is net +19 lines.

Companions: Packages rendered snapshot and .github README visual-policy correction.

Scope and verification

  • No licence, key/secret, installer, release tag, product workflow, package binary/feed, target matrix, build/signing adapter or dispatch-trigger changes.
  • Local suite: 44 tests executed, 43 passed, one skipped (real OpenWrt signing-tools test: tools unavailable on PATH). Tests retain provenance, state ordering, feed/signing, concurrent-writer and lease-conflict coverage; added deterministic multi-project rendering, event attribution and actual docs-overlay shell coverage.
  • 20 public pages rendered with GitHub's Markdown API: local links, image paths, banner/section anchors pass; both project status pages cover all 76 targets. This is structural/GFM verification, not a mobile/dark-theme browser visual review.
  • One intermediate full-suite run failed when a concurrent-writer fixture Git clone returned exit 128, followed by fixture cleanup failure; the earlier full run passed. The final full rerun passed: 43 passed, one skipped. Both logs are retained. No tests were weakened.
  • Workflow YAML parses; local actionlint reports the same diagnostics on base and modified workflows (queue and App input metadata); no new diagnostics.
  • No manual Actions dispatch, tag movement or package rebuild.

Deployment / review gate

Do not merge during active package writers. Existing immutable release captures execute their original renderer: they cannot record the new timestamp fields and may still regenerate the legacy status layout. The currently running SNode.C capture is 38074650868 (attempt 2, observed in progress during preparation).

At a quiet point, merge the source change and refresh the rendered Packages snapshot against the latest live feed/state before merging its companion PR. Packages publications replace snapshot history, so its PR branch/base may need recreation from the current API-read default branch. Preserve all newer package/state data.

New timestamps/stage metadata arrive only from captures containing this updated tooling; historical unknowns remain explicitly not recorded, never guessed. Current authored-document overlay protects public prose for older recipe captures, but does not replace their capture-pinned executable renderer. These PRs do not make the relaunch live on their own.

Companion PRs

Preview: Packages hub · SNode.C status · MQTTSuite status

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