instar 1.3.869 → 1.3.871
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/dist/commands/machine.d.ts.map +1 -1
- package/dist/commands/machine.js +4 -1
- package/dist/commands/machine.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +12 -2
- package/dist/commands/server.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.870.md +22 -0
- package/upgrades/1.3.871.md +23 -0
- package/upgrades/side-effects/headless-secret-sync-key-policy.md +80 -0
- package/upgrades/side-effects/secret-key-diagnostic-policy.md +68 -0
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-18T18:29:17.453Z",
|
|
5
|
+
"instarVersion": "1.3.871",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Cross-machine secret sync now honors the agent's existing `secrets.forceFileKey` setting for both receiving and sending stores. A headless joined machine configured for file-backed key persistence can therefore reopen its synchronized vault after its server restarts, without depending on a different OS-keychain session context.
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
Secrets synchronized to a headless machine now remain readable after restart when that agent is configured to keep its vault key in its protected local state.
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
- Headless cross-machine secret receivers consistently honor their configured durable at-rest key backend.
|
|
17
|
+
|
|
18
|
+
## Evidence
|
|
19
|
+
|
|
20
|
+
- A new production-wiring ratchet verifies both secret-sync stores inherit the configured key policy.
|
|
21
|
+
- The secret-sync round-trip and vault key-coherence suites pass together (20 targeted assertions).
|
|
22
|
+
- The originating two-machine throwaway canary retained mutation, tombstone, and symmetric-restart correctness while isolating this vault-key failure.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`instar doctor` now opens the encrypted secret store with the same configured key-backend policy used by runtime writers. A machine explicitly configured for a protected file-backed key is therefore reported as file-backed instead of being mislabeled from a different default resolution path.
|
|
9
|
+
|
|
10
|
+
The secret-sync production-wiring regression test also now proves that both of its source-region boundary markers exist before counting constructor options. A renamed boundary can no longer silently widen the test to the rest of the server file.
|
|
11
|
+
|
|
12
|
+
## What to Tell Your User
|
|
13
|
+
|
|
14
|
+
Machine diagnostics now describe the secret-key storage policy the machine is actually configured to use.
|
|
15
|
+
|
|
16
|
+
## Summary of New Capabilities
|
|
17
|
+
|
|
18
|
+
- More trustworthy secret-store diagnostics on headless and explicitly file-keyed machines.
|
|
19
|
+
|
|
20
|
+
## Evidence
|
|
21
|
+
|
|
22
|
+
- Focused policy-wiring and boundary-guard tests pass.
|
|
23
|
+
- A dedicated reintroduction guard pins machine-doctor policy inheritance.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Side-Effects Review — Headless secret-sync key-policy inheritance
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `headless-secret-sync-key-policy`
|
|
4
|
+
**Date:** 2026-07-18
|
|
5
|
+
**Author:** Instar Agent (instar-codey)
|
|
6
|
+
**Second-pass reviewer:** not required
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The inbound and outbound secret-sync `SecretStore` instances in `src/commands/server.ts` now inherit `config.secrets.forceFileKey`. This closes `fb-3fef9df5-80a`: a headless joined home that deliberately selects file-key persistence no longer has that policy silently discarded by the secret-sync composition root. A source-level wiring ratchet in `tests/unit/secret-sync-key-policy-wiring.test.ts` pins both construction sites.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
No judgment or block/allow decision is added or modified. The change passes an existing machine-local key-storage policy into two existing stores.
|
|
15
|
+
|
|
16
|
+
## 1. Over-block
|
|
17
|
+
|
|
18
|
+
No block/allow surface — over-block not applicable.
|
|
19
|
+
|
|
20
|
+
## 2. Under-block
|
|
21
|
+
|
|
22
|
+
This does not automatically infer that every headless machine should use a file key. A joined home must still set the existing `secrets.forceFileKey` policy when its daemon cannot reliably access the OS keychain. That is intentional: silently mirroring every keychain-backed key to disk would weaken the operator's selected at-rest posture.
|
|
23
|
+
|
|
24
|
+
## 3. Level-of-abstraction fit
|
|
25
|
+
|
|
26
|
+
The fix belongs at the production composition root. `SecretStore` already owns key selection and durable file creation; secret sync should consume that primitive with the same config used by other store writers, not reimplement key persistence or infer daemon capabilities.
|
|
27
|
+
|
|
28
|
+
## 4. Signal vs authority compliance
|
|
29
|
+
|
|
30
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
31
|
+
|
|
32
|
+
- [x] No — this change has no block/allow surface.
|
|
33
|
+
|
|
34
|
+
It is deterministic configuration propagation into an existing storage primitive, not a semantic detector or authority.
|
|
35
|
+
|
|
36
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
37
|
+
|
|
38
|
+
No new static heuristic at a competing-signals decision point. The existing explicit operator configuration remains authoritative.
|
|
39
|
+
|
|
40
|
+
## 5. Interactions
|
|
41
|
+
|
|
42
|
+
- **Shadowing:** none; the option reaches the same `MasterKeyManager` path used elsewhere.
|
|
43
|
+
- **Double-fire:** none; no new event or writer is added.
|
|
44
|
+
- **Races:** unchanged; each store retains its existing atomic ciphertext write.
|
|
45
|
+
- **Feedback loops:** none.
|
|
46
|
+
- **Adjacent paths:** both inbound writes and outbound reads now agree on the primary key source, preventing one side from producing ciphertext the other side cannot reopen after restart.
|
|
47
|
+
|
|
48
|
+
## 6. External surfaces
|
|
49
|
+
|
|
50
|
+
No API schema, notice, URL, timing contract, or operator action changes. Persistent ciphertext written after the change may use the configured file-backed master key, as the existing option already promises. No secret value is exposed.
|
|
51
|
+
|
|
52
|
+
## 6b. Operator-surface quality (Operator-Surface Quality standard)
|
|
53
|
+
|
|
54
|
+
No operator surface — not applicable.
|
|
55
|
+
|
|
56
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
57
|
+
|
|
58
|
+
**Machine-local by design:** the encrypted vault and its master-key backend are a per-machine security boundary. Secret values replicate through the existing recipient-encrypted `secret-share` mesh path; the at-rest key itself never crosses machines. The change emits no notices, creates no URLs, and adds no topic-bound durable state.
|
|
59
|
+
|
|
60
|
+
## 8. Rollback cost
|
|
61
|
+
|
|
62
|
+
Pure composition change: revert the two constructor options and ship a patch. No schema or migration is introduced. Vaults already written with file-backed keys remain readable through `SecretStore`'s existing dual-key candidate logic.
|
|
63
|
+
|
|
64
|
+
## Conclusion
|
|
65
|
+
|
|
66
|
+
The review found no competing authority or new side-effect surface. Honoring the existing explicit key policy is narrower and safer than introducing headless detection or universal disk mirroring. The targeted wiring and key-coherence tests plus the full repository lint/build gate are green; clear to ship.
|
|
67
|
+
|
|
68
|
+
## Second-pass review (if required)
|
|
69
|
+
|
|
70
|
+
Not required: this does not change messaging acceptance, dispatch, session lifecycle, recovery, or a guard/gate/watchdog.
|
|
71
|
+
|
|
72
|
+
## Evidence pointers
|
|
73
|
+
|
|
74
|
+
- `tests/unit/secret-sync-key-policy-wiring.test.ts`
|
|
75
|
+
- `tests/unit/secret-store-key-coherence.test.ts`
|
|
76
|
+
- Topic 458 two-machine canary report: mutation/tombstone/symmetric restart passed; the unconfigured headless receiver reproduced vault loss, and file-key configuration survived restart.
|
|
77
|
+
|
|
78
|
+
## Class-Closure Declaration (display-only mirror)
|
|
79
|
+
|
|
80
|
+
No agent-authored-artifact defect and no self-triggered controller — not applicable.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Side-Effects Review — Secret-key diagnostic policy
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `secret-key-diagnostic-policy`
|
|
4
|
+
**Date:** 2026-07-18
|
|
5
|
+
**Author:** Instar Agent (instar-codey)
|
|
6
|
+
**Second-pass reviewer:** not required
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Machine doctor passes `config.secrets.forceFileKey` to its read-only `SecretStore`, and two source-scanning regression tests now validate their region boundaries explicitly. This closes the three review findings concerning diagnostic-policy disagreement and a fragile end marker without changing vault data or key selection semantics.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
No new block, allow, dispatch, or semantic judgment is introduced. An existing explicit configuration value reaches an existing read-only diagnostic store.
|
|
15
|
+
|
|
16
|
+
## 1. Over-block
|
|
17
|
+
|
|
18
|
+
Not applicable: the command remains diagnostic and does not prevent an operation.
|
|
19
|
+
|
|
20
|
+
## 2. Under-block
|
|
21
|
+
|
|
22
|
+
The change does not infer policy from whether a machine looks headless. It preserves the operator’s configured choice and reports that choice through the existing `SecretStore` resolution.
|
|
23
|
+
|
|
24
|
+
## 3. Level-of-abstraction fit
|
|
25
|
+
|
|
26
|
+
Policy propagation belongs at the `SecretStore` construction site. Boundary validation belongs in the source-level tests that rely on those markers.
|
|
27
|
+
|
|
28
|
+
## 4. Signal vs authority compliance
|
|
29
|
+
|
|
30
|
+
The configured key policy remains authoritative. The diagnostic label is a derived signal and cannot alter the policy.
|
|
31
|
+
|
|
32
|
+
## 4b. Judgment-point check
|
|
33
|
+
|
|
34
|
+
No competing-signals judgment point is added.
|
|
35
|
+
|
|
36
|
+
## 5. Interactions
|
|
37
|
+
|
|
38
|
+
- No new writers, events, retries, or races.
|
|
39
|
+
- The doctor command may initialize key resolution exactly as before; only its existing policy input is now consistent.
|
|
40
|
+
- Marker assertions fail loudly if server section labels drift, preventing unrelated code from satisfying the constructor count.
|
|
41
|
+
|
|
42
|
+
## 6. External surfaces
|
|
43
|
+
|
|
44
|
+
Only the accuracy of the existing human-readable doctor label changes. No API, credential, secret value, or persistence format changes.
|
|
45
|
+
|
|
46
|
+
## 6b. Operator-surface quality
|
|
47
|
+
|
|
48
|
+
The corrected label is more actionable because it names the configured backend rather than a contradictory default-path result.
|
|
49
|
+
|
|
50
|
+
## 7. Multi-machine posture
|
|
51
|
+
|
|
52
|
+
The vault key remains machine-local. This change neither replicates key material nor changes secret-sync transport; it only aligns one machine’s diagnostic read with that machine’s policy.
|
|
53
|
+
|
|
54
|
+
## 8. Rollback cost
|
|
55
|
+
|
|
56
|
+
A direct revert restores the former diagnostic construction and test assertions. No migration is needed.
|
|
57
|
+
|
|
58
|
+
## Conclusion
|
|
59
|
+
|
|
60
|
+
The change narrows diagnostic ambiguity and strengthens a regression boundary without expanding authority or persistence. Focused tests are green.
|
|
61
|
+
|
|
62
|
+
## Second-pass review
|
|
63
|
+
|
|
64
|
+
Not required: messaging, session lifecycle, recovery, and guard behavior are unchanged.
|
|
65
|
+
|
|
66
|
+
## Class-Closure Declaration
|
|
67
|
+
|
|
68
|
+
No agent-authored-artifact controller or self-triggered loop is involved.
|