diff --git a/base/ape/hood.hoon b/base/ape/hood.hoon
index ce5d3318c2..b719c7e9e8 100644
--- a/base/ape/hood.hoon
+++ b/base/ape/hood.hoon
@@ -88,6 +88,7 @@
++ poke-kiln-cp (wrap poke-cp):from-kiln
++ poke-kiln-rm (wrap poke-rm):from-kiln
++ poke-kiln-mv (wrap poke-mv):from-kiln
+++ poke-kiln-schedule (wrap poke-schedule):from-kiln
++ poke-will (wrap poke-will):from-helm
++ mere-kiln (wrap take-mere):from-kiln
++ mere-kiln-sync (wrap take-mere-sync):from-kiln
diff --git a/base/arvo/ford.hoon b/base/arvo/ford.hoon
index 881f66c36f..fa7c31e082 100644
--- a/base/arvo/ford.hoon
+++ b/base/arvo/ford.hoon
@@ -820,6 +820,8 @@
++ keel :: apply mutations
|= [cof=cafe suh=vase yom=(list (pair wing vase))]
^- (bolt vase)
+ %+ cool => |=([a=wing b=type *] [a b])
+ |.(leaf/"ford: keel {
} {<(turn yom +)>}")
%^ maim cof
%+ slop suh
|- ^- vase
@@ -960,8 +962,8 @@
=* for p.i.all
=+ raf=(fang cof for)
?: ?=(%2 -.q.raf)
- %- (slog 0 leaf/"! {<`mark`for>} build failed, ignoring:" q.q.raf)
- (fine cof lil)
+ =. q.q.raf :_(q.q.raf leaf/"! {<`mark`for>} build failed, ignoring.")
+ ((slog 0 (flop q.q.raf)) (fine cof lil))
%+ cope `(bolt vase)`raf
|= [cof=cafe vax=vase]
%+ fine cof
@@ -1023,11 +1025,12 @@
++ link :: translate
|= [cof=cafe too=mark for=mark vax=vase]
^- (bolt vase)
+ :: %+ cool |.(leaf/"ford: link {} {} {}")
?: =(too for) (fine cof vax)
?: |(=(%noun for) =(%$ for))
((lake too) cof vax)
%+ cope (fang cof for)
- |= [cof=cafe pro=vase]
+ |= [cof=cafe pro=vase] ^- (bolt vase)
?: &((slob %grow p.pro) (slob too p:(slap pro [%cnzy %grow])))
%+ cope (keel cof pro [[%& 6]~ vax]~)
|= [cof=cafe pox=vase]
diff --git a/base/arvo/zuse.hoon b/base/arvo/zuse.hoon
index 55fe5cf595..e6590e7ba6 100644
--- a/base/arvo/zuse.hoon
+++ b/base/arvo/zuse.hoon
@@ -1030,7 +1030,8 @@
=+ dir=((hard arch) .^(%cy pax))
?~ q.dir [%ins val]
=+ for=((hard mark) -:(flop pax))
- [%mut [for [%atom %$] .^(%cx pax)] val]
+ ?> =(for p.val)
+ [%mut [for p.q.val .^(%cx pax)] val]
::
++ file :: simple file load
|= pax=path
diff --git a/base/cat/hood/schedule.hoon b/base/cat/hood/schedule.hoon
new file mode 100644
index 0000000000..8e94d034ca
--- /dev/null
+++ b/base/cat/hood/schedule.hoon
@@ -0,0 +1 @@
+|=([^ [where=path tym=@da eve=@t ~] ~] kiln-schedule/[where tym eve])
diff --git a/base/lib/kiln.hoon b/base/lib/kiln.hoon
index 8d32df42ab..cacc0c3cc8 100644
--- a/base/lib/kiln.hoon
+++ b/base/lib/kiln.hoon
@@ -101,23 +101,30 @@
abet:abet:(merge:(work syd) ali sud gim)
::
++ do-info
- |= [mez=tape pax=path tor=toro]
+ |= [mez=tape tor=toro]
abet:(emit:(spam leaf/mez ~) %info /kiln our tor)
::
- ++ poke-rm |=(a=path (do-info "removed" a (fray a)))
+ ++ poke-rm |=(a=path (do-info "removed" (fray a)))
++ poke-cp
|= [input=path output=path]
- %^ do-info "copied" input
+ %+ do-info "copied"
?> =(-:(flop input) -:(flop output))
(foal output -:(flop input) %noun .^(%cx input)) :: XX type
::
++ poke-mv
|= [input=path output=path]
- %^ do-info "moved" input
+ %+ do-info "moved"
?> =(-:(flop input) -:(flop output))
%+ furl (fray output)
(foal output -:(flop input) %noun .^(%cx input))
::
+ ++ poke-schedule
+ |= [where=path tym=@da eve=@t]
+ =. where (welp where /sched)
+ %+ do-info "scheduled"
+ =+ old=;;((map ,@da cord) (fall (file where) ~))
+ (foal where %sched !>((~(put by old) tym eve)))
+ ::
++ take |=(way=wire ?>(?=([@ ~] way) (work i.way))) :: general handler
++ take-mere ::
|= [way=wire are=(each (set path) (pair term tang))]
diff --git a/base/mar/sched.hoon b/base/mar/sched.hoon
index 7d3b15682e..85a5cb82f0 100644
--- a/base/mar/sched.hoon
+++ b/base/mar/sched.hoon
@@ -3,7 +3,7 @@
::
|_ dat=(map ,@da cord)
++ grow :: convert to
- |% ++ mime `^mime`[/text/x-sched (tact tape)]
+ |% ++ mime [/text/x-sched (tact tape)]
++ tape
(zing `wall`(turn sorted-list |=([a=@da b=cord] "{} {(trip b)}\0a")))
++ elem =< ;list: *{(turn sorted-list .)}