Remove exceptional case in ++busk.

This commit is contained in:
C. Guy Yarvin 2016-10-29 19:02:08 -07:00
parent a6bf96e44f
commit d6097e7232
4 changed files with 247 additions and 235 deletions

View File

@ -11,8 +11,6 @@
:: ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|= pit/vase |= pit/vase
=, ^clay
=, clay
=, differ:^clay =, differ:^clay
=, differ:clay =, differ:clay
=, lines:clay =, lines:clay

View File

@ -6500,8 +6500,6 @@
~/ %busk ~/ %busk
|= gen/twig |= gen/twig
^- span ^- span
?: ?=({$face ^ *} sut)
[%face [p.p.sut [gen q.p.sut]] q.sut]
[%face [~ [gen ~]] sut] [%face [~ [gen ~]] sut]
:: ::
++ buss ++ buss

View File

@ -17,7 +17,9 @@
:: ::
|= pit/vase |= pit/vase
=, crypto =, crypto
=, ^jael =, pki:^jael
=, rights:^jael
=, moves:^jael
=, jael =, jael
:: :::: :: ::::
:::: # models :: data structures :::: # models :: data structures
@ -77,7 +79,7 @@
:: :: :: ::
++ move :: output ++ move :: output
{p/duct q/card} :: {p/duct q/card} ::
-- -- ::
:: :::: :: ::::
:::: # data :: static data :::: # data :: static data
:: :::: :: ::::
@ -354,13 +356,13 @@
0w0 :: 254, ~nev, Tlon 0w0 :: 254, ~nev, Tlon
0w0 :: 255, ~fes, John Burnham 0w0 :: 255, ~fes, John Burnham
== ==
-- -- ::
:: :::: :: ::::
:::: # light :: light cores :::: # light :: light cores
:: :::: :: ::::
=> |% => |%
:: :: ++py :: :: ++py
:::: ## sparse^light :: sparse range :::: ## sparse/light :: sparse range
:: :::: :: ::::
++ py ++ py
:: because when you're a star with 2^16 unissued :: because when you're a star with 2^16 unissued
@ -487,9 +489,9 @@
?: (gth q.n.a q.n.b) ?: (gth q.n.a q.n.b)
$(a l.a, b $(a r.a, b $(a r.b, r.b ~, q.n.b q.n.a))) $(a l.a, b $(a r.a, b $(a r.b, r.b ~, q.n.b q.n.a)))
$(a l.a, b $(a r.a)) $(a l.a, b $(a r.a))
-- -- ::py
:: :: ++ry :: :: ++ry
:::: ## rights^light :: rights algebra :::: ## rights/light :: rights algebra
:: :::: :: ::::
++ ry ++ ry
:: ::
@ -607,7 +609,7 @@
=/ ped (~(dep by old) new) =/ ped (~(dep by old) new)
:- ?~(p.ped ~ `[nut p.ped]) :- ?~(p.ped ~ `[nut p.ped])
?~(q.ped ~ `[nut q.ped]) ?~(q.ped ~ `[nut q.ped])
-- -- ::dif
:: :: ++sub:ry :: :: ++sub:ry
++ sub :: l - r ++ sub :: l - r
^- (unit rite) ^- (unit rite)
@ -665,8 +667,8 @@
%- (~(uno by old) new) %- (~(uno by old) new)
|= (trel _p.-<.new _q.->.new _q.->.new) |= (trel _p.-<.new _q.->.new _q.->.new)
?>(=(q r) r) ?>(=(q r) r)
-- -- ::uni
-- -- ::ry
:: :: ++up :: :: ++up
:::: ## wallet^light :: wallet algebra :::: ## wallet^light :: wallet algebra
:: :::: :: ::::

View File

@ -1,6 +1,6 @@
!: :: /van/zuse !: :: /van/zuse
:: :: !%reference :: :: !%reference
:: %zuse: standard library. :: %zuse: arvo library.
:: ::
:: %zuse contains models (data structures) and engines :: %zuse contains models (data structures) and engines
:: (functions/classes) shared across arvo's eight major :: (functions/classes) shared across arvo's eight major
@ -8,7 +8,7 @@
:: ::
:: - %ames: networking :: - %ames: networking
:: - %behn: scheduling :: - %behn: scheduling
:: - %clay: storage :: - %clay: revision control
:: - %dill: console :: - %dill: console
:: - %eyre: web :: - %eyre: web
:: - %ford: build :: - %ford: build
@ -26,26 +26,26 @@
:: :::: :: ::::
|% |%
:: :: :: ::
:::: ## ames^models :: networking :::: ## ames/models :: networking
:: :::: :: ::::
++ ames ++ ames
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## behn^models :: scheduling :::: ## behn/models :: scheduling
:: :::: :: ::::
++ behn ++ behn
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## clay^models :: storage :::: ## clay/models :: storage
:: :::: :: ::::
++ clay ++ clay
|% |%
:: :: :: ::
:::: ### differ^clay^models :: hunt-mcilroy diff :::: ### differ/clay/models :: hunt-mcilroy diff
:: :::: :: ::::
++ differ ^? ++ differ ^?
|% |%
@ -80,234 +80,248 @@
{$2 p/axis q/udon} :: mutate! {$2 p/axis q/udon} :: mutate!
== :: == ::
++ urge |*(a/mold (list (unce a))) :: list change ++ urge |*(a/mold (list (unce a))) :: list change
-- -- ::differ
-- --
:: :: :: ::
:::: ## dill^models :: console :::: ## dill/models :: console
:: :::: :: ::::
++ dill ++ dill
|% |%
++ foo %bar ++ $ %$ :: placeholder
-- --
:: :: :: ::
:::: ## eyre^models :: web :::: ## eyre/models :: web
:: :::: :: ::::
++ eyre ++ eyre
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## ford^models :: build :::: ## ford/models :: build
:: :::: :: ::::
++ ford ++ ford
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## gall^models :: application :::: ## gall/models :: application
:: :::: :: ::::
++ gall ++ gall
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## jael^models :: security :::: ## jael/models :: security
:: :::: :: ::::
++ jael ^? ++ jael ^?
|% |%
:: :: :: ::
:::: ### public^jael^models :: certificates :::: ### pki/jael/models :: certificates
:: :::: :: ::::
:: the urbit meta-certificate (++wyll) is a sequence ++ pki ^?
:: of certificates (++cert). each cert in a wyll |%
:: revokes and replaces the previous cert. the :: the urbit meta-certificate (++will) is a sequence
:: version number of a ship is a ++life. :: of certificates (++cert). each cert in a will
:: :: revokes and replaces the previous cert. the
:: the deed contains an ++arms, a definition :: version number of a ship is a ++life.
:: of cosmetic identity; a semi-trusted parent, ::
:: which signs the initial certificate and provides :: the deed contains an ++arms, a definition
:: routing services; and a dirty bit. if the dirty :: of cosmetic identity; a semi-trusted parent,
:: bit is set, the new life of this ship may have :: which signs the initial certificate and provides
:: lost information that the old life had. :: routing services; and a dirty bit. if the dirty
:: :: bit is set, the new life of this ship may have
++ ares (unit {p/term q/(list tank)}) :: possible error :: lost information that the old life had.
++ arms (map chip (pair @ta @t)) :: stated identity ::
++ bull :: cert metadata ++ ares (unit {p/term q/(list tank)}) :: possible error
$: dad/ship :: parent ++ arms (map chip (pair @ta @t)) :: stated identity
dob/? :: & clean, | dirty ++ bull :: cert metadata
nym/arms :: identity strings $: dad/ship :: parent
== :: dob/? :: & clean, | dirty
++ cert (tale deed) :: signed deed nym/arms :: identity strings
++ chip :: standard identity == ::
$? $giv :: given name ++ cert (tale deed) :: signed deed
$sur :: surname ++ chip :: standard identity
$had :: fictitious name $? $giv :: given name
$mid :: middle name $sur :: surname
== :: $had :: fictitious name
++ coop (unit ares) :: e2e ack $mid :: middle name
++ deed :: certificate deed == ::
$: doc/bull :: metadata ++ coop (unit ares) :: e2e ack
pub/pass :: public key ++ deed :: certificate deed
== :: $: doc/bull :: metadata
++ farm (map ship will) :: pki dump set pub/pass :: public key
++ hand @uvH :: 128-bit hash == ::
++ life @ud :: ship version ++ farm (map ship will) :: pki dump set
++ mind {who/ship lyf/life} :: key identifier ++ hand @uvH :: 128-bit hash
++ name (pair @ta @t) :: ascii / unicode ++ life @ud :: ship version
++ oath @ :: signature ++ mind {who/ship lyf/life} :: key identifier
++ tale :: urbit-signed * ++ name (pair @ta @t) :: ascii / unicode
|* typ/mold :: payload mold ++ oath @ :: signature
$: dat/typ :: data ++ tale :: urbit-signed *
syg/(map ship (pair life oath)) :: signatures |* typ/mold :: payload mold
== :: $: dat/typ :: data
++ will (map life cert) :: meta-certificate syg/(map ship (pair life oath)) :: signatures
== ::
++ will (map life cert) :: meta-certificate
-- ::pki
:: :: :: ::
:::: ### promise^jael^models :: rights and promises :::: ### rights/jael/models :: rights or promises
:: :::: :: ::
:: %jael tracks promises (++rite) from ship to ship. ++ rights ^?
:: a rite may be any right, badge, asset, secret, etc. =, pki
:: un-shared secret or private asset is stored as a |%
:: rite from self to self. :: %jael tracks promises (++rite) from ship to ship.
:: :: a rite may be any right, badge, asset, secret, etc.
:: each rite is really a class of rights, and often :: un-shared secret or private asset is stored as a
:: has its own internal set or map structure. :: rite from self to self.
:: ::
:: present kinds of rite: :: each rite is really a class of rights, and often
:: :: has its own internal set or map structure.
:: %apple: application secret for a web api. ::
:: %block: the promisee is banned. :: present kinds of rite:
:: %email: email tied to promissee's ship. ::
:: %final: ship/ticket pair, ready to launch. :: %apple: application secret for a web api.
:: %fungi: fungible, countable asset. :: %block: the promisee is banned.
:: %guest: permission to adopt foreign child. :: %email: email tied to promissee's ship.
:: %hotel: block of unissued children. :: %final: ship/ticket pair, ready to launch.
:: %jewel: urbit private keys. :: %fungi: fungible, countable asset.
:: %login: user's login passcode. :: %guest: permission to adopt foreign child.
:: %pword: password for a website/api. :: %hotel: block of unissued children.
:: %token: user access token for a web api. :: %jewel: urbit private keys.
:: %urban: symmetric key for urbit networking. :: %login: user's login passcode.
:: :: %pword: password for a website/api.
:: %fungi keys can be anything, but don't reuse :: %token: user access token for a web api.
:: currency codes. codes for urbit invitations: :: %urban: symmetric key for urbit networking.
:: %ugl == galaxy, %usr == star, %upl == planet ::
:: :: %fungi keys can be anything, but don't reuse
++ bill (pair @da @) :: expiring value :: currency codes. codes for urbit invitations:
++ bump :: rights change :: %ugl == galaxy, %usr == star, %upl == planet
$: mor/safe :: add rights ::
les/safe :: lose rights :: you can think of [our her rite] as an rdf triple.
== :: ::
++ dorm (pair ship bloq) :: issuing group ++ bill (pair @da @) :: expiring value
++ pile (tree (pair @ @)) :: efficient ship set ++ bump :: rights change
++ rite :: urbit commitment $: mor/safe :: add rights
$% {$apple p/(map site @)} :: web api key les/safe :: lose rights
{$block $~} :: banned == ::
{$email p/(set @ta)} :: email addresses ++ dorm (pair ship bloq) :: issuing group
{$final p/(map ship @pG)} :: ticketed ships ++ pile (tree (pair @ @)) :: efficient ship set
{$fungi p/(map term @ud)} :: fungibles ++ rite :: urbit commitment
{$guest $~} :: refugee visa $% {$apple p/(map site @)} :: web api key
{$hotel p/(map dorm pile)} :: reserved block {$block $~} :: banned
{$jewel p/(map life ring)} :: private keyring {$email p/(set @ta)} :: email addresses
{$login p/(set @pG)} :: login secret {$final p/(map ship @pG)} :: ticketed ships
{$pword p/(map site (map @t @t))} :: web passwd by user {$fungi p/(map term @ud)} :: fungibles
{$token p/(map site (map @t @t))} :: app tokens by user {$guest $~} :: refugee visa
{$urban p/(map hand bill)} :: urbit symmetric keys {$hotel p/(map dorm pile)} :: reserved block
== :: {$jewel p/(map life ring)} :: private keyring
++ site (list @ta) :: [%com %yahoo %www ~] {$login p/(set @pG)} :: login secret
++ safe (tree rite) :: rights set {$pword p/(map site (map @t @t))} :: web passwd by user
{$token p/(map site (map @t @t))} :: app tokens by user
{$urban p/(map hand bill)} :: urbit symmetric keys
== ::
++ site (list @ta) :: [%com %yahoo %www ~]
++ safe (tree rite) :: rights set
-- ::rights
:: :: :: ::
:::: ### move^jael^models :: i/o :::: ### moves/jael/models :: i/o
:: :::: :: ::::
:: %jael has two general kinds of task: changes ++ moves ^?
:: and change subscriptions. =, pki
:: =, rights
:: change tasks are designed to match high-level |%
:: operations - for instance, we have %burn, %mint, :: %jael has two general kinds of task: changes
:: and %move, not just a single delta operation. :: and change subscriptions.
:: more of these operations wyll probably be added, ::
:: and invariants enforced at transaction end. :: change tasks are designed to match high-level
:: :: operations - for instance, we have %burn, %mint,
:: subscriptions are also user-focused - for instance, :: and %move, not just a single delta operation.
:: %vein sends all the information needed to maintain :: more of these operations will probably be added,
:: the secure channel, both rights and certificates. :: and invariants enforced at transaction end.
:: the security-critical tasks (%veil, %vein, %vine) ::
:: should probably be bound to a whitelisted duct set. :: subscriptions are also user-focused - for instance,
:: (all secrets are redacted from %vest gifts.) :: %vein sends all the information needed to maintain
:: :: the secure channel, both rights and certificates.
:: %jael only talks to %ames and %behn. we send messages :: the security-critical tasks (%veil, %vein, %vine)
:: through %ames and use %behn timers. :: should probably be bound to a whitelisted duct set.
:: :: (all secrets are redacted from %vest gifts.)
++ action :: balance change ::
%+ pair ship :: partner :: %jael only talks to %ames and %behn. we send messages
%+ each bump :: &/liability change :: through %ames and use %behn timers.
bump :: |/asset change ::
:: :: ++ action :: balance change
++ balance :: balance sheet %+ pair ship :: partner
%+ pair :: %+ each bump :: &/liability change
(map ship safe) :: liabilities bump :: |/asset change
(map ship safe) :: assets :: ::
:: :: ++ balance :: balance sheet
++ change :: urbit change %+ pair ::
$% $: $fact :: certificate change (map ship safe) :: liabilities
rex/ship :: owner (map ship safe) :: assets
vie/(unit (unit ship)) :: made/heard from :: ::
lyf/life :: deed added/modified ++ change :: urbit change
gan/growth :: info gained $% $: $fact :: certificate change
== :: rex/ship :: owner
$: $rite :: rights change vie/(unit (unit ship)) :: made/heard from
rex/ship :: issuer lyf/life :: deed added/modified
pal/ship :: issued to gan/growth :: info gained
del/bump :: change == ::
== == :: $: $rite :: rights change
:: :: rex/ship :: issuer
++ channel :: secure channel pal/ship :: issued to
$: out/(unit (pair hand bill)) :: outbound key del/bump :: change
inn/(map hand bill) :: inbound keys == == ::
cur/(unit life) :: their version :: ::
sax/(list ship) :: their ancestry ++ channel :: secure channel
pub/will :: their public keys $: out/(unit (pair hand bill)) :: outbound key
== :: inn/(map hand bill) :: inbound keys
++ gift :: out result <-$ cur/(unit life) :: their version
$? {$veil p/channel} :: secure channel sax/(list ship) :: their ancestry
{$vest p/tally} :: balance update pub/will :: their public keys
{$vein p/life q/(map life ring)} :: private keys == ::
{$vine p/(list change)} :: all raw changes ++ gift :: out result <-$
== :: $? {$veil p/channel} :: secure channel
++ growth :: unit of learning {$vest p/tally} :: balance update
$% {$sign p/mind q/@} :: add/update signature {$vein p/life q/(map life ring)} :: private keys
{$step p/cert} :: add whole deed {$vine p/(list change)} :: all raw changes
== :: == ::
++ note :: out request $-> ++ growth :: unit of learning
$% {$b $wait p/@da} :: wait until $% {$sign p/mind q/@} :: add/update signature
{$x $mess p/ship q/path r/*} :: send message {$step p/cert} :: add whole deed
== :: == ::
++ remote :: remote notification ++ note :: out request $->
%+ each safe :: &/addition $% {$b $wait p/@da} :: wait until
safe :: |/replacement {$x $mess p/ship q/path r/*} :: send message
:: :: == ::
++ sign :: in result $<- ++ remote :: remote notification
$% {$b $wake $~} :: wakeup %+ each safe :: &/addition
{$x $rest p/coop} :: message result safe :: |/replacement
== :: :: ::
++ tally :: balance update ++ sign :: in result $<-
%+ each balance :: complete $% {$b $wake $~} :: wakeup
action :: change {$x $rest p/coop} :: message result
:: == ::
++ task :: in request ->$ ++ tally :: balance update
$% {$burn p/ship q/safe} :: destroy rights %+ each balance :: complete
{$hail p/ship q/remote} :: remote update action :: change
{$init p/@pG q/arms} :: initialize urbit ::
{$meet p/(unit (unit ship)) q/farm} :: integrate pki from ++ task :: in request ->$
{$mint p/ship q/safe} :: create rights $% {$burn p/ship q/safe} :: destroy rights
{$move p/ship q/ship r/safe} :: transfer from/to {$hail p/ship q/remote} :: remote update
{$next p/bull} :: update private key {$init p/@pG q/arms} :: initialize urbit
{$nuke $~} :: cancel tracker from {$meet p/(unit (unit ship)) q/farm} :: integrate pki from
{$veil p/ship} :: view secret channel {$mint p/ship q/safe} :: create rights
{$vein $~} :: view signing keys {$move p/ship q/ship r/safe} :: transfer from/to
{$vest $~} :: view public balance {$next p/bull} :: update private key
{$vine $~} :: view secret history {$nuke $~} :: cancel tracker from
{$west p/ship q/path r/*} :: remote request {$veil p/ship} :: view secret channel
== :: {$vein $~} :: view signing keys
-- {$vest $~} :: view public balance
{$vine $~} :: view secret history
{$west p/ship q/path r/*} :: remote request
== ::
-- ::moves
-- ::jael
-- --
:: :::: :: ::::
:::: # engines :: engines :::: # engines :: engines
@ -318,14 +332,14 @@
:: :::: :: ::::
++ ames ++ ames
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # behn^engines :: scheduling :::: # behn^engines :: scheduling
:: :::: :: ::::
++ behn ++ behn
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # clay^engines :: storage :::: # clay^engines :: storage
@ -592,8 +606,8 @@
* e * e
== ==
[%0 u.c] [%0 u.c]
-- -- ::nude
-- -- ::differ
:: :: :: ::
:::: ### lines^clay^engines :: unix line files :::: ### lines^clay^engines :: unix line files
:: :::: :: ::::
@ -669,35 +683,35 @@
:: :::: :: ::::
++ dill ++ dill
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # eyre^engines :: web :::: # eyre^engines :: web
:: :::: :: ::::
++ eyre ++ eyre
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # ford^engines :: build :::: # ford^engines :: build
:: :::: :: ::::
++ ford ++ ford
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # gall^engines :: application :::: # gall^engines :: application
:: :::: :: ::::
++ gall ++ gall
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: # jael^engines :: security :::: # jael^engines :: security
:: :::: :: ::::
++ jael ++ jael
|% |%
++ foo %bar ++ $ %$
-- --
:: :: :: ::
:::: ## number^engines :: misc number theory :::: ## number^engines :: misc number theory
@ -3928,11 +3942,11 @@
++ page (cask *) :: untyped cage ++ page (cask *) :: untyped cage
++ pail ?($none $warm $cold) :: connection status ++ pail ?($none $warm $cold) :: connection status
++ pipe :: secure channel ++ pipe :: secure channel
$: out/(unit (pair hand bill:^jael)) :: outbound key $: out/(unit (pair hand bill:rights:^jael)) :: outbound key
inn/(map hand bill:^jael) :: inbound keys inn/(map hand bill:rights:^jael) :: inbound keys
cur/(unit life) :: their version cur/(unit life) :: their version
sax/(list ship) :: their ancestry sax/(list ship) :: their ancestry
pub/will:^jael :: their public keys pub/will:pki:^jael :: their public keys
== :: == ::
++ plan (trel view (pair @da (unit @dr)) path) :: subscription ++ plan (trel view (pair @da (unit @dr)) path) :: subscription
++ plea {p/@ud q/{p/? q/@t}} :: live prompt ++ plea {p/@ud q/{p/? q/@t}} :: live prompt
@ -4064,7 +4078,7 @@
++ wyll (list deyd) :: certificate ++ wyll (list deyd) :: certificate
++ zuse %310 :: hoon+zuse kelvin ++ zuse %310 :: hoon+zuse kelvin
:: :: :: ::
:::: :::: this wyll become `%york`, vane structures. :::: :::: this will become `%york`, vane structures.
:: :: :: ::
++ gift-ames :: out result <-$ ++ gift-ames :: out result <-$
$% {$drop $~} :: drop packet $% {$drop $~} :: drop packet
@ -4113,7 +4127,7 @@
++ kiss-xmas :: in request ->$ ++ kiss-xmas :: in request ->$
$% {$hear p/lane q/@} :: $% {$hear p/lane q/@} ::
{$mess p/ship q/path r/*} :: send message {$mess p/ship q/path r/*} :: send message
{$gear p/farm:^jael q/(map life ring)} :: general update {$gear p/farm:pki:^jael q/(map life ring)}:: general update
{$wake $~} :: {$wake $~} ::
== :: == ::
++ card-xmas :: out cards ++ card-xmas :: out cards
@ -4126,7 +4140,7 @@
$: $j :: to %jael $: $j :: to %jael
$% {$line p/ship q/@da r/code} :: $% {$line p/ship q/@da r/code} ::
{$link p/ship q/@da r/code} :: {$link p/ship q/@da r/code} ::
{$meet p/farm:^jael} :: {$meet p/farm:pki:^jael} ::
{$view p/ship} :: {$view p/ship} ::
{$west p/ship q/path r/*} :: to %gall {$west p/ship q/path r/*} :: to %gall
== == == :: == == == ::
@ -4491,6 +4505,6 @@
{$e gift-eyre} {$e gift-eyre}
{$f gift-ford} {$f gift-ford}
{$g gift:gall} {$g gift:gall}
{$j gift:^jael} {$j gift:moves:^jael}
== ==
-- --