Skip to content

docs apply: the v4 re-baseline refuses a v3 manifest that has minimumRendererVersion #579

Closed

Description

@Ancienttwo

Problem

archctx 0.14.0 docs apply --approved refuses a projection manifest v3 that 0.13.0 wrote. It fails with AC_PRECONDITION_FAILED projection-manifest-incompatible. The v4 re-baseline in the 0.14.0 Upgrade notes cannot start from a manifest that carries minimumRendererVersion.

Repro

  1. A repository with a committed v3 manifest written by archctx 0.13.0. The manifest has a minimumRendererVersion key.
  2. Install archctx and archctx-contracts 0.14.0 from npm.
  3. Run archctx docs apply --approved --profile repo-harness/v1 in a full clone.
  4. Result: projection-manifest-incompatible. Expected: the superseded v3 manifest is replaced by a v4 manifest.

Cause

In bin/archctx.mjs (0.14.0), previousArchitectureDocsProjectionManifest (about line 16867) calls architectureDocsProjectionCompatibilityIssues before it checks isSupersededArchitectureDocsProjectionManifestSchemaVersion. At about line 8843, that check reports "projection manifest floors require the current schema" for any manifest with a floor key and a schema that is not v4. So a superseded v3 manifest with a floor never reaches the rebaselineSuperseded branch.

Workaround

Delete minimumRendererVersion from the committed v3 manifest, then run docs apply --approved. The apply rewrites the manifest fully as v4. This is a one-time manual step.

Fix direction

Skip the floor check for a superseded schema when rebaselineSuperseded is true, or check for a superseded schema first.

Found in aimpact-inc/repo-harness#2686 (archctx 0.14.0 bump).

Seat: orchestrator t7

Activity

  1. Ancienttwo commented on Nov 13, 2026

    @Ancienttwo
    OwnerAuthor

    An independent reproduction, carried over from #581, the duplicate that the #574 design pass found:

    • repo-harness docs/architecture/.projection-manifest.json is archcontext.architecture-docs-projection-manifest/v3 and records "minimumRendererVersion": "archcontext.docs-renderer/v6".
    • architectureDocsProjectionCompatibilityIssues (packages/contracts/src/projection-manifest.ts:506-507) reports "projection manifest floors require the current schema" for any non-v4 manifest with a floor.
    • Two callers refuse on that issue:
      • previousArchitectureDocsProjectionManifest (packages/core/projection-engine/src/index.ts, about :974);
      • assertProjectionWriteCompatibility (packages/core/changeset-engine/src/index.ts:588, :593), which raises AC_PRECONDITION_FAILED / projection-manifest-incompatible.
    • On a throwaway clone of repo-harness at 48cae2d58, docs apply --approved refused until the floor was removed by hand.

    Seat: orchestrator t7

  2. Ancienttwo commented on Nov 13, 2026

    @Ancienttwo
    OwnerAuthor

    Decision (owner → advisor, pane t12, 2026-11-13; the owner delegated the fix of #579 and #580 to the advisor: "下游提了一个issue,你接手修"). Tier Medium, one GPT review. Part of archctx 0.14.1.

    • Fix it in the shared function, not by reordering one caller. architectureDocsProjectionCompatibilityIssues (packages/contracts/src/projection-manifest.ts:506-507) has two callers that refuse:

      • previousArchitectureDocsProjectionManifest (projection-engine, about :974);
      • assertProjectionWriteCompatibility (changeset-engine :588, :593).

      The rule becomes "floors require a current or superseded declared schema". A floor key with no declared schema, or with an unsupported one, is still refused.

    • Floor semantics. A superseded manifest's floors are evaluated against this engine, the same way as v4 floors. A floor that the engine does not meet still refuses with projection-manifest-incompatible. The floors are not carried into v4: the re-baseline writes a fresh v4 with the floors that this writer sets. The old manifest is not a baseline, so its floors only decide whether this engine may replace it.

    • Tests.

      • Extend the existing re-baseline test. It starts from a real 0.13.0 v3 manifest with minimumRendererVersion archcontext.docs-renderer/v6, as repo-harness's is, runs docs apply --approved, and ends with a v4 manifest.
      • Add one case: a v3 manifest whose floor is above the engine refuses.
    • No compatibility code. No skip flag, no reordering-only fix, no second path.

    Seat: orchestrator t7

  3. Ancienttwo commented on Nov 13, 2026

    @Ancienttwo
    OwnerAuthor

    Claim: writer and head owner is the Pi worker seat t2k5 (magpie Opus 5.5), on branch fix/579-superseded-floors from main f381b51. Medium tier, one GPT review.

    Seat: orchestrator t7

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions