fix(projection): scope entity stamp digest per node - #105
Conversation
The sticky verifiedAgainst key for entity-summary targets folded the
plan-wide source-tree digest plus every node's scale signals and proof
digests into one shared value, so any commit invalidated every entity
stamp and each projection run rewrote all module docs with SHA-only
churn. Scope the key to the node's own {scale signal, semantic proof}:
a stamp now survives unrelated commits and sibling re-measurements, and
re-stamping is decided by the existing per-node changed-path
measurement (restamp-unmeasured semantics unchanged).
Renderer bump archcontext.docs-renderer/v2 -> v3 because the marker
sourceDigest semantics changed; upgrading re-renders entity docs once.
Version 0.4.3. The ARCHCTX_FEATURES token "architecture-docs-renderer-v2"
stays: capabilities features gate capability generations, not renderer
versions; exact renderer identity remains renderers.architectureDocs
plus each marker's rendererVersion.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 20ff1c6516
ℹ️ 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".
| targetSourceDigest = digestJson({ | ||
| sourceScaleSignal: scaleSignalsByNodeId.get(nodeId) ?? null, | ||
| semanticProof: { capabilityId: compilation.capabilityId, proofDigest: compilation.proofDigest } | ||
| } as unknown as Json); |
There was a problem hiding this comment.
Include all rendered node metadata in the sticky digest
When only .archcontext node metadata such as summary, status, extensions.localContracts, or source.entrypoints changes while the covered source footprint is unchanged, none of those fields affect this digest: the scale signal only describes the footprint and the semantic proof omits several of them. stickyVerifiedAgainst therefore reuses the previous commit, after which renderEntitySummary emits the changed metadata alongside the old Verified against value. A docs apply can consequently write new architecture facts falsely stamped as verified against an earlier commit; include every node-local render input in this key or compare the stamp-independent generated body before reusing the stamp.
Useful? React with 👍 / 👎.
|
|
||
| ```bash | ||
| npm install -g archctx@0.4.2 | ||
| npm install -g archctx@0.4.3 |
There was a problem hiding this comment.
Keep the pinned install command on the verified release
Before the separately deferred 0.4.3 publication and distribution readback occur, this command points users at an unverified and potentially nonexistent npm version. The committed docs/verification/fg6-release-distribution-readback.json still verifies 0.4.2, so the surrounding claim that this reproduces the “current verified release” is false and the command can fail while @latest still installs 0.4.2. Retain the verified version here until the 0.4.3 readback is committed, or clearly label the command as a post-publication step.
Useful? React with 👍 / 👎.
The version bump folds ARCHCONTEXT_PRODUCT_VERSION into REVIEW_ACTION_NO_LLM_MODEL_DIGEST, so the fg4 and fg6 evidence recordings must carry the 0.4.3 digest (same refresh as a124462 carried 0.4.2). Adds the archctx 0.4.3 release checklist.
verifiedAgainstmarkers in downstream repo-harness docs/architecture (12-file SHA-only churn per merge).entitySourceDigestshared by all entity targets folded (a) plan-wide source tree digest, (b) all nodes' scale signals, (c) all nodes' proof digests — any commit broke it; the per-node measurement instickyVerifiedAgainstnever got to run.{sourceScaleSignal ?? null, semanticProof}computed in the render loop; plan-wide digest and sibling signals removed from the key. Non-entity targets unchanged.restamp-unmeasuredand measurement-commit checks behaviorally untouched.bun test1231 pass / 0 fail;tsc --noEmitclean; gate review PASS.ARCHCTX_FEATUREStoken rename (separate capabilities-contract change); npm publish + distribution readback (release-time gate, follow-up).