githolon 0.47.0 → 0.48.1

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.
Files changed (2) hide show
  1. package/dist/cli.mjs +24 -8
  2. package/package.json +3 -3
package/dist/cli.mjs CHANGED
@@ -1618,7 +1618,7 @@ function author(eng, ws, domain, directiveId, payload, controllerHash, opts = {}
1618
1618
  writeWork(eng, `envelope-${seq}.json`, enc3.encode(stringifyBig(envelope)));
1619
1619
  v = offerOnce();
1620
1620
  }
1621
- const res = v.outcome === "admitted" ? { ok: true, head: v.head, intentOut: v.intentOut, ...v.born ? { born: v.born } : {} } : v.outcome === "refused" ? { ok: false, error: v.verdict?.reason ?? v.error } : v;
1621
+ const res = v.outcome === "admitted" ? { ok: true, head: v.head, intentOut: v.intentOut, ...v.born ? { born: v.born } : {}, ...v.birthOutcomes ? { birthOutcomes: v.birthOutcomes } : {} } : v.outcome === "refused" ? { ok: false, error: v.verdict?.reason ?? v.error } : v;
1622
1622
  if (defer && res.ok) (eng.pendingProjection ??= /* @__PURE__ */ new Set()).add(ws);
1623
1623
  return res;
1624
1624
  }
@@ -2044,14 +2044,30 @@ function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
2044
2044
  }
2045
2045
  const childWs = (res.born ?? []).map((b) => b?.workspace).find((w) => typeof w === "string" && w.length > 0);
2046
2046
  if (childWs === void 0) {
2047
+ const planReturnHint = "\n fix: the named step's plan must RETURN AN ARRAY of ops \u2014 fluent builders (ensure()/create().set(...)) record themselves, so end the plan with `return [];`, or wrap standalone ops in `[ ... ]`. Then recompile and rerun.";
2048
+ const recipeHint = "\n fix: the named genesis step is what the child's own gate refused \u2014 correct that directive/payload in the recipe and recompile. A working template: bench/scale/fixtures/estate-birth.";
2049
+ const failing = (res.birthOutcomes ?? []).find((o) => o?.status === "failed" || o?.status === "deferred");
2050
+ if (failing !== void 0) {
2051
+ const reason = String(failing.reason ?? "unknown");
2052
+ const what = failing.status === "deferred" ? `the birth of '${failing.workspace}' was DEFERRED to the edge (no local child custody):
2053
+ ${reason}
2054
+ (expected on a host-less/native peer \u2014 the edge materializes the child on next sync; not a law bug)` : `the child genesis of '${failing.workspace}' FAILED inside the kernel's birth offer-effect:
2055
+ ${reason}${/not iterable/.test(reason) ? planReturnHint : recipeHint}`;
2056
+ return done(false, `child birth ${cb.parentDomain}/${cb.birthDirectiveId} admitted, but ${what}`);
2057
+ }
2047
2058
  const kernelSays = eng.STDERR?.filter((l) => l.includes("birth-effect-failed")).at(-1);
2048
2059
  if (kernelSays !== void 0) {
2049
- const hint = /not iterable/.test(kernelSays) ? "\n fix: the named step's plan must RETURN AN ARRAY of ops \u2014 fluent builders (ensure()/create().set(...)) record themselves, so end the plan with `return [];`, or wrap standalone ops in `[ ... ]`. Then recompile and rerun." : "\n fix: the named genesis step is what the child's own gate refused \u2014 correct that directive/payload in the recipe and recompile. A working template: bench/scale/fixtures/estate-birth.";
2060
+ const hint = /not iterable/.test(kernelSays) ? planReturnHint : recipeHint;
2050
2061
  return done(false, `child birth ${cb.parentDomain}/${cb.birthDirectiveId} admitted, but the child genesis FAILED inside the kernel's birth offer-effect:
2051
2062
  ${kernelSays.replace(/^nomos:\s*/, "")}${hint}`);
2052
2063
  }
2053
2064
  return done(false, `child birth ${cb.parentDomain}/${cb.birthDirectiveId} admitted but the offer-effect spawned no child (born=${JSON.stringify(res.born ?? [])}) and the kernel logged no birth-effect failure \u2014 check the recipe carries a genesis chain (birth({ workspace, genesisChain })), and that the runtime wasm is current (~/.holon/runtime)`);
2054
2065
  }
2066
+ const downgraded = (res.birthOutcomes ?? []).find((o) => o?.workspace === childWs && o?.status === "unwarranted-cert");
2067
+ if (downgraded !== void 0) {
2068
+ const checks = downgraded.certChecks !== void 0 ? ` certChecks=${JSON.stringify(downgraded.certChecks)}` : "";
2069
+ lines.push(`\u26A0 child ${childWs} was born UNWARRANTED \u2014 ${String(downgraded.reason ?? "cert not seeded")}${checks}`);
2070
+ }
2055
2071
  lines.push(`\u2713 child birth ${cb.parentDomain}/${cb.birthDirectiveId} \u2014 ${childWs} born (the offer-effect folded the child genesis through the child's OWN gate)`);
2056
2072
  const installed = (hash) => {
2057
2073
  try {
@@ -4851,12 +4867,12 @@ deploy is OPEN + kernel-gated \u2014 births return no host secret, ownership is
4851
4867
  githolon ws reclaim <name> [--parent <ws>] lawful custody discard via a SIGNED governance offer
4852
4868
  (only a retired workspace; never root)
4853
4869
  githolon deploy [<ws>] [--file <deploy.json>] deploy build/*.deploy.json \u2014 DEFAULT replace-current:
4854
- [--keep-beside] [--retire-replaced] the new law SUPERSEDES the prior install per domain
4855
- key (prints what moved). --keep-beside installs
4856
- beside; --retire-replaced supersedes via Retired
4857
- githolon domains status <ws> per domain key: the current served law + phase +
4858
- [--explain-current-interface] superseded/retired lineage (the served frontier)
4859
- githolon domains retire <ws> <hashOrKey> retire an install (marks it Retired \u2014 replayable,
4870
+ [--keep-beside] [--retire-replaced] new law becomes active; prior install is superseded
4871
+ per domain key (prints what moved). --keep-beside
4872
+ installs beside; --retire-replaced marks retired
4873
+ githolon domains status <ws> per domain key: active law plus superseded/retired
4874
+ [--explain-current-interface] lineage (active = served now)
4875
+ githolon domains retire <ws> <hashOrKey> retire an install (marks it retired \u2014 replayable,
4860
4876
  [--with <hashOrKey>] no longer served) via a signed installDomain offer
4861
4877
  githolon secret set <ws> <push-password> store a git push password (push-to-create birth lane)
4862
4878
  githolon secret rotate <ws> RETIRED \u2014 host holds no ownership credential (410)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githolon",
3
- "version": "0.47.0",
3
+ "version": "0.48.1",
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",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@bjorn3/browser_wasi_shim": "0.4.2",
32
- "@githolon/client": "^0.47.0",
33
- "@githolon/dsl": "^0.47.0",
32
+ "@githolon/client": "^0.48.1",
33
+ "@githolon/dsl": "^0.48.1",
34
34
  "isomorphic-git": "^1.38.4"
35
35
  },
36
36
  "devDependencies": {