Skip to content

docs: replace removed Ames %heed/%jilt with the backpressure protocol - #269

Open
sigilante wants to merge 1 commit into
urbit:masterfrom
sigilante:docs/pr2-kernel-breaking
Open

docs: replace removed Ames %heed/%jilt with the backpressure protocol#269
sigilante wants to merge 1 commit into
urbit:masterfrom
sigilante:docs/pr2-kernel-breaking

Conversation

@sigilante

Copy link
Copy Markdown
Contributor

Fourth PR from the audit against urbit/urbit@08026c84b2. This is the batch that makes an agent or vane author write code which crashes, so it is kept separate from the larger card-coverage work.

Companion PRs: #266 (mechanical), #267 (Hoon signatures), #268 (user manual).

%heed and %jilt are gone

Neither appears in +$ task:ames (lull.hoon:844-903). The only trace left in lull is a comment recording that they were "introduced in state %4, and removed in %21", and ames.hoon carries the migration that drops them ($: %21 :: remove %heed and %jilt at :2825, with adapters at :1317-1403 and :3314).

A vane passing either today crashes Ames — but ames/tasks.md still documented both, with a "Returns" section, as though they were live. This is the single worst thing the audit found: the docs actively instruct you to send a task that no longer exists.

Replaced with the cards that supersede them:

Card Shape Meaning
%halt $>(%halt deep) halt a flow after a remote %flub
%goad [%goad =ship] restart halted flows once the peer is live

plus their Gall counterparts [%flub $@(~ [blocked=? dap=(unit term)])] and [%spur ~] (lull.hoon:3623-3624). The flow-state comment at lull.hoon:1732 gives both directions — forward, Gall passes a %flub to Ames; backward, a $plea gets %flubbed over the wire — and Gall's +mo-halt (gall.hoon:310-319) is what emits the remote %flub as a %boon.

Note there are two distinct %halts in source. The message-pump → packet-pump one (lull.hoon:1280) is unrelated internal congestion control and is deliberately not documented here.

%clog is no longer an Ames gift

+$ gift:ames (lull.hoon:927-946) has no %clog. It is now [%clog id=*] in +$ task:gall (lull.hoon:3629), which Ames may pass (ames.hoon:165). The README's narrative described the old %heed%clog gift loop.

For what it's worth, lull's own gift comment at :911 still lists %clog — stale upstream, and out of scope here.

$peer-state and $alien-agenda lost .heeds

Current +$ peer-state is lull.hoon:1160 (peer-state-31): no .heeds, plus a new halt=(set bone), =chain and tip=.... Current +$ alien-agenda is lull.hoon:1132: no .heeds, keens regrew as (jug [path ints] duct), and a new chums.

Worth flagging for reviewers: ames.hoon still contains 14 heeds=(set duct) hits, but every one is a versioned migration state (peer-state-5 and friends), not the live type. Checking only ames.hoon would give the wrong answer.

Verified against a running ship rather than source alone:

> .^(ship-state:ames %ax /=//=/peers/~zod)
... snd={} rcv={} nax={} closing={} corked={} keens={} chain={} tip={} halt={}

No .heeds. The stale heeds={...} line in the scry.md sample output was corrected to the real trailing fields.

Added a $deep section

%halt is written $>(%halt deep) and $deep was documented nowhere, so the task reference had nothing to point at.

Dill %meld payload

Changed from [%meld ~] to [%meld $@(~ [memo=? ford=?])] in Dill's $gift, $task and $flog (lull.hoon:2864, :2882, :2955). A bare [%meld ~] still type-checks, so the new options were invisible rather than broken.

Traced the runtime side to document what they actually select: u3_meld_all (vere melt.c:205-217) frees the persistent memo cache for memo (u3R->cax.per_p) and the Ford build cache for ford (u3R->cax.for_p), both before the dedup runs.

Also fixed a copy-paste error where %pack said "does not return a gift in response to a %meld task".

Not changed

core-academy/ca08.md quotes %heed/%jilt source at length, but Core Academy states it is a snapshot at Zuse 412k. Rewriting quoted source there would misrepresent the snapshot, so it is left alone.

All anchor links in the touched files were checked to resolve.

🤖 Generated with Claude Code

Kernel reference corrections against urbit/docs.urbit.org@08026c84b2. These are the changes
that make an agent or vane author write code that crashes, so they are batched
separately from the larger card-coverage work.

Ames %heed / %jilt are GONE (ames/tasks.md, ames/README.md).
  Neither appears in `+$ task:ames` (lull.hoon:844-903). The only trace left in
  lull is a comment recording that they were "introduced in state %4, and
  removed in %21", and ames.hoon carries the migration that drops them
  (`$: %21  :: remove %heed and %jilt`, ames.hoon:2825, with adapters at
  :1317-1403 and :3314). A vane passing either today crashes Ames.

  Replaced with the backpressure cards that supersede them:
    %halt  $>(%halt deep)      -- halt a flow after a remote %flub
    %goad  [%goad =ship]       -- restart halted flows once the peer is live
  and their Gall counterparts, `[%flub $@(~ [blocked=? dap=(unit term)])]` and
  `[%spur ~]` (lull.hoon:3623-3624). The flow-state comment at lull.hoon:1732
  gives the two directions: forward, Gall passes a %flub to Ames; backward, a
  $plea gets %flubbed over the wire. Gall's +mo-halt (gall.hoon:310-319) is
  what emits the remote %flub as a %boon.

  Note there are two distinct %halts in the source; the message-pump ->
  packet-pump %halt (lull.hoon:1280) is unrelated and is not documented here.

%clog is no longer an Ames gift (ames/README.md).
  `+$ gift:ames` (lull.hoon:927-946) has no %clog. It is now `[%clog id=*]` in
  `+$ task:gall` (lull.hoon:3629), which Ames may pass (ames.hoon:165).
  lull's own gift comment at :911 still lists %clog -- stale upstream, not
  something this PR can fix.

$peer-state and $alien-agenda lost .heeds (ames/data-types.md).
  Current `+$ peer-state` is lull.hoon:1160 (`peer-state-31`): no .heeds, and
  a new `halt=(set bone)`, `=chain` and `tip=...`. Current `+$ alien-agenda`
  is lull.hoon:1132: no .heeds, `keens` regrew as `(jug [path ints] duct)`,
  and a new `chums`. The 14 `heeds=(set duct)` hits in ames.hoon are all
  VERSIONED MIGRATION states (peer-state-5 etc.), not the live type.

  Verified against a running ship rather than source alone:
    > .^(ship-state:ames %ax /=//=/peers/~zod)
    ... snd={} rcv={} nax={} closing={} corked={} keens={} chain={} tip={} halt={}
  no .heeds. The stale `heeds={...}` line in the scry.md sample output was
  corrected to the real trailing fields.

Added a $deep section (ames/data-types.md), since %halt is written
  `$>(%halt deep)` and $deep was documented nowhere.

Dill %meld payload (dill/tasks.md, dill/data-types.md).
  Changed from `[%meld ~]` to `[%meld $@(~ [memo=? ford=?])]` in dill's $gift,
  $task AND $flog (lull.hoon:2864, :2882, :2955). A bare `[%meld ~]` still
  type-checks, so the new options were invisible. Traced the runtime side to
  document what they select: u3_meld_all (vere melt.c:205-217) frees the
  persistent memo cache for `memo` (u3R->cax.per_p) and the Ford build cache
  for `ford` (u3R->cax.for_p), both before the dedup runs.
  Also fixed a copy-paste error: %pack said "does not return a gift in
  response to a %meld task".

NOT changed: core-academy/ca08.md quotes %heed/%jilt source at length, but
Core Academy states it is a snapshot at Zuse 412k; rewriting quoted source
there would misrepresent the snapshot.

All anchor links in the touched files were checked to resolve.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant