Skip to content

Commit 707c8e9

Browse files
committed
authoring update
1 parent 4c56a8f commit 707c8e9

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

src/prj/Eigenverft.Manifested.Package/AgentSkills/PackageDefinitionAuthoring.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ Use a compact table or bullet list with one row per relevant check:
155155
- `Artifact hash verification`
156156
- `Publisher signature verification`
157157
- `Target/readiness consistency`
158+
- `Install-root-free readiness compatibility`
158159
- `Known runtime blocker status`
159160
- `Raw JSON schema validation`
160161
- `Test-PackageDefinitionCatalog`
@@ -168,6 +169,8 @@ For installer-backed definitions, the installer evidence rows are required and m
168169

169170
For machine/admin installers, the default-location decision row must say whether custom install-directory arguments were omitted. If they were not omitted, cite the user request or vendor documentation that explicitly requires a custom target directory for normal deployment.
170171

172+
If the install operation has no schema `installDirectory`, or `assigned.install.targetKind` is `machinePrerequisite`, the install-root-free readiness row is required. It must say which readiness and removal checks were reviewed and whether any install-relative checks remain.
173+
171174
The resolved acquisition URL row must show the exact final URL or path after `baseUri`, `sourcePath`, `urlTemplate`, `{version}`, and `{releaseTag}` resolution for every target artifact. Do not count a hash check as passed if the JSON would resolve to a different URL or path than the one actually downloaded.
172175

173176
Use `Passed` only when the command was actually executed or the source was actually opened/read during the current task. Do not mark a check as passed because it is planned, recommended, inferred from prior conversation, or expected to pass. If a required check is `Failed` or `Not run`, do not call the package complete; report the blocker or explain why the task is draft-only/incomplete. If no vendor installer documentation or no generic corroborating source was found for installer kind or switches, mark the relevant row `Failed` and stop instead of guessing.
@@ -281,6 +284,10 @@ Before writing `packageOperations.assigned.install`, classify the artifact in th
281284

282285
For machine/admin installers, prefer the vendor default location plus registry/existing-install discovery and installer-backed removal when available. If using `runInstaller`, `targetKind: machinePrerequisite` is acceptable only when readiness can be proven without an install-directory root, such as registry checks or another machine-level signal. If the package must expose app files, shims, or relative file probes but the schema cannot discover the installer-owned directory after install, stop instead of inventing a package-owned install path.
283286

287+
Install-root-free means no install-relative runtime checks. When `assigned.install.targetKind` is `machinePrerequisite`, or when the selected install operation has no schema `installDirectory`, do not use readiness `files`, `directories`, `commandChecks`, `metadataFiles`, `signatures`, or `fileDetails`, and do not define app/file probes that depend on an installed-directory-relative path. Use only registry, PowerShell module, or other machine-level signals that the runtime can evaluate without `InstallDirectory`. If the intended package needs installed files, app launchers, signatures, or file details to prove readiness, stop for a schema/runtime decision.
288+
289+
Apply the same compatibility rule to removal. If `packageOperations.removed.operation.kind` is `none`, do not require absence checks that depend on install-relative files, directories, apps, signatures, file details, metadata files, or command checks. Use only absence signals that the runtime can evaluate without an uninstall action and without an install directory, or stop and report that removed-state verification cannot be represented.
290+
284291
Sanity check before signing: if `assigned.install.commandArguments` contains `{installDirectory}`, the selected install operation must have a real schema `installDirectory` property and the artifact branch above must be package-managed. Otherwise remove the custom directory argument or stop.
285292

286293
Total Commander-style example: a vendor custom EXE admin installer is not NSIS or Inno just because it accepts silent switches and an install folder. Do not model it as `nsisInstaller` or `innoSetupInstaller`, and do not pass `{installDirectory}` unless the user explicitly asked for a custom location.
@@ -321,6 +328,8 @@ Stop if the latest version cannot be proven from official sources, an artifact f
321328
- Every `vendorDownload` candidate resolves to the exact artifact location that was checked for existence, hash, and publisher signature.
322329
- `packageOperations.assigned.install` uses one exact schema-defined operation shape; no extra fields are added to make a custom installer work.
323330
- Machine/admin installer command arguments omit custom install-directory values unless explicitly required by the user or vendor documentation.
331+
- If `assigned.install.targetKind` is `machinePrerequisite`, or the install operation has no schema `installDirectory`, readiness is install-root-free: no readiness `files`, `directories`, `commandChecks`, `metadataFiles`, `signatures`, `fileDetails`, or app/file probes that depend on an install-relative path.
332+
- If `packageOperations.removed.operation.kind` is `none`, absence verification does not require install-relative files, directories, apps, signatures, file details, metadata files, or command checks.
324333
- `discovery.presence` and `readyStateCheck.require` can succeed for every selectable artifact target. If separate x64/x86 targets install different executable names, use an artifact that satisfies one shared readiness model or stop for a schema/runtime decision.
325334
- Do not sign or publish JSON with a known acquisition, readiness, or install-time blocker unless the user explicitly requested a signed blocked artifact for testing.
326335
- No credentials, tokens, local private paths, or machine-specific secrets are embedded.

0 commit comments

Comments
 (0)