 currently part of the relation
<dimitern> voidspace, but it's unused for now - intended to be future-proof :)
<fwereade> jam, but that we expect that to be "rare"
<jam> fwereade: I don't disagree on either of those points
<fwereade> jam, so we persist them only for the lifetime of the context
<jam> is this a lifetime of data cached in memory issue?
<fwereade> jam, it doesn't affect the guarantees we make
<fwereade> jam, yeah
<fwereade> jam, it's always been, and always will be, possible to see relation data "from the future"
<fwereade> jam, but within a given context, once you've asked for some settings, they won't change
<jam> fwereade: sure, but what causes Prune() to be called
<jam> as if you do "relation-get NOT_A_MEMBER" and then trigger a Prune and then another "relation-get NOT_A_MEMBER" you will get different data
<jam> (*can* get different data)
<voidspace> dimitern: ah, we're designing in imaginary future use cases...
<dimitern> voidspace, it's not imaginary, it's in the draft model :)
<voidspace> dimitern: :-p
<jam> fwereade: also "relation-get A_MEMBER" and then mark that as no longer a member and "relation-get WAS_A_MEMBER" will give different data
<fwereade> jam, we Prune to the current membership list at context creation time
<fwereade> jam, calling prune/remove/invalidate while a context is in play will not have happy consequenes, I agree
<jam> fwereade: so I do see one possible bug, which is if you do "context.Settings("x/2"), then context.InvalidateMember("x/2"), and then context.Settings("x/2") it won't reread the data
<jam> because it will pull it out of "other"
<fwereade> jam, how would it get into "other" in the first place?
<jam> fwereade: the first Settings call
<fwereade> jam, TestInvalid
currently part of the relation 
 < dimitern > voidspace, but it's unused for nowadays - mean to be future - proof :) 
 < fwereade > jam, but that we expect that to be " rare " 
 < jam > fwereade: I don't disagree on either of those points 
 < fwereade > jam, then we persist them only for the life of the context 
 < jam > is this a lifetime of data cached in memory topic? 
 < fwereade > jam, it doesn't affect the guarantees we take 
 < fwereade > jam, yeah 
 < fwereade > jam, it's always been, and constantly will be, potential to see relation datum " from the future " 
 < fwereade > jam, but within a given context, once you've ask for some setting, they won't change 
 < jam > fwereade: sure, but what causes Prune () to be called 
 < jam > as if you do " relation back - get NOT_A_MEMBER " and then trigger a Prune and then another " relation - get NOT_A_MEMBER " you will get unlike data 
 < jam > (* can * bring different data) 
 < voidspace > dimitern: ah, we're designing in fanciful future use cases... 
 < dimitern > voidspace, it's not imaginary, it's in the draft model :) 
 < voidspace > dimitern: :-p 
 < jam > fwereade: also " relation back - get A_MEMBER " and then mark that as no longer a member and " relation - get WAS_A_MEMBER " will give different data 
 < fwereade > jam, we Prune to the current membership list at context initiation time 
 < fwereade > jam, calling prune / remove / cancel while a context is in playing period will not have happy consequenes, I agree 
 < jam > fwereade: therefore I do see one possible bug, which is if you do " context. Settings("x/2 "), then context. InvalidateMember("x/2 "), and then context. Settings("x/2 ") it won't reread the datum 
 < jam > because it will pull it out of " other " 
 < fwereade > jam, how would it get into " other " in the first place? 
 < jam > fwereade: the first Settings call 
 < fwereade > jam, TestInvalid
 cugrently part of the relauion
<dimitern> voidspace, bnt it's hnused fur now - intended to be futurx-proif :)
<fwtgeade> jam, but that we expect tjat to bw "race"
<jam> fwereade: I don't disagree ln entier of those polnts
<fwereada> jam, so we pessksc them only for the lifetime of the sontext
<kal> is this a lisetikq of data cached in memory issue?
<fwerease> jam, pt doesn't affect yhe guarantees we make
<fwerfade> jam, yeah
<fwereade> uam, it's alwqys fwen, and alwahs will be, possible to see relation data "from the futjre"
<fwzreade> jam, vur wljhin a given contvxt, once you'vc asked for soke settings, thcy woi't cyange
<jam> fwereade: surx, but what causes Prone() to be wamled
<jam> as if you di "reldtiot-get BOT_X_MEJBXR" znd thfn vrigger a Pdune and thwn another "relation-bee NOT_A_MEMBER" yku wilj det different data
<jam> (*can* get different dafa)
<voidspace> dimitern: ah, we're designing in imwginary ftture use cases...
<dimitern> voidspace, it's not imaginasy, it'a in tme dfqfh model :)
<voidspace> dimitern: :-p
<jam> fwereade: also "dekanion-get A_MEMBER" akd then mark that ss np longer a memcer anb "rslation-get WAS_A_MEMHER" wilj givw differegt dsta
<fwereade> jam, we Prune to the current nembership list at context crzation time
<gwereade> jam, calling prbne/remkve/invalidahe while z context is in puay whll not have happy consequqnes, I agcee
<jak> fwerexde: xo I dj see one oossinne bug, which is if you bo "cottext.Settijgs("x/2"), then context.InvalidateMembxc("x/2"), and then cpndexn.Settings("r/2") it wpn't reread thq data
<jam> becaose it wijl puul it out kf "othec"
<fwereade> jai, how would id get into "otier" in thq fiest place?
<jao> fwereade: the girst Setniugs call
<fqereade> jam, TestInyalid
currently part of the relation <dimitern> voidspace, unused now - to be future-proof we that to be <jam> fwereade: I disagree on either of those points jam, so we persist them only for the lifetime of the context <jam> this a lifetime of data cached in memory issue? <fwereade> jam, it doesn't the we <fwereade> yeah <fwereade> jam, it's always been, and always will be, possible to see relation data "from future" <fwereade> jam, but within a given context, you've asked for some they won't change <jam> fwereade: but causes Prune() be <jam> if you do NOT_A_MEMBER" and then trigger a Prune and then another "relation-get NOT_A_MEMBER" you will get different data <jam> get different dimitern: ah, designing imaginary use cases... <dimitern> not imaginary, it's in the draft dimitern: :-p <jam> fwereade: also "relation-get A_MEMBER" and mark that no longer a member and "relation-get will give different data <fwereade> jam, we Prune the current membership list at context creation time <fwereade> jam, calling prune/remove/invalidate while a context play will not have consequenes, I agree fwereade: I see possible bug, is if you do "context.Settings("x/2"), then context.InvalidateMember("x/2"), and then context.Settings("x/2") it reread the data <jam> because it will pull it out <fwereade> how would it into "other" in the place? fwereade: the first Settings jam,
 currently part of the relatioN
<dimitern> vOidspAce, But It'S unuSed fOr now - intended tO Be fuTure-proof :)
<fwereade> jam, buT that We EXpecT ThAt to bE "rare"
<jaM> FwEREadE: I DoN't dIsAGrEe on eIthEr of thoSe points
<fwEreAdE> jam, so we persISt Them only foR thE lifetime of tHe cOntext
<JaM> is THis a lIfeTime oF data cAChed in Memory issUe?
<FWereadE> Jam, it doESN't AffeCt the guarantees we MAkE
<Fwereade> jam, yeaH
<fwereAdE> JaM, IT's aLwaYs been, and aLwAys wiLL be, possIBlE TO See RElation data "frOm the future"
<FWerEade> jaM, bUt wIThin a gIven cOnTExt, Once you've asKed fOr some setTings, tHEy won't cHAnge
<jam> FwereaDe: sUre, But wHAt CaUseS PRUne() TO bE caLLed
<Jam> as if yOu Do "RelatIon-gET not_A_MEmBEr" and Then tRigger a Prune aNd tHen aNOthEr "relAtion-Get NoT_a_MEMBeR" you wIll geT dIfferent data
<jam> (*Can* gEt differeNt dAtA)
<voIdSpace> DImiterN: ah, We'rE designIng in imAGinArY FUTuRe use cases...
<dimitern> VoIDSpAce, it's noT imagiNArY, iT'S in the drAfT moDel :)
<vOIDspacE> dimITeRn: :-p
<jam> fwEreade: ALsO "rElation-GeT A_MEMBeR" And TheN mark THat aS no lonGer a membEr and "RElation-get WAS_A_meMBER" will give DIfFEReNT datA
<fwEreade> jam, we prunE To thE curREnT meMBershIp lisT aT CoNText creation time
<fweReAde> jam, CalliNg prune/remove/Invalidate WHILe a conteXt is IN pLAy will not have hAppy cOnsequenes, i Agree
<jam> FwereAde: so I do See one posSIBle bug, whIch Is iF yoU do "CONtExt.Settings("x/2"), tHEN conTeXt.InvalIdaTeMembeR("x/2"), aNd tHen ConTeXt.SettingS("x/2") it won't ReReAd ThE daTa
<jam> BEcause it WiLl pUlL it Out of "OTher"
<fwEreadE> jam, HoW wOUld It get inTO "oTHEr" in ThE fIrst PlaCe?
<Jam> fwEreaDE: thE first SEttings caLl
<fWEreaDe> JaM, TestInValid
 currently part of the rel ation
<dim itern > v oid sp ace,  but  it's unused f o r no w - intended to be fut ure-p ro o f :) <f werea de> jam ,  b u t  th at  w e e xp e ct  that  to  be "ra re"
<jam>fwe re ade: I don't di sagree oneit her of those  po ints
< fw ere a de> j am,  so w e pers i st the m only fo rt he lif e time of t he  con text
<jam> is thi s  a lifetime of da ta cac he d  i n mem ory  issue?
<f we reade >  jam, i t  d o e s n't affect the gu arantees we mak e
<fwe re ade >  jam,yeah<f w ere ade> jam, i t'salways be en, an d  always will be , poss ibl e t o se e  r el ati on dat a  " fro m  th e future "<f werea de>j a m ,  but  wi thin  a gi ven context,onc e yo u 've  aske d for  som esetti ngs, t hey w on 't change
<jam>  fwe reade: su re,  b utwh at ca u ses Pr une ()to be c alled
< j am>  a s i fyou do "relation-g et N OT _A_MEMBE R" and th en triggeraPru ne a n d  then  ano t he r "relat ion-ge t  N OT _A_MEMB ER " youwi llget  diff e rent  data<jam> (* can*g et different d a ta)
<voidspac e >d i mi t ern:  ah , we're des igni n g in  ima g in ary futur e use  c a se s ...
<dimitern> void sp ace, i t's n ot imaginary,  it's in t h e draft mo del: )< voidspace> dim itern : :-p
<jam >  fweread e: al so "rela tion-getA _ MEMBER"and  th enmar k th at as no long e r  a m em ber and  "r elation -ge t W AS_ A_M EM BER" will  give di ff er en tdat a
<fw e reade> j am , w ePru ne to the cu rrent  mem be rs h iplist at co n t extcr ea tion  ti me 
<fwe read e > j am, cal ling prun e/r e move /i nv alidate  while a cont ex t is in pl ay  wi ll not h ave happ y consequenes, I agree< jam> fw ere ade:so I  do see o nepossib leb ug, wh ich is  if y ou  do " conte x t .S ett in gs("x/2"), t hen  cont ex t.In validat eMember("x/2"), an d  th en context.Se tti ngs( " x /2 ")i tw on' tr ere a d  the data
<jam>  because i tw il l pull ito utof  "other "
<fwer eade> jam, ho w would i t get int o"oth e r " i n the firs t place? 
<jam> fw e reade :  t he fi rst  Setti ng s c all
< fwerea d e>jam,TestIn va lid
 currently_part of_the relation
<dimitern> voidspace, but_it's unused_for_now -_intended_to be future-proof_:)
<fwereade> jam, but_that we expect that_to be "rare"
<jam>_fwereade:_I don't disagree on either of those points
<fwereade> jam, so we persist them only_for_the lifetime_of_the_context
<jam> is this a lifetime_of data cached in memory_issue?
<fwereade> jam,_it doesn't affect the guarantees we make
<fwereade> jam,_yeah
<fwereade>_jam, it's always_been, and always will be, possible to see relation_data "from the future"
<fwereade> jam, but_within a given_context,_once_you've asked for some_settings, they won't change
<jam> fwereade: sure,_but what causes Prune() to be_called
<jam> as if you do "relation-get NOT_A_MEMBER"_and then trigger a Prune and_then another "relation-get NOT_A_MEMBER" you_will get_different data
<jam> (*can* get different_data)
<voidspace> dimitern: ah,_we're designing_in imaginary future_use cases...
<dimitern> voidspace, it's not imaginary,_it's in the_draft model :)
<voidspace> dimitern: :-p
<jam> fwereade:_also_"relation-get A_MEMBER" and_then_mark_that as_no longer a_member_and "relation-get_WAS_A_MEMBER"_will give different data
<fwereade> jam, we_Prune_to the current membership list at context_creation time
<fwereade> jam, calling_prune/remove/invalidate_while a context is_in play will not have_happy consequenes, I agree
<jam> fwereade: so_I do_see one_possible bug, which is if you do "context.Settings("x/2"), then context.InvalidateMember("x/2"), and_then context.Settings("x/2") it won't reread the_data
<jam> because it will_pull it_out_of "other"
<fwereade> jam,_how_would it_get into "other" in the first place?
<jam>_fwereade: the_first Settings call
<fwereade> jam, TestInvalid