@intentius/sql-yodeler 0.1.0 → 0.2.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 (177) hide show
  1. package/README.md +26 -24
  2. package/dist/bin.js +15 -0
  3. package/dist/bin.js.map +1 -1
  4. package/dist/chant/apply.d.ts +9 -1
  5. package/dist/chant/apply.js +13 -1
  6. package/dist/chant/apply.js.map +1 -1
  7. package/dist/chant/drift.d.ts +69 -1
  8. package/dist/chant/drift.js +152 -5
  9. package/dist/chant/drift.js.map +1 -1
  10. package/dist/chant/runnable.d.ts +19 -0
  11. package/dist/chant/runnable.js +47 -0
  12. package/dist/chant/runnable.js.map +1 -0
  13. package/dist/cli.d.ts +4 -0
  14. package/dist/cli.js +40 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/command.d.ts +6 -0
  17. package/dist/command.js.map +1 -1
  18. package/dist/commands/apply.js +161 -41
  19. package/dist/commands/apply.js.map +1 -1
  20. package/dist/commands/approve.d.ts +5 -0
  21. package/dist/commands/approve.js +111 -0
  22. package/dist/commands/approve.js.map +1 -0
  23. package/dist/commands/drift.d.ts +11 -0
  24. package/dist/commands/drift.js +247 -18
  25. package/dist/commands/drift.js.map +1 -1
  26. package/dist/commands/index.js +6 -0
  27. package/dist/commands/index.js.map +1 -1
  28. package/dist/commands/init.d.ts +3 -0
  29. package/dist/commands/init.js +15 -11
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/lint.js +14 -5
  32. package/dist/commands/lint.js.map +1 -1
  33. package/dist/commands/mcp.d.ts +3 -0
  34. package/dist/commands/mcp.js +50 -0
  35. package/dist/commands/mcp.js.map +1 -0
  36. package/dist/commands/new.d.ts +2 -0
  37. package/dist/commands/new.js +134 -10
  38. package/dist/commands/new.js.map +1 -1
  39. package/dist/commands/override.d.ts +3 -0
  40. package/dist/commands/override.js +118 -0
  41. package/dist/commands/override.js.map +1 -0
  42. package/dist/commands/plan.js +38 -26
  43. package/dist/commands/plan.js.map +1 -1
  44. package/dist/commands/repair.d.ts +11 -0
  45. package/dist/commands/repair.js +15 -7
  46. package/dist/commands/repair.js.map +1 -1
  47. package/dist/commands/status.js +12 -12
  48. package/dist/commands/status.js.map +1 -1
  49. package/dist/config/define.d.ts +101 -3
  50. package/dist/config/define.js +1 -1
  51. package/dist/config/define.js.map +1 -1
  52. package/dist/config/load.js +64 -4
  53. package/dist/config/load.js.map +1 -1
  54. package/dist/config/settings.d.ts +14 -1
  55. package/dist/config/settings.js +32 -4
  56. package/dist/config/settings.js.map +1 -1
  57. package/dist/env-args.d.ts +6 -0
  58. package/dist/env-args.js +31 -1
  59. package/dist/env-args.js.map +1 -1
  60. package/dist/exit.d.ts +20 -0
  61. package/dist/exit.js +28 -0
  62. package/dist/exit.js.map +1 -0
  63. package/dist/history/client.d.ts +8 -0
  64. package/dist/history/client.js +24 -1
  65. package/dist/history/client.js.map +1 -1
  66. package/dist/history/lock.d.ts +5 -1
  67. package/dist/history/lock.js +8 -2
  68. package/dist/history/lock.js.map +1 -1
  69. package/dist/index.d.ts +1 -1
  70. package/dist/init/adopt.js +8 -3
  71. package/dist/init/adopt.js.map +1 -1
  72. package/dist/init/live.d.ts +11 -0
  73. package/dist/init/live.js +25 -2
  74. package/dist/init/live.js.map +1 -1
  75. package/dist/lint/check.d.ts +8 -1
  76. package/dist/lint/check.js +23 -4
  77. package/dist/lint/check.js.map +1 -1
  78. package/dist/mcp/server.d.ts +40 -0
  79. package/dist/mcp/server.js +106 -0
  80. package/dist/mcp/server.js.map +1 -0
  81. package/dist/mcp/tools.d.ts +72 -0
  82. package/dist/mcp/tools.js +178 -0
  83. package/dist/mcp/tools.js.map +1 -0
  84. package/dist/migrations/checks.d.ts +28 -0
  85. package/dist/migrations/checks.js +97 -0
  86. package/dist/migrations/checks.js.map +1 -0
  87. package/dist/migrations/create.d.ts +3 -1
  88. package/dist/migrations/create.js +1 -0
  89. package/dist/migrations/create.js.map +1 -1
  90. package/dist/migrations/directory.js +4 -0
  91. package/dist/migrations/directory.js.map +1 -1
  92. package/dist/migrations/document.d.ts +23 -0
  93. package/dist/migrations/document.js +1 -0
  94. package/dist/migrations/document.js.map +1 -1
  95. package/dist/migrations/index.d.ts +1 -0
  96. package/dist/migrations/index.js +1 -0
  97. package/dist/migrations/index.js.map +1 -1
  98. package/dist/pr/forge.d.ts +4 -0
  99. package/dist/pr/forge.js +21 -7
  100. package/dist/pr/forge.js.map +1 -1
  101. package/dist/pr/issue.d.ts +68 -0
  102. package/dist/pr/issue.js +107 -0
  103. package/dist/pr/issue.js.map +1 -0
  104. package/dist/pr/model.d.ts +9 -1
  105. package/dist/pr/model.js +30 -6
  106. package/dist/pr/model.js.map +1 -1
  107. package/dist/pr/render.d.ts +3 -1
  108. package/dist/pr/render.js +36 -3
  109. package/dist/pr/render.js.map +1 -1
  110. package/dist/replay/index.d.ts +3 -0
  111. package/dist/replay/index.js +3 -0
  112. package/dist/replay/index.js.map +1 -1
  113. package/dist/replay/replay.js +1 -1
  114. package/dist/replay/replay.js.map +1 -1
  115. package/dist/replay/shared.d.ts +28 -0
  116. package/dist/replay/shared.js +77 -0
  117. package/dist/replay/shared.js.map +1 -0
  118. package/dist/schemas.d.ts +34 -0
  119. package/dist/schemas.js +38 -0
  120. package/dist/schemas.js.map +1 -0
  121. package/dist/server.d.ts +40 -0
  122. package/dist/server.js +87 -0
  123. package/dist/server.js.map +1 -0
  124. package/dist/steps/backfill.d.ts +21 -17
  125. package/dist/steps/backfill.js +20 -20
  126. package/dist/steps/backfill.js.map +1 -1
  127. package/dist/steps/index.d.ts +2 -2
  128. package/dist/steps/index.js +3 -3
  129. package/dist/steps/index.js.map +1 -1
  130. package/dist/steps/rebuild.d.ts +15 -15
  131. package/dist/steps/rebuild.js +17 -24
  132. package/dist/steps/rebuild.js.map +1 -1
  133. package/dist/versioned/checks.d.ts +29 -0
  134. package/dist/versioned/checks.js +54 -0
  135. package/dist/versioned/checks.js.map +1 -0
  136. package/dist/versioned/clickhouse.js +8 -0
  137. package/dist/versioned/clickhouse.js.map +1 -1
  138. package/dist/versioned/driver.d.ts +10 -0
  139. package/dist/versioned/engine.d.ts +55 -1
  140. package/dist/versioned/engine.js +99 -6
  141. package/dist/versioned/engine.js.map +1 -1
  142. package/dist/versioned/explain.js +7 -2
  143. package/dist/versioned/explain.js.map +1 -1
  144. package/dist/versioned/index.d.ts +9 -0
  145. package/dist/versioned/index.js +24 -1
  146. package/dist/versioned/index.js.map +1 -1
  147. package/dist/versioned/op.d.ts +10 -0
  148. package/dist/versioned/op.js +36 -4
  149. package/dist/versioned/op.js.map +1 -1
  150. package/dist/versioned/policy.d.ts +67 -0
  151. package/dist/versioned/policy.js +161 -0
  152. package/dist/versioned/policy.js.map +1 -0
  153. package/dist/versioned/postgres/driver.d.ts +3 -1
  154. package/dist/versioned/postgres/driver.js +30 -3
  155. package/dist/versioned/postgres/driver.js.map +1 -1
  156. package/dist/versioned/postgres/waits.d.ts +46 -0
  157. package/dist/versioned/postgres/waits.js +78 -0
  158. package/dist/versioned/postgres/waits.js.map +1 -0
  159. package/dist/versioned/report.d.ts +3 -0
  160. package/dist/versioned/report.js +4 -1
  161. package/dist/versioned/report.js.map +1 -1
  162. package/dist/versioned/stand-down.d.ts +30 -0
  163. package/dist/versioned/stand-down.js +56 -0
  164. package/dist/versioned/stand-down.js.map +1 -0
  165. package/package.json +18 -8
  166. package/schemas/apply.schema.json +269 -0
  167. package/schemas/common.schema.json +213 -0
  168. package/schemas/drift.schema.json +36 -0
  169. package/schemas/init.schema.json +31 -0
  170. package/schemas/lint-rules.schema.json +54 -0
  171. package/schemas/lint.schema.json +290 -0
  172. package/schemas/mcp.schema.json +70 -0
  173. package/schemas/new.schema.json +71 -0
  174. package/schemas/plan.schema.json +371 -0
  175. package/schemas/rebase.schema.json +54 -0
  176. package/schemas/repair.schema.json +20 -0
  177. package/schemas/status.schema.json +310 -0
@@ -1,11 +1,13 @@
1
1
  /** The versioned status as text and as JSON, for `yodel status` and `yodel apply --plan`. */
2
2
  import { describeTopology } from "../history/index.js";
3
3
  import { describeStep } from "../steps/index.js";
4
+ import { describeServer } from "../server.js";
4
5
  import { outOfOrder, partWay } from "./state.js";
5
6
  export function statusJson(r) {
6
7
  const { status } = r;
7
8
  return {
8
9
  environment: r.environment,
10
+ ...(r.server ? { server: r.server } : {}),
9
11
  ...(r.dialect === "postgres"
10
12
  ? { history: { database: r.location.database } }
11
13
  : { history: { database: r.location.database, topology: describeTopology(r.location.topology) }, topology: r.topology ?? describeTopology(r.location.topology) }),
@@ -36,7 +38,8 @@ export function statusJson(r) {
36
38
  export function renderStatus(r) {
37
39
  const { status } = r;
38
40
  const topology = r.dialect === "postgres" ? "" : `, topology ${r.topology ?? describeTopology(r.location.topology)}`;
39
- const lines = [`Migrations in ${r.environment} (history ${r.location.database}.history${topology})`, ""];
41
+ const server = r.server ? `${describeServer(r.server)}, ` : "";
42
+ const lines = [`Migrations in ${r.environment} (${server}history ${r.location.database}.history${topology})`, ""];
40
43
  lines.push(status.applied.length === 0 ? "Applied: none" : `Applied (${String(status.applied.length)}):`);
41
44
  for (const a of status.applied) {
42
45
  lines.push(` ${a.id}${a.index === undefined ? " (not in the directory)" : ""} ${a.recordedAt} by ${a.appliedBy}`);
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/versioned/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/versioned/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `yodel apply --stand-down` (`YODEL_STAND_DOWN=1`): an apply that a newer
3
+ * commit will make anyway steps aside instead of queueing for the lock.
4
+ *
5
+ * The branch is the one the run is for: `GITHUB_REF_NAME` (GitHub and
6
+ * Forgejo Actions), `CI_COMMIT_BRANCH` (GitLab CI), else the checked-out
7
+ * branch. Its tip is fetched from `origin`; when that tip is a different
8
+ * commit that contains this one, a newer commit is on the branch, and its
9
+ * own apply job applies the same environment, this run included. Anything
10
+ * that cannot be told (no branch, no origin, a fetch that fails, a tip that
11
+ * does not contain this commit, as after a force-push) is not a newer
12
+ * commit: the apply goes ahead.
13
+ */
14
+ export declare const STAND_DOWN_ENV = "YODEL_STAND_DOWN";
15
+ /** Whether the environment asks for stand-down: `YODEL_STAND_DOWN=1` (or `true`). */
16
+ export declare const standDownFromEnv: (env: NodeJS.ProcessEnv) => boolean;
17
+ /** A newer commit on the run's branch, which will apply the environment itself. */
18
+ export interface NewerCommit {
19
+ branch: string;
20
+ /** This run's commit. */
21
+ head: string;
22
+ /** The branch's tip on origin. */
23
+ tip: string;
24
+ }
25
+ /** The branch a run is for; see the module comment. */
26
+ export declare function runBranch(dir: string, env: NodeJS.ProcessEnv): Promise<string | undefined>;
27
+ /** The newer commit on the run's branch, or `undefined` when there is none or it cannot be told. */
28
+ export declare function newerCommit(dir: string, env?: NodeJS.ProcessEnv): Promise<NewerCommit | undefined>;
29
+ /** What a run that stands down says. */
30
+ export declare const standDownLine: (env: string, n: NewerCommit) => string;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * `yodel apply --stand-down` (`YODEL_STAND_DOWN=1`): an apply that a newer
3
+ * commit will make anyway steps aside instead of queueing for the lock.
4
+ *
5
+ * The branch is the one the run is for: `GITHUB_REF_NAME` (GitHub and
6
+ * Forgejo Actions), `CI_COMMIT_BRANCH` (GitLab CI), else the checked-out
7
+ * branch. Its tip is fetched from `origin`; when that tip is a different
8
+ * commit that contains this one, a newer commit is on the branch, and its
9
+ * own apply job applies the same environment, this run included. Anything
10
+ * that cannot be told (no branch, no origin, a fetch that fails, a tip that
11
+ * does not contain this commit, as after a force-push) is not a newer
12
+ * commit: the apply goes ahead.
13
+ */
14
+ import { execFile } from "node:child_process";
15
+ import { promisify } from "node:util";
16
+ const exec = promisify(execFile);
17
+ export const STAND_DOWN_ENV = "YODEL_STAND_DOWN";
18
+ /** Whether the environment asks for stand-down: `YODEL_STAND_DOWN=1` (or `true`). */
19
+ export const standDownFromEnv = (env) => env[STAND_DOWN_ENV] === "1" || env[STAND_DOWN_ENV] === "true";
20
+ async function git(dir, args) {
21
+ try {
22
+ const { stdout } = await exec("git", args, { cwd: dir, timeout: 60_000 });
23
+ return stdout.trim();
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ /** The branch a run is for; see the module comment. */
30
+ export async function runBranch(dir, env) {
31
+ const named = env.GITHUB_REF_NAME || env.CI_COMMIT_BRANCH;
32
+ if (named)
33
+ return named;
34
+ return (await git(dir, ["symbolic-ref", "--quiet", "--short", "HEAD"])) || undefined;
35
+ }
36
+ /** The newer commit on the run's branch, or `undefined` when there is none or it cannot be told. */
37
+ export async function newerCommit(dir, env = process.env) {
38
+ const branch = await runBranch(dir, env);
39
+ if (!branch)
40
+ return undefined;
41
+ const head = await git(dir, ["rev-parse", "HEAD"]);
42
+ if (!head)
43
+ return undefined;
44
+ if ((await git(dir, ["fetch", "--quiet", "--no-tags", "origin", `refs/heads/${branch}`])) === undefined)
45
+ return undefined;
46
+ const tip = await git(dir, ["rev-parse", "FETCH_HEAD"]);
47
+ if (!tip || tip === head)
48
+ return undefined;
49
+ // A tip that contains this commit is newer; one that does not (a force-push, another line) is not.
50
+ if ((await git(dir, ["merge-base", "--is-ancestor", head, tip])) === undefined)
51
+ return undefined;
52
+ return { branch, head, tip };
53
+ }
54
+ /** What a run that stands down says. */
55
+ export const standDownLine = (env, n) => `standing down: ${n.branch} on origin is at ${n.tip.slice(0, 12)}, newer than this run's ${n.head.slice(0, 12)}, and its own apply applies ${env}. Nothing was applied by this run.`;
56
+ //# sourceMappingURL=stand-down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stand-down.js","sourceRoot":"","sources":["../../src/versioned/stand-down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEjD,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAsB,EAAW,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC;AAWnI,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,GAAsB;IACjE,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,gBAAgB,CAAC;IAC1D,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACvF,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,MAAyB,OAAO,CAAC,GAAG;IACjF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1H,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC3C,mGAAmG;IACnG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,CAAc,EAAU,EAAE,CACnE,kBAAkB,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,GAAG,oCAAoC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/sql-yodeler",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Schema management and migrations for ClickHouse and Postgres, on chant's sql lexicon",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -18,8 +18,12 @@
18
18
  "yodel": "dist/bin.js"
19
19
  },
20
20
  "files": [
21
- "dist"
21
+ "dist",
22
+ "schemas"
22
23
  ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
23
27
  "engines": {
24
28
  "node": ">=22.12.0"
25
29
  },
@@ -30,24 +34,30 @@
30
34
  "lint": "eslint .",
31
35
  "typecheck": "tsc --noEmit",
32
36
  "check": "npm run typecheck && npm run lint && npm run test",
33
- "claims": "npm run build && tsx scenarios/run.ts"
37
+ "claims": "npm run build && tsx scenarios/run.ts",
38
+ "release": "bash scripts/release.sh",
39
+ "workflows": "tsx .github/src/render.ts",
40
+ "claims:page": "tsx scenarios/status-page.ts",
41
+ "bench": "npm run build && tsx bench/run.ts"
34
42
  },
35
43
  "dependencies": {
36
- "@intentius/chant": "^0.114.1",
37
- "@intentius/chant-lexicon-sql": "^0.114.1",
44
+ "@intentius/chant": "^0.115.0",
45
+ "@intentius/chant-lexicon-sql": "^0.115.0",
38
46
  "tsx": "^4.23.15"
39
47
  },
40
48
  "devDependencies": {
41
49
  "@eslint/js": "^10.0.1",
50
+ "@intentius/chant-lexicon-docker": "^0.115.0",
51
+ "@intentius/chant-lexicon-forgejo": "^0.115.0",
52
+ "@intentius/chant-lexicon-github": "^0.115.0",
53
+ "@intentius/chant-lexicon-gitlab": "^0.115.0",
42
54
  "@types/node": "^22.20.5",
43
55
  "@types/pg": "^8.23.1",
56
+ "ajv": "^8.20.0",
44
57
  "eslint": "^10.12.0",
45
58
  "pg": "^8.23.1",
46
59
  "typescript": "^5.9.3",
47
60
  "typescript-eslint": "^8.71.1",
48
61
  "vitest": "^5.0.3"
49
- },
50
- "publishConfig": {
51
- "access": "public"
52
62
  }
53
63
  }
@@ -0,0 +1,269 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://intentius.io/sql-yodeler/schemas/v1/apply.schema.json",
4
+ "title": "yodel apply <env> --json",
5
+ "description": "Version 1. On a project with migrations, the status (status.schema.json) with mode \"versioned\" and what apply did; with --execute (the migrations Op's Apply step), what the step applied; on a project without migrations, the declarative outcome with chant's plan. Within a version, fields are only added; a reader ignores fields it does not know.",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "#/$defs/versioned"
9
+ },
10
+ {
11
+ "$ref": "#/$defs/execute"
12
+ },
13
+ {
14
+ "$ref": "#/$defs/declarative"
15
+ }
16
+ ],
17
+ "$defs": {
18
+ "lock": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": [
22
+ "kind",
23
+ "where"
24
+ ],
25
+ "properties": {
26
+ "kind": {
27
+ "enum": [
28
+ "keeper",
29
+ "local",
30
+ "advisory"
31
+ ]
32
+ },
33
+ "where": {
34
+ "type": "string"
35
+ },
36
+ "notice": {
37
+ "type": "string"
38
+ }
39
+ }
40
+ },
41
+ "versioned": {
42
+ "type": "object",
43
+ "$ref": "status.schema.json#/$defs/report",
44
+ "required": [
45
+ "mode",
46
+ "status"
47
+ ],
48
+ "unevaluatedProperties": false,
49
+ "properties": {
50
+ "mode": {
51
+ "const": "versioned"
52
+ },
53
+ "status": {
54
+ "description": "planned (--plan, something pending), unchanged, refused, denied (a policy rule denies the plan, with no override), gated (waiting at the Op's gate for a person's approval), failed, applied.",
55
+ "enum": [
56
+ "planned",
57
+ "unchanged",
58
+ "refused",
59
+ "denied",
60
+ "gated",
61
+ "failed",
62
+ "applied"
63
+ ]
64
+ },
65
+ "preChecks": {
66
+ "description": "The first pending migration's checks, when one failed before the gate.",
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "required": [
70
+ "migration",
71
+ "checks"
72
+ ],
73
+ "properties": {
74
+ "migration": {
75
+ "type": "string"
76
+ },
77
+ "checks": {
78
+ "type": "array",
79
+ "items": {
80
+ "$ref": "common.schema.json#/$defs/checkOutcome"
81
+ }
82
+ }
83
+ }
84
+ },
85
+ "policy": {
86
+ "description": "denied: each policy rule's outcome.",
87
+ "$ref": "common.schema.json#/$defs/policy"
88
+ },
89
+ "op": {
90
+ "type": "string"
91
+ },
92
+ "gate": {
93
+ "type": "string"
94
+ },
95
+ "approve": {
96
+ "description": "gated: the command a person runs to approve. An agent prints it and never runs it.",
97
+ "type": "string"
98
+ },
99
+ "gatePlanDigest": {
100
+ "type": "string"
101
+ },
102
+ "moved": {
103
+ "description": "gated: the gate's newest approval does not hold, and what moved since it.",
104
+ "type": "object",
105
+ "additionalProperties": false,
106
+ "required": [
107
+ "approved",
108
+ "by",
109
+ "at",
110
+ "confirmed",
111
+ "changes"
112
+ ],
113
+ "properties": {
114
+ "approved": {
115
+ "type": "string"
116
+ },
117
+ "by": {
118
+ "type": "string"
119
+ },
120
+ "at": {
121
+ "type": "string"
122
+ },
123
+ "confirmed": {
124
+ "type": "boolean"
125
+ },
126
+ "changes": {
127
+ "$ref": "plan.schema.json#/$defs/moved"
128
+ },
129
+ "askedAgain": {
130
+ "type": "object",
131
+ "additionalProperties": false,
132
+ "required": [
133
+ "at"
134
+ ],
135
+ "properties": {
136
+ "at": {
137
+ "type": "string"
138
+ },
139
+ "digest": {
140
+ "type": "string"
141
+ }
142
+ }
143
+ }
144
+ }
145
+ },
146
+ "exitCode": {
147
+ "description": "failed: yodel apply's exit code, the Apply step's own when it had one.",
148
+ "type": "integer"
149
+ },
150
+ "chantExitCode": {
151
+ "description": "failed: chant run's exit code.",
152
+ "type": "integer"
153
+ },
154
+ "appliedNow": {
155
+ "description": "applied: the migrations this run applied.",
156
+ "$ref": "common.schema.json#/$defs/stringList"
157
+ }
158
+ }
159
+ },
160
+ "execute": {
161
+ "type": "object",
162
+ "additionalProperties": false,
163
+ "required": [
164
+ "environment",
165
+ "status",
166
+ "planDigest",
167
+ "applied",
168
+ "skipped",
169
+ "lock"
170
+ ],
171
+ "properties": {
172
+ "environment": {
173
+ "type": "string"
174
+ },
175
+ "status": {
176
+ "const": "applied"
177
+ },
178
+ "planDigest": {
179
+ "description": "The digest the gate approved.",
180
+ "type": "string"
181
+ },
182
+ "applied": {
183
+ "$ref": "common.schema.json#/$defs/stringList"
184
+ },
185
+ "skipped": {
186
+ "description": "Statements not sent because an earlier run had already succeeded with them.",
187
+ "type": "array",
188
+ "items": {
189
+ "type": "object",
190
+ "additionalProperties": false,
191
+ "required": [
192
+ "id",
193
+ "statement"
194
+ ],
195
+ "properties": {
196
+ "id": {
197
+ "type": "string"
198
+ },
199
+ "statement": {
200
+ "type": "integer"
201
+ }
202
+ }
203
+ }
204
+ },
205
+ "lock": {
206
+ "$ref": "#/$defs/lock"
207
+ }
208
+ }
209
+ },
210
+ "declarative": {
211
+ "type": "object",
212
+ "additionalProperties": false,
213
+ "required": [
214
+ "environment",
215
+ "dialect",
216
+ "op",
217
+ "status",
218
+ "plan"
219
+ ],
220
+ "properties": {
221
+ "environment": {
222
+ "type": "string"
223
+ },
224
+ "dialect": {
225
+ "$ref": "common.schema.json#/$defs/dialect"
226
+ },
227
+ "server": {
228
+ "$ref": "common.schema.json#/$defs/server"
229
+ },
230
+ "op": {
231
+ "description": "The ApplyOp.",
232
+ "type": "string"
233
+ },
234
+ "status": {
235
+ "enum": [
236
+ "refused",
237
+ "unchanged",
238
+ "gated",
239
+ "failed",
240
+ "incomplete",
241
+ "applied"
242
+ ]
243
+ },
244
+ "gate": {
245
+ "type": "string"
246
+ },
247
+ "approve": {
248
+ "description": "gated: the command a person runs to approve. An agent prints it and never runs it.",
249
+ "type": "string"
250
+ },
251
+ "planDigest": {
252
+ "type": "string"
253
+ },
254
+ "exitCode": {
255
+ "description": "failed: chant run's exit code.",
256
+ "type": "integer"
257
+ },
258
+ "plan": {
259
+ "description": "The plan before the run.",
260
+ "$ref": "plan.schema.json#/$defs/declarative"
261
+ },
262
+ "remaining": {
263
+ "description": "incomplete: the plan after the Op completed.",
264
+ "$ref": "plan.schema.json#/$defs/declarative"
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }