Skip to content

Bind rendered publications to one immutable blueprint snapshot #123

Description

@Deicyde

Problem

Rendering reads graph/pages before computing the final publication source revision. A blueprint edit during render can therefore label stale or mixed output with the current hash, defeating the dashboard's stale-publication check.

Draft #73 contains transactional publication work but is stale/conflicting and should be mined or restacked rather than merged wholesale.

Acceptance criteria

  • Render captures one immutable, descriptor-bound blueprint snapshot before deriving any page.
  • Every page, graph, and publication.json is derived from that exact snapshot.
  • A concurrent edit before commit makes render retry or fail without replacing the previous complete site.
  • Publication replacement is transactional; readers never observe mixed generations.
  • Tests mutate content, paths, and directory entries during render and verify the old site remains intact.
  • Dashboard stale checks compare against the same snapshot identity used to render.

Activity

  1. Deicyde commented on Oct 6, 2026

    @Deicyde
    ContributorAuthor

    Roadmap clarification after reviewing the frozen #70 implementation and the current open-PR board:

    #73 is historical source material for this issue, not the branch that should be revived or merged. Its useful invariants and adversarial tests should be mined, but the successor implementation should start from current main and close #123 directly.

    The focused replacement should:

    1. capture one descriptor-bound blueprint generation before graph or page derivation;
    2. derive the complete page plan and publication.json identity from that generation;
    3. stage and validate the complete output before touching the live site;
    4. commit the new site transactionally while retaining the old complete site on any pre-commit failure or source drift; and
    5. preserve and report an exact recovery generation when final-state or durability verification is uncertain.

    Current main has changed substantially since #73 and now includes the #95 snapshot primitives and newer render/dashboard contracts. Copying #73 wholesale would reintroduce stale architecture and unrelated code. A new focused PR should cite #73 for provenance, identify the specific tests/invariants it reuses, and use #123's acceptance criteria as the source of truth.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions