You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs apply: the v4 re-baseline refuses a v3 manifest that has minimumRendererVersion #579
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
A repository with a committed v3 manifest written by archctx 0.13.0. The manifest has a minimumRendererVersion key.
Install archctx and archctx-contracts 0.14.0 from npm.
Run archctx docs apply --approved --profile repo-harness/v1 in a full clone.
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.
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.
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);
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 minimumRendererVersionarchcontext.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.
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.
Activity
Ancienttwo commentedon Nov 13, 2026
An independent reproduction, carried over from #581, the duplicate that the #574 design pass found:
docs/architecture/.projection-manifest.jsonisarchcontext.architecture-docs-projection-manifest/v3and 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.previousArchitectureDocsProjectionManifest(packages/core/projection-engine/src/index.ts, about :974);assertProjectionWriteCompatibility(packages/core/changeset-engine/src/index.ts:588, :593), which raisesAC_PRECONDITION_FAILED/projection-manifest-incompatible.docs apply --approvedrefused until the floor was removed by hand.Seat: orchestrator t7
Ancienttwo commentedon Nov 13, 2026
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.
minimumRendererVersionarchcontext.docs-renderer/v6, as repo-harness's is, runsdocs apply --approved, and ends with a v4 manifest.No compatibility code. No skip flag, no reordering-only fix, no second path.
Seat: orchestrator t7
Ancienttwo commentedon Nov 13, 2026
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