mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
docs(chord): dependency model: the dependency check applies R18 after live, not a rule of its own
This commit is contained in:
parent
e65b3b88c0
commit
67c63c0f7f
3 changed files with 15 additions and 13 deletions
|
|
@ -352,8 +352,9 @@ bounded by its own `readyTimeout` deadline, as today. Then it goes live.
|
|||
The dependency check is the boundary between waiting and working (Astra's F3). Before it, the attempt holds no
|
||||
natives; after it, a dependency that leaves `live` is treated as after live (R18): the attempt goes on, and its calls
|
||||
through that reference meet the reference's state. So a parked attempt never holds a native, and an attempt that
|
||||
opened a native is never parked. This is a deliberate rule, and Astra called it what it is: a weakening of "live
|
||||
means every dependency is live". An object can finish opening after a dependency went away. Without that boundary a contributor unloading while the attempt opens its natives
|
||||
opened a native is never parked. It is not a rule of its own: it is R18's rule for live objects (a dependency that
|
||||
goes away leaves the object live; same-host calls in flight finish, remote ones fail, new calls meet the reference's
|
||||
state), applied from the dependency check on. Without that boundary a contributor unloading while the attempt opens its natives
|
||||
would leave it half open and parked, or force a seal, a drain and a fresh attempt for a dependency the object may not
|
||||
even use at once.
|
||||
|
||||
|
|
@ -1399,9 +1400,9 @@ through, or recovers by its own backoff.
|
|||
|
||||
2. **The dependency check is the activation boundary:** once every dependency is `live`, the attempt runs its own
|
||||
steps (natives in order, follow attaches, member checks, derives), bounded by its own `readyTimeout` deadline, and
|
||||
goes live. A dependency that leaves `live` after the check is treated as after live (R18): the attempt goes on. This
|
||||
is a deliberate rule (Astra: a weakening of "live means every dependency is live"): an object can finish opening
|
||||
after a dependency went away, and its calls through that reference meet its state. So a parked attempt holds no
|
||||
goes live. A dependency that leaves `live` after the check is treated as after live (R18): the attempt goes on. This is
|
||||
R18's rule for live objects applied from the check on, not a rule of its own (owner, 2026-10-29: a dependency can
|
||||
go away at any point of an object's life; the object stays live, its calls through that reference meet its state). So a parked attempt holds no
|
||||
natives, and an attempt that opened natives is never parked.
|
||||
3. **No timer while parked:** no dependency deadline, no backoff. The attempt's deadline is paused while parked (as
|
||||
eager migrations pause it) and resumes with the budget left.
|
||||
|
|
|
|||
|
|
@ -538,8 +538,9 @@ bounded by its own <code>readyTimeout</code> deadline, as today. Then it goes li
|
|||
<p>The dependency check is the boundary between waiting and working (Astra's F3). Before it, the attempt holds no
|
||||
natives; after it, a dependency that leaves <code>live</code> is treated as after live (R18): the attempt goes on, and its calls
|
||||
through that reference meet the reference's state. So a parked attempt never holds a native, and an attempt that
|
||||
opened a native is never parked. This is a deliberate rule, and Astra called it what it is: a weakening of "live
|
||||
means every dependency is live". An object can finish opening after a dependency went away. Without that boundary a contributor unloading while the attempt opens its natives
|
||||
opened a native is never parked. It is not a rule of its own: it is R18's rule for live objects (a dependency that
|
||||
goes away leaves the object live; same-host calls in flight finish, remote ones fail, new calls meet the reference's
|
||||
state), applied from the dependency check on. Without that boundary a contributor unloading while the attempt opens its natives
|
||||
would leave it half open and parked, or force a seal, a drain and a fresh attempt for a dependency the object may not
|
||||
even use at once.</p>
|
||||
<figure class="fig anim"><svg viewBox="0 0 720 331" width="100%" role="img" aria-label="Code mode on W parks on the harness and goes on the moment it is live." xmlns="http://www.w3.org/2000/svg" style="font-family:'Avenir Next','Helvetica Neue',Helvetica,Arial,sans-serif;max-width:760px"><defs><marker id="f3m" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#7b7468"/></marker><marker id="f3a" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#b4472f"/></marker><marker id="f3b" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#2e6a8a"/></marker></defs><line x1="130.7" y1="52" x2="130.7" y2="323" stroke="#c9bfae" stroke-dasharray="3 3"/><rect x="45.7" y="10" width="170" height="42" rx="4" fill="#fff" stroke="#c9bfae"/><text x="130.7" y="27" font-size="11" fill="#2a2723" text-anchor="middle">CodeMode</text><text x="130.7" y="41" font-size="9.5" fill="#7b7468" text-anchor="middle">host-lifetime, local</text><line x1="360" y1="52" x2="360" y2="323" stroke="#c9bfae" stroke-dasharray="3 3"/><rect x="275" y="10" width="170" height="42" rx="4" fill="#fff" stroke="#c9bfae"/><text x="360" y="27" font-size="11" fill="#2a2723" text-anchor="middle">Harness</text><text x="360" y="41" font-size="9.5" fill="#7b7468" text-anchor="middle">host-lifetime, local</text><line x1="589.3" y1="52" x2="589.3" y2="323" stroke="#c9bfae" stroke-dasharray="3 3"/><rect x="504.3" y="10" width="170" height="42" rx="4" fill="#fff" stroke="#c9bfae"/><text x="589.3" y="27" font-size="11" fill="#2a2723" text-anchor="middle">HarnessModels</text><text x="589.3" y="41" font-size="9.5" fill="#7b7468" text-anchor="middle">registry</text><g class="step edge" style="--i:1"><line x1="130.7" y1="78" x2="357" y2="78" stroke="#7b7468" marker-end="url(#f3m)"/><text x="245.3" y="72" font-size="10" fill="#2a2723" text-anchor="middle">self.get(Harness): loading</text></g><g class="step" style="--i:2"><rect x="26" y="96" width="209.3" height="23" rx="3" fill="#f4eee2" stroke="#c2b18c"/><text x="130.7" y="110" font-size="10" fill="#5b5549" text-anchor="middle">parked: shows loading, no timer</text></g><g class="step edge" style="--i:3"><line x1="360" y1="147" x2="586.3" y2="147" stroke="#7b7468" marker-end="url(#f3m)"/><text x="474.7" y="141" font-size="10" fill="#2a2723" text-anchor="middle">self.registry(HarnessModels): usable</text></g><g class="step edge" style="--i:4"><path d="M360 173 h34 v14 h-32" fill="none" stroke="#7b7468" marker-end="url(#f3m)"/><text x="402" y="183" font-size="10" fill="#2a2723" text-anchor="start">own steps: open Durable</text></g><g class="step edge" style="--i:5"><line x1="360" y1="219" x2="133.7" y2="219" stroke="#b4472f" marker-end="url(#f3a)"/><text x="245.3" y="213" font-size="10" fill="#b4472f" text-anchor="middle">Harness live: a state change</text></g><g class="step edge" style="--i:6"><path d="M130.7 245 h34 v14 h-32" fill="none" stroke="#7b7468" marker-end="url(#f3m)"/><text x="172.7" y="255" font-size="10" fill="#2a2723" text-anchor="start">dependency check passes; open the sandbox</text></g><g class="step edge" style="--i:7"><path d="M130.7 285 h34 v14 h-32" fill="none" stroke="#7b7468" marker-end="url(#f3m)"/><text x="172.7" y="295" font-size="10" fill="#2a2723" text-anchor="start">live; contribute tools</text></g></svg><figcaption><button class="replay" type="button">Replay</button><span class="fignum">Figure 3.</span> Code mode on W parks on the harness and goes on the moment it is live.</figcaption></figure>
|
||||
|
|
@ -2256,9 +2257,9 @@ across attempts); the requests are made. The attempt is <strong>parked</strong>
|
|||
</li>
|
||||
<li><p><strong>The dependency check is the activation boundary:</strong> once every dependency is <code>live</code>, the attempt runs its own
|
||||
steps (natives in order, follow attaches, member checks, derives), bounded by its own <code>readyTimeout</code> deadline, and
|
||||
goes live. A dependency that leaves <code>live</code> after the check is treated as after live (R18): the attempt goes on. This
|
||||
is a deliberate rule (Astra: a weakening of "live means every dependency is live"): an object can finish opening
|
||||
after a dependency went away, and its calls through that reference meet its state. So a parked attempt holds no
|
||||
goes live. A dependency that leaves <code>live</code> after the check is treated as after live (R18): the attempt goes on. This is
|
||||
R18's rule for live objects applied from the check on, not a rule of its own (owner, 2026-10-29: a dependency can
|
||||
go away at any point of an object's life; the object stays live, its calls through that reference meet its state). So a parked attempt holds no
|
||||
natives, and an attempt that opened natives is never parked.</p>
|
||||
</li>
|
||||
<li><p><strong>No timer while parked:</strong> no dependency deadline, no backoff. The attempt's deadline is paused while parked (as
|
||||
|
|
|
|||
|
|
@ -145,9 +145,9 @@ through, or recovers by its own backoff.
|
|||
|
||||
2. **The dependency check is the activation boundary:** once every dependency is `live`, the attempt runs its own
|
||||
steps (natives in order, follow attaches, member checks, derives), bounded by its own `readyTimeout` deadline, and
|
||||
goes live. A dependency that leaves `live` after the check is treated as after live (R18): the attempt goes on. This
|
||||
is a deliberate rule (Astra: a weakening of "live means every dependency is live"): an object can finish opening
|
||||
after a dependency went away, and its calls through that reference meet its state. So a parked attempt holds no
|
||||
goes live. A dependency that leaves `live` after the check is treated as after live (R18): the attempt goes on. This is
|
||||
R18's rule for live objects applied from the check on, not a rule of its own (owner, 2026-10-29: a dependency can
|
||||
go away at any point of an object's life; the object stays live, its calls through that reference meet its state). So a parked attempt holds no
|
||||
natives, and an attempt that opened natives is never parked.
|
||||
3. **No timer while parked:** no dependency deadline, no backoff. The attempt's deadline is paused while parked (as
|
||||
eager migrations pause it) and resumes with the budget left.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue