@intentius/chant-lexicon-k3s 0.56.0 → 0.58.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.
@@ -4,7 +4,7 @@
4
4
  "manifest.json": "5208bf3cb7308fcf74bcfae5cd70e1e4c73b0b567e71ac0f593246f1d72eaef2",
5
5
  "meta.json": "5988c37e9e93d52828d34fa043b0804fec7eb833153d387a9711333bcdff4bff",
6
6
  "types/index.d.ts": "98f3f3175d38aa2979c57577512c554eafed49b9125967c8617c137c01358e26",
7
- "skills/chant-k3s.md": "647bd3e1c6f75b1695150b895273edff6e25fe5851ce85dd3a213280fb6a0e75"
7
+ "skills/chant-k3s.md": "5ea0ac56f5584913f7df3bbfa591522a470772854df58a1830ec280d44bbd77c"
8
8
  },
9
- "composite": "c5aa14712fce0c3baf881168a643b0af27bdd787ad431c959e07ada098c73bbd"
9
+ "composite": "820d397809f6e20871fb7b8afc90f3a34a7112e7fcd530d45d01b24e41f31b77"
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAW/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2CpD,CAAC"}
1
+ {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAa/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2CpD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Prior art for these audit rules: the open-source tools whose checks cover the
3
+ * same condition, credited per rule. See packages/core/src/audit/prior-art.ts for
4
+ * the registry, the relation vocabulary, and why this is credit rather than
5
+ * authority. Kept by hand; the prior-art sweep (scripts/prior-art-sweep.ts) reports
6
+ * when a credited tool's index no longer lists a rule cited here.
7
+ */
8
+ import type { Lineage } from "@intentius/chant/audit/catalog";
9
+ export declare const k3sAuditLineage: Record<string, Lineage[]>;
10
+ //# sourceMappingURL=audit-lineage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-lineage.d.ts","sourceRoot":"","sources":["../../src/lint/audit-lineage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAE9D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAIrD,CAAC"}
@@ -11,11 +11,12 @@
11
11
  * as a value — only `tokenFile`, a path — see the token-boundary note on
12
12
  * {@link k3sInstall} in ./k3s.
13
13
  *
14
- * The step builders (k3sInstall, k3sUninstall) live in core, re-exported from
15
- * the temporal Op-authoring barrel like k3dUp/k3dDown. The activities here are
14
+ * The step builders (k3sInstall, k3sUninstall) live in core and reach authors
15
+ * through `@intentius/chant/op` like k3dUp/k3dDown. The activities here are
16
16
  * dependency-light — they shell out to the k3s installer/uninstall scripts and
17
- * only pull in the lexicon's version pin, not its declarable surface — so a
18
- * Temporal worker loads them cheaply.
17
+ * only pull in the lexicon's version pin, not its declarable surface — so
18
+ * `loadActivities` (`packages/core/src/op/activity-registry.ts`), which imports
19
+ * this module at run time, pulls in nothing expensive.
19
20
  */
20
21
  export { k3sInstall, k3sUninstall, k3sInstallCommand, k3sInstallEnv, k3sUninstallCommand, k3sUninstallScript, k3sVersionCommand, parseK3sVersion, } from "./k3s.js";
21
22
  export type { K3sRole, K3sInstallArgs, K3sUninstallArgs, K3sInstallResult } from "./k3s.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC"}
@@ -79,9 +79,9 @@ export declare function k3sUninstallCommand(args: K3sUninstallArgs): string;
79
79
  /**
80
80
  * Run the pinned k3s installer against a reachable host. Idempotent on an
81
81
  * already-installed matching version: if `k3s --version` already reports the
82
- * target version, the install is skipped. Uses longInfra profile 20m
83
- * timeout, heartbeat every 15s (the installer downloads and starts the
84
- * k3s binary).
82
+ * target version, the install is skipped. Uses the longInfra profile: a 20m
83
+ * timeout, wide enough for the installer to download and start the k3s binary,
84
+ * and three attempts backing off from 30s.
85
85
  *
86
86
  * Bounded exactly as `k3dUp`/`k3dDown` were (chant#1410, epic #1598): this
87
87
  * drives the case where the host is reachable from where the Op runs. It
@@ -1 +1 @@
1
- {"version":3,"file":"k3s.d.ts","sourceRoot":"","sources":["../../../src/op/activities/k3s.ts"],"names":[],"mappings":"AAOA,8EAA8E;AAC9E,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,wGAAwG;IACxG,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI1E;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9F"}
1
+ {"version":3,"file":"k3s.d.ts","sourceRoot":"","sources":["../../../src/op/activities/k3s.ts"],"names":[],"mappings":"AAMA,8EAA8E;AAC9E,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,wGAAwG;IACxG,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI1E;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9F"}
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Typed step-builder wrappers for this lexicon's activities (chant #1288
3
3
  * Stage 2). See `lexicons/k8s/src/op/builders.ts`'s module doc for why these
4
- * live beside their `*Args` interfaces rather than in core or the temporal
5
- * barrel. `opts`'s type in each wrapper below IS the activity's own `*Args`
6
- * interface (via `Omit`/`WithStepRefs`) never restated. `core`'s own
4
+ * live beside their `*Args` interfaces rather than in core: core cannot
5
+ * import a lexicon's types, so a wrapper whose `opts` IS the activity's own
6
+ * `*Args` interface can only sit in the lexicon that declares that
7
+ * interface. `opts`'s type in each wrapper below IS the activity's own
8
+ * `*Args` interface (via `Omit`/`WithStepRefs`) — never restated. `core`'s own
7
9
  * `k3sInstall`/`k3sUninstall` are unchanged and produce byte-identical
8
10
  * `ActivityStep` output; these are purely additive.
9
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElF,kFAAkF;AAClF,KAAK,QAAQ,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,OAAO,EACb,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,KAC1D,iBAGF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,OAAO,EACb,OAAO,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,KAC7D,iBAGF,CAAC"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElF,kFAAkF;AAClF,KAAK,QAAQ,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,OAAO,EACb,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,KAC1D,iBAGF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,OAAO,EACb,OAAO,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,KAC7D,iBAGF,CAAC"}
@@ -78,7 +78,8 @@ host the Op runs on or can reach directly — the same boundary `k3dUp`/
78
78
  Requires `"k3s"` in the project's `chant.config.ts` `lexicons`.
79
79
 
80
80
  ```typescript
81
- import { Op, phase, k3sInstall, k3sUninstall } from "@intentius/chant-lexicon-temporal";
81
+ import { Op, phase } from "@intentius/chant/op";
82
+ import { k3sInstall, k3sUninstall } from "@intentius/chant-lexicon-k3s";
82
83
 
83
84
  export default Op({
84
85
  name: "k3s-controlplane",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-k3s",
3
- "version": "0.56.0",
3
+ "version": "0.58.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/",
@@ -50,7 +50,7 @@
50
50
  "access": "public"
51
51
  },
52
52
  "peerDependencies": {
53
- "@intentius/chant": "^0.56.0",
53
+ "@intentius/chant": "^0.58.0",
54
54
  "typescript": "^5.9.3"
55
55
  },
56
56
  "description": "k3s lexicon for chant — the k3s distro's host configuration as declarable data",
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  // Typed Op step-builder wrappers (chant #1288 Stage 2) — k3sInstall/
2
2
  // k3sUninstall with authoring-time types derived from this lexicon's own
3
3
  // *Args interfaces (see ./op/builders.ts's module doc). Opt-in:
4
- // `@intentius/chant-lexicon-temporal`'s same-named exports are core's
5
- // original untyped builders, unchanged.
4
+ // `@intentius/chant/op`'s same-named exports are core's original untyped
5
+ // builders, unchanged.
6
6
  export { k3sInstall, k3sUninstall } from "./op/builders";
7
7
 
8
8
  // Plugin
@@ -9,6 +9,8 @@
9
9
  * role — so every entry is constructed directly with `yamlBased: false`.
10
10
  */
11
11
  import type { RuleMeta } from "@intentius/chant/audit/catalog";
12
+ import { k3sAuditLineage } from "./audit-lineage";
13
+ import { applyLineage } from "@intentius/chant/audit/catalog";
12
14
 
13
15
  function entityRule(
14
16
  id: string,
@@ -63,3 +65,6 @@ export const k3sAuditCatalog: Record<string, RuleMeta> = {
63
65
  "Remove the component's config key, or drop it from `disable`.",
64
66
  ),
65
67
  };
68
+
69
+ // Prior art credits live beside the rules in ./audit-lineage.ts (see core audit/prior-art.ts).
70
+ applyLineage(k3sAuditCatalog, k3sAuditLineage);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Prior art for these audit rules: the open-source tools whose checks cover the
3
+ * same condition, credited per rule. See packages/core/src/audit/prior-art.ts for
4
+ * the registry, the relation vocabulary, and why this is credit rather than
5
+ * authority. Kept by hand; the prior-art sweep (scripts/prior-art-sweep.ts) reports
6
+ * when a credited tool's index no longer lists a rule cited here.
7
+ */
8
+ import type { Lineage } from "@intentius/chant/audit/catalog";
9
+
10
+ export const k3sAuditLineage: Record<string, Lineage[]> = {
11
+ K3S104: [
12
+ { tool: "kube-bench", rule: "k3s-cis-1.8 1.1.13", url: "https://raw.githubusercontent.com/aquasecurity/kube-bench/main/cfg/k3s-cis-1.8/master.yaml", relation: "overlaps" },
13
+ ],
14
+ };
@@ -11,11 +11,12 @@
11
11
  * as a value — only `tokenFile`, a path — see the token-boundary note on
12
12
  * {@link k3sInstall} in ./k3s.
13
13
  *
14
- * The step builders (k3sInstall, k3sUninstall) live in core, re-exported from
15
- * the temporal Op-authoring barrel like k3dUp/k3dDown. The activities here are
14
+ * The step builders (k3sInstall, k3sUninstall) live in core and reach authors
15
+ * through `@intentius/chant/op` like k3dUp/k3dDown. The activities here are
16
16
  * dependency-light — they shell out to the k3s installer/uninstall scripts and
17
- * only pull in the lexicon's version pin, not its declarable surface — so a
18
- * Temporal worker loads them cheaply.
17
+ * only pull in the lexicon's version pin, not its declarable surface — so
18
+ * `loadActivities` (`packages/core/src/op/activity-registry.ts`), which imports
19
+ * this module at run time, pulls in nothing expensive.
19
20
  */
20
21
  export {
21
22
  k3sInstall,
@@ -18,7 +18,11 @@ const execCalls: Array<{ cmd: string; opts: unknown }> = [];
18
18
  let versionReply: { stdout: string; stderr: string } | Error = new Error("k3s: command not found");
19
19
  let uninstallReply: { stdout: string; stderr: string } = { stdout: "", stderr: "" };
20
20
 
21
- vi.mock("node:child_process", () => {
21
+ // Partial, via `importOriginal`: `@intentius/chant/op` reaches the base
22
+ // activities now (chant #2114), and modules on that path promisify
23
+ // `execFile` at load. A wholesale replacement of node:child_process would
24
+ // make them fail to import rather than fail an assertion.
25
+ vi.mock("node:child_process", async (importOriginal) => {
22
26
  const custom = Symbol.for("nodejs.util.promisify.custom");
23
27
  const exec = ((_cmd: string, _opts: unknown, cb?: (...a: unknown[]) => void) => {
24
28
  cb?.(new Error("unmocked exec path"));
@@ -32,7 +36,7 @@ vi.mock("node:child_process", () => {
32
36
  if (cmd.startsWith("test -x")) return uninstallReply;
33
37
  return { stdout: "", stderr: "" };
34
38
  };
35
- return { exec };
39
+ return { ...(await importOriginal<typeof import("node:child_process")>()), exec };
36
40
  });
37
41
 
38
42
  describe("k3sInstallCommand (#1601)", () => {
@@ -1,6 +1,5 @@
1
1
  import { exec } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
- import { safeHeartbeat } from "@intentius/chant/op";
4
3
  import { K3S_VERSION } from "../../spec/fetch";
5
4
 
6
5
  const execAsync = promisify(exec);
@@ -111,9 +110,9 @@ export function k3sUninstallCommand(args: K3sUninstallArgs): string {
111
110
  /**
112
111
  * Run the pinned k3s installer against a reachable host. Idempotent on an
113
112
  * already-installed matching version: if `k3s --version` already reports the
114
- * target version, the install is skipped. Uses longInfra profile 20m
115
- * timeout, heartbeat every 15s (the installer downloads and starts the
116
- * k3s binary).
113
+ * target version, the install is skipped. Uses the longInfra profile: a 20m
114
+ * timeout, wide enough for the installer to download and start the k3s binary,
115
+ * and three attempts backing off from 30s.
117
116
  *
118
117
  * Bounded exactly as `k3dUp`/`k3dDown` were (chant#1410, epic #1598): this
119
118
  * drives the case where the host is reachable from where the Op runs. It
@@ -139,20 +138,12 @@ export async function k3sInstall(
139
138
  // `k3s --version` errors when k3s is absent — fall through to install.
140
139
  }
141
140
 
142
- const heartbeatInterval = setInterval(() => {
143
- safeHeartbeat({ step: "k3s install", role: args.role, version: target });
144
- }, 15_000);
145
-
146
- try {
147
- const { stdout, stderr } = await execAsync(k3sInstallCommand(args), {
148
- signal,
149
- env: { ...process.env, ...k3sInstallEnv(args) },
150
- });
151
- if (stdout) console.log(stdout);
152
- if (stderr) console.error(stderr);
153
- } finally {
154
- clearInterval(heartbeatInterval);
155
- }
141
+ const { stdout, stderr } = await execAsync(k3sInstallCommand(args), {
142
+ signal,
143
+ env: { ...process.env, ...k3sInstallEnv(args) },
144
+ });
145
+ if (stdout) console.log(stdout);
146
+ if (stderr) console.error(stderr);
156
147
 
157
148
  return { version: target, installed: true };
158
149
  }
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Typed step-builder wrappers for this lexicon's activities (chant #1288
3
3
  * Stage 2). See `lexicons/k8s/src/op/builders.ts`'s module doc for why these
4
- * live beside their `*Args` interfaces rather than in core or the temporal
5
- * barrel. `opts`'s type in each wrapper below IS the activity's own `*Args`
6
- * interface (via `Omit`/`WithStepRefs`) never restated. `core`'s own
4
+ * live beside their `*Args` interfaces rather than in core: core cannot
5
+ * import a lexicon's types, so a wrapper whose `opts` IS the activity's own
6
+ * `*Args` interface can only sit in the lexicon that declares that
7
+ * interface. `opts`'s type in each wrapper below IS the activity's own
8
+ * `*Args` interface (via `Omit`/`WithStepRefs`) — never restated. `core`'s own
7
9
  * `k3sInstall`/`k3sUninstall` are unchanged and produce byte-identical
8
10
  * `ActivityStep` output; these are purely additive.
9
11
  */
@@ -78,7 +78,8 @@ host the Op runs on or can reach directly — the same boundary `k3dUp`/
78
78
  Requires `"k3s"` in the project's `chant.config.ts` `lexicons`.
79
79
 
80
80
  ```typescript
81
- import { Op, phase, k3sInstall, k3sUninstall } from "@intentius/chant-lexicon-temporal";
81
+ import { Op, phase } from "@intentius/chant/op";
82
+ import { k3sInstall, k3sUninstall } from "@intentius/chant-lexicon-k3s";
82
83
 
83
84
  export default Op({
84
85
  name: "k3s-controlplane",