16. single-home %clay state

This commit is contained in:
Joe Bryan 2018-12-13 02:42:15 -05:00
parent 18cb206eee
commit e86b23393c
2 changed files with 91 additions and 195 deletions

View File

@ -180,7 +180,7 @@
:: ::
:: Formal vane state. :: Formal vane state.
:: ::
:: -- `fat` is a collection of our domestic ships. :: -- `rom` is our domestic state.
:: -- `hoy` is a collection of foreign ships where we know something about :: -- `hoy` is a collection of foreign ships where we know something about
:: their clay. :: their clay.
:: -- `ran` is the object store. :: -- `ran` is the object store.
@ -192,7 +192,7 @@
:: -- `tip` is the date of the last write; if now, enqueue incoming requests. :: -- `tip` is the date of the last write; if now, enqueue incoming requests.
:: ::
++ raft :: filesystem ++ raft :: filesystem
$: fat/(map ship room) :: domestic $: rom/room :: domestic
hoy/(map ship rung) :: foreign hoy/(map ship rung) :: foreign
ran/rang :: hashes ran/rang :: hashes
mon/(map term beam) :: mount points mon/(map term beam) :: mount points
@ -388,25 +388,24 @@
:: ::
:: The state includes: :: The state includes:
:: ::
:: -- local urbit `our`
:: -- current time `now` :: -- current time `now`
:: -- current duct `hen` :: -- current duct `hen`
:: -- local urbit `our` :: -- all vane state `++raft` (rarely used, except for the object store)
:: -- target urbit `her` :: -- target urbit `her`
:: -- target desk `syd` :: -- target desk `syd`
:: -- all vane state `++raft` (rarely used, except for the object store)
:: ::
:: For local desks, `our` == `her` is one of the urbits on our pier. For :: For local desks, `our` == `her` is one of the urbits on our pier. For
:: foreign desks, `her` is the urbit the desk is on and `our` is the local :: foreign desks, `her` is the urbit the desk is on and `our` is the local
:: urbit that's managing the relationship with the foreign urbit. Don't mix :: urbit that's managing the relationship with the foreign urbit. Don't mix
:: up those two, or there will be wailing and gnashing of teeth. :: up those two, or there will be wailing and gnashing of teeth.
:: ::
:: While setting up `++de`, we check if the given `her` is a local urbit. If :: While setting up `++de`, we check if `our` == `her`. If so, we get
:: so, we pull the room from `fat` in the raft and get the desk information :: the desk information from `dos.rom`. Otherwise, we get the rung from
:: from `dos` in there. Otherwise, we get the rung from `hoy` and get the :: `hoy` and get the desk information from `rus` in there. In either case,
:: desk information from `rus` in there. In either case, we normalize the :: we normalize the desk information to a `++rede`, which is all the
:: desk information to a `++rede`, which is all the desk-specific data that :: desk-specific data that we utilize in `++de`. Because it's effectively
:: we utilize in `++de`. Because it's effectively a part of the `++de` :: a part of the `++de` state, let's look at what we've got:
:: state, let's look at what we've got:
:: ::
:: -- `lim` is the most recent date we're confident we have all the :: -- `lim` is the most recent date we're confident we have all the
:: information for. For local desks, this is always `now`. For foreign :: information for. For local desks, this is always `now`. For foreign
@ -429,47 +428,44 @@
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|% |%
++ de :: per desk ++ de :: per desk
|= {now/@da hen/duct raft} |= [our=ship now=@da hen=duct raft]
|= {{our/@p her/@p} syd/desk} |= [her=ship syd=desk]
=* ruf +>+<+> :: XX ruf=raft crashes in the compiler
=+ ^- {hun/(unit duct) rede} ::
=+ rom=(~(get by fat.ruf) her) =* ruf |3.+6.^$
?~ rom ::
=+ ^- [hun=(unit duct) rede]
?. =(our her)
:: no duct, foreign +rede or default
::
:- ~ :- ~
%+ fall =/ rus rus:(fall (~(get by hoy.ruf) her) *rung)
(~(get by rus:(fall (~(get by hoy.ruf) her) *rung)) syd) %+ fall (~(get by rus) syd)
:* lim=~2000.1.1 [lim=~2000.1.1 ref=`*rind qyx=~ dom=*dome dok=~ mer=~ per=~ pew=~]
ref=[~ *rind] :: administrative duct, domestic +rede
qyx=~ ::
dom=*dome :- `hun.rom.ruf
dok=~ =/ jod (fall (~(get by dos.rom.ruf) syd) *dojo)
mer=~ [lim=now ref=~ [qyx dom dok mer per pew]:jod]
per=~ ::
pew=~ =* red=rede ->
==
:- `hun.u.rom
=+ jod=(fall (~(get by dos.u.rom) syd) *dojo)
:* lim=now
ref=~
qyx=qyx.jod
dom=dom.jod
dok=dok.jod
mer=mer.jod
per=per.jod
pew=pew.jod
==
=* red ->
=| mow/(list move) =| mow/(list move)
|% |%
++ abet :: resolve ++ abet :: resolve
^- {(list move) raft} ^- [(list move) raft]
:_ =+ rom=(~(get by fat.ruf) her) :- (flop mow)
?~ rom ?. =(our her)
=+ rug=(~(put by rus:(fall (~(get by hoy.ruf) her) *rung)) syd red) :: save foreign +rede
ruf(hoy (~(put by hoy.ruf) her rug)) ::
=+ dos=(~(put by dos.u.rom) syd [qyx dom dok mer per pew]) =/ rus rus:(fall (~(get by hoy.ruf) her) *rung)
ruf(fat (~(put by fat.ruf) her [(need hun) dos])) =/ rug (~(put by rus) syd red)
(flop mow) ruf(hoy (~(put by hoy.ruf) her rug))
:: save domestic +room
::
%= ruf
hun.rom (need hun)
dos.rom (~(put by dos.rom.ruf) syd [qyx dom dok mer per pew]:red)
==
:: ::
:: Handle `%sing` requests :: Handle `%sing` requests
:: ::
@ -2755,12 +2751,13 @@
~ ~
?- p.mun ?- p.mun
$d $d
=+ rom=(~(get by fat.ruf) her) :: XX this should only allow reads at the currebt date
?~ rom ::
~&(%null-rom-cd [~ ~]) ?: !=(our her)
[~ ~]
?^ r.mun ?^ r.mun
~&(%no-cd-path [~ ~]) ~&(%no-cd-path [~ ~])
[~ ~ %& %noun !>(~(key by dos.u.rom))] [~ ~ %& %noun !>(~(key by dos.rom.ruf))]
:: ::
$p (read-p r.mun) $p (read-p r.mun)
$t (bind (read-t yon r.mun) (lift |=(a=cage [%& a]))) $t (bind (read-t yon r.mun) (lift |=(a=cage [%& a])))
@ -3687,7 +3684,7 @@
:: This is the arvo interface vane. Our formal state is a `++raft`, which :: This is the arvo interface vane. Our formal state is a `++raft`, which
:: has five components: :: has five components:
:: ::
:: -- `fat` is the state for all local desks. :: -- `rom` is the state for all local desks.
:: -- `hoy` is the state for all foreign desks. :: -- `hoy` is the state for all foreign desks.
:: -- `ran` is the global, hash-addressed object store. :: -- `ran` is the global, hash-addressed object store.
:: -- `mon` is the set of mount points in unix. :: -- `mon` is the set of mount points in unix.
@ -3724,11 +3721,10 @@
(~(put by cez.ruf) nom.req cew.req) (~(put by cez.ruf) nom.req cew.req)
:: wake all desks, a request may have been affected. :: wake all desks, a request may have been affected.
=| mos/(list move) =| mos/(list move)
=+ rom=(fall (~(get by fat.ruf) our.req) *room) =/ des ~(tap in ~(key by dos.rom.ruf))
=+ des=~(tap in ~(key by dos.rom))
|- |-
?~ des [[[hen %give %mack ~] mos] ..^^$] ?~ des [[[hen %give %mack ~] mos] ..^^$]
=+ den=((de now hen ruf) [. .]:our.req i.des) =/ den ((de our now hen ruf) our i.des)
=^ mor ruf =^ mor ruf
=< abet:wake =< abet:wake
?: ?=(^ cew.req) den ?: ?=(^ cew.req) den
@ -3739,8 +3735,7 @@
[[hen %give %cruz cez.ruf]~ ..^$] [[hen %give %cruz cez.ruf]~ ..^$]
:: ::
$crow $crow
=+ rom=(fall (~(get by fat.ruf) our.req) *room) =/ des ~(tap by dos.rom.ruf)
=+ des=~(tap by dos.rom)
=| rus/(map desk {r/regs w/regs}) =| rus/(map desk {r/regs w/regs})
|^ |^
?~ des [[hen %give %croz rus]~ ..^^$] ?~ des [[hen %give %croz rus]~ ..^^$]
@ -3764,7 +3759,7 @@
:: ::
$drop $drop
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our.req des.req) =/ den ((de our now hen ruf) our des.req)
abet:drop-me:den abet:drop-me:den
[mos ..^$] [mos ..^$]
:: ::
@ -3783,17 +3778,12 @@
?: =(%$ des.req) ?: =(%$ des.req)
[~ ..^$] [~ ..^$]
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our.req des.req) =/ den ((de our now hen ruf) our des.req)
abet:(edit:den now dit.req) abet:(edit:den now dit.req)
[mos ..^$] [mos ..^$]
:: ::
$init $init
:- ~ [~ ..^$(hun.rom.ruf hen)]
%_ ..^$
fat.ruf
?< (~(has by fat.ruf) our.req)
(~(put by fat.ruf) our.req [-(hun hen)]:[*room .])
==
:: ::
$into $into
=. hez.ruf `hen =. hez.ruf `hen
@ -3804,11 +3794,8 @@
=+ ^- bem/beam =+ ^- bem/beam
?^ bem ?^ bem
u.bem u.bem
[[?>(?=(^ fat.ruf) p.n.fat.ruf) %base %ud 1] ~] [[our %base %ud 1] ~]
=+ rom=(~(get by fat.ruf) p.bem) =/ dos (~(get by dos.rom.ruf) q.bem)
?~ rom
~
=+ dos=(~(get by dos.u.rom) q.bem)
?~ dos ?~ dos
~ ~
?: =(0 let.dom.u.dos) ?: =(0 let.dom.u.dos)
@ -3820,18 +3807,18 @@
?=($mime p.p.b) ?=($mime p.p.b)
?=({$hoon ~} (slag (dec (lent a)) a)) ?=({$hoon ~} (slag (dec (lent a)) a))
== ==
:~ [hen %pass /one %c %info p.bem q.bem %& one] :~ [hen %pass /one %c %info our q.bem %& one]
[hen %pass /two %c %info p.bem q.bem %& two] [hen %pass /two %c %info our q.bem %& two]
== ==
=+ yak=(~(got by hut.ran.ruf) (~(got by hit.dom.u.dos) let.dom.u.dos)) =+ yak=(~(got by hut.ran.ruf) (~(got by hit.dom.u.dos) let.dom.u.dos))
=+ cos=(mode-to-soba q.yak (flop s.bem) all.req fis.req) =+ cos=(mode-to-soba q.yak (flop s.bem) all.req fis.req)
[hen %pass /both %c %info p.bem q.bem %& cos]~ [hen %pass /both %c %info our q.bem %& cos]~
:: ::
$merg :: direct state up $merg :: direct state up
?: =(%$ des.req) ?: =(%$ des.req)
[~ ..^$] [~ ..^$]
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our.req des.req) =/ den ((de our now hen ruf) our des.req)
abet:abet:(start:(me:ze:den [her.req dem.req] ~ &) cas.req how.req) abet:abet:(start:(me:ze:den [her.req dem.req] ~ &) cas.req how.req)
[mos ..^$] [mos ..^$]
:: ::
@ -3844,14 +3831,11 @@
=* bem bem.req =* bem bem.req
=. mon.ruf =. mon.ruf
(~(put by mon.ruf) des.req [p.bem q.bem r.bem] s.bem) (~(put by mon.ruf) des.req [p.bem q.bem r.bem] s.bem)
=+ yar=(~(get by fat.ruf) p.bem) =/ dos (~(get by dos.rom.ruf) q.bem)
?~ yar
[~ ..^$]
=+ dos=(~(get by dos.u.yar) q.bem)
?~ dos ?~ dos
[~ ..^$] [~ ..^$]
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:p.bem q.bem) =/ den ((de our now hen ruf) p.bem q.bem)
abet:(mont:den des.req bem) abet:(mont:den des.req bem)
[mos ..^$] [mos ..^$]
:: ::
@ -3889,8 +3873,7 @@
:: ::
$perm $perm
=^ mos ruf =^ mos ruf
::TODO after new boot system, just use our from global. =/ den ((de our now hen ruf) our des.req)
=+ den=((de now hen ruf) [. .]:our.req des.req)
abet:(perm:den pax.req rit.req) abet:(perm:den pax.req rit.req)
[mos ..^$] [mos ..^$]
:: ::
@ -3906,7 +3889,7 @@
?> ?=($warp -.req) ?> ?=($warp -.req)
=* rif rif.req =* rif rif.req
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) wer.req p.rif) =/ den ((de our now hen ruf) q.wer.req p.rif)
=< abet =< abet
?~ q.rif ?~ q.rif
cancel-request:den cancel-request:den
@ -3933,7 +3916,7 @@
=+ syd=(slav %tas i.t.pax) =+ syd=(slav %tas i.t.pax)
=+ inx=(slav %ud i.t.t.pax) =+ inx=(slav %ud i.t.t.pax)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [our wer] syd) =/ den ((de our now hen ruf) wer syd)
abet:(take-foreign-update:den inx ((hard (unit rand)) res.req)) abet:(take-foreign-update:den inx ((hard (unit rand)) res.req))
[[[hen %give %mack ~] mos] ..^$] [[[hen %give %mack ~] mos] ..^$]
:: ::
@ -3942,7 +3925,7 @@
:^ hen %give %mass :^ hen %give %mass
:- %clay :- %clay
:- %| :- %|
:~ domestic+[%& fat.ruf] :~ domestic+[%& rom.ruf]
foreign+[%& hoy.ruf] foreign+[%& hoy.ruf]
:- %object-store :- %| :- %object-store :- %|
:~ commits+[%& hut.ran.ruf] :~ commits+[%& hut.ran.ruf]
@ -3953,80 +3936,11 @@
:: ::
++ load ++ load
=> |% => |%
++ rove-0 ++ axle $%([%1 ruf=raft])
$% {$sing p/mood}
{$next p/mood q/cach}
$: $mult
p/mool
q/(unit aeon)
r/(map (pair care path) cach)
s/(map (pair care path) cach)
==
{$many p/? q/moat r/(map path lobe)}
==
++ wove-0 (cork wove |=(a/wove a(q (rove-0 q.a))))
++ cult-0 (jug wove-0 duct)
++ dojo-0 (cork dojo |=(a/dojo a(qyx *cult-0)))
++ rede-0 (cork rede |=(a/rede a(qyx *cult-0)))
++ room-0 (cork room |=(a/room a(dos (~(run by dos.a) dojo-0))))
++ rung-0 (cork rung |=(a/rung a(rus (~(run by rus.a) rede-0))))
++ raft-0
%+ cork raft
|= a/raft
%= a
fat (~(run by fat.a) room-0)
hoy (~(run by hoy.a) rung-0)
==
::
++ axle $%({$1 ruf/raft} {$0 ruf/raft-0})
-- --
|= old/axle |= old=axle
^+ ..^$ ^+ ..^$
?- -.old ..^$(ruf ruf.old)
$1
..^$(ruf ruf.old)
::
$0
|^
=- ^$(old [%1 -])
=+ ruf.old
:* (~(run by fat) rom)
(~(run by hoy) run)
ran mon hez ~ ~ *@da
==
::
++ wov
|= a/wove-0
^- wove
:- p.a
?. ?=($next -.q.a) q.a
[%next p.q.a ~ q.q.a]
::
++ cul
|= a/cult-0
^- cult
%- ~(gas by *cult)
%+ turn ~(tap by a)
|= {p/wove-0 q/(set duct)}
[(wov p) q]
::
++ rom
|= room-0
^- room
:- hun
%- ~(run by dos)
|= d/dojo-0
^- dojo
d(qyx (cul qyx.d))
::
++ run
|= a/rung-0
=- a(rus (~(run by rus.a) -))
|= r/rede-0
^- rede
r(qyx (cul qyx.r))
--
==
:: ::
++ scry :: inspect ++ scry :: inspect
|= {fur/(unit (set monk)) ren/@tas why/shop syd/desk lot/coin tyl/path} |= {fur/(unit (set monk)) ren/@tas why/shop syd/desk lot/coin tyl/path}
@ -4035,7 +3949,6 @@
=* his p.why =* his p.why
:: ~& scry+[ren `path`[(scot %p his) syd ~(rent co lot) tyl]] :: ~& scry+[ren `path`[(scot %p his) syd ~(rent co lot) tyl]]
:: =- ~& %scry-done - :: =- ~& %scry-done -
=+ got=(~(has by fat.ruf) his)
=+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot)) =+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot))
?~ luk [~ ~] ?~ luk [~ ~]
?: =(%$ ren) ?: =(%$ ren)
@ -4050,7 +3963,7 @@
?: ?=(%| -.m) ~ ?: ?=(%| -.m) ~
?: =(p.m his) ~ ?: =(p.m his) ~
`p.m `p.m
=+ den=((de now [/scryduct ~] ruf) [. .]:his syd) =/ den ((de our now [/scryduct ~] ruf) his syd)
=+ (aver:den for u.run u.luk tyl) =+ (aver:den for u.run u.luk tyl)
?~ - - ?~ - -
?~ u.- - ?~ u.- -
@ -4063,20 +3976,16 @@
^+ [*(list move) ..^$] ^+ [*(list move) ..^$]
?: ?=({$merge @ @ @ @ @ ~} tea) ?: ?=({$merge @ @ @ @ @ ~} tea)
?> ?=(?($writ $made) +<.q.hin) ?> ?=(?($writ $made) +<.q.hin)
=+ our=(slav %p i.t.tea)
=* syd i.t.t.tea =* syd i.t.t.tea
=+ her=(slav %p i.t.t.t.tea) =+ her=(slav %p i.t.t.t.tea)
=* sud i.t.t.t.t.tea =* sud i.t.t.t.t.tea
=* sat i.t.t.t.t.t.tea =* sat i.t.t.t.t.t.tea
=+ dat=?-(+<.q.hin $writ [%& p.q.hin], $made [%| result.q.hin]) =+ dat=?-(+<.q.hin $writ [%& p.q.hin], $made [%| result.q.hin])
=+ ^- kan/(unit dome) =/ kan=(unit dome)
%+ biff (~(get by fat.ruf) her) %+ bind (~(get by dos.rom.ruf) sud)
|= room |=(a=dojo dom.a)
%+ bind (~(get by dos) sud)
|= dojo
dom
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:abet:(route:(me:ze:den [her sud] kan |) sat dat) abet:abet:(route:(me:ze:den [her sud] kan |) sat dat)
[mos ..^$] [mos ..^$]
?: ?=({$blab care @ @ *} tea) ?: ?=({$blab care @ @ *} tea)
@ -4103,76 +4012,68 @@
?+ -.tea !! ?+ -.tea !!
$inserting $inserting
?> ?=({@ @ @ ~} t.tea) ?> ?=({@ @ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=+ wen=(slav %da i.t.t.t.tea) =+ wen=(slav %da i.t.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-inserting:den wen result.q.hin) abet:(take-inserting:den wen result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$diffing $diffing
?> ?=({@ @ @ ~} t.tea) ?> ?=({@ @ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=+ wen=(slav %da i.t.t.t.tea) =+ wen=(slav %da i.t.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-diffing:den wen result.q.hin) abet:(take-diffing:den wen result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$castifying $castifying
?> ?=({@ @ @ ~} t.tea) ?> ?=({@ @ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=+ wen=(slav %da i.t.t.t.tea) =+ wen=(slav %da i.t.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-castify:den wen result.q.hin) abet:(take-castify:den wen result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$mutating $mutating
?> ?=({@ @ @ ~} t.tea) ?> ?=({@ @ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=+ wen=(slav %da i.t.t.t.tea) =+ wen=(slav %da i.t.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-mutating:den wen result.q.hin) abet:(take-mutating:den wen result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$patching $patching
?> ?=({@ @ ~} t.tea) ?> ?=({@ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-patch:den result.q.hin) abet:(take-patch:den result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$ergoing $ergoing
?> ?=({@ @ ~} t.tea) ?> ?=({@ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ syd=(slav %tas i.t.t.tea) =+ syd=(slav %tas i.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [. .]:our syd) =/ den ((de our now hen ruf) our syd)
abet:(take-ergo:den result.q.hin) abet:(take-ergo:den result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$foreign-plops $foreign-plops
?> ?=({@ @ @ @ ~} t.tea) ?> ?=({@ @ @ @ ~} t.tea)
=+ our=(slav %p i.t.tea)
=+ her=(slav %p i.t.t.tea) =+ her=(slav %p i.t.t.tea)
=* syd i.t.t.t.tea =* syd i.t.t.t.tea
=+ lem=(slav %da i.t.t.t.t.tea) =+ lem=(slav %da i.t.t.t.t.tea)
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [our her] syd) =/ den ((de our now hen ruf) her syd)
abet:(take-foreign-plops:den ?~(lem ~ `lem) result.q.hin) abet:(take-foreign-plops:den ?~(lem ~ `lem) result.q.hin)
[mos ..^$] [mos ..^$]
:: ::
$foreign-x $foreign-x
?> ?=({@ @ @ @ @ *} t.tea) ?> ?=({@ @ @ @ @ *} t.tea)
=+ our=(slav %p i.t.tea)
=+ her=(slav %p i.t.t.tea) =+ her=(slav %p i.t.t.tea)
=+ syd=(slav %tas i.t.t.t.tea) =+ syd=(slav %tas i.t.t.t.tea)
=+ car=((hard care) i.t.t.t.t.tea) =+ car=((hard care) i.t.t.t.t.tea)
@ -4182,7 +4083,7 @@
->+ ->+
=* pax t.t.t.t.t.t.tea =* pax t.t.t.t.t.t.tea
=^ mos ruf =^ mos ruf
=+ den=((de now hen ruf) [our her] syd) =/ den ((de our now hen ruf) her syd)
abet:(take-foreign-x:den car cas pax result.q.hin) abet:(take-foreign-x:den car cas pax result.q.hin)
[mos ..^$] [mos ..^$]
== ==
@ -4210,19 +4111,14 @@
?> =(hen queued-duct) ?> =(hen queued-duct)
:: ::
(call hen [-:!>(*task:able) queued-task]) (call hen [-:!>(*task:able) queued-task])
:: =+ dal=(turn ~(tap by fat.ruf) |=([a=@p b=room] a)) :: =^ mos=(list move) une
:: =| mos=(list move) :: wake:(un our now hen ruf)
:: |- ^- [p=(list move) q=_..^^$] :: [mos ..^^$]
:: ?~ dal [mos ..^^$]
:: =+ une=(un i.dal now hen ruf)
:: =^ som une wake:une
:: $(dal t.dal, ruf abet:une, mos (weld som mos))
:: ::
$writ $writ
?> ?=({@ @ *} tea) ?> ?=({@ @ *} tea)
~| i=i.tea ~| i=i.tea
~| it=i.t.tea ~| it=i.t.tea
=+ our=(slav %p i.tea)
=+ him=(slav %p i.t.tea) =+ him=(slav %p i.t.tea)
:_ ..^$ :_ ..^$
:~ :* hen %pass /writ-want %a :~ :* hen %pass /writ-want %a

View File

@ -451,7 +451,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry) =/ clay-core (clay-gate our=~nul now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (call:clay-core call-args) =^ moves clay-gate (call:clay-core call-args)
:: ::
@ -472,7 +472,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry) =/ clay-core (clay-gate our=~nul now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (call:clay-core call-args) =^ moves clay-gate (call:clay-core call-args)
:: ::
@ -490,7 +490,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry) =/ clay-core (clay-gate our=~nul now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (take:clay-core take-args) =^ moves clay-gate (take:clay-core take-args)
:: ::
@ -511,7 +511,7 @@
== ==
^- [tang _clay-gate] ^- [tang _clay-gate]
:: ::
=/ clay-core (clay-gate our=~zod now=now eny=`@`0xdead.beef scry=scry) =/ clay-core (clay-gate our=~nul now=now eny=`@`0xdead.beef scry=scry)
:: ::
=^ moves clay-gate (take:clay-core take-args) =^ moves clay-gate (take:clay-core take-args)
:: ::