diff --git a/pkg/arvo/app/neo.hoon b/pkg/arvo/app/neo.hoon
index 71aced568f..101281cfbf 100644
--- a/pkg/arvo/app/neo.hoon
+++ b/pkg/arvo/app/neo.hoon
@@ -817,6 +817,29 @@
=. rav (fume-add rav care.hunt howl)
=. riot (~(put of:neo riot) pith.hunt rav)
run
+ ++ heal
+ |= [dead=hunt:neo how=(set howl:neo)]
+ ^+ run
+ =/ how ~(tap in how)
+ |-
+ ?~ how
+ run
+ =/ =howl:neo i.how
+ ?. ?=(%rely -.howl) :: XX: handle %halt %sell
+ $(how t.how)
+ =/ [=term =pith:neo] +.howl
+ =/ =move:neo
+ [pith.dead [p/our.bowl pith] %poke %dead !>(term)]
+ =. run
+ abet:(arvo move)
+ $(how t.how)
+
+ ++ reap
+ |= [change=pith:neo =loot:neo]
+ =/ =rave:neo (~(gut of:neo riot) change *rave:neo)
+ =. run (heal:rage:(heal:rage:(heal x/change exe.rave) y/change why.rave) z/change zed.rave)
+ run(riot (~(del of:neo riot) change))
+ ::
++ fury
|= gis=(list gift:dirt:neo)
%- gas-leaf
@@ -851,6 +874,7 @@
::
++ take
|= gis=(list gift:dirt:neo)
+ ~& gis/gis
=/ laf (fury gis)
=* loop-gift $
^+ run
@@ -858,6 +882,8 @@
run
=/ [=pith:neo =loot:neo] i.gis
=. run (sweep i.gis)
+ =? run =(%del mode.loot)
+ (reap pith loot)
$(gis t.gis)
::
++ fume-add
@@ -1918,7 +1944,7 @@
::
++ make
|= [src=stud:neo init=(unit pail:neo) =crew:neo]
- =/ =wave:neo [src ~(dock husk src) crew]
+ =/ =wave:neo [src ~(dock husk src) crew &]
=. tide (~(put of:neo tide) here wave)
=^ bad=(set term) arvo
(jazz crew deps:~(kook husk src))
@@ -1958,6 +1984,9 @@
=| cards=(list card:neo)
=/ =kook:neo ~(kook husk code.wave)
=. dock.wave ~(dock husk code.wave)
+ ?. live.wave
+ ~| dead-wave/here
+ !!
|%
++ su-core .
++ su-emil |=(caz=(list card:neo) su-core(cards (welp cards caz)))
@@ -2039,6 +2068,11 @@
++ su-poke
|= =pail:neo
^+ su-core
+ =? live.wave =(p.pail %dead)
+ =+ !<(dead=term q.pail)
+ ?~ dep=(~(get by deps:kook) dead)
+ &
+ !required.u.dep
?. (~(has in poke.dock.wave) p.pail)
?: ?=(%ack p.pail)
%. su-core
@@ -2046,8 +2080,8 @@
?~ ack
same
(slog (print-quit:neo u.ack))
- ?: ?=(%rely p.pail)
- su-core :: ((slog leaf/"no support for %rely" ~) su-core)
+ ?: |(=(%dead p.pail) =(%rely p.pail))
+ su-core
(mean leaf/"no support for {
}" ~)
=/ [caz=(list card:neo) new=pail:neo]
(poke:su-form pail)
diff --git a/pkg/arvo/lib/neo-two.hoon b/pkg/arvo/lib/neo-two.hoon
index 069625b698..f9ddfdfcce 100644
--- a/pkg/arvo/lib/neo-two.hoon
+++ b/pkg/arvo/lib/neo-two.hoon
@@ -220,10 +220,14 @@
`[pith key.u.lat]
::
++ grow
- |= [=pail:neo cas=(unit case:neo) =oath:neo]
- ^- (quip loot:neo loam:dirt:neo)
- =/ =poem:neo [[(fall cas +(case)) oath] `pail]
- (make poem)
+ |= [=pith:neo =pail:neo cas=(unit case:neo) =oath:neo]
+ ^- (quip dust:neo loam:dirt:neo)
+ =/ l=loam:dirt:neo (~(dip of:neo loam) pith)
+ =/ =poem:neo [[(fall cas +(~(case plow l))) oath] `pail]
+ =^ loot=(list loot:neo) l
+ (~(make plow l) poem)
+ :- (turn loot (lead pith))
+ (~(rep of:neo loam) pith l)
++ make
|= =poem:neo
^- (quip loot:neo loam:dirt:neo)
@@ -252,22 +256,36 @@
loam(fil `(put:on:soil:neo u.fil.loam [p.p .]:poem))
::
++ cull
- ?~ fil.loam
- [~ loam]
- (make [[+(case) *oath:neo] ~])
+ =| =grit:neo
+ |= =pith:neo
+ ^+ [grit loam]
+ =/ [loot=(list loot:neo) l=loam:dirt:neo]
+ =/ lom (~(dip of:neo loam) pith)
+ ?: =(~ fil.lom)
+ `lom
+ (~(make plow lom) [[+(~(case plow lom)) *oath:neo] ~])
+ =. grit (welp grit (turn loot (lead pith)))
+ =/ kids ~(tap by kid.l)
+ |-
+ ?~ kids
+ =. loam (~(rep of:neo loam) pith l)
+ [grit loam]
+ =/ [iot=iota lo=loam:dirt:neo] i.kids
+ =/ pit=pith:neo (snoc pith iot)
+ =/ [loot=(list loot:neo) lom=loam:dirt:neo]
+ (make(loam lo) [[+(case) *oath:neo] ~])
+ =. grit (welp grit (turn loot (lead pit)))
+ =. kid.l (~(put by kid.l) iot lom)
+ $(kids t.kids) ::
::
++ call
|= =card:dirt:neo
^- (quip gift:dirt:neo _loam)
- =/ lom (~(dip of:neo loam) p.card)
%- (trace "call" (print-card card))
- =^ gifts=(list loot:neo) lom
- ?- -.q.card
- %grow (~(grow plow lom) +.q.card)
- %cull ~(cull plow lom)
- ==
- :_ (~(rep of:neo loam) p.card lom)
- (turn gifts |=(loot:neo `gift:dirt:neo`[p.card +<]))
+ ?- -.q.card
+ %grow (~(grow plow loam) p.card +.q.card)
+ %cull (~(cull plow loam) p.card)
+ ==
::
++ look
|= =pith:neo
diff --git a/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon b/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon
index 9bcb473c9e..45958ef27a 100644
--- a/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon
+++ b/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon
@@ -29,7 +29,7 @@
=/ =crew:neo (~(gas by *crew:neo) src/inner ~)
=/ =made:neo [%hawk-eyre-handler `[stud vax] crew]
:_ sig/!>(~)
- :~ [(welp here.bowl #/[uv/(end [3 4] eny.bowl)]) %make made]
+ :~ [(welp here.bowl #/[uv/(end 3^4 eny.bowl)]) %make made]
==
==
++ init
diff --git a/pkg/arvo/sur/neo.hoon b/pkg/arvo/sur/neo.hoon
index ec1294ba22..53088de953 100644
--- a/pkg/arvo/sur/neo.hoon
+++ b/pkg/arvo/sur/neo.hoon
@@ -1324,6 +1324,7 @@
[%rely =term =pith]
[%halt ~]
==
++$ dead term
+$ howl tone
:: $wail: change result
+$ wail (trel hunt howl mode)
@@ -2131,6 +2132,7 @@
$: code=stud
=dock
=crew
+ live=?
==
+$ tide (axal wave)
::