archctx 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "archcontext.practice-catalog-manifest/v1",
3
3
  "catalogVersion": "2026.06.0",
4
- "productVersion": "0.4.2",
4
+ "productVersion": "0.4.3",
5
5
  "generatedAt": "1970-01-01T00:00:00.000Z",
6
6
  "entries": [
7
7
  {
@@ -389,5 +389,5 @@
389
389
  "structurizr.dsl",
390
390
  "twelve-factor"
391
391
  ],
392
- "catalogDigest": "sha256:7fc97d6c05657eeeee604a302a22e0afe77dc2d0ffea89442de193e570d9b8bf"
392
+ "catalogDigest": "sha256:902f7d7738d4b4d34861260a09a9a0e005004152c48228c91f6861043f2ba74f"
393
393
  }
package/bin/archctx.mjs CHANGED
@@ -919,7 +919,7 @@ function sortedUniqueIssues(label, values) {
919
919
  const expected = [...new Set(values)].sort();
920
920
  return expected.length === values.length && expected.every((value, index) => value === values[index]) ? [] : [`${label} must be sorted and unique`];
921
921
  }
922
- var PROJECTION_REQUEST_SCHEMA_VERSION = "archcontext.projection-request/v1", PROJECTION_RESULT_SCHEMA_VERSION = "archcontext.projection-result/v1", ARCHITECTURE_REFRESH_SIGNAL_SCHEMA_VERSION = "archcontext.architecture-refresh-signal/v1", ARCHCTX_CAPABILITIES_SCHEMA_VERSION = "archcontext.capabilities/v1", ARCHITECTURE_DOCS_RENDERER_VERSION = "archcontext.docs-renderer/v2", AGENT_CONTEXT_RENDERER_VERSION = "archcontext.agent-context-renderer/v1", PROJECTION_MODES, PROJECTION_TARGETS, ARCHITECTURE_MAJOR_CHANGE_REASON_CODES, ARCHCTX_FEATURES;
922
+ var PROJECTION_REQUEST_SCHEMA_VERSION = "archcontext.projection-request/v1", PROJECTION_RESULT_SCHEMA_VERSION = "archcontext.projection-result/v1", ARCHITECTURE_REFRESH_SIGNAL_SCHEMA_VERSION = "archcontext.architecture-refresh-signal/v1", ARCHCTX_CAPABILITIES_SCHEMA_VERSION = "archcontext.capabilities/v1", ARCHITECTURE_DOCS_RENDERER_VERSION = "archcontext.docs-renderer/v3", AGENT_CONTEXT_RENDERER_VERSION = "archcontext.agent-context-renderer/v1", PROJECTION_MODES, PROJECTION_TARGETS, ARCHITECTURE_MAJOR_CHANGE_REASON_CODES, ARCHCTX_FEATURES;
923
923
  var init_projection = __esm(() => {
924
924
  init_schema();
925
925
  PROJECTION_MODES = ["check", "plan", "apply", "adopt"];
@@ -1000,7 +1000,7 @@ function productVersionManifest() {
1000
1000
  }
1001
1001
  };
1002
1002
  }
1003
- var ARCHCONTEXT_PRODUCT_NAME = "archctx", ARCHCONTEXT_PRODUCT_VERSION = "0.4.2", ARCHCONTEXT_PACKAGE_MANAGER = "bun@1.3.10", ARCHCONTEXT_NODE_RANGE = ">=24 <26", LOCAL_RUNTIME_RPC_SCHEMA_VERSION = "archcontext.runtime-rpc/v1", ARCHCONTEXT_SCHEMA_SET_VERSION = "2026-07-11.explorer-view-v2";
1003
+ var ARCHCONTEXT_PRODUCT_NAME = "archctx", ARCHCONTEXT_PRODUCT_VERSION = "0.4.3", ARCHCONTEXT_PACKAGE_MANAGER = "bun@1.3.10", ARCHCONTEXT_NODE_RANGE = ">=24 <26", LOCAL_RUNTIME_RPC_SCHEMA_VERSION = "archcontext.runtime-rpc/v1", ARCHCONTEXT_SCHEMA_SET_VERSION = "2026-07-11.explorer-view-v2";
1004
1004
 
1005
1005
  // packages/contracts/src/validator.ts
1006
1006
  function validateJsonSchema(schema, value) {
@@ -8042,11 +8042,6 @@ function renderArchitectureDocumentationProjection(input) {
8042
8042
  resulting: semanticState,
8043
8043
  acceptedChange: input.refreshContext?.acceptedChange
8044
8044
  });
8045
- const entitySourceDigest = digestJson({
8046
- sourceDigest: input.sourceDigest,
8047
- sourceScaleSignals: [...scaleSignalsByNodeId.values()].sort((left, right) => left.nodeId.localeCompare(right.nodeId)),
8048
- semanticProofs: [...semanticCompilationsByNodeId.values()].map((compilation) => ({ capabilityId: compilation.capabilityId, proofDigest: compilation.proofDigest })).sort((left, right) => left.capabilityId.localeCompare(right.capabilityId))
8049
- });
8050
8045
  const targetDrafts = architectureDocumentationTargetDrafts(model, layout2);
8051
8046
  const declaresSourceByNodeId = new Map(model.nodes.map((node) => [node.id, (nativeNodeSource(node)?.include ?? []).length > 0]));
8052
8047
  const changeSinceStampByNodeId = new Map(input.sourceChangesSinceStamp.map((entry) => [entry.nodeId, entry]));
@@ -8054,9 +8049,19 @@ function renderArchitectureDocumentationProjection(input) {
8054
8049
  const rendered = targetDrafts.map((draft) => {
8055
8050
  const existing = existingByPath.get(draft.path);
8056
8051
  const nodeId = draft.type === "entity-summary" ? draft.scope.id : undefined;
8052
+ let targetSourceDigest = input.sourceDigest;
8057
8053
  let targetVerifiedAgainst;
8058
8054
  if (nodeId !== undefined) {
8059
- const decision = stickyVerifiedAgainst(existing, draft.targetId, entitySourceDigest, {
8055
+ targetSourceDigest = digestJson(renderTargetGeneratedBody(draft, model, {
8056
+ generatedAt,
8057
+ verifiedAgainst: CANONICAL_STICKY_STAMP,
8058
+ scaleSignalsByNodeId,
8059
+ semanticCompilationsByNodeId,
8060
+ decisions: input.decisions ?? [],
8061
+ timeline: input.timeline ?? [],
8062
+ layout: layout2
8063
+ }));
8064
+ const decision = stickyVerifiedAgainst(existing, draft.targetId, targetSourceDigest, {
8060
8065
  nodeDeclaresSource: declaresSourceByNodeId.get(nodeId) === true,
8061
8066
  measurement: changeSinceStampByNodeId.get(nodeId)
8062
8067
  });
@@ -8085,7 +8090,7 @@ function renderArchitectureDocumentationProjection(input) {
8085
8090
  const target = projectionTarget({
8086
8091
  ...draft,
8087
8092
  rendererVersion,
8088
- sourceDigest: draft.type === "entity-summary" ? entitySourceDigest : input.sourceDigest,
8093
+ sourceDigest: targetSourceDigest,
8089
8094
  outputDigest: generatedBodyDigest,
8090
8095
  ...targetVerifiedAgainst ? { verifiedAgainst: targetVerifiedAgainst } : {}
8091
8096
  });
@@ -9225,14 +9230,19 @@ function parseMarkerVerifiedAgainst(value) {
9225
9230
  return;
9226
9231
  }
9227
9232
  }
9228
- function stickyVerifiedAgainst(existing, targetId, entitySourceDigest, node) {
9233
+ var CANONICAL_STICKY_STAMP = {
9234
+ branch: "__sticky-canonical__",
9235
+ commit: "0000000",
9236
+ committedAt: "1970-01-01T00:00:00.000Z"
9237
+ };
9238
+ function stickyVerifiedAgainst(existing, targetId, nodeSourceDigest, node) {
9229
9239
  if (!existing)
9230
9240
  return { kind: "restamp" };
9231
9241
  const region = findGeneratedRegion(existing, targetId);
9232
9242
  if (!region)
9233
9243
  return { kind: "restamp" };
9234
9244
  const metadata = parseGeneratedRegionMetadata(region.startMarker);
9235
- if (metadata.sourceDigest !== entitySourceDigest)
9245
+ if (metadata.sourceDigest !== nodeSourceDigest)
9236
9246
  return { kind: "restamp" };
9237
9247
  const stamp = parseMarkerVerifiedAgainst(metadata.verifiedAgainst);
9238
9248
  if (!stamp)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archctx",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Local architecture context CLI for agentic coding workflows.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "additionalProperties": false,
32
32
  "required": ["architectureDocs", "agentContext"],
33
33
  "properties": {
34
- "architectureDocs": { "const": "archcontext.docs-renderer/v2" },
34
+ "architectureDocs": { "const": "archcontext.docs-renderer/v3" },
35
35
  "agentContext": { "const": "archcontext.agent-context-renderer/v1" }
36
36
  }
37
37
  },
@@ -42,7 +42,7 @@
42
42
  "codeGraphDigest": { "$ref": "#/$defs/digest" },
43
43
  "indexedWorktreeDigest": { "$ref": "#/$defs/nullableDigest" },
44
44
  "projectionInputDigest": { "$ref": "#/$defs/digest" },
45
- "rendererVersion": { "const": "archcontext.docs-renderer/v2" },
45
+ "rendererVersion": { "const": "archcontext.docs-renderer/v3" },
46
46
  "layoutVersion": { "const": "archcontext.docs-layout/v1" },
47
47
  "generatedFrom": {
48
48
  "type": "object",