@homeflare/alchemy 0.37.6 → 0.37.8

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 (112) hide show
  1. package/dist/linux/container-form.d.ts +1 -1
  2. package/dist/linux/container-generator.d.ts +28 -0
  3. package/dist/linux/container-generator.d.ts.map +1 -1
  4. package/dist/linux/container-lifecycle.d.ts +18 -1
  5. package/dist/linux/container-lifecycle.d.ts.map +1 -1
  6. package/dist/linux/container-preflight.d.ts +34 -0
  7. package/dist/linux/container-preflight.d.ts.map +1 -1
  8. package/dist/linux/container-settle.d.ts.map +1 -1
  9. package/dist/linux/fake-sudo.d.ts +14 -2
  10. package/dist/linux/fake-sudo.d.ts.map +1 -1
  11. package/dist/linux/index.js +76 -29
  12. package/dist/linux/index.js.map +11 -10
  13. package/dist/linux/sudo-exec.d.ts +16 -0
  14. package/dist/linux/sudo-exec.d.ts.map +1 -1
  15. package/dist/linux/unit-form.d.ts.map +1 -1
  16. package/dist/linux/unit-text.d.ts +35 -0
  17. package/dist/linux/unit-text.d.ts.map +1 -0
  18. package/dist/proxmox/firewall-alias-config.d.ts +36 -0
  19. package/dist/proxmox/firewall-alias-config.d.ts.map +1 -0
  20. package/dist/proxmox/firewall-alias-form.d.ts +3 -1
  21. package/dist/proxmox/firewall-alias-form.d.ts.map +1 -1
  22. package/dist/proxmox/firewall-alias-lifecycle.d.ts +43 -0
  23. package/dist/proxmox/firewall-alias-lifecycle.d.ts.map +1 -0
  24. package/dist/proxmox/firewall-alias.d.ts +2 -8
  25. package/dist/proxmox/firewall-alias.d.ts.map +1 -1
  26. package/dist/proxmox/index.js +795 -526
  27. package/dist/proxmox/index.js.map +23 -10
  28. package/dist/proxmox/lxc-errors.d.ts +12 -0
  29. package/dist/proxmox/lxc-errors.d.ts.map +1 -0
  30. package/dist/proxmox/lxc-lifecycle.d.ts +9 -31
  31. package/dist/proxmox/lxc-lifecycle.d.ts.map +1 -1
  32. package/dist/proxmox/lxc-read.d.ts +4 -0
  33. package/dist/proxmox/lxc-read.d.ts.map +1 -0
  34. package/dist/proxmox/lxc-task.d.ts +15 -0
  35. package/dist/proxmox/lxc-task.d.ts.map +1 -0
  36. package/dist/proxmox/network-apply-read.d.ts +7 -14
  37. package/dist/proxmox/network-apply-read.d.ts.map +1 -1
  38. package/dist/proxmox/network-apply-run.d.ts +7 -0
  39. package/dist/proxmox/network-apply-run.d.ts.map +1 -0
  40. package/dist/proxmox/network-apply.d.ts +2 -3
  41. package/dist/proxmox/network-apply.d.ts.map +1 -1
  42. package/dist/proxmox/qemu-errors.d.ts +5 -0
  43. package/dist/proxmox/qemu-errors.d.ts.map +1 -0
  44. package/dist/proxmox/qemu-form.d.ts +22 -0
  45. package/dist/proxmox/qemu-form.d.ts.map +1 -0
  46. package/dist/proxmox/qemu-lifecycle.d.ts +26 -0
  47. package/dist/proxmox/qemu-lifecycle.d.ts.map +1 -0
  48. package/dist/proxmox/qemu-read.d.ts +5 -0
  49. package/dist/proxmox/qemu-read.d.ts.map +1 -0
  50. package/dist/proxmox/qemu-task.d.ts +9 -0
  51. package/dist/proxmox/qemu-task.d.ts.map +1 -0
  52. package/dist/proxmox/qemu.d.ts +9 -14
  53. package/dist/proxmox/qemu.d.ts.map +1 -1
  54. package/dist/proxmox/replication-firewall-fixtures.d.ts +30 -0
  55. package/dist/proxmox/replication-firewall-fixtures.d.ts.map +1 -0
  56. package/dist/proxmox/replication-job-config.d.ts +56 -0
  57. package/dist/proxmox/replication-job-config.d.ts.map +1 -0
  58. package/dist/proxmox/replication-job-lifecycle.d.ts +62 -0
  59. package/dist/proxmox/replication-job-lifecycle.d.ts.map +1 -0
  60. package/dist/proxmox/replication-job.d.ts +5 -6
  61. package/dist/proxmox/replication-job.d.ts.map +1 -1
  62. package/dist/release/archive.d.ts.map +1 -1
  63. package/dist/release/index.js +3 -2
  64. package/dist/release/index.js.map +3 -3
  65. package/docs/linux-sudo.md +18 -7
  66. package/docs/proxmox-lxc-distilled.md +56 -0
  67. package/docs/proxmox-replication-firewall-distilled.md +53 -0
  68. package/docs/proxmox-sdk-migration.md +23 -18
  69. package/package.json +2 -2
  70. package/src/linux/container-form.ts +1 -1
  71. package/src/linux/container-generator.test.ts +33 -0
  72. package/src/linux/container-generator.ts +72 -0
  73. package/src/linux/container-lifecycle.test.ts +6 -3
  74. package/src/linux/container-lifecycle.ts +23 -2
  75. package/src/linux/container-preflight.ts +47 -0
  76. package/src/linux/container-settle.ts +12 -1
  77. package/src/linux/container-shadow.test.ts +131 -0
  78. package/src/linux/fake-sudo.ts +21 -5
  79. package/src/linux/sudo-exec.ts +60 -10
  80. package/src/linux/sudo-lifecycle.test.ts +64 -3
  81. package/src/linux/unit-form.ts +4 -18
  82. package/src/linux/unit-text.test.ts +67 -0
  83. package/src/linux/unit-text.ts +58 -0
  84. package/src/proxmox/firewall-alias-config.ts +39 -0
  85. package/src/proxmox/firewall-alias-form.ts +1 -1
  86. package/src/proxmox/firewall-alias-lifecycle.ts +100 -0
  87. package/src/proxmox/firewall-alias.ts +4 -67
  88. package/src/proxmox/lxc-create.test.ts +4 -1
  89. package/src/proxmox/lxc-distilled.test.ts +239 -0
  90. package/src/proxmox/lxc-errors.ts +9 -0
  91. package/src/proxmox/lxc-lifecycle.ts +31 -113
  92. package/src/proxmox/lxc-read.test.ts +29 -6
  93. package/src/proxmox/lxc-read.ts +88 -0
  94. package/src/proxmox/lxc-task.ts +71 -0
  95. package/src/proxmox/network-apply-distilled.test.ts +76 -0
  96. package/src/proxmox/network-apply-read.ts +18 -39
  97. package/src/proxmox/network-apply-run.ts +97 -0
  98. package/src/proxmox/network-apply.ts +5 -94
  99. package/src/proxmox/qemu-errors.ts +7 -0
  100. package/src/proxmox/qemu-form.ts +15 -0
  101. package/src/proxmox/qemu-lifecycle.test.ts +171 -0
  102. package/src/proxmox/qemu-lifecycle.ts +134 -0
  103. package/src/proxmox/qemu-read.ts +73 -0
  104. package/src/proxmox/qemu-task.ts +64 -0
  105. package/src/proxmox/qemu.ts +11 -44
  106. package/src/proxmox/replication-firewall-fixtures.ts +71 -0
  107. package/src/proxmox/replication-firewall-lifecycle.test.ts +109 -0
  108. package/src/proxmox/replication-firewall-wire.test.ts +173 -0
  109. package/src/proxmox/replication-job-config.ts +79 -0
  110. package/src/proxmox/replication-job-lifecycle.ts +113 -0
  111. package/src/proxmox/replication-job.ts +7 -84
  112. package/src/release/archive.ts +4 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/linux/directory.ts", "../src/launchd/host-effect.ts", "../src/launchd/runner.ts", "../src/ownership/adopt.ts", "../src/ownership/resume.ts", "../src/ownership/rows.ts", "../src/ownership/whole.ts", "../src/launchd/secret-tripwire.ts", "../src/launchd/host-file-form.ts", "../src/linux/directory-lifecycle.ts", "../src/linux/directory-read.ts", "../src/linux/providers.ts", "../src/linux/container.ts", "../src/linux/container-handlers.ts", "../src/launchd/job-form.ts", "../src/launchd/plist.ts", "../src/linux/unit-form.ts", "../src/linux/systemctl.ts", "../src/linux/container-generator.ts", "../src/linux/container-secrets.ts", "../src/linux/container-form.ts", "../src/linux/container-preflight.ts", "../src/linux/container-settle.ts", "../src/linux/container-lifecycle.ts", "../src/linux/remote-file.ts", "../src/linux/region.ts", "../src/linux/remote-file-form.ts", "../src/linux/remote-file-plan.ts", "../src/linux/remote-file-lifecycle.ts", "../src/linux/unit.ts", "../src/linux/unit-handlers.ts", "../src/linux/unit-settle.ts", "../src/linux/unit-preflight.ts", "../src/linux/unit-lifecycle.ts", "../src/linux/ssh-runner.ts", "../src/launchd/host-lookup.ts", "../src/linux/ssh-command.ts", "../src/linux/ssh-scripts.ts", "../src/launchd/local-runner.ts", "../src/launchd/job-validate.ts", "../src/launchd/launchctl.ts", "../src/launchd/sudo-allowlist.ts", "../src/launchd/sudo-said.ts", "../src/linux/sudo-allowlist-dir.ts", "../src/linux/sudo-allowlist-chown.ts", "../src/linux/sudo-allowlist.ts", "../src/launchd/sudo-acl.ts", "../src/launchd/sudo-guard-mode.ts", "../src/launchd/sudo-guard.ts", "../src/linux/sudo-listing.ts", "../src/linux/sudo-guard.ts", "../src/linux/sudo-exec.ts", "../src/linux/sudo-stage.ts", "../src/linux/sudo-write.ts", "../src/linux/sudo-runner.ts"],
3
+ "sources": ["../src/linux/directory.ts", "../src/launchd/host-effect.ts", "../src/launchd/runner.ts", "../src/ownership/adopt.ts", "../src/ownership/resume.ts", "../src/ownership/rows.ts", "../src/ownership/whole.ts", "../src/launchd/secret-tripwire.ts", "../src/launchd/host-file-form.ts", "../src/linux/directory-lifecycle.ts", "../src/linux/directory-read.ts", "../src/linux/providers.ts", "../src/linux/container.ts", "../src/linux/container-handlers.ts", "../src/launchd/job-form.ts", "../src/launchd/plist.ts", "../src/linux/unit-text.ts", "../src/linux/unit-form.ts", "../src/linux/systemctl.ts", "../src/linux/container-generator.ts", "../src/linux/container-secrets.ts", "../src/linux/container-form.ts", "../src/linux/container-preflight.ts", "../src/linux/container-settle.ts", "../src/linux/container-lifecycle.ts", "../src/linux/remote-file.ts", "../src/linux/region.ts", "../src/linux/remote-file-form.ts", "../src/linux/remote-file-plan.ts", "../src/linux/remote-file-lifecycle.ts", "../src/linux/unit.ts", "../src/linux/unit-handlers.ts", "../src/linux/unit-settle.ts", "../src/linux/unit-preflight.ts", "../src/linux/unit-lifecycle.ts", "../src/linux/ssh-runner.ts", "../src/launchd/host-lookup.ts", "../src/linux/ssh-command.ts", "../src/linux/ssh-scripts.ts", "../src/launchd/local-runner.ts", "../src/launchd/job-validate.ts", "../src/launchd/launchctl.ts", "../src/launchd/sudo-allowlist.ts", "../src/launchd/sudo-said.ts", "../src/linux/sudo-allowlist-dir.ts", "../src/linux/sudo-allowlist-chown.ts", "../src/linux/sudo-allowlist.ts", "../src/launchd/sudo-acl.ts", "../src/launchd/sudo-guard-mode.ts", "../src/launchd/sudo-guard.ts", "../src/linux/sudo-listing.ts", "../src/linux/sudo-guard.ts", "../src/linux/sudo-exec.ts", "../src/linux/sudo-stage.ts", "../src/linux/sudo-write.ts", "../src/linux/sudo-runner.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * `Host.Directory` — one directory on the host, declared: path, mode, owner, group.\n *\n * ⚠️ NOTHING IS ADOPTED WITHOUT `--adopt`: a directory already at the path reads as `Unowned`, and\n * where the plan never asked, reconcile honours the same flag (docs/ownership.md).\n * ★ IT IS NOT LINUX-ONLY. It lives in the linux subpath because the gap it closes was found\n * there (a first deploy into a new tree, which every file resource refuses to create).\n * ⚠️ mkdir AND rmdir TAKE `--` ON macOS. chmod AND chown DO NOT: measured 2026-09-24,\n * `/bin/chmod` and `/usr/sbin/chown` treat `--` as a filename and exit 1. The lifecycle\n * omits that token for those two on Darwin.\n */\nimport { Resource } from 'alchemy';\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport { lift, resolvedString } from '../launchd/host-effect.ts';\nimport { HostRunnerService } from '../launchd/runner.ts';\nimport { adoptsAtApply } from '../ownership/adopt.ts';\nimport { noteUnfinished } from '../ownership/resume.ts';\nimport { recordedGeneration } from '../ownership/rows.ts';\nimport type { HostDirectoryAttributes, HostDirectoryProps } from './directory-lifecycle.ts';\nimport { deleteDirectory, diffDirectory, reconcileDirectory } from './directory-lifecycle.ts';\nimport { readInterruptedDirectory } from './directory-read.ts';\n\nexport type { HostDirectoryAttributes, HostDirectoryProps } from './directory-lifecycle.ts';\n\nexport interface HostDirectory extends Resource<\n 'Host.Directory',\n HostDirectoryProps,\n HostDirectoryAttributes\n> {}\n\nexport const HostDirectory = Resource<HostDirectory>('Host.Directory');\n\nexport const HostDirectoryProvider = () =>\n Provider.effect(\n HostDirectory,\n Effect.gen(function* () {\n const runner = yield* HostRunnerService;\n return HostDirectory.Provider.of({\n list: () => Effect.succeed([]),\n\n // ⛔ Recovery of a `creating` row whose path was still an Output never stats (directory-read.ts).\n read: ({ fqn, instanceId, olds, output }) =>\n Effect.gen(function* () {\n const recovering =\n typeof olds.path === 'string'\n ? false\n : (yield* recordedGeneration(fqn, instanceId)) !== undefined;\n if (recovering) {\n yield* Effect.logWarning(\n `${fqn}: the interrupted create's row has no directory path; nothing is recovered, ` +\n 'and the create is re-driven with the declaration as it is now',\n );\n }\n return yield* lift(async () => {\n const found = await readInterruptedDirectory(runner, olds.path, recovering);\n if (found === undefined) return undefined;\n return output === undefined ? Unowned(found) : found;\n });\n }),\n\n diff: ({ instanceId, news, output }) => {\n if (output === undefined) return noteUnfinished(instanceId);\n if (isResolved(news)) return lift(() => diffDirectory(runner, news, output));\n // ⛔ A new path is a replace even while the rest is unresolved: the engine's default\n // update would create the new directory and leave the old one behind forever.\n const path = resolvedString(news, 'path');\n return Effect.succeed(\n path !== undefined && path !== output.path ? { action: 'replace' as const } : undefined,\n );\n },\n\n reconcile: ({ fqn, instanceId, news, output }) =>\n Effect.flatMap(adoptsAtApply({ fqn, instanceId, output }), (adopt) =>\n lift(() => reconcileDirectory(runner, news, output, adopt)),\n ),\n\n delete: ({ output }) => lift(() => deleteDirectory(runner, output)),\n });\n }),\n );\n",
6
6
  "/**\n * The one place a HostRunner's promises become Effects — plus the one probe of an unresolved\n * `news` both providers' diffs share. (The engine's adopt setting lives in ownership/adopt.ts.)\n *\n * ★ The lifecycle files are plain async functions over a HostRunner (see runner.ts for why the\n * runner is promise-based), so each provider handler is a single `lift(() => step(runner, …))`.\n * ⚠️ A thrown Error stays that Error — its message is the refusal a deploy prints. Anything else\n * thrown is wrapped, so the failure channel is always an Error with a readable message.\n */\nimport * as Effect from 'effect/Effect';\n\nexport const lift = <A>(step: () => Promise<A>): Effect.Effect<A, Error> =>\n Effect.tryPromise({\n catch: (cause) => (cause instanceof Error ? cause : new Error(String(cause))),\n try: step,\n });\n\n/**\n * A string prop of a diff's `news`, when that one prop is already resolved; `undefined` while it\n * is still an Output (a function-typed proxy), an Effect or a Config.\n * ★ For the identity props a diff must see even when the rest of `news` is unresolved — a plain\n * string is resolved by definition, so `typeof` is the whole test.\n */\nexport const resolvedString = (news: unknown, key: string): string | undefined => {\n if (typeof news !== 'object' || news === null) return undefined;\n const value = (news as Record<string, unknown>)[key];\n return typeof value === 'string' ? value : undefined;\n};\n",
@@ -18,14 +18,15 @@
18
18
  "/**\n * `Podman.Container`'s four provider handlers, as plain functions over a HostRunner — the same\n * split as `unit-handlers.ts`, so `container.ts`'s `Provider.of` stays a thin wire-up.\n */\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport type { Diff } from 'alchemy/Diff';\nimport { isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport * as Effect from 'effect/Effect';\nimport { lift, resolvedString } from '../launchd/host-effect.ts';\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { adoptsAtApply } from '../ownership/adopt.ts';\nimport { noteUnfinished } from '../ownership/resume.ts';\nimport type { ContainerAttributes, ContainerProps } from './container-form.ts';\nimport {\n deleteContainer,\n diffContainer,\n readContainer,\n reconcileContainer,\n} from './container-lifecycle.ts';\nimport { assertRenameTarget } from './container-preflight.ts';\n\nexport const readHandler = (\n runner: HostRunner,\n olds: ContainerProps,\n output: ContainerAttributes | undefined,\n): Effect.Effect<ContainerAttributes | undefined, Error> =>\n lift(async () => {\n const found = await readContainer(runner, olds);\n if (found === undefined) return undefined;\n return output === undefined ? Unowned(found) : found;\n });\n\nexport const diffHandler = (\n runner: HostRunner,\n instanceId: string,\n news: Input<ContainerProps>,\n output: ContainerAttributes | undefined,\n): Effect.Effect<Diff | undefined, Error> => {\n // ★ An unfinished generation of our own: `--adopt` may resume it (ownership/resume.ts).\n if (output === undefined) return noteUnfinished(instanceId);\n if (isResolved(news)) return lift(() => diffContainer(runner, news, output));\n /**\n * ⛔ A RENAME MUST BE SEEN EVEN WHILE OTHER PROPS ARE UNRESOLVED — same reason as\n * `unit-handlers.ts`'s `diffHandler`: the engine's default for a prop change is `update`, and\n * an update under a new name writes the new `.container` file and leaves the old generated\n * unit running with nothing in state to ever remove it.\n */\n const name = resolvedString(news, 'name');\n if (name === undefined || name === output.name) return Effect.succeed(undefined);\n return lift(async () => {\n await assertRenameTarget(runner, output, name);\n return { action: 'replace' as const, deleteFirst: true };\n });\n};\n\nexport const reconcileHandler = (\n runner: HostRunner,\n args: {\n fqn: string;\n instanceId: string;\n news: ContainerProps;\n output: ContainerAttributes | undefined;\n },\n): Effect.Effect<ContainerAttributes, Error> =>\n Effect.flatMap(adoptsAtApply(args), (adopt) =>\n lift(() => reconcileContainer(runner, args.news, args.output, adopt)),\n );\n\nexport const deleteHandler = (\n runner: HostRunner,\n output: ContainerAttributes,\n): Effect.Effect<void, Error> => lift(() => deleteContainer(runner, output));\n",
19
19
  "/**\n * LaunchdJob's props, attributes and the pure half of the provider: domain parsing, the plist path,\n * and the props → plist mapping whose SHA-256 is the whole diff.\n *\n * ★ KEY NAMES AND MEANINGS FROM launchd.plist(5), checked against the 148 nix-darwin daemons on a\n * macOS 27.2 host on 2026-09-21 (read-only, from /nix/store): Label, ProgramArguments, RunAtLoad,\n * KeepAlive (boolean or {SuccessfulExit}), ThrottleInterval, StandardOutPath/StandardErrorPath,\n * EnvironmentVariables, UserName, StartInterval and StartCalendarInterval are the keys in real\n * use. Everything rarer goes through `extraKeys`.\n */\nimport { createHash } from 'node:crypto';\nimport { type PlistDict, type PlistValue, renderPlist } from './plist.ts';\n\n/** `system` (LaunchDaemons, root) or one user's login session, `gui/<uid>` (LaunchAgents). */\nexport type LaunchdDomain = 'system' | `gui/${number}`;\n\n/** One StartCalendarInterval entry. An omitted field is a wildcard, as in cron. */\nexport type CalendarInterval = {\n readonly minute?: number;\n readonly hour?: number;\n readonly day?: number;\n /** 0 and 7 are both Sunday. */\n readonly weekday?: number;\n readonly month?: number;\n};\n\n/** `true` = always restart; the object form restarts only on the named conditions. */\nexport type KeepAlive = boolean | { readonly successfulExit?: boolean; readonly crashed?: boolean };\n\nexport interface LaunchdJobProps {\n /** Reverse-DNS label. Unique per domain; also the plist's file name. */\n label: string;\n domain: LaunchdDomain;\n /** argv; the first element must be an absolute path. */\n programArguments: readonly string[];\n /**\n * ⛔ NON-SECRET VALUES ONLY. Props are stored unencrypted in Alchemy state, and these also land in\n * the plist on disk and in `launchctl print`. Pass a secret as a FILE PATH that a secret renderer\n * (openbao-agent) maintains — secret-tripwire.ts refuses the obvious mistakes.\n */\n environment?: Readonly<Record<string, string>>;\n runAtLoad?: boolean;\n keepAlive?: KeepAlive;\n /** Seconds between starts. */\n startInterval?: number;\n startCalendarInterval?: CalendarInterval | readonly CalendarInterval[];\n /** Minimum seconds between (re)starts; launchd's default is 10. */\n throttleInterval?: number;\n standardOutPath?: string;\n standardErrorPath?: string;\n workingDirectory?: string;\n /** Run as this user. ⚠️ System domain only — launchd ignores it for agents, so it is refused. */\n userName?: string;\n /** Run as this group. ⚠️ System domain only, like `userName`. */\n groupName?: string;\n /**\n * Any other launchd.plist(5) key, verbatim (`ProcessType`, `SoftResourceLimits`, …).\n * ⛔ A key the typed props own is refused, so one job can never say two things.\n */\n extraKeys?: PlistDict;\n}\n\nexport interface LaunchdJobAttributes {\n label: string;\n domain: LaunchdDomain;\n /** `<domain>/<label>` — what `launchctl print` / `bootout` take. */\n serviceTarget: string;\n plistPath: string;\n /** SHA-256 of the plist bytes last bootstrapped (reconcile) or found on disk (read). */\n plistSha256: string;\n /** Bootstrapped into the domain — not necessarily running. */\n loaded: boolean;\n /** launchd's own word: `running`, `not running`, … */\n state?: string;\n pid?: number;\n lastExitCode?: number;\n}\n\nexport type ParsedDomain =\n | { readonly kind: 'system' }\n | { readonly kind: 'gui'; readonly uid: number };\n\nexport const parseDomain = (domain: string): ParsedDomain | undefined => {\n if (domain === 'system') return { kind: 'system' };\n const match = /^gui\\/(\\d+)$/.exec(domain);\n return match?.[1] === undefined ? undefined : { kind: 'gui', uid: Number(match[1]) };\n};\n\nexport const serviceTarget = (label: string, domain: LaunchdDomain): string => `${domain}/${label}`;\n\n/**\n * Where launchd expects the job's plist. ★ Derived, never declared: a daemon's plist outside\n * /Library/LaunchDaemons is not bootstrapped at boot, so a free-form path would be a job that\n * silently stops existing after the next restart.\n */\nexport const plistPathFor = (\n label: string,\n domain: ParsedDomain,\n home: string | undefined,\n): string => {\n if (domain.kind === 'system') return `/Library/LaunchDaemons/${label}.plist`;\n // ⛔ No `~` fallback: the provider may run as root, whose `~` is not the agent owner's home.\n if (home === undefined || !home.startsWith('/')) {\n throw new Error(`gui/${String(domain.uid)}: no home directory for that uid on this host`);\n }\n return `${home}/Library/LaunchAgents/${label}.plist`;\n};\n\n/** Plist keys the typed props own — `extraKeys` may not name them. `Program` is refused too. */\nexport const OWNED_KEYS: readonly string[] = [\n 'EnvironmentVariables',\n 'GroupName',\n 'KeepAlive',\n 'Label',\n 'Program',\n 'ProgramArguments',\n 'RunAtLoad',\n 'StandardErrorPath',\n 'StandardOutPath',\n 'StartCalendarInterval',\n 'StartInterval',\n 'ThrottleInterval',\n 'UserName',\n 'WorkingDirectory',\n];\n\nconst calendarDict = (entry: CalendarInterval): PlistDict => {\n const dict: Record<string, PlistValue> = {};\n if (entry.minute !== undefined) dict['Minute'] = entry.minute;\n if (entry.hour !== undefined) dict['Hour'] = entry.hour;\n if (entry.day !== undefined) dict['Day'] = entry.day;\n if (entry.weekday !== undefined) dict['Weekday'] = entry.weekday;\n if (entry.month !== undefined) dict['Month'] = entry.month;\n return dict;\n};\n\nconst keepAliveValue = (keepAlive: KeepAlive): PlistValue => {\n if (typeof keepAlive === 'boolean') return keepAlive;\n const dict: Record<string, PlistValue> = {};\n if (keepAlive.successfulExit !== undefined) dict['SuccessfulExit'] = keepAlive.successfulExit;\n if (keepAlive.crashed !== undefined) dict['Crashed'] = keepAlive.crashed;\n return dict;\n};\n\n/** The plist dict for a job. ⚠️ Assumes jobProblems() came back empty. */\nexport const jobPlistDict = (props: LaunchdJobProps): PlistDict => {\n const dict: Record<string, PlistValue> = { ...props.extraKeys };\n dict['Label'] = props.label;\n dict['ProgramArguments'] = [...props.programArguments];\n const env = props.environment ?? {};\n if (Object.keys(env).length > 0) dict['EnvironmentVariables'] = { ...env };\n if (props.runAtLoad !== undefined) dict['RunAtLoad'] = props.runAtLoad;\n if (props.keepAlive !== undefined) dict['KeepAlive'] = keepAliveValue(props.keepAlive);\n if (props.startInterval !== undefined) dict['StartInterval'] = props.startInterval;\n const calendar = props.startCalendarInterval;\n if (calendar !== undefined) {\n dict['StartCalendarInterval'] = Array.isArray(calendar)\n ? (calendar as readonly CalendarInterval[]).map(calendarDict)\n : calendarDict(calendar as CalendarInterval);\n }\n if (props.throttleInterval !== undefined) dict['ThrottleInterval'] = props.throttleInterval;\n if (props.standardOutPath !== undefined) dict['StandardOutPath'] = props.standardOutPath;\n if (props.standardErrorPath !== undefined) dict['StandardErrorPath'] = props.standardErrorPath;\n if (props.workingDirectory !== undefined) dict['WorkingDirectory'] = props.workingDirectory;\n if (props.userName !== undefined) dict['UserName'] = props.userName;\n if (props.groupName !== undefined) dict['GroupName'] = props.groupName;\n return dict;\n};\n\nexport const sha256Hex = (bytes: Uint8Array | string): string =>\n createHash('sha256').update(bytes).digest('hex');\n\n/** The rendered plist and its digest — the only thing LaunchdJob compares. */\nexport const renderJob = (\n props: LaunchdJobProps,\n): { text: string; bytes: Uint8Array; sha256: string } => {\n const text = renderPlist(jobPlistDict(props));\n const bytes = new TextEncoder().encode(text);\n return { bytes, sha256: sha256Hex(bytes), text };\n};\n",
20
20
  "/**\n * An XML property list serializer — the subset launchd.plist(5) reads, and nothing else.\n *\n * ★ WHY NOT AN npm LIBRARY. Nothing in this workspace depends on one (checked 2026-09-21: no\n * `plist`, `xmlbuilder` or `@xmldom/xmldom` anywhere under node_modules), and the common one pulls\n * an XML DOM in for PARSING, which a provider that only RENDERS never does. The subset a launchd\n * job needs is five node types, so this is ~100 lines plus exhaustive tests (plist.test.ts), which\n * also round-trip every case through Apple's own `plutil` when the tests run on macOS.\n *\n * ⛔ THE OUTPUT MUST BE DETERMINISTIC. LaunchdJob diffs by the SHA-256 of these bytes, so two\n * renders of one declaration must be byte-identical: dict keys are sorted, indentation is fixed,\n * and nothing depends on insertion order. A non-deterministic render is a forever-`update`.\n * ⚠️ AND A CHANGE TO THIS FILE'S OUTPUT RESTARTS EVERY JOB. A new header, indent or escape changes\n * every digest, so the next deploy after the kit upgrade updates — restarts — every declared\n * job at once. Treat any byte change here as a breaking change and say so in its changeset.\n *\n * ⛔ REFUSE, NEVER COERCE. `undefined`, `null`, a fraction, NaN, a class instance or a character XML\n * 1.0 cannot carry is a thrown PlistError naming the path, not a silently dropped key. A dropped\n * `KeepAlive` is a daemon that never restarts, and nothing downstream would say why.\n */\n\n/** Every value launchd reads. ⚠️ No `<real>`, `<date>` or `<data>`: no launchd key needs one. */\nexport type PlistValue =\n | string\n | number\n | boolean\n | readonly PlistValue[]\n | { readonly [key: string]: PlistValue };\n\nexport type PlistDict = { readonly [key: string]: PlistValue };\n\nexport class PlistError extends Error {\n constructor(\n readonly path: string,\n detail: string,\n ) {\n super(`plist ${path === '' ? '(root)' : path}: ${detail}`);\n this.name = 'PlistError';\n }\n}\n\nconst HEADER =\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n '<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" ' +\n '\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\\n' +\n '<plist version=\"1.0\">\\n';\n\n/** ⚠️ A cycle, or a runaway generator, would otherwise recurse until the stack dies. */\nconst MAX_DEPTH = 32;\n\n/**\n * ⛔ CHARACTERS XML 1.0 CANNOT CARRY AT ALL — not even escaped (XML 1.0 §2.2 `Char`). C0 controls\n * other than tab, LF and CR; U+FFFE / U+FFFF; and an unpaired surrogate, which has no UTF-8 form.\n */\n// ★ The `u` flag makes a VALID surrogate pair one code point above U+FFFF, outside this class, so\n// only an unpaired half matches the \\uD800-\\uDFFF range.\n// oxlint-disable-next-line no-control-regex -- matching control characters is the point\nconst FORBIDDEN = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/u;\n\n/**\n * Escape text content.\n * ⚠️ CR IS A CHARACTER REFERENCE, NOT A LITERAL. An XML parser normalises a literal CR (and CRLF)\n * to LF before the application sees it (XML 1.0 §2.11), so `a\\r\\nb` would come back as `a\\nb` and\n * the argument launchd passes would differ from the one declared. `&#13;` survives normalisation.\n */\nexport const escapeText = (text: string, path: string): string => {\n const bad = FORBIDDEN.exec(text);\n if (bad !== null) {\n const code = bad[0].codePointAt(0) ?? 0;\n throw new PlistError(\n path,\n `U+${code.toString(16).toUpperCase().padStart(4, '0')} cannot appear in XML 1.0`,\n );\n }\n return text\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\\r', '&#13;');\n};\n\nconst isPlainObject = (value: object): boolean => {\n const proto = Object.getPrototypeOf(value) as unknown;\n return proto === Object.prototype || proto === null;\n};\n\nconst renderValue = (value: unknown, path: string, depth: number, out: string[]): void => {\n const pad = '\\t'.repeat(depth);\n if (depth > MAX_DEPTH) throw new PlistError(path, `nested deeper than ${String(MAX_DEPTH)}`);\n if (typeof value === 'string') {\n out.push(`${pad}<string>${escapeText(value, path)}</string>`);\n return;\n }\n if (typeof value === 'boolean') {\n out.push(`${pad}<${value ? 'true' : 'false'}/>`);\n return;\n }\n if (typeof value === 'number') {\n // ⛔ launchd reads every numeric key as an integer; 1.5 would be a silently different job.\n if (!Number.isSafeInteger(value)) {\n throw new PlistError(path, `${String(value)} is not a safe integer (no <real> support)`);\n }\n out.push(`${pad}<integer>${String(value === 0 ? 0 : value)}</integer>`);\n return;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n out.push(`${pad}<array/>`);\n return;\n }\n out.push(`${pad}<array>`);\n for (const [index, item] of (value as readonly unknown[]).entries()) {\n renderValue(item, `${path}[${String(index)}]`, depth + 1, out);\n }\n out.push(`${pad}</array>`);\n return;\n }\n if (typeof value === 'object' && value !== null && isPlainObject(value)) {\n renderDict(value as Record<string, unknown>, path, depth, out);\n return;\n }\n const kind = value === null ? 'null' : typeof value;\n throw new PlistError(path, `${kind} has no plist form — omit the key instead`);\n};\n\nconst renderDict = (\n dict: Record<string, unknown>,\n path: string,\n depth: number,\n out: string[],\n): void => {\n const pad = '\\t'.repeat(depth);\n // ★ Code-unit order, not localeCompare: the same bytes on every machine and every locale.\n const keys = Object.keys(dict).sort();\n if (keys.length === 0) {\n out.push(`${pad}<dict/>`);\n return;\n }\n out.push(`${pad}<dict>`);\n for (const key of keys) {\n const child = path === '' ? key : `${path}.${key}`;\n out.push(`${pad}\\t<key>${escapeText(key, child)}</key>`);\n renderValue(dict[key], child, depth + 1, out);\n }\n out.push(`${pad}</dict>`);\n};\n\n/** Render a top-level dict as a complete XML plist document, ending in a newline. */\nexport const renderPlist = (dict: PlistDict): string => {\n if (typeof dict !== 'object' || dict === null || Array.isArray(dict) || !isPlainObject(dict)) {\n throw new PlistError('', 'the top level of a launchd plist must be a dict');\n }\n const out: string[] = [];\n renderDict(dict as Record<string, unknown>, '', 0, out);\n return `${HEADER}${out.join('\\n')}\\n</plist>\\n`;\n};\n",
21
- "/**\n * Systemd.Unit / Systemd.Timer props, attributes, the unit-file renderer and the validation — the\n * pure half of the family.\n *\n * ⛔ THE DIRECTIVE SET IS SYSTEMD'S, NOT THIS FILE'S. There is no machine-readable schema of\n * `systemd.unit(5)` / `systemd.service(5)` directives to generate from, so this renders SECTIONS\n * AND LINES VERBATIM and claims to know nothing about what the keys mean. What it validates is\n * only what an INI file must be true of — a section name, a key shape, no embedded newline —\n * plus the two structural rules systemd's own output proves (see `unitProblems`). ★ That is the\n * honest boundary: invent no vendor shapes, and let `systemd-analyze verify` be the deep check a\n * host stack runs on the host.\n * ⛔ `content` IS NEVER A SECRET. Props sit unencrypted in Alchemy state and the unit file is\n * world-readable at 0644; a unit that needs a secret takes `EnvironmentFile=` pointing at a file\n * a secret renderer maintains.\n */\nimport { sha256Hex } from '../launchd/job-form.ts';\n\nexport type UnitSection = {\n /** `Unit`, `Service`, `Timer`, `Install`, … — verbatim, including its capitalisation. */\n readonly name: string;\n /**\n * The section's lines, in order. A repeated key is allowed and meaningful in systemd\n * (`ExecStartPre=` twice runs twice), so this is a list of pairs, never an object.\n */\n readonly lines: readonly (readonly [key: string, value: string])[];\n};\n\nexport type SystemdUnitProps = {\n /** Unit name WITH its suffix, e.g. `thing.service`. The unit file's name on disk. */\n name: string;\n /** The whole unit file, verbatim. Mutually exclusive with `sections`. */\n content?: string;\n /** The unit file as sections, rendered in the order given. Mutually exclusive with `content`. */\n sections?: readonly UnitSection[];\n /** Directory the unit file goes in. @default '/etc/systemd/system' */\n directory?: string;\n /** `systemctl enable` / `disable`. @default true */\n enabled?: boolean;\n /** `systemctl start` / `stop`. @default true */\n started?: boolean;\n /**\n * Digests of things this unit READS that live outside its unit file — a rendered config file's\n * `sha256` attribute, most often. A change here restarts the unit; nothing else does.\n * ⚠️ A hand edit of that file is NOT noticed: the digest in state still matches what the stack\n * declared, so the unit reads converged. That limit is the same one the Mac side records.\n */\n restartOn?: readonly string[];\n};\n\nexport type SystemdUnitAttributes = {\n name: string;\n unitPath: string;\n /** SHA-256 of the unit file this resource wrote. */\n unitSha256: string;\n /** SHA-256 of `restartOn`, so a config change is a diff. */\n configSha256: string;\n loadState: string;\n activeState: string;\n unitFileState?: string;\n enabled: boolean;\n active: boolean;\n};\n\n/** ★ systemd's admin drop-in directory, ahead of the vendor's in its search order (measured). */\nexport const DEFAULT_UNIT_DIRECTORY = '/etc/systemd/system';\n\n/**\n * Directories systemd looks in for a unit file it can enable.\n * ★ MEASURED 2026-09-22 with `systemd-analyze unit-paths` on Debian 13 / systemd 257, minus the\n * per-user and generator directories, which are not places a stack writes. `/lib/systemd/system`\n * is the same directory before the /usr merge, where the measured host has only the merged name.\n * ⛔ WHY IT IS ENFORCED. `systemctl enable <name>` looks the unit up BY NAME; a unit file outside\n * these directories is invisible to that lookup, so an enabled unit declared into, say, `/opt`\n * writes its file, reloads, and then fails at `enable` with the file already on disk.\n */\nexport const UNIT_SEARCH_DIRECTORIES = [\n '/etc/systemd/system',\n '/run/systemd/system',\n '/usr/local/lib/systemd/system',\n '/usr/lib/systemd/system',\n '/lib/systemd/system',\n] as const;\n\n/** ⛔ The unit file's mode and owner are systemd's rule, not a choice: readable, never writable. */\nexport const UNIT_WRITE = { gid: 0, mode: 0o644, uid: 0 } as const;\n\nexport const digestOf = (text: string): string => sha256Hex(new TextEncoder().encode(text));\n\n/** The digests of everything outside the unit file that should restart it, as one value. */\nexport const configDigest = (restartOn: readonly string[] | undefined): string =>\n digestOf((restartOn ?? []).join('\\n'));\n\n/**\n * Whether `activeState`/`subState` count as \"the unit is running\" against a declared `started` —\n * the ONE place this decision is made, so `diffUnit` (unit-lifecycle.ts) and `settle`\n * (unit-settle.ts) can never disagree about it.\n *\n * ⛔ WHY THIS EXISTS: a `Type=oneshot` service driven by a `.timer` (no `[Install]`, declared\n * `started: false, enabled: false` — its timer starts it, not this resource) reports\n * `ActiveState=activating` for the run's whole duration, not an instant. Written for the PVE\n * node-check unit that first hit this: ~1.2s, every 60s. A plan taken mid-run must not read that\n * run as drift, and a deploy must not `systemctl stop` a check that is already in flight.\n * ★ systemd.service(5) §`Type=`, `oneshot` (man7.org mirror, read 2026-09-23): with no\n * `RemainAfterExit=`, the service manager holds the unit `activating` for as long as\n * `ExecStart=` runs, then moves it straight to `dead`/`inactive` (or `failed`) — it never passes\n * through `active`. So for `started: false`, `activating` is exactly a run in progress, and\n * `active` is the one state a oneshot never reaches on its own: that is the drift, and the only\n * thing settle stops.\n * ⛔ CRASH-LOOP GUARD, added on adversarial review: `ActiveState=activating` is not only \"starting\n * for the first time\" — a service with `Restart=` waiting out its `RestartSec=` backoff between\n * crash attempts is ALSO `activating`, with `SubState=auto-restart` (or `auto-restart-queued`).\n * A unit declared `started: false` that is crash-looping sits there for nearly all of its\n * wall-clock time. Without this guard the oneshot exemption above would read that loop as\n * converged forever, and a deploy would never again issue the `stop` that ends it — silently\n * defeating `started: false` on exactly the unit that most needs it enforced. So only a genuine\n * start (`SubState` anything else — `start`, `start-pre`, `start-post`, …) gets the exemption;\n * an auto-restart substate counts as running regardless of `started`, same as `active` does.\n * ★ SOURCE, not measured against a live host: systemd's own `service.c`\n * `state_translation_table` (github.com/systemd/systemd, read 2026-09-23) maps both\n * `SERVICE_AUTO_RESTART` and `SERVICE_AUTO_RESTART_QUEUED` to `UNIT_ACTIVATING`, and\n * `unit-def.c`'s `service_state_table` names their `SubState` strings `\"auto-restart\"` and\n * `\"auto-restart-queued\"`. ⚠️ REASONED NOT MEASURED: no unit was actually crash-looped and read\n * back with `systemctl show` for this change — the systemd source is the citation, unlike\n * systemctl.ts's own header, which is a live-host trace.\n * ⚠️ THE TRADE-OFF THIS ACCEPTS: a `Type=notify` (or other long-running type) unit stuck in a\n * genuine `activating`/`start` with `started: false` — never reaching `active` and never\n * crash-looping either — reads as converged, not drift, until it reaches `active`. A unit hung\n * like that is exactly the case a human should look at, not one this predicate auto-corrects by\n * stopping it out from under whatever else depends on it.\n * ★ `started: true` (the default, when omitted) is unchanged: `active` or `activating` (any\n * `subState`) both count as running, so a start already in flight is never started twice.\n */\nexport const isUnitRunning = (\n activeState: string,\n subState: string | undefined,\n started: boolean,\n): boolean => {\n if (activeState === 'active') return true;\n if (activeState !== 'activating') return false;\n if (subState === 'auto-restart' || subState === 'auto-restart-queued') return true;\n return started;\n};\n\n/** Sections → an INI unit file. ★ Keys and values pass through untouched; see the file header. */\nexport const renderUnit = (sections: readonly UnitSection[]): string =>\n `${sections\n .map((section) =>\n [`[${section.name}]`, ...section.lines.map(([key, value]) => `${key}=${value}`)].join('\\n'),\n )\n .join('\\n\\n')}\\n`;\n\nexport const unitText = (props: SystemdUnitProps): string =>\n props.content ?? renderUnit(props.sections ?? []);\n\nexport const unitPathFor = (props: SystemdUnitProps): string =>\n `${props.directory ?? DEFAULT_UNIT_DIRECTORY}/${props.name}`;\n\n/** ★ Exported so sudo-allowlist.ts validates a systemctl unit operand against the same pattern. */\nexport const NAME = /^[A-Za-z0-9][A-Za-z0-9_.@:-]*\\.([a-z]+)$/;\n/** systemd's own unit types. ★ Fixed vocabulary from `systemd.unit(5)`, not a guess at directives. */\nconst TYPES = new Set([\n 'automount',\n 'device',\n 'mount',\n 'path',\n 'scope',\n 'service',\n 'slice',\n 'socket',\n 'swap',\n 'target',\n 'timer',\n]);\n\nconst INSTALL_KEYS = new Set(['WantedBy', 'RequiredBy', 'UpsertedBy', 'Also', 'Alias']);\n\n/**\n * Every refusal at once, so one plan shows the whole list.\n * ⛔ THE TWO STRUCTURAL RULES, both proven by systemd's own output rather than assumed:\n * - `enabled: true` needs an `[Install]` section. `systemctl enable` has nothing to link without\n * one, and systemd's name for a unit file that has none is `UnitFileState=static` — measured on\n * a live host, where the journal daemon reads `static` and the ssh daemon reads `enabled`.\n * - A `.timer` needs a `[Timer]` section, and a timer's `[Install]` is what arms it at boot.\n */\nexport const unitProblems = (props: SystemdUnitProps, expect?: string): string[] => {\n const found: string[] = [];\n const type = NAME.exec(props.name)?.[1];\n if (type === undefined || !TYPES.has(type)) {\n found.push(\n `name must be <unit>.<type> with a systemd unit type, got ${JSON.stringify(props.name)}`,\n );\n } else if (expect !== undefined && type !== expect) {\n found.push(`this resource declares a .${expect} unit; ${props.name} is a .${type}`);\n }\n if ((props.content === undefined) === (props.sections === undefined)) {\n found.push('declare exactly one of content or sections');\n }\n const directory = props.directory ?? DEFAULT_UNIT_DIRECTORY;\n if (!directory.startsWith('/') || directory.endsWith('/') || directory.includes('/..')) {\n found.push('directory must be an absolute, normalised path with no trailing slash');\n }\n found.push(...textProblems(unitText(props)));\n if (props.enabled !== false && !UNIT_SEARCH_DIRECTORIES.includes(directory as never)) {\n found.push(\n `an enabled unit must live where systemd looks for it by name (${UNIT_SEARCH_DIRECTORIES.join(', ')}); ` +\n `${directory} is not one of them. Move it, or declare enabled: false.`,\n );\n }\n if (props.enabled !== false && !hasInstall(props)) {\n found.push(\n 'enabled units need an [Install] section with WantedBy/RequiredBy/Also/Alias; without one ' +\n 'systemd calls the unit \"static\" and `systemctl enable` has nothing to link. Add one, or ' +\n 'declare enabled: false and let something else pull it in.',\n );\n }\n if (type === 'timer' && !unitText(props).includes('[Timer]')) {\n found.push('a .timer needs a [Timer] section');\n }\n return found;\n};\n\nconst hasInstall = (props: SystemdUnitProps): boolean => {\n const text = unitText(props);\n if (!text.includes('[Install]')) return false;\n const after = text.slice(text.indexOf('[Install]'));\n return [...INSTALL_KEYS].some((key) => new RegExp(`^${key}=`, 'm').test(after));\n};\n\nconst textProblems = (text: string): string[] => {\n const found: string[] = [];\n if (text.trim() === '') found.push('the unit file is empty');\n if (text.includes('\\u0000')) found.push('the unit file contains NUL');\n if (!/^\\s*\\[[A-Za-z]+]/.test(text)) found.push('a unit file must begin with a [Section]');\n return found;\n};\n",
21
+ "/**\n * The parts of `unit-form.ts`'s validation that inspect the unit file's TEXT rather than its\n * props struct — split out so unit-form.ts stays under the file cap, and because these are one\n * coherent concern: is this INI shape something systemd would actually load. Takes plain strings,\n * never `SystemdUnitProps`, so it never needs to import back from unit-form.ts.\n *\n * ⛔ `[Install]` KEYS ARE `unit-form.ts`'s OWN LIST, NOT SYSTEMD'S FULL VOCABULARY — WantedBy,\n * RequiredBy, UpsertedBy, Also, Alias, per `systemd.unit(5)` §[Install]. `container-form.ts`'s\n * own header notes it deliberately does NOT reuse this set: a `.container` file's `[Install]`\n * supports only Alias/WantedBy/RequiredBy (`podman-systemd.unit(5)`), narrower than this.\n */\n\nexport const INSTALL_KEYS = new Set(['WantedBy', 'RequiredBy', 'UpsertedBy', 'Also', 'Alias']);\n\n/** Whether `text` has an `[Install]` section carrying at least one key systemd actually links on. */\nexport const hasInstallSection = (text: string): boolean => {\n if (!text.includes('[Install]')) return false;\n const after = text.slice(text.indexOf('[Install]'));\n return [...INSTALL_KEYS].some((key) => new RegExp(`^${key}=`, 'm').test(after));\n};\n\n/**\n * The first line that is neither blank nor a comment — the line whose shape actually decides\n * whether the file \"begins with a [Section]\", per `textProblems` below.\n * ★ systemd.syntax(7): \"Empty lines and lines starting with '#' or ';' are ignored\", with no\n * carve-out for the position before the first section — a comment header is ordinary content\n * there, same as anywhere else in the file.\n */\nexport const firstSubstantiveLine = (text: string): string | undefined =>\n text\n .split('\\n')\n .find((line) => !(line.trim() === '' || line.startsWith('#') || line.startsWith(';')));\n\n/**\n * 🔴 MEASURED FALSE, CT100 deploy 2026-09-26 00:11Z: the openbao-agent.service asset's first eight\n * lines are `#`-comments recording where the file was recovered from (verbatim from the live\n * host — homeflare-ct100's `src/openbao-agent/files/openbao-agent.service`), and the file is\n * byte-identical to what systemd already loads there. The old check tested the WHOLE text\n * against `/^\\s*\\[[A-Za-z]+]/` — `\\s*` skips blank lines and indentation, never a `#`/`;`\n * comment — so a leading comment line failed it outright. This checks only the first\n * SUBSTANTIVE line, so any number of leading blank lines and comments are fine and a genuine\n * `key=value` before any section — the one real error this exists to catch — still fails, since\n * that line is neither blank nor a comment either.\n */\nexport const textProblems = (text: string): string[] => {\n const found: string[] = [];\n if (text.trim() === '') found.push('the unit file is empty');\n if (text.includes('\\u0000')) found.push('the unit file contains NUL');\n const first = firstSubstantiveLine(text);\n // ★ `\\s*` kept from the original regex — leading indentation on the SECTION line itself was\n // already tolerated before this fix and stays that way; only the leading-comment shape changes.\n if (first === undefined || !/^\\s*\\[[A-Za-z]+]/.test(first)) {\n found.push(\n 'a unit file must begin with a [Section] (blank lines and #/; comments before it are fine)',\n );\n }\n return found;\n};\n",
22
+ "/**\n * Systemd.Unit / Systemd.Timer props, attributes, the unit-file renderer and the validation — the\n * pure half of the family.\n *\n * ⛔ THE DIRECTIVE SET IS SYSTEMD'S, NOT THIS FILE'S. There is no machine-readable schema of\n * `systemd.unit(5)` / `systemd.service(5)` directives to generate from, so this renders SECTIONS\n * AND LINES VERBATIM and claims to know nothing about what the keys mean. What it validates is\n * only what an INI file must be true of — a section name, a key shape, no embedded newline —\n * plus the two structural rules systemd's own output proves (see `unitProblems`). ★ That is the\n * honest boundary: invent no vendor shapes, and let `systemd-analyze verify` be the deep check a\n * host stack runs on the host.\n * ⛔ `content` IS NEVER A SECRET. Props sit unencrypted in Alchemy state and the unit file is\n * world-readable at 0644; a unit that needs a secret takes `EnvironmentFile=` pointing at a file\n * a secret renderer maintains.\n * ★ THE TEXT-SHAPE CHECKS (comments/blank lines before [Section], [Install] key lookup) live in\n * `unit-text.ts`, split out to keep this file under the house line cap.\n */\nimport { sha256Hex } from '../launchd/job-form.ts';\nimport { hasInstallSection, textProblems } from './unit-text.ts';\n\nexport type UnitSection = {\n /** `Unit`, `Service`, `Timer`, `Install`, … — verbatim, including its capitalisation. */\n readonly name: string;\n /**\n * The section's lines, in order. A repeated key is allowed and meaningful in systemd\n * (`ExecStartPre=` twice runs twice), so this is a list of pairs, never an object.\n */\n readonly lines: readonly (readonly [key: string, value: string])[];\n};\n\nexport type SystemdUnitProps = {\n /** Unit name WITH its suffix, e.g. `thing.service`. The unit file's name on disk. */\n name: string;\n /** The whole unit file, verbatim. Mutually exclusive with `sections`. */\n content?: string;\n /** The unit file as sections, rendered in the order given. Mutually exclusive with `content`. */\n sections?: readonly UnitSection[];\n /** Directory the unit file goes in. @default '/etc/systemd/system' */\n directory?: string;\n /** `systemctl enable` / `disable`. @default true */\n enabled?: boolean;\n /** `systemctl start` / `stop`. @default true */\n started?: boolean;\n /**\n * Digests of things this unit READS that live outside its unit file — a rendered config file's\n * `sha256` attribute, most often. A change here restarts the unit; nothing else does.\n * ⚠️ A hand edit of that file is NOT noticed: the digest in state still matches what the stack\n * declared, so the unit reads converged. That limit is the same one the Mac side records.\n */\n restartOn?: readonly string[];\n};\n\nexport type SystemdUnitAttributes = {\n name: string;\n unitPath: string;\n /** SHA-256 of the unit file this resource wrote. */\n unitSha256: string;\n /** SHA-256 of `restartOn`, so a config change is a diff. */\n configSha256: string;\n loadState: string;\n activeState: string;\n unitFileState?: string;\n enabled: boolean;\n active: boolean;\n};\n\n/** ★ systemd's admin drop-in directory, ahead of the vendor's in its search order (measured). */\nexport const DEFAULT_UNIT_DIRECTORY = '/etc/systemd/system';\n\n/**\n * Directories systemd looks in for a unit file it can enable.\n * ★ MEASURED 2026-09-22 with `systemd-analyze unit-paths` on Debian 13 / systemd 257, minus the\n * per-user and generator directories, which are not places a stack writes. `/lib/systemd/system`\n * is the same directory before the /usr merge, where the measured host has only the merged name.\n * ⛔ WHY IT IS ENFORCED. `systemctl enable <name>` looks the unit up BY NAME; a unit file outside\n * these directories is invisible to that lookup, so an enabled unit declared into, say, `/opt`\n * writes its file, reloads, and then fails at `enable` with the file already on disk.\n */\nexport const UNIT_SEARCH_DIRECTORIES = [\n '/etc/systemd/system',\n '/run/systemd/system',\n '/usr/local/lib/systemd/system',\n '/usr/lib/systemd/system',\n '/lib/systemd/system',\n] as const;\n\n/** ⛔ The unit file's mode and owner are systemd's rule, not a choice: readable, never writable. */\nexport const UNIT_WRITE = { gid: 0, mode: 0o644, uid: 0 } as const;\n\nexport const digestOf = (text: string): string => sha256Hex(new TextEncoder().encode(text));\n\n/** The digests of everything outside the unit file that should restart it, as one value. */\nexport const configDigest = (restartOn: readonly string[] | undefined): string =>\n digestOf((restartOn ?? []).join('\\n'));\n\n/**\n * Whether `activeState`/`subState` count as \"the unit is running\" against a declared `started` —\n * the ONE place this decision is made, so `diffUnit` (unit-lifecycle.ts) and `settle`\n * (unit-settle.ts) can never disagree about it.\n *\n * ⛔ WHY THIS EXISTS: a `Type=oneshot` service driven by a `.timer` (no `[Install]`, declared\n * `started: false, enabled: false` — its timer starts it, not this resource) reports\n * `ActiveState=activating` for the run's whole duration, not an instant. Written for the PVE\n * node-check unit that first hit this: ~1.2s, every 60s. A plan taken mid-run must not read that\n * run as drift, and a deploy must not `systemctl stop` a check that is already in flight.\n * ★ systemd.service(5) §`Type=`, `oneshot` (man7.org mirror, read 2026-09-23): with no\n * `RemainAfterExit=`, the service manager holds the unit `activating` for as long as\n * `ExecStart=` runs, then moves it straight to `dead`/`inactive` (or `failed`) — it never passes\n * through `active`. So for `started: false`, `activating` is exactly a run in progress, and\n * `active` is the one state a oneshot never reaches on its own: that is the drift, and the only\n * thing settle stops.\n * ⛔ CRASH-LOOP GUARD, added on adversarial review: `ActiveState=activating` is not only \"starting\n * for the first time\" — a service with `Restart=` waiting out its `RestartSec=` backoff between\n * crash attempts is ALSO `activating`, with `SubState=auto-restart` (or `auto-restart-queued`).\n * A unit declared `started: false` that is crash-looping sits there for nearly all of its\n * wall-clock time. Without this guard the oneshot exemption above would read that loop as\n * converged forever, and a deploy would never again issue the `stop` that ends it — silently\n * defeating `started: false` on exactly the unit that most needs it enforced. So only a genuine\n * start (`SubState` anything else — `start`, `start-pre`, `start-post`, …) gets the exemption;\n * an auto-restart substate counts as running regardless of `started`, same as `active` does.\n * ★ SOURCE, not measured against a live host: systemd's own `service.c`\n * `state_translation_table` (github.com/systemd/systemd, read 2026-09-23) maps both\n * `SERVICE_AUTO_RESTART` and `SERVICE_AUTO_RESTART_QUEUED` to `UNIT_ACTIVATING`, and\n * `unit-def.c`'s `service_state_table` names their `SubState` strings `\"auto-restart\"` and\n * `\"auto-restart-queued\"`. ⚠️ REASONED NOT MEASURED: no unit was actually crash-looped and read\n * back with `systemctl show` for this change — the systemd source is the citation, unlike\n * systemctl.ts's own header, which is a live-host trace.\n * ⚠️ THE TRADE-OFF THIS ACCEPTS: a `Type=notify` (or other long-running type) unit stuck in a\n * genuine `activating`/`start` with `started: false` — never reaching `active` and never\n * crash-looping either — reads as converged, not drift, until it reaches `active`. A unit hung\n * like that is exactly the case a human should look at, not one this predicate auto-corrects by\n * stopping it out from under whatever else depends on it.\n * ★ `started: true` (the default, when omitted) is unchanged: `active` or `activating` (any\n * `subState`) both count as running, so a start already in flight is never started twice.\n */\nexport const isUnitRunning = (\n activeState: string,\n subState: string | undefined,\n started: boolean,\n): boolean => {\n if (activeState === 'active') return true;\n if (activeState !== 'activating') return false;\n if (subState === 'auto-restart' || subState === 'auto-restart-queued') return true;\n return started;\n};\n\n/** Sections → an INI unit file. ★ Keys and values pass through untouched; see the file header. */\nexport const renderUnit = (sections: readonly UnitSection[]): string =>\n `${sections\n .map((section) =>\n [`[${section.name}]`, ...section.lines.map(([key, value]) => `${key}=${value}`)].join('\\n'),\n )\n .join('\\n\\n')}\\n`;\n\nexport const unitText = (props: SystemdUnitProps): string =>\n props.content ?? renderUnit(props.sections ?? []);\n\nexport const unitPathFor = (props: SystemdUnitProps): string =>\n `${props.directory ?? DEFAULT_UNIT_DIRECTORY}/${props.name}`;\n\n/** ★ Exported so sudo-allowlist.ts validates a systemctl unit operand against the same pattern. */\nexport const NAME = /^[A-Za-z0-9][A-Za-z0-9_.@:-]*\\.([a-z]+)$/;\n/** systemd's own unit types. ★ Fixed vocabulary from `systemd.unit(5)`, not a guess at directives. */\nconst TYPES = new Set([\n 'automount',\n 'device',\n 'mount',\n 'path',\n 'scope',\n 'service',\n 'slice',\n 'socket',\n 'swap',\n 'target',\n 'timer',\n]);\n\n/**\n * Every refusal at once, so one plan shows the whole list.\n * ⛔ THE TWO STRUCTURAL RULES, both proven by systemd's own output rather than assumed:\n * - `enabled: true` needs an `[Install]` section. `systemctl enable` has nothing to link without\n * one, and systemd's name for a unit file that has none is `UnitFileState=static` — measured on\n * a live host, where the journal daemon reads `static` and the ssh daemon reads `enabled`.\n * - A `.timer` needs a `[Timer]` section, and a timer's `[Install]` is what arms it at boot.\n */\nexport const unitProblems = (props: SystemdUnitProps, expect?: string): string[] => {\n const found: string[] = [];\n const type = NAME.exec(props.name)?.[1];\n if (type === undefined || !TYPES.has(type)) {\n found.push(\n `name must be <unit>.<type> with a systemd unit type, got ${JSON.stringify(props.name)}`,\n );\n } else if (expect !== undefined && type !== expect) {\n found.push(`this resource declares a .${expect} unit; ${props.name} is a .${type}`);\n }\n if ((props.content === undefined) === (props.sections === undefined)) {\n found.push('declare exactly one of content or sections');\n }\n const directory = props.directory ?? DEFAULT_UNIT_DIRECTORY;\n if (!directory.startsWith('/') || directory.endsWith('/') || directory.includes('/..')) {\n found.push('directory must be an absolute, normalised path with no trailing slash');\n }\n found.push(...textProblems(unitText(props)));\n if (props.enabled !== false && !UNIT_SEARCH_DIRECTORIES.includes(directory as never)) {\n found.push(\n `an enabled unit must live where systemd looks for it by name (${UNIT_SEARCH_DIRECTORIES.join(', ')}); ` +\n `${directory} is not one of them. Move it, or declare enabled: false.`,\n );\n }\n if (props.enabled !== false && !hasInstallSection(unitText(props))) {\n found.push(\n 'enabled units need an [Install] section with WantedBy/RequiredBy/Also/Alias; without one ' +\n 'systemd calls the unit \"static\" and `systemctl enable` has nothing to link. Add one, or ' +\n 'declare enabled: false and let something else pull it in.',\n );\n }\n if (type === 'timer' && !unitText(props).includes('[Timer]')) {\n found.push('a .timer needs a [Timer] section');\n }\n return found;\n};\n",
22
23
  "/**\n * The `systemctl` subcommands the systemd family uses, over a HostRunner, plus the parser for the\n * one that returns data.\n *\n * ★ MEASURED 2026-09-22 on Debian 13, systemd 257 (257.13-1~deb13u1), read-only — nothing was\n * enabled, started or reloaded to write this:\n *\n * - `systemctl show -p <list> <unit>` EXITS 0 FOR A UNIT THAT DOES NOT EXIST, and answers with\n * the properties it would have had:\n * Id=hf-nonexistent-xyz.service LoadState=not-found\n * ActiveState=inactive SubState=dead\n * FragmentPath= UnitFileState=\n * ⛔ SO THE EXIT CODE IS NOT THE ANSWER — `LoadState` is. A provider that read exit 0 as \"the\n * unit is there\" would adopt a unit that does not exist and then never write its file.\n * - The properties come back in systemd's own order, not the order asked for, so the output is a\n * map and never positional.\n * - `systemctl is-enabled <unknown>` exits **4** and prints `not-found`; `is-active <unknown>`\n * exits **4** and prints `inactive`. Both are answers, not errors.\n * - `UnitFileState=static` is exactly systemd's name for a unit file with no `[Install]` section\n * (measured: the journal daemon is `static`, the ssh daemon is `enabled`).\n * - `/etc/systemd/system` is `root:root 0755` — the admin drop-in directory, ahead of the\n * vendor's `/usr/lib/systemd/system` in systemd's own search order.\n * ⚠️ REASONED, NOT MEASURED: the write subcommands. `daemon-reload`, `enable`, `disable`, `start`,\n * `stop` and `restart` were never run for this file, because running them would change a live\n * host. Each is therefore checked the same way: exit 0 or an Error carrying systemd's stderr, and\n * the state is read back with `show` afterwards rather than assumed.\n * ⛔ NEVER PUT `show` STDOUT WITH NO PROPERTY FILTER IN AN ERROR: the unfiltered property set\n * carries the unit's whole environment block.\n * ★ `SourcePath` ADDED 2026-09-24 for `Podman.Container` (container-generator.ts): a systemd\n * GENERATOR's output unit carries the source file it was generated from — MEASURED on CT100,\n * `systemctl show caddy.service -p SourcePath` -> `/etc/containers/systemd/caddy.container`. An\n * ordinary hand-written unit's `SourcePath` is empty, so this is additive for `Systemd.Unit`.\n */\nimport type { HostRunner } from '../launchd/runner.ts';\n\nexport const SYSTEMCTL = 'systemctl';\n\n/** The properties every read asks for. ⛔ Never `Environment` — see the header. */\nexport const SHOW_PROPERTIES = [\n 'Id',\n 'LoadState',\n 'ActiveState',\n 'SubState',\n 'UnitFileState',\n 'FragmentPath',\n 'SourcePath',\n 'NeedDaemonReload',\n] as const;\n\nexport class SystemctlError extends Error {\n constructor(command: string, exitCode: number, stderr: string) {\n super(`systemctl ${command} -> ${String(exitCode)}: ${stderr.trim().slice(0, 300)}`);\n this.name = 'SystemctlError';\n }\n}\n\nexport type UnitStatus = {\n /** `loaded`, `not-found`, `masked`, `error`, `bad-setting`. ⛔ The authority on existence. */\n readonly loadState: string;\n /** systemd knows this unit: it has a unit file or is loaded. */\n readonly known: boolean;\n readonly activeState: string;\n readonly subState?: string;\n /** `enabled`, `disabled`, `static`, `masked`, … Empty for a unit with no unit file. */\n readonly unitFileState?: string;\n /** The unit file systemd would read. Empty when there is none. */\n readonly fragmentPath?: string;\n /** A GENERATOR's source file, e.g. Quadlet's `.container` file. Empty for a hand-written unit. */\n readonly sourcePath?: string;\n /** systemd's own view that its on-disk unit files are newer than what it has loaded. */\n readonly needDaemonReload: boolean;\n};\n\n/** `key=value` lines into a map. ⚠️ First wins: systemd never repeats a key, a truncated read might. */\nexport const parseShow = (stdout: string): Map<string, string> => {\n const fields = new Map<string, string>();\n for (const line of stdout.split('\\n')) {\n const at = line.indexOf('=');\n if (at <= 0) continue;\n const key = line.slice(0, at);\n if (!fields.has(key)) fields.set(key, line.slice(at + 1));\n }\n return fields;\n};\n\nexport const statusOf = (stdout: string): UnitStatus => {\n const fields = parseShow(stdout);\n const loadState = fields.get('LoadState') ?? 'not-found';\n const unitFileState = fields.get('UnitFileState') ?? '';\n const fragmentPath = fields.get('FragmentPath') ?? '';\n const sourcePath = fields.get('SourcePath') ?? '';\n const subState = fields.get('SubState') ?? '';\n return {\n activeState: fields.get('ActiveState') ?? 'inactive',\n // ⛔ MEASURED: `show` answers for a unit that does not exist, so \"known\" is LoadState plus\n // whether systemd found a unit file at all — never the exit code.\n known: loadState !== 'not-found' || unitFileState !== '',\n loadState,\n needDaemonReload: fields.get('NeedDaemonReload') === 'yes',\n ...(subState === '' ? {} : { subState }),\n ...(unitFileState === '' ? {} : { unitFileState }),\n ...(fragmentPath === '' ? {} : { fragmentPath }),\n ...(sourcePath === '' ? {} : { sourcePath }),\n };\n};\n\nexport const showUnit = async (runner: HostRunner, name: string): Promise<UnitStatus> => {\n const result = await runner.exec([\n SYSTEMCTL,\n 'show',\n '--no-pager',\n '-p',\n SHOW_PROPERTIES.join(','),\n '--',\n name,\n ]);\n // ⚠️ A non-zero `show` means systemctl itself failed (no bus, a malformed name) — not a missing\n // unit, which exits 0. Failing closed here is what keeps a broken connection from reading as\n // \"the unit is gone\", which would make the next deploy write its file and restart it.\n if (result.exitCode !== 0)\n throw new SystemctlError(`show ${name}`, result.exitCode, result.stderr);\n return statusOf(result.stdout);\n};\n\n/** One write subcommand, checked. ⚠️ stderr only; `show` output never reaches an error. */\nconst run = async (runner: HostRunner, args: readonly string[]): Promise<void> => {\n const result = await runner.exec([SYSTEMCTL, ...args]);\n if (result.exitCode !== 0) {\n throw new SystemctlError(args.join(' '), result.exitCode, result.stderr);\n }\n};\n\n/** ⛔ After every unit-file write or removal, and before enable/start reads it. */\nexport const daemonReload = (runner: HostRunner): Promise<void> => run(runner, ['daemon-reload']);\n\nexport const enableUnit = (runner: HostRunner, name: string): Promise<void> =>\n run(runner, ['enable', '--', name]);\n\nexport const disableUnit = (runner: HostRunner, name: string): Promise<void> =>\n run(runner, ['disable', '--', name]);\n\nexport const startUnit = (runner: HostRunner, name: string): Promise<void> =>\n run(runner, ['start', '--', name]);\n\nexport const stopUnit = (runner: HostRunner, name: string): Promise<void> =>\n run(runner, ['stop', '--', name]);\n\n/**\n * ⛔ `restart`, NOT `reload-or-restart`. The reloading form asks the unit to re-read its config in\n * place when it declares `ExecReload=`, which means \"did the change take effect?\" has two\n * different answers depending on the unit — and a deploy cannot report a half-applied change.\n */\nexport const restartUnit = (runner: HostRunner, name: string): Promise<void> =>\n run(runner, ['restart', '--', name]);\n",
23
- "/**\n * Quadlet is a systemd GENERATOR (`systemd.generator(7)`, tag `v257`, `man/systemd.generator.xml`,\n * read 2026-09-24), not a unit reader — this is the one fact the whole lifecycle is built around.\n *\n * ★ \"Generator output is supposed to last only until the next `daemon-reload`... Units written by\n * generators are removed when the configuration is reloaded\" (same doc). `daemon-reload` DELETES\n * `/run/systemd/generator` wholesale and reruns every generator from the `.container` files\n * currently on disk. So a `.container` file the generator refuses produces NO generated unit —\n * even one that generated fine a moment ago, if `daemon-reload` runs again over a now-broken file.\n * That is why `container-lifecycle.ts` restores the LAST-KNOWN-GOOD file and reloads again on a\n * failed update, rather than leaving the bad file in place the way `Systemd.Unit` leaves a bad\n * update for the next deploy to retry (unit-lifecycle.ts): here, \"the next deploy\" might be a\n * reboot, and by then the container this resource already promised running has no systemd unit\n * at all, not merely a stale one.\n * ⛔ THE GENERATED UNIT CANNOT BE `systemctl enable`D — `podman-systemd.unit(5)`, Podman 5.4, \"Podman\n * unit files\": \"The services created by Podman are considered transient by systemd... it is not\n * possible to 'systemctl enable' them... To compensate... the generator manually applies the\n * [Install] section... during generation, in the same way `systemctl enable` does when run\n * later.\" MEASURED on CT100 2026-09-24 (`ssh ct100`, read-only): `caddy.container` declares\n * `[Install] WantedBy=multi-user.target` and nothing ever ran `systemctl enable caddy`; yet\n * `systemctl is-enabled caddy.service` prints `generated`, `UnitFileState=generated`, and\n * `/run/systemd/generator/multi-user.target.wants/caddy.service` is a symlink the GENERATOR put\n * there. So `Podman.Container` has no `enabled` prop and never calls `enableUnit`/`disableUnit`\n * (systemctl.ts) — declaring `install.wantedBy` IS the enablement, applied by the generator on\n * every `daemon-reload`, exactly the way `Systemd.Unit`'s enable/disable calls are applied by\n * this family's own `settle` step. That is the one place this family's \"enable logic\" differs.\n * ★ SourcePath TIES THE GENERATED UNIT BACK TO OUR FILE. MEASURED on CT100 2026-09-24:\n * `systemctl show caddy.service -p SourcePath` -> `/etc/containers/systemd/caddy.container`.\n * `verifyGenerated` below uses it the way `unit-preflight.ts`'s `assertUnclaimed` uses a file\n * digest: a generated unit whose SourcePath is NOT our path belongs to a same-named `.container`\n * file earlier in `QUADLET_SEARCH_DIRECTORIES` (container-form.ts) — a takeover, not a success.\n * ⚠️ REASONED, NOT MEASURED — THE ONE GAP THIS VERIFICATION HAS: whether an ALREADY-ACTIVE unit's\n * `LoadState` stays `loaded` (systemd does not garbage-collect a referenced/active unit object\n * merely because a reload failed to reproduce it) even when the UPDATED `.container` file the\n * generator just refused would, on its own, generate nothing. Measuring this needs writing a\n * broken file to a live host, which read-only access forbids. If that is how a live host\n * behaves, `LoadState`/`SourcePath` alone would not catch a failed update to a container that\n * was already running — only a CREATE, or an update to an already-INACTIVE one, is verified with\n * full confidence by this check alone. Restoring the last-known-good file on ANY verification\n * failure (container-lifecycle.ts) does not depend on this gap: it always leaves the host at the\n * file that is known to generate, closing the risk window even where detection is uncertain.\n * ⛔ `needsVerificationReload` (below) is what stops a NEW resource from getting stuck — found on\n * adversarial review. `container-lifecycle.ts`'s `needsReload` used to be `wrote || stale ||\n * preStatus.needDaemonReload`; for an INTERRUPTED CREATE (the write landed, the apply crashed\n * before `daemon-reload` ran) the retry sees `wrote: false` (the file already holds `desired`)\n * and `stale: false` (there is no PRIOR state to disagree with — this is a create), so nothing\n * ever reloaded and `verifyGenerated` threw on the still-missing generated unit, forever: loud,\n * but stuck, since nothing about a plain retry ever changed. The same holds for adopting a file\n * whose generated unit is missing or does not match. `needsVerificationReload` shares\n * `generatedMatches` with `verifyGenerated` itself, so the reload gate and the verification it\n * is gating can never disagree about what \"already proven\" means.\n */\nimport type { UnitStatus } from './systemctl.ts';\n\n/** MEASURED on CT100 2026-09-24: `systemctl show caddy.service -p FragmentPath`. */\nexport const GENERATED_UNIT_DIRECTORY = '/run/systemd/generator';\n\nexport class QuadletGeneratorError extends Error {\n constructor(name: string, detail: string) {\n super(`Podman.Container ${name}: ${detail}`);\n this.name = 'QuadletGeneratorError';\n }\n}\n\n/** Whether `status` already proves a generated unit that came from `containerPath` — the one\n * question both `verifyGenerated` (throws when false) and `needsVerificationReload` (reloads to\n * try to make it true) ask. */\nconst generatedMatches = (containerPath: string, status: UnitStatus): boolean =>\n status.known &&\n status.loadState === 'loaded' &&\n (status.sourcePath === undefined || status.sourcePath === containerPath);\n\n/**\n * Whether `container-lifecycle.ts` must `daemon-reload` before trusting `status` as proof of\n * anything — true whenever `status` does not already show a matching generation. Called on the\n * PRE-write status, so it costs nothing when `wrote`/`stale`/`NeedDaemonReload` already force a\n * reload; it earns its keep exactly when none of them do but nothing has actually been proven yet\n * (a fresh create or adopt with no prior state to compare against).\n */\nexport const needsVerificationReload = (containerPath: string, status: UnitStatus): boolean =>\n !generatedMatches(containerPath, status);\n\n/**\n * Throws a typed, loud `QuadletGeneratorError` — never lets a generator failure read as \"the\n * resource is simply absent\", which is what a plain `LoadState=not-found` would otherwise look\n * like to a caller that only knows the `Systemd.Unit` shape (a unit that has genuinely never been\n * declared also reads `not-found`).\n */\nexport const verifyGenerated = (\n name: string,\n containerPath: string,\n serviceName: string,\n status: UnitStatus,\n): void => {\n if (!status.known || status.loadState !== 'loaded') {\n throw new QuadletGeneratorError(\n name,\n `${serviceName} does not exist after daemon-reload (LoadState=${status.loadState}). The ` +\n '.container file was written and reloaded, so Quadlet’s generator refused it — a bad ' +\n 'key, a bad value, or an interaction this validation does not check. Debug on the host ' +\n \"with '/usr/lib/systemd/system-generators/podman-system-generator --dryrun' or \" +\n `'systemd-analyze --generators=true verify ${serviceName}' (podman-systemd.unit(5), Podman 5.4).`,\n );\n }\n if (status.sourcePath !== undefined && status.sourcePath !== containerPath) {\n throw new QuadletGeneratorError(\n name,\n `${serviceName}'s SourcePath is ${status.sourcePath}, not ${containerPath} — a same-named ` +\n '.container file earlier in Quadlet’s search path is generating this unit instead of ours ' +\n '(podman-systemd.unit(5) “Podman Unit Search Path”, Podman 5.4).',\n );\n }\n};\n",
24
+ "/**\n * Quadlet is a systemd GENERATOR (`systemd.generator(7)`, tag `v257`, `man/systemd.generator.xml`,\n * read 2026-09-24), not a unit reader — this is the one fact the whole lifecycle is built around.\n *\n * ★ \"Generator output is supposed to last only until the next `daemon-reload`... Units written by\n * generators are removed when the configuration is reloaded\" (same doc). `daemon-reload` DELETES\n * `/run/systemd/generator` wholesale and reruns every generator from the `.container` files\n * currently on disk. So a `.container` file the generator refuses produces NO generated unit —\n * even one that generated fine a moment ago, if `daemon-reload` runs again over a now-broken file.\n * That is why `container-lifecycle.ts` restores the LAST-KNOWN-GOOD file and reloads again on a\n * failed update, rather than leaving the bad file in place the way `Systemd.Unit` leaves a bad\n * update for the next deploy to retry (unit-lifecycle.ts): here, \"the next deploy\" might be a\n * reboot, and by then the container this resource already promised running has no systemd unit\n * at all, not merely a stale one.\n * ⛔ THE GENERATED UNIT CANNOT BE `systemctl enable`D — `podman-systemd.unit(5)`, Podman 5.4, \"Podman\n * unit files\": \"The services created by Podman are considered transient by systemd... it is not\n * possible to 'systemctl enable' them... To compensate... the generator manually applies the\n * [Install] section... during generation, in the same way `systemctl enable` does when run\n * later.\" MEASURED on CT100 2026-09-24 (`ssh ct100`, read-only): `caddy.container` declares\n * `[Install] WantedBy=multi-user.target` and nothing ever ran `systemctl enable caddy`; yet\n * `systemctl is-enabled caddy.service` prints `generated`, `UnitFileState=generated`, and\n * `/run/systemd/generator/multi-user.target.wants/caddy.service` is a symlink the GENERATOR put\n * there. So `Podman.Container` has no `enabled` prop and never calls `enableUnit`/`disableUnit`\n * (systemctl.ts) — declaring `install.wantedBy` IS the enablement, applied by the generator on\n * every `daemon-reload`, exactly the way `Systemd.Unit`'s enable/disable calls are applied by\n * this family's own `settle` step. That is the one place this family's \"enable logic\" differs.\n * ★ SourcePath TIES THE GENERATED UNIT BACK TO OUR FILE. MEASURED on CT100 2026-09-24:\n * `systemctl show caddy.service -p SourcePath` -> `/etc/containers/systemd/caddy.container`.\n * `verifyGenerated` below uses it the way `unit-preflight.ts`'s `assertUnclaimed` uses a file\n * digest: a generated unit whose SourcePath is NOT our path belongs to a same-named `.container`\n * file earlier in `QUADLET_SEARCH_DIRECTORIES` (container-form.ts) — a takeover, not a success.\n * ⚠️ REASONED, NOT MEASURED — THE ONE GAP THIS VERIFICATION HAS: whether an ALREADY-ACTIVE unit's\n * `LoadState` stays `loaded` (systemd does not garbage-collect a referenced/active unit object\n * merely because a reload failed to reproduce it) even when the UPDATED `.container` file the\n * generator just refused would, on its own, generate nothing. Measuring this needs writing a\n * broken file to a live host, which read-only access forbids. If that is how a live host\n * behaves, `LoadState`/`SourcePath` alone would not catch a failed update to a container that\n * was already running — only a CREATE, or an update to an already-INACTIVE one, is verified with\n * full confidence by this check alone. Restoring the last-known-good file on ANY verification\n * failure (container-lifecycle.ts) does not depend on this gap: it always leaves the host at the\n * file that is known to generate, closing the risk window even where detection is uncertain.\n * ⛔ `needsVerificationReload` (below) is what stops a NEW resource from getting stuck — found on\n * adversarial review. `container-lifecycle.ts`'s `needsReload` used to be `wrote || stale ||\n * preStatus.needDaemonReload`; for an INTERRUPTED CREATE (the write landed, the apply crashed\n * before `daemon-reload` ran) the retry sees `wrote: false` (the file already holds `desired`)\n * and `stale: false` (there is no PRIOR state to disagree with — this is a create), so nothing\n * ever reloaded and `verifyGenerated` threw on the still-missing generated unit, forever: loud,\n * but stuck, since nothing about a plain retry ever changed. The same holds for adopting a file\n * whose generated unit is missing or does not match. `needsVerificationReload` shares\n * `generatedMatches` with `verifyGenerated` itself, so the reload gate and the verification it\n * is gating can never disagree about what \"already proven\" means.\n */\nimport type { UnitStatus } from './systemctl.ts';\n\n/** MEASURED on CT100 2026-09-24: `systemctl show caddy.service -p FragmentPath`. */\nexport const GENERATED_UNIT_DIRECTORY = '/run/systemd/generator';\n\n/**\n * Whether `fragmentPath` is Quadlet's OWN generator output — the \"did daemon-reload actually\n * produce OUR unit\" question `verifyGenerated` needs, as distinct from `isShadowingFragment`\n * below (the \"does something ELSE outrank the generator\" question `assertUnshadowed` needs — the\n * two are not complements of each other, see that function's header).\n */\nexport const isGeneratorFragment = (fragmentPath: string | undefined): boolean =>\n fragmentPath !== undefined && fragmentPath.startsWith(`${GENERATED_UNIT_DIRECTORY}/`);\n\n/**\n * ⛔ CORRECTED ON ADVERSARIAL RE-REVIEW OF THE FIX BELOW — the directories that ACTUALLY search\n * BEFORE `${GENERATED_UNIT_DIRECTORY}` in systemd's real Unit File Load Path (`systemd.unit(5)`,\n * tag v257, \"Unit File Load Path\"), highest to lowest precedence:\n * /etc/systemd/system.control, /run/systemd/system.control, /run/systemd/transient,\n * /etc/systemd/system, /etc/systemd/system.attached, /run/systemd/system,\n * /run/systemd/system.attached, [${GENERATED_UNIT_DIRECTORY}], /usr/local/lib/systemd/system,\n * /usr/lib/systemd/system, /run/systemd/generator.late.\n * ⛔ `/usr/local/lib/systemd/system` AND `/usr/lib/systemd/system` ARE DELIBERATELY ABSENT — the\n * original version of this check (`isGeneratorFragment`'s NEGATION: \"not the generator's own\n * output\") treated ANY other FragmentPath as shadowing, including these two vendor directories,\n * which are LOWER precedence than the generator, not higher. A plain unit there is harmlessly\n * shadowed BY Quadlet's generated unit, same as `unit-form.ts`'s `UNIT_SEARCH_DIRECTORIES`\n * (measured via `systemd-analyze unit-paths`) independently lists them below `/run/systemd/system`,\n * and `systemctl.ts`'s own header distinguishes `/etc/systemd/system` from \"the vendor's\n * `/usr/lib/systemd/system`\" rather than lumping the two together. Refusing for either one blocked\n * a create/adopt apply would have handled fine — exactly the false positive S49 (\"neither looser\n * nor stricter\") forbids. `/etc/systemd/system.control`, `.attached` and `/run/systemd/transient`\n * are included for completeness against the man page though no family here writes into them.\n */\nconst SHADOWING_UNIT_DIRECTORIES = [\n '/etc/systemd/system.control',\n '/run/systemd/system.control',\n '/run/systemd/transient',\n '/etc/systemd/system',\n '/etc/systemd/system.attached',\n '/run/systemd/system',\n '/run/systemd/system.attached',\n] as const;\n\n/**\n * Whether `fragmentPath` genuinely OUTRANKS Quadlet's generator — the real question\n * `container-preflight.ts`'s `assertUnshadowed` needs (\"would writing our `.container` file and\n * reloading still lose to this other unit?\"), as opposed to the broader and wrong question the\n * original check asked (\"is this simply not the generator's own output?\", which is also true of\n * every LOWER-precedence vendor unit and wrongly refused those too).\n */\nexport const isShadowingFragment = (fragmentPath: string | undefined): boolean =>\n fragmentPath !== undefined &&\n SHADOWING_UNIT_DIRECTORIES.some((dir) => fragmentPath.startsWith(`${dir}/`));\n\nexport class QuadletGeneratorError extends Error {\n constructor(name: string, detail: string) {\n super(`Podman.Container ${name}: ${detail}`);\n this.name = 'QuadletGeneratorError';\n }\n}\n\n/** Whether `status` already proves a generated unit that came from `containerPath` — the one\n * question both `verifyGenerated` (throws when false) and `needsVerificationReload` (reloads to\n * try to make it true) ask. */\nconst generatedMatches = (containerPath: string, status: UnitStatus): boolean =>\n status.known &&\n status.loadState === 'loaded' &&\n (status.sourcePath === undefined || status.sourcePath === containerPath);\n\n/**\n * Whether `container-lifecycle.ts` must `daemon-reload` before trusting `status` as proof of\n * anything — true whenever `status` does not already show a matching generation. Called on the\n * PRE-write status, so it costs nothing when `wrote`/`stale`/`NeedDaemonReload` already force a\n * reload; it earns its keep exactly when none of them do but nothing has actually been proven yet\n * (a fresh create or adopt with no prior state to compare against).\n */\nexport const needsVerificationReload = (containerPath: string, status: UnitStatus): boolean =>\n !generatedMatches(containerPath, status);\n\n/**\n * Throws a typed, loud `QuadletGeneratorError` — never lets a generator failure read as \"the\n * resource is simply absent\", which is what a plain `LoadState=not-found` would otherwise look\n * like to a caller that only knows the `Systemd.Unit` shape (a unit that has genuinely never been\n * declared also reads `not-found`).\n *\n * ⛔ THE FRAGMENTPATH CHECK BELOW WAS ADDED — found on adversarial review of `assertUnshadowed`\n * (container-preflight.ts): before it, this function trusted `LoadState`/`SourcePath` alone, and\n * neither one notices a genuinely-shadowing PLAIN unit. A real, already-loaded plain unit (e.g.\n * an admin's own `/etc/systemd/system/foo.service` sharing this container's service name) reports\n * `LoadState=loaded` — it is a valid unit — and `SourcePath` empty, since hand-written units never\n * carry one; both checks above pass it silently. MEASURED directly against this function: a\n * `status` built from exactly what `systemctl show` reports for that case (`loadState: 'loaded'`,\n * `fragmentPath` under `/etc/systemd/system`, `sourcePath: undefined`) did not throw before this\n * check existed. Without it, `assertUnshadowed`'s plan-time refusal was the ONLY thing standing\n * between a shadowing plain unit and a SILENT apply-time \"success\" that leaves the pre-existing\n * unit running untouched while state records attributes read back from it — not a loud mid-apply\n * throw, which is what earlier documentation of this fix claimed the pre-fix risk was.\n */\nexport const verifyGenerated = (\n name: string,\n containerPath: string,\n serviceName: string,\n status: UnitStatus,\n): void => {\n if (!status.known || status.loadState !== 'loaded') {\n throw new QuadletGeneratorError(\n name,\n `${serviceName} does not exist after daemon-reload (LoadState=${status.loadState}). The ` +\n '.container file was written and reloaded, so Quadlet’s generator refused it — a bad ' +\n 'key, a bad value, or an interaction this validation does not check. Debug on the host ' +\n \"with '/usr/lib/systemd/system-generators/podman-system-generator --dryrun' or \" +\n `'systemd-analyze --generators=true verify ${serviceName}' (podman-systemd.unit(5), Podman 5.4).`,\n );\n }\n if (status.fragmentPath !== undefined && !isGeneratorFragment(status.fragmentPath)) {\n throw new QuadletGeneratorError(\n name,\n `${serviceName} is loaded from ${status.fragmentPath}, not from Quadlet’s generator ` +\n `(${GENERATED_UNIT_DIRECTORY}/…) — daemon-reload ran, but a plain unit at that path still ` +\n 'answers to this name, and systemd loaded IT, not ours. Move the plain unit aside — a ' +\n 'cutover — and redeploy.',\n );\n }\n if (status.sourcePath !== undefined && status.sourcePath !== containerPath) {\n throw new QuadletGeneratorError(\n name,\n `${serviceName}'s SourcePath is ${status.sourcePath}, not ${containerPath} — a same-named ` +\n '.container file earlier in Quadlet’s search path is generating this unit instead of ours ' +\n '(podman-systemd.unit(5) “Podman Unit Search Path”, Podman 5.4).',\n );\n }\n};\n",
24
25
  "/**\n * A best-effort refusal of an inline secret ANYWHERE in a rendered `.container` file — checked\n * from `containerProblems` (container-form.ts), so it runs at plan AND apply time, before anything\n * is written.\n *\n * ⛔ THIS IS NOT A SECRET SCANNER. It cannot prove a value is safe, only refuse the OBVIOUS cases: a\n * key whose name says what it holds, or a value shaped like a real vendor token. The actual\n * contract is `EnvironmentFile=` (container-form.ts's header): a secret belongs in a host file an\n * out-of-band renderer (openbao-agent) maintains, never in a prop, because the WHOLE file is\n * rendered into a 0644 file (`unit-form.ts` `UNIT_WRITE`) AND persisted unencrypted in Alchemy\n * state — the same two reasons `Systemd.Unit`'s `content` is never secret. A determined caller can\n * still name a variable `CFG` and put a token in it; this check is a guardrail against the common\n * mistake, not a boundary a hostile caller cannot cross.\n * ★ KEY-NAME FIRST, VALUE SECOND. The name check catches the overwhelming majority of real\n * mistakes (copying a `docker run -e SECRET=...` line verbatim) and has no false-negative risk\n * from an unfamiliar token format; the value check is defense in depth for a handful of\n * widely-recognised vendor prefixes, not an attempt at general entropy detection — an entropy\n * check has enough false positives on ordinary config (long image digests, base64 Caddyfile\n * snippets) that it would train callers to ignore the refusal.\n * ⛔ CHECKED EVERYWHERE, NOT ONLY `container.environment` — found on adversarial review.\n * `container.environment` is the field most likely to carry one BY ACCIDENT, and gets the\n * precise per-key `secretLikeEnvironment` check below with the best error message. But every\n * other free-text field renders into the SAME 0644 file and the SAME state row: `exec`,\n * `podmanArgs` (each entry rendered verbatim), and the escape-hatch `unit.lines`/`service.lines`\n * — a `service.lines` entry can spell a native systemd `Environment=` directly, which never goes\n * through the typed `container.environment` map at all. `secretLikeLines` below runs the same two\n * heuristics — value-shape, and an embedded `KEY=VALUE` whose KEY looks like a secret — over every\n * OTHER rendered line, and `container-form.ts`'s `containerProblems` calls both, so nothing\n * rendered escapes either check.\n */\n\n/** Case-insensitive: matches the key APPEARING to name a credential, wherever it sits in the name. */\nconst SECRET_KEY_NAME =\n /(SECRET|TOKEN|PASSWORD|PASSWD|PRIVATE_KEY|API_?KEY|CREDENTIAL|ACCESS_KEY|CLIENT_SECRET|AUTH_?KEY|DSN)/i;\n\n/**\n * A handful of widely-recognised credential value shapes: Bearer/Basic auth headers, common vendor\n * token prefixes (GitHub `ghp_`/`gho_`, GitLab `glpat-`, Slack `xoxb-`/`xoxp-`/…, AWS `AKIA`), and a\n * JWT's `eyJ` base64url header. ⚠️ Not exhaustive — see file header.\n */\nconst SECRET_VALUE_PREFIX = /^(Bearer\\s|Basic\\s|sk-|ghp_|gho_|glpat-|xox[baprs]-|AKIA|eyJ)/;\n/** The same shapes, but matched ANYWHERE in a longer string — a `podmanArgs`/`exec` line is a whole\n * command or arg list, not a bare value, so the token can sit mid-string (`... --env=ghp_xxx`). */\nconst SECRET_VALUE_ANYWHERE = new RegExp(SECRET_VALUE_PREFIX.source.replace(/^\\^/, ''));\n\n/** A `KEY=VALUE`-shaped substring whose KEY looks like a secret name, wherever it sits in a line —\n * catches `-e GITHUB_TOKEN=ghp_xxx` or a raw `service.lines` `Environment=SECRET=xxx`. */\nconst EMBEDDED_SECRET_ASSIGNMENT = new RegExp(\n `[A-Za-z0-9_]*(?:${SECRET_KEY_NAME.source})[A-Za-z0-9_]*\\\\s*=\\\\s*\\\\S+`,\n 'i',\n);\n\n/** `-e`/`--env` (and their `=`-joined and glued forms) in `PodmanArgs=`: refused OUTRIGHT, not only\n * when the value looks secret — this resource already has a dedicated, secret-checked way to set a\n * container env var (`container.environment`/`container.environmentFile`), so a raw `PodmanArgs=`\n * env flag is always the wrong tool here, whatever it carries. */\nconst ENV_FLAG = /^(?:-e|--env)(?:=|$|[A-Za-z_])/;\n\nexport const secretLikeEnvironment = (environment: Readonly<Record<string, string>>): string[] => {\n const found: string[] = [];\n for (const [key, value] of Object.entries(environment)) {\n if (SECRET_KEY_NAME.test(key)) {\n found.push(\n `environment key ${JSON.stringify(key)} looks like a secret by its name. Environment= is ` +\n 'rendered into a world-readable file and stored in Alchemy state; use environmentFile ' +\n 'instead, pointing at a host path a secret renderer maintains.',\n );\n } else if (SECRET_VALUE_PREFIX.test(value)) {\n found.push(\n `environment key ${JSON.stringify(key)}'s value looks like a credential. Environment= is ` +\n 'rendered into a world-readable file and stored in Alchemy state; use environmentFile ' +\n 'instead, pointing at a host path a secret renderer maintains.',\n );\n }\n }\n return found;\n};\n\n/** The same two heuristics as `secretLikeEnvironment`, over any OTHER rendered `[key, value]` line\n * (`Exec=`, `PodmanArgs=`, and the `unit.lines`/`service.lines` escape hatches) — see file header. */\nexport const secretLikeLines = (\n lines: readonly (readonly [key: string, value: string])[],\n): string[] => {\n const found: string[] = [];\n for (const [key, value] of lines) {\n if (SECRET_VALUE_ANYWHERE.test(value)) {\n found.push(\n `${key}=${JSON.stringify(value)} looks like it carries a credential by its value. This ` +\n 'line is rendered into a world-readable file and stored in Alchemy state; use ' +\n 'container.environmentFile instead, pointing at a host path a secret renderer maintains.',\n );\n } else if (EMBEDDED_SECRET_ASSIGNMENT.test(value)) {\n found.push(\n `${key}=${JSON.stringify(value)} embeds a KEY=VALUE pair whose key looks like a secret ` +\n 'name. This line is rendered into a world-readable file and stored in Alchemy state; use ' +\n 'container.environment (checked for secrets) or container.environmentFile instead.',\n );\n }\n }\n return found;\n};\n\n/** `PodmanArgs=` entries that try to set a container env var outright — see `ENV_FLAG`'s comment. */\nexport const podmanArgsProblems = (args: readonly string[]): string[] =>\n args\n .filter((arg) => ENV_FLAG.test(arg))\n .map(\n (arg) =>\n `podmanArgs entry ${JSON.stringify(arg)} sets a container environment variable outside ` +\n 'the typed props, which this family never checks for a secret. Use container.environment ' +\n '(checked) or container.environmentFile (for anything secret) instead.',\n );\n",
25
- "/**\n * `Podman.Container` props, attributes and the `.container` file renderer — the pure half of the\n * family, mirroring unit-form.ts's split for Systemd.Unit.\n *\n * ★ WHY THE `[Container]` SECTION IS TYPED, UNLIKE `Systemd.Unit`'s SECTIONS. unit-form.ts renders\n * `[Unit]`/`[Service]`/`[Install]` verbatim because there is no machine-readable schema of\n * `systemd.unit(5)` to check a key against. Quadlet's `[Container]` section is different: it is\n * ONE vendor's documented, versioned surface — `podman-systemd.unit(5)`, Podman 5.4 (checked\n * against `containers/podman` tag `v5.4.0`,\n * `docs/source/markdown/podman-systemd.unit.5.md`, read 2026-09-24) — so every key below is\n * checked against that page, not invented. `[Unit]`/`[Service]`/`[Install]` stay close to\n * unit-form.ts's own verbatim-lines approach, because THOSE three sections are still systemd's\n * own directive set, which Quadlet passes straight through (same doc, \"All options and tables\n * available in standard systemd unit files are supported\").\n * ⛔ `[Container] Environment=` IS NEVER A SECRET — enforced in container-secrets.ts, called from\n * `containerProblems` below. A container that needs a secret takes `EnvironmentFile=` pointing at\n * a host path an out-of-band secret renderer (openbao-agent) maintains; this family never reads\n * or renders that file's contents.\n * ⛔ `[Install]` SUPPORTS ONLY `Alias=`/`WantedBy=`/`RequiredBy=` FOR A `.container` FILE (same doc,\n * \"Currently, only the Alias, WantedBy and RequiredBy keys are supported\") — NOT `Also=`, which\n * plain `systemd.unit(5)` allows and unit-form.ts's `INSTALL_KEYS` therefore lists. See\n * container-generator.ts's header for why there is no `enabled` prop at all.\n */\nimport { type UnitSection, configDigest, digestOf, renderUnit } from './unit-form.ts';\nimport { podmanArgsProblems, secretLikeEnvironment, secretLikeLines } from './container-secrets.ts';\n\n/** ★ Reused, not redefined: same digest and `restartOn`-join contract as Systemd.Unit. */\nexport { configDigest, digestOf };\n\nexport type UnitLine = readonly [key: string, value: string];\n\n/**\n * The `[Container]` keys this family supports — a deliberate SUBSET of the ~80 keys\n * `podman-systemd.unit(5)` documents (task scope: `Image`, `ContainerName`, `Network`, `Volume`,\n * `EnvironmentFile`, `Environment`, `PublishPort`, `Exec`, `User`, `AutoUpdate`, `PodmanArgs`).\n * Adding another key means adding a field here and checking it against the same doc — never a\n * free-text escape hatch, or `Environment=` secret-checking (below) could be bypassed through it.\n */\nexport type ContainerSection = {\n /** `Image=`. Required. \"recommended to use a fully qualified image name\" (doc). */\n readonly image: string;\n /** `ContainerName=`. @default quadlet's own `systemd-<name>` (doc) when omitted. */\n readonly containerName?: string;\n /** `Network=`. MUST support `'host'` — every container this rollout declares runs host netns. */\n readonly network?: string;\n /** `Volume=`, repeatable. */\n readonly volume?: readonly string[];\n /** `EnvironmentFile=`, repeatable. The ONLY way a secret reaches the container — see file header. */\n readonly environmentFile?: readonly string[];\n /** `Environment=`, repeatable `KEY=VALUE`. NEVER a secret — see container-secrets.ts. */\n readonly environment?: Readonly<Record<string, string>>;\n /** `PublishPort=`, repeatable. Refused together with `network: 'host'` — see `containerProblems`. */\n readonly publishPort?: readonly string[];\n /** `Exec=`. Appended after the image's entrypoint, \"the same way as ... a Kubernetes pod\" (doc). */\n readonly exec?: string;\n /** `User=`. The numeric UID inside the container (doc: \"does not need to match the UID on the host\"). */\n readonly user?: string;\n /** `AutoUpdate=`. Podman's own two values (doc): `'registry'` or `'local'`. */\n readonly autoUpdate?: 'registry' | 'local';\n /** `PodmanArgs=`, repeatable. Doc: \"not recommended\" — the generator does not understand it. */\n readonly podmanArgs?: readonly string[];\n};\n\nexport type ContainerProps = {\n /** The Quadlet file's basename, WITHOUT `.container`. Written as `<name>.container`. */\n name: string;\n /** @default QUADLET_DEFAULT_DIRECTORY. Must be one of QUADLET_SEARCH_DIRECTORIES (below). */\n directory?: string;\n /** `[Unit]` — `Description=`/`Documentation=` typed, everything else verbatim (see file header). */\n unit?: { description?: string; documentation?: string; lines?: readonly UnitLine[] };\n /** `[Container]` — Quadlet's own, typed and doc-checked. */\n container: ContainerSection;\n /** `[Service]` — `Restart=`/`RestartSec=` typed, everything else verbatim. */\n service?: { restart?: string; restartSec?: string; lines?: readonly UnitLine[] };\n /** `[Install]` — the three keys Quadlet honours for a `.container` file (see file header). */\n install?: {\n wantedBy?: readonly string[];\n requiredBy?: readonly string[];\n alias?: readonly string[];\n };\n /** `systemctl start`/`stop` the GENERATED `<name>.service`. @default true. No `enabled` prop —\n * see container-generator.ts's header for why boot-time enablement is not a systemctl call here. */\n started?: boolean;\n /** Same contract as Systemd.Unit's `restartOn`: digests of things read outside the `.container` file. */\n restartOn?: readonly string[];\n};\n\nexport type ContainerAttributes = {\n name: string;\n /** The GENERATED unit's name: `<name>.service`. Never `.container` — systemctl never sees that. */\n serviceName: string;\n containerPath: string;\n /** SHA-256 of the `.container` file this resource wrote. */\n containerSha256: string;\n configSha256: string;\n loadState: string;\n activeState: string;\n unitFileState?: string;\n /** `systemctl show`'s `SourcePath=` on the generated unit — measured on CT100 2026-09-24 to be\n * the `.container` file's own path; used to prove the generated unit is really ours. */\n sourcePath?: string;\n active: boolean;\n};\n\n/**\n * Podman's OWN rootful search path, most specific first — `podman-systemd.unit(5)`, \"Podman Unit\n * Search Path\", Podman 5.4, read 2026-09-24: \"Quadlet files for the root user can be placed in the\n * following directories ordered in precedence\" (`/run` over `/etc` over `/usr/share`).\n * ★ CT100's `caddy.container` lives in the middle one — measured live, `cat` over `ssh ct100`,\n * 2026-09-24: `/etc/containers/systemd/caddy.container`.\n * ⛔ A directory outside this list is invisible to Quadlet: the generator only reads these three, so\n * a file elsewhere is a `.container` file with no `.service` ever generated from it — silently,\n * unlike `Systemd.Unit`'s directory check, which at least writes a unit systemd could load if only\n * it were enabled. See `containerProblems`.\n */\nexport const QUADLET_SEARCH_DIRECTORIES = [\n '/run/containers/systemd',\n '/etc/containers/systemd',\n '/usr/share/containers/systemd',\n] as const;\n\nexport const QUADLET_DEFAULT_DIRECTORY = '/etc/containers/systemd';\n\n/** ★ A conservative subset of what Quadlet itself accepts as a unit name: no template `@`, no `/`. */\nexport const NAME = /^[A-Za-z0-9][A-Za-z0-9_.-]*$/;\n\nexport const containerPathFor = (props: Pick<ContainerProps, 'name' | 'directory'>): string =>\n `${props.directory ?? QUADLET_DEFAULT_DIRECTORY}/${props.name}.container`;\n\n/** The unit Quadlet generates FROM the `.container` file — systemctl only ever sees this name. */\nexport const serviceNameFor = (props: Pick<ContainerProps, 'name'>): string =>\n `${props.name}.service`;\n\nconst unitLines = (props: ContainerProps): UnitLine[] => [\n ...(props.unit?.description === undefined\n ? []\n : [['Description', props.unit.description] as UnitLine]),\n ...(props.unit?.documentation === undefined\n ? []\n : [['Documentation', props.unit.documentation] as UnitLine]),\n ...(props.unit?.lines ?? []),\n];\n\nconst containerLines = (c: ContainerSection): UnitLine[] => [\n ['Image', c.image],\n ...(c.containerName === undefined ? [] : [['ContainerName', c.containerName] as UnitLine]),\n ...(c.network === undefined ? [] : [['Network', c.network] as UnitLine]),\n ...(c.user === undefined ? [] : [['User', c.user] as UnitLine]),\n ...(c.exec === undefined ? [] : [['Exec', c.exec] as UnitLine]),\n ...(c.autoUpdate === undefined ? [] : [['AutoUpdate', c.autoUpdate] as UnitLine]),\n ...(c.environmentFile ?? []).map((file): UnitLine => ['EnvironmentFile', file]),\n // ★ Sorted by key: a stable render for a plain object whose own key order JS does not promise.\n ...Object.keys(c.environment ?? {})\n .sort()\n .map((key): UnitLine => [\n 'Environment',\n `${key}=${(c.environment as Record<string, string>)[key]}`,\n ]),\n ...(c.volume ?? []).map((volume): UnitLine => ['Volume', volume]),\n ...(c.publishPort ?? []).map((port): UnitLine => ['PublishPort', port]),\n ...(c.podmanArgs ?? []).map((arg): UnitLine => ['PodmanArgs', arg]),\n];\n\nconst serviceLines = (props: ContainerProps): UnitLine[] => [\n ...(props.service?.restart === undefined ? [] : [['Restart', props.service.restart] as UnitLine]),\n ...(props.service?.restartSec === undefined\n ? []\n : [['RestartSec', props.service.restartSec] as UnitLine]),\n ...(props.service?.lines ?? []),\n];\n\nconst installLines = (props: ContainerProps): UnitLine[] => [\n ...(props.install?.wantedBy ?? []).map((target): UnitLine => ['WantedBy', target]),\n ...(props.install?.requiredBy ?? []).map((target): UnitLine => ['RequiredBy', target]),\n ...(props.install?.alias ?? []).map((name): UnitLine => ['Alias', name]),\n];\n\n/** The whole `.container` file. ★ Reuses unit-form.ts's `renderUnit` — same `[Section]` INI shape. */\nexport const renderContainerFile = (props: ContainerProps): string => {\n const sections: UnitSection[] = [\n { name: 'Unit', lines: unitLines(props) },\n { name: 'Container', lines: containerLines(props.container) },\n { name: 'Service', lines: serviceLines(props) },\n { name: 'Install', lines: installLines(props) },\n ];\n return renderUnit(sections.filter((section) => section.lines.length > 0));\n};\n\nexport const refuseContainer = (name: string, message: string): Error =>\n new Error(`Podman.Container ${name}: ${message}`);\n\n/** Every refusal at once, so one plan shows the whole list — mirrors `unitProblems`'s shape. */\nexport const containerProblems = (props: ContainerProps): string[] => {\n const found: string[] = [];\n if (!NAME.test(props.name)) {\n found.push(\n `name must match ${String(NAME)}, with no '.container' suffix; got ${JSON.stringify(props.name)}`,\n );\n }\n const directory = props.directory ?? QUADLET_DEFAULT_DIRECTORY;\n if (!directory.startsWith('/') || directory.endsWith('/') || directory.includes('/..')) {\n found.push('directory must be an absolute, normalised path with no trailing slash');\n } else if (\n !QUADLET_SEARCH_DIRECTORIES.includes(directory as (typeof QUADLET_SEARCH_DIRECTORIES)[number])\n ) {\n found.push(\n `directory must be one of Quadlet's own rootful search path (${QUADLET_SEARCH_DIRECTORIES.join(', ')}); ` +\n `${directory} is never read by the generator (podman-systemd.unit(5), Podman 5.4).`,\n );\n }\n if (props.container.image.trim() === '') found.push('container.image is required');\n if (props.container.network === 'host' && (props.container.publishPort?.length ?? 0) > 0) {\n found.push(\n \"container.publishPort has no effect with container.network 'host': the container already \" +\n 'binds the host’s ports directly. Drop publishPort, or use a different network.',\n );\n }\n found.push(\n ...secretLikeEnvironment(props.container.environment ?? {}).map(\n (problem) => `container.${problem}`,\n ),\n );\n found.push(\n ...podmanArgsProblems(props.container.podmanArgs ?? []).map(\n (problem) => `container.${problem}`,\n ),\n );\n // ★ Every OTHER rendered line — `Exec=`/`PodmanArgs=` and the `unit`/`service`/`install` escape\n // hatches — checked too, so a secret cannot reach the file through a field this typed check does\n // not otherwise inspect. `container.environment`'s OWN lines are excluded: `secretLikeEnvironment`\n // above already checked them, with a better error message (the actual env var name).\n found.push(\n ...secretLikeLines([\n ...unitLines(props),\n ...containerLines(props.container).filter(([key]) => key !== 'Environment'),\n ...serviceLines(props),\n ...installLines(props),\n ]),\n );\n if (renderContainerFile(props).includes('\\u0000'))\n found.push('the rendered .container file contains NUL');\n return found;\n};\n",
26
- "/**\n * Everything `Podman.Container` checks before it touches the host — split from\n * container-lifecycle.ts so a reconcile and a plan-time REPLACE run the very same checks, exactly\n * the reason unit-preflight.ts exists (see that file's header; this mirrors it).\n *\n * ★ EVERY CHECK HERE IS READ-ONLY: validation, `systemctl show`, a file read and\n * `HostRunner.checkWrite`. Nothing here writes, reloads or drives Podman.\n */\nimport { type HostRunner, canActAsRoot } from '../launchd/runner.ts';\nimport { UNIT_WRITE, digestOf } from './unit-form.ts';\nimport { type UnitStatus, showUnit } from './systemctl.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n containerPathFor,\n containerProblems,\n refuseContainer,\n renderContainerFile,\n serviceNameFor,\n} from './container-form.ts';\n\nconst decoder = new TextDecoder();\n\n/** Throw every refusal at once, so one plan shows the whole list. */\nexport const assertValid = (props: ContainerProps): void => {\n const found = containerProblems(props);\n if (found.length > 0) throw refuseContainer(props.name, found.join('; '));\n};\n\n/** ⛔ Writing the file and driving systemctl/Podman are root's — refuse up front, not mid-apply. */\nexport const assertMayWrite = (runner: HostRunner, name: string): void => {\n if (canActAsRoot(runner)) return;\n throw refuseContainer(\n name,\n 'a Quadlet .container file is root-owned and daemon-reload/systemctl need root. Point the ' +\n 'runner at a destination whose ssh user is root, or provide a privileged HostRunner. This ' +\n 'provider never calls sudo.',\n );\n};\n\n/**\n * ⛔ A MASKED GENERATED UNIT IS SOMEONE'S DECISION, NOT DRIFT — same rule as `Systemd.Unit`\n * (unit-preflight.ts `assertUsable`). Masking a generated unit is done the ordinary way, by\n * symlinking its name to `/dev/null` in a directory Quadlet's generator output does not win\n * against (`/etc/systemd/system` outranks `/run/systemd/generator`); unmasking here would\n * silently overrule that.\n */\nexport const assertUsable = (props: Pick<ContainerProps, 'name'>, status: UnitStatus): void => {\n if (status.loadState === 'masked' || status.unitFileState === 'masked') {\n throw refuseContainer(\n props.name,\n `${serviceNameFor(props)} is masked. If that is stale, \\`systemctl unmask\\` it deliberately, ` +\n 'then redeploy. Nothing was written.',\n );\n }\n};\n\n/**\n * ⛔ A `.container` FILE THIS RESOURCE DOES NOT OWN IS NEVER OVERWRITTEN — same rule and same\n * exemption as `unit-preflight.ts`'s `assertUnclaimed`: a file byte-identical to our render is\n * this declaration's own leftover, not someone else's.\n */\nexport const assertUnclaimed = async (runner: HostRunner, props: ContainerProps): Promise<void> => {\n const path = containerPathFor(props);\n const bytes = await runner.readFile(path);\n const live = bytes === undefined ? undefined : digestOf(decoder.decode(bytes));\n if (live !== undefined && live !== digestOf(renderContainerFile(props))) {\n throw refuseContainer(\n props.name,\n `${path} is already on this host and is not this resource. Remove it, or declare it as a ` +\n 'new resource and deploy with --adopt.',\n );\n }\n};\n\n/** The half of a rename check that needs only the NEW NAME — mirrors `assertRenameTarget`. */\nexport const assertRenameTarget = async (\n runner: HostRunner,\n old: ContainerAttributes,\n name: string,\n): Promise<void> => {\n assertMayWrite(runner, old.name);\n assertMayWrite(runner, name);\n assertUsable({ name }, await showUnit(runner, serviceNameFor({ name })));\n};\n\n/** A rename, checked at plan time, before the plan may promise a delete-first replace. */\nexport const assertReplaceable = async (\n runner: HostRunner,\n next: ContainerProps,\n old: ContainerAttributes,\n): Promise<void> => {\n assertValid(next);\n await assertRenameTarget(runner, old, next.name);\n await assertUnclaimed(runner, next);\n await runner.checkWrite?.(containerPathFor(next), UNIT_WRITE);\n};\n",
27
- "/**\n * The step that decides whether the GENERATED `<name>.service` actually moves: running state and —\n * only for a real change — a restart. Split out for the same reason unit-settle.ts is split from\n * unit-lifecycle.ts: it is the restart contract, and it should be readable on its own.\n *\n * ⛔ THE RESTART CONDITION IS THE WHOLE CONTRACT, same as `Systemd.Unit`'s (unit-settle.ts):\n * `changed` comes from the caller (container-lifecycle.ts `reconcileContainer`), `configChanged`\n * is a digest the DECLARATION itself listed. Nothing else restarts a container.\n * ★ NO ENABLE/DISABLE HERE — the one place this file is SHORTER than unit-settle.ts, not longer.\n * Quadlet's generator applies `[Install]` itself on every `daemon-reload` (container-generator.ts\n * header); calling `systemctl enable`/`disable` on a generated unit does not work at all (same\n * header, doc-cited). So there is no enablement branch to settle — only started/stopped and the\n * restart-on-change rule.\n */\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { isUnitRunning } from './unit-form.ts';\nimport {\n type UnitStatus,\n daemonReload,\n restartUnit,\n showUnit,\n startUnit,\n stopUnit,\n} from './systemctl.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n refuseContainer,\n} from './container-form.ts';\n\nexport const attributesOf = (\n props: ContainerProps,\n configSha256: string,\n containerSha256: string,\n containerPath: string,\n serviceName: string,\n status: UnitStatus,\n): ContainerAttributes => ({\n active: status.activeState === 'active' || status.activeState === 'activating',\n activeState: status.activeState,\n configSha256,\n containerPath,\n containerSha256,\n loadState: status.loadState,\n name: props.name,\n serviceName,\n ...(status.unitFileState === undefined ? {} : { unitFileState: status.unitFileState }),\n ...(status.sourcePath === undefined ? {} : { sourcePath: status.sourcePath }),\n});\n\nexport type Settle = {\n readonly before: Uint8Array | undefined;\n /** The `.container` file or systemd's view of it changed in a way that earns a restart. */\n readonly changed: boolean;\n readonly configChanged: boolean;\n readonly desired: string;\n readonly path: string;\n readonly serviceName: string;\n readonly status: UnitStatus;\n};\n\n/**\n * Bring running state to the declaration, restarting ONLY for a real change. No enable/disable —\n * see file header.\n */\nexport const settle = async (\n runner: HostRunner,\n props: ContainerProps,\n configSha256: string,\n step: Settle,\n): Promise<ContainerAttributes> => {\n const wantStarted = props.started !== false;\n const running = isUnitRunning(step.status.activeState, step.status.subState, wantStarted);\n const undo = async (detail: string): Promise<never> => {\n // ⚠️ A create that never came up leaves nothing behind; an update keeps the new file — the\n // generator-verification step already ran (container-lifecycle.ts) by the time settle is\n // called, so the unit DOES exist here; only the start/restart itself failed.\n if (step.before === undefined) {\n await runner.removeFile(step.path).catch(() => undefined);\n await daemonReload(runner).catch(() => undefined);\n }\n throw refuseContainer(props.name, `${detail} The container's unit is NOT running.`);\n };\n try {\n if (!wantStarted) {\n if (running) await stopUnit(runner, step.serviceName);\n } else if (!running) await startUnit(runner, step.serviceName);\n else if (step.changed || step.configChanged) await restartUnit(runner, step.serviceName);\n } catch (cause) {\n return undo(cause instanceof Error ? cause.message : String(cause));\n }\n const after = await showUnit(runner, step.serviceName);\n if (wantStarted && !isUnitRunning(after.activeState, after.subState, wantStarted)) {\n return undo(`systemctl reported success but the unit is ${after.activeState}.`);\n }\n return attributesOf(props, configSha256, step.desired, step.path, step.serviceName, after);\n};\n",
28
- "/**\n * `Podman.Container`'s read / diff / reconcile / delete as plain async functions over a\n * HostRunner — same split as `unit-lifecycle.ts`, so the whole lifecycle runs against a fake host\n * (fake-quadlet.ts) with no real systemd or Podman.\n *\n * ⛔ WHAT A DEPLOY DOES NOT DO — same rule `Systemd.Unit` was built around (unit-lifecycle.ts\n * header): it NEVER mass-restarts. A container is restarted only when THIS resource's rendered\n * `.container` file changed, or a digest the declaration listed in `restartOn` changed.\n * ★ THE ORDER IS WRITE, RELOAD, VERIFY THE GENERATOR, THEN START OR RESTART. `daemon-reload` is\n * where Quadlet turns the `.container` file into `<name>.service` (container-generator.ts) —\n * writing it changes nothing on its own, and a write that fails leaves the old file (and its\n * already-generated unit) exactly as they were.\n * ⛔ A GENERATOR FAILURE IS ROLLED BACK, NOT LEFT FOR THE NEXT DEPLOY. `container-generator.ts`'s\n * header explains why: `daemon-reload` deletes ALL generator output before regenerating, so a\n * `.container` file the generator refuses has NO generated unit at all, even if the file it\n * replaced generated one fine. An UPDATE that fails verification restores the previous file and\n * reloads again, so the container this resource already promised running never loses its unit; a\n * CREATE that fails removes the file it wrote, same as `Systemd.Unit`'s undo.\n * ⛔ NO ENABLE/DISABLE — see container-generator.ts and container-settle.ts headers.\n */\nimport type { Diff } from 'alchemy/Diff';\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { UNIT_WRITE, isUnitRunning } from './unit-form.ts';\nimport { daemonReload, showUnit, stopUnit } from './systemctl.ts';\nimport { needsVerificationReload, verifyGenerated } from './container-generator.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n configDigest,\n containerPathFor,\n digestOf,\n refuseContainer,\n renderContainerFile,\n serviceNameFor,\n} from './container-form.ts';\nimport {\n assertMayWrite,\n assertReplaceable,\n assertUsable,\n assertValid,\n} from './container-preflight.ts';\nimport { attributesOf, settle } from './container-settle.ts';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\n/** What is on the host now: the `.container` file's digest and the GENERATED unit's status. */\nexport const readContainer = async (\n runner: HostRunner,\n props: ContainerProps,\n): Promise<ContainerAttributes | undefined> => {\n const path = containerPathFor(props);\n const bytes = await runner.readFile(path);\n const status = await showUnit(runner, serviceNameFor(props));\n if (bytes === undefined && !status.known) return undefined;\n const sha = bytes === undefined ? '' : digestOf(decoder.decode(bytes));\n return attributesOf(\n props,\n configDigest(props.restartOn),\n sha,\n path,\n serviceNameFor(props),\n status,\n );\n};\n\nexport const diffContainer = async (\n runner: HostRunner,\n news: ContainerProps,\n output: ContainerAttributes,\n): Promise<Diff> => {\n assertValid(news);\n // ★ The name or directory is the `.container` file's identity: a change is delete-first, same\n // reason as `Systemd.Unit` (unit-lifecycle.ts diffUnit) — two files for one name can never\n // both be the one Quadlet reads, and here also never both generate the same `.service`.\n if (news.name !== output.name || containerPathFor(news) !== output.containerPath) {\n await assertReplaceable(runner, news, output);\n return { action: 'replace', deleteFirst: true };\n }\n const desired = digestOf(renderContainerFile(news));\n const update = async (): Promise<Diff> => {\n assertMayWrite(runner, news.name);\n await runner.checkWrite?.(containerPathFor(news), UNIT_WRITE);\n return { action: 'update' };\n };\n if (desired !== output.containerSha256) return update();\n if (configDigest(news.restartOn) !== output.configSha256) return update();\n const live = await readContainer(runner, news);\n if (live === undefined || live.containerSha256 !== desired) return update();\n const status = await showUnit(runner, serviceNameFor(news));\n const wantStarted = news.started !== false;\n if (isUnitRunning(status.activeState, status.subState, wantStarted) !== wantStarted)\n return update();\n return status.needDaemonReload ? update() : { action: 'noop' };\n};\n\n/**\n * `adopt` is whether adoption is on AND this apply is a create or an unfinished generation of our\n * own — same meaning as `Systemd.Unit`'s (unit-lifecycle.ts reconcileUnit).\n */\nexport const reconcileContainer = async (\n runner: HostRunner,\n props: ContainerProps,\n output: ContainerAttributes | undefined,\n adopt = false,\n): Promise<ContainerAttributes> => {\n assertValid(props);\n assertMayWrite(runner, props.name);\n const path = containerPathFor(props);\n const serviceName = serviceNameFor(props);\n const text = renderContainerFile(props);\n const desired = digestOf(text);\n const before = await runner.readFile(path);\n const liveSha = before === undefined ? undefined : digestOf(decoder.decode(before));\n const moved =\n output !== undefined && (output.name !== props.name || output.containerPath !== path);\n if (moved && output !== undefined) await assertReplaceable(runner, props, output);\n const prior = moved ? undefined : output;\n if (\n prior === undefined &&\n !(adopt && output === undefined) &&\n liveSha !== undefined &&\n liveSha !== desired\n ) {\n throw refuseContainer(\n props.name,\n `${path} is already on this host and is not this resource. Remove it, or declare it as a ` +\n 'new resource and deploy with --adopt.',\n );\n }\n if (moved && output !== undefined) await deleteContainer(runner, output);\n const wrote = liveSha !== desired;\n /**\n * ⛔ MUST GATE THE RELOAD, NOT ONLY THE RESTART — found on adversarial review. `wrote` and\n * `preStatus.needDaemonReload` both describe the GENERATED `<name>.service`'s own staleness;\n * neither can see that the SOURCE `.container` file was written by an apply that then crashed\n * (ssh drop, reboot) before its `daemon-reload` ran. On the retry: the file already holds\n * `desired` (`wrote` is false), and systemd's own flag is unset because the generated unit —\n * still built from the OLD content — hasn't changed either. Without `stale` here, no reload\n * happens, `verifyGenerated` passes against that stale generation, and `settle` (below) would\n * restart the container onto its OLD definition while returning `containerSha256: desired` —\n * state then claims the new declaration took effect, permanently and silently, since every\n * later diff compares state to itself. `stale` is exactly \"the file's content no longer matches\n * what THIS resource last recorded as generated\", which is the one signal that catches it.\n * Test: container-generator.test.ts, \"an interrupted apply that crashed before daemon-reload\".\n */\n const stale = prior !== undefined && prior.containerSha256 !== desired;\n const preStatus = await showUnit(runner, serviceName);\n assertUsable(props, preStatus);\n /**\n * ⛔ `prior === undefined` (a create, or an adopt) AND `needsVerificationReload` — found on\n * adversarial review, the same bug class as `stale` above but for a resource with no prior\n * state at all. An INTERRUPTED CREATE (the write landed, the apply crashed before its\n * `daemon-reload` ran) retries with `wrote: false` (the file already holds `desired`) and\n * `stale: false` (there is no PRIOR state to disagree with) — without this, nothing ever\n * reloaded and `verifyGenerated` threw on the still-missing generated unit FOREVER: loud, but\n * stuck, since a plain retry changes nothing about that. `needsVerificationReload`\n * (container-generator.ts) shares its predicate with `verifyGenerated` itself, so the two can\n * never disagree about what counts as already proven. Cost: one extra, idempotent reload on an\n * ordinary adoption whose generation was already fine — `daemon-reload` restarts nothing, so\n * the never-mass-restart property (`changed`, below) is untouched.\n * Test: container-generator.test.ts, \"an interrupted CREATE that crashed before daemon-reload\".\n */\n const needsReload =\n wrote ||\n stale ||\n preStatus.needDaemonReload ||\n (prior === undefined && needsVerificationReload(path, preStatus));\n if (wrote) await runner.writeFileAtomic(path, encoder.encode(text), UNIT_WRITE);\n if (needsReload) await daemonReload(runner);\n const status = needsReload ? await showUnit(runner, serviceName) : preStatus;\n try {\n verifyGenerated(props.name, path, serviceName, status);\n } catch (cause) {\n // ⛔ Only a WRITE this reconcile made is worth rolling back — see file header. A file already\n // on disk before this reconcile ran (wrote === false) generated nothing NEW to restore to.\n if (wrote) {\n if (before === undefined) await runner.removeFile(path).catch(() => undefined);\n else await runner.writeFileAtomic(path, before, UNIT_WRITE).catch(() => undefined);\n await daemonReload(runner).catch(() => undefined);\n }\n throw cause;\n }\n const configChanged = prior !== undefined && prior.configSha256 !== configDigest(props.restartOn);\n const changed = wrote || stale || preStatus.needDaemonReload;\n return settle(runner, props, configDigest(props.restartOn), {\n before,\n changed,\n configChanged,\n desired,\n path,\n serviceName,\n status,\n });\n};\n\n/**\n * Stop, remove the `.container` file, reload — clearing the orphaned generated unit. Idempotent.\n * No `disableUnit`: never enabled through systemctl in the first place (container-settle.ts).\n */\nexport const deleteContainer = async (\n runner: HostRunner,\n output: ContainerAttributes,\n): Promise<void> => {\n assertMayWrite(runner, output.name);\n const status = await showUnit(runner, output.serviceName);\n if (status.activeState === 'active' || status.activeState === 'activating') {\n await stopUnit(runner, output.serviceName);\n }\n const stat = await runner.stat(output.containerPath);\n if (stat !== undefined) {\n if (stat.kind !== 'file')\n throw refuseContainer(output.name, `${output.containerPath} is a ${stat.kind}`);\n await runner.removeFile(output.containerPath);\n }\n await daemonReload(runner);\n};\n",
26
+ "/**\n * `Podman.Container` props, attributes and the `.container` file renderer — the pure half of the\n * family, mirroring unit-form.ts's split for Systemd.Unit.\n *\n * ★ WHY THE `[Container]` SECTION IS TYPED, UNLIKE `Systemd.Unit`'s SECTIONS. unit-form.ts renders\n * `[Unit]`/`[Service]`/`[Install]` verbatim because there is no machine-readable schema of\n * `systemd.unit(5)` to check a key against. Quadlet's `[Container]` section is different: it is\n * ONE vendor's documented, versioned surface — `podman-systemd.unit(5)`, Podman 5.4 (checked\n * against `containers/podman` tag `v5.4.0`,\n * `docs/source/markdown/podman-systemd.unit.5.md`, read 2026-09-24) — so every key below is\n * checked against that page, not invented. `[Unit]`/`[Service]`/`[Install]` stay close to\n * unit-form.ts's own verbatim-lines approach, because THOSE three sections are still systemd's\n * own directive set, which Quadlet passes straight through (same doc, \"All options and tables\n * available in standard systemd unit files are supported\").\n * ⛔ `[Container] Environment=` IS NEVER A SECRET — enforced in container-secrets.ts, called from\n * `containerProblems` below. A container that needs a secret takes `EnvironmentFile=` pointing at\n * a host path an out-of-band secret renderer (openbao-agent) maintains; this family never reads\n * or renders that file's contents.\n * ⛔ `[Install]` SUPPORTS ONLY `Alias=`/`WantedBy=`/`RequiredBy=` FOR A `.container` FILE (same doc,\n * \"Currently, only the Alias, WantedBy and RequiredBy keys are supported\") — NOT `Also=`, which\n * plain `systemd.unit(5)` allows and unit-text.ts's `INSTALL_KEYS` therefore lists. See\n * container-generator.ts's header for why there is no `enabled` prop at all.\n */\nimport { type UnitSection, configDigest, digestOf, renderUnit } from './unit-form.ts';\nimport { podmanArgsProblems, secretLikeEnvironment, secretLikeLines } from './container-secrets.ts';\n\n/** ★ Reused, not redefined: same digest and `restartOn`-join contract as Systemd.Unit. */\nexport { configDigest, digestOf };\n\nexport type UnitLine = readonly [key: string, value: string];\n\n/**\n * The `[Container]` keys this family supports — a deliberate SUBSET of the ~80 keys\n * `podman-systemd.unit(5)` documents (task scope: `Image`, `ContainerName`, `Network`, `Volume`,\n * `EnvironmentFile`, `Environment`, `PublishPort`, `Exec`, `User`, `AutoUpdate`, `PodmanArgs`).\n * Adding another key means adding a field here and checking it against the same doc — never a\n * free-text escape hatch, or `Environment=` secret-checking (below) could be bypassed through it.\n */\nexport type ContainerSection = {\n /** `Image=`. Required. \"recommended to use a fully qualified image name\" (doc). */\n readonly image: string;\n /** `ContainerName=`. @default quadlet's own `systemd-<name>` (doc) when omitted. */\n readonly containerName?: string;\n /** `Network=`. MUST support `'host'` — every container this rollout declares runs host netns. */\n readonly network?: string;\n /** `Volume=`, repeatable. */\n readonly volume?: readonly string[];\n /** `EnvironmentFile=`, repeatable. The ONLY way a secret reaches the container — see file header. */\n readonly environmentFile?: readonly string[];\n /** `Environment=`, repeatable `KEY=VALUE`. NEVER a secret — see container-secrets.ts. */\n readonly environment?: Readonly<Record<string, string>>;\n /** `PublishPort=`, repeatable. Refused together with `network: 'host'` — see `containerProblems`. */\n readonly publishPort?: readonly string[];\n /** `Exec=`. Appended after the image's entrypoint, \"the same way as ... a Kubernetes pod\" (doc). */\n readonly exec?: string;\n /** `User=`. The numeric UID inside the container (doc: \"does not need to match the UID on the host\"). */\n readonly user?: string;\n /** `AutoUpdate=`. Podman's own two values (doc): `'registry'` or `'local'`. */\n readonly autoUpdate?: 'registry' | 'local';\n /** `PodmanArgs=`, repeatable. Doc: \"not recommended\" — the generator does not understand it. */\n readonly podmanArgs?: readonly string[];\n};\n\nexport type ContainerProps = {\n /** The Quadlet file's basename, WITHOUT `.container`. Written as `<name>.container`. */\n name: string;\n /** @default QUADLET_DEFAULT_DIRECTORY. Must be one of QUADLET_SEARCH_DIRECTORIES (below). */\n directory?: string;\n /** `[Unit]` — `Description=`/`Documentation=` typed, everything else verbatim (see file header). */\n unit?: { description?: string; documentation?: string; lines?: readonly UnitLine[] };\n /** `[Container]` — Quadlet's own, typed and doc-checked. */\n container: ContainerSection;\n /** `[Service]` — `Restart=`/`RestartSec=` typed, everything else verbatim. */\n service?: { restart?: string; restartSec?: string; lines?: readonly UnitLine[] };\n /** `[Install]` — the three keys Quadlet honours for a `.container` file (see file header). */\n install?: {\n wantedBy?: readonly string[];\n requiredBy?: readonly string[];\n alias?: readonly string[];\n };\n /** `systemctl start`/`stop` the GENERATED `<name>.service`. @default true. No `enabled` prop —\n * see container-generator.ts's header for why boot-time enablement is not a systemctl call here. */\n started?: boolean;\n /** Same contract as Systemd.Unit's `restartOn`: digests of things read outside the `.container` file. */\n restartOn?: readonly string[];\n};\n\nexport type ContainerAttributes = {\n name: string;\n /** The GENERATED unit's name: `<name>.service`. Never `.container` — systemctl never sees that. */\n serviceName: string;\n containerPath: string;\n /** SHA-256 of the `.container` file this resource wrote. */\n containerSha256: string;\n configSha256: string;\n loadState: string;\n activeState: string;\n unitFileState?: string;\n /** `systemctl show`'s `SourcePath=` on the generated unit — measured on CT100 2026-09-24 to be\n * the `.container` file's own path; used to prove the generated unit is really ours. */\n sourcePath?: string;\n active: boolean;\n};\n\n/**\n * Podman's OWN rootful search path, most specific first — `podman-systemd.unit(5)`, \"Podman Unit\n * Search Path\", Podman 5.4, read 2026-09-24: \"Quadlet files for the root user can be placed in the\n * following directories ordered in precedence\" (`/run` over `/etc` over `/usr/share`).\n * ★ CT100's `caddy.container` lives in the middle one — measured live, `cat` over `ssh ct100`,\n * 2026-09-24: `/etc/containers/systemd/caddy.container`.\n * ⛔ A directory outside this list is invisible to Quadlet: the generator only reads these three, so\n * a file elsewhere is a `.container` file with no `.service` ever generated from it — silently,\n * unlike `Systemd.Unit`'s directory check, which at least writes a unit systemd could load if only\n * it were enabled. See `containerProblems`.\n */\nexport const QUADLET_SEARCH_DIRECTORIES = [\n '/run/containers/systemd',\n '/etc/containers/systemd',\n '/usr/share/containers/systemd',\n] as const;\n\nexport const QUADLET_DEFAULT_DIRECTORY = '/etc/containers/systemd';\n\n/** ★ A conservative subset of what Quadlet itself accepts as a unit name: no template `@`, no `/`. */\nexport const NAME = /^[A-Za-z0-9][A-Za-z0-9_.-]*$/;\n\nexport const containerPathFor = (props: Pick<ContainerProps, 'name' | 'directory'>): string =>\n `${props.directory ?? QUADLET_DEFAULT_DIRECTORY}/${props.name}.container`;\n\n/** The unit Quadlet generates FROM the `.container` file — systemctl only ever sees this name. */\nexport const serviceNameFor = (props: Pick<ContainerProps, 'name'>): string =>\n `${props.name}.service`;\n\nconst unitLines = (props: ContainerProps): UnitLine[] => [\n ...(props.unit?.description === undefined\n ? []\n : [['Description', props.unit.description] as UnitLine]),\n ...(props.unit?.documentation === undefined\n ? []\n : [['Documentation', props.unit.documentation] as UnitLine]),\n ...(props.unit?.lines ?? []),\n];\n\nconst containerLines = (c: ContainerSection): UnitLine[] => [\n ['Image', c.image],\n ...(c.containerName === undefined ? [] : [['ContainerName', c.containerName] as UnitLine]),\n ...(c.network === undefined ? [] : [['Network', c.network] as UnitLine]),\n ...(c.user === undefined ? [] : [['User', c.user] as UnitLine]),\n ...(c.exec === undefined ? [] : [['Exec', c.exec] as UnitLine]),\n ...(c.autoUpdate === undefined ? [] : [['AutoUpdate', c.autoUpdate] as UnitLine]),\n ...(c.environmentFile ?? []).map((file): UnitLine => ['EnvironmentFile', file]),\n // ★ Sorted by key: a stable render for a plain object whose own key order JS does not promise.\n ...Object.keys(c.environment ?? {})\n .sort()\n .map((key): UnitLine => [\n 'Environment',\n `${key}=${(c.environment as Record<string, string>)[key]}`,\n ]),\n ...(c.volume ?? []).map((volume): UnitLine => ['Volume', volume]),\n ...(c.publishPort ?? []).map((port): UnitLine => ['PublishPort', port]),\n ...(c.podmanArgs ?? []).map((arg): UnitLine => ['PodmanArgs', arg]),\n];\n\nconst serviceLines = (props: ContainerProps): UnitLine[] => [\n ...(props.service?.restart === undefined ? [] : [['Restart', props.service.restart] as UnitLine]),\n ...(props.service?.restartSec === undefined\n ? []\n : [['RestartSec', props.service.restartSec] as UnitLine]),\n ...(props.service?.lines ?? []),\n];\n\nconst installLines = (props: ContainerProps): UnitLine[] => [\n ...(props.install?.wantedBy ?? []).map((target): UnitLine => ['WantedBy', target]),\n ...(props.install?.requiredBy ?? []).map((target): UnitLine => ['RequiredBy', target]),\n ...(props.install?.alias ?? []).map((name): UnitLine => ['Alias', name]),\n];\n\n/** The whole `.container` file. ★ Reuses unit-form.ts's `renderUnit` — same `[Section]` INI shape. */\nexport const renderContainerFile = (props: ContainerProps): string => {\n const sections: UnitSection[] = [\n { name: 'Unit', lines: unitLines(props) },\n { name: 'Container', lines: containerLines(props.container) },\n { name: 'Service', lines: serviceLines(props) },\n { name: 'Install', lines: installLines(props) },\n ];\n return renderUnit(sections.filter((section) => section.lines.length > 0));\n};\n\nexport const refuseContainer = (name: string, message: string): Error =>\n new Error(`Podman.Container ${name}: ${message}`);\n\n/** Every refusal at once, so one plan shows the whole list — mirrors `unitProblems`'s shape. */\nexport const containerProblems = (props: ContainerProps): string[] => {\n const found: string[] = [];\n if (!NAME.test(props.name)) {\n found.push(\n `name must match ${String(NAME)}, with no '.container' suffix; got ${JSON.stringify(props.name)}`,\n );\n }\n const directory = props.directory ?? QUADLET_DEFAULT_DIRECTORY;\n if (!directory.startsWith('/') || directory.endsWith('/') || directory.includes('/..')) {\n found.push('directory must be an absolute, normalised path with no trailing slash');\n } else if (\n !QUADLET_SEARCH_DIRECTORIES.includes(directory as (typeof QUADLET_SEARCH_DIRECTORIES)[number])\n ) {\n found.push(\n `directory must be one of Quadlet's own rootful search path (${QUADLET_SEARCH_DIRECTORIES.join(', ')}); ` +\n `${directory} is never read by the generator (podman-systemd.unit(5), Podman 5.4).`,\n );\n }\n if (props.container.image.trim() === '') found.push('container.image is required');\n if (props.container.network === 'host' && (props.container.publishPort?.length ?? 0) > 0) {\n found.push(\n \"container.publishPort has no effect with container.network 'host': the container already \" +\n 'binds the host’s ports directly. Drop publishPort, or use a different network.',\n );\n }\n found.push(\n ...secretLikeEnvironment(props.container.environment ?? {}).map(\n (problem) => `container.${problem}`,\n ),\n );\n found.push(\n ...podmanArgsProblems(props.container.podmanArgs ?? []).map(\n (problem) => `container.${problem}`,\n ),\n );\n // ★ Every OTHER rendered line — `Exec=`/`PodmanArgs=` and the `unit`/`service`/`install` escape\n // hatches — checked too, so a secret cannot reach the file through a field this typed check does\n // not otherwise inspect. `container.environment`'s OWN lines are excluded: `secretLikeEnvironment`\n // above already checked them, with a better error message (the actual env var name).\n found.push(\n ...secretLikeLines([\n ...unitLines(props),\n ...containerLines(props.container).filter(([key]) => key !== 'Environment'),\n ...serviceLines(props),\n ...installLines(props),\n ]),\n );\n if (renderContainerFile(props).includes('\\u0000'))\n found.push('the rendered .container file contains NUL');\n return found;\n};\n",
27
+ "/**\n * Everything `Podman.Container` checks before it touches the host — split from\n * container-lifecycle.ts so a reconcile and a plan-time REPLACE run the very same checks, exactly\n * the reason unit-preflight.ts exists (see that file's header; this mirrors it).\n *\n * ★ EVERY CHECK HERE IS READ-ONLY: validation, `systemctl show`, a file read and\n * `HostRunner.checkWrite`. Nothing here writes, reloads or drives Podman.\n */\nimport { type HostRunner, canActAsRoot } from '../launchd/runner.ts';\nimport { UNIT_WRITE, digestOf } from './unit-form.ts';\nimport { type UnitStatus, showUnit } from './systemctl.ts';\nimport { GENERATED_UNIT_DIRECTORY, isShadowingFragment } from './container-generator.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n containerPathFor,\n containerProblems,\n refuseContainer,\n renderContainerFile,\n serviceNameFor,\n} from './container-form.ts';\n\nconst decoder = new TextDecoder();\n\n/** Throw every refusal at once, so one plan shows the whole list. */\nexport const assertValid = (props: ContainerProps): void => {\n const found = containerProblems(props);\n if (found.length > 0) throw refuseContainer(props.name, found.join('; '));\n};\n\n/** ⛔ Writing the file and driving systemctl/Podman are root's — refuse up front, not mid-apply. */\nexport const assertMayWrite = (runner: HostRunner, name: string): void => {\n if (canActAsRoot(runner)) return;\n throw refuseContainer(\n name,\n 'a Quadlet .container file is root-owned and daemon-reload/systemctl need root. Point the ' +\n 'runner at a destination whose ssh user is root, or provide a privileged HostRunner. This ' +\n 'provider never calls sudo.',\n );\n};\n\n/**\n * ⛔ A MASKED GENERATED UNIT IS SOMEONE'S DECISION, NOT DRIFT — same rule as `Systemd.Unit`\n * (unit-preflight.ts `assertUsable`). Masking a generated unit is done the ordinary way, by\n * symlinking its name to `/dev/null` in a directory Quadlet's generator output does not win\n * against (`/etc/systemd/system` outranks `/run/systemd/generator`); unmasking here would\n * silently overrule that.\n */\nexport const assertUsable = (props: Pick<ContainerProps, 'name'>, status: UnitStatus): void => {\n if (status.loadState === 'masked' || status.unitFileState === 'masked') {\n throw refuseContainer(\n props.name,\n `${serviceNameFor(props)} is masked. If that is stale, \\`systemctl unmask\\` it deliberately, ` +\n 'then redeploy. Nothing was written.',\n );\n }\n};\n\n/**\n * ⛔ A `.container` FILE THIS RESOURCE DOES NOT OWN IS NEVER OVERWRITTEN — same rule and same\n * exemption as `unit-preflight.ts`'s `assertUnclaimed`: a file byte-identical to our render is\n * this declaration's own leftover, not someone else's.\n */\nexport const assertUnclaimed = async (runner: HostRunner, props: ContainerProps): Promise<void> => {\n const path = containerPathFor(props);\n const bytes = await runner.readFile(path);\n const live = bytes === undefined ? undefined : digestOf(decoder.decode(bytes));\n if (live !== undefined && live !== digestOf(renderContainerFile(props))) {\n throw refuseContainer(\n props.name,\n `${path} is already on this host and is not this resource. Remove it, or declare it as a ` +\n 'new resource and deploy with --adopt.',\n );\n }\n};\n\n/**\n * ⛔ A PLAIN UNIT SHARING THE SERVICE NAME CAN OUTRANK QUADLET'S GENERATOR, SILENTLY — but only\n * when it sits in one of the directories that actually search BEFORE `${GENERATED_UNIT_DIRECTORY}`\n * in systemd's own unit load path (systemd.unit(5) \"Unit File Load Path\") — `/etc/systemd/system`\n * chief among them (`isShadowingFragment`, container-generator.ts, has the full list and the\n * measured facts). ⛔ CORRECTED ON ADVERSARIAL RE-REVIEW: an EARLIER version of this check refused\n * for ANY `FragmentPath` not literally under the generator directory, including the vendor\n * directories (`/usr/local/lib/systemd/system`, `/usr/lib/systemd/system`) — those are LOWER\n * precedence than the generator, not higher, so a plain unit there is harmlessly shadowed BY our\n * generated unit once we write and reload; refusing for it was a false positive that blocked a\n * create/adopt apply would have handled fine (exactly what S49 \"neither looser nor stricter\"\n * forbids). With no `.container` file of ours on disk yet, a `FragmentPath` under one of the\n * genuinely higher-precedence directories means some OTHER unit file — hand-written, or shipped by\n * a package, and admin-controlled rather than vendor-controlled — already answers to this name:\n * writing and reloading would generate a unit systemd never actually loads, because the\n * higher-precedence plain one still wins.\n * ★ TWIN OF `unit-preflight.ts`'s `assertUnclaimed`, for the one failure mode `Systemd.Unit` can't\n * have: there is no generator standing between ITS file and the unit systemd loads, so nothing\n * there can be shadowed the way a Quadlet generation can.\n * ★ ONLY WHEN THE `.container` FILE ITSELF IS ABSENT (called from `readContainer` in that branch):\n * a present file with different content is `assertUnclaimed`'s job; a present file that IS ours\n * generating a shadowed unit is `verifyGenerated`'s job (container-generator.ts, hardened to check\n * this same `FragmentPath` fact), at apply time, once daemon-reload has actually run — this is the\n * \"nothing declared yet\" half neither of those covers, and the one this bug leaves refusing only\n * mid-apply instead of at plan time for the directories that genuinely shadow.\n * ⚠️ NEVER FIRES WITHOUT A CONCRETE `fragmentPath` TO NAME, AND NEVER FOR A MASKED UNIT — MEASURED\n * against this family's own fake (`fakeQuadletHost`, unlike `sudo-lifecycle.test.ts`'s, which is\n * a different fake and reads differently): `placeUnit(path, text, {masked: true})` still reports\n * a real `FragmentPath`. Refusing there anyway would work, but with THIS function's generic\n * \"plain unit\" wording instead of `assertUsable`'s specific, more actionable \"is masked, run\n * `systemctl unmask` deliberately\" — masking is a person's decision, not an accident to explain\n * as a name collision. `assertUsable` stays the one place that message comes from.\n */\nexport const assertUnshadowed = (props: Pick<ContainerProps, 'name'>, status: UnitStatus): void => {\n if (!status.known || status.fragmentPath === undefined) return;\n if (status.loadState === 'masked' || status.unitFileState === 'masked') return;\n if (!isShadowingFragment(status.fragmentPath)) return;\n throw refuseContainer(\n props.name,\n `${serviceNameFor(props)} already exists as a plain unit at ${status.fragmentPath}, not a ` +\n `Quadlet generation — Quadlet's own output (${GENERATED_UNIT_DIRECTORY}/…) would be ` +\n 'shadowed by it and never actually run: systemd loads the higher-precedence file first. ' +\n 'Move the plain unit aside — a cutover — before declaring this container.',\n );\n};\n\n/** The half of a rename check that needs only the NEW NAME — mirrors `assertRenameTarget`. */\nexport const assertRenameTarget = async (\n runner: HostRunner,\n old: ContainerAttributes,\n name: string,\n): Promise<void> => {\n assertMayWrite(runner, old.name);\n assertMayWrite(runner, name);\n assertUsable({ name }, await showUnit(runner, serviceNameFor({ name })));\n};\n\n/** A rename, checked at plan time, before the plan may promise a delete-first replace. */\nexport const assertReplaceable = async (\n runner: HostRunner,\n next: ContainerProps,\n old: ContainerAttributes,\n): Promise<void> => {\n assertValid(next);\n await assertRenameTarget(runner, old, next.name);\n await assertUnclaimed(runner, next);\n await runner.checkWrite?.(containerPathFor(next), UNIT_WRITE);\n};\n",
28
+ "/**\n * The step that decides whether the GENERATED `<name>.service` actually moves: running state and —\n * only for a real change — a restart. Split out for the same reason unit-settle.ts is split from\n * unit-lifecycle.ts: it is the restart contract, and it should be readable on its own.\n *\n * ⛔ THE RESTART CONDITION IS THE WHOLE CONTRACT, same as `Systemd.Unit`'s (unit-settle.ts):\n * `changed` comes from the caller (container-lifecycle.ts `reconcileContainer`), `configChanged`\n * is a digest the DECLARATION itself listed. Nothing else restarts a container.\n * ★ NO ENABLE/DISABLE HERE — the one place this file is SHORTER than unit-settle.ts, not longer.\n * Quadlet's generator applies `[Install]` itself on every `daemon-reload` (container-generator.ts\n * header); calling `systemctl enable`/`disable` on a generated unit does not work at all (same\n * header, doc-cited). So there is no enablement branch to settle — only started/stopped and the\n * restart-on-change rule.\n */\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { isUnitRunning } from './unit-form.ts';\nimport {\n type UnitStatus,\n daemonReload,\n restartUnit,\n showUnit,\n startUnit,\n stopUnit,\n} from './systemctl.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n refuseContainer,\n} from './container-form.ts';\n\nexport const attributesOf = (\n props: ContainerProps,\n configSha256: string,\n containerSha256: string,\n containerPath: string,\n serviceName: string,\n status: UnitStatus,\n): ContainerAttributes => ({\n active: status.activeState === 'active' || status.activeState === 'activating',\n activeState: status.activeState,\n configSha256,\n containerPath,\n containerSha256,\n loadState: status.loadState,\n name: props.name,\n serviceName,\n ...(status.unitFileState === undefined ? {} : { unitFileState: status.unitFileState }),\n ...(status.sourcePath === undefined ? {} : { sourcePath: status.sourcePath }),\n});\n\nexport type Settle = {\n readonly before: Uint8Array | undefined;\n /** The `.container` file or systemd's view of it changed in a way that earns a restart. */\n readonly changed: boolean;\n readonly configChanged: boolean;\n readonly desired: string;\n readonly path: string;\n readonly serviceName: string;\n readonly status: UnitStatus;\n};\n\n/**\n * Bring running state to the declaration, restarting ONLY for a real change. No enable/disable —\n * see file header.\n */\nexport const settle = async (\n runner: HostRunner,\n props: ContainerProps,\n configSha256: string,\n step: Settle,\n): Promise<ContainerAttributes> => {\n const wantStarted = props.started !== false;\n const running = isUnitRunning(step.status.activeState, step.status.subState, wantStarted);\n const undo = async (detail: string): Promise<never> => {\n // ⚠️ A create that never came up leaves nothing behind; an update keeps the new file — the\n // generator-verification step already ran (container-lifecycle.ts) by the time settle is\n // called, so the unit DOES exist here; only the start/restart itself failed.\n if (step.before === undefined) {\n await runner.removeFile(step.path).catch(() => undefined);\n await daemonReload(runner).catch(() => undefined);\n }\n // 🔴 MEASURED FALSE, CT100 deploy 2026-09-26 00:11Z: this suffix used to assert \"is NOT\n // running\" unconditionally — even for a `detail` that was a REFUSAL before sudo ever ran\n // (the sudo ownership check on a Quadlet unit, say), where nothing about the running\n // container was touched. `caddy` stayed active/running through the whole failed deploy.\n // State only what this call actually knows: read the live state back, best-effort, rather\n // than assert either way.\n const after = await showUnit(runner, step.serviceName).catch(() => undefined);\n const stateNote =\n after === undefined\n ? 'Its running state was not re-checked.'\n : `Its unit is now ${after.activeState}.`;\n throw refuseContainer(props.name, `${detail} ${stateNote}`);\n };\n try {\n if (!wantStarted) {\n if (running) await stopUnit(runner, step.serviceName);\n } else if (!running) await startUnit(runner, step.serviceName);\n else if (step.changed || step.configChanged) await restartUnit(runner, step.serviceName);\n } catch (cause) {\n return undo(cause instanceof Error ? cause.message : String(cause));\n }\n const after = await showUnit(runner, step.serviceName);\n if (wantStarted && !isUnitRunning(after.activeState, after.subState, wantStarted)) {\n return undo(`systemctl reported success but the unit is ${after.activeState}.`);\n }\n return attributesOf(props, configSha256, step.desired, step.path, step.serviceName, after);\n};\n",
29
+ "/**\n * `Podman.Container`'s read / diff / reconcile / delete as plain async functions over a\n * HostRunner — same split as `unit-lifecycle.ts`, so the whole lifecycle runs against a fake host\n * (fake-quadlet.ts) with no real systemd or Podman.\n *\n * ⛔ WHAT A DEPLOY DOES NOT DO — same rule `Systemd.Unit` was built around (unit-lifecycle.ts\n * header): it NEVER mass-restarts. A container is restarted only when THIS resource's rendered\n * `.container` file changed, or a digest the declaration listed in `restartOn` changed.\n * ★ THE ORDER IS WRITE, RELOAD, VERIFY THE GENERATOR, THEN START OR RESTART. `daemon-reload` is\n * where Quadlet turns the `.container` file into `<name>.service` (container-generator.ts) —\n * writing it changes nothing on its own, and a write that fails leaves the old file (and its\n * already-generated unit) exactly as they were.\n * ⛔ A GENERATOR FAILURE IS ROLLED BACK, NOT LEFT FOR THE NEXT DEPLOY. `container-generator.ts`'s\n * header explains why: `daemon-reload` deletes ALL generator output before regenerating, so a\n * `.container` file the generator refuses has NO generated unit at all, even if the file it\n * replaced generated one fine. An UPDATE that fails verification restores the previous file and\n * reloads again, so the container this resource already promised running never loses its unit; a\n * CREATE that fails removes the file it wrote, same as `Systemd.Unit`'s undo.\n * ⛔ NO ENABLE/DISABLE — see container-generator.ts and container-settle.ts headers.\n */\nimport type { Diff } from 'alchemy/Diff';\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { UNIT_WRITE, isUnitRunning } from './unit-form.ts';\nimport { daemonReload, showUnit, stopUnit } from './systemctl.ts';\nimport { needsVerificationReload, verifyGenerated } from './container-generator.ts';\nimport {\n type ContainerAttributes,\n type ContainerProps,\n configDigest,\n containerPathFor,\n digestOf,\n refuseContainer,\n renderContainerFile,\n serviceNameFor,\n} from './container-form.ts';\nimport {\n assertMayWrite,\n assertReplaceable,\n assertUnshadowed,\n assertUsable,\n assertValid,\n} from './container-preflight.ts';\nimport { attributesOf, settle } from './container-settle.ts';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\n/**\n * What is on the host now: the `.container` file's digest and the GENERATED unit's status.\n *\n * ⛔ A FILE-LESS `known` UNIT IS NOT NECESSARILY OURS — found on adversarial review. The OLD test\n * here was `bytes === undefined && !status.known`: absent file, unknown unit → nothing. But a\n * PLAIN unit under `/etc/systemd/system` with the same service name also makes `status.known`\n * true, with no `.container` file behind it at all — the read then reported a container that has\n * never been declared as \"exists\", and a plan built on that said \"adopted\" for something a create\n * would later fail to make real (`assertUnshadowed`, container-preflight.ts, has the measured\n * precedence fact and the plan-time refusal). ⛔ `/usr/lib/systemd/system` is DELIBERATELY NOT\n * named alongside `/etc/systemd/system` here — corrected on adversarial re-review: it is LOWER\n * precedence than Quadlet's generator, not higher (`isShadowingFragment`, container-generator.ts),\n * so a plain unit there is exists-but-not-a-shadow: `readContainer` reports it as adopted, same as\n * before, and a create/update writes our `.container` file, which then wins for real. A REAL\n * Quadlet generation (this or an earlier apply's own file, later removed) reads no differently\n * here than before: its `FragmentPath` sits under Quadlet's own generator directory, which\n * `assertUnshadowed` never refuses.\n */\nexport const readContainer = async (\n runner: HostRunner,\n props: ContainerProps,\n): Promise<ContainerAttributes | undefined> => {\n const path = containerPathFor(props);\n const bytes = await runner.readFile(path);\n const status = await showUnit(runner, serviceNameFor(props));\n if (bytes === undefined) {\n if (!status.known) return undefined;\n assertUnshadowed(props, status);\n }\n const sha = bytes === undefined ? '' : digestOf(decoder.decode(bytes));\n return attributesOf(\n props,\n configDigest(props.restartOn),\n sha,\n path,\n serviceNameFor(props),\n status,\n );\n};\n\nexport const diffContainer = async (\n runner: HostRunner,\n news: ContainerProps,\n output: ContainerAttributes,\n): Promise<Diff> => {\n assertValid(news);\n // ★ The name or directory is the `.container` file's identity: a change is delete-first, same\n // reason as `Systemd.Unit` (unit-lifecycle.ts diffUnit) — two files for one name can never\n // both be the one Quadlet reads, and here also never both generate the same `.service`.\n if (news.name !== output.name || containerPathFor(news) !== output.containerPath) {\n await assertReplaceable(runner, news, output);\n return { action: 'replace', deleteFirst: true };\n }\n const desired = digestOf(renderContainerFile(news));\n const update = async (): Promise<Diff> => {\n assertMayWrite(runner, news.name);\n await runner.checkWrite?.(containerPathFor(news), UNIT_WRITE);\n return { action: 'update' };\n };\n if (desired !== output.containerSha256) return update();\n if (configDigest(news.restartOn) !== output.configSha256) return update();\n const live = await readContainer(runner, news);\n if (live === undefined || live.containerSha256 !== desired) return update();\n const status = await showUnit(runner, serviceNameFor(news));\n const wantStarted = news.started !== false;\n if (isUnitRunning(status.activeState, status.subState, wantStarted) !== wantStarted)\n return update();\n return status.needDaemonReload ? update() : { action: 'noop' };\n};\n\n/**\n * `adopt` is whether adoption is on AND this apply is a create or an unfinished generation of our\n * own — same meaning as `Systemd.Unit`'s (unit-lifecycle.ts reconcileUnit).\n */\nexport const reconcileContainer = async (\n runner: HostRunner,\n props: ContainerProps,\n output: ContainerAttributes | undefined,\n adopt = false,\n): Promise<ContainerAttributes> => {\n assertValid(props);\n assertMayWrite(runner, props.name);\n const path = containerPathFor(props);\n const serviceName = serviceNameFor(props);\n const text = renderContainerFile(props);\n const desired = digestOf(text);\n const before = await runner.readFile(path);\n const liveSha = before === undefined ? undefined : digestOf(decoder.decode(before));\n const moved =\n output !== undefined && (output.name !== props.name || output.containerPath !== path);\n if (moved && output !== undefined) await assertReplaceable(runner, props, output);\n const prior = moved ? undefined : output;\n if (\n prior === undefined &&\n !(adopt && output === undefined) &&\n liveSha !== undefined &&\n liveSha !== desired\n ) {\n throw refuseContainer(\n props.name,\n `${path} is already on this host and is not this resource. Remove it, or declare it as a ` +\n 'new resource and deploy with --adopt.',\n );\n }\n if (moved && output !== undefined) await deleteContainer(runner, output);\n const wrote = liveSha !== desired;\n /**\n * ⛔ MUST GATE THE RELOAD, NOT ONLY THE RESTART — found on adversarial review. `wrote` and\n * `preStatus.needDaemonReload` both describe the GENERATED `<name>.service`'s own staleness;\n * neither can see that the SOURCE `.container` file was written by an apply that then crashed\n * (ssh drop, reboot) before its `daemon-reload` ran. On the retry: the file already holds\n * `desired` (`wrote` is false), and systemd's own flag is unset because the generated unit —\n * still built from the OLD content — hasn't changed either. Without `stale` here, no reload\n * happens, `verifyGenerated` passes against that stale generation, and `settle` (below) would\n * restart the container onto its OLD definition while returning `containerSha256: desired` —\n * state then claims the new declaration took effect, permanently and silently, since every\n * later diff compares state to itself. `stale` is exactly \"the file's content no longer matches\n * what THIS resource last recorded as generated\", which is the one signal that catches it.\n * Test: container-generator.test.ts, \"an interrupted apply that crashed before daemon-reload\".\n */\n const stale = prior !== undefined && prior.containerSha256 !== desired;\n const preStatus = await showUnit(runner, serviceName);\n assertUsable(props, preStatus);\n /**\n * ⛔ `prior === undefined` (a create, or an adopt) AND `needsVerificationReload` — found on\n * adversarial review, the same bug class as `stale` above but for a resource with no prior\n * state at all. An INTERRUPTED CREATE (the write landed, the apply crashed before its\n * `daemon-reload` ran) retries with `wrote: false` (the file already holds `desired`) and\n * `stale: false` (there is no PRIOR state to disagree with) — without this, nothing ever\n * reloaded and `verifyGenerated` threw on the still-missing generated unit FOREVER: loud, but\n * stuck, since a plain retry changes nothing about that. `needsVerificationReload`\n * (container-generator.ts) shares its predicate with `verifyGenerated` itself, so the two can\n * never disagree about what counts as already proven. Cost: one extra, idempotent reload on an\n * ordinary adoption whose generation was already fine — `daemon-reload` restarts nothing, so\n * the never-mass-restart property (`changed`, below) is untouched.\n * Test: container-generator.test.ts, \"an interrupted CREATE that crashed before daemon-reload\".\n */\n const needsReload =\n wrote ||\n stale ||\n preStatus.needDaemonReload ||\n (prior === undefined && needsVerificationReload(path, preStatus));\n if (wrote) await runner.writeFileAtomic(path, encoder.encode(text), UNIT_WRITE);\n if (needsReload) await daemonReload(runner);\n const status = needsReload ? await showUnit(runner, serviceName) : preStatus;\n try {\n verifyGenerated(props.name, path, serviceName, status);\n } catch (cause) {\n // ⛔ Only a WRITE this reconcile made is worth rolling back — see file header. A file already\n // on disk before this reconcile ran (wrote === false) generated nothing NEW to restore to.\n if (wrote) {\n if (before === undefined) await runner.removeFile(path).catch(() => undefined);\n else await runner.writeFileAtomic(path, before, UNIT_WRITE).catch(() => undefined);\n await daemonReload(runner).catch(() => undefined);\n }\n throw cause;\n }\n const configChanged = prior !== undefined && prior.configSha256 !== configDigest(props.restartOn);\n const changed = wrote || stale || preStatus.needDaemonReload;\n return settle(runner, props, configDigest(props.restartOn), {\n before,\n changed,\n configChanged,\n desired,\n path,\n serviceName,\n status,\n });\n};\n\n/**\n * Stop, remove the `.container` file, reload — clearing the orphaned generated unit. Idempotent.\n * No `disableUnit`: never enabled through systemctl in the first place (container-settle.ts).\n */\nexport const deleteContainer = async (\n runner: HostRunner,\n output: ContainerAttributes,\n): Promise<void> => {\n assertMayWrite(runner, output.name);\n const status = await showUnit(runner, output.serviceName);\n if (status.activeState === 'active' || status.activeState === 'activating') {\n await stopUnit(runner, output.serviceName);\n }\n const stat = await runner.stat(output.containerPath);\n if (stat !== undefined) {\n if (stat.kind !== 'file')\n throw refuseContainer(output.name, `${output.containerPath} is a ${stat.kind}`);\n await runner.removeFile(output.containerPath);\n }\n await daemonReload(runner);\n};\n",
29
30
  "/**\n * `Remote.File` — one text file on a Linux host, declared: content, mode, owner, group — or one\n * MANAGED BLOCK inside a file this resource does not own.\n *\n * - create / update — atomic write (stage beside the target, chown, chmod, rename), skipped when\n * the host already says what we declare; then read back and compared.\n * - read — lstat plus the SHA-256 of the file and of the part this resource owns.\n * - diff — the declared digest against the stored AND the on-disk one, plus mode and owner.\n * - replace — only when `path` changes; create-before-delete. A region renamed inside one file\n * is an update that writes the new block, verifies it, then takes the old one out.\n * - delete — removes the file, or in region mode only the block.\n *\n * ⛔ NEVER A SECRET — see remote-file-form.ts.\n * ⛔ THE REGION IS PART OF THE IDENTITY. Renaming it, or changing its comment token, moves the block;\n * swapping between owning the whole file and owning a block is refused (remote-file-plan.ts).\n * ⚠️ NOTHING IS ADOPTED WITHOUT `--adopt` (docs/ownership.md): a file already at the path, or a\n * block already carrying the markers, reads as `Unowned`.\n * ★ IT IS A SEPARATE RESOURCE FROM `Host.File`, not a flag on it: the two have different attributes\n * (a region name that a delete cannot work without) and different promises about the rest of the\n * file, and folding them together would make every existing Mac HostFile's state shape change.\n */\nimport { Resource } from 'alchemy';\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport { lift, resolvedString } from '../launchd/host-effect.ts';\nimport { HostRunnerService } from '../launchd/runner.ts';\nimport { adoptsAtApply } from '../ownership/adopt.ts';\nimport { noteUnfinished } from '../ownership/resume.ts';\nimport type { RemoteFileAttributes, RemoteFileProps } from './remote-file-form.ts';\nimport {\n deleteFile,\n diffFile,\n readFileAttributes,\n reconcileFile,\n} from './remote-file-lifecycle.ts';\n\nexport type { RemoteFileAttributes, RemoteFileProps } from './remote-file-form.ts';\n\nexport interface RemoteFile extends Resource<\n 'Remote.File',\n RemoteFileProps,\n RemoteFileAttributes\n> {}\n\nexport const RemoteFile = Resource<RemoteFile>('Remote.File');\n\nexport const RemoteFileProvider = () =>\n Provider.effect(\n RemoteFile,\n Effect.gen(function* () {\n const runner = yield* HostRunnerService;\n return RemoteFile.Provider.of({\n /** ⛔ A host's files are not a list of things this stack owns. */\n list: () => Effect.succeed([]),\n\n read: ({ olds, output }) =>\n lift(async () => {\n const found = await readFileAttributes(runner, olds.path, olds.region);\n if (found === undefined) return undefined;\n // ⛔ In region mode an existing file is NOT this resource: only the block is. A file\n // with no such block reads as nothing, so the create writes the block instead of\n // demanding --adopt for a file it was never claiming.\n if (olds.region !== undefined && found.contentSha256 === '') return undefined;\n return output === undefined ? Unowned(found) : found;\n }),\n\n diff: ({ instanceId, news, output }) => {\n // ★ An unfinished generation of our own: `--adopt` may resume it (ownership/resume.ts).\n if (output === undefined) return noteUnfinished(instanceId);\n if (isResolved(news)) return lift(() => diffFile(runner, news, output));\n // ⛔ A new path is a replace even while `content` is unresolved (an Output templated in):\n // the engine's default would be an update, which writes the new path and never removes\n // the old one.\n const path = resolvedString(news, 'path');\n return Effect.succeed(\n path !== undefined && path !== output.path ? { action: 'replace' as const } : undefined,\n );\n },\n\n // ★ `--adopt` reaches the apply too: the probe never ran for a create with an Output prop.\n reconcile: ({ fqn, instanceId, news, output }) =>\n Effect.flatMap(adoptsAtApply({ fqn, instanceId, output }), (adopt) =>\n lift(() => reconcileFile(runner, news, output, adopt)),\n ),\n\n delete: ({ output }) => lift(() => deleteFile(runner, output)),\n });\n }),\n );\n",
30
31
  "/**\n * A MANAGED REGION: a block a resource owns inside a file it does not own.\n *\n * ★ WHY THIS EXISTS. Four files on this estate are owned by something else and still need one\n * declared block: a packet-filter anchor line inside the OS vendor's own ruleset, a host table,\n * a generated Nix module, and an operator's ssh config. Declaring the WHOLE file would mean\n * taking it from its owner — which puts it back, or refuses its next activation. So the resource\n * owns the lines between two markers and promises that every other byte is untouched.\n * ⛔ THE REST OF THE FILE IS BYTE-IDENTICAL. Not \"semantically the same\", not re-indented, not\n * re-terminated: the bytes before the BEGIN line and after the END line are copied through. That\n * is the property region.test.ts asserts, because it is the whole reason the other owner tolerates\n * this.\n * ⛔ AMBIGUITY IS A REFUSAL, NEVER A GUESS. Two BEGIN markers with the same name, an END before its\n * BEGIN, or a BEGIN with no END all mean someone edited inside the block. Picking one would\n * silently delete their edit, so each is an Error naming the line.\n * ★ THE MARKER IS A COMMENT IN THE HOST FILE'S OWN LANGUAGE, which is why the comment token is a\n * prop: `#` covers the four consumers above, and a file whose comments are `//` or `;` says so.\n */\n\nexport type RegionSpec = {\n /** Distinguishes this block from any other managed block in the same file. */\n readonly name: string;\n /** The file's comment token. @default '#' */\n readonly comment?: string;\n};\n\nexport const DEFAULT_COMMENT = '#';\n\nconst tokens = (spec: RegionSpec) => {\n const comment = spec.comment ?? DEFAULT_COMMENT;\n return {\n begin: `${comment} BEGIN ${spec.name}`,\n end: `${comment} END ${spec.name}`,\n };\n};\n\n/**\n * Whether two declarations name the SAME block.\n *\n * ⛔ THE COMMENT TOKEN IS PART OF THE IDENTITY, not a formatting preference. The markers are\n * matched as literal whole lines, so `# BEGIN pf` and `// BEGIN pf` are two different blocks:\n * changing the token leaves the old block invisible to every later read, exactly as renaming\n * does. A resource that treated either as a mere content change would splice a second block in\n * and never be able to find the first one again.\n * ★ Whole-file mode is its own identity: `undefined` equals only `undefined`.\n */\nexport const sameRegion = (a: RegionSpec | undefined, b: RegionSpec | undefined): boolean =>\n a === undefined || b === undefined\n ? a === undefined && b === undefined\n : a.name === b.name && (a.comment ?? DEFAULT_COMMENT) === (b.comment ?? DEFAULT_COMMENT);\n\nexport const regionProblems = (spec: RegionSpec): string[] => {\n const found: string[] = [];\n const comment = spec.comment ?? DEFAULT_COMMENT;\n if (!/^\\S{1,4}$/.test(comment) || comment.includes('\\u0000')) {\n found.push('region comment must be 1–4 non-space characters');\n }\n // ⛔ A marker must be one line and must be findable verbatim; a name with a newline would split\n // it, and leading or trailing space would not match what we later search for.\n if (!/^[A-Za-z0-9][A-Za-z0-9 ._:@/-]{0,79}$/.test(spec.name)) {\n found.push('region name must be 1–80 printable characters and start alphanumeric');\n }\n return found;\n};\n\nconst refuse = (message: string): Error => new Error(`managed region: ${message}`);\n\nconst duplicate = (what: string, at: readonly number[], line: string): Error =>\n refuse(\n `${what} for ${JSON.stringify(line)} (lines ${at.map((index) => index + 1).join(', ')}). ` +\n 'Remove the duplicate; this resource will not choose between them.',\n );\n\n/** Where the block sits: the line indices of its markers, or `undefined` when it is not there. */\nconst locate = (lines: readonly string[], spec: RegionSpec) => {\n const { begin, end } = tokens(spec);\n const begins = lines.flatMap((line, index) => (line === begin ? [index] : []));\n const ends = lines.flatMap((line, index) => (line === end ? [index] : []));\n if (begins.length > 1) throw duplicate('two BEGIN markers', begins, begin);\n if (ends.length > 1) throw duplicate('two END markers', ends, end);\n const [from] = begins;\n const [to] = ends;\n if (from === undefined && to === undefined) return undefined;\n if (from === undefined || to === undefined) {\n throw refuse(\n `${JSON.stringify(spec.name)} has a ${from === undefined ? 'END' : 'BEGIN'} marker and no ` +\n 'match. Repair the file by hand — a half-marked block means an edit inside it.',\n );\n }\n if (to < from) throw refuse(`${JSON.stringify(spec.name)} has its END marker before its BEGIN`);\n return { from, to };\n};\n\n/**\n * The file's bytes with the block set to `body`, appended at the end when it is not there yet.\n * ⚠️ A file that does not end in a newline gets one before the block is appended — the ONLY byte\n * this function adds outside its own block, and without it the last existing line and the BEGIN\n * marker would become one line.\n */\nexport const spliceRegion = (file: string, spec: RegionSpec, body: string): string => {\n const { begin, end } = tokens(spec);\n // ★ A body is stored as whole lines: exactly one newline after the last one, none doubled.\n const block = [begin, ...(body === '' ? [] : body.replace(/\\n$/, '').split('\\n')), end];\n const lines = file.split('\\n');\n const found = locate(lines, spec);\n if (found !== undefined) {\n return [...lines.slice(0, found.from), ...block, ...lines.slice(found.to + 1)].join('\\n');\n }\n const prefix = file === '' || file.endsWith('\\n') ? file : `${file}\\n`;\n return `${prefix}${block.join('\\n')}\\n`;\n};\n\n/** The block's body, or `undefined` when the file has no such block. */\nexport const readRegion = (file: string, spec: RegionSpec): string | undefined => {\n const lines = file.split('\\n');\n const found = locate(lines, spec);\n if (found === undefined) return undefined;\n const body = lines.slice(found.from + 1, found.to);\n return body.length === 0 ? '' : `${body.join('\\n')}\\n`;\n};\n\n/**\n * The file with the block and both markers removed — what a delete leaves behind.\n * ★ Byte-for-byte the file as it was before the block was appended, with one exception already\n * named on `spliceRegion`: a file that had no final newline when the block was added keeps the\n * newline that adding it required. Nothing else is added or dropped.\n */\nexport const removeRegion = (file: string, spec: RegionSpec): string => {\n const lines = file.split('\\n');\n const found = locate(lines, spec);\n if (found === undefined) return file;\n return [...lines.slice(0, found.from), ...lines.slice(found.to + 1)].join('\\n');\n};\n",
31
32
  "/**\n * RemoteFile's props, attributes and validation — the pure half of the provider.\n *\n * ⛔ `content` IS NEVER A SECRET, for the same reason it is not on HostFile: Alchemy stores props\n * unencrypted, so every byte here sits in the state store and in every plan diff. A secret file\n * stays rendered at run time by a secret renderer; a stack declares at most the PATH it writes to.\n * secret-tripwire.ts refuses the obvious case and catches nothing subtle.\n * ★ TWO MODES, ONE RESOURCE. Without `region` this owns the whole file, exactly as HostFile does on\n * a Mac. With `region` it owns only the lines between two markers and promises every other byte\n * is untouched (region.ts) — which is the only way to declare a block inside a file another tool,\n * a vendor package or a person owns.\n */\nimport { pathProblems } from '../launchd/host-file-form.ts';\nimport { fileSecretProblems } from '../launchd/secret-tripwire.ts';\nimport { type RegionSpec, regionProblems } from './region.ts';\n\nexport interface RemoteFileProps {\n /** Absolute path on the host. ⚠️ The parent directory must exist — declare a HostDirectory. */\n path: string;\n /** UTF-8 text: the whole file, or the region's body. ⛔ Never a secret — see the file header. */\n content: string;\n /**\n * Own a block inside a file this resource does not own, instead of the whole file.\n * ⛔ In region mode `mode`, `owner` and `group` apply ONLY to a file this resource creates: an\n * existing file keeps the mode and ownership its owner gave it, because changing them would be\n * a second, undeclared claim on a file we only borrowed four lines of.\n */\n region?: RegionSpec;\n /**\n * Create the file when it is absent. Region mode only; whole-file mode always creates.\n * ⛔ Default `false`: a region declared against a path that does not exist is far more often a\n * typo (a wrong `/etc` path) than an intention, and creating it would hide the typo.\n */\n create?: boolean;\n /** Permission bits. @default 0o644 */\n mode?: number;\n /** User name or numeric uid. Omitted: whoever the runner writes as. */\n owner?: string | number;\n /** Group name or numeric gid. Omitted: the directory's default group. */\n group?: string | number;\n}\n\nexport interface RemoteFileAttributes {\n path: string;\n /** SHA-256 of the WHOLE file on disk, in both modes. */\n sha256: string;\n /** SHA-256 of the part this resource owns — in region mode, of the region's body alone. */\n contentSha256: string;\n /**\n * The block this resource owns, when it owns only a block.\n * ⛔ IT IS IN THE ATTRIBUTES ON PURPOSE. Alchemy's `delete` handler is given the attributes and\n * nothing else, and without the marker name a delete could not find the block — it could only\n * delete the whole file, which belongs to someone else.\n */\n region?: RegionSpec;\n mode: number;\n uid: number;\n gid: number;\n size: number;\n}\n\nexport const DEFAULT_MODE = 0o644;\n\nconst identityProblems = (name: string, value: string | number | undefined): string[] => {\n if (value === undefined) return [];\n if (typeof value === 'number') {\n return Number.isSafeInteger(value) && value >= 0\n ? []\n : [`${name} must be a non-negative integer id`];\n }\n return /^[A-Za-z_][A-Za-z0-9_.-]*$/.test(value) || /^\\d+$/.test(value)\n ? []\n : [`${name} ${JSON.stringify(value)} is not a valid user or group name`];\n};\n\nexport const fileProblems = (props: RemoteFileProps): string[] => {\n const found = pathProblems(props.path);\n const mode = props.mode ?? DEFAULT_MODE;\n if (!Number.isSafeInteger(mode) || mode < 0 || mode > 0o7777) found.push('mode must be 0–0o7777');\n found.push(...identityProblems('owner', props.owner));\n found.push(...identityProblems('group', props.group));\n found.push(...fileSecretProblems(props.content));\n if (props.region !== undefined) {\n found.push(...regionProblems(props.region));\n // ⛔ Say it at plan time rather than let a deploy silently ignore the prop: in region mode\n // these describe a file we do not own, and they are honoured only for a `create`.\n if (props.create !== true && (props.mode !== undefined || props.owner !== undefined)) {\n found.push(\n 'mode and owner apply only to a file this resource creates; drop them, or set create: true',\n );\n }\n } else if (props.create === true) {\n found.push('create is for region mode only; a whole-file declaration always creates the file');\n }\n return found;\n};\n",
@@ -53,12 +54,12 @@
53
54
  "/**\n * The checks sudo-runner.ts makes against the host, as the deploying user, before it runs anything\n * as root. sudo-allowlist.ts checks the argv; this checks what the paths in it actually are.\n *\n * ⛔ WHAT IS LOGGED IS WHAT IS WRITTEN. A symlinked directory under a prefix would make\n * `install` or `rm`, running as root, act on a path the log never named. So every directory\n * between the prefix and the file must be a real directory.\n * ⛔ EVERY DIRECTORY FROM THE PREFIX DOWN IS ROOT'S ALONE (decided 2026-09-21). A directory below\n * the prefix that another user owns, or that group or other may write, lets that user swap what\n * lies under it — a symlink where the file was — between these checks and the privileged call.\n * So each one must be owned by root and not group/other-writable (rootOnlyProblem), exactly as\n * the prefix itself must.\n * ⛔ AND EVERY DIRECTORY ABOVE THE PREFIX (red team, 2026-09-21). Whoever may write the prefix's\n * parent may rename the prefix away and put a symlink in its place between these checks and the\n * privileged call — the same swap one level up. So `/` down to the prefix's parent must be\n * root-only too (a root-owned symlink among them, `/etc` -> `private/etc`, is root's own and is\n * followed; its target is root's choice, and not walked).\n * ⛔ AND NO ACL THAT SAYS OTHERWISE (sudo-acl.ts): mode bits are not the whole answer on macOS.\n * ⚠️ These checks run before the privileged call, as the deploying user. They guard against a\n * mistaken declaration and against every user but root; root itself could still change a path\n * in that window.\n */\nimport type { FileStat, HostRunner, WriteOptions } from './runner.ts';\nimport { assertNoAclGrants } from './sudo-acl.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\nimport { assertReadableBack, modeProblem } from './sudo-guard-mode.ts';\n\nexport { assertReadableBack, canRead, modeProblem, operatorGroups } from './sudo-guard-mode.ts';\n\nconst refuse = (path: string, message: string): Error =>\n new SudoRefusedError(`sudoRunner ${path}: ${message}`);\n\n/** The directories strictly between `prefix` and the file at `path`. */\nexport const betweenDirs = (prefix: string, path: string): string[] => {\n const parts = path\n .slice(prefix.length + 1)\n .split('/')\n .slice(0, -1);\n return parts.map((_, index) => `${prefix}/${parts.slice(0, index + 1).join('/')}`);\n};\n\n/** The directories strictly above `prefix`: `/`, then each one down to the prefix's parent. */\nexport const aboveDirs = (prefix: string): string[] => {\n const parts = prefix.split('/').slice(1, -1);\n return ['/', ...parts.map((_, index) => `/${parts.slice(0, index + 1).join('/')}`)];\n};\n\n/**\n * What must be at `path` itself: a regular file, or (for a write or a remove) nothing yet.\n * ⚠️ A DIRECTORY AT THE DESTINATION IS THE TRAP: `install src dir` copies INTO the directory\n * (install(1)), and install decides that with stat, so a symlink to a directory does the same.\n */\nexport type Expect = 'file' | 'file-or-absent';\n\n/**\n * ⛔ THE PREFIX, AND EVERY DIRECTORY BELOW IT ON THE WAY TO THE FILE, MUST BE A DIRECTORY ONLY ROOT\n * CAN CHANGE, checked at every call rather than trusted from the declaration. A symlinked prefix makes root write wherever it points, which the\n * log never names (`/opt/example` -> `/etc` turns a HostFile at `/opt/example/sudoers` into\n * `/etc/sudoers`). A prefix another user owns or may write lets that user swap a directory below\n * it for a symlink between this check and the privileged call.\n * ⚠️ lstat of the prefix itself: a symlink ABOVE it (`/etc` -> `/private/etc` on macOS) is the\n * system's and is followed, as every path lookup does — when root owns it (aboveDirs).\n * ★ MEASURED 2026-09-21 on macOS 27.2 (`ls -ldn`): /Library/LaunchDaemons, /private/etc, /opt and\n * /usr/local are uid 0, mode 0755, so the prefixes a host stack declares pass as they are.\n */\nconst rootOnlyProblem = (stat: FileStat | undefined): string | undefined => {\n if (stat === undefined) return 'is missing';\n if (stat.kind !== 'directory') return `is a ${stat.kind}, not a directory`;\n if (stat.uid !== 0) return `is owned by uid ${String(stat.uid)}, not root`;\n if ((stat.mode & 0o022) !== 0) {\n return `is writable by group or other (mode ${stat.mode.toString(8).padStart(4, '0')})`;\n }\n return undefined;\n};\n\n/**\n * Refuse a prefix that is not a root-only directory, a symlink or a non-directory between the\n * prefix and `path`, and anything but a file at it.\n */\nexport const assertPlainPath = async (\n base: HostRunner,\n prefix: string,\n path: string,\n expect: Expect,\n): Promise<'file' | 'absent'> => {\n const above = aboveDirs(prefix);\n for (const [index, stat] of (await Promise.all(above.map((dir) => base.stat(dir)))).entries()) {\n const up = stat?.kind === 'symlink' && stat.uid === 0 ? undefined : rootOnlyProblem(stat);\n if (up !== undefined) {\n throw refuse(\n path,\n `${String(above[index])}, above the declared prefix ${prefix}, ${up}. Whoever may change it ` +\n 'may swap the prefix itself; every directory from / down must be root-only. Nothing ran as root.',\n );\n }\n }\n const dirs = betweenDirs(prefix, path);\n const [prefixStat, ...stats] = await Promise.all([prefix, ...dirs].map((dir) => base.stat(dir)));\n const bad = rootOnlyProblem(prefixStat);\n if (bad !== undefined) {\n throw refuse(\n path,\n `the declared prefix ${prefix} ${bad}. Declare only a real directory that root owns and ` +\n 'only root may write. Nothing ran as root.',\n );\n }\n for (const [index, stat] of stats.entries()) {\n const dir = String(dirs[index]);\n if (stat?.kind !== 'directory') {\n throw refuse(\n path,\n `${dir} is ${stat === undefined ? 'missing' : `a ${stat.kind}`}; root ` +\n 'writes only through real directories under a declared prefix.',\n );\n }\n const below = rootOnlyProblem(stat);\n if (below !== undefined) {\n throw refuse(\n path,\n `${dir} ${below}. Every directory from the prefix ${prefix} down to the file must be one ` +\n 'that root owns and only root may write. Nothing ran as root.',\n );\n }\n }\n await assertNoAclGrants(base, path, [...above, prefix, ...dirs]);\n const target = await base.stat(path);\n if (target === undefined && expect === 'file-or-absent') return 'absent';\n if (target?.kind === 'file') return 'file';\n throw refuse(path, `is ${target === undefined ? 'missing' : `a ${target.kind}`}, not a file`);\n};\n\n/**\n * Every check a write under `prefix` meets before anything is staged or run as root: the mode, the\n * path (assertPlainPath) and the read-back (assertReadableBack). ★ Reads only, as the deploying\n * user — so sudoRunner's `checkWrite` runs it at PLAN time too, and a plan still never calls sudo.\n */\nexport const assertInstallable = async (\n base: HostRunner,\n prefix: string,\n path: string,\n options: WriteOptions,\n groups: readonly number[] | undefined,\n): Promise<void> => {\n const mode = modeProblem(options);\n if (mode !== undefined) {\n throw refuse(\n path,\n `${mode}. Declare a mode without those bits (0644, 0640, 0755), or give the file to its ` +\n 'real owner. Nothing ran as root.',\n );\n }\n await assertPlainPath(base, prefix, path, 'file-or-absent');\n await assertReadableBack(base, path, options, groups);\n};\n",
54
55
  "/**\n * ONE READ OF `ls -ldn --` FOR A WHOLE LIST OF PATHS, parsed into the same FileStat the seam uses\n * plus the one thing `stat` cannot say on Linux: whether the path carries a POSIX ACL.\n *\n * ★ WHY `ls` AND NOT `stat`, AND WHY ONE CALL. The Mac guard lstats every directory from `/` down\n * with a local syscall each; over ssh each of those is a TCP connection with no multiplexing\n * (ssh-runner.ts), so a five-deep chain would be five handshakes per check and per plan. `ls -ldn`\n * takes every path as an operand and answers in one connection, and its mode column carries the\n * ACL flag the chain check needs anyway.\n * ★ MEASURED 2026-09-22, read-only over ssh, on two host classes — an unprivileged LXC container\n * and a Proxmox VE node, both Debian 13 / coreutils 9.7, LANG=C, ssh user uid 1001 and 1000:\n * $ ls -ldn / /etc /etc/systemd /etc/systemd/system /usr /usr/lib /usr/lib/systemd …\n * drwxr-xr-x 18 0 0 4096 Sep 22 10:12 /etc (all ten root:root 0755, no flag)\n * $ ls -ld /var/log/journal\n * drwxr-sr-x+ 3 root systemd-journal … (the `+` IS the POSIX ACL flag here)\n * $ ls -lden … → ls: invalid option -- 'e' (the Mac's spelling does not exist)\n * $ command -v getfacl → absent on both Debian classes (present on the NixOS class)\n * ⛔ SO THE ACL SIGNAL IS THE `+` FLAG, NOT `getfacl`: the tool that would enumerate the entries\n * is not installed on the hosts this runner is for, and a guard that shells out to a missing\n * program and fails closed would refuse every write on them. `ls` is coreutils, always there.\n * ⚠️ THE PRICE, STATED: we learn THAT a directory has an ACL, never WHAT it grants, so any ACL on\n * the chain is a refusal — including a read-only one the Mac guard would allow. Fail closed and\n * say so; the remedy is a prefix without one.\n * ⚠️ `.` in that column is an SELinux context, not an ACL, and is not a grant. `@` is macOS's.\n * ⛔ FAIL CLOSED ON ANYTHING WE DO NOT UNDERSTAND. A line that does not parse, a path that no line\n * named, two lines for one path, or a non-zero exit is an error — never \"nothing is there\".\n */\nimport type { FileStat, HostRunner } from '../launchd/runner.ts';\nimport { SudoRefusedError } from '../launchd/sudo-allowlist.ts';\n\n/** What one `ls -ldn` line says: the lstat fields, plus whether the path carries an ACL. */\nexport type Listed = FileStat & { readonly acl: boolean };\n\nconst KINDS = new Map<string, FileStat['kind']>([\n ['-', 'file'],\n ['d', 'directory'],\n ['l', 'symlink'],\n]);\n\n/**\n * `rwxr-x---` → 0o750, with the three special bits `ls` hides in the execute columns:\n * `s`/`S` = setuid (user) or setgid (group), `t`/`T` = sticky; the capital is the bit without\n * execute. ⚠️ Anything else in a column is a shape we do not know, and returns undefined.\n */\nexport const permBits = (perms: string): number | undefined => {\n if (perms.length !== 9) return undefined;\n let mode = 0;\n for (const index of [0, 1, 2]) {\n const at = index * 3;\n const shift = 6 - at;\n const [read, write, exec] = [perms[at], perms[at + 1], perms[at + 2]];\n if ((read !== 'r' && read !== '-') || (write !== 'w' && write !== '-')) return undefined;\n if (read === 'r') mode |= 0o4 << shift;\n if (write === 'w') mode |= 0o2 << shift;\n const [set, unset] = index === 2 ? ['t', 'T'] : ['s', 'S'];\n if (exec === 'x' || exec === set) mode |= 0o1 << shift;\n else if (exec !== '-' && exec !== unset) return undefined;\n if (exec === set || exec === unset) mode |= 0o4000 >> index;\n }\n return mode;\n};\n\n/** `drwxr-xr-x+ 4 0 0 4096 Sep 22 10:12 /etc/systemd` — the tail holds the date and the name. */\nconst LINE = /^([-dlbcps])(\\S{9})([+.@]?)\\s+\\d+\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(.*)$/;\n\n/**\n * Match each line to the path that asked for it, by NAME rather than by position.\n * ⚠️ `ls` SORTS ITS OPERANDS, so the answers do not come back in the order they were asked; and a\n * symlink's line ends `<path> -> <target>`, so it is not a suffix match either. The longest\n * candidate wins, so a path that is a tail of another cannot steal its line.\n */\nconst nameOf = (tail: string, paths: readonly string[]): string | undefined =>\n [...paths]\n .sort((left, right) => right.length - left.length)\n .find((path) => tail.endsWith(` ${path}`) || tail.includes(` ${path} -> `));\n\n/** Every requested path's entry, or `undefined` when the listing is not exactly that. */\nexport const parseListing = (\n stdout: string,\n paths: readonly string[],\n): Map<string, Listed> | undefined => {\n const entries = new Map<string, Listed>();\n for (const line of stdout.split('\\n').filter((text) => text.trim() !== '')) {\n const match = LINE.exec(line);\n if (match === null) return undefined;\n const [, type, perms, flag, uid, gid, size, tail] = match;\n const mode = permBits(perms ?? '');\n const path = nameOf(tail ?? '', paths);\n if (mode === undefined || path === undefined || entries.has(path)) return undefined;\n entries.set(path, {\n acl: flag === '+',\n gid: Number(gid),\n kind: KINDS.get(type ?? '') ?? 'other',\n mode,\n size: Number(size),\n uid: Number(uid),\n });\n }\n return entries.size === paths.length ? entries : undefined;\n};\n\n/**\n * Read every path in one call, as the deploying user — no sudo, the same read at plan time and\n * before the write. ⛔ Anything but a complete, understood listing is a SudoRefusedError: a chain\n * we could not read is a chain we cannot say is root's alone.\n */\nexport const readListing = async (\n base: HostRunner,\n ls: string,\n what: string,\n paths: readonly string[],\n): Promise<Map<string, Listed>> => {\n const result = await base.exec([ls, '-ldn', '--', ...paths]);\n const entries = result.exitCode === 0 ? parseListing(result.stdout, paths) : undefined;\n if (entries === undefined) {\n throw new SudoRefusedError(\n `sudoRunner ${what}: could not read ${paths.join(', ')} (${ls} -ldn exit ` +\n `${String(result.exitCode)}: ${result.stderr.trim().slice(0, 200)}). Nothing ran as root.`,\n );\n }\n return entries;\n};\n",
55
56
  "/**\n * The checks sudo-runner.ts makes against the host, as the operator, before it runs a file or\n * directory operation as root. sudo-allowlist.ts checks the argv; this checks what the paths in\n * it actually are — the Linux twin of `../launchd/sudo-guard.ts`, rebuilt on `sudo-listing.ts`'s\n * ONE `ls -ldn` call instead of an lstat per directory, because ssh pays a handshake per call\n * (ssh-runner.ts: no multiplexing unless the caller opts in) where a local syscall pays nothing.\n *\n * ⛔ EVERY DIRECTORY FROM `/` DOWN TO THE FILE MUST BE ROOT'S ALONE, for the same reason the Mac\n * guard insists on it: a directory anyone else may write lets them swap what lies under it — a\n * symlink where the file was — between this read and the privileged call. A root-owned symlink\n * ABOVE the prefix (Debian's merged-`/usr`, `/lib` -> `usr/lib`) is the system's own and is\n * followed, exactly as `aboveDirs`/`betweenDirs` from the Mac guard already encode; a symlink AT\n * or BELOW the prefix is refused outright — a write should never chase one there.\n * ⛔ THE ACL SIGNAL IS THE `+` FLAG ALONE (sudo-listing.ts header): `ls`, not `getfacl`, which is\n * absent on the estate's Debian hosts. A directory that carries one is refused whatever it\n * grants — the guard cannot tell a read-only entry from a write one, so it fails closed.\n */\nimport type { FileStat, HostRunner, WriteOptions } from '../launchd/runner.ts';\nimport {\n aboveDirs,\n assertReadableBack,\n betweenDirs,\n canRead,\n modeProblem,\n operatorGroups,\n} from '../launchd/sudo-guard.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\nimport { type Listed, readListing } from './sudo-listing.ts';\n\nexport { aboveDirs, assertReadableBack, betweenDirs, canRead, modeProblem, operatorGroups };\n\nconst refuse = (path: string, message: string): Error =>\n new SudoRefusedError(`sshSudoRunner ${path}: ${message}`);\n\nconst rootOnlyProblem = (entry: Listed | undefined): string | undefined => {\n if (entry === undefined) return 'is missing';\n if (entry.kind !== 'directory') return `is a ${entry.kind}, not a directory`;\n if (entry.uid !== 0) return `is owned by uid ${String(entry.uid)}, not root`;\n if ((entry.mode & 0o022) !== 0) {\n return `is writable by group or other (mode ${entry.mode.toString(8).padStart(4, '0')})`;\n }\n if (entry.acl) return 'carries a POSIX ACL this runner cannot verify the grants of (ls -ldn `+`)';\n return undefined;\n};\n\n/** What must be at `path` itself, for the operation about to run there. */\nexport type ChainExpect = 'file' | 'file-or-absent' | 'directory' | 'absent';\n\n/**\n * ⚠️ NOT PART OF THE `ls -ldn` BATCH, on purpose — mirroring the Mac guard's own\n * `assertPlainPath`, whose ACL check also excludes `path` itself (`assertNoAclGrants(base,\n * path, [...above, prefix, ...dirs])`, never `path` in that list). `readListing`'s\n * `parseListing` requires every requested path to have a line (sudo-listing.ts), so a target\n * that is legitimately ABSENT — the common case for a create — would make the whole batched\n * read look unparseable if it were included. A plain `stat` handles \"nothing there\" correctly.\n */\nconst targetProblem = (entry: FileStat | undefined, expect: ChainExpect): string | undefined => {\n if (expect === 'absent')\n return entry === undefined ? undefined : `already exists (a ${entry.kind})`;\n if (entry === undefined) return expect === 'file-or-absent' ? undefined : 'is missing';\n if (expect === 'file-or-absent')\n return entry.kind === 'file' ? undefined : `is a ${entry.kind}, not a file`;\n return entry.kind === expect ? undefined : `is a ${entry.kind}, not a ${expect}`;\n};\n\n/**\n * Refuse a prefix that is not root-only, a symlink or wrong kind between the prefix and `path`,\n * an ACL anywhere in the chain, or a target that is not what `expect` says. ONE `ls -ldn` for the\n * directory chain, plus one plain `stat` for the target (see `targetProblem`'s note on why they\n * are separate calls). ⚠️ Reads only, as the operator — so `checkWrite` runs this at plan time too.\n */\nexport const assertGuardedChain = async (\n base: HostRunner,\n prefix: string,\n path: string,\n expect: ChainExpect,\n): Promise<FileStat | undefined> => {\n const above = aboveDirs(prefix);\n const between = betweenDirs(prefix, path);\n const chain = [...above, prefix, ...between];\n const listed = await readListing(base, '/usr/bin/ls', path, chain);\n for (const dir of above) {\n const entry = listed.get(dir);\n // ★ A root-owned symlink ABOVE the prefix is the system's own and is followed, as every path\n // lookup does; a symlink anywhere else in the chain is refused by rootOnlyProblem below.\n const problem =\n entry?.kind === 'symlink' && entry.uid === 0 ? undefined : rootOnlyProblem(entry);\n if (problem !== undefined) {\n throw refuse(\n path,\n `${dir}, above the declared prefix ${prefix}, ${problem}. Whoever may change it may swap ` +\n 'the prefix itself; every directory from / down must be root-only. Nothing ran as root.',\n );\n }\n }\n const prefixProblem = rootOnlyProblem(listed.get(prefix));\n if (prefixProblem !== undefined) {\n throw refuse(\n path,\n `the declared prefix ${prefix} ${prefixProblem}. Declare only a real directory that root ` +\n 'owns and only root may write. Nothing ran as root.',\n );\n }\n for (const dir of between) {\n const problem = rootOnlyProblem(listed.get(dir));\n if (problem !== undefined) {\n throw refuse(\n path,\n `${dir} ${problem}. Every directory from the prefix ${prefix} down to the file must be ` +\n 'one that root owns and only root may write. Nothing ran as root.',\n );\n }\n }\n const target = await base.stat(path);\n const problem = targetProblem(target, expect);\n if (problem !== undefined) throw refuse(path, `${problem}. Nothing ran as root.`);\n return target;\n};\n\n/**\n * The mode/owner and read-back checks for a file write under `prefix`, plus the path chain.\n * ★ Reads only, as the operator — the same checks run at plan time (`checkWrite`) and before the\n * install/mv pair. `expect` is `'file-or-absent'`: a write may create or replace.\n */\nexport const assertInstallable = async (\n base: HostRunner,\n prefix: string,\n path: string,\n options: WriteOptions,\n groups: readonly number[] | undefined,\n): Promise<void> => {\n const mode = modeProblem(options);\n if (mode !== undefined) {\n throw refuse(\n path,\n `${mode}. Declare a mode without those bits (0644, 0640, 0755), or give the file to its ` +\n 'real owner. Nothing ran as root.',\n );\n }\n await assertGuardedChain(base, prefix, path, 'file-or-absent');\n await assertReadableBack(base, path, options, groups);\n};\n",
56
- "/**\n * `sshSudoRunner.exec()`'s root branch: the host reads that decide whether a routed-to-root\n * directory or systemctl call may actually elevate. Split out of sudo-runner.ts, which keeps only\n * the wiring. sudo-allowlist.ts's `routeExec` already decided root vs operator vs refuse from the\n * argv alone; this is the part that needs the host.\n *\n * ⛔ THE FragmentPath CHECK IS WHAT MAKES `pveproxy.service` UNREACHABLE. A vendor unit's file\n * lives under `/usr/lib/systemd/system` or `/lib/systemd/system` — never a prefix this runner\n * would declare — so `enable`/`start`/… on it is refused before sudo runs. A unit with NO file\n * at all (FragmentPath empty) is let through for `stop`/`disable` only, because\n * `unit-lifecycle.ts` `deleteUnit` calls exactly those two on a unit whose file this same\n * delete already removed a moment before — refusing that would make a second, idempotent\n * delete pass fail.\n * 🔴 MEASURED (adversarial review, round 2, 2026-09-23): two gaps in this check, both closed here.\n * (1) A MASKED unit (`systemctl mask`, a symlink to `/dev/null`) also reads `FragmentPath=`\n * empty, so `enable`/`start`/`restart` on a masked `pveproxy.service` would have elevated —\n * `systemctl` itself would then refuse the write, but nothing here should even try; masking is\n * someone's deliberate decision (`unit-preflight.ts`'s `assertUsable` already refuses it at the\n * PROVIDER layer, and this is the same rule enforced again at the lowest level, in case a\n * caller reaches `exec()` directly). (2) The empty-FragmentPath exemption applied to EVERY\n * write verb, not just the two `deleteUnit` actually needs — so `enable`/`start`/`restart` on a\n * kernel-generated pseudo-unit with no file at all (`init.scope`, a `session-N.scope`; `.scope`\n * is a valid type in `unit-form.ts`'s `TYPES` set) would also have elevated. Grepped: no code\n * in this package ever calls `enable`/`start`/`restart` on a unit it has not itself just\n * written a file for, so narrowing the exemption to `stop`/`disable` costs nothing legitimate.\n */\nimport type { ExecResult, HostRunner } from '../launchd/runner.ts';\nimport { SYSTEMCTL_ABS, SudoRefusedError, canonicalize, prefixOf } from './sudo-allowlist.ts';\nimport { type ChainExpect, assertGuardedChain } from './sudo-guard.ts';\nimport type { Elevate } from './sudo-write.ts';\nimport { parseShow } from './systemctl.ts';\n\nconst DIR_EXPECT: Readonly<Record<string, ChainExpect>> = {\n chmod: 'directory',\n chown: 'directory',\n mkdir: 'absent',\n rmdir: 'directory',\n};\n\n/** The only two verbs `deleteUnit` ever sends against a unit whose file may already be gone. */\nconst EMPTY_FRAGMENT_OK: ReadonlySet<string> = new Set(['stop', 'disable']);\n\nconst unitStatusOf = async (\n base: HostRunner,\n unit: string,\n): Promise<{ readonly fragmentPath: string; readonly loadState: string }> => {\n const result = await base.exec([\n SYSTEMCTL_ABS,\n 'show',\n '--no-pager',\n '-p',\n 'FragmentPath,LoadState',\n '--',\n unit,\n ]);\n if (result.exitCode !== 0) {\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: could not read FragmentPath/LoadState (systemctl show exit ` +\n `${String(result.exitCode)}). Nothing ran as root.`,\n );\n }\n const fields = parseShow(result.stdout);\n return {\n fragmentPath: fields.get('FragmentPath') ?? '',\n loadState: fields.get('LoadState') ?? '',\n };\n};\n\n/** `argv` has already been routed to root; canonicalise it and run the read this shape needs. */\nexport const elevatedExec = (\n base: HostRunner,\n elevate: Elevate,\n prefixes: readonly string[],\n argv: readonly string[],\n): Promise<ExecResult> => {\n const canonical = canonicalize(argv);\n const expect = DIR_EXPECT[argv[0] ?? ''];\n if (expect !== undefined) {\n const path = argv[argv.length - 1] ?? '';\n const prefix = prefixOf(path, prefixes);\n return elevate(canonical, {}, async () => {\n // ★ routeExec already required a prefix to route here; this re-derives it rather than\n // trust the caller, so a future routing bug fails the guard instead of skipping it.\n if (prefix === undefined) {\n throw new SudoRefusedError(\n `sshSudoRunner ${path}: not under a declared prefix. Nothing ran as root.`,\n );\n }\n await assertGuardedChain(base, prefix, path, expect);\n });\n }\n if (canonical[0] !== SYSTEMCTL_ABS || canonical[1] === 'daemon-reload') return elevate(canonical);\n const verb = canonical[1] ?? '';\n const unit = canonical[3] ?? '';\n return elevate(canonical, {}, async () => {\n const { fragmentPath, loadState } = await unitStatusOf(base, unit);\n if (loadState === 'masked') {\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: is masked. Masking is someone's decision, not drift; unmask it ` +\n 'deliberately, then redeploy. Nothing ran as root.',\n );\n }\n if (fragmentPath === '') {\n if (EMPTY_FRAGMENT_OK.has(verb)) return;\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: has no unit file (FragmentPath empty), and ${verb} is not ` +\n 'stop/disable — refusing rather than run it against whatever systemd currently thinks ' +\n `${unit} is (a kernel-generated unit, say). Nothing ran as root.`,\n );\n }\n if (prefixOf(fragmentPath, prefixes) === undefined) {\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: FragmentPath ${fragmentPath} is outside every declared prefix ` +\n `(${prefixes.join(', ')}); refusing to touch a unit this runner does not own. Nothing ran as root.`,\n );\n }\n });\n};\n",
57
+ "/**\n * `sshSudoRunner.exec()`'s root branch: the host reads that decide whether a routed-to-root\n * directory or systemctl call may actually elevate. Split out of sudo-runner.ts, which keeps only\n * the wiring. sudo-allowlist.ts's `routeExec` already decided root vs operator vs refuse from the\n * argv alone; this is the part that needs the host.\n *\n * ⛔ THE FragmentPath CHECK IS WHAT MAKES `pveproxy.service` UNREACHABLE. A vendor unit's file\n * lives under `/usr/lib/systemd/system` or `/lib/systemd/system` — never a prefix this runner\n * would declare — so `enable`/`start`/… on it is refused before sudo runs. A unit with NO file\n * at all (FragmentPath empty) is let through for `stop`/`disable` only, because\n * `unit-lifecycle.ts` `deleteUnit` calls exactly those two on a unit whose file this same\n * delete already removed a moment before — refusing that would make a second, idempotent\n * delete pass fail.\n * 🔴 MEASURED (adversarial review, round 2, 2026-09-23): two gaps in this check, both closed here.\n * (1) A MASKED unit (`systemctl mask`, a symlink to `/dev/null`) also reads `FragmentPath=`\n * empty, so `enable`/`start`/`restart` on a masked `pveproxy.service` would have elevated —\n * `systemctl` itself would then refuse the write, but nothing here should even try; masking is\n * someone's deliberate decision (`unit-preflight.ts`'s `assertUsable` already refuses it at the\n * PROVIDER layer, and this is the same rule enforced again at the lowest level, in case a\n * caller reaches `exec()` directly). (2) The empty-FragmentPath exemption applied to EVERY\n * write verb, not just the two `deleteUnit` actually needs — so `enable`/`start`/`restart` on a\n * kernel-generated pseudo-unit with no file at all (`init.scope`, a `session-N.scope`; `.scope`\n * is a valid type in `unit-form.ts`'s `TYPES` set) would also have elevated. Grepped: no code\n * in this package ever calls `enable`/`start`/`restart` on a unit it has not itself just\n * written a file for, so narrowing the exemption to `stop`/`disable` costs nothing legitimate.\n * 🔴 MEASURED, CT100 deploy 2026-09-26 00:11Z: a THIRD gap, this one refusing a call that should\n * have been allowed. `Podman.Container caddy`'s generated `caddy.service` has\n * `FragmentPath=/run/systemd/generator/caddy.service` — Quadlet's generator output, never a\n * path this runner would ever declare as a prefix (nothing writes there directly) — so `restart`\n * was refused outright, even though the `.container` FILE THAT GENERATED IT lives at\n * `/etc/containers/systemd/caddy.container`, squarely under this runner's own\n * `/etc/containers/systemd` prefix, and this SAME runner had just written it. `SourcePath` is\n * the generator's own record of that file (systemctl.ts's header, MEASURED on CT100). So a\n * generated unit is now also reachable when its `FragmentPath` is the generator's OWN output\n * directory (`GENERATOR_DIRECTORIES` below) AND its `SourcePath` is under a declared prefix —\n * the thing this runner actually owns is the `.container` file, and the generated unit is\n * systemd's own derivative of it, not a foreign unit. Everything the check refused before still\n * refuses: a vendor unit's `FragmentPath` (`/usr/lib/systemd/system/...`) is not under a\n * generator directory at all; a generated unit with no `SourcePath`, or one outside every\n * prefix (a `.container` file elsewhere in Quadlet's OWN search path —\n * `podman-systemd.unit(5)` — that this runner was never told to own), still refuses.\n */\nimport type { ExecResult, HostRunner } from '../launchd/runner.ts';\nimport { GENERATED_UNIT_DIRECTORY } from './container-generator.ts';\nimport { SYSTEMCTL_ABS, SudoRefusedError, canonicalize, prefixOf } from './sudo-allowlist.ts';\nimport { type ChainExpect, assertGuardedChain } from './sudo-guard.ts';\nimport type { Elevate } from './sudo-write.ts';\nimport { parseShow } from './systemctl.ts';\n\n/**\n * ★ ONLY THE `.late` VARIANT ADDED — `container-generator.ts`'s own header names it as part of\n * systemd's real Unit File Load Path; `.early` is not named anywhere in this repo and no\n * generator this family drives (Quadlet writes only the base directory) uses it, so it stays\n * out rather than widen the check on an unmeasured guess.\n */\nconst GENERATOR_DIRECTORIES: readonly string[] = [\n GENERATED_UNIT_DIRECTORY,\n `${GENERATED_UNIT_DIRECTORY}.late`,\n];\n\nconst isUnderGeneratorDirectory = (fragmentPath: string): boolean =>\n GENERATOR_DIRECTORIES.some((dir) => fragmentPath.startsWith(`${dir}/`));\n\nconst DIR_EXPECT: Readonly<Record<string, ChainExpect>> = {\n chmod: 'directory',\n chown: 'directory',\n mkdir: 'absent',\n rmdir: 'directory',\n};\n\n/** The only two verbs `deleteUnit` ever sends against a unit whose file may already be gone. */\nconst EMPTY_FRAGMENT_OK: ReadonlySet<string> = new Set(['stop', 'disable']);\n\nconst unitStatusOf = async (\n base: HostRunner,\n unit: string,\n): Promise<{\n readonly fragmentPath: string;\n readonly loadState: string;\n readonly sourcePath: string;\n}> => {\n const result = await base.exec([\n SYSTEMCTL_ABS,\n 'show',\n '--no-pager',\n '-p',\n // ★ SourcePath added for the Quadlet-generated-unit exception below — same property\n // systemctl.ts's own `showUnit` already reads for `Podman.Container`.\n 'FragmentPath,LoadState,SourcePath',\n '--',\n unit,\n ]);\n if (result.exitCode !== 0) {\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: could not read FragmentPath/LoadState/SourcePath (systemctl show ` +\n `exit ${String(result.exitCode)}). Nothing ran as root.`,\n );\n }\n const fields = parseShow(result.stdout);\n return {\n fragmentPath: fields.get('FragmentPath') ?? '',\n loadState: fields.get('LoadState') ?? '',\n sourcePath: fields.get('SourcePath') ?? '',\n };\n};\n\n/** `argv` has already been routed to root; canonicalise it and run the read this shape needs. */\nexport const elevatedExec = (\n base: HostRunner,\n elevate: Elevate,\n prefixes: readonly string[],\n argv: readonly string[],\n): Promise<ExecResult> => {\n const canonical = canonicalize(argv);\n const expect = DIR_EXPECT[argv[0] ?? ''];\n if (expect !== undefined) {\n const path = argv[argv.length - 1] ?? '';\n const prefix = prefixOf(path, prefixes);\n return elevate(canonical, {}, async () => {\n // ★ routeExec already required a prefix to route here; this re-derives it rather than\n // trust the caller, so a future routing bug fails the guard instead of skipping it.\n if (prefix === undefined) {\n throw new SudoRefusedError(\n `sshSudoRunner ${path}: not under a declared prefix. Nothing ran as root.`,\n );\n }\n await assertGuardedChain(base, prefix, path, expect);\n });\n }\n if (canonical[0] !== SYSTEMCTL_ABS || canonical[1] === 'daemon-reload') return elevate(canonical);\n const verb = canonical[1] ?? '';\n const unit = canonical[3] ?? '';\n return elevate(canonical, {}, async () => {\n const { fragmentPath, loadState, sourcePath } = await unitStatusOf(base, unit);\n if (loadState === 'masked') {\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: is masked. Masking is someone's decision, not drift; unmask it ` +\n 'deliberately, then redeploy. Nothing ran as root.',\n );\n }\n if (fragmentPath === '') {\n if (EMPTY_FRAGMENT_OK.has(verb)) return;\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: has no unit file (FragmentPath empty), and ${verb} is not ` +\n 'stop/disable — refusing rather than run it against whatever systemd currently thinks ' +\n `${unit} is (a kernel-generated unit, say). Nothing ran as root.`,\n );\n }\n if (prefixOf(fragmentPath, prefixes) !== undefined) return;\n // ⛔ THE QUADLET CASE — see this file's header. A generator's OWN output directory is never a\n // prefix, so this is not \"found it under a prefix, done\" — it is \"found it under the\n // generator, so check what GENERATED it instead.\"\n if (\n isUnderGeneratorDirectory(fragmentPath) &&\n sourcePath !== '' &&\n prefixOf(sourcePath, prefixes) !== undefined\n ) {\n return;\n }\n const sourceNote =\n sourcePath === '' ? '' : `, and its SourcePath ${sourcePath} is not under one either`;\n throw new SudoRefusedError(\n `sshSudoRunner ${unit}: FragmentPath ${fragmentPath} is outside every declared prefix ` +\n `(${prefixes.join(', ')})${sourceNote}; refusing to touch a unit this runner does not ` +\n 'own. Nothing ran as root.',\n );\n });\n};\n",
57
58
  "/**\n * Where sudo-runner.ts puts a file's bytes before `install` copies them into a fresh temp file\n * that `mv` then renames into place. The Linux twin of `../launchd/sudo-stage.ts` — rewritten,\n * not reused, because staging happens ON THE REMOTE HOST through the base runner's own calls,\n * never through `node:fs` against this process's local disk.\n *\n * ★ WHY STAGE AT ALL. The operator cannot write inside a root-owned directory, and the bytes must\n * not travel through argv (they would reach the log and `ps`). So they are written, as the\n * operator, to a private file on the SAME host, and `install` copies that one file.\n * ⛔ A 0700 DIRECTORY, A 0600 FILE: between the write and the install, nobody but the operator and\n * root can read the bytes or swap the file. `mktemp -d` creates its directory 0700 by\n * construction (GNU coreutils); the payload's own mode is asked for explicitly.\n */\nimport type { HostRunner } from '../launchd/runner.ts';\n\n/** A file staged for `install`, and how to remove it again. */\nexport type Staged = { readonly path: string; readonly dispose: () => Promise<void> };\n\nconst refuse = (message: string): Error => new Error(`sshSudoRunner stage: ${message}`);\n\n/** `stage` in `SshSudoDeps` — closes over the base runner so every call writes to the same host. */\nexport const stageRemote =\n (base: HostRunner) =>\n async (bytes: Uint8Array): Promise<Staged> => {\n const made = await base.exec(['/usr/bin/mktemp', '-d']);\n if (made.exitCode !== 0)\n throw refuse(`mktemp -d -> ${String(made.exitCode)}: ${made.stderr.trim()}`);\n const dir = made.stdout.trim();\n if (dir === '' || !dir.startsWith('/')) {\n throw refuse(`mktemp -d printed ${JSON.stringify(made.stdout)}, not an absolute path`);\n }\n const dispose = async () => {\n const removed = await base.exec(['/usr/bin/rm', '-rf', '--', dir]);\n // ⚠️ Best-effort: a leaked 0700 temp dir the operator owns is a nuisance, never a secret\n // exposure, so disposal failing never masks the write's own success or failure.\n if (removed.exitCode !== 0) {\n process.stderr.write(\n `sshSudoRunner: could not remove staging dir ${dir}: ${removed.stderr.trim()}\\n`,\n );\n }\n };\n try {\n const path = `${dir}/staged`;\n await base.writeFileAtomic(path, bytes, { mode: 0o600 });\n return { dispose, path };\n } catch (cause) {\n await dispose();\n throw cause;\n }\n };\n",
58
59
  "/**\n * sshSudoRunner's `writeFileAtomic`, split out of sudo-runner.ts so that file stays the wiring.\n *\n * ⛔ WHY NOT `install` STRAIGHT TO `path`, THE WAY THE MAC RUNNER DOES. GNU `install` opens the\n * destination and writes THROUGH it (ssh-scripts.ts's header); there is no macOS-style stage-\n * and-rename built in. So this stages the bytes, `install`s them into a FRESH temp file in the\n * destination's own directory (fresh, so \"writes through\" changes nothing that mattered), then\n * `mv`s that temp file onto `path` — rename(2), same directory, so the swap is atomic and never\n * torn, exactly what `ssh-scripts.ts writeScript` already does for the unprivileged case.\n * ⛔ `install` NEVER TAKES `-o`/`-g` — see sudo-allowlist-chown.ts's header (coreutils' own\n * `get_ids()` has no way to force numeric ids, unlike `chown`). It always installs owned by\n * whoever `sudo` runs it as; a non-root owner or group is set afterward by a separate,\n * `+`-forced `chown` on that same temp file, before `mv`.\n * ⛔ THE DERIVED TEMP IS VERIFIED ABSENT, AS THE OPERATOR, BEFORE `install` RUNS. A 12-hex-char\n * collision is astronomically unlikely, but \"unlikely\" is not the bar a privileged write is held\n * to elsewhere in this runner, and the check costs one `stat` this runner already knows how to do.\n * ⛔ ON ANY FAILURE AFTER `install` SUCCEEDS, THE TEMP IS REMOVED (also as root, since only root\n * can now touch it). A left-behind `.foo.hf-xxxx.tmp` would read, on the next plan, as an extra\n * file under the prefix that guard would find and no code would explain — and if THAT cleanup\n * itself fails, the thrown error says so and names the path, rather than silently swallowing it.\n */\nimport { randomBytes } from 'node:crypto';\nimport type { ExecResult, HostRunner, WriteOptions } from '../launchd/runner.ts';\nimport { CHOWN, INSTALL, MV, RM, SudoRefusedError, octalMode, prefixOf } from './sudo-allowlist.ts';\nimport { assertInstallable, operatorGroups } from './sudo-guard.ts';\nimport type { Staged } from './sudo-stage.ts';\n\nconst basename = (path: string): string => path.slice(path.lastIndexOf('/') + 1);\nconst dirOf = (path: string): string => path.slice(0, path.lastIndexOf('/')) || '/';\n\n/** `<dir>/.<basename>.hf-<12 hex>.tmp`, in `dest`'s own directory — never anywhere else. */\nexport const deriveTemp = (dest: string): string =>\n `${dirOf(dest)}/.${basename(dest)}.hf-${randomBytes(6).toString('hex')}.tmp`;\n\n/** What one privileged call, already checked against the allowlist, comes back as when it fails. */\nconst mustSucceed = (result: ExecResult, argv: readonly string[]): void => {\n if (result.exitCode !== 0) {\n throw new Error(\n `sudo -n ${JSON.stringify(argv)} -> ${String(result.exitCode)}: ${result.stderr.trim().slice(0, 300)}`,\n );\n }\n};\n\n/**\n * The cleanup `rm`'s own failure, for the merged error below. 🔴 MEASURED (adversarial review,\n * round 3, 2026-09-23): a plain `ExecResult` (the shape `elevate()` resolves with for a command\n * that RAN but exited non-zero) has no useful `toString()` — `String(cleaned)` printed\n * `[object Object]`, silently dropping the one thing an operator doing manual cleanup needs:\n * what `rm` actually said. A thrown `Error` (a refused or transport-failed `rm`) still prints\n * its own message correctly, so only the `ExecResult` shape needed a name.\n */\nconst describeCleanupFailure = (cleaned: unknown): string => {\n if (\n typeof cleaned === 'object' &&\n cleaned !== null &&\n 'exitCode' in cleaned &&\n 'stderr' in cleaned\n ) {\n const result = cleaned as ExecResult;\n return `exit ${String(result.exitCode)}: ${result.stderr.trim().slice(0, 300)}`;\n }\n return cleaned instanceof Error ? cleaned.message : String(cleaned);\n};\n\n/** A privileged call: allowlisted, logged, run. Shared with sudo-runner.ts's own exec() routing. */\nexport type Elevate = (\n argv: readonly string[],\n context?: { readonly staged?: string; readonly temp?: string },\n before?: () => Promise<unknown>,\n) => Promise<ExecResult>;\n\n/**\n * Plan-time and write-time share this: valid mode, the path chain, mode/owner refusals and the\n * read-back — everything a write can be refused for before anything is staged or run as root.\n * `undefined` outside every prefix, where the caller falls back to `base` directly.\n */\nexport const vetWrite = async (\n base: HostRunner,\n prefixes: readonly string[],\n path: string,\n options: WriteOptions,\n): Promise<{ readonly mode: string; readonly prefix: string } | undefined> => {\n const prefix = prefixOf(path, prefixes);\n if (prefix === undefined) return undefined;\n const mode = octalMode(options.mode);\n if (mode === undefined)\n throw new SudoRefusedError(`sshSudoRunner ${path}: mode must be 0–0o7777`);\n const groups = await operatorGroups(base);\n await assertInstallable(base, prefix, path, options, groups);\n return { mode, prefix };\n};\n\n/** `+<uid>`, `:+<gid>`, or `+<uid>:+<gid>` — omitted sides leave that half of ownership alone. */\nconst safeOwnerSpec = (uid: number | undefined, gid: number | undefined): string =>\n `${uid === undefined ? '' : `+${uid}`}${gid === undefined ? '' : `:+${gid}`}`;\n\n/**\n * A non-root owner or group, when one was declared: `install` leaves the temp root:root (see the\n * file header), so this is the ONLY call that can hand it to someone else. `undefined` from either\n * side when that half already matches `install`'s own default (0/omitted), so a plain root-owned\n * write costs nothing extra here.\n */\nconst chownNeeded = (\n options: WriteOptions,\n): { readonly uid?: number; readonly gid?: number } | undefined => {\n const uid = options.uid !== undefined && options.uid !== 0 ? options.uid : undefined;\n const gid = options.gid !== undefined && options.gid !== 0 ? options.gid : undefined;\n return uid === undefined && gid === undefined\n ? undefined\n : { ...(uid === undefined ? {} : { uid }), ...(gid === undefined ? {} : { gid }) };\n};\n\n/**\n * Stage, `install` into a fresh temp file beside `path`, `chown` it if a non-root owner was\n * declared, `mv` it into place. Cleans up the temp on a failed `mv`, and always disposes the\n * stage — whether or not the write succeeded.\n */\nexport const writeUnderPrefix = async (\n base: HostRunner,\n elevate: Elevate,\n stage: (bytes: Uint8Array) => Promise<Staged>,\n path: string,\n bytes: Uint8Array,\n options: WriteOptions,\n mode: string,\n): Promise<void> => {\n const temp = deriveTemp(path);\n const staged = await stage(bytes);\n try {\n const installArgv = [INSTALL, '-m', mode, '-T', '--', staged.path, temp];\n const before = async () => {\n const existing = await base.stat(temp);\n if (existing !== undefined) {\n throw new SudoRefusedError(\n `sshSudoRunner ${temp}: already exists (a ${existing.kind}); refusing to install over ` +\n 'it. Nothing ran as root.',\n );\n }\n };\n mustSucceed(await elevate(installArgv, { staged: staged.path, temp }, before), installArgv);\n try {\n const owner = chownNeeded(options);\n if (owner !== undefined) {\n const chownArgv = [CHOWN, safeOwnerSpec(owner.uid, owner.gid), '--', temp];\n mustSucceed(await elevate(chownArgv, { temp }), chownArgv);\n }\n const mvArgv = [MV, '-f', '-T', '--', temp, path];\n mustSucceed(await elevate(mvArgv, { temp }), mvArgv);\n } catch (cause) {\n const rmArgv = [RM, '-f', '--', temp];\n const cleaned = await elevate(rmArgv, { temp })\n .then((result) => (result.exitCode === 0 ? undefined : result))\n .catch((rmCause: unknown) => rmCause);\n if (cleaned !== undefined) {\n throw new Error(\n `${cause instanceof Error ? cause.message : String(cause)} — AND removing the leftover ` +\n `temp ${temp} also failed (${describeCleanupFailure(cleaned)}); it needs manual ` +\n 'cleanup as root.',\n { cause },\n );\n }\n throw cause;\n }\n } finally {\n await staged.dispose();\n }\n};\n",
59
60
  "/**\n * sshSudoRunner(): the Linux twin of `../launchd/sudo-runner.ts` — the same idea (the deploy runs\n * as the operator, and only a fixed allowlist of calls goes through `sudo -n`), rebuilt for a\n * non-root ssh user with passwordless sudo instead of a local macOS session. See\n * docs/linux-sudo.md for the full argv table and what is measured versus reasoned.\n *\n * ⛔ `sudo -n`, NEVER A PROMPT — same rule, same reason: a deploy that stops to ask for a password\n * is the \"no silent sudo\" failure this exists to prevent.\n * ⛔ EVERY PRIVILEGED ARGV IS LOGGED BEFORE IT RUNS, and a file's bytes never reach argv or the\n * log: they travel through the staged file (sudo-stage.ts) alone.\n * ⛔ A PLAN NEVER ELEVATES. `checkWrite` and every read run through `base` — the plain\n * `sshRunner()` — never through sudo. Nothing here probes sudo at construction.\n * ★ PROMISES, NOT EFFECTS, ON PURPOSE — the same divergence `../launchd/runner.ts` documents\n * (H3 in the provider-standard skill): a consumer's own runner is a plain async implementation.\n */\nimport type { HostRunner } from '../launchd/runner.ts';\nimport { sudoRefusal } from '../launchd/sudo-said.ts';\nimport { type SshRunnerOptions, sshRunner } from './ssh-runner.ts';\nimport { elevatedExec } from './sudo-exec.ts';\nimport {\n CHMOD,\n CHOWN,\n INSTALL,\n MKDIR,\n MV,\n RM,\n RMDIR,\n SUDO,\n SYSTEMCTL_ABS,\n SudoRefusedError,\n checkPrefixes,\n prefixOf,\n privilegedProblem,\n routeExec,\n} from './sudo-allowlist.ts';\nimport { assertGuardedChain } from './sudo-guard.ts';\nimport { type Staged, stageRemote } from './sudo-stage.ts';\nimport { type Elevate, vetWrite, writeUnderPrefix } from './sudo-write.ts';\n\nexport { SudoRefusedError };\n\nexport type SshSudoRunnerOptions = SshRunnerOptions & {\n /** Directories root may write under. Required; absolute, normalised, never `/`. */\n readonly prefixes: readonly string[];\n /** One line per privileged argv, before it runs. @default a line on stderr */\n readonly log?: (line: string) => void;\n};\n\n/** What a sudo runner is built from. ★ Split out so the tests swap the host, never the logic. */\nexport type SshSudoDeps = {\n /** Runs everything, including `sudo` itself. `await sshRunner(options)` for the real one. */\n readonly base: HostRunner;\n readonly stage: (bytes: Uint8Array) => Promise<Staged>;\n readonly log: (line: string) => void;\n};\n\nconst outsidePrefixHint =\n (path: string, prefixes: readonly string[]) =>\n (cause: unknown): never => {\n const message = cause instanceof Error ? cause.message : String(cause);\n if (!/permission denied|operation not permitted/i.test(message)) throw cause;\n throw new Error(\n `sshSudoRunner ${path}: the operator could not do this, and the path is under no declared ` +\n `prefix (${prefixes.join(', ')}). If root owns its directory, declare that directory as ` +\n 'a prefix.',\n { cause },\n );\n };\n\nexport const makeSshSudoRunner = (prefixList: readonly string[], deps: SshSudoDeps): HostRunner => {\n const prefixes = checkPrefixes(prefixList);\n const { base } = deps;\n\n /** ⛔ THE ONE PLACE `sudo` IS SPAWNED: allowlist, then any host check (`before`), then the log\n * line, then `sudo -n -- argv`. Shared by exec()'s root branch and by writeFileAtomic. */\n const elevate: Elevate = async (argv, context, before) => {\n const shown = JSON.stringify(argv);\n const problem = privilegedProblem(argv, { prefixes, ...context });\n if (problem !== undefined)\n throw new SudoRefusedError(`sshSudoRunner refused ${shown}: ${problem}`);\n await before?.();\n deps.log(`homeflare/linux sudo -n ${shown}`);\n const result = await base.exec([SUDO, '-n', '--', ...argv]);\n const refused = sudoRefusal(shown, result);\n if (refused !== undefined) throw refused;\n return result;\n };\n\n return {\n checkWrite: async (path, options) => {\n await vetWrite(base, prefixes, path, options);\n },\n effectiveUid: () => base.effectiveUid(),\n exec: async (argv) => {\n const route = routeExec(argv, prefixes);\n if ('refuse' in route) throw new SudoRefusedError(`sshSudoRunner: ${route.refuse}`);\n if (route.as === 'operator') return base.exec(argv);\n return elevatedExec(base, elevate, prefixes, argv);\n },\n lookupGroup: (nameOrId) => base.lookupGroup(nameOrId),\n lookupUser: (nameOrId) => base.lookupUser(nameOrId),\n privileged: true,\n readFile: (path) => base.readFile(path),\n removeFile: async (path) => {\n const prefix = prefixOf(path, prefixes);\n if (prefix === undefined)\n return base.removeFile(path).catch(outsidePrefixHint(path, prefixes));\n // ★ Nothing there is success without a privileged call, so an idempotent delete logs nothing.\n const target = await assertGuardedChain(base, prefix, path, 'file-or-absent');\n if (target === undefined) return;\n const argv = [RM, '-f', '--', path];\n const result = await elevate(argv);\n if (result.exitCode !== 0) {\n throw new Error(\n `sudo -n ${JSON.stringify(argv)} -> ${String(result.exitCode)}: ${result.stderr.trim().slice(0, 300)}`,\n );\n }\n },\n sleep: (ms) => base.sleep(ms),\n stat: (path) => base.stat(path),\n writeFileAtomic: async (path, bytes, options) => {\n const vetted = await vetWrite(base, prefixes, path, options);\n if (vetted === undefined) {\n return base.writeFileAtomic(path, bytes, options).catch(outsidePrefixHint(path, prefixes));\n }\n await writeUnderPrefix(base, elevate, deps.stage, path, bytes, options, vetted.mode);\n },\n };\n};\n\nconst REQUIRED_PROGRAMS = [SUDO, INSTALL, MV, RM, MKDIR, CHMOD, CHOWN, RMDIR, SYSTEMCTL_ABS];\n\n/**\n * ★ READ-ONLY, OPTIONAL. One combined `test -x` so a missing coreutils package or a systemd-free\n * container fails at construction with a clear message, instead of at the first deploy step\n * that happens to need it. Never probes sudo itself.\n */\nconst checkProgramsExist = async (base: HostRunner, host: string): Promise<void> => {\n const script = REQUIRED_PROGRAMS.map(\n (p) => `test -x '${p}' || { echo \"$0: ${p}\"; exit 1; }`,\n ).join(' && ');\n const result = await base.exec(['/bin/sh', '-c', script, 'sshSudoRunner']);\n if (result.exitCode !== 0) {\n throw new Error(\n `sshSudoRunner ${host}: ${result.stdout.trim() || result.stderr.trim()} is missing or not ` +\n 'executable on this host. sshSudoRunner sends absolute GNU coreutils and systemd paths.',\n );\n }\n};\n\n/** The real sudo runner: `sshRunner()` for everything, `/usr/bin/sudo -n` for the allowlist. */\nexport const sshSudoRunner = async (options: SshSudoRunnerOptions): Promise<HostRunner> => {\n const base = await sshRunner(options);\n await checkProgramsExist(base, options.host);\n return makeSshSudoRunner(options.prefixes, {\n base,\n log:\n options.log ??\n ((line) => {\n process.stderr.write(`${line}\\n`);\n }),\n stage: stageRemote(base),\n });\n};\n"
60
61
  ],
61
- "mappings": "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",
62
- "debugId": "F28A7095F5BC6E5964756E2164756E21",
62
+ "mappings": "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",
63
+ "debugId": "47589007F27006E864756E2164756E21",
63
64
  "names": []
64
65
  }