psadt-deploy-skill 0.34.0 → 0.34.2

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 (2) hide show
  1. package/README.md +18 -41
  2. package/package.json +37 -37
package/README.md CHANGED
@@ -434,44 +434,21 @@ The two most recent releases are below. **[CHANGELOG.md](CHANGELOG.md)** carries
434
434
  every release since 0.1.0, and nothing is ever removed from it - this section is a window onto it, not a
435
435
  second copy to keep in sync.
436
436
 
437
- ### 0.34.0 - 2026-09-16
438
- - **Added: `-TrustedPublisherCert` on `Invoke-PsadtSandboxTest.ps1`.** An installer that stages a
439
- third-party driver raises the Windows "install device software?" prompt unless the signer is already in
440
- `TrustedPublisher` - and in the guest that prompt is **invisible**, because every action runs as SYSTEM
441
- through a scheduled task and draws nothing on the desktop. The installer waits for an answer nobody can
442
- give and the phase burns its whole timeout, looking exactly like a slow installer. Pass the `.cer` and
443
- the harness imports it during GuestPrepare, the same thing an Intune `RootCATrustedCertificates` profile
444
- does on the fleet. Measured on Time-Access 3010 / EDIsecure: **25 minutes of timeout versus 43 seconds**.
445
- The import uses `certutil` (`Import-Certificate` returns `E_ACCESSDENIED` in the guest even when
446
- elevated) and is **verified by reading the store back** - a failed import is indistinguishable from a
447
- successful one when only the return value is logged, and that cost a full run.
448
- - **Fixed: the elapsed timer in the guest window stopped counting.** It rendered `progress.json` verbatim,
449
- but `Update-Ui` returns early when that file has not changed - right for the phase list, fatal for a
450
- clock, and phases that are not an action wait loop never rewrite the file at all (GuestPrepare alone can
451
- sit there for 90 seconds). The one element whose job is to prove the run is alive was frozen exactly
452
- when that gets asked. It now ticks on the window's own 1s timer and re-syncs on every file value.
453
- - **Fixed: the heartbeat was up to 20 seconds stale** - the guest wrote every 10s and the host read every
454
- 10s, and the two stacked. Both are 1s now; the console line and transcript keep the coarser beat so
455
- phase boundaries stay legible.
456
- - Phase 6.1 now documents cancelling with `STOP.txt` (killing the process orphans `vmmemWindowsSandbox`
457
- and blocks every further run) and scoping with `-Scenarios` while iterating. Suite 624, unchanged by this release - the new behaviour is guarded by the existing sandbox-harness and progress-UI tests.
458
- ### 0.33.0 - 2026-09-16
459
- - **Fixed: the Phase 2 research fan-out is gated.** `SKILL.md` ordered it in the imperative - *"Dispatch
460
- the three Researcher roles concurrently"* - one line above the two probe sentences, and rule 1 routed
461
- every unknown into it because asking is forbidden. Three agents ran whether or not anyone needed them;
462
- on an app already installed on the packaging machine, one such run cost 400k tokens to rediscover a
463
- `QuietUninstallString` the Uninstall registry had been holding all along.
464
- - **Added: `scripts/Get-PsadtLocalEvidence.ps1`**, the ladder that decides whether an agent is warranted.
465
- Four rungs, deterministic and offline: the installed PSADT module's manifest (retiring the
466
- version/command-drift research topic outright), the Uninstall registry, the existing MSI and
467
- switch-candidate probes composed rather than reimplemented, and this skill's own corpus plus a vendor
468
- doc URL it **names but never fetches**. It reports `OpenQuestions[]` and `AgentBudget`, and that number
469
- is the dispatch cap: zero open questions, zero sub-agents.
470
- - **Capped by family, so the cap is structural.** Questions one vendor deployment page answers fold into
471
- a single agent. Three families can ever dispatch, so the budget cannot exceed three however the
472
- question set grows - measured at **2 for an MSI or an app installed locally, 3 at worst**.
473
- - **Honest about its limits.** The external runtime prerequisite and known Intune pitfalls are marked
474
- `CanCloseLocally = $false` - a statement about other people's fleets does not follow from this machine -
475
- so the realistic floor is two agents, not zero. Everything open but not worth an agent lands in
476
- `Deferred[]` with a reason, and `repair-strategy` is now a first-class question because
477
- `rule:all-three-deployment-types` makes Repair a deliverable.
437
+ ### 0.34.2 - 2026-09-16
438
+ - **Added: `tests/SiteFigures.Tests.ps1`** - the landing page's stat tiles are now derived from the
439
+ repository and compared, instead of being hand-maintained and unchecked. A reader found the page
440
+ claiming 19 installer engines in the tile and "1 of 14" in the Phase 2 step right below it; the
441
+ script count had also been one behind since 0.33.0. index.html lives on gh-pages, so the suite had
442
+ never seen it. The guard reads it out of that ref, skips itself when the ref is absent, and the
443
+ workflow fetches it so CI checks it for real. Both stale figures fixed. Suite 624 -> 631.
444
+
445
+ ### 0.34.1 - 2026-09-16
446
+ - **Changed: SKILL.md now names `-TrustedPublisherCert` at Phase 6**, with `-Scenarios` for iteration and
447
+ `STOP.txt` for cancelling. 0.34.0 documented the certificate in phase 6.1 only, because the control
448
+ plane had 55 bytes of headroom against its 5000-token budget - the wrong trade for a failure that is
449
+ expensive and silent, since an agent that never opens 6.1 repeats the 25-minute timeout blind. Room was
450
+ made the way the budget test prescribes: `rule:author-version-changelog` and `rule:start-menu-only`
451
+ moved to `references/conventions.md`, which already carried their full text and which SKILL.md routes
452
+ to. Both are editorial rules - their failure costs a doc edit or a stray desktop icon, not a
453
+ deployment. Control plane 17348 / 17500 bytes, headroom 55 -> 152. Suite 624, unchanged.
454
+
package/package.json CHANGED
@@ -1,37 +1,37 @@
1
- {
2
- "name": "psadt-deploy-skill",
3
- "version": "0.34.0",
4
- "description": "Installer for the psadt-deploy Claude Code skill: build, test and deploy PSADT v4.x Intune Win32 packages.",
5
- "keywords": [
6
- "psadt",
7
- "psappdeploytoolkit",
8
- "intune",
9
- "win32",
10
- "claude-code",
11
- "claude-skill",
12
- "packaging"
13
- ],
14
- "homepage": "https://github.com/pt1987/claude-code-psadt-skill#readme",
15
- "bugs": {
16
- "url": "https://github.com/pt1987/claude-code-psadt-skill/issues"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/pt1987/claude-code-psadt-skill.git"
21
- },
22
- "license": "MIT",
23
- "author": "Patrick Taubert, PHAT Consulting GmbH",
24
- "type": "module",
25
- "bin": {
26
- "psadt-deploy-skill": "bin/install.mjs"
27
- },
28
- "files": [
29
- "bin"
30
- ],
31
- "engines": {
32
- "node": ">=18"
33
- },
34
- "os": [
35
- "win32"
36
- ]
37
- }
1
+ {
2
+ "name": "psadt-deploy-skill",
3
+ "version": "0.34.2",
4
+ "description": "Installer for the psadt-deploy Claude Code skill: build, test and deploy PSADT v4.x Intune Win32 packages.",
5
+ "keywords": [
6
+ "psadt",
7
+ "psappdeploytoolkit",
8
+ "intune",
9
+ "win32",
10
+ "claude-code",
11
+ "claude-skill",
12
+ "packaging"
13
+ ],
14
+ "homepage": "https://github.com/pt1987/claude-code-psadt-skill#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/pt1987/claude-code-psadt-skill/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/pt1987/claude-code-psadt-skill.git"
21
+ },
22
+ "license": "MIT",
23
+ "author": "Patrick Taubert, PHAT Consulting GmbH",
24
+ "type": "module",
25
+ "bin": {
26
+ "psadt-deploy-skill": "bin/install.mjs"
27
+ },
28
+ "files": [
29
+ "bin"
30
+ ],
31
+ "engines": {
32
+ "node": ">=18"
33
+ },
34
+ "os": [
35
+ "win32"
36
+ ]
37
+ }