@cleocode/contracts 2026.10.8 → 2026.10.9

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 (78) hide show
  1. package/dist/branch-lock.d.ts +5 -2
  2. package/dist/branch-lock.d.ts.map +1 -1
  3. package/dist/branch-lock.js.map +1 -1
  4. package/dist/dispatch/operations-registry.d.ts.map +1 -1
  5. package/dist/dispatch/operations-registry.js +7 -1
  6. package/dist/dispatch/operations-registry.js.map +1 -1
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/invariants/sync-write-invariants.d.ts.map +1 -1
  11. package/dist/invariants/sync-write-invariants.js +10 -1
  12. package/dist/invariants/sync-write-invariants.js.map +1 -1
  13. package/dist/nexus-cloud.d.ts +19 -1
  14. package/dist/nexus-cloud.d.ts.map +1 -1
  15. package/dist/nexus-cloud.js +4 -0
  16. package/dist/nexus-cloud.js.map +1 -1
  17. package/dist/nexus-vault.d.ts +155 -1
  18. package/dist/nexus-vault.d.ts.map +1 -1
  19. package/dist/operations/nexus.d.ts +4 -0
  20. package/dist/operations/nexus.d.ts.map +1 -1
  21. package/dist/operations/nexus.js.map +1 -1
  22. package/dist/operations/orchestrate.d.ts +7 -0
  23. package/dist/operations/orchestrate.d.ts.map +1 -1
  24. package/dist/operations/validate.d.ts +5 -0
  25. package/dist/operations/validate.d.ts.map +1 -1
  26. package/dist/operations/worktree.d.ts +61 -0
  27. package/dist/operations/worktree.d.ts.map +1 -1
  28. package/dist/project-context.d.ts +9 -0
  29. package/dist/project-context.d.ts.map +1 -1
  30. package/dist/project-hook-delivery.d.ts +137 -0
  31. package/dist/project-hook-delivery.d.ts.map +1 -0
  32. package/dist/project-hook-delivery.js +21 -0
  33. package/dist/project-hook-delivery.js.map +1 -0
  34. package/dist/project-hooks.d.ts +276 -0
  35. package/dist/project-hooks.d.ts.map +1 -0
  36. package/dist/project-hooks.js +113 -0
  37. package/dist/project-hooks.js.map +1 -0
  38. package/dist/release/channel.d.ts +1 -1
  39. package/dist/release/channel.d.ts.map +1 -1
  40. package/dist/release/hook-pilot.d.ts +179 -0
  41. package/dist/release/hook-pilot.d.ts.map +1 -0
  42. package/dist/release/hook-pilot.js +112 -0
  43. package/dist/release/hook-pilot.js.map +1 -0
  44. package/dist/release/plan.d.ts +12 -1
  45. package/dist/release/plan.d.ts.map +1 -1
  46. package/dist/release/plan.js +25 -2
  47. package/dist/release/plan.js.map +1 -1
  48. package/dist/release/plan.test.js +14 -3
  49. package/dist/release/plan.test.js.map +1 -1
  50. package/dist/row-identity.d.ts +7 -0
  51. package/dist/row-identity.d.ts.map +1 -1
  52. package/dist/task.d.ts +7 -0
  53. package/dist/task.d.ts.map +1 -1
  54. package/dist/tools/atomic.d.ts +6 -0
  55. package/dist/tools/atomic.d.ts.map +1 -1
  56. package/dist/tools/atomic.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/__tests__/__snapshots__/operations-registry.test.ts.snap +1 -1
  59. package/src/branch-lock.ts +5 -2
  60. package/src/dispatch/operations-registry.ts +7 -1
  61. package/src/index.ts +7 -0
  62. package/src/invariants/sync-write-invariants.ts +10 -1
  63. package/src/nexus-cloud.ts +13 -1
  64. package/src/nexus-vault.ts +138 -1
  65. package/src/operations/nexus.ts +4 -0
  66. package/src/operations/orchestrate.ts +7 -0
  67. package/src/operations/validate.ts +5 -0
  68. package/src/operations/worktree.ts +59 -0
  69. package/src/project-context.ts +9 -0
  70. package/src/project-hook-delivery.ts +144 -0
  71. package/src/project-hooks.ts +256 -0
  72. package/src/release/channel.ts +1 -1
  73. package/src/release/hook-pilot.ts +163 -0
  74. package/src/release/plan.test.ts +15 -3
  75. package/src/release/plan.ts +81 -56
  76. package/src/row-identity.ts +7 -0
  77. package/src/task.ts +7 -0
  78. package/src/tools/atomic.ts +8 -0
@@ -0,0 +1,113 @@
1
+ /** Project-owned checks shared by Git, harness and worktree adapters (T13343). */
2
+ import { z } from 'zod';
3
+ /** Invocation origin; CI has stricter failure handling than local adapters. */
4
+ export const HookSourceSchema = z.enum(['agent', 'git', 'worktree', 'direct', 'ci']);
5
+ /** A checkout-relative path; runtime validation also resolves symlinks. */
6
+ export const ProjectHookPathSchema = z
7
+ .string()
8
+ .min(1)
9
+ .max(4096)
10
+ .refine((value) => !value.startsWith('/') &&
11
+ !value.includes('\\') &&
12
+ !value.split('/').includes('..') &&
13
+ !/^[A-Za-z]:/.test(value), 'Expected a project-relative path without traversal');
14
+ /** One project definition; CLEO IDs are reserved for shipped infrastructure. */
15
+ export const ProjectHookDefinitionSchema = z
16
+ .object({
17
+ id: z
18
+ .string()
19
+ .regex(/^[a-z][a-z0-9.-]{0,127}$/)
20
+ .refine((value) => !value.startsWith('cleo.'), 'CLEO IDs are reserved'),
21
+ owner: z.literal('project'),
22
+ bindings: z
23
+ .array(z.object({ source: HookSourceSchema, event: z.string().min(1).max(128) }).strict())
24
+ .min(1)
25
+ .max(16),
26
+ executable: z.string().min(1).max(4096),
27
+ handler: ProjectHookPathSchema,
28
+ args: z.array(z.string().max(8192)).max(64).default([]),
29
+ dependencies: z.array(ProjectHookPathSchema).max(128).default([]),
30
+ timeoutMs: z.number().int().min(1).max(120000).default(30000),
31
+ checkerErrorPolicy: z.enum(['warn', 'block']).default('warn'),
32
+ })
33
+ .strict();
34
+ /** Tracked single source of truth; array order defines execution order. */
35
+ export const ProjectHooksManifestSchema = z
36
+ .object({
37
+ schemaVersion: z.literal(1),
38
+ hooks: z.array(ProjectHookDefinitionSchema).max(64),
39
+ })
40
+ .strict()
41
+ .superRefine((manifest, context) => {
42
+ const ids = new Set();
43
+ for (const hook of manifest.hooks) {
44
+ if (ids.has(hook.id))
45
+ context.addIssue({ code: 'custom', message: `Duplicate hook ID: ${hook.id}` });
46
+ ids.add(hook.id);
47
+ const bindings = new Set();
48
+ for (const binding of hook.bindings) {
49
+ const key = `${binding.source}:${binding.event}`;
50
+ if (bindings.has(key))
51
+ context.addIssue({ code: 'custom', message: `Duplicate binding: ${hook.id}:${key}` });
52
+ bindings.add(key);
53
+ }
54
+ }
55
+ });
56
+ /** Structured checker verdict written as one JSON object on stdout. */
57
+ export const ProjectHookVerdictSchema = z
58
+ .object({
59
+ status: z.enum(['pass', 'block', 'warn', 'skip', 'checker-error']),
60
+ message: z.string().max(4096).optional(),
61
+ })
62
+ .strict();
63
+ /** Content hashes approved explicitly on this machine. */
64
+ export const HookActivationSchema = z
65
+ .object({
66
+ schemaVersion: z.literal(1),
67
+ projectRoot: z.string(),
68
+ projectIdentity: z.string(),
69
+ manifestHash: z.string().regex(/^[a-f0-9]{64}$/),
70
+ files: z.record(z.string(), z.string().regex(/^[a-f0-9]{64}$/)),
71
+ executables: z.record(z.string(), z.string()),
72
+ activatedAt: z.string(),
73
+ })
74
+ .strict();
75
+ /** Local feature state; activation never confers native harness trust. */
76
+ export const ProjectHooksLocalStateSchema = z
77
+ .object({
78
+ hooks: z.object({ project: z.object({ enabled: z.boolean() }).strict() }).strict(),
79
+ activation: HookActivationSchema.optional(),
80
+ })
81
+ .strict();
82
+ /** Validator for sanitized execution records, rejecting unexpected payload fields. */
83
+ export const HookExecutionReceiptSchema = z
84
+ .object({
85
+ schemaVersion: z.literal(1),
86
+ manifestHash: z.string().regex(/^[a-f0-9]{64}$/),
87
+ source: HookSourceSchema,
88
+ event: z.string().max(128),
89
+ recordedAt: z.string(),
90
+ outcomes: z
91
+ .array(z
92
+ .object({
93
+ id: z.string().max(128),
94
+ status: z.enum([
95
+ 'pass',
96
+ 'block',
97
+ 'warn',
98
+ 'skip',
99
+ 'checker-error',
100
+ 'timeout',
101
+ 'infrastructure-error',
102
+ ]),
103
+ blocks: z.boolean(),
104
+ code: z.string().regex(/^HOOK_[A-Z_]+$/),
105
+ exitCode: z.number().int().nullable(),
106
+ signal: z.string().max(32).nullable(),
107
+ durationMs: z.number().nonnegative(),
108
+ })
109
+ .strict())
110
+ .max(65),
111
+ })
112
+ .strict();
113
+ //# sourceMappingURL=project-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-hooks.js","sourceRoot":"","sources":["../src/project-hooks.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * @adr ADR-063
10
10
  */
11
11
  /** npm dist-tag channel for a release. */
12
- export type ReleaseChannel = 'latest' | 'beta' | 'alpha';
12
+ export type ReleaseChannel = 'latest' | 'beta' | 'alpha' | 'canary';
13
13
  /** Result of validating a version string against a channel's expectations. */
14
14
  export interface ChannelValidationResult {
15
15
  valid: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/release/channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/release/channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,179 @@
1
+ /** Bound, retained evidence required before promoting project hooks to stable (T13350). */
2
+ import { z } from 'zod';
3
+ /** Required pilot checks; every named check must pass on the same implementation. */
4
+ export declare const HOOK_PILOT_CHECKS: readonly ["packedArtifact", "publishedCanary", "readOnlyDev", "readOnlyProd", "liveClaude", "liveCodex", "hostedCi"];
5
+ /** A required hook pilot check. */
6
+ export type HookPilotCheck = (typeof HOOK_PILOT_CHECKS)[number];
7
+ /** SHA-256 evidence or implementation digest. */
8
+ export declare const HookPilotDigestSchema: z.ZodString;
9
+ /** An independent, numbered canary release; RC/beta does not satisfy this pilot. */
10
+ export declare const HookPilotCanarySchema: z.ZodString;
11
+ /** Exact live harness versions, kept separate from source-version normalization. */
12
+ export declare const HookPilotHarnessVersionsSchema: z.ZodObject<{
13
+ claude: z.ZodString;
14
+ codex: z.ZodString;
15
+ }, z.core.$strict>;
16
+ /** Retained proof path remains inside the evidence artifact directory. */
17
+ export declare const HookPilotProofReferenceSchema: z.ZodObject<{
18
+ path: z.ZodString;
19
+ sha256: z.ZodString;
20
+ }, z.core.$strict>;
21
+ /** Common identity attached to every retained proof, never inferred from similar releases. */
22
+ export declare const HookPilotIdentitySchema: z.ZodObject<{
23
+ canaryVersion: z.ZodString;
24
+ sourceDigest: z.ZodString;
25
+ vidaCommit: z.ZodString;
26
+ harnessVersions: z.ZodObject<{
27
+ claude: z.ZodString;
28
+ codex: z.ZodString;
29
+ }, z.core.$strict>;
30
+ }, z.core.$strict>;
31
+ /** A bounded collection of actual pilot receipts. Missing or partial checks hold promotion. */
32
+ export declare const HookPilotEvidenceSchema: z.ZodObject<{
33
+ canaryVersion: z.ZodString;
34
+ sourceDigest: z.ZodString;
35
+ vidaCommit: z.ZodString;
36
+ harnessVersions: z.ZodObject<{
37
+ claude: z.ZodString;
38
+ codex: z.ZodString;
39
+ }, z.core.$strict>;
40
+ schemaVersion: z.ZodLiteral<1>;
41
+ vidaRepository: z.ZodString;
42
+ hostedRunId: z.ZodNumber;
43
+ checks: z.ZodObject<{
44
+ packedArtifact: z.ZodObject<{
45
+ path: z.ZodString;
46
+ sha256: z.ZodString;
47
+ }, z.core.$strict>;
48
+ publishedCanary: z.ZodObject<{
49
+ path: z.ZodString;
50
+ sha256: z.ZodString;
51
+ }, z.core.$strict>;
52
+ readOnlyDev: z.ZodObject<{
53
+ path: z.ZodString;
54
+ sha256: z.ZodString;
55
+ }, z.core.$strict>;
56
+ readOnlyProd: z.ZodObject<{
57
+ path: z.ZodString;
58
+ sha256: z.ZodString;
59
+ }, z.core.$strict>;
60
+ liveClaude: z.ZodObject<{
61
+ path: z.ZodString;
62
+ sha256: z.ZodString;
63
+ }, z.core.$strict>;
64
+ liveCodex: z.ZodObject<{
65
+ path: z.ZodString;
66
+ sha256: z.ZodString;
67
+ }, z.core.$strict>;
68
+ hostedCi: z.ZodObject<{
69
+ path: z.ZodString;
70
+ sha256: z.ZodString;
71
+ }, z.core.$strict>;
72
+ }, z.core.$strict>;
73
+ }, z.core.$strict>;
74
+ /** Validated evidence bundle index. */
75
+ export type HookPilotEvidence = z.infer<typeof HookPilotEvidenceSchema>;
76
+ /** Structured, redacted proof produced by a real check and retained with its hash. */
77
+ export declare const HookPilotProofSchema: z.ZodObject<{
78
+ canaryVersion: z.ZodString;
79
+ sourceDigest: z.ZodString;
80
+ vidaCommit: z.ZodString;
81
+ harnessVersions: z.ZodObject<{
82
+ claude: z.ZodString;
83
+ codex: z.ZodString;
84
+ }, z.core.$strict>;
85
+ schemaVersion: z.ZodLiteral<1>;
86
+ check: z.ZodEnum<{
87
+ packedArtifact: "packedArtifact";
88
+ publishedCanary: "publishedCanary";
89
+ readOnlyDev: "readOnlyDev";
90
+ readOnlyProd: "readOnlyProd";
91
+ liveClaude: "liveClaude";
92
+ liveCodex: "liveCodex";
93
+ hostedCi: "hostedCi";
94
+ }>;
95
+ status: z.ZodLiteral<"pass">;
96
+ observedAt: z.ZodString;
97
+ checkedCount: z.ZodNumber;
98
+ exitCode: z.ZodLiteral<0>;
99
+ mode: z.ZodEnum<{
100
+ "read-only": "read-only";
101
+ "packed-artifact": "packed-artifact";
102
+ "published-canary": "published-canary";
103
+ "live-harness": "live-harness";
104
+ "hosted-ci": "hosted-ci";
105
+ }>;
106
+ packageVersions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
107
+ ordinaryCommands: z.ZodOptional<z.ZodNumber>;
108
+ disposablePushes: z.ZodOptional<z.ZodNumber>;
109
+ hostedRunId: z.ZodOptional<z.ZodNumber>;
110
+ url: z.ZodOptional<z.ZodString>;
111
+ }, z.core.$strict>;
112
+ /** A validated retained proof. */
113
+ export type HookPilotProof = z.infer<typeof HookPilotProofSchema>;
114
+ /** Minimal authoritative GitHub response required for an actual successful workflow run. */
115
+ export declare const HookPilotHostedRunSchema: z.ZodObject<{
116
+ id: z.ZodNumber;
117
+ head_sha: z.ZodString;
118
+ status: z.ZodLiteral<"completed">;
119
+ conclusion: z.ZodLiteral<"success">;
120
+ path: z.ZodString;
121
+ html_url: z.ZodString;
122
+ repository: z.ZodObject<{
123
+ full_name: z.ZodString;
124
+ }, z.core.$strip>;
125
+ }, z.core.$strip>;
126
+ /** Minimal runner/step evidence; an empty never-started job cannot satisfy hosted CI. */
127
+ export declare const HookPilotHostedJobsSchema: z.ZodObject<{
128
+ jobs: z.ZodArray<z.ZodObject<{
129
+ name: z.ZodString;
130
+ status: z.ZodString;
131
+ conclusion: z.ZodNullable<z.ZodString>;
132
+ runner_id: z.ZodNumber;
133
+ runner_name: z.ZodNullable<z.ZodString>;
134
+ labels: z.ZodArray<z.ZodString>;
135
+ steps: z.ZodArray<z.ZodObject<{
136
+ name: z.ZodString;
137
+ status: z.ZodString;
138
+ conclusion: z.ZodNullable<z.ZodString>;
139
+ }, z.core.$strip>>;
140
+ }, z.core.$strip>>;
141
+ }, z.core.$strip>;
142
+ /** A bounded API JSON reader. Production uses gh; tests inject only transport responses. */
143
+ export type HookPilotApiReader = (endpoint: string) => string;
144
+ /** Inputs that bind validation to the release currently being promoted. */
145
+ export interface HookPilotValidationOptions {
146
+ /** Repository checkout used for the normalized implementation digest. */
147
+ root: string;
148
+ /** Retained evidence index; its directory contains all proof files. */
149
+ evidencePath: string;
150
+ /** Stable version receiving promotion; cannot precede the canary base. Source proof must match. */
151
+ stableVersion: string;
152
+ /** Trusted release-side pilot repository; evidence cannot redirect authority. */
153
+ vidaRepository: string;
154
+ /** Authoritative read transport, injectable for sanitized tests. */
155
+ readApi?: HookPilotApiReader;
156
+ }
157
+ /** Reusable normalized source digest and exact publish cohort. */
158
+ export interface HookPilotSourceDigest {
159
+ /** Algorithm format, including inclusion and normalization rules. */
160
+ schemaVersion: 1;
161
+ /** SHA-256 of sorted framed mode/path/content records with manifest normalization. */
162
+ digest: string;
163
+ /** Number of assessed tracked files. */
164
+ fileCount: number;
165
+ /** Package names from release.yml's publish_pkg SSoT. */
166
+ cohort: string[];
167
+ }
168
+ /** Validation result contains attribution only, never proof payloads or credentials. */
169
+ export interface HookPilotValidationResult {
170
+ /** Confirmed independent canary. */
171
+ canaryVersion: string;
172
+ /** Normalized source digest used by this validation. */
173
+ sourceDigest: string;
174
+ /** Exact VidaPeps commit validated by hosted CI. */
175
+ vidaCommit: string;
176
+ /** Required checks validated. */
177
+ checks: HookPilotCheck[];
178
+ }
179
+ //# sourceMappingURL=hook-pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-pilot.d.ts","sourceRoot":"","sources":["../../src/release/hook-pilot.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,sHAQpB,CAAC;AACX,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,aAAqC,CAAC;AACxE,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,aAAoD,CAAC;AACvF,oFAAoF;AACpF,eAAO,MAAM,8BAA8B;;;kBAKhC,CAAC;AACZ,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B;;;kBAgB/B,CAAC;AACZ,8FAA8F;AAC9F,eAAO,MAAM,uBAAuB;;;;;;;;kBAOzB,CAAC;AACZ,+FAA+F;AAC/F,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkBzB,CAAC;AACZ,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAatB,CAAC;AACZ,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAQnC,CAAC;AACH,yFAAyF;AACzF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAsBpC,CAAC;AACH,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAC9D,2EAA2E;AAC3E,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AACD,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,EAAE,CAAC,CAAC;IACjB,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,wFAAwF;AACxF,MAAM,WAAW,yBAAyB;IACxC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B"}
@@ -0,0 +1,112 @@
1
+ /** Bound, retained evidence required before promoting project hooks to stable (T13350). */
2
+ import { z } from 'zod';
3
+ /** Required pilot checks; every named check must pass on the same implementation. */
4
+ export const HOOK_PILOT_CHECKS = [
5
+ 'packedArtifact',
6
+ 'publishedCanary',
7
+ 'readOnlyDev',
8
+ 'readOnlyProd',
9
+ 'liveClaude',
10
+ 'liveCodex',
11
+ 'hostedCi',
12
+ ];
13
+ /** SHA-256 evidence or implementation digest. */
14
+ export const HookPilotDigestSchema = z.string().regex(/^[a-f0-9]{64}$/);
15
+ /** An independent, numbered canary release; RC/beta does not satisfy this pilot. */
16
+ export const HookPilotCanarySchema = z.string().regex(/^\d{4}\.\d+\.\d+-canary\.\d+$/);
17
+ /** Exact live harness versions, kept separate from source-version normalization. */
18
+ export const HookPilotHarnessVersionsSchema = z
19
+ .object({
20
+ claude: z.string().min(1).max(128),
21
+ codex: z.string().min(1).max(128),
22
+ })
23
+ .strict();
24
+ /** Retained proof path remains inside the evidence artifact directory. */
25
+ export const HookPilotProofReferenceSchema = z
26
+ .object({
27
+ path: z
28
+ .string()
29
+ .min(1)
30
+ .max(4096)
31
+ .refine((value) => !value.startsWith('/') &&
32
+ !value.includes('\\') &&
33
+ !value.split('/').includes('..') &&
34
+ !/^[A-Za-z]:/.test(value), 'Expected a relative proof path without traversal'),
35
+ sha256: HookPilotDigestSchema,
36
+ })
37
+ .strict();
38
+ /** Common identity attached to every retained proof, never inferred from similar releases. */
39
+ export const HookPilotIdentitySchema = z
40
+ .object({
41
+ canaryVersion: HookPilotCanarySchema,
42
+ sourceDigest: HookPilotDigestSchema,
43
+ vidaCommit: z.string().regex(/^[a-f0-9]{40}$/),
44
+ harnessVersions: HookPilotHarnessVersionsSchema,
45
+ })
46
+ .strict();
47
+ /** A bounded collection of actual pilot receipts. Missing or partial checks hold promotion. */
48
+ export const HookPilotEvidenceSchema = HookPilotIdentitySchema.extend({
49
+ schemaVersion: z.literal(1),
50
+ vidaRepository: z
51
+ .string()
52
+ .regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/)
53
+ .max(256),
54
+ hostedRunId: z.number().int().positive().safe(),
55
+ checks: z
56
+ .object({
57
+ packedArtifact: HookPilotProofReferenceSchema,
58
+ publishedCanary: HookPilotProofReferenceSchema,
59
+ readOnlyDev: HookPilotProofReferenceSchema,
60
+ readOnlyProd: HookPilotProofReferenceSchema,
61
+ liveClaude: HookPilotProofReferenceSchema,
62
+ liveCodex: HookPilotProofReferenceSchema,
63
+ hostedCi: HookPilotProofReferenceSchema,
64
+ })
65
+ .strict(),
66
+ }).strict();
67
+ /** Structured, redacted proof produced by a real check and retained with its hash. */
68
+ export const HookPilotProofSchema = HookPilotIdentitySchema.extend({
69
+ schemaVersion: z.literal(1),
70
+ check: z.enum(HOOK_PILOT_CHECKS),
71
+ status: z.literal('pass'),
72
+ observedAt: z.string().datetime(),
73
+ checkedCount: z.number().int().min(1).max(100000),
74
+ exitCode: z.literal(0),
75
+ mode: z.enum(['packed-artifact', 'published-canary', 'read-only', 'live-harness', 'hosted-ci']),
76
+ packageVersions: z.record(z.string().max(256), z.string().max(128)).optional(),
77
+ ordinaryCommands: z.number().int().min(1).max(100000).optional(),
78
+ disposablePushes: z.number().int().min(1).max(100000).optional(),
79
+ hostedRunId: z.number().int().positive().safe().optional(),
80
+ url: z.string().url().max(2048).optional(),
81
+ }).strict();
82
+ /** Minimal authoritative GitHub response required for an actual successful workflow run. */
83
+ export const HookPilotHostedRunSchema = z.object({
84
+ id: z.number().int().positive(),
85
+ head_sha: z.string().regex(/^[a-f0-9]{40}$/),
86
+ status: z.literal('completed'),
87
+ conclusion: z.literal('success'),
88
+ path: z.string().max(4096),
89
+ html_url: z.string().url().max(2048),
90
+ repository: z.object({ full_name: z.string().max(256) }),
91
+ });
92
+ /** Minimal runner/step evidence; an empty never-started job cannot satisfy hosted CI. */
93
+ export const HookPilotHostedJobsSchema = z.object({
94
+ jobs: z
95
+ .array(z.object({
96
+ name: z.string().max(256),
97
+ status: z.string().max(32),
98
+ conclusion: z.string().nullable(),
99
+ runner_id: z.number().int(),
100
+ runner_name: z.string().nullable(),
101
+ labels: z.array(z.string().max(128)).max(32),
102
+ steps: z
103
+ .array(z.object({
104
+ name: z.string().max(512),
105
+ status: z.string().max(32),
106
+ conclusion: z.string().nullable(),
107
+ }))
108
+ .max(256),
109
+ }))
110
+ .max(100),
111
+ });
112
+ //# sourceMappingURL=hook-pilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-pilot.js","sourceRoot":"","sources":["../../src/release/hook-pilot.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,15 @@ export declare const RELEASE_PLAN_SCHEMA_URL = "https://cleocode.io/schemas/rele
44
44
  * Includes `rc` in addition to the legacy `latest|beta|alpha` triple to allow
45
45
  * release candidates without conflating with `beta` per SPEC §6.1.
46
46
  */
47
- export declare const RELEASE_CHANNEL: readonly ["latest", "beta", "alpha", "rc"];
47
+ export declare const RELEASE_CHANNEL: readonly ["latest", "beta", "alpha", "rc", "canary"];
48
+ /** Persisted prerelease classification, shared by planning and reconciliation. */
49
+ export declare const RELEASE_PERSISTED_CHANNEL: {
50
+ readonly latest: "latest";
51
+ readonly beta: "beta";
52
+ readonly alpha: "dev";
53
+ readonly rc: "beta";
54
+ readonly canary: "beta";
55
+ };
48
56
  /**
49
57
  * Version-scheme variants. `calver-suffix` is the hotfix grammar
50
58
  * `vYYYY.M.DD.N` per SPEC R-402.
@@ -101,6 +109,7 @@ export declare const ReleaseChannelSchema: z.ZodEnum<{
101
109
  beta: "beta";
102
110
  latest: "latest";
103
111
  alpha: "alpha";
112
+ canary: "canary";
104
113
  rc: "rc";
105
114
  }>;
106
115
  /** Zod schema for {@link RELEASE_SCHEME}. */
@@ -351,6 +360,7 @@ export declare const ReleasePlanSchema: z.ZodObject<{
351
360
  beta: "beta";
352
361
  latest: "latest";
353
362
  alpha: "alpha";
363
+ canary: "canary";
354
364
  rc: "rc";
355
365
  }>;
356
366
  epicId: z.ZodNullable<z.ZodString>;
@@ -359,6 +369,7 @@ export declare const ReleasePlanSchema: z.ZodObject<{
359
369
  regular: "regular";
360
370
  prerelease: "prerelease";
361
371
  }>;
372
+ hooksV1Promotion: z.ZodOptional<z.ZodBoolean>;
362
373
  createdAt: z.ZodISODateTime;
363
374
  createdBy: z.ZodString;
364
375
  previousVersion: z.ZodNullable<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/release/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/release/plan.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,15 @@ export const RELEASE_PLAN_SCHEMA_URL = 'https://cleocode.io/schemas/release-plan
46
46
  * Includes `rc` in addition to the legacy `latest|beta|alpha` triple to allow
47
47
  * release candidates without conflating with `beta` per SPEC §6.1.
48
48
  */
49
- export const RELEASE_CHANNEL = ['latest', 'beta', 'alpha', 'rc'];
49
+ export const RELEASE_CHANNEL = ['latest', 'beta', 'alpha', 'rc', 'canary'];
50
+ /** Persisted prerelease classification, shared by planning and reconciliation. */
51
+ export const RELEASE_PERSISTED_CHANNEL = {
52
+ latest: 'latest',
53
+ beta: 'beta',
54
+ alpha: 'dev',
55
+ rc: 'beta',
56
+ canary: 'beta',
57
+ };
50
58
  /**
51
59
  * Version-scheme variants. `calver-suffix` is the hotfix grammar
52
60
  * `vYYYY.M.DD.N` per SPEC R-402.
@@ -307,7 +315,8 @@ export const ReleasePlanMetaSchema = z
307
315
  * - R-305: `platformMatrix[]` non-empty.
308
316
  * - R-306: deterministic re-validation inside `open` and `reconcile`.
309
317
  */
310
- export const ReleasePlanSchema = z.object({
318
+ export const ReleasePlanSchema = z
319
+ .object({
311
320
  /** Schema URL for this plan version. */
312
321
  $schema: z.string().optional(),
313
322
  /** Requested version string (e.g. "v2026.6.0"). Includes the leading `v`. */
@@ -328,6 +337,8 @@ export const ReleasePlanSchema = z.object({
328
337
  epicId: NonEmptyString.nullable(),
329
338
  /** Release-kind classification. */
330
339
  releaseKind: ReleaseKindSchema,
340
+ /** Explicit hooks-v1 stable promotion; ordinary and hotfix releases are exempt. */
341
+ hooksV1Promotion: z.boolean().optional(),
331
342
  /** ISO-8601 timestamp the plan was written. */
332
343
  createdAt: Iso8601,
333
344
  /** Identifier of the actor that wrote the plan (agent name or operator). */
@@ -361,6 +372,18 @@ export const ReleasePlanSchema = z.object({
361
372
  status: ReleaseStatusSchema,
362
373
  /** Informational / forward-compat metadata. */
363
374
  meta: ReleasePlanMetaSchema.optional(),
375
+ })
376
+ .superRefine((plan, context) => {
377
+ const canaryVersion = /-canary\.\d+$/.test(plan.resolvedVersion);
378
+ const canarySuffix = /-canary(?:\.|$)/.test(plan.resolvedVersion);
379
+ if ((plan.channel === 'canary' && !canaryVersion) ||
380
+ (plan.channel !== 'canary' && canarySuffix)) {
381
+ context.addIssue({
382
+ code: 'custom',
383
+ path: ['channel'],
384
+ message: 'Numbered canary versions require the independent canary channel.',
385
+ });
386
+ }
364
387
  });
365
388
  // ─── Parse helper ────────────────────────────────────────────────────────────
366
389
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/release/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/release/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kDAAkD,CAAC;AAE1F,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAU,CAAC;AACpF,kFAAkF;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,KAAK;IACZ,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;CACN,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAU,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,WAAW;CACH,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAU,CAAC;AAEnG;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW;IACX,aAAa;IACb,WAAW;IACX,aAAa;IACb,aAAa;IACb,KAAK;CACG,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAU,CAAC;AAEjG;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM;IACN,KAAK;IACL,OAAO;IACP,MAAM;IACN,UAAU;IACV,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;CACA,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;CACN,CAAC;AAEX,gFAAgF;AAEhF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1D,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEtD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEpD,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEhD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1D,wCAAwC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEjD,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEhD,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE3C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE5D,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzC,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,sFAAsF;IACtF,EAAE,EAAE,cAAc;IAClB,uDAAuD;IACvD,IAAI,EAAE,cAAc;IACpB,oCAAoC;IACpC,MAAM,EAAE,YAAY;IACpB,mDAAmD;IACnD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACtC,8DAA8D;IAC9D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,iEAAiE;IACjE,YAAY,EAAE,cAAc;CAC7B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,2BAA2B;IAC3B,IAAI,EAAE,cAAc;IACpB,4EAA4E;IAC5E,IAAI,EAAE,cAAc;IACpB,0CAA0C;IAC1C,MAAM,EAAE,gBAAgB;IACxB,qDAAqD;IACrD,cAAc,EAAE,OAAO;IACvB,oFAAoF;IACpF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,yEAAyE;IACzE,cAAc,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,6BAA6B;IAC7B,QAAQ,EAAE,mBAAmB;IAC7B,4BAA4B;IAC5B,SAAS,EAAE,eAAe;IAC1B,wEAAwE;IACxE,OAAO,EAAE,cAAc;IACvB,8DAA8D;IAC9D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,mEAAmE;IACnE,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE;IAClC,qEAAqE;IACrE,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,kEAAkE;IAClE,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE;IAClC,mEAAmE;IACnE,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC/B,sEAAsE;IACtE,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,yBAAyB;IACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,yCAAyC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,8DAA8D;IAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,wDAAwD;IACxD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,oEAAoE;IACpE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,+CAA+C;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEzB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,wCAAwC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,6EAA6E;IAC7E,OAAO,EAAE,cAAc;IACvB,6EAA6E;IAC7E,eAAe,EAAE,cAAc;IAC/B,+EAA+E;IAC/E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,iEAAiE;IACjE,MAAM,EAAE,mBAAmB;IAC3B,6CAA6C;IAC7C,OAAO,EAAE,oBAAoB;IAC7B;;;;OAIG;IACH,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE;IACjC,mCAAmC;IACnC,WAAW,EAAE,iBAAiB;IAC9B,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,+CAA+C;IAC/C,SAAS,EAAE,OAAO;IAClB,4EAA4E;IAC5E,SAAS,EAAE,cAAc;IACzB;;;OAGG;IACH,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,8EAA8E;IAC9E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,6DAA6D;IAC7D,iBAAiB,EAAE,OAAO,CAAC,QAAQ,EAAE;IACrC,sCAAsC;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IACrC,0BAA0B;IAC1B,SAAS,EAAE,0BAA0B;IACrC,oCAAoC;IACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACjC,mCAAmC;IACnC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC;IACzD,kDAAkD;IAClD,gBAAgB,EAAE,6BAA6B;IAC/C,wEAAwE;IACxE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uEAAuE;IACvE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,mCAAmC;IACnC,MAAM,EAAE,mBAAmB;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAC7B,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,IACE,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC;QAC7C,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,YAAY,CAAC,EAC3C,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,kEAAkE;SAC5E,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AA0DL,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAc;IAEd,OAAO,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC"}
@@ -103,8 +103,8 @@ describe('Release plan constant tuples', () => {
103
103
  ]);
104
104
  expect(RELEASE_STATUS).toHaveLength(8);
105
105
  });
106
- it('exports the 4-channel set (latest|beta|alpha|rc)', () => {
107
- expect(new Set(RELEASE_CHANNEL)).toEqual(new Set(['latest', 'beta', 'alpha', 'rc']));
106
+ it('exports the independent canary channel alongside existing channels', () => {
107
+ expect(new Set(RELEASE_CHANNEL)).toEqual(new Set(['latest', 'beta', 'alpha', 'rc', 'canary']));
108
108
  });
109
109
  it('exports the 3-scheme set including calver-suffix', () => {
110
110
  expect(RELEASE_SCHEME).toContain('calver');
@@ -202,9 +202,20 @@ describe('ReleasePlanSchema — status FSM', () => {
202
202
  // ─── Enum rejection per field ────────────────────────────────────────────────
203
203
  describe('ReleasePlanSchema — enum rejection', () => {
204
204
  it('rejects unknown channel', () => {
205
- const plan = { ...makeValidPlan(), channel: 'canary' };
205
+ const plan = { ...makeValidPlan(), channel: 'rolling' };
206
206
  expect(() => parseReleasePlan(plan)).toThrow();
207
207
  });
208
+ it('accepts numbered canaries and rejects channel/version disagreement', () => {
209
+ const plan = {
210
+ ...makeValidPlan(),
211
+ version: 'v2026.10.6-canary.1',
212
+ resolvedVersion: 'v2026.10.6-canary.1',
213
+ channel: 'canary',
214
+ };
215
+ expect(parseReleasePlan(plan).channel).toBe('canary');
216
+ expect(() => parseReleasePlan({ ...plan, channel: 'latest' })).toThrow();
217
+ expect(() => parseReleasePlan({ ...plan, resolvedVersion: 'v2026.10.6-canary' })).toThrow();
218
+ });
208
219
  it('rejects unknown scheme', () => {
209
220
  const plan = { ...makeValidPlan(), scheme: 'rolling' };
210
221
  expect(() => parseReleasePlan(plan)).toThrow();