@githolon/dsl 0.105.18 → 0.105.22

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.
package/dart/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 0.64.36
2
+
3
+ - Restaged with the current kernel candidate: regenerated vendored assets (kernel release identity is baked into them). Published pub.dev archives are immutable, so regenerated bytes ride their own version.
4
+
5
+ ## 0.64.35
6
+
7
+ - Match application home birth certificates to the locally sealed parent offer's CAS-as-law verification verdict.
8
+
9
+ ## 0.64.34
10
+
11
+ - Keep the typed birth certificate on the birth offer only, so preliminary signer enrolment can settle before generated business APIs open.
12
+
1
13
  ## 0.64.33
2
14
 
3
15
  - Converge arbitrary historical generated-model backlogs while failing a genuinely repeated immutable lifecycle step with a typed stall error.
@@ -7458,6 +7458,12 @@ function createWasmKernelProvider({ span } = {}) {
7458
7458
  return createWasmEnginePlane({ span }).providerFor();
7459
7459
  }
7460
7460
 
7461
+ // src/offer_args.ts
7462
+ function withoutBirthCertificate(args) {
7463
+ const { birthCertificate: _birthCertificate, ...rest } = args;
7464
+ return rest;
7465
+ }
7466
+
7461
7467
  // src/_adapter/custody-transport.ts
7462
7468
  var enc3 = new TextEncoder();
7463
7469
  var dec3 = new TextDecoder();
@@ -8509,6 +8515,37 @@ function createSerializedScheduler() {
8509
8515
  // src/intent_offer_codec.ts
8510
8516
  var encoder = new TextEncoder();
8511
8517
 
8518
+ // src/domain_readiness.ts
8519
+ async function prepareDomainUntilReady({
8520
+ domain,
8521
+ packageHash,
8522
+ directiveId,
8523
+ warm,
8524
+ timeoutMs = 3e4,
8525
+ yieldEvery = 32,
8526
+ now = Date.now,
8527
+ yieldHost = () => new Promise((resolve) => setTimeout(resolve, 0)),
8528
+ onQuantum
8529
+ }) {
8530
+ if (!domain || !packageHash) return { prepared: false, reason: "invalid-target", quanta: 0 };
8531
+ const selector = directiveId ? `plan:offer:${domain}:${directiveId}` : `plan:domain:${domain}`;
8532
+ const deadlineAt = now() + timeoutMs;
8533
+ let quanta = 0;
8534
+ while (now() <= deadlineAt) {
8535
+ quanta += 1;
8536
+ const progress = await warm();
8537
+ onQuantum?.(progress);
8538
+ if (progress.preparedCommandDomain === domain && progress.preparedCommandPackage === packageHash && progress.preparedCommandSelector === selector) {
8539
+ return { prepared: true, quanta };
8540
+ }
8541
+ if (progress.maintenancePending !== true) {
8542
+ return { prepared: false, reason: "maintenance-exhausted", quanta };
8543
+ }
8544
+ if (quanta % Math.max(1, yieldEvery) === 0) await yieldHost();
8545
+ }
8546
+ return { prepared: false, reason: "deadline-exceeded", quanta };
8547
+ }
8548
+
8512
8549
  // src/index.ts
8513
8550
  var enc4 = new TextEncoder();
8514
8551
  var dec4 = new TextDecoder();
@@ -9077,30 +9114,31 @@ ${String(commit).toLowerCase()}`;
9077
9114
  scheduleMaintenanceSoon();
9078
9115
  };
9079
9116
  const prepareDomainReady = async (domain, packageHash, directiveId) => {
9080
- if (!domain || !packageHash) return { prepared: false };
9081
9117
  requestDomainMaintenance(domain, packageHash, directiveId);
9082
- const selector = directiveId ? `plan:offer:${domain}:${directiveId}` : `plan:domain:${domain}`;
9083
- for (let quantum = 0; quantum < 64; quantum += 1) {
9084
- const result = await serialize(async () => JSON.parse(call("query", { queryBytes: qBytes({
9118
+ const readiness = await prepareDomainUntilReady({
9119
+ domain,
9120
+ packageHash,
9121
+ directiveId,
9122
+ warm: () => serialize(async () => JSON.parse(call("query", { queryBytes: qBytes({
9085
9123
  op: "warm",
9086
9124
  interactiveOnly: true,
9087
9125
  requestedDomain: domain,
9088
9126
  ...directiveId ? { requestedDirective: directiveId } : {},
9089
9127
  requestedPackage: packageHash
9090
- }) })), "prepare generated domain", false);
9091
- if (typeof process !== "undefined" && process.env?.NOMOS_DEBUG_RAW) {
9092
- console.error("[nomos] generated domain readiness quantum", result);
9093
- }
9094
- if (result?.preparedCommandDomain === domain && result?.preparedCommandPackage === packageHash && result?.preparedCommandSelector === selector) {
9095
- const index = _maintenanceTargets.findIndex(
9096
- (target) => target.domain === domain && target.packageHash === packageHash && target.directiveId === directiveId
9097
- );
9098
- if (index >= 0) _maintenanceTargets.splice(index, 1);
9099
- return { prepared: true };
9128
+ }) })), "prepare generated domain", false),
9129
+ onQuantum: (result) => {
9130
+ if (typeof process !== "undefined" && process.env?.NOMOS_DEBUG_RAW) {
9131
+ console.error("[nomos] generated domain readiness quantum", result);
9132
+ }
9100
9133
  }
9101
- if (result?.maintenancePending !== true) break;
9134
+ });
9135
+ if (readiness.prepared) {
9136
+ const index = _maintenanceTargets.findIndex(
9137
+ (target) => target.domain === domain && target.packageHash === packageHash && target.directiveId === directiveId
9138
+ );
9139
+ if (index >= 0) _maintenanceTargets.splice(index, 1);
9102
9140
  }
9103
- return { prepared: false };
9141
+ return readiness;
9104
9142
  };
9105
9143
  const scheduleMaintenanceSoon = (delayMs = 0) => {
9106
9144
  if (_disposed || _maintenanceTimer !== null || _maintenanceInFlight) return;
@@ -10008,7 +10046,7 @@ ${String(commit).toLowerCase()}`;
10008
10046
  };
10009
10047
  writeWork(`envelope-${es}.json`, enc4.encode(stringifyBig(enrollEnvelope)));
10010
10048
  const enrollment = JSON.parse(authorViaOffer({
10011
- ...authorArgs,
10049
+ ...withoutBirthCertificate(authorArgs),
10012
10050
  directiveId: "enrollSigner",
10013
10051
  envelopeFile: `/work/envelope-${es}.json`,
10014
10052
  seq: es
@@ -10219,7 +10257,9 @@ ${String(commit).toLowerCase()}`;
10219
10257
  try {
10220
10258
  const readiness = await prepareDomainReady(domain, candidateHash);
10221
10259
  if (readiness.prepared !== true) {
10222
- throw new Error(`the current model '${candidateHash}' has no authenticated '${domain}' USDA slice`);
10260
+ throw new Error(
10261
+ `the current model '${candidateHash}' authenticated '${domain}' USDA slice did not become ready (${readiness.reason} after ${readiness.quanta} maintenance quanta)`
10262
+ );
10223
10263
  }
10224
10264
  return { ok: true, stage: "promoted" };
10225
10265
  } catch (error) {
@@ -10267,7 +10307,9 @@ ${String(commit).toLowerCase()}`;
10267
10307
  const readiness = await prepareDomainReady(domain, candidateHash);
10268
10308
  if (readiness.prepared !== true) {
10269
10309
  throw Object.assign(
10270
- new Error(`the promoted model '${candidateHash}' is active but its authenticated '${domain}' USDA slice is not ready`),
10310
+ new Error(
10311
+ `the promoted model '${candidateHash}' is active but its authenticated '${domain}' USDA slice did not become ready (${readiness.reason} after ${readiness.quanta} maintenance quanta)`
10312
+ ),
10271
10313
  { code: "nomos.model.readiness_failed" }
10272
10314
  );
10273
10315
  }
package/dart/pubspec.yaml CHANGED
@@ -7,7 +7,7 @@ repository: https://github.com/Captain-App/nomos2
7
7
  description: >-
8
8
  Nomos 2 Dart client — generated domain values, intent payloads and application
9
9
  lifecycle types over the typed Nomos kernel protocol and USDA custody model.
10
- version: 0.64.33
10
+ version: 0.64.36
11
11
 
12
12
  environment:
13
13
  sdk: ^3.5.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@githolon/dsl",
3
- "version": "0.105.18",
3
+ "version": "0.105.22",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Nomos 2 domain-authoring DSL: aggregates + directives in TS, executed and encoded to the Rust kernel's wire shapes.",
@@ -6489,6 +6489,12 @@ function createWasmKernelProvider({ span } = {}) {
6489
6489
  return createWasmEnginePlane({ span }).providerFor();
6490
6490
  }
6491
6491
 
6492
+ // ../cloud/web-client/src/offer_args.ts
6493
+ function withoutBirthCertificate(args) {
6494
+ const { birthCertificate: _birthCertificate, ...rest } = args;
6495
+ return rest;
6496
+ }
6497
+
6492
6498
  // ../cloud/web-client/src/_adapter/custody-transport.ts
6493
6499
  var enc3 = new TextEncoder();
6494
6500
  var dec3 = new TextDecoder();
@@ -7540,6 +7546,37 @@ function createSerializedScheduler() {
7540
7546
  // ../cloud/web-client/src/intent_offer_codec.ts
7541
7547
  var encoder = new TextEncoder();
7542
7548
 
7549
+ // ../cloud/web-client/src/domain_readiness.ts
7550
+ async function prepareDomainUntilReady({
7551
+ domain,
7552
+ packageHash,
7553
+ directiveId,
7554
+ warm,
7555
+ timeoutMs = 3e4,
7556
+ yieldEvery = 32,
7557
+ now = Date.now,
7558
+ yieldHost = () => new Promise((resolve) => setTimeout(resolve, 0)),
7559
+ onQuantum
7560
+ }) {
7561
+ if (!domain || !packageHash) return { prepared: false, reason: "invalid-target", quanta: 0 };
7562
+ const selector = directiveId ? `plan:offer:${domain}:${directiveId}` : `plan:domain:${domain}`;
7563
+ const deadlineAt = now() + timeoutMs;
7564
+ let quanta = 0;
7565
+ while (now() <= deadlineAt) {
7566
+ quanta += 1;
7567
+ const progress = await warm();
7568
+ onQuantum?.(progress);
7569
+ if (progress.preparedCommandDomain === domain && progress.preparedCommandPackage === packageHash && progress.preparedCommandSelector === selector) {
7570
+ return { prepared: true, quanta };
7571
+ }
7572
+ if (progress.maintenancePending !== true) {
7573
+ return { prepared: false, reason: "maintenance-exhausted", quanta };
7574
+ }
7575
+ if (quanta % Math.max(1, yieldEvery) === 0) await yieldHost();
7576
+ }
7577
+ return { prepared: false, reason: "deadline-exceeded", quanta };
7578
+ }
7579
+
7543
7580
  // ../cloud/web-client/src/index.ts
7544
7581
  var enc4 = new TextEncoder();
7545
7582
  var dec4 = new TextDecoder();
@@ -8108,30 +8145,31 @@ ${String(commit).toLowerCase()}`;
8108
8145
  scheduleMaintenanceSoon();
8109
8146
  };
8110
8147
  const prepareDomainReady = async (domain, packageHash, directiveId) => {
8111
- if (!domain || !packageHash) return { prepared: false };
8112
8148
  requestDomainMaintenance(domain, packageHash, directiveId);
8113
- const selector = directiveId ? `plan:offer:${domain}:${directiveId}` : `plan:domain:${domain}`;
8114
- for (let quantum = 0; quantum < 64; quantum += 1) {
8115
- const result = await serialize(async () => JSON.parse(call("query", { queryBytes: qBytes({
8149
+ const readiness = await prepareDomainUntilReady({
8150
+ domain,
8151
+ packageHash,
8152
+ directiveId,
8153
+ warm: () => serialize(async () => JSON.parse(call("query", { queryBytes: qBytes({
8116
8154
  op: "warm",
8117
8155
  interactiveOnly: true,
8118
8156
  requestedDomain: domain,
8119
8157
  ...directiveId ? { requestedDirective: directiveId } : {},
8120
8158
  requestedPackage: packageHash
8121
- }) })), "prepare generated domain", false);
8122
- if (typeof process !== "undefined" && process.env?.NOMOS_DEBUG_RAW) {
8123
- console.error("[nomos] generated domain readiness quantum", result);
8124
- }
8125
- if (result?.preparedCommandDomain === domain && result?.preparedCommandPackage === packageHash && result?.preparedCommandSelector === selector) {
8126
- const index = _maintenanceTargets.findIndex(
8127
- (target) => target.domain === domain && target.packageHash === packageHash && target.directiveId === directiveId
8128
- );
8129
- if (index >= 0) _maintenanceTargets.splice(index, 1);
8130
- return { prepared: true };
8159
+ }) })), "prepare generated domain", false),
8160
+ onQuantum: (result) => {
8161
+ if (typeof process !== "undefined" && process.env?.NOMOS_DEBUG_RAW) {
8162
+ console.error("[nomos] generated domain readiness quantum", result);
8163
+ }
8131
8164
  }
8132
- if (result?.maintenancePending !== true) break;
8165
+ });
8166
+ if (readiness.prepared) {
8167
+ const index = _maintenanceTargets.findIndex(
8168
+ (target) => target.domain === domain && target.packageHash === packageHash && target.directiveId === directiveId
8169
+ );
8170
+ if (index >= 0) _maintenanceTargets.splice(index, 1);
8133
8171
  }
8134
- return { prepared: false };
8172
+ return readiness;
8135
8173
  };
8136
8174
  const scheduleMaintenanceSoon = (delayMs = 0) => {
8137
8175
  if (_disposed || _maintenanceTimer !== null || _maintenanceInFlight) return;
@@ -9039,7 +9077,7 @@ ${String(commit).toLowerCase()}`;
9039
9077
  };
9040
9078
  writeWork(`envelope-${es}.json`, enc4.encode(stringifyBig(enrollEnvelope)));
9041
9079
  const enrollment = JSON.parse(authorViaOffer({
9042
- ...authorArgs,
9080
+ ...withoutBirthCertificate(authorArgs),
9043
9081
  directiveId: "enrollSigner",
9044
9082
  envelopeFile: `/work/envelope-${es}.json`,
9045
9083
  seq: es
@@ -9250,7 +9288,9 @@ ${String(commit).toLowerCase()}`;
9250
9288
  try {
9251
9289
  const readiness = await prepareDomainReady(domain, candidateHash);
9252
9290
  if (readiness.prepared !== true) {
9253
- throw new Error(`the current model '${candidateHash}' has no authenticated '${domain}' USDA slice`);
9291
+ throw new Error(
9292
+ `the current model '${candidateHash}' authenticated '${domain}' USDA slice did not become ready (${readiness.reason} after ${readiness.quanta} maintenance quanta)`
9293
+ );
9254
9294
  }
9255
9295
  return { ok: true, stage: "promoted" };
9256
9296
  } catch (error) {
@@ -9298,7 +9338,9 @@ ${String(commit).toLowerCase()}`;
9298
9338
  const readiness = await prepareDomainReady(domain, candidateHash);
9299
9339
  if (readiness.prepared !== true) {
9300
9340
  throw Object.assign(
9301
- new Error(`the promoted model '${candidateHash}' is active but its authenticated '${domain}' USDA slice is not ready`),
9341
+ new Error(
9342
+ `the promoted model '${candidateHash}' is active but its authenticated '${domain}' USDA slice did not become ready (${readiness.reason} after ${readiness.quanta} maintenance quanta)`
9343
+ ),
9302
9344
  { code: "nomos.model.readiness_failed" }
9303
9345
  );
9304
9346
  }
@@ -13904,6 +13946,7 @@ async function nomosInternalOpenGeneratedApplication(options, bind, internals =
13904
13946
  throw applicationError("Sign in changed authority while preparing this application device.", "nomos.authority.changed_during_open");
13905
13947
  }
13906
13948
  authToken = deviceToken;
13949
+ authorityHolon = await measureOpen("bind attested application device", () => mountAuthority(secret, authToken));
13907
13950
  const birthOrRepeat = async () => {
13908
13951
  const birth = await measureOpen("establish private application custody", () => authorityHolon.nomosInternalBirthReceivingGroup({
13909
13952
  parent: application,
@@ -1664,8 +1664,8 @@ const NOMOS_TYPES_DEP = "^0.8.7";
1664
1664
  // 0.48.x: session-bound clients (XClient.bind/NomosClientInterface/DomainClientSessionMismatch/
1665
1665
  // DomainNotInstalledForSession, engine.follow, pendingConflicts lanes) — the generated client
1666
1666
  // REQUIRES this surface. 0.48.1 fixes NomosSession.watchPendingConflicts delegation.
1667
- const NOMOS_CLIENT_DEP = "^0.64.33";
1668
- const NOMOS_FLUTTER_DEP = "^0.63.57";
1667
+ const NOMOS_CLIENT_DEP = "^0.64.36";
1668
+ const NOMOS_FLUTTER_DEP = "^0.63.61";
1669
1669
  // DRIFT TRIPWIRE: pubspec_pins.test.ts asserts these equal the CURRENT versions in dsl/dart/pubspec.yaml
1670
1670
  // and dsl/dart_types/pubspec.yaml — a Dart release without this bump fails the suite, so tenants never
1671
1671
  // land back in dependency_overrides (the exact co2 report this closes, third occurrence).