@celilo/cli 4.1.0 → 5.0.0

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 (75) hide show
  1. package/AGENTS.md +2 -2
  2. package/drizzle/0034_private_routes.sql +41 -0
  3. package/drizzle/meta/_journal.json +8 -1
  4. package/package.json +2 -2
  5. package/src/api/sessions.test.ts +1 -1
  6. package/src/capabilities/registration.test.ts +11 -11
  7. package/src/capabilities/secrets.test.ts +18 -18
  8. package/src/capabilities/validation.test.ts +24 -24
  9. package/src/cli/cli.test.ts +3 -3
  10. package/src/cli/commands/module-changeset.test.ts +1 -1
  11. package/src/cli/commands/module-generate.test.ts +2 -2
  12. package/src/cli/commands/module-import-aspect.test.ts +2 -2
  13. package/src/cli/commands/module-update.test.ts +14 -14
  14. package/src/cli/commands/module-upgrade-gate.test.ts +26 -1
  15. package/src/cli/commands/module-upgrade.test.ts +3 -3
  16. package/src/cli/commands/module-upgrade.ts +12 -0
  17. package/src/cli/commands/module-version.test.ts +1 -1
  18. package/src/cli/index.ts +22 -2
  19. package/src/cli/restore-migration-failure.test.ts +1 -1
  20. package/src/cli/stdout-pipe-flush.test.ts +35 -0
  21. package/src/db/private-routes.test.ts +159 -0
  22. package/src/db/schema.ts +49 -0
  23. package/src/hooks/capability-loader.ts +179 -12
  24. package/src/hooks/executor.test.ts +13 -13
  25. package/src/hooks/hook-state-dir.test.ts +2 -2
  26. package/src/hooks/test-fixtures/store-backed.ts +5 -3
  27. package/src/manifest/contracts/index.ts +28 -7
  28. package/src/manifest/contracts/v2.ts +32 -0
  29. package/src/manifest/icon-schema.test.ts +1 -1
  30. package/src/manifest/schema.ts +13 -2
  31. package/src/manifest/template-validator.test.ts +1 -1
  32. package/src/manifest/validate-privileged.test.ts +1 -1
  33. package/src/manifest/validate.test.ts +68 -29
  34. package/src/manifest/validate.ts +14 -1
  35. package/src/module/import.test.ts +7 -7
  36. package/src/module/packaging/build.test.ts +1 -1
  37. package/src/packaging/nfpm-depends.test.ts +42 -0
  38. package/src/policy/capability-shape-baseline.ts +7 -1
  39. package/src/policy/fixture-capability-coverage.test.ts +5 -5
  40. package/src/policy/module-business-baseline.ts +33 -4
  41. package/src/services/aspect-approvals.test.ts +2 -2
  42. package/src/services/aspect-reconcile.test.ts +2 -2
  43. package/src/services/aspect-runner.test.ts +4 -4
  44. package/src/services/audit/backups.test.ts +1 -1
  45. package/src/services/audit/capability-abi.test.ts +1 -1
  46. package/src/services/audit/module-configs.test.ts +1 -1
  47. package/src/services/build-bus/hook-dispatch-executor.test.ts +3 -3
  48. package/src/services/bus-interview-park.test.ts +1 -1
  49. package/src/services/bus-secret-flow.test.ts +1 -1
  50. package/src/services/capability-table-rows.test.ts +20 -2
  51. package/src/services/celilo-events.test.ts +80 -6
  52. package/src/services/celilo-events.ts +115 -12
  53. package/src/services/celilo-mgmt-hooks.test.ts +6 -3
  54. package/src/services/cross-module-read.test.ts +2 -2
  55. package/src/services/deploy-validation.test.ts +6 -6
  56. package/src/services/dns-provider-backfill.test.ts +2 -2
  57. package/src/services/dns-registrations.test.ts +1 -1
  58. package/src/services/fleet-checks.test.ts +2 -2
  59. package/src/services/health-runner.test.ts +1 -1
  60. package/src/services/infrastructure-variable-resolver.test.ts +11 -11
  61. package/src/services/instance-ops.test.ts +2 -2
  62. package/src/services/module-deploy.dns-repoint.test.ts +1 -1
  63. package/src/services/module-pause-quiescence.test.ts +1 -1
  64. package/src/services/module-pause.test.ts +1 -1
  65. package/src/services/module-subscriptions.test.ts +2 -2
  66. package/src/services/module-types-generator.test.ts +1 -1
  67. package/src/services/module-validator/contract-version.test.ts +3 -3
  68. package/src/services/network-ensure.test.ts +1 -1
  69. package/src/services/proxmox-reconcile.test.ts +2 -2
  70. package/src/services/remove-guard.test.ts +1 -1
  71. package/src/services/update/dep-graph.test.ts +1 -1
  72. package/src/services/update/orchestrator.test.ts +1 -1
  73. package/src/variables/capability-self-ref.test.ts +2 -2
  74. package/src/variables/computed/computed-integration.test.ts +1 -1
  75. package/src/variables/declarative-derivation.test.ts +19 -19
@@ -59,7 +59,7 @@ describe('resolveInfrastructureVariables - Machine Infrastructure', () => {
59
59
 
60
60
  // Create manifest with infrastructure variables
61
61
  const manifest: ModuleManifest = {
62
- celilo_contract: '1.0',
62
+ celilo_contract: '2.0',
63
63
  id: moduleId,
64
64
  name: 'DNS External',
65
65
  version: '1.0.0',
@@ -137,7 +137,7 @@ describe('resolveInfrastructureVariables - Machine Infrastructure', () => {
137
137
  const moduleId = 'test-module';
138
138
 
139
139
  const manifest: ModuleManifest = {
140
- celilo_contract: '1.0',
140
+ celilo_contract: '2.0',
141
141
  id: moduleId,
142
142
  name: 'Test',
143
143
  version: '1.0.0',
@@ -203,7 +203,7 @@ describe('resolveInfrastructureVariables - Proxmox Container Service', () => {
203
203
  const moduleId = 'homebridge';
204
204
 
205
205
  const manifest: ModuleManifest = {
206
- celilo_contract: '1.0',
206
+ celilo_contract: '2.0',
207
207
  id: moduleId,
208
208
  name: 'Homebridge',
209
209
  version: '1.0.0',
@@ -287,7 +287,7 @@ describe('resolveInfrastructureVariables - Proxmox Container Service', () => {
287
287
  const moduleId = 'test-module';
288
288
 
289
289
  const manifest: ModuleManifest = {
290
- celilo_contract: '1.0',
290
+ celilo_contract: '2.0',
291
291
  id: moduleId,
292
292
  name: 'Test',
293
293
  version: '1.0.0',
@@ -350,7 +350,7 @@ describe('resolveInfrastructureVariables - Digital Ocean Container Service', ()
350
350
  const moduleId = 'dns-external';
351
351
 
352
352
  const manifest: ModuleManifest = {
353
- celilo_contract: '1.0',
353
+ celilo_contract: '2.0',
354
354
  id: moduleId,
355
355
  name: 'DNS External',
356
356
  version: '1.0.0',
@@ -436,7 +436,7 @@ describe('resolveInfrastructureVariables - User Override', () => {
436
436
  const moduleId = 'dns-external';
437
437
 
438
438
  const manifest: ModuleManifest = {
439
- celilo_contract: '1.0',
439
+ celilo_contract: '2.0',
440
440
  id: moduleId,
441
441
  name: 'DNS External',
442
442
  version: '1.0.0',
@@ -494,7 +494,7 @@ describe('resolveInfrastructureVariables - Required vs Optional', () => {
494
494
  const moduleId = 'test-module';
495
495
 
496
496
  const manifest: ModuleManifest = {
497
- celilo_contract: '1.0',
497
+ celilo_contract: '2.0',
498
498
  id: moduleId,
499
499
  name: 'Test',
500
500
  version: '1.0.0',
@@ -544,7 +544,7 @@ describe('resolveInfrastructureVariables - Required vs Optional', () => {
544
544
  const moduleId = 'test-module';
545
545
 
546
546
  const manifest: ModuleManifest = {
547
- celilo_contract: '1.0',
547
+ celilo_contract: '2.0',
548
548
  id: moduleId,
549
549
  name: 'Test',
550
550
  version: '1.0.0',
@@ -605,7 +605,7 @@ describe('resolveInfrastructureVariables - Required vs Optional', () => {
605
605
  describe('resolveInfrastructureVariables - Edge Cases', () => {
606
606
  test('returns empty when no infrastructure variables declared', async () => {
607
607
  const manifest: ModuleManifest = {
608
- celilo_contract: '1.0',
608
+ celilo_contract: '2.0',
609
609
  id: 'test-module',
610
610
  name: 'Test',
611
611
  version: '1.0.0',
@@ -632,7 +632,7 @@ describe('resolveInfrastructureVariables - Edge Cases', () => {
632
632
 
633
633
  test('throws when no infrastructure selected', async () => {
634
634
  const manifest: ModuleManifest = {
635
- celilo_contract: '1.0',
635
+ celilo_contract: '2.0',
636
636
  id: 'test-module',
637
637
  name: 'Test',
638
638
  version: '1.0.0',
@@ -660,7 +660,7 @@ describe('resolveInfrastructureVariables - Edge Cases', () => {
660
660
  const moduleId = 'test-module';
661
661
 
662
662
  const manifest: ModuleManifest = {
663
- celilo_contract: '1.0',
663
+ celilo_contract: '2.0',
664
664
  id: moduleId,
665
665
  name: 'Test',
666
666
  version: '1.0.0',
@@ -15,7 +15,7 @@ import { deriveInstanceModuleId } from './module-instances';
15
15
 
16
16
  const manifest = (over: Record<string, unknown> = {}): ModuleManifest =>
17
17
  ({
18
- celilo_contract: '1.0',
18
+ celilo_contract: '2.0',
19
19
  id: 'lab',
20
20
  name: 'BYOI Lab',
21
21
  version: '1.0.0',
@@ -110,7 +110,7 @@ describe('createInstanceOps against a real database', () => {
110
110
  let parentPath: string;
111
111
 
112
112
  const SUBMODULE_YAML = `
113
- celilo_contract: "1.0"
113
+ celilo_contract: "2.0"
114
114
  id: lab
115
115
  name: BYOI Lab
116
116
  version: 1.0.0
@@ -64,7 +64,7 @@ describe('repointDnsPrimaryForProvider (module-orchestrator-primitives slice 3)'
64
64
  id: MODULE_ID,
65
65
  name: MODULE_ID,
66
66
  version: '1.3.4',
67
- manifestData: { id: MODULE_ID, name: MODULE_ID, version: '1.3.4', celilo_contract: '1.0' },
67
+ manifestData: { id: MODULE_ID, name: MODULE_ID, version: '1.3.4', celilo_contract: '2.0' },
68
68
  sourcePath: `/tmp/${MODULE_ID}`,
69
69
  })
70
70
  .run();
@@ -36,7 +36,7 @@ function manifestWithHooks(id: string) {
36
36
  id,
37
37
  name: id,
38
38
  version: '1.0.0',
39
- celilo_contract: '1.0',
39
+ celilo_contract: '2.0',
40
40
  provides: { capabilities: [] },
41
41
  requires: { capabilities: [] },
42
42
  hooks: {
@@ -36,7 +36,7 @@ function makeManifest(
36
36
  id,
37
37
  name: id,
38
38
  version: '1.0.0',
39
- celilo_contract: '1.0',
39
+ celilo_contract: '2.0',
40
40
  provides: {
41
41
  capabilities: (opts.provides ?? []).map((name) => ({
42
42
  name,
@@ -19,7 +19,7 @@ import {
19
19
  } from './module-subscriptions';
20
20
 
21
21
  const baseManifest = (overrides: Partial<ModuleManifest> = {}): ModuleManifest => ({
22
- celilo_contract: '1.0',
22
+ celilo_contract: '2.0',
23
23
  id: 'lunacycle',
24
24
  name: 'Lunacycle',
25
25
  version: '1.0.0',
@@ -357,7 +357,7 @@ describe('resyncAllSubscriptions (ISS-0088)', () => {
357
357
  subs: Array<{ name: string; pattern: string; handler: string }>,
358
358
  ): void {
359
359
  const manifest = JSON.stringify({
360
- celilo_contract: '1.0',
360
+ celilo_contract: '2.0',
361
361
  id,
362
362
  name: id,
363
363
  version: '1.0.0',
@@ -15,7 +15,7 @@ import {
15
15
 
16
16
  function baseManifest(overrides: Partial<ModuleManifest> = {}): ModuleManifest {
17
17
  return {
18
- celilo_contract: '1.0',
18
+ celilo_contract: '2.0',
19
19
  id: 'test-module',
20
20
  name: 'Test Module',
21
21
  version: '1.0.0',
@@ -3,7 +3,7 @@ import { checkContractVersion } from './contract-version';
3
3
 
4
4
  describe('checkContractVersion', () => {
5
5
  test('ok when manifest declares the latest supported contract', () => {
6
- const r = checkContractVersion({ celilo_contract: '1.0' });
6
+ const r = checkContractVersion({ celilo_contract: '2.0' });
7
7
  expect(r.status).toBe('ok');
8
8
  expect(r.message).toContain('latest');
9
9
  });
@@ -12,13 +12,13 @@ describe('checkContractVersion', () => {
12
12
  const r = checkContractVersion({});
13
13
  expect(r.status).toBe('fail');
14
14
  expect(r.message).toContain('missing');
15
- expect(r.suggestedValue).toBe('1.0');
15
+ expect(r.suggestedValue).toBe('2.0');
16
16
  });
17
17
 
18
18
  test('fail when celilo_contract claims an unknown version', () => {
19
19
  const r = checkContractVersion({ celilo_contract: '99.0' });
20
20
  expect(r.status).toBe('fail');
21
21
  expect(r.message).toContain('unknown');
22
- expect(r.suggestedValue).toBe('1.0');
22
+ expect(r.suggestedValue).toBe('2.0');
23
23
  });
24
24
  });
@@ -16,7 +16,7 @@ import { type NetworkAsker, ensureRequiredNetworks } from './network-ensure';
16
16
 
17
17
  function manifestRequiring(...networks: string[]): ModuleManifest {
18
18
  return {
19
- celilo_contract: '1.0',
19
+ celilo_contract: '2.0',
20
20
  id: 'test-module',
21
21
  name: 'Test Module',
22
22
  version: '0.1.0',
@@ -44,7 +44,7 @@ function seedProviderModule(opts: { configs?: Record<string, string> } = {}) {
44
44
  id: PROVIDER_MODULE_ID,
45
45
  name: PROVIDER_MODULE_ID,
46
46
  version: '1.0.0',
47
- celilo_contract: '1.0',
47
+ celilo_contract: '2.0',
48
48
  },
49
49
  sourcePath: `/tmp/${PROVIDER_MODULE_ID}`,
50
50
  })
@@ -107,7 +107,7 @@ function seedContainerLxc(opts: {
107
107
  id: opts.moduleId,
108
108
  name: opts.moduleId,
109
109
  version: '1.0.0',
110
- celilo_contract: '1.0',
110
+ celilo_contract: '2.0',
111
111
  },
112
112
  sourcePath: `/tmp/${opts.moduleId}`,
113
113
  })
@@ -14,7 +14,7 @@ function manifest(
14
14
  id,
15
15
  name: id,
16
16
  version: '1.0.0',
17
- celilo_contract: '1.0',
17
+ celilo_contract: '2.0',
18
18
  provides: { capabilities: [] },
19
19
  requires: { capabilities: (opts.requires ?? []).map((name) => ({ name, version: '1.0.0' })) },
20
20
  optional: opts.optional
@@ -20,7 +20,7 @@ function makeManifest(
20
20
  id,
21
21
  name: id,
22
22
  version: '1.0.0',
23
- celilo_contract: '1.0',
23
+ celilo_contract: '2.0',
24
24
  provides: opts.provides
25
25
  ? {
26
26
  capabilities: opts.provides.map((name) => ({
@@ -24,7 +24,7 @@ function makeManifest(
24
24
  id,
25
25
  name: id,
26
26
  version: '1.0.0',
27
- celilo_contract: '1.0',
27
+ celilo_contract: '2.0',
28
28
  provides: opts.provides
29
29
  ? {
30
30
  capabilities: opts.provides.map((name) => ({
@@ -261,7 +261,7 @@ describe('Capability data $self: variable resolution', () => {
261
261
  id: 'lunacycle',
262
262
  name: 'LunaCycle',
263
263
  version: '1.0.0',
264
- celilo_contract: '1.0',
264
+ celilo_contract: '2.0',
265
265
  variables: {
266
266
  owns: [
267
267
  {
@@ -388,7 +388,7 @@ describe('Capability data $self: variable resolution', () => {
388
388
  id: 'lunacycle',
389
389
  name: 'LunaCycle',
390
390
  version: '1.0.0',
391
- celilo_contract: '1.0',
391
+ celilo_contract: '2.0',
392
392
  variables: {
393
393
  owns: [
394
394
  {
@@ -29,7 +29,7 @@ let db: DbClient;
29
29
  /** Fresh manifest per call — never share a mutable manifest across tests. */
30
30
  function namecheapManifest(computedValue = 'keys(secret.ddns_passwords)'): ModuleManifest {
31
31
  return {
32
- celilo_contract: '1.0',
32
+ celilo_contract: '2.0',
33
33
  id: 'namecheap',
34
34
  name: 'Namecheap',
35
35
  version: '4.1.0',
@@ -441,7 +441,7 @@ describe('applyDeclarativeDerivations', () => {
441
441
  describe('basic derivations', () => {
442
442
  test('applies single derivation', () => {
443
443
  const manifest: ModuleManifest = {
444
- celilo_contract: '1.0',
444
+ celilo_contract: '2.0',
445
445
  id: 'test-module',
446
446
  name: 'Test Module',
447
447
  version: '1.0.0',
@@ -477,7 +477,7 @@ describe('applyDeclarativeDerivations', () => {
477
477
 
478
478
  test('applies multiple derivations in order', () => {
479
479
  const manifest: ModuleManifest = {
480
- celilo_contract: '1.0',
480
+ celilo_contract: '2.0',
481
481
  id: 'test-module',
482
482
  name: 'Test Module',
483
483
  version: '1.0.0',
@@ -523,7 +523,7 @@ describe('applyDeclarativeDerivations', () => {
523
523
  describe('user config precedence', () => {
524
524
  test('does not overwrite user-provided values', () => {
525
525
  const manifest: ModuleManifest = {
526
- celilo_contract: '1.0',
526
+ celilo_contract: '2.0',
527
527
  id: 'test-module',
528
528
  name: 'Test Module',
529
529
  version: '1.0.0',
@@ -562,7 +562,7 @@ describe('applyDeclarativeDerivations', () => {
562
562
  describe('dependency resolution', () => {
563
563
  test('resolves dependencies in declaration order', () => {
564
564
  const manifest: ModuleManifest = {
565
- celilo_contract: '1.0',
565
+ celilo_contract: '2.0',
566
566
  id: 'test-module',
567
567
  name: 'Test Module',
568
568
  version: '1.0.0',
@@ -619,7 +619,7 @@ describe('applyDeclarativeDerivations', () => {
619
619
  describe('error handling', () => {
620
620
  test('throws error for required variable with missing dependency', () => {
621
621
  const manifest: ModuleManifest = {
622
- celilo_contract: '1.0',
622
+ celilo_contract: '2.0',
623
623
  id: 'test-module',
624
624
  name: 'Test Module',
625
625
  version: '1.0.0',
@@ -655,7 +655,7 @@ describe('applyDeclarativeDerivations', () => {
655
655
 
656
656
  test('silently skips optional variable with missing dependency', () => {
657
657
  const manifest: ModuleManifest = {
658
- celilo_contract: '1.0',
658
+ celilo_contract: '2.0',
659
659
  id: 'test-module',
660
660
  name: 'Test Module',
661
661
  version: '1.0.0',
@@ -693,7 +693,7 @@ describe('applyDeclarativeDerivations', () => {
693
693
 
694
694
  test('derives scalar numeric values from capability data', () => {
695
695
  const manifest: ModuleManifest = {
696
- celilo_contract: '1.0',
696
+ celilo_contract: '2.0',
697
697
  id: 'test-module',
698
698
  name: 'Test Module',
699
699
  version: '1.0.0',
@@ -731,7 +731,7 @@ describe('applyDeclarativeDerivations', () => {
731
731
 
732
732
  test('continues to skip structured derivations', () => {
733
733
  const manifest: ModuleManifest = {
734
- celilo_contract: '1.0',
734
+ celilo_contract: '2.0',
735
735
  id: 'test-module',
736
736
  name: 'Test Module',
737
737
  version: '1.0.0',
@@ -776,7 +776,7 @@ describe('applyDeclarativeDerivations', () => {
776
776
  // context. The key must remain unset rather than being poisoned with the raw template.
777
777
  test('does not set selfConfig when capability value still contains $self: ref', () => {
778
778
  const manifest: ModuleManifest = {
779
- celilo_contract: '1.0',
779
+ celilo_contract: '2.0',
780
780
  id: 'lunacycle',
781
781
  name: 'Lunacycle',
782
782
  version: '1.0.0',
@@ -816,7 +816,7 @@ describe('applyDeclarativeDerivations', () => {
816
816
 
817
817
  test('uses existing selfConfig value when capability returns unresolved $self: ref', () => {
818
818
  const manifest: ModuleManifest = {
819
- celilo_contract: '1.0',
819
+ celilo_contract: '2.0',
820
820
  id: 'lunacycle',
821
821
  name: 'Lunacycle',
822
822
  version: '1.0.0',
@@ -860,7 +860,7 @@ describe('applyDeclarativeDerivations', () => {
860
860
  // all 5 resolution passes unchanged and must be skipped.
861
861
  test('does not set selfConfig when capability value contains $secret: ref', () => {
862
862
  const manifest: ModuleManifest = {
863
- celilo_contract: '1.0',
863
+ celilo_contract: '2.0',
864
864
  id: 'consumer',
865
865
  name: 'Consumer',
866
866
  version: '1.0.0',
@@ -903,7 +903,7 @@ describe('applyDeclarativeDerivations', () => {
903
903
  // end-to-end, not just resolveDeclarativeDerivation in isolation.
904
904
  test('resolves $system: ref inside capability value', () => {
905
905
  const manifest: ModuleManifest = {
906
- celilo_contract: '1.0',
906
+ celilo_contract: '2.0',
907
907
  id: 'caddy',
908
908
  name: 'Caddy',
909
909
  version: '1.0.0',
@@ -946,7 +946,7 @@ describe('applyDeclarativeDerivations', () => {
946
946
  // on first pass (the other isn't set yet). Both should remain unset.
947
947
  test('silently skips both optional variables in a circular reference', () => {
948
948
  const manifest: ModuleManifest = {
949
- celilo_contract: '1.0',
949
+ celilo_contract: '2.0',
950
950
  id: 'test-module',
951
951
  name: 'Test Module',
952
952
  version: '1.0.0',
@@ -990,7 +990,7 @@ describe('applyDeclarativeDerivations', () => {
990
990
 
991
991
  test('throws when either circular variable is required', () => {
992
992
  const manifest: ModuleManifest = {
993
- celilo_contract: '1.0',
993
+ celilo_contract: '2.0',
994
994
  id: 'test-module',
995
995
  name: 'Test Module',
996
996
  version: '1.0.0',
@@ -1040,7 +1040,7 @@ describe('applyDeclarativeDerivations', () => {
1040
1040
  // Equivalent to the {var} syntax; reads from selfConfig.
1041
1041
  test('resolves $self: against selfConfig like {var}', () => {
1042
1042
  const manifest: ModuleManifest = {
1043
- celilo_contract: '1.0',
1043
+ celilo_contract: '2.0',
1044
1044
  id: 'test-module',
1045
1045
  name: 'Test Module',
1046
1046
  version: '1.0.0',
@@ -1079,7 +1079,7 @@ describe('applyDeclarativeDerivations', () => {
1079
1079
  // auth_url derives from "https://auth.$self:domain" where domain
1080
1080
  // is another self-owned variable set by the user.
1081
1081
  const manifest: ModuleManifest = {
1082
- celilo_contract: '1.0',
1082
+ celilo_contract: '2.0',
1083
1083
  id: 'authentik',
1084
1084
  name: 'Authentik',
1085
1085
  version: '1.0.0',
@@ -1121,7 +1121,7 @@ describe('applyDeclarativeDerivations', () => {
1121
1121
 
1122
1122
  test('throws when $self: references an undeclared variable', () => {
1123
1123
  const manifest: ModuleManifest = {
1124
- celilo_contract: '1.0',
1124
+ celilo_contract: '2.0',
1125
1125
  id: 'test',
1126
1126
  name: 'Test',
1127
1127
  version: '1.0.0',
@@ -1162,7 +1162,7 @@ describe('applyDeclarativeDerivations', () => {
1162
1162
  describe('skips', () => {
1163
1163
  test('skips variables without derive_from', () => {
1164
1164
  const manifest: ModuleManifest = {
1165
- celilo_contract: '1.0',
1165
+ celilo_contract: '2.0',
1166
1166
  id: 'test-module',
1167
1167
  name: 'Test Module',
1168
1168
  version: '1.0.0',
@@ -1199,7 +1199,7 @@ describe('applyDeclarativeDerivations', () => {
1199
1199
 
1200
1200
  test('handles manifest with no variables', () => {
1201
1201
  const manifest: ModuleManifest = {
1202
- celilo_contract: '1.0',
1202
+ celilo_contract: '2.0',
1203
1203
  id: 'test-module',
1204
1204
  name: 'Test Module',
1205
1205
  version: '1.0.0',