@empire-builder-kit/nx 1.0.0-rc.44 → 1.0.0-rc.46

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 (100) hide show
  1. package/package.json +3 -3
  2. package/src/blueprints/external-sandbox.d.ts +1 -1
  3. package/src/cli/main.d.ts +11 -5
  4. package/src/cli/main.js +88 -29
  5. package/src/container-images.d.ts +1 -1
  6. package/src/container-images.js +1 -1
  7. package/src/developer-agent/generator-planning.js +10 -3
  8. package/src/developer-agent/operation-registry.js +1 -1
  9. package/src/executors/deployment-plan/deployment-plan.js +5 -1
  10. package/src/executors/deployment-plan/schema.json +1 -1
  11. package/src/executors/fleet/fleet.js +4 -0
  12. package/src/executors/fleet/schema.json +1 -1
  13. package/src/executors/github-bootstrap/github-bootstrap.d.ts +3 -0
  14. package/src/executors/github-bootstrap/github-bootstrap.js +28 -0
  15. package/src/executors/github-bootstrap/schema.json +14 -0
  16. package/src/executors/local-deploy/federated-credential-transport.d.ts +4 -3
  17. package/src/executors/local-deploy/federated-credential-transport.js +15 -5
  18. package/src/foundation/cost-estimate.d.ts +8 -3
  19. package/src/foundation/cost-estimate.js +42 -19
  20. package/src/foundation/index.d.ts +1 -0
  21. package/src/foundation/index.js +1 -0
  22. package/src/foundation/local-private-smoke-access.js +6 -0
  23. package/src/foundation/logging.d.ts +3 -1
  24. package/src/foundation/logging.js +8 -1
  25. package/src/foundation/observability.d.ts +42 -0
  26. package/src/foundation/observability.js +181 -0
  27. package/src/foundation/preflight.js +1 -1
  28. package/src/generators/function/function.js +5 -2
  29. package/src/generators/observability-infrastructure.d.ts +2 -0
  30. package/src/generators/observability-infrastructure.js +31 -0
  31. package/src/generators/observability-policy.d.ts +4 -0
  32. package/src/generators/observability-policy.js +23 -0
  33. package/src/generators/preset/dependency-overrides.d.ts +17 -6
  34. package/src/generators/preset/dependency-overrides.js +17 -6
  35. package/src/generators/preset/tool-versions.d.ts +2 -2
  36. package/src/generators/preset/tool-versions.js +2 -2
  37. package/src/generators/preset/workspace-files-adopter-skills.js +28 -17
  38. package/src/generators/preset/workspace-files-agent-development.d.ts +9 -0
  39. package/src/generators/preset/workspace-files-agent-development.js +42 -0
  40. package/src/generators/preset/workspace-files-thin-deploy.js +17 -4
  41. package/src/generators/preset/workspace-files-thin-docs.js +10 -22
  42. package/src/generators/preset/workspace-files.d.ts +1 -0
  43. package/src/generators/preset/workspace-files.js +120 -35
  44. package/src/generators/slice/built-in-plan-alarm-identity.d.ts +173 -0
  45. package/src/generators/slice/built-in-plan-alarm-identity.js +202 -0
  46. package/src/generators/slice/built-in-plan-api-contract-files.js +136 -0
  47. package/src/generators/slice/built-in-plan-data-files.js +10 -3
  48. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +1 -1
  49. package/src/generators/slice/built-in-plan-event-contract-literal.d.ts +6 -0
  50. package/src/generators/slice/built-in-plan-event-contract-literal.js +52 -0
  51. package/src/generators/slice/built-in-plan-infrastructure-files.js +304 -144
  52. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +2 -2
  53. package/src/generators/slice/built-in-plan-metadata-files.js +37 -2
  54. package/src/generators/slice/built-in-plan-operations-files.js +106 -6
  55. package/src/generators/slice/built-in-plan-project-files.js +1 -0
  56. package/src/generators/slice/built-in-plan-release-files.js +2 -44
  57. package/src/generators/slice/built-in-plan-reliability-files.js +222 -236
  58. package/src/generators/slice/built-in-plan-shared.d.ts +29 -3
  59. package/src/generators/slice/built-in-plan-shared.js +29 -2
  60. package/src/generators/slice/built-in-plan-verification-files.js +0 -1
  61. package/src/generators/slice/built-in-plan-web-files.js +22 -6
  62. package/src/generators/slice/built-in-plan.js +2 -2
  63. package/src/generators/slice/slice.js +2 -0
  64. package/src/generators/upgrade/upgrade.d.ts +4 -3
  65. package/src/generators/upgrade/upgrade.js +139 -29
  66. package/src/generators/workload/frozen-container.d.ts +1 -1
  67. package/src/generators/workload/reliability-registration.d.ts +1 -1
  68. package/src/generators/workload/reliability-registration.js +9 -9
  69. package/src/generators/workload/workload.d.ts +1 -1
  70. package/src/generators/workload/workload.js +32 -10
  71. package/src/git-policy/github-bootstrap.d.ts +18 -0
  72. package/src/git-policy/github-bootstrap.js +99 -6
  73. package/src/local-dev/dev-command-core.d.ts +24 -3
  74. package/src/local-dev/dev-command-core.js +124 -12
  75. package/src/local-dev/errors.d.ts +19 -1
  76. package/src/local-dev/errors.js +18 -1
  77. package/src/local-dev/fleet-client.d.ts +64 -6
  78. package/src/local-dev/fleet-client.js +189 -15
  79. package/src/local-dev/fleet-process.d.ts +47 -2
  80. package/src/local-dev/fleet-process.js +248 -31
  81. package/src/local-dev/fleet-runtime.d.ts +37 -0
  82. package/src/local-dev/fleet-runtime.js +127 -69
  83. package/src/local-dev/fleet-session.d.ts +1 -0
  84. package/src/local-dev/fleet-session.js +83 -7
  85. package/src/local-dev/fleet-state.d.ts +5 -0
  86. package/src/local-dev/fleet-state.js +11 -2
  87. package/src/local-dev/fleet-supervisor-daemon.js +1 -5
  88. package/src/local-dev/fleet-supervisor.d.ts +7 -0
  89. package/src/local-dev/fleet-supervisor.js +83 -12
  90. package/src/local-dev/slice-runner.d.ts +19 -1
  91. package/src/local-dev/slice-runner.js +290 -91
  92. package/src/repository-policy/deployment-plan.d.ts +1 -1
  93. package/src/repository-policy/deployment-plan.js +16 -1
  94. package/src/secrets/generated-aws-control-plane.d.ts +11 -1
  95. package/src/secrets/generated-aws-control-plane.js +92 -29
  96. package/src/secrets/operator.d.ts +3 -2
  97. package/src/secrets/operator.js +27 -5
  98. package/src/supply-chain/blueprint-verification-authority.js +24 -3
  99. package/src/supply-chain/generated-files.js +9 -0
  100. package/src/supply-chain/sbom.js +74 -12
@@ -17,7 +17,7 @@ export declare const PRODUCT_VERSIONS: {
17
17
  readonly awsSts: "^3.700.0";
18
18
  readonly drizzle: "^0.45.2";
19
19
  readonly drizzleKit: "^0.31.4";
20
- readonly next: "16.3.8";
20
+ readonly next: "16.4.2";
21
21
  readonly pg: "^8.22.0";
22
22
  readonly playwright: "^1.59.1";
23
23
  readonly react: "19.2.8";
@@ -27,9 +27,35 @@ export declare const PRODUCT_VERSIONS: {
27
27
  readonly typesPg: "^8.15.5";
28
28
  readonly typesReact: "19.2.17";
29
29
  readonly typesReactDom: "19.2.3";
30
- readonly vitest: "4.1.11";
30
+ readonly vitest: "4.1.12";
31
31
  };
32
- export declare const PRODUCT_PACKAGE_MANAGED_JSON_POINTERS: readonly ["/name", "/version", "/private", "/dependencies/@aws-sdk~1client-appconfigdata", "/dependencies/@aws-sdk~1client-cloudwatch", "/dependencies/@aws-sdk~1client-cloudwatch-logs", "/dependencies/@aws-sdk~1client-cost-explorer", "/dependencies/@aws-sdk~1client-cognito-identity-provider", "/dependencies/@aws-sdk~1client-dynamodb", "/dependencies/@aws-sdk~1client-ecs", "/dependencies/@aws-sdk~1client-eventbridge", "/dependencies/@aws-sdk~1client-s3", "/dependencies/@aws-sdk~1client-secrets-manager", "/dependencies/@aws-sdk~1client-sfn", "/dependencies/@aws-sdk~1client-sqs", "/dependencies/@aws-sdk~1rds-signer", "/dependencies/@aws-sdk~1client-ssm", "/dependencies/@aws-sdk~1client-sts", "/dependencies/@empire-builder-kit~1runtime", "/dependencies/drizzle-orm", "/dependencies/next", "/dependencies/pg", "/dependencies/react", "/dependencies/react-dom", "/dependencies/server-only", "/devDependencies/@axe-core~1playwright", "/devDependencies/@playwright~1test", "/devDependencies/@types~1node", "/devDependencies/@types~1pg", "/devDependencies/@types~1react", "/devDependencies/@types~1react-dom", "/devDependencies/drizzle-kit", "/devDependencies/vitest", "/exports/.~1api-client", "/exports/.~1api-contract", "/exports/.~1contracts"];
32
+ /**
33
+ * Exact managed builder: declared as a Slice devDependency and run from the
34
+ * Slice's installed node_modules slot after its package metadata matches. The
35
+ * wrapper does not read the lockfile; the frozen pnpm install governs what is
36
+ * installed in that slot.
37
+ */
38
+ export declare const OPEN_NEXT_AWS_VERSION = "4.1.12";
39
+ /**
40
+ * The sharp release OpenNext installs into the image-optimization Function.
41
+ * OpenNext installs that Function's packages with npm during its build,
42
+ * outside the Slice lockfile and every lockfile gate. Without
43
+ * `imageOptimization.install` it selects its own Sharp release with
44
+ * `--arch=arm64` (OpenNext createImageOptimizationBundle and installDeps), and
45
+ * npm 10 and 11 ignore `--arch` when they select sharp's native package, so
46
+ * the build host's CPU wins. The generated web/open-next.config.ts therefore
47
+ * sets `imageOptimization.install` with this release and `--cpu=arm64`.
48
+ */
49
+ export declare const OPEN_NEXT_IMAGE_OPTIMIZATION_SHARP_VERSION = "0.35.5";
50
+ /**
51
+ * The libvips package and library that sharp 0.35.5 requires for Linux arm64:
52
+ * it pins `@img/sharp-libvips-linux-arm64` 1.3.4 exactly, which exports
53
+ * `./binary` as `./lib/libvips-cpp.so.8.18.7`. The build wrapper's native
54
+ * check requires both, so they move with the sharp pin above.
55
+ */
56
+ export declare const OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_VERSION = "1.3.4";
57
+ export declare const OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_LIBRARY = "libvips-cpp.so.8.18.7";
58
+ export declare const PRODUCT_PACKAGE_MANAGED_JSON_POINTERS: readonly ["/name", "/version", "/private", "/dependencies/@aws-sdk~1client-appconfigdata", "/dependencies/@aws-sdk~1client-cloudwatch", "/dependencies/@aws-sdk~1client-cloudwatch-logs", "/dependencies/@aws-sdk~1client-cost-explorer", "/dependencies/@aws-sdk~1client-cognito-identity-provider", "/dependencies/@aws-sdk~1client-dynamodb", "/dependencies/@aws-sdk~1client-ecs", "/dependencies/@aws-sdk~1client-eventbridge", "/dependencies/@aws-sdk~1client-s3", "/dependencies/@aws-sdk~1client-secrets-manager", "/dependencies/@aws-sdk~1client-sfn", "/dependencies/@aws-sdk~1client-sqs", "/dependencies/@aws-sdk~1rds-signer", "/dependencies/@aws-sdk~1client-ssm", "/dependencies/@aws-sdk~1client-sts", "/dependencies/@empire-builder-kit~1runtime", "/dependencies/drizzle-orm", "/dependencies/next", "/dependencies/pg", "/dependencies/react", "/dependencies/react-dom", "/dependencies/server-only", "/devDependencies/@axe-core~1playwright", "/devDependencies/@playwright~1test", "/devDependencies/@opennextjs~1aws", "/devDependencies/@types~1node", "/devDependencies/@types~1pg", "/devDependencies/@types~1react", "/devDependencies/@types~1react-dom", "/devDependencies/drizzle-kit", "/devDependencies/vitest", "/exports/.~1api-client", "/exports/.~1api-contract", "/exports/.~1contracts"];
33
59
  export declare function standardPackageManagedJsonPointers(sql: boolean): string[];
34
60
  export declare const STANDARD_LOCAL_DEV_ADAPTER: (name: string, dependencySlices?: unknown, sql?: boolean) => {
35
61
  dependencySlices: string[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STANDARD_LOCAL_DEV_ADAPTER = exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS = exports.PRODUCT_VERSIONS = void 0;
3
+ exports.STANDARD_LOCAL_DEV_ADAPTER = exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS = exports.OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_LIBRARY = exports.OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_VERSION = exports.OPEN_NEXT_IMAGE_OPTIMIZATION_SHARP_VERSION = exports.OPEN_NEXT_AWS_VERSION = exports.PRODUCT_VERSIONS = void 0;
4
4
  exports.standardPackageManagedJsonPointers = standardPackageManagedJsonPointers;
5
5
  exports.json = json;
6
6
  exports.lowerCamelIdentifier = lowerCamelIdentifier;
@@ -27,7 +27,7 @@ exports.PRODUCT_VERSIONS = {
27
27
  awsSts: '^3.700.0',
28
28
  drizzle: '^0.45.2',
29
29
  drizzleKit: '^0.31.4',
30
- next: '16.3.8',
30
+ next: '16.4.2',
31
31
  pg: '^8.22.0',
32
32
  playwright: '^1.59.1',
33
33
  react: '19.2.8',
@@ -39,6 +39,32 @@ exports.PRODUCT_VERSIONS = {
39
39
  typesReactDom: '19.2.3',
40
40
  vitest: tool_versions_js_1.WORKSPACE_VITEST_VERSION,
41
41
  };
42
+ /**
43
+ * Exact managed builder: declared as a Slice devDependency and run from the
44
+ * Slice's installed node_modules slot after its package metadata matches. The
45
+ * wrapper does not read the lockfile; the frozen pnpm install governs what is
46
+ * installed in that slot.
47
+ */
48
+ exports.OPEN_NEXT_AWS_VERSION = '4.1.12';
49
+ /**
50
+ * The sharp release OpenNext installs into the image-optimization Function.
51
+ * OpenNext installs that Function's packages with npm during its build,
52
+ * outside the Slice lockfile and every lockfile gate. Without
53
+ * `imageOptimization.install` it selects its own Sharp release with
54
+ * `--arch=arm64` (OpenNext createImageOptimizationBundle and installDeps), and
55
+ * npm 10 and 11 ignore `--arch` when they select sharp's native package, so
56
+ * the build host's CPU wins. The generated web/open-next.config.ts therefore
57
+ * sets `imageOptimization.install` with this release and `--cpu=arm64`.
58
+ */
59
+ exports.OPEN_NEXT_IMAGE_OPTIMIZATION_SHARP_VERSION = '0.35.5';
60
+ /**
61
+ * The libvips package and library that sharp 0.35.5 requires for Linux arm64:
62
+ * it pins `@img/sharp-libvips-linux-arm64` 1.3.4 exactly, which exports
63
+ * `./binary` as `./lib/libvips-cpp.so.8.18.7`. The build wrapper's native
64
+ * check requires both, so they move with the sharp pin above.
65
+ */
66
+ exports.OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_VERSION = '1.3.4';
67
+ exports.OPEN_NEXT_IMAGE_OPTIMIZATION_LIBVIPS_LIBRARY = 'libvips-cpp.so.8.18.7';
42
68
  exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS = [
43
69
  '/name',
44
70
  '/version',
@@ -67,6 +93,7 @@ exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS = [
67
93
  '/dependencies/server-only',
68
94
  '/devDependencies/@axe-core~1playwright',
69
95
  '/devDependencies/@playwright~1test',
96
+ '/devDependencies/@opennextjs~1aws',
70
97
  '/devDependencies/@types~1node',
71
98
  '/devDependencies/@types~1pg',
72
99
  '/devDependencies/@types~1react',
@@ -416,7 +416,6 @@ test('renders the Slice through its exact task HTTPS origin', async ({ page }) =
416
416
  expect(response?.status()).toBe(200);
417
417
  expect(response?.headers()['x-ebk-upstream']).toBe('local');
418
418
  expect(new URL(page.url()).origin).toBe(target.origin);
419
- await expect(page.getByRole('heading', { name: '${pascalName}', exact: true })).toBeVisible();
420
419
  });
421
420
  `,
422
421
  'playwright.config.ts': `import { defineConfig } from '@playwright/test';
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderProductWebFiles = renderProductWebFiles;
4
4
  const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
5
- const sst_environment_source_format_js_1 = require("../../sst-environment-source-format.js");
6
5
  /** @internal */
7
6
  function renderProductWebFiles(name, pascalName, workspace, sql = false) {
8
7
  return {
9
- 'web/next-env.d.ts': (0, sst_environment_source_format_js_1.generatedNextEnvironmentSource)(),
10
8
  'web/tsconfig.json': (0, built_in_plan_shared_js_1.json)({
11
9
  extends: '../tsconfig.json',
12
10
  compilerOptions: {
@@ -18,9 +16,10 @@ function renderProductWebFiles(name, pascalName, workspace, sql = false) {
18
16
  incremental: true,
19
17
  plugins: [{ name: 'next' }],
20
18
  },
21
- // Next 16.3 regenerates next-env.d.ts and rewrites tsconfig.json when
22
- // these entries are missing; the generated files match its output so
23
- // a build leaves the tracked workspace unchanged.
19
+ // Next rewrites tsconfig.json when these entries are missing, so the
20
+ // generated include matches its output. Next writes the gitignored
21
+ // next-env.d.ts itself on dev, build, and typegen; EBK does not
22
+ // generate or track it.
24
23
  include: [
25
24
  'next-env.d.ts',
26
25
  '.next/types/**/*.ts',
@@ -131,6 +130,7 @@ export function proxy(request: NextRequest): NextResponse {
131
130
  }
132
131
  `,
133
132
  'web/src/lib/server-logging.ts': `import 'server-only';
133
+ import { randomUUID } from 'node:crypto';
134
134
  import { createLogger, type Logger } from '@empire-builder-kit/runtime/logging';
135
135
  import { createNextServerContext, type RequestContext } from '@empire-builder-kit/runtime/request-context';
136
136
  import { recordReliabilityOperation } from '../../../reliability/metrics';
@@ -167,6 +167,7 @@ export async function observeNextOperation({
167
167
  context,
168
168
  feature,
169
169
  operation,
170
+ routineSamplingId: randomUUID(),
170
171
  slice: '${name}',
171
172
  stage,
172
173
  workspace: '${workspace}',
@@ -189,13 +190,16 @@ export async function observeNextOperation({
189
190
  outcome,
190
191
  });
191
192
  };
192
- logger.info('${name} Next.js operation received');
193
193
  try {
194
+ logger.info('${name} Next.js operation started', {
195
+ routineRequestStart: true,
196
+ });
194
197
  const response = await handle(logger, context);
195
198
  recordOutcome(response.status < 400 ? 'success' : 'failure');
196
199
  logger.info('${name} Next.js operation completed', {
197
200
  attributes: { httpStatus: response.status },
198
201
  outcome: response.status < 400 ? 'success' : 'failure',
202
+ routineSuccess: response.status < 400 ? true : undefined,
199
203
  });
200
204
  return response;
201
205
  } catch (error) {
@@ -213,6 +217,18 @@ export async function observeNextOperation({
213
217
  // builds only this application instead of recursively invoking the Nx root.
214
218
  buildCommand: 'pnpm exec next build --webpack web',
215
219
  default: {},
220
+ // OpenNext installs the image-optimization Function's sharp with npm during
221
+ // the build, outside the lockfile. The Function runs on arm64 Linux (glibc).
222
+ // npm selects sharp's native package by --cpu and ignores OpenNext's --arch,
223
+ // so name the CPU here instead of inheriting the build host's.
224
+ imageOptimization: {
225
+ install: {
226
+ additionalArgs: '--cpu=arm64',
227
+ libc: 'glibc',
228
+ os: 'linux',
229
+ packages: ['sharp@${built_in_plan_shared_js_1.OPEN_NEXT_IMAGE_OPTIMIZATION_SHARP_VERSION}'],
230
+ },
231
+ },
216
232
  packageJsonPath: '../package.json',
217
233
  };
218
234
 
@@ -48,7 +48,6 @@ const FORMAT_SENSITIVE_BUILT_IN_PATHS = new Set([
48
48
  'api/generated/baseline.json',
49
49
  'api/generated/contract.json',
50
50
  'api/generated/openapi.json',
51
- 'web/next-env.d.ts',
52
51
  ]);
53
52
  function isBuiltInSliceFormatSensitivePath(path) {
54
53
  return (path.startsWith('database/migrations/') ||
@@ -175,6 +174,7 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
175
174
  function classifyPaths(files, sql) {
176
175
  const seededPaths = new Set([
177
176
  'operations/background-work.json',
177
+ 'reliability/metric-declarations.ts',
178
178
  'README.md',
179
179
  'api/data-retention.ts',
180
180
  'async/recovery-adapters.ts',
@@ -256,7 +256,7 @@ function classifyPaths(files, sql) {
256
256
  ]);
257
257
  for (const path of built_in_plan_performance_files_js_1.PRODUCT_PERFORMANCE_SEEDED_PATHS)
258
258
  seededPaths.add(path);
259
- const toolOwnedPaths = new Set(['sst-env.d.ts', 'web/next-env.d.ts']);
259
+ const toolOwnedPaths = new Set(['sst-env.d.ts']);
260
260
  return Object.entries(files)
261
261
  .filter(([path]) => path !== '.ebk/ownership.json' && !toolOwnedPaths.has(path))
262
262
  .map(([path, contents]) => {
@@ -21,6 +21,7 @@ const workspace_files_js_1 = require("../preset/workspace-files.js");
21
21
  const built_in_plan_js_1 = require("./built-in-plan.js");
22
22
  const data_policy_review_seed_js_1 = require("./data-policy-review-seed.js");
23
23
  const tree_policy_js_1 = require("../repository-policy/tree-policy.js");
24
+ const observability_policy_js_1 = require("../observability-policy.js");
24
25
  var built_in_plan_js_2 = require("./built-in-plan.js");
25
26
  Object.defineProperty(exports, "PRODUCT_PACKAGE_MANAGED_JSON_POINTERS", { enumerable: true, get: function () { return built_in_plan_js_2.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS; } });
26
27
  Object.defineProperty(exports, "STANDARD_LOCAL_DEV_ADAPTER", { enumerable: true, get: function () { return built_in_plan_js_2.STANDARD_LOCAL_DEV_ADAPTER; } });
@@ -176,6 +177,7 @@ function parseBlueprintInputs(inputs) {
176
177
  }
177
178
  async function sliceGenerator(tree, options) {
178
179
  const name = requireSliceName(options.name);
180
+ (0, observability_policy_js_1.requireObservabilityPolicyFromTree)(tree);
179
181
  const root = node_path_1.posix.join('packages', name);
180
182
  const blueprintReference = options.blueprint ?? 'standard';
181
183
  const parsedInputs = parseBlueprintInputs(options.inputs);
@@ -54,13 +54,14 @@ export interface UpgradeReport {
54
54
  unchanged: string[];
55
55
  }
56
56
  export interface SeededReconciliationWork {
57
- adopterContentSha256: string;
58
- category: 'async-adapter' | 'async-settings' | 'configuration-contract' | 'configuration-values' | 'feature-controls' | 'frontend-contract' | 'frontend-security' | 'performance-aggregate-provider' | 'performance-policy' | 'reliability-operations' | 'reliability-slo' | 'release-controls' | 'secret-contract';
57
+ adopterContentSha256: string | null;
58
+ category: 'async-adapter' | 'async-settings' | 'configuration-contract' | 'configuration-values' | 'feature-controls' | 'frontend-contract' | 'frontend-security' | 'performance-aggregate-provider' | 'performance-policy' | 'reliability-metrics' | 'reliability-operations' | 'reliability-slo' | 'release-controls' | 'secret-contract';
59
59
  currentFrameworkSha256: string | null;
60
+ guidance?: string;
60
61
  implications: string[];
61
62
  markerReference: 'PLAN:5.6/seeded-upgrade-reconciliation';
62
63
  path: string;
63
- requiredAction: 'review-and-reconcile-preserving-adopter-content';
64
+ requiredAction: 'declare-existing-custom-metric-series-before-promotion' | 'review-and-reconcile-preserving-adopter-content';
64
65
  targetFrameworkSha256: string;
65
66
  }
66
67
  interface JsonOwnershipChanges {