@crvouga/personal 0.1.2 → 0.1.4

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.
package/releasing.md CHANGED
@@ -81,7 +81,7 @@ publish-time web 2FA and trusted-publisher setup. npm update notices/progress ar
81
81
  disabled too; keep npm versions owned by the shared mise lock, not a global
82
82
  `npm install -g`. After cancellation or expiry, rerun the command and use its new
83
83
  URL, not an earlier session's URL. Treat approval links as private; never paste
84
- them into reports or shared logs. Registry verification retries version and latest-tag propagation with 100 seconds of bounded propagation waits without republishing. Transient read failures are retried within that same bound. The browser approval is not proof of publication;
84
+ them into reports or shared logs. Registry verification retries version and latest-tag propagation with 310 seconds of bounded propagation waits without republishing. Transient read failures are retried within that same bound. The browser approval is not proof of publication;
85
85
  wait for registry-integrity and trusted-publisher verification to finish.
86
86
 
87
87
  ## Vault username/password login
@@ -130,7 +130,8 @@ with anonymous registry configuration and running it on real Node. The required
130
130
  4. Builds, allowlist-checks, packs and consumer-tests the exact tarball.
131
131
  5. Publishes using npm's **GitHub OIDC trusted publishing**, without npm secrets.
132
132
  6. Confirms the content hash, SHA-512 integrity and latest tag, with bounded
133
- read-only retries for registry propagation. Unconfirmed outcomes fail rather
133
+ read-only retries for registry propagation. Registry reads bypass stale CDN
134
+ cache entries and verification waits for matching content and integrity. Unconfirmed outcomes fail rather
134
135
  than blindly republish.
135
136
 
136
137
  Publishing is serialized with non-cancelling concurrency. Dispatch **CI** on main
@@ -164,3 +165,12 @@ npx --yes @crvouga/personal@latest fleet doctor --all --json
164
165
  Do not claim release or green CI based on local checks. Deployment of the CI
165
166
  workflow requires these source changes to land on main, and remote fleet coverage
166
167
  requires actual locally configured SSH aliases and checkout paths.
168
+
169
+ ## Fleet-sync release gate
170
+
171
+ The Ubuntu fleet-sync flow is not yet a complete machine-convergence release.
172
+ Read `../fleet/docs/ubuntu-sync.md` before publication. The package build embeds
173
+ an automatically approvable source SHA only for a clean checkout; dirty builds
174
+ retain provenance metadata but require an explicit reviewed revision. The anonymous
175
+ consumer smoke covers both `fleet-sync` and `fleet converge` previews without a
176
+ checkout. Passing those checks is not Ubuntu/service/provider acceptance.
package/schema.json CHANGED
@@ -5,8 +5,12 @@
5
5
  "additionalProperties": false,
6
6
  "required": ["version", "nodes"],
7
7
  "properties": {
8
- "$schema": { "type": "string" },
9
- "version": { "const": 1 },
8
+ "$schema": {
9
+ "type": "string"
10
+ },
11
+ "version": {
12
+ "const": 1
13
+ },
10
14
  "nodes": {
11
15
  "type": "array",
12
16
  "minItems": 1,
@@ -16,7 +20,10 @@
16
20
  "additionalProperties": false,
17
21
  "required": ["id", "ssh", "workspace"],
18
22
  "properties": {
19
- "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]{0,62}$" },
23
+ "id": {
24
+ "type": "string",
25
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
26
+ },
20
27
  "ssh": {
21
28
  "type": "string",
22
29
  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]{0,252}$"
@@ -48,6 +55,15 @@
48
55
  "workstation"
49
56
  ]
50
57
  }
58
+ },
59
+ "tailscaleId": {
60
+ "type": "string",
61
+ "pattern": "^[a-zA-Z0-9:_-]{1,128}$",
62
+ "description": "Explicitly enrolled stable Tailscale device ID; replacements require reenrollment."
63
+ },
64
+ "bootstrapViaSsh": {
65
+ "type": "boolean",
66
+ "description": "Explicit permission to bootstrap an enrolled node over its trusted SSH route while Tailscale is unavailable; does not accept host keys or replace device identities."
51
67
  }
52
68
  }
53
69
  }