instar 1.3.820 → 1.3.821
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/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-11T08:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-11T08:51:12.768Z",
|
|
5
|
+
"instarVersion": "1.3.821",
|
|
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
|
+
Adds the two-node ownership harness (`tests/support/twoNodeOwnershipHarness.ts`) and the Increment-2 entry-gate E2E (`tests/e2e/duplicate-reconciliation-two-node.test.ts`) named by `docs/specs/ownership-gated-spawn-and-judgment-within-floors.md` §4/§5: two in-process machines, each with the DURABLE ownership substrate (LocalSessionOwnershipStore + SessionOwnershipRegistry), the real signed journal-sync replication hop (CoherenceJournal → JournalSyncApplier → signed MeshRpc envelope → peer applier → OwnershipApplier materialization), and a real AgentServer per node (real Bearer auth). The E2E proves the L7 lifecycle (duplicate → heal on the lease holder → un-stubbed replication → the PEER's own registry view echoes the repair over real HTTP → peer-side sweeper armed) and the §5 delayed-journal-replay case (echo timeout → ONE aggregated escalation → late replay → self-completed heal), and the §5 partition-formed case (both nodes claimed self during a partition → both-ways replication → the higher-epoch claim wins via the epoch-gated fast-forward → heal with zero escalations). The remaining §5 two-node scenarios (registry-error episode, terminate-time probe, 2b custody) are spec-anchored `it.todo` entries — visibly pending, never silently green. No runtime code changes; no rollout flag moves (§4's prerequisite ladders explicitly stay their own features' decisions).
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
None — internal change (no user-facing surface).
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
None — internal change (no user-facing surface).
|
|
17
|
+
|
|
18
|
+
## Evidence
|
|
19
|
+
|
|
20
|
+
- `tests/e2e/duplicate-reconciliation-two-node.test.ts` — 3 passing scenarios + 3 spec-anchored todos; runs in the existing `e2e` CI job with zero workflow changes (the vitest e2e include already covers it).
|
|
21
|
+
- The harness already caught a real pre-merge bug: the record-already-correct incident shape FSM-refused the healer's convergence CAS (claim-out-of-sequence) → escalate-instead-of-heal; fixed on the Increment-1 PR (record-already-converged skip) and proven healed on this rig.
|
|
22
|
+
- FD15 calibration: each run logs measured journal-hop + applier latency (the echoConfirmTicks calibration input the spec assigns to the Increment-1 soak).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Side-Effects Review — Two-Node Replication Harness (Increment-2 Entry Gate)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `two-node-harness-increment2-entry-gate`
|
|
4
|
+
**Date:** `2026-07-11`
|
|
5
|
+
**Author:** `echo (instar-dev agent)`
|
|
6
|
+
**Second-pass reviewer:** `not required (tests + test-support only; no decision point, no runtime surface)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Implements the Increment-2 entry-gate deliverable of `docs/specs/ownership-gated-spawn-and-judgment-within-floors.md` (§4 line 242: "Entry gate: the two-node replication harness (§5) green in CI"; §5 line 261: the L7 evidence contract). Two new test files only: `tests/support/twoNodeOwnershipHarness.ts` (the reusable two-node factory — durable ownership substrate, un-stubbed signed journal-sync replication, real AgentServer per node) and `tests/e2e/duplicate-reconciliation-two-node.test.ts` (the entry-gate lifecycle + the §5 delayed-replay and partition-formed cases + three spec-anchored `it.todo` scenarios). Plus this artifact, the ELI16 companion, and an internal-only release fragment. **Zero `src/**` changes.**
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
*(none — no runtime decision point is added or modified; the harness exercises existing ones)*
|
|
15
|
+
|
|
16
|
+
## 1. Over-block
|
|
17
|
+
|
|
18
|
+
Nothing at runtime (no runtime surface). In CI: the new E2E becomes a required-passing test — a future change that breaks the two-machine heal fails CI. That is the deliverable, not a side effect: the spec makes this test THE Increment-2 entry gate.
|
|
19
|
+
|
|
20
|
+
## 2. Under-block
|
|
21
|
+
|
|
22
|
+
- The harness runs two nodes IN ONE PROCESS over loopback — partitions are modeled as WITHHELD replication (the §5 partition-formed and delayed-replay cases), not as packet loss/timeout dynamics; clock skew and cross-host filesystem differences are not modeled. The spec's §3.0 consistency contract owns those honesty bounds.
|
|
23
|
+
- The 2b custody-transfer scenario and the terminate-time-probe scenario are `it.todo` — their mechanics are deliberately NOT built in Increment 1/this PR (Increment 2b's own build); the todos carry the spec anchors so they cannot be silently forgotten.
|
|
24
|
+
- The closeout leg asserts the ARMING predicate (the peer's own view says owner-elsewhere) and simulates the close; the full sweeper-close leg lands with the `duplicate-reconciled` reap-reason extension (Increment 2).
|
|
25
|
+
|
|
26
|
+
## 3. Level-of-abstraction fit
|
|
27
|
+
|
|
28
|
+
Reuses the three existing proven patterns (journal-sync-roundtrip's replication hop, mesh-failover's two-server shape, the alive-test's real-AgentServer boot) rather than inventing a parallel harness idiom. The node factory lives in `tests/support/` alongside the existing fixture module.
|
|
29
|
+
|
|
30
|
+
## 4. Signal vs authority compliance
|
|
31
|
+
|
|
32
|
+
**Required reference:** docs/signal-vs-authority.md — Not applicable at runtime (no new detector or authority). In-CI authority (a failing test blocks merges) is the standard test-suite contract.
|
|
33
|
+
|
|
34
|
+
## 5. Interactions
|
|
35
|
+
|
|
36
|
+
- The E2E rides the existing `e2e` CI job (vitest include already covers `tests/e2e/**`) — no workflow changes, no new CI lanes.
|
|
37
|
+
- The harness binds ephemeral loopback ports (port 0) and tmpdir state — no interaction with the host agent's server, state, or config.
|
|
38
|
+
- Discovered interaction (already resolved upstream): building this harness surfaced the record-already-correct FSM refusal (claim-out-of-sequence → escalate-instead-of-heal) — fixed on the Increment-1 PR as the `record-already-converged` skip and unit-tested there; this E2E now proves that fix end-to-end.
|
|
39
|
+
|
|
40
|
+
## 6. External surfaces
|
|
41
|
+
|
|
42
|
+
None. No egress (loopback only), no persistent state outside vitest tmpdirs (SafeFsExecutor teardown), no operator surface, no agent-visible capability (hence the internal-only release-note lane).
|
|
43
|
+
|
|
44
|
+
## 6b. Operator-surface quality
|
|
45
|
+
|
|
46
|
+
No operator surface — not applicable.
|
|
47
|
+
|
|
48
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
49
|
+
|
|
50
|
+
The change IS the multi-machine test substrate. It runs no agent, replicates no store of its own, and creates no cross-machine surface; it simulates two machines inside one test process to verify the production replication contract (journal → signed envelope → applier → materialized peer view).
|
|
51
|
+
|
|
52
|
+
## 8. Rollback cost
|
|
53
|
+
|
|
54
|
+
Delete the two test files (plus docs). Nothing depends on them at runtime. The only cost of rollback is losing the Increment-2 entry gate's objective checkability.
|
|
55
|
+
|
|
56
|
+
## Rollout-ladder compliance (§4 hard prohibitions)
|
|
57
|
+
|
|
58
|
+
- NO flag flips: `ownershipGatedSpawn` / `duplicateReconciler` / `judgmentArbiters` / `commitmentCustodyTransfer` untouched; `inboundQueue` / `holdForStability` / stale-owner-release untouched (their own features' graduation decisions, per §4 "inherit-and-stall").
|
|
59
|
+
- NO `provenance.deterministicSampling` change (that is an Increment-2-ENTRY action, riding the actual enforce-flip PR).
|
|
60
|
+
- In-test enforce-mode construction of the reconciler is test construction inside a sandbox, not a rollout-ladder flip (the Increment-1 burst-invariant E2E precedent).
|
|
61
|
+
|
|
62
|
+
## Conclusion
|
|
63
|
+
|
|
64
|
+
Tests + test-support only; the risk surface is CI-time, which is the point. Clear to ship as its own PR once Increment 1 merges (it depends on the Increment-1 modules).
|