@entrorove/skill 0.1.62 → 0.1.67

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 (89) hide show
  1. package/CAPABILITY-MAP.md +30 -2
  2. package/CHANGELOG.md +25 -0
  3. package/DELIVERY-BOUNDARIES.md +2 -0
  4. package/DESIGN-GATES.md +160 -0
  5. package/IDE-EXECUTION.md +32 -3
  6. package/REUSE-DISCIPLINE.md +16 -2
  7. package/SKILL.md +9 -3
  8. package/blueprint-criterion-runner.mjs +1 -1
  9. package/cli-input.mjs +22 -0
  10. package/cli.mjs +13 -12
  11. package/cloud-task-client.mjs +10 -2
  12. package/cloud-task-images.mjs +39 -0
  13. package/design-browser-checks.mjs +86 -0
  14. package/design-browser-identity.mjs +13 -0
  15. package/design-browser-state.mjs +41 -0
  16. package/design-browser.mjs +181 -0
  17. package/design-context.mjs +34 -0
  18. package/design-contracts.d.mts +4 -0
  19. package/design-contracts.mjs +77 -0
  20. package/design-declaration.mjs +17 -0
  21. package/design-frameworks.mjs +4 -0
  22. package/design-gate.mjs +19 -0
  23. package/design-lint.mjs +115 -0
  24. package/design-local-contracts.mjs +15 -0
  25. package/design-operations.mjs +81 -0
  26. package/design-policy.d.mts +5 -0
  27. package/design-policy.mjs +137 -0
  28. package/design-release.mjs +25 -0
  29. package/design-research.mjs +99 -0
  30. package/design-runner.mjs +31 -0
  31. package/design-store.mjs +116 -0
  32. package/design-ui.mjs +24 -0
  33. package/ide-exit.mjs +49 -9
  34. package/ide-hook.mjs +2 -2
  35. package/install-identity.mjs +16 -0
  36. package/local-cli.mjs +3 -1
  37. package/local-contracts.mjs +6 -1
  38. package/local-discipline-actions.mjs +5 -0
  39. package/local-discipline-batch.mjs +12 -3
  40. package/local-discipline-contracts.mjs +15 -3
  41. package/local-discipline-gate.mjs +17 -2
  42. package/local-discipline-repository.mjs +11 -5
  43. package/local-error.mjs +18 -1
  44. package/local-execution.mjs +2 -1
  45. package/local-finder-plist.mjs +87 -0
  46. package/local-finder-store.mjs +115 -0
  47. package/local-mutation-authority.mjs +13 -0
  48. package/local-mutation-completion-evidence.mjs +83 -0
  49. package/local-mutation-consumption.mjs +33 -10
  50. package/local-mutation-environment-observation.mjs +85 -0
  51. package/local-mutation-finder-observation.mjs +58 -0
  52. package/local-mutation-wire.mjs +26 -8
  53. package/local-runner-discipline.mjs +17 -3
  54. package/local-scope-files.mjs +3 -1
  55. package/local-scope-font.mjs +45 -0
  56. package/local-scope-repository.mjs +16 -3
  57. package/local-scope-zip.mjs +114 -0
  58. package/manifest.json +1 -1
  59. package/member-producer-repair-authority.mjs +48 -0
  60. package/model-images.d.mts +9 -0
  61. package/model-images.mjs +87 -0
  62. package/mutation-challenge-refresh.mjs +51 -0
  63. package/mutation-client.mjs +42 -24
  64. package/mutation-connection-state.mjs +17 -0
  65. package/package-archive.mjs +54 -0
  66. package/package-replacement.mjs +48 -0
  67. package/package.json +50 -6
  68. package/release-state.json +87 -45
  69. package/release.mjs +11 -1
  70. package/releases.json +30 -0
  71. package/remote-client.mjs +1 -1
  72. package/remote-transport.mjs +48 -16
  73. package/reuse-discipline-release.mjs +3 -1
  74. package/rollback-history.mjs +51 -0
  75. package/rollback-runner.mjs +77 -0
  76. package/scope-amendment-client.mjs +1 -1
  77. package/scope-amendment-consumption.mjs +32 -0
  78. package/scope-amendment-mutation.mjs +2 -3
  79. package/scope-amendment-observer.mjs +2 -1
  80. package/scope-amendment-remote.mjs +12 -2
  81. package/scope-amendment-retirement.mjs +54 -0
  82. package/scope-amendment-state.mjs +7 -4
  83. package/task-entry-client.mjs +1 -0
  84. package/version.mjs +20 -3
  85. package/workflow-local-runner.mjs +9 -0
  86. package/workflow-observation-client.mjs +11 -0
  87. package/workflow-observation-connection.mjs +2 -1
  88. package/workflow-observation-remote.mjs +26 -1
  89. package/workflow-observation-wire.mjs +6 -3
@@ -0,0 +1,17 @@
1
+ import { canonical } from './local-integrity.mjs';
2
+ import { readMutationJson14, mutationFail14 } from './local-mutation-files.mjs';
3
+ import { buildInvocation } from './remote-client.mjs';
4
+
5
+ export const mutationConnectionSchema = 'entrorove.mutation-connection-state/1.0';
6
+ export async function readMutationConnection(location, identity) {
7
+ let value;
8
+ try { value = await readMutationJson14(location.file); }
9
+ catch (error) { if (error.code !== 'ENOENT') throw error; }
10
+ if (!value) return { schemaVersion: mutationConnectionSchema, identity };
11
+ if (value.schemaVersion !== mutationConnectionSchema || canonical(value.identity) !== canonical(identity)
12
+ || value.pending && (value.pending.requestId !== buildInvocation(value.pending.operation, value.pending.input).requestId
13
+ || !['mutation-snapshot-challenge', 'mutation-pass-issue', 'mutation-pass-settle'].includes(value.pending.operation))) {
14
+ mutationFail14('ENTROROVE_MUTATION_CONNECTION_BINDING', 'Mutation connection journal differs from the original repository, request or physical key');
15
+ }
16
+ return value;
17
+ }
@@ -0,0 +1,54 @@
1
+ import { gunzipSync } from 'node:zlib';
2
+ import { zipMetadataEntries } from './local-scope-zip.mjs';
3
+
4
+ const MAX = 64 * 1024 * 1024;
5
+ function octal(bytes) {
6
+ const value = bytes.toString('ascii').replace(/\0.*$/s, '').trim();
7
+ return /^[0-7]+$/.test(value) ? parseInt(value, 8) : value === '' ? 0 : NaN;
8
+ }
9
+ function tarEntries(bytes) {
10
+ const entries = new Map(); let offset = 0, count = 0, total = 0;
11
+ while (offset + 512 <= bytes.length) {
12
+ const header = bytes.subarray(offset, offset + 512);
13
+ if (header.every(value => value === 0)) {
14
+ return bytes.length - offset >= 1024 && bytes.subarray(offset).every(value => value === 0) ? entries : null;
15
+ }
16
+ let checksum = 0;
17
+ for (let i = 0; i < 512; i++) checksum += i >= 148 && i < 156 ? 32 : header[i];
18
+ if (checksum !== octal(header.subarray(148, 156)) || ++count > 10_000) return null;
19
+ const text = (start, size) => new TextDecoder('utf-8', { fatal: true }).decode(header.subarray(start, start + size)).replace(/\0.*$/s, '');
20
+ const prefix = text(345, 155), name = `${prefix ? `${prefix}/` : ''}${text(0, 100)}`;
21
+ const size = octal(header.subarray(124, 136)), type = header[156];
22
+ if (!name || name.startsWith('/') || /[\\\u0000-\u001f\u007f]/.test(name) || /^[A-Za-z]:/.test(name)
23
+ || name.split('/').some(part => part === '..' || part === '.') || entries.has(name)
24
+ || ![0, 48, 53].includes(type) || !Number.isSafeInteger(size) || size < 0 || size > 16 * 1024 * 1024
25
+ || (total += size) > MAX || type === 53 && size !== 0) return null;
26
+ const end = offset + 512 + size, next = offset + 512 + Math.ceil(size / 512) * 512;
27
+ if (next > bytes.length || !bytes.subarray(end, next).every(value => value === 0)) return null;
28
+ const metadata = /(?:^|\/)(?:package|manifest)\.json$/.test(name);
29
+ if (metadata && size > 262_144) return null;
30
+ entries.set(name, metadata ? bytes.subarray(offset + 512, end) : null);
31
+ offset = next;
32
+ }
33
+ return null;
34
+ }
35
+ export function archiveFormat(target, bytes) {
36
+ if (bytes.length >= 4 && bytes.readUInt32LE(0) === 0x04034b50 || /\.(?:zip|apk|jar|war)$/i.test(target)) return 'zip';
37
+ if (bytes[0] === 31 && bytes[1] === 139 || /\.(?:tgz|tar\.gz)$/i.test(target)) return 'tgz';
38
+ if (/\.tar$/i.test(target) || bytes.length >= 512 && bytes.toString('ascii', 257, 262) === 'ustar') return 'tar';
39
+ if (/\.(?:7z|rar|exe|msi|dmg|pkg|ipa|deb|rpm|appx|nupkg)$/i.test(target)) return 'unsupported';
40
+ return null;
41
+ }
42
+ export function packageArchiveEntries(target, bytes) {
43
+ try {
44
+ if (bytes.length > MAX) return null;
45
+ const format = archiveFormat(target, bytes);
46
+ if (format === 'zip') return zipMetadataEntries(bytes);
47
+ if (format === 'tar') return tarEntries(bytes);
48
+ if (format === 'tgz') {
49
+ const unpacked = gunzipSync(bytes, { maxOutputLength: MAX, info: true });
50
+ return unpacked.engine.bytesWritten === bytes.length ? tarEntries(unpacked.buffer) : null;
51
+ }
52
+ } catch { /* Corrupt or unsupported package structure never proves an upgrade. */ }
53
+ return null;
54
+ }
@@ -0,0 +1,48 @@
1
+ import path from 'node:path';
2
+ import { compareVersions, versionParts } from './version.mjs';
3
+ import { mutationFail14 } from './local-mutation-files.mjs';
4
+ import { archiveFormat, packageArchiveEntries } from './package-archive.mjs';
5
+
6
+ function metadata(bytes) {
7
+ try {
8
+ if (!bytes || bytes.length > 262_144) return null;
9
+ const value = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes));
10
+ if (typeof value?.name !== 'string' || !/^(?:@[a-z0-9._-]+\/)?[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value.name)) return null;
11
+ versionParts(value.version);
12
+ return { name: value.name, version: value.version };
13
+ } catch { return null; }
14
+ }
15
+ function archiveIdentity(target, bytes) {
16
+ const entries = packageArchiveEntries(target, bytes);
17
+ if (!entries) return null;
18
+ // Prefer the actual package root, never a nested dependency or archive name.
19
+ const candidates = [...entries.keys()].filter(name => /^(?:[^/]+\/)?(?:package|manifest)\.json$/.test(name));
20
+ const direct = candidates.filter(name => !name.includes('/'));
21
+ const selected = direct.length ? direct : candidates;
22
+ const primary = selected.filter(name => /(?:^|\/)package\.json$/.test(name));
23
+ const identities = (primary.length ? primary : selected).map(name => metadata(entries.get(name)));
24
+ if (!identities.length || identities.some(value => !value)) return null;
25
+ if (identities.some(value => value.name !== identities[0].name || value.version !== identities[0].version)) return null;
26
+ return identities[0];
27
+ }
28
+ export function assertPackageReplacement(target, original, candidate) {
29
+ const before = Buffer.from(original), after = Buffer.from(candidate);
30
+ if (before.equals(after)) return null;
31
+ const archive = archiveFormat(target, before) || archiveFormat(target, after);
32
+ const manifest = /^(?:package|manifest)\.json$/i.test(path.posix.basename(target));
33
+ if (!archive && !manifest) return null;
34
+ // A non-package manifest (e.g. web app icons) is outside version comparison.
35
+ const old = archive ? archiveIdentity(target, before) : metadata(before);
36
+ const next = archive ? archiveIdentity(target, after) : metadata(after);
37
+ if (!archive && !old && !next) {
38
+ try { if (!Object.hasOwn(JSON.parse(before), 'version') && !Object.hasOwn(JSON.parse(after), 'version')) return null; }
39
+ catch { /* Invalid metadata cannot establish a safe replacement. */ }
40
+ if (!/package\.json$/i.test(target) && !/"version"\s*:/.test(before + after)) return null;
41
+ }
42
+ if (!old || !next) mutationFail14('ENTROROVE_PACKAGE_VERSION_UNKNOWN', 'Package replacement requires verifiable embedded identity and version; preserve both inputs and obtain evidence');
43
+ if (old.name !== next.name) mutationFail14('ENTROROVE_PACKAGE_IDENTITY_CHANGED', 'A different package identity cannot replace the original package');
44
+ const order = compareVersions(next.version, old.version);
45
+ if (order < 0) mutationFail14('ENTROROVE_PACKAGE_DOWNGRADE', 'Older embedded package version cannot overwrite a newer package; use the independently signed exact rollback entry for an intended rollback');
46
+ if (archive && order === 0) mutationFail14('ENTROROVE_PACKAGE_VERSION_CONFLICT', 'Same-version archive has different bytes; filenames, timestamps and caller labels cannot authorize replacement');
47
+ return { package: old.name, previousVersion: old.version, candidateVersion: next.version };
48
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entrorove/skill",
3
- "version": "0.1.62",
3
+ "version": "0.1.67",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "entrorove": "cli.mjs"
@@ -93,10 +93,18 @@
93
93
  "scope-amendment-state.mjs",
94
94
  "scope-amendment-wire.mjs",
95
95
  "scope-amendment-remote.mjs",
96
+ "scope-amendment-retirement.mjs",
96
97
  "scope-amendment-observer.mjs",
97
98
  "scope-amendment-mutation.mjs",
99
+ "scope-amendment-consumption.mjs",
100
+ "mutation-connection-state.mjs",
101
+ "mutation-challenge-refresh.mjs",
98
102
  "scope-amendment-reference.mjs",
99
103
  "cloud-task-client.mjs",
104
+ "cloud-task-images.mjs",
105
+ "cli-input.mjs",
106
+ "model-images.mjs",
107
+ "model-images.d.mts",
100
108
  "task-entry-client.mjs",
101
109
  "task-identity.mjs",
102
110
  "task-identity.d.mts",
@@ -147,6 +155,8 @@
147
155
  "local-scope-candidate.mjs",
148
156
  "local-scope-context.mjs",
149
157
  "local-scope-files.mjs",
158
+ "local-scope-font.mjs",
159
+ "local-scope-zip.mjs",
150
160
  "local-scope-import-expressions.mjs",
151
161
  "local-scope-create-require.mjs",
152
162
  "local-scope-require-resolution.mjs",
@@ -257,12 +267,44 @@
257
267
  "local-approved-process.mjs",
258
268
  "local-approved-supervisor.mjs",
259
269
  "local-mutation-consumption.mjs",
270
+ "local-mutation-completion-evidence.mjs",
271
+ "local-mutation-environment-observation.mjs",
272
+ "local-mutation-finder-observation.mjs",
273
+ "local-finder-store.mjs",
274
+ "local-finder-plist.mjs",
260
275
  "workflow-observation-client.mjs",
261
276
  "workflow-observation-connection.mjs",
262
277
  "workflow-observation-remote.mjs",
263
278
  "workflow-observation-runner.mjs",
264
279
  "workflow-observation-state.mjs",
265
- "workflow-observation-wire.mjs"
280
+ "workflow-observation-wire.mjs",
281
+ "member-producer-repair-authority.mjs",
282
+ "design-browser-checks.mjs",
283
+ "design-browser-identity.mjs",
284
+ "design-browser-state.mjs",
285
+ "design-browser.mjs",
286
+ "design-context.mjs",
287
+ "design-contracts.d.mts",
288
+ "design-contracts.mjs",
289
+ "design-declaration.mjs",
290
+ "design-frameworks.mjs",
291
+ "design-gate.mjs",
292
+ "design-lint.mjs",
293
+ "design-local-contracts.mjs",
294
+ "design-operations.mjs",
295
+ "design-policy.d.mts",
296
+ "design-policy.mjs",
297
+ "design-research.mjs",
298
+ "design-runner.mjs",
299
+ "design-store.mjs",
300
+ "design-ui.mjs",
301
+ "DESIGN-GATES.md",
302
+ "design-release.mjs",
303
+ "install-identity.mjs",
304
+ "package-archive.mjs",
305
+ "package-replacement.mjs",
306
+ "rollback-history.mjs",
307
+ "rollback-runner.mjs"
266
308
  ],
267
309
  "scripts": {
268
310
  "test": "node test/run.mjs",
@@ -279,13 +321,15 @@
279
321
  "node": ">=20"
280
322
  },
281
323
  "dependencies": {
324
+ "@vue/compiler-sfc": "3.5.43",
282
325
  "ajv": "8.17.1",
326
+ "playwright-core": "1.64.1",
327
+ "postcss": "8.5.28",
328
+ "svelte": "5.57.1",
329
+ "tree-sitter-wasms": "0.1.13",
283
330
  "typescript": "5.9.3",
284
- "yaml": "2.9.1",
285
331
  "web-tree-sitter": "0.24.7",
286
- "tree-sitter-wasms": "0.1.13",
287
- "@vue/compiler-sfc": "3.5.43",
288
- "svelte": "5.57.1"
332
+ "yaml": "2.9.1"
289
333
  },
290
334
  "repository": {
291
335
  "type": "git",
@@ -1,48 +1,64 @@
1
1
  {
2
2
  "schemaVersion": "entrorove.release-state/1.0",
3
- "version": "0.1.62",
4
- "digest": "98f3367ea7253d0aa7e37473c9151a9dcf4308615ccb146b8da14603f3d1fe86",
3
+ "version": "0.1.67",
4
+ "digest": "d9a7da983f154ca0bfdd449911ae3c5e7e3af99e8dfb6ccd8eb9392c179f9e34",
5
5
  "files": {
6
+ "cloud-task-images.mjs": "a260a94b6b1b47df97a8cc8657dfdce1fd37ec752f1cc2bad2542eaa28622bdb",
7
+ "model-images.mjs": "ab85ac0c44d857c1f460de3e9c06eb1d37b57688b4a6061405c0a44ae4d40bd7",
8
+ "model-images.d.mts": "f1506cfb8ad287869f92f4d9074c7c759c6c28b182aeb325dd5f22a38926f24c",
9
+ "cli-input.mjs": "44dc2692714023b622a9370c13cabc09c7c39e6aea6e7183b80ae5bcd2e8d24e",
10
+ "scope-amendment-retirement.mjs": "849f2b5fc8ec5204d7a58222f7ee775b7514244b854439ef3549563cd44c14c2",
11
+ "scope-amendment-consumption.mjs": "12a1dfd1429350cc9503957224398524c077aed6c697228c9870aa95c245ee7d",
12
+ "mutation-connection-state.mjs": "05bed65a4636a2128e9a48d2e910c5f5a25f0e990f181f58008dd09cac0fbcb5",
13
+ "mutation-challenge-refresh.mjs": "eac9b18bdfbd968d815321e66c4f6e482fb1be59662abb9dc8b02f35b9ced809",
14
+ "local-scope-font.mjs": "a69f9da932ed41aa4718036f98f75c0b17ba7f616a5c8bf5623fa9ed697499fa",
15
+ "local-scope-zip.mjs": "46c61d201a570c769fc4896fc19090e790765af5f28596557a288bd9b762c69e",
16
+ "member-producer-repair-authority.mjs": "1e84e5e77ba5ee9a0dcaa4d843061c7b5447191852d7b2fb603b91cfa7c796e4",
17
+ "local-mutation-completion-evidence.mjs": "d894f7f7d3b5a906e4c869b02ab0abacbd16dc35987a2fe14ff8fa2cf264a62b",
18
+ "local-mutation-environment-observation.mjs": "8afffe21cb9a7f6cc889e5af9b5c9953684635a90ca4b98d797547bd7831bafb",
19
+ "local-mutation-finder-observation.mjs": "438dd33e62e03e02b55897a28b3ba59d12734b6e5142525b299f77c21537280b",
20
+ "local-finder-store.mjs": "227191c52174386ace6391e072b78a6e4cc658a6d9dd37036ffd7e97bbf4336a",
21
+ "local-finder-plist.mjs": "c83ddab2375a54d612d395a5518db8ae05212437d82bf3f8b76930a8859c8481",
6
22
  "connected-cli.mjs": "79c3359303957a9ebb8987e3dfb181f189d380fa02ef4462683b786aedfc7802",
7
23
  "local-approved-process.mjs": "442856df788e63f38757439ba0657d1c689aaf797631a955fae3dd639e844e6d",
8
24
  "local-approved-supervisor.mjs": "87142a4c13d27c8265cc1fd7fc9088988da9bbb02134164e1a7c5417da926ac7",
9
- "local-mutation-consumption.mjs": "13479c8ac1e711bce4be407f24d294372e6d45afbc66c5ae8a8a694cb937b713",
25
+ "local-mutation-consumption.mjs": "1b033655f817ec576410b7f91f1640b8651f3cff0668154fb8e6e14e7b31d8f4",
10
26
  "workflow-local-acceptance.mjs": "743ae19c1edff473af2596c7356ddff3892ff9acfb3bcaa660b662eacba463a8",
11
- "workflow-observation-client.mjs": "4ad34e5a467954ad1943a0f003e07dd6c4fb919d197ae9175a8b0c9b6e2aff32",
12
- "workflow-observation-connection.mjs": "00e887c1430b13fc49c3f51ae814edb7a05c6d61ed7091262ae91a0706fad084",
13
- "workflow-observation-remote.mjs": "26f7d741d2e00e4cb05240d8999378b6db3cb1c52eaa586ac20f9448fe296e4b",
27
+ "workflow-observation-client.mjs": "5032a6cd7d1e0fa6b80170a7c1298cf14f2c21cf017426465aa48e2a944bcf08",
28
+ "workflow-observation-connection.mjs": "b1958417d9f94bf7b9474c69acc82fa5de7f7c4e37aa7f3977a8f7e3836a82b1",
29
+ "workflow-observation-remote.mjs": "3a444cab88b426e6af018625cfb4aaddcc5d7c05c505ed18715494dd18a6e1de",
14
30
  "workflow-observation-runner.mjs": "3eb8280ec7abffcb30398e3f4e5f7d0ec3df4385fa720f188ed83757b87cd977",
15
31
  "workflow-observation-state.mjs": "a525046df9b3de75b10d2bf35c2b6d7719f12a647e4aee1f1e85dbdbfb167321",
16
- "workflow-observation-wire.mjs": "90047ca4fe028e4931406ff26d4fe871bcafb28a59c456795aae4f5c4b739e43",
32
+ "workflow-observation-wire.mjs": "df0d5e4f8fde0be8bf06c6c4590cd158b4da05ebe6ef3169d2366db706f3327f",
17
33
  "local-preserved-mutation-protection.mjs": "5186a2f682e66c6828d1504ee074554cbae0fda58a5f446fbadfb868e1682dae",
18
34
  "local-preserved-mutation-signer.mjs": "2b0771cbdd18ba00267aa441b7892cd04feab9f8543ae5e2703430b1e580747f",
19
35
  "local-preserved-mutation-state.mjs": "337a172b2d0a03b0d5a89b8483afdd9a043a4999fe38f87679633c98c450126b",
20
36
  "local-preserved-mutation-wire.mjs": "6768ce5713d70f7c0bd05f2286bc4b32cd9b8bb1d3c8b9cc7a451cb9b176824d",
21
37
  "local-delegated-modify-analysis.mjs": "f87148ddb023b79e241ca97db582991da8d0e1a51b26b1d9bc2799a76efd7297",
22
- "mutation-client.mjs": "62f8de10fedac4d4dacc7c738290095fcb4c0605c2b82b3a72500199dc1dffb9",
38
+ "mutation-client.mjs": "da09b2aa301da8cbc7b830a3dfe1fbf2617798ae26e4ccddea802443a8253527",
23
39
  "cloud-mutation-authority.mjs": "c7226e882a4f3be4d2f55728f515d5a815c0aa1f21aa5e4689314e6e6a8c66a2",
24
40
  "ide-code-mode.mjs": "f8ba4de33632ab4c6df52dab52f392414b4632c7e94b218b8065677970c075c7",
25
41
  "ide-command.mjs": "dbdb4cbf8e870c93a746ca176cbbdeffc0458de1293583d3eb9af4c256541370",
26
- "ide-hook.mjs": "c44d37997fae55bd113ff9044947c54152aaccdf081d0f39d437179d33e9a4e2",
42
+ "ide-hook.mjs": "f2a00be9293ce13ba8b8547142744a7edc43d4e2e82727e9f7923ba79a244d75",
27
43
  "ide-install.mjs": "1c80e191ddc2ac8789f0c71edc7bc8c3c8cea6bfab537cdf6baffa4a6ce3419c",
28
44
  "ide-session.mjs": "5277a6ea3445bfa9b2e28847372d963da77787d472d0414c0e253d4fe29f74ec",
29
45
  "break-glass.mjs": "6ec9f97c5d68bb33121b2374c06b9d4c8eb3419b52d00849fec7124bc63e4582",
30
46
  "ide-results.mjs": "baa0618845ced901334644479bf4e0d298bad3f955bc18846752de6c283a5573",
31
47
  "ide-local-acceptance.mjs": "238eec6d7b6093fb8ad022da0ed3383a48ba2ffcf693e3ce8a241cf9624088d8",
32
48
  "ide-queue.mjs": "806e716c775fd0079417027b135977c8516f47dddb0bc5ca19e32a355dab0e9e",
33
- "local-discipline-actions.mjs": "418c220b8c8ef59cb8092b6eb680bb75a93b9fad1a09412b1efa98a78afff11b",
49
+ "local-discipline-actions.mjs": "c8d5fd34ca85c646874c98d2e85977346608a0dd59e7b97744f3c536a39af68c",
34
50
  "local-discipline-analysis.mjs": "e887abdd1c6d6ba59ef7323e9035528f0491e5458ca8159985ec26e1ca67a4af",
35
- "local-discipline-batch.mjs": "2cc90dbae55efdee0c445da399c0a9acafa92e915344c25208ebca554fc4c9e9",
51
+ "local-discipline-batch.mjs": "8c0abfaac41ba7a05aef4aaa4f3cae4473799f49808c6d73dce6eab768afce3b",
36
52
  "local-typescript-function-reference.mjs": "af682b479fe0d69a5ecd62232406bb8078408ec8710733cfed9ae6b059762ba5",
37
53
  "local-scope-import-expressions.mjs": "20f1e065582c68d2334e0dfaa130a559ff19886a57f9038dc569f65993bb06c8",
38
- "local-discipline-contracts.mjs": "ab0c11dcc4a6ffd3cb79b53862c19308eaf0d159deee7f9958266852d977363e",
54
+ "local-discipline-contracts.mjs": "25d2bdbcb2698a1927ce5ef43e33052ed90bfe7dbc7c6a708f2bfd4a258609fd",
39
55
  "local-discipline-contracts.d.mts": "defc684c78dc88afa1c54340ab4a01ae36db7aa11257cbe1f5cd323f608c78c4",
40
- "local-discipline-gate.mjs": "1d83bf32fde0d8f5ad1e4659f7edcb2797b1f4c9aee3ae548dad9d9447df3849",
56
+ "local-discipline-gate.mjs": "0b85dbdc4c15c5183d821ef4b50c48c59c652801eeb8072e7241e442a516f252",
41
57
  "local-discipline-native.mjs": "8b99b5ce951cab3c1426428ad807650c61c0ffb2c346d747b73b99057b382049",
42
58
  "local-discipline-operations.mjs": "9fcb7b8889b7718d42e1d37936485d8198d5017d405e0cdbbabdbbd12fcc9d48",
43
- "local-discipline-repository.mjs": "b6392e02ecae333dfdc8df41f203fd69bed035d88b15b16d112ab1897b3c297c",
59
+ "local-discipline-repository.mjs": "ca997be4289180600cb97ba2938b6b99210e5d5d5317374b130a886cb712d624",
44
60
  "local-discipline-snapshot.mjs": "8fd35b2cfbece8f64579f144f589a66dec9b6022d50fe931c4c1f886cb83134d",
45
- "local-runner-discipline.mjs": "8d4ada838f81d54963adbb7e433f1ca80ae1934ea126f90c59a49d29742979c4",
61
+ "local-runner-discipline.mjs": "99935b1be0d660d6cd45f5facd911bf1e1203ec74953acef5f12a7ebafacffb2",
46
62
  "local-integrity.d.mts": "21357f306234bd841c0d3d90bf2d09f7663f63746f897b9f38190428ae8198b3",
47
63
  "local-equivalence-runner.mjs": "df2f406c693c4da7bb30542ec7b4d46a9336f56e9fdd263196c0f3a73d2f6e91",
48
64
  "validator-runtime-build.mjs": "da20bd19eb088d79d62e33969b4c075dc2199761b395e40060227f8f86b9519a",
@@ -50,9 +66,35 @@
50
66
  "runtime/validator-runtime-v7.0.44.d.mts": "7797edbfe2f7de24da370204dce4dfd22822a1bd80df93514fff900b98afe36f",
51
67
  "snapshot-retention.mjs": "ca46aeb36b1a5a24fe7e967031a71b9a3d33f40cb715d344402cbe0dc9c425cb",
52
68
  "snapshot-cleanup-journal.mjs": "76a9684cc95b4eb076e1298d78a9dff37948b00d9607b8f546c599072d3ed331",
53
- "IDE-EXECUTION.md": "65ccbed8bba6e9e60a2fee2276cbde19053aa6909d9bd1415d5b5f9ee3baccec",
54
- "REUSE-DISCIPLINE.md": "5b214cf313e7f715f52d54e28093a2d038f0f196ca64b15d1c49587b9d8eecf8",
55
- "reuse-discipline-release.mjs": "7f55ae10ec3396ed3bc5430a0c64f94c33c2dfbc57b32084caab92fd5fd1586f",
69
+ "IDE-EXECUTION.md": "e7e9c19f19f095f5483784bb8de1e610eb008e8e62504b4229e38a9728b89573",
70
+ "REUSE-DISCIPLINE.md": "140e8eef2402d7adcae3eafce01f26965dcbd4c270af2387d4b17d37d63ed93d",
71
+ "install-identity.mjs": "41b8c8d8b3e265d2057a07bf7dc98066c34d6b05c65bf7159ca9609c01ee4646",
72
+ "package-archive.mjs": "e06db8d709db8710bead254ee950b78928088be01c58dcea383beaa5eb574e59",
73
+ "package-replacement.mjs": "02ca3fa4ada2addc479f8cb1b8099cd1b574adfeaa2f3c8ecf612ac2cb9127d3",
74
+ "rollback-history.mjs": "0ebd59e1d25ad5f95fa58ce5050cb67b018a391cad162d7643bde3aa4c176528",
75
+ "rollback-runner.mjs": "02f237b8802a2dc4cd5b545904fa102481277898938e723218fa6e75b18b24a7",
76
+ "reuse-discipline-release.mjs": "f51997624a959d2c133d4ce189eff0724ce65e1b62f9406497251fd2f2257b0c",
77
+ "design-browser-checks.mjs": "2aefcd074f55568259bebbd760866fac437527bcd0358b5b2438da56524a27e2",
78
+ "design-browser-identity.mjs": "cb06f4429d0ee84d6608f87a44fb530af46636dd645cf857778c7d8c4d73e12f",
79
+ "design-browser-state.mjs": "386a76d418aa8445ba94ae9497a91445c7899e148ea19418188d48cb757170af",
80
+ "design-browser.mjs": "4811b1f039dc7a5b41336b20b9feef88fbc3d653f8b03cede2dd06315736f155",
81
+ "design-context.mjs": "2e0d764a2a55d05e00477f984135d77808307afb1fc8668f35910612b5e4cea5",
82
+ "design-contracts.d.mts": "af1a5740557d2c8ce90702179e78797a618544c89dbbb3962cf92bef24f9c2b8",
83
+ "design-contracts.mjs": "e5bd6f6e05f40f229f6244672926615ebfb6f5764530ffcf054d548fc8639f36",
84
+ "design-declaration.mjs": "f6c7f56e4697a05a0a832fcdb5a3b07ffe60aa602ba0681cfd09948bdcafc8ad",
85
+ "design-frameworks.mjs": "5d09a8e56068302f951a6236f36cb50e655fb6d6ffbeb2e4eb4b19f025c8a411",
86
+ "design-gate.mjs": "567eb666937704123ef72f26ad1145d9d32f7dfde59553381286de083e4146cb",
87
+ "design-lint.mjs": "9e27d0a6041fbb7f7f2b88b0c46d69dd790582426b534ad436b151d81512a66e",
88
+ "design-local-contracts.mjs": "f331bd1d21f30994596bd9c46008e551f3ed2b6d5eea19d4546c7da0663b768a",
89
+ "design-operations.mjs": "e21e9fcf9fd16115c72558c7cd7a57f7213a30934bde0f1b649aec647d1205f7",
90
+ "design-policy.d.mts": "48fed97fca0f97fef786f182f666d7e6e33efb814cda1991239e1c38984cf80e",
91
+ "design-policy.mjs": "0ffd3cd9381589f7fd3b817d7ee34e6b2bd284a86fd9f31d64fd2c9cde28ca2f",
92
+ "design-research.mjs": "d1552f47dffec787acf2b702a6bb2a31b50ba5a3f82a6cb1c02fb2ffae2aee7f",
93
+ "design-runner.mjs": "85ffbdc133e58da465ec1229c1c9a0e2c4c694bf7b7be185fa4aafabe58fde45",
94
+ "design-store.mjs": "51420d66dd1c4350e4577d73634b51b62ffbcc99c614b3b02f17e82537170af8",
95
+ "design-ui.mjs": "6dd3c5a97ec67e8f1c23e57bcab5eb64380c520befada6f264c4bfcf6b11c9f7",
96
+ "DESIGN-GATES.md": "17b7db53b84df11d70a1d93a21a068ec1257c14c0f24af64e917d52ba1c91549",
97
+ "design-release.mjs": "5fbfa74f2de9a7adbee4e14136b874bca2c12414c0fe21cc2520f2029e8caa30",
56
98
  "local-final-gate16.mjs": "083aec470670e6cdb7ad2ab27b7a51b53a9ec3a8b4121cb9cbfa17d9940892c2",
57
99
  "local-final-gate16-checks.mjs": "1dd30e9666d458d8b12ca6e4975f6f0ac8450c3ea9cbecc7401ae037f66b589a",
58
100
  "local-final-gate16-worker.mjs": "344d64b6c1c5552b96960e0d8514a876a3dbfa9762ab9eb749038e8351727121",
@@ -94,29 +136,29 @@
94
136
  "local-autocoord17-waits.mjs": "2b0a713987822548a94e1ed3a9a891532db45383797dfc5d5bc8d1e35593cf25",
95
137
  "local-validator-isolation17.mjs": "48e94604e28b8fddd567dfb35ff60b73fd094a5803bd49f076388b7f310f92aa",
96
138
  "local-calctool-composition17.mjs": "ac89fcb41ab0d0d9b47c1b5696945281b0894eb064820775e36a011c76314e6a",
97
- "cli.mjs": "b28bfda3d9ec610c7865725eff4e5d551bcbdfc8847f6fd43eca845ce3881ea8",
139
+ "cli.mjs": "14c0c49f06bf209e5034a69b3e81a8458154e92870ce6aeddd1069d568c00837",
98
140
  "ide-selection.mjs": "e11e2b363c06444f1dcb4cdab1eaa0eb748a379b84354e0e71fd9c2dc79a4815",
99
- "ide-exit.mjs": "c890c7b34fa6f12e0ccff7a7b85738d515fb13ad93f671a8547ae6570b66488d",
141
+ "ide-exit.mjs": "39d60a15b1517d402c208d22a17033976e43733be8a10dc6da386837c59b37b2",
100
142
  "install-cleanup.mjs": "8a8e1a7dfe37427f86cd4d6e317890d0829894a9949d4216674a716b36edbc54",
101
143
  "review-client.mjs": "3491eef68ed533174b31db3c53febb6519b8f088f71a9964644714a9a4c03c77",
102
- "version.mjs": "1f392147d72c40af4b03b307ea607075fb815af5174fa07e254b95fe12dbf3e7",
103
- "SKILL.md": "f04566431da716ff61812118004ca69f2a8f9f24fe4e032f2a1fff5073b8071b",
104
- "CAPABILITY-MAP.md": "e420bbc202c27d983635ae33b823b39dd445cf5cdf40ffe88e210a755cb7424d",
144
+ "version.mjs": "85284d4cd5e3314b449e6ae124243f96397bcc274817b5983a79cfdd903d46fd",
145
+ "SKILL.md": "b39010bc22b517ad24f706d843823c2dfa93eb08fc5de055d30b7cc5fb079cea",
146
+ "CAPABILITY-MAP.md": "e64d1411526413d64b89142b3105e8e5bf25b3bc5b1a6ffa217b9ec93f1b58ae",
105
147
  "AGREEMENT.md": "f93a68e92c457200dd024610e65f74e478b8f60860f951da818b70561f1b9bf8",
106
- "DELIVERY-BOUNDARIES.md": "9b9db50ed1bcce9e77ff6527b6bb7eaf12f3b913162ea9cb7fe90db06b393a4f",
107
- "package.json": "ce0f78910ec9aeb36a7d61a30a68c6b117c9b29ca34cc8446a46604b251c131e",
148
+ "DELIVERY-BOUNDARIES.md": "cb23ce71b2197085c8441ba7c5b6c05fb21f2a954bf66b4d60cfef8b15895b8b",
149
+ "package.json": "04be10568ee6bf09d6910ed1e434df2f5247ce2aefe9a5b84f5bbe10def6e96c",
108
150
  "manifest.json": "ab06e307795bc9da5add926752b6c4dbdaf18625090261a035aa356a679c504f",
109
- "release.mjs": "996681f5a85cfbf195646d99463d63202ad55ec821fe072893ae460f5edcfeef",
110
- "local-cli.mjs": "41e2a737c8587cb5ce469a7661f6d14b5ea4cd073f8286822fc4dc96b67f56a1",
151
+ "release.mjs": "4466d54bee56b80561e46d79cf4f46ee07c27c45e7a8b2727583d1d0946ea8d8",
152
+ "local-cli.mjs": "058ac9a4653bc12e0d031b72034ebfe6a72b91b9b23353b9fee04881c7d2e098",
111
153
  "local-state-lock.mjs": "1dbf64264642a0851faf043e07ee9f66d2ad0508e9f799b0626246e42fae893e",
112
- "local-execution.mjs": "185f34e917440a360b3c4bafd3af245243807d964ae3820b3cffaaa2e6348cc6",
154
+ "local-execution.mjs": "721ed7d29bbe4ce6d088909cd84ffc440978c3c9eb0946c49a4281ee685fe3aa",
113
155
  "local-integrity.mjs": "e6d6eace80c610f3c7299d4f8644b0dc023aa9e3d8d64b26535ea7fbced248f1",
114
156
  "local-evidence-verification.mjs": "9b7dea31777505272f63616fd62af7603338f703bb1285fc565d6451715c7ce0",
115
157
  "local-formula.mjs": "706d5ec0cb2caf95a547531a81ca746fe246d4c53d902e03595a3b360e8c85af",
116
158
  "local-ledger.mjs": "2009fb68aadcd7292b72f1d0d99f378d03644be1c5b4b4150d9f6a0b3f7c15ce",
117
- "local-error.mjs": "f01213b21d84402dc5257aaa3ae4a5fa78931a956e9b8526b1e7dbf1b20b6b5d",
159
+ "local-error.mjs": "c0d23310569dd73a697d375acf1fe8d720ebc53e07cb1e86865b6639fbcc0ad3",
118
160
  "blueprint-criterion-wire.mjs": "fb6b7dcce0b97a699e3e8968372767a3fddd83fedc750998573f789177243072",
119
- "blueprint-criterion-runner.mjs": "761c0e670b4b20c6bed53e5ca5d0178759505c3977ea2ed1b7223383c534bc4c",
161
+ "blueprint-criterion-runner.mjs": "05413fea9d2985806adcbfbd53ca0760ca6a850a52957f0cbde43b753a3b7904",
120
162
  "local-chain-bindings.mjs": "b8eff999ccd17b53c614a3c9f5376da78fcaa8632bb3e07bc1adcceda2e75f6c",
121
163
  "local-chain-broker.mjs": "d9a63f2c9eec561853a84ab5fdb7d6794f256582126017c54e5d21d0d370b015",
122
164
  "local-chain-contracts.mjs": "d4d2be4e5c6980f2dda8ff598c7333a75e0bbf2f656aa7fe327af7c9fe73da07",
@@ -144,8 +186,8 @@
144
186
  "local-stage-boundary.mjs": "84c3bb5beab29306274c5ca8a78f19a83ed664ae1b93a8372bb493158b304fe3",
145
187
  "local-scope-candidate.mjs": "8f0bd9606e70d4a0ebacdd3cd600ec3afed85e2bb3e1760aa1144cf55d4e028a",
146
188
  "local-scope-context.mjs": "79753abfc6c76089d17f003a1be537dfaea10d6731c542f7fc53f2a9996ed164",
147
- "local-scope-files.mjs": "4c14a5e226dd5518aeb37f199b1aa896943a66d41e5a1757a3b3fd8a79446d76",
148
- "local-scope-repository.mjs": "941eb895c8210da1ca90e8b3d1d6936c24408d10139fe6c3eba2761329248392",
189
+ "local-scope-files.mjs": "db8b3baf8118c6cfd5525cbc008e054f9f33390b9ffce5ba72ee986b832f33e3",
190
+ "local-scope-repository.mjs": "55f130f7c54a378cb12ab9b81c07b14bf17f96a8d994314b0c8f35803bbdca1c",
149
191
  "local-scope-create-require.mjs": "6b6a209bfcad8fe1398e99c5c8cc3af189c120b9c38e244a73dd1a99c3d91295",
150
192
  "local-scope-require-resolution.mjs": "b24596462c8776cbefa6f0a74749d665aa928d1643c68d44798eb93e2dd5ad42",
151
193
  "local-scope-git.mjs": "53bbbb6c4795db711b5bc164591a6ad79a561427da046d6bbe997dae6eb82829",
@@ -178,15 +220,15 @@
178
220
  "local-scope-state.mjs": "8b600a91fc0068d7a8c0bb752ddba7ed30ada93daafb118d6cba2368fd94cb27",
179
221
  "local-scope-workspaces.mjs": "a44c34537e5ed2dcaf193a985e5bc05957989fbb160a650f9e37ba7d66eb2de8",
180
222
  "local-task-routing.mjs": "6e2e506b2fb0e2e8d8c5147d7df32849b57a4e94a23634f01a355d45735858e4",
181
- "remote-client.mjs": "0d1ec6506fe53a1e33c31c5ba19d14e30e00e85e11eaf7ff8277ea798b9f36c9",
182
- "cloud-task-client.mjs": "11acb1a033c94cdfbdfb177a3402ad97f6a5226f577138c8cf6395dc3ebb1a39",
223
+ "remote-client.mjs": "d1fdc4a65fb6d7f79af0bf5a6551319386f1127a0632927fd11600a178d41769",
224
+ "cloud-task-client.mjs": "603a7de8e1d56a77588f08f7d1ae93685b553b40815e268d7bd17018eb767c37",
183
225
  "scope-runner-client.mjs": "2afcbb8bc8a26d03f26787cb2ffd9994c4377757d16d54aa0c83752a29e833ea",
184
- "scope-amendment-client.mjs": "2161daaee131cc209d7ab75cde91a920cbca98153e7e7fd058ba5aacdf6789a3",
185
- "scope-amendment-state.mjs": "045375115cdca8c265f1bfd14d5cb052fcd24a97c5cc1e50a44a6f6725319698",
226
+ "scope-amendment-client.mjs": "64a38deddc2dbfae543fead2cff8c9c78771b576391cc903aa58db925a138ad7",
227
+ "scope-amendment-state.mjs": "ad82af0ff06e4969f733328a68d18e1ff3553b8ed93400c19963744083918ab9",
186
228
  "scope-amendment-wire.mjs": "3c4823e23bbdf330616bb675f07f9fcad7423266bd50b92e1134d226060e9b83",
187
- "scope-amendment-remote.mjs": "e73bc3e67b8adb663d679cdcc46f0f1a18529d0bf14dd1f6cdf21ad87ead7c71",
188
- "scope-amendment-observer.mjs": "f078654b857b84ef4454c9cb56450b7cabd19ff5581fe06b23da4346cf609018",
189
- "scope-amendment-mutation.mjs": "6becec3829c6c701f439dc8dc74d77b1d6c4a751386af436a8cf74b0554f8fdd",
229
+ "scope-amendment-remote.mjs": "15a0b3126248f3101a52e3d7742f9a816dd3d8e58f21bac33e99e810e86cc4fd",
230
+ "scope-amendment-observer.mjs": "473f08d66ebd35d87db7e651c0521d1d4bdb6fa337afaedb241bcf9c6289d9d3",
231
+ "scope-amendment-mutation.mjs": "fa24191df290efad29d41eca3d1a081981fefde02b7dc4a11c75c6118a69106e",
190
232
  "scope-amendment-reference.mjs": "0537e53a1bea4b695f4804c5051261778c88f05b1ae4aff86c709dcfe83aa148",
191
233
  "native-client.mjs": "6f5575909bae9daba643287f876ffa0f9ff1c53a367b32a40145d740456d6605",
192
234
  "native-notification.mjs": "8859a26c6f13d222711f763acf49ed8546b3306cf71f990643ac31a5ccaf1ba1",
@@ -195,10 +237,10 @@
195
237
  "cloud-event-stream.mjs": "e0eec9fc3e0613094523929634f25030df5ca5c5b5fe2c1e1a4586ab10574808",
196
238
  "ide-presentation.mjs": "3bac21bfc824fcdad63aafb0d7c3326cd6456923f4224106dd5c38682060f315",
197
239
  "automatic-feedback-client.mjs": "532312d29e66fa211ea3fe879d9add1dd48841ee5ce82800b4b06252a160a255",
198
- "task-entry-client.mjs": "869f234402c4149eadf1ec138705fc140e2fa16b2a3ea5dc2b2f51dfb189d7de",
240
+ "task-entry-client.mjs": "940fb068afe28a2a34fe96e285e149afdd9ba79649c0c65cde37ec4ed71ae39d",
199
241
  "task-identity.mjs": "e0e6cf1f48bfa5ee3c5cb86a3c21adfce6d66b4220f4a164ca099263c7a09fb4",
200
242
  "task-identity.d.mts": "55472e1ffc81b9d5e5c5bd56c0bf1d18ecde03ee5170a58a15ce9caf222d8761",
201
- "remote-transport.mjs": "93caaca646fca298a4e08142678b134ecc3a657e00de5b9939e2364b2db9d6c4",
243
+ "remote-transport.mjs": "cf0e31a0319518b6c7e1ce2ac99766a98fe9c936d26bbbec05952aaf0c33efb0",
202
244
  "local-credential.mjs": "2a302a7f67b5ea8dc73453fc96ab33db349b59ca11fa9456e48ca1d9669d877c",
203
245
  "local-invocations.mjs": "f6ac4c41c1a5ec34de358c4cca210ca8e403b3a913150a43bb55ec9be55d9998",
204
246
  "local-task-handoff-fence.mjs": "5532a359ee29b885f7ce0cf7178f76dba0fc9245bdd92ef460982275baf0d557",
@@ -212,13 +254,13 @@
212
254
  "local-task-handoff-read-authority.mjs": "7d2991cfac4562039232566d25441aa98106ce27bc9b7bcf6df4ff28d738e167",
213
255
  "local-task-handoff-write-archive.mjs": "3668f39d8ab5664ed717994cf1b4bcc7ea23e146a0e06291f851d30337faeb77",
214
256
  "local-task-handoff-write-receipts.mjs": "e1321127bd6fcad7840e185639f81ae68a8722a0ee4264a7b504a02b27887647",
215
- "workflow-local-runner.mjs": "dc26f408178f145cbecda7b65add6956c897b952cfa74a77474471d3b97bead1",
257
+ "workflow-local-runner.mjs": "3183c15650e605cc9a8c1531cc3651f5a7d2f61b099554d334713d78a9aae62b",
216
258
  "workflow-local-contracts.mjs": "2ab69043b498dad007e46fa5b4cbda6bffb6720652b970c3dec7f2825175ef87",
217
259
  "workflow-local-client.mjs": "45c954f694d96bf0ea87ee2dc6902a6763dac2cb1df713b6a5e749632054e9af",
218
260
  "workflow-local-request.mjs": "4e24c543ce386292a87dc9cd41f90d23375f12079cacffc515c8cd01fd571780",
219
261
  "task-message-entry.mjs": "31d10056cb905237cd5649e8eb067009ff1612ec5dc1061e0373209fbc0b646a",
220
262
  "task-message-cli.mjs": "3ca65e96c28129b3bd5cac962d106e0859a1f17df1f6a66ee543c6efc22f918d",
221
- "local-contracts.mjs": "b59fcdace17b0b56117c564f8c15322465243e69adede182c5dde9204836c99c",
263
+ "local-contracts.mjs": "f65c6f87ec021fa96c4e93d65d9fc2e5aca964915657e517697352d549af21a8",
222
264
  "local-contract-types.mjs": "85e71fa4dd67e351a4b67573c740bcdb1661cede53f097189f11837771e75e91",
223
265
  "local-archguard-ast.mjs": "7ff7df9dab0d98ed62983add751c80edea598bc94ef4f38ede0ebd4d41226c87",
224
266
  "local-archguard-checkpoint.mjs": "37896902520cc995720c96288e4a5ed3585952b55c9c35be281f91fa754c71ec",
@@ -248,10 +290,10 @@
248
290
  "local-mutation-files.mjs": "087b00e8424a135e783eb432271012a71e55eeb4a5e30119490d1bc0b2160320",
249
291
  "local-mutation-snapshot.mjs": "f9077539680fb8d3ff33a962657756a8fe6afa8409b6191334509534216ebfe8",
250
292
  "local-mutation-audit.mjs": "5a30ee3446f632e032ffcfe46bcd97d6dfc0f099a76ea5185c3f9a9118c4f6cb",
251
- "local-mutation-wire.mjs": "fe6adbbdd63a676f62996988995a5f53b08b1a2b79fd5d097a19bcd886ea3ea0",
293
+ "local-mutation-wire.mjs": "6d00400e531c693c3e8bfd0c2a24fcc486127f84aafc56ee450dcec7f534eb05",
252
294
  "local-mutation-binding.mjs": "4440d792453a07a375b635fa5a91db607e58162824baced5c79a9a513f4ec918",
253
295
  "local-mutation-pass-store.mjs": "1edc5fcc537dfa04b8ae8b07af554d61ea5911a5da281423ad57214ccf753ad4",
254
- "local-mutation-authority.mjs": "e6b79430ee6b5eb28173843a5faaf1c277da1e5ca7c1dcbd6d96cd60c4460c59",
296
+ "local-mutation-authority.mjs": "7af25eee1820d6c075bbd662b919e83436e5cbc5733e93f7f9f3b0f4ef9d37ac",
255
297
  "local-mutation-batch.mjs": "de27686b5f99a99b02f0218a3fa159e9469d6b19c595117287d6dd37a6efcb3b",
256
298
  "local-mutation-batch-receipt.mjs": "b0e6a8522867255d899e60b66677885933f6a1c4c771cbb52f84dbbbdcf5e5c2",
257
299
  "calctool-runtime-entry.mjs": "98d2bc8df38d16131fc56db0a3d4d260531ba4df412baa5ddc4b8b5c5ca99fe9",
package/release.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import { FINAL_GATE16_PACKAGE_FILES, withFinalGate16ReleaseLabels } from './local-final-gate16-release.mjs'
2
2
  import { REUSE_DISCIPLINE_SOURCE_FILES, reuseDisciplineReleaseLabels } from './reuse-discipline-release.mjs'
3
+ import { DESIGN_GATE_SOURCE_FILES, designGateReleaseLabels } from './design-release.mjs'
3
4
  import { createHash } from 'node:crypto'
4
5
  import { readFile, writeFile, rename, rm } from 'node:fs/promises'
5
6
  import path from 'node:path'
@@ -47,9 +48,14 @@ const memberContinuationSourceFiles = Object.freeze([
47
48
  'workflow-observation-wire.mjs',
48
49
  ])
49
50
  const sourceFiles = [
51
+ 'cloud-task-images.mjs', 'model-images.mjs', 'model-images.d.mts', 'cli-input.mjs',
52
+ 'scope-amendment-retirement.mjs', 'scope-amendment-consumption.mjs', 'mutation-connection-state.mjs', 'mutation-challenge-refresh.mjs',
53
+ 'local-scope-font.mjs', 'local-scope-zip.mjs', 'member-producer-repair-authority.mjs',
54
+ 'local-mutation-completion-evidence.mjs', 'local-mutation-environment-observation.mjs', 'local-mutation-finder-observation.mjs', 'local-finder-store.mjs', 'local-finder-plist.mjs',
50
55
  ...memberContinuationSourceFiles,
51
56
  ...preservedMutationSourceFiles,
52
57
  ...REUSE_DISCIPLINE_SOURCE_FILES,
58
+ ...DESIGN_GATE_SOURCE_FILES,
53
59
  ...FINAL_GATE16_PACKAGE_FILES,
54
60
  'local-merge-archguard-verification.d.mts',
55
61
  'local-merge-archguard-verification.mjs',
@@ -333,7 +339,11 @@ const archguardReleaseLabels = {
333
339
  'runtime/archguard-runtime-v7.0.44.mjs': { zh: 'Archguard 架构合同与执行守卫', en: 'Archguard architecture contract and execution guard' },
334
340
  }
335
341
  function releaseLabels() {
336
- return withFinalGate16ReleaseLabels({ ...reuseDisciplineReleaseLabels, ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...coordination17ReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels, ...taskEntryReleaseLabels, ...archguardReleaseLabels,
342
+ return withFinalGate16ReleaseLabels({ ...designGateReleaseLabels, ...reuseDisciplineReleaseLabels, ...calctoolReleaseLabels, ...mutationReleaseLabels, ...swarmReleaseLabels, ...coordination17ReleaseLabels, ...nativeReadReleaseLabels, ...feedbackReleaseLabels, ...invocationReleaseLabels, ...chainReleaseLabels, ...taskEntryReleaseLabels, ...archguardReleaseLabels,
343
+ ...Object.fromEntries(['cloud-task-images.mjs', 'model-images.mjs', 'model-images.d.mts', 'cli-input.mjs'].map(name => [name, { zh: '受限图片输入通道', en: 'bounded image input channel' }])),
344
+ ...Object.fromEntries(['scope-amendment-retirement.mjs', 'scope-amendment-consumption.mjs', 'mutation-connection-state.mjs', 'mutation-challenge-refresh.mjs', 'member-producer-repair-authority.mjs'].map(name => [name, { zh: '原授权恢复与请求生命周期', en: 'original-authority recovery and request lifecycle' }])),
345
+ ...Object.fromEntries(['local-scope-font.mjs', 'local-scope-zip.mjs'].map(name => [name, { zh: '字体与 ZIP 完整结构核验', en: 'font and ZIP structural verification' }])),
346
+ ...Object.fromEntries(['local-mutation-completion-evidence.mjs', 'local-mutation-environment-observation.mjs', 'local-mutation-finder-observation.mjs', 'local-finder-store.mjs', 'local-finder-plist.mjs'].map(name => [name, { zh: '原写入完成证据与系统元数据观察', en: 'original write completion evidence and system metadata observation' }])),
337
347
  'blueprint-criterion-wire.mjs': { zh: '蓝图验收标准执行授权', en: 'Blueprint criterion execution authority' },
338
348
  'blueprint-criterion-runner.mjs': { zh: '蓝图验收标准实际执行器', en: 'Blueprint criterion process runner' },
339
349
  'cli.mjs': { zh: '技能运行和受管安装', en: 'skill runtime and managed installation' },
package/releases.json CHANGED
@@ -1,4 +1,34 @@
1
1
  [
2
+ {
3
+ "version": "0.1.67",
4
+ "date": "2026-10-19",
5
+ "zh": "更新了包降级、版本冲突与凭证回滚门禁。",
6
+ "en": "Updated package downgrade, version conflict and evidence-bound rollback guards."
7
+ },
8
+ {
9
+ "version": "0.1.66",
10
+ "date": "2026-10-19",
11
+ "zh": "更新了字体与 ZIP 完整结构核验、复用与变更一致性门禁、IDE 执行与复用纪律文档、包降级、版本冲突与凭证回滚门禁、复用纪律版本追踪、技能运行和受管安装、版本安全检查、IDE 工作流程说明、能力覆盖映射、安装包配置、统一本地错误信封、原任务短时写入授权与文件快照隔离。",
12
+ "en": "Updated font and ZIP structural verification, reuse and change consistency checks, IDE execution and reuse discipline documentation, package downgrade, version conflict and evidence-bound rollback guards, reuse discipline release tracking, skill runtime and managed installation, version safety checks, IDE workflow instructions, capability coverage map, package configuration, unified local error envelopes, Original task short-lived mutation authority and file snapshot isolation."
13
+ },
14
+ {
15
+ "version": "0.1.65",
16
+ "date": "2026-10-19",
17
+ "zh": "新增强制界面设计门禁:先全站流程图、实际布局与框架官方规范研究,再以用户选择的效果图或原型图确认设计;原写入权限继续约束实现,功能测试、真实浏览器回读刷新及视觉确认完成后才允许交付。保留原失败和未知记录。",
18
+ "en": "Add enforced UI design gates: whole-site flow, actual layout and official framework research, then original user approval of selected mockups or prototypes before implementation. Original write authority remains mandatory; delivery requires functional tests, actual browser state read-back and reload checks, and user visual acceptance. Preserve failures and unknown outcomes."
19
+ },
20
+ {
21
+ "version": "0.1.64",
22
+ "date": "2026-10-19",
23
+ "zh": "统一交付原合同连续执行与失败恢复修复:受限完整响应、原请求结算恢复、过期挑战与未用授权处理、已批准依赖与二进制核验、系统元数据观察;新增图片输入并适配 DeepSeek V4.1 Flash,完善中英文明确退出及无 IDE 记录的离线退出。保留范围、签名、预算及失败和未知记录;缺少进程终局证据的观察仍拒绝重跑。",
24
+ "en": "Deliver original-contract continuation and recovery fixes for bounded complete responses, original-request settlement, expired challenges and unused grants, approved dependencies, verified binary inputs and system metadata observations. Add image inputs for DeepSeek V4.1 Flash and bilingual explicit offline exit, including sessions without an IDE record. Preserve scope, signatures, budgets, failures and unknown outcomes; observations without terminal process evidence still cannot rerun."
25
+ },
26
+ {
27
+ "version": "0.1.63",
28
+ "date": "2026-10-18",
29
+ "zh": "修复精确大范围补正的组合回执保存;原 M 授权支持真实二进制字节,保留源代码分析、原路径及结算校验。范围风险提高必须另经原账号明确重评。",
30
+ "en": "Retain combined receipts for exact large scope amendments and write actual binary bytes through the original M authority, preserving source analysis, paths and settlement checks. Higher scope risk requires explicit original-owner reassessment."
31
+ },
2
32
  {
3
33
  "version": "0.1.62",
4
34
  "date": "2026-10-18",
package/remote-client.mjs CHANGED
@@ -35,7 +35,7 @@ function discoveredAjv() {
35
35
  }
36
36
 
37
37
  export function buildInvocation(operation, input) {
38
- if (!['capabilities', 'task-describe', 'message-route', 'message-accept', 'task-resume', 'task-checkpoint', 'flow-cancel', 'flow-abandon',
38
+ if (!['capabilities', 'scope-challenge-retire', 'task-describe', 'message-route', 'message-accept', 'task-resume', 'task-checkpoint', 'flow-cancel', 'flow-abandon',
39
39
  'message-status', 'message-delivery-start', 'message-delivery-report', 'message-resolve', 'message-complete',
40
40
  'handoff-prepare', 'handoff-release', 'handoff-claim', 'handoff-status', 'handoff-resume', 'handoff-execution-authority', 'mutation-snapshot-challenge', 'mutation-pass-issue', 'mutation-pass-settle',
41
41
  'member-observation-admit', 'member-observation-report', 'member-observation-status',