feat(projection): carry accepted architecture changes - #102
Conversation
Co-authored-by: codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Publish-ready 0.4.1 candidate with fail-closed request validation and stable refresh signaling. Verified under Node 24 because the package engine intentionally excludes the host Node 26 runtime. Co-authored-by: Codex <codex@openai.com>
Records the exact-subject user waiver requested in this task without claiming an external Claude pass. Co-authored-by: Codex <codex@openai.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7e217c43e4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| { | ||
| "name": "@archcontext/contracts", | ||
| "version": "0.4.0", | ||
| "version": "0.4.1", |
There was a problem hiding this comment.
Refresh bun.lock for the 0.4.1 workspace versions
The package manifests are bumped to 0.4.1, but bun.lock still records every internal workspace at 0.4.0. Both install jobs in .github/workflows/verify.yml run bun install --frozen-lockfile, and bun install --help defines that flag as “Disallow changes to lockfile,” so a clean CI checkout cannot reconcile these manifests and will fail before verification. Regenerate and commit bun.lock alongside the version bump.
Useful? React with 👍 / 👎.
| const canonicalExistingByPath = new Map(simulatedByPath); | ||
| for (const file of canonicalFirst.files) canonicalExistingByPath.set(file.path, file); | ||
| const canonical = buildArchitectureDocsProjection(root, generatedAt, profile, [...canonicalExistingByPath.values()]); | ||
| const canonical = buildArchitectureDocsProjection(root, generatedAt, profile, [...canonicalExistingByPath.values()], acceptedChange); |
There was a problem hiding this comment.
Consume the accepted reference before the fixed-point rebuild
For an approved adopt request that has both an adoption candidate and a valid accepted semantic delta, canonicalFirst.files contains a manifest whose semantic baseline is already the current model. Passing the same acceptedChange into this second rebuild therefore reaches classifyArchitectureMajorChange with no remaining delta and throws architecture-major-change-accepted-reference-without-semantic-delta, so the daemon mutation is never planned. The accepted authority needs to be consumed against the old baseline rather than reapplied after the simulated manifest advances it.
Useful? React with 👍 / 👎.
Outcome
ProjectionRequestV1.acceptedChangewithout changing v1 protocol identityarchctx/archctx-contracts0.4.1 release surfacesCross-repo contract
This unblocks repo-harness from resolving an ArchContext major semantic delta from
human-action-requiredtorefresh-requiredthrough the stable provider protocol.Verification
>=24 <26; host Node 26 intentionally excluded)bun run verify: 1218 pass, 0 failReview authority
The user explicitly instructed this delivery to skip Claude review. The contract-authorized typed
user_waiveris recorded; no external Claude verdict is claimed.