instar 1.3.896 → 1.3.898

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 (90) hide show
  1. package/dashboard/index.html +30 -0
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +111 -1
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  6. package/dist/config/ConfigDefaults.js +12 -0
  7. package/dist/config/ConfigDefaults.js.map +1 -1
  8. package/dist/core/CoherenceJournal.d.ts +17 -1
  9. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  10. package/dist/core/CoherenceJournal.js +29 -2
  11. package/dist/core/CoherenceJournal.js.map +1 -1
  12. package/dist/core/JournalSyncApplier.d.ts.map +1 -1
  13. package/dist/core/JournalSyncApplier.js +11 -0
  14. package/dist/core/JournalSyncApplier.js.map +1 -1
  15. package/dist/core/MachineSshEndpoint.d.ts +47 -0
  16. package/dist/core/MachineSshEndpoint.d.ts.map +1 -0
  17. package/dist/core/MachineSshEndpoint.js +221 -0
  18. package/dist/core/MachineSshEndpoint.js.map +1 -0
  19. package/dist/core/MachineSshIdentity.d.ts +26 -0
  20. package/dist/core/MachineSshIdentity.d.ts.map +1 -0
  21. package/dist/core/MachineSshIdentity.js +97 -0
  22. package/dist/core/MachineSshIdentity.js.map +1 -0
  23. package/dist/core/MeshRpc.d.ts +6 -0
  24. package/dist/core/MeshRpc.d.ts.map +1 -1
  25. package/dist/core/MeshRpc.js +2 -0
  26. package/dist/core/MeshRpc.js.map +1 -1
  27. package/dist/core/MutualSshHealthController.d.ts +33 -0
  28. package/dist/core/MutualSshHealthController.d.ts.map +1 -0
  29. package/dist/core/MutualSshHealthController.js +113 -0
  30. package/dist/core/MutualSshHealthController.js.map +1 -0
  31. package/dist/core/MutualSshProbeScheduler.d.ts +21 -0
  32. package/dist/core/MutualSshProbeScheduler.d.ts.map +1 -0
  33. package/dist/core/MutualSshProbeScheduler.js +57 -0
  34. package/dist/core/MutualSshProbeScheduler.js.map +1 -0
  35. package/dist/core/MutualSshRuntime.d.ts +106 -0
  36. package/dist/core/MutualSshRuntime.d.ts.map +1 -0
  37. package/dist/core/MutualSshRuntime.js +423 -0
  38. package/dist/core/MutualSshRuntime.js.map +1 -0
  39. package/dist/core/MutualSshVerifier.d.ts +44 -0
  40. package/dist/core/MutualSshVerifier.d.ts.map +1 -0
  41. package/dist/core/MutualSshVerifier.js +97 -0
  42. package/dist/core/MutualSshVerifier.js.map +1 -0
  43. package/dist/core/PostUpdateMigrator.d.ts +2 -0
  44. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  45. package/dist/core/PostUpdateMigrator.js +112 -0
  46. package/dist/core/PostUpdateMigrator.js.map +1 -1
  47. package/dist/core/SshBootstrapAdvert.d.ts +23 -0
  48. package/dist/core/SshBootstrapAdvert.d.ts.map +1 -0
  49. package/dist/core/SshBootstrapAdvert.js +43 -0
  50. package/dist/core/SshBootstrapAdvert.js.map +1 -0
  51. package/dist/core/SshHostKeyLifecycle.d.ts +43 -0
  52. package/dist/core/SshHostKeyLifecycle.d.ts.map +1 -0
  53. package/dist/core/SshHostKeyLifecycle.js +68 -0
  54. package/dist/core/SshHostKeyLifecycle.js.map +1 -0
  55. package/dist/core/SshPeerAdmissionStore.d.ts +29 -0
  56. package/dist/core/SshPeerAdmissionStore.d.ts.map +1 -0
  57. package/dist/core/SshPeerAdmissionStore.js +86 -0
  58. package/dist/core/SshPeerAdmissionStore.js.map +1 -0
  59. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  60. package/dist/core/devGatedFeatures.js +6 -0
  61. package/dist/core/devGatedFeatures.js.map +1 -1
  62. package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
  63. package/dist/core/machineCoherenceManifest.js +8 -0
  64. package/dist/core/machineCoherenceManifest.js.map +1 -1
  65. package/dist/core/types.d.ts +10 -0
  66. package/dist/core/types.d.ts.map +1 -1
  67. package/dist/core/types.js.map +1 -1
  68. package/dist/server/AgentServer.d.ts +1 -0
  69. package/dist/server/AgentServer.d.ts.map +1 -1
  70. package/dist/server/AgentServer.js +22 -0
  71. package/dist/server/AgentServer.js.map +1 -1
  72. package/dist/server/CapabilityIndex.js +2 -2
  73. package/dist/server/CapabilityIndex.js.map +1 -1
  74. package/dist/server/routes.d.ts +2 -0
  75. package/dist/server/routes.d.ts.map +1 -1
  76. package/dist/server/routes.js +9 -0
  77. package/dist/server/routes.js.map +1 -1
  78. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  79. package/dist/testing/selfActionRegistry.js +39 -0
  80. package/dist/testing/selfActionRegistry.js.map +1 -1
  81. package/package.json +4 -1
  82. package/scripts/feature-maturation-plan-gate.mjs +1 -0
  83. package/skills/spec-converge/scripts/write-convergence-tag.mjs +13 -0
  84. package/src/core/FeatureMaturationPlanGate.mjs +58 -0
  85. package/src/data/builtin-manifest.json +64 -64
  86. package/src/data/state-coherence-registry.json +36 -0
  87. package/upgrades/1.3.897.md +39 -0
  88. package/upgrades/1.3.898.md +24 -0
  89. package/upgrades/side-effects/feature-maturation-plan-visibility.md +84 -0
  90. package/upgrades/side-effects/mutual-ssh-autobootstrap.md +137 -0
@@ -0,0 +1,84 @@
1
+ # Side-Effects Review — Feature maturation plan visibility
2
+
3
+ **Version / slug:** `feature-maturation-plan-visibility`
4
+ **Date:** `2026-07-21`
5
+ **Author:** `Instar-codey`
6
+ **Second-pass reviewer:** `maturation_second_pass`
7
+
8
+ ## Summary of the change
9
+
10
+ This strengthens the existing Maturation Path registry article, adds a pure Markdown structure detector, emits a WARN-only diagnostic from the existing convergence tag writer, and delivers both files through PostUpdateMigrator with hash-based customization detection and durable replacement.
11
+
12
+ ## Decision-point inventory
13
+
14
+ - `findMaturationPlanGaps` — add — pure structural signal with no blocking authority.
15
+ - convergence tag writer — modify — reports the signal but retains exit status and stamping behavior.
16
+ - migration stock/custom classification — add — deterministic closed-world content-hash invariant protecting user customizations.
17
+
18
+ ## 1. Over-block
19
+
20
+ No runtime block exists. A valid non-canonical plan can warn, but v1 still stamps convergence. The canonical accepted form is documented and tested.
21
+
22
+ ## 2. Under-block
23
+
24
+ A syntactically complete but poor plan is not rejected. This is intentional: structural parsing is a cheap signal; the lessons-aware reviewer holds semantic authority.
25
+
26
+ ## 3. Level-of-abstraction fit
27
+
28
+ The validator sits beside the existing `findDecisionPointGaps` convergence seam. The standard is updated in place. Runtime graduation remains owned by FeatureRolloutReconciler and InitiativeTracker; no parallel engine exists.
29
+
30
+ ## 4. Signal vs authority compliance
31
+
32
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
33
+
34
+ - [x] No — this change produces a signal consumed by an existing smart gate.
35
+
36
+ The Markdown parser only reports missing deterministic structure. It cannot veto convergence or judge plan quality.
37
+
38
+ ## 4b. Judgment-point check
39
+
40
+ No new heuristic at a competing-signals decision point. Stock-file hash membership and structural field presence are closed-world invariants. Semantic maturation quality remains a reviewer judgment.
41
+
42
+ ## 5. Interactions
43
+
44
+ - **Shadowing:** the warning runs after existing open-question and decision-point hard gates, and before tag writing. It cannot shadow either gate.
45
+ - **Double-fire:** one invocation emits at most one stable warning line.
46
+ - **Races:** migration writes use unique sibling temps, exclusive create, file and directory sync, and same-filesystem rename.
47
+ - **Feedback loops:** none in v1; no scheduler or initiative cadence is added.
48
+
49
+ ## 6. External surfaces
50
+
51
+ Developers may see a new stderr warning during spec convergence. No messages, routes, external APIs, persistent runtime records, or operator actions are added.
52
+
53
+ ## 6b. Operator-surface quality
54
+
55
+ No operator surface — not applicable.
56
+
57
+ ## 7. Multi-machine posture
58
+
59
+ Unified: the detector, tag writer, and standard are git/package artifacts delivered identically to each machine. V1 emits no notice, durable rollout state, or URL. Existing customized targets remain local by user choice and are reported untouched.
60
+
61
+ ## 8. Rollback cost
62
+
63
+ Revert and ship a patch. The warning creates no data. Installed stock files retain durable pre-migration backups; customized files are never modified.
64
+
65
+ ## Conclusion
66
+
67
+ The change is bounded to warning visibility, extends the correct existing owners, and preserves semantic authority. The main risks—parser false positives and migration corruption—are non-blocking or covered by adversarial and injected-failure tests.
68
+
69
+ ## Second-pass review (if required)
70
+
71
+ **Reviewer:** maturation_second_pass
72
+ **Independent read of the artifact:** concur
73
+
74
+ Concur with the review — the implementation now preserves WARN-only signal authority, exact gate classification, customization-safe durable migration parity, and the v1-only boundary with all 26 targeted tests passing.
75
+
76
+ ## Evidence pointers
77
+
78
+ - `tests/unit/feature-maturation-plan-gate.test.ts`
79
+ - `tests/unit/write-convergence-tag-maturation-plan.test.ts`
80
+ - `tests/unit/PostUpdateMigrator-feature-maturation.test.ts`
81
+
82
+ ## Class-Closure Declaration (display-only mirror)
83
+
84
+ No agent-authored-artifact defect — not applicable. This is a new WARN-stage guard, not a defect repair or self-triggered controller.
@@ -0,0 +1,137 @@
1
+ # Side-Effects Review — Mutual SSH Autobootstrap
2
+
3
+ **Version / slug:** `mutual-ssh-autobootstrap`
4
+ **Date:** 2026-07-20
5
+ **Author:** Instar-codey
6
+ **Second-pass reviewer:** Claude Sonnet clean-door security review (2026-07-21)
7
+
8
+ ## Summary of the change
9
+
10
+ This build adds Instar-owned SSH client/host identities, leased paired-peer admission,
11
+ a restricted `instar-rpc` ssh2 endpoint, directional proof, bounded health repair,
12
+ dev-dark/dry-run configuration, boot integration, and a scrubbed health route. It
13
+ touches cryptographic admission and mutual-read invariants but grants no shell access.
14
+
15
+ ## Decision-point inventory
16
+
17
+ - Bootstrap-advert acceptance — added invariant authority: signed-principal caller
18
+ supplies identity; this validator enforces schema, epoch, expiry, key and private-
19
+ endpoint bounds.
20
+ - Peer authentication — added invariant authority: exact leased public-key identity.
21
+ - Direction/mutual truth — added invariant authority: current pinned proof exists in
22
+ both directions or `mutual` is false.
23
+ - Repair escalation — added bounded deterministic policy; host-key mismatch notifies
24
+ immediately, ordinary failures exhaust four attempts or 120 seconds.
25
+
26
+ ## 1. Over-block
27
+
28
+ IPv6 private endpoints are not yet admitted by the narrow endpoint validator, so a
29
+ private IPv6-only paired host is reported blocked rather than weakened to a public or
30
+ unverified bind. Loopback is accepted only for the local real-transport fixture and
31
+ never by signed peer advert validation.
32
+
33
+ ## 2. Under-block
34
+
35
+ The endpoint relies on the exact-pinned ssh2 parser and Node cryptography. Novel
36
+ parser vulnerabilities remain possible; the narrow algorithm/channel surface and
37
+ dependency audit gate reduce but cannot eliminate that risk. The rollout remains
38
+ dry-run-first and fleet-dark.
39
+
40
+ ## 3. Level-of-abstraction fit
41
+
42
+ The identity, admission, endpoint, verifier, and controller are separate primitives.
43
+ Mesh/pairing supplies authenticated public facts; SSH independently proves possession
44
+ and reachability. The controller produces transport health and does not become a
45
+ parallel routing authority.
46
+
47
+ ## 4. Signal vs authority compliance
48
+
49
+ Required reference: `docs/signal-vs-authority.md`. Probe outcomes are signals. The
50
+ deterministic blocks are cryptographic, structural, expiry, resource, and public-bind
51
+ security invariants—the explicitly permitted enumerable-authority case. No heuristic
52
+ interprets operator intent or message meaning.
53
+
54
+ ## 4b. Judgment-point check
55
+
56
+ No competing-signals judgment heuristic is added. Endpoint selection and validity
57
+ operate within finite authenticated candidates; uncertainty produces no proof.
58
+
59
+ ## 5. Interactions
60
+
61
+ - Dedicated state is disjoint from personal SSH state and AgentRegistry ports.
62
+ - Pairing epoch, observer boot id, and generations are carried end-to-end; stale
63
+ replay cannot refresh an admission or proof.
64
+ - Authentication and subsystem-open both re-read the admission lease.
65
+ - The scheduler refuses overlapping sweeps; its concurrency counter and pair breaker
66
+ prevent unbounded work, while successful proof settles the episode.
67
+
68
+ ## 6. External surfaces
69
+
70
+ The new SSH listener is restricted to loopback/private/Tailscale-style addresses and
71
+ exposes no general command surface. The read-only health route omits key bodies and
72
+ raw addresses. No operator action is introduced; dry-run/live selection is existing
73
+ configuration policy, not a new API-only approval.
74
+
75
+ ## 6b. Operator-surface quality
76
+
77
+ The Machines dashboard adds a compact SSH-enrollment card. The read surface uses
78
+ plain enrollment states (`paired`, `ssh-bootstrap`, `ssh-bootstrap-blocked`,
79
+ `ssh-proving`, `ready`) and contains no raw keys or addresses.
80
+
81
+ 1. **Leads with the primary action:** this is status-only, so current readiness and
82
+ enrollment state are the first content; there is no hidden operator action.
83
+ 2. **Zero raw internals as primary content:** the card shows plain state, direction
84
+ counts, and human-readable blocked reasons; keys, fingerprints, boot ids, epochs,
85
+ and addresses are omitted.
86
+ 3. **Destructive actions de-emphasized:** no destructive action is exposed.
87
+ 4. **Plain language + phone width:** the card reuses the responsive Machines grid,
88
+ short labels, and wrapping reason text; it introduces no table or horizontal
89
+ overflow at phone width.
90
+
91
+ ## 7. Multi-machine posture
92
+
93
+ Machine private keys, host keys, admission leases, and endpoint truth are
94
+ **machine-local BY DESIGN** because they are physical credentials and reachability.
95
+ Public adverts travel over authenticated Mesh RPC; signed directional proofs replicate
96
+ through the coherence journal and are revalidated on receipt. The pool health contract
97
+ is **proxied-on-read**. This slice emits no user-facing notice directly and generates
98
+ no URL. The fleet-uniform coherence manifest now also covers the effective Mutual SSH
99
+ dev-gate plus dry-run value, so a half-enabled pool raises the existing skew alarm
100
+ instead of silently presenting asymmetric readiness.
101
+
102
+ ## 8. Rollback cost
103
+
104
+ Disable the dev gate, drain/close the endpoint, and revert the runtime files. Dedicated
105
+ keys and scrubbed audit metadata may remain inert; no personal SSH repair or user-state
106
+ migration is required. Removing the state directory later is optional cleanup.
107
+
108
+ ## Conclusion
109
+
110
+ The implementation preserves the central security boundary: paired-machine identity
111
+ is prerequisite, every SSH direction proves itself, and failure stays honestly
112
+ non-mutual. Fleet-dark/dry-run rollout contains exposure. Independent review completed
113
+ before commit because this touches admission, lifecycle, and a self-action controller.
114
+
115
+ ## Second-pass review
116
+
117
+ **Reviewer:** Claude Sonnet, clean-door read-only review
118
+ **Independent read:** No critical findings. Two major findings were resolved before
119
+ commit: host rotation now carries a separately verified MachineAuth transition
120
+ signature, and malformed proof timestamps fail closed before freshness checks. Full
121
+ dispositions are recorded in `docs/review/mutual-ssh-phase1-security-review.md`.
122
+
123
+ ## Class-Closure Declaration
124
+
125
+ This closes the `Symmetric Transport Proof` class from the approved spec: the real
126
+ transport fixture and mutuality unit test fail any future implementation that claims
127
+ mutual from one direction. The self-action loop is bounded by four attempts, 120
128
+ seconds, concurrency 4, a three-episode breaker, and a settled proof state; the
129
+ self-action convergence ratchet is part of final ceremony evidence.
130
+
131
+ - `defectClass`: `unbounded-self-action`
132
+ - `closure`: `guard`
133
+ - `guardEvidence`: `{ enforcementType: ratchet, citation:
134
+ tests/unit/self-action-convergence.test.ts, howCaught: the registered mutual SSH
135
+ repair model is driven under permanent path rejection and proves its four-attempt,
136
+ two-minute episode plus concurrency ceiling and fifteen-minute post-breaker rate
137
+ floor prevent retry accumulation or acceleration }`