githolon 0.103.6 → 0.103.8

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.
@@ -2595,8 +2595,8 @@ function resolveGatewayOperation(spec, opName, method) {
2595
2595
 
2596
2596
  // ../cloud/cloudflare-shell/src/kernel-registry.generated.ts
2597
2597
  var DEPLOYED_KERNELS = [
2598
- { prefix: "79df1f00", hash: "79df1f00d23ed0f5dbcbf24071edf6e1667137d844248a40b456e13f4a85d176", version: "kernel-79df1f00", note: "production (this candidate)", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience"] },
2599
- { prefix: "9eac1a59", hash: "9eac1a5907116c8c7adbd89799d513e4463ef2f127cb14367e05576096fcc228", version: "kernel-9eac1a59", note: "test-mint (this candidate) \u2014 feature-equivalent to production", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience"] }
2598
+ { prefix: "171bd538", hash: "171bd538ffccfbf248b2b25962d44676cf78466d5da2dfa32c8618ba5f38bf45", version: "kernel-171bd538", note: "production (this candidate)", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience"] },
2599
+ { prefix: "8b521aba", hash: "8b521aba87dd4dd54a81db9c3571c79ec5d0c600f84ca3796379fc5ba098068b", version: "kernel-8b521aba", note: "test-mint (this candidate) \u2014 feature-equivalent to production", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience"] }
2600
2600
  ];
2601
2601
 
2602
2602
  // ../cloud/cloudflare-shell/src/staged-intents.ts
package/dist/full-cli.mjs CHANGED
@@ -2322,7 +2322,7 @@ function recommendedActionSentence(action) {
2322
2322
  case "recompileClient":
2323
2323
  return "recompile the client (githolon compile / npx nomos-compile) against the deployed law";
2324
2324
  case "redeployLaw":
2325
- return "redeploy the package (POST /v2/workspaces/<ws>/domains) so the workspace runs the client's law";
2325
+ return "let the generated application prove, stage and govern adoption of its packaged law";
2326
2326
  case "reauth":
2327
2327
  return "re-authenticate (acquire a fresh auth-provider token) and reconnect";
2328
2328
  case "quarantineLocalSnapshotAndReclone":
@@ -5209,7 +5209,7 @@ function lawStatusOf(installed, clientHash) {
5209
5209
  function lawDriftMessage({ what, workspace, clientHash, installed }) {
5210
5210
  const short2 = (h) => `${String(h).slice(0, 12)}\u2026`;
5211
5211
  const runs = installed.length ? `runs law ${installed.slice(0, 6).map(short2).join(", ")}${installed.length > 6 ? ` (+${installed.length - 6} more)` : ""}` : "has NO active law installed";
5212
- return `${what}: this client was generated under law ${short2(clientHash)}, but workspace '${workspace}' ${runs} \u2014 the client and the workspace have drifted (or this domain was never deployed here). Recompile (githolon compile / npx nomos-compile) and redeploy the package (POST /v2/workspaces/${workspace}/domains), or regenerate the client against the deployed law (GET /v2/workspaces/${workspace}/domains names the hashes it runs). [law-drift]`;
5212
+ return `${what}: this client was generated under law ${short2(clientHash)}, but workspace '${workspace}' ${runs} \u2014 the client and the workspace have drifted (or this domain was never installed here). The generated application will now prove, stage and govern adoption of its packaged model; if adoption is refused it surfaces a typed model decision instead of requiring application code to deploy law. [law-drift]`;
5213
5213
  }
5214
5214
  function birthOutcomeFailure(birthOutcomes) {
5215
5215
  if (!Array.isArray(birthOutcomes)) return null;
@@ -5476,7 +5476,12 @@ ${String(commit).toLowerCase()}`;
5476
5476
  remoteMain = await resolveBranchHead().catch(() => null);
5477
5477
  } else {
5478
5478
  await writeSkeleton();
5479
- remoteMain = await fetchRemoteHead();
5479
+ const _remoteStatus = span("receive", "boot: fetch remote status", "cloud-status");
5480
+ try {
5481
+ remoteMain = await fetchRemoteHead();
5482
+ } finally {
5483
+ _remoteStatus.end();
5484
+ }
5480
5485
  if (!remoteMain) {
5481
5486
  _bootLedger.end();
5482
5487
  if (!allowUnborn) throw new Error(`workspace '${workspace}' has no ledger main \u2014 create it first (POST /v2/workspaces/${workspace})`);
@@ -5499,6 +5504,10 @@ ${String(commit).toLowerCase()}`;
5499
5504
  let cloudLedgerCache = null;
5500
5505
  const watchTicks = /* @__PURE__ */ new Set();
5501
5506
  const watchStops = /* @__PURE__ */ new Set();
5507
+ let installedLawRowsCache;
5508
+ const invalidateInstalledLawRows = () => {
5509
+ installedLawRowsCache = void 0;
5510
+ };
5502
5511
  let _disposed = false;
5503
5512
  const nudgeWatches = () => {
5504
5513
  try {
@@ -5765,25 +5774,29 @@ ${String(commit).toLowerCase()}`;
5765
5774
  }
5766
5775
  };
5767
5776
  const installRowsInner = () => {
5777
+ if (installedLawRowsCache !== void 0) return installedLawRowsCache;
5768
5778
  try {
5769
5779
  const answer = JSON.parse(call("query", { queryBytes: qBytes({ op: "installedLaw" }) }));
5770
- if (Array.isArray(answer?.domains)) return answer.domains.map((domain) => ({
5771
- id: domain.installationId,
5772
- data: {
5773
- "spec.domainHash": domain.domainHash,
5774
- "spec.packageHash": domain.packageHash,
5775
- "spec.policyAggregate": domain.policyId,
5776
- "spec.installedBy": domain.installedBy,
5777
- "spec.authorityScope": domain.authorityScope,
5778
- "spec.supersedes": domain.supersedes,
5779
- "spec.lawClosureIdentity": domain.lawClosureIdentity,
5780
- "spec.dependencies": Array.isArray(domain.dependencies) ? domain.dependencies : [],
5781
- "spec.domainKeys": Array.isArray(domain.domainKeys) ? domain.domainKeys : [],
5782
- "status.phase": domain.phase,
5783
- "status.supersededBy": domain.supersededBy,
5784
- "metadata.generation": domain.generation
5785
- }
5786
- }));
5780
+ if (Array.isArray(answer?.domains)) {
5781
+ installedLawRowsCache = answer.domains.map((domain) => ({
5782
+ id: domain.installationId,
5783
+ data: {
5784
+ "spec.domainHash": domain.domainHash,
5785
+ "spec.packageHash": domain.packageHash,
5786
+ "spec.policyAggregate": domain.policyId,
5787
+ "spec.installedBy": domain.installedBy,
5788
+ "spec.authorityScope": domain.authorityScope,
5789
+ "spec.supersedes": domain.supersedes,
5790
+ "spec.lawClosureIdentity": domain.lawClosureIdentity,
5791
+ "spec.dependencies": Array.isArray(domain.dependencies) ? domain.dependencies : [],
5792
+ "spec.domainKeys": Array.isArray(domain.domainKeys) ? domain.domainKeys : [],
5793
+ "status.phase": domain.phase,
5794
+ "status.supersededBy": domain.supersededBy,
5795
+ "metadata.generation": domain.generation
5796
+ }
5797
+ }));
5798
+ return installedLawRowsCache;
5799
+ }
5787
5800
  if (typeof process !== "undefined" && process.env?.NOMOS_DEBUG_RAW) {
5788
5801
  console.error("[nomos] installedLaw meta-read returned no domains; using legacy projection fallback", answer);
5789
5802
  }
@@ -5793,10 +5806,11 @@ ${String(commit).toLowerCase()}`;
5793
5806
  }
5794
5807
  }
5795
5808
  try {
5796
- return JSON.parse(call("query", { queryBytes: qBytes({ kind: "query", queryId: "aggregatesByType", paramsJson: JSON.stringify({ __type: "DomainInstallation" }) }) })) || [];
5809
+ installedLawRowsCache = JSON.parse(call("query", { queryBytes: qBytes({ kind: "query", queryId: "aggregatesByType", paramsJson: JSON.stringify({ __type: "DomainInstallation" }) }) })) || [];
5797
5810
  } catch {
5798
- return null;
5811
+ installedLawRowsCache = null;
5799
5812
  }
5813
+ return installedLawRowsCache;
5800
5814
  };
5801
5815
  const installedLawInner = () => {
5802
5816
  const rows = installRowsInner();
@@ -5966,6 +5980,7 @@ ${String(commit).toLowerCase()}`;
5966
5980
  }
5967
5981
  }
5968
5982
  }
5983
+ invalidateInstalledLawRows();
5969
5984
  nudgeWatches();
5970
5985
  return {
5971
5986
  upToDate: false,
@@ -6597,6 +6612,9 @@ ${String(commit).toLowerCase()}`;
6597
6612
  created = Array.isArray(res.created) ? res.created : [];
6598
6613
  affected = Array.isArray(res.affected) ? res.affected : [];
6599
6614
  }
6615
+ if ((domain === "nomos" || domain === "bootstrap") && ["installDomain", "stageDomain", "promoteDomain", "rollbackDomain"].includes(directiveId)) {
6616
+ invalidateInstalledLawRows();
6617
+ }
6600
6618
  scheduleMaintenanceSoon();
6601
6619
  nudgeWatchesSoon();
6602
6620
  const bornFailure = birthOutcomeFailure(res.birthOutcomes);
@@ -6620,7 +6638,7 @@ ${String(commit).toLowerCase()}`;
6620
6638
  if (!domain.trim() || !candidateHash.trim()) {
6621
6639
  return { ok: false, stage: "preflight", error: "the generated model identity is missing" };
6622
6640
  }
6623
- const candidateInstallation = installRowsInner().find(
6641
+ const candidateInstallation = (installRowsInner() ?? []).find(
6624
6642
  (row) => row?.id === `domain-installation:${candidateHash}`
6625
6643
  );
6626
6644
  const candidatePhase = String(candidateInstallation?.data?.["status.phase"] ?? "");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githolon",
3
- "version": "0.103.6",
3
+ "version": "0.103.8",
4
4
  "type": "module",
5
5
  "description": "githolon — the Nomos developer CLI: Rails-style generators for @githolon/dsl domains + the package compiler. Kernel-independent.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@bjorn3/browser_wasi_shim": "0.4.2",
32
32
  "@bufbuild/protobuf": "^2.13.0",
33
- "@githolon/dsl": "^0.103.6",
33
+ "@githolon/dsl": "^0.103.8",
34
34
  "isomorphic-git": "^1.38.4",
35
35
  "tsx": "^4.19.2"
36
36
  },