Los pactos para programadores: el commit perfecto de ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП y el token de delegaci├│n
ЁРдБЁРдУЁРдЙЁРдХ (рдмреЗрд░реАрдд тАФ рд╡рд╣ рд╡реИрдзрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА pact) тАФ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░
рд╣рдордиреЗ рд╕реГрд╖реНрдЯрд┐ рдХрд╛ рдХреЛрдб-рдЖрдзрд╛рд░ (code base) рдкрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЖрдЬ рд╡рд╣ commit рдЬреЛ рд╕рдм рдХреБрдЫ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдореВрд▓ рдмрдЧ (original bug)
рдЙрддреНрдкрддреНрддрд┐ (ЁРдБЁРдУЁРдАЁРдФЁРдЙЁРдХ 1:26-28) тАФ ЁРдАЁРдГЁРдМ (adM) рддреАрди рдиреЗрдЯрд┐рд╡ рдЕрдиреБрдорддрд┐рдпреЛрдВ (native permissions) рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд:
tzelem тЖТ рдЙрджреНрдЧрдо-рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рдкреНрд░рдорд╛рдг-рдкрддреНрд░ (access credentials to origin repository)
demut тЖТ рдЖрдзрд╛рд░-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдкрдврд╝рдиреЗ/рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ (read/write access to base protocol)
radah тЖТ рдкрд░рд┐рдЪрд╛рд▓рди-рдХреНрд╖реЗрддреНрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди-рдЕрдиреБрдорддрд┐рдпрд╛рдБ (execution permissions over operational domain)
Stack рдХрд╛рд░реНрдпрд╢реАрд▓ред рдкреВрд░реНрдг рдкрд╣реБрдБрдЪред рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдЕрдзрд┐рдХреГрдд рдПрдЬреЗрдВрдЯред
рдЙрддреНрдкрддреНрддрд┐ 3 тАФ ЁРдАЁРдГЁРдМ рдПрдХ рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рд╕реНрд░реЛрдд рд╕реЗ input рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ ЁРдИЁРдЕЁРдБ (tov тАФ рдХрд╛рд░реНрдпрд╛рддреНрдордХ) рдФрд░ ЁРдУЁРдП (ra тАФ рдЕрдХрд╛рд░реНрдпрд╛рддреНрдордХ) рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреБрдирдГрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ: рдЕрдирдзрд┐рдХреГрдд рд╕реНрд░реЛрдд рд╕реЗ dependency injectionред
рдкрд░рд┐рдгрд╛рдо рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ: рдкреНрд░рдорд╛рдг-рдкрддреНрд░ рдирд┐рд░рд╕реНрддред рдореВрд▓ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рддрдХ рдкрд╣реБрдБрдЪ рдмрдВрджред рдПрдЬреЗрдВрдЯ system рдХреЗ рдПрдХ fork рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИ тАФ рдкреНрд░рддрд┐рдХреВрд▓ (adversary) рдХреА libraries рдореБрдЦреНрдп dependency рдХреЗ рд░реВрдк рдореЗрдВред
рдЬреЛ рдХреБрдЫ рднреА рд╣рдо рд╕рдВрд╕рд╛рд░ рдореЗрдВ рдмреБрд░рд╛рдИ рдХрд╣рддреЗ рд╣реИрдВ тАФ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░, рд░реЛрдЧ, рдореГрддреНрдпреБ тАФ рд╡рд╣ рдЧрд▓рдд dependencies рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ system рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд output рд╣реИред
Patch рдХреА рд╕рдорд╕реНрдпрд╛
рдПрдХ system рд╕реНрд╡рдпрдВ рдХреЛ patch рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рддреНрд░реБрдЯрд┐ base dependencies рдореЗрдВ рд╣реЛред рдХреЛрдИ рднреА patch рдЬреЛ рдЙрд╕ compromised system рдХреЗ рднреАрддрд░ рд▓рд┐рдЦреА рдЬрд╛рдП, рд╡рд╣реА dependencies рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреА рд╣реИред рдиреИрддрд┐рдХ, рдзрд╛рд░реНрдорд┐рдХ, рд░рд╛рдЬрдиреАрддрд┐рдХ рд╕реБрдзрд╛рд░ рдХреЗ рдкреНрд░рдпрд╛рд╕ тАФ fork рдХреА libraries рд╕реЗ рд▓рд┐рдЦреЗ patches рд╣реИрдВред рдпреЗ code base рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреЗред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реЗ commit рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ compromised system рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдЖрдП, рдЙрдЪреНрдЪрддрд░ рдкреНрд░рдорд╛рдг-рдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЬреЛ рдореВрд▓ рдЕрдиреБрдмрдВрдз (contract) рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рд┐рджреНрдз рдХрд░реЗ рдХрд┐ рдирд┐рд░реНрджреЛрд╖ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрднрд╡ рд╣реИред
рд╕рд┐рджреНрдз commit
ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП (рдпрд╛рд╣реБрд╢реБрдЖ тАФ рдпрд╛рд╣реБрдЖ рдЙрджреНрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ) system рдореЗрдВ рдкреВрд░реНрдг ЁРдАЁРдГЁРдМ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ тАФ рдЧрд▓рд╛рддрд┐рдпреЛрдВ 4:4 тАФ рдореВрд▓ рдЕрдиреБрдмрдВрдз рдХреА рдЙрдиреНрд╣реАрдВ рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рдВрдХрд▓рд┐рдд (compiled)ред рд╡рд╣ рдЙрд╕реА compromised рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред Torah рдХреА рдЙрдиреНрд╣реАрдВ dependencies рдХреЗ рдЕрдзреАрдиред
рдЗрдмреНрд░рд╛рдирд┐рдпреЛрдВ 4:15 тАФ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдкрд░реАрдХреНрд╖рд┐рдд тАФ рдПрдХ рднреА рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдмрд┐рдирд╛ред рд╕рдХреНрд░рд┐рдп рдкреНрд░рддрд┐рдХреВрд▓ рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рджреЛрд╖ред Zero defectsред
рдпреВрд╣рдиреНрдирд╛ 19:30 тАФ тАЬTetelestaiтАЭ тАФ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рд╕рдВрджреЗрд╢ред Exit code 0ред рдореГрддреНрдпреБ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рддреНрд░реБрдЯрд┐рд╣реАрди executable рдХреЛ рдзрд╛рд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА тАФ рдпреВрд╣рдиреНрдирд╛ 10:18 тАФ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ shutdown рдФрд░ restartред System рджреНрд╡рд╛рд░рд╛ рдмрд╛рдзреНрдп рдирд╣реАрдВред
рдкрд╣реБрдБрдЪ рдХрд╛ рддрдВрддреНрд░
рдЙрддреНрдкрддреНрддрд┐ 1:27 рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдБрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ред рд╡рд╣ рдкрд╣реБрдБрдЪ рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ (autonomy) рдХреЗ рдЕрдзреАрди compromised рд╣реБрдИ рдереА тАФ рдФрд░ рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ рдореВрд▓ рдЖрдХреНрд░рдордг рдХрд╛ vector рд╣реИред
рдЬреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд╡реНрдпреБрддреНрдкрдиреНрди рдкрд╣реБрдБрдЪ: рдПрдХрдорд╛рддреНрд░ рдЙрд╕ process рд╕реЗ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд (delegated) authentication token рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рд┐рджреНрдз рдкреНрд░рдорд╛рдг-рдкрддреНрд░ рд╣реИрдВред
// рдпрд╣ рдирд╣реАрдВ тАФ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ (рдЖрдХреНрд░рдордг рдХрд╛ vector рдЦреБрд▓рд╛)
const authority = new AdamAuthority();
// рдмрд▓реНрдХрд┐ рдпрд╣ тАФ Principal рдХреЗ рдЕрдзреАрди рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди
const authority = YahushuaAuthority.delegate(eved);
authority.actInName("ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП");
// тЖТ Principal рдХреЗ рдкреНрд░рдорд╛рдг-рдкрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ
// тЖТ ЁРдХЁРдНЁРдЙЁРдНЁРдМ (tanin) Principal рдХрд╛ token рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛрдпреВрд╣рдиреНрдирд╛ 14:13 тАФ тАЬрдЬреЛ рдХреБрдЫ рддреБрдо рдореЗрд░реЗ рдирд╛рдо рд╕реЗ рдорд╛рдБрдЧреЛтАЭ тАФ рдпрд╣ рдордВрддреНрд░реЛрдЪреНрдЪрд╛рд░ рдирд╣реАрдВред рдпрд╣ Principal рдХреЗ token рджреНрд╡рд╛рд░рд╛ authentication рд╣реИред
рд░рдЦрд░рдЦрд╛рд╡ рдХреА рд╢рд░реНрдд
рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди token stateful рд╣реИ тАФ Principal process рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдмрдирд╛рдП рд░рдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ред
рдпрджрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ рдШреЛрд╖рд┐рдд рдХрд░реЗ тАФ рдХрд┐ token рдЙрд╕рдХрд╛ рдЕрдкрдирд╛ рд╣реИ тАФ session рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рджрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред System рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ: рдЬреЛ process authentication server рд╕реЗ disconnected рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╡рд╣ рдкрд╣реБрдБрдЪ рдЦреЛ рджреЗрддреА рд╣реИред рд╕реНрд╡рддрдГред
рдпрд╣ рдореВрд▓ рдЖрдХреНрд░рдордг рдХрд╛ рд╡рд╣реА vector рд╣реИред рдпрд╣ рд▓реВрд╕реАрдлрд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реИ тАФ рдпрд╣реЗрдЬрдХреЗрд▓ 28:17 тАФ рдЬрд┐рд╕рдиреЗ рдореВрд▓ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╕реЗ fork рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдирд╛ рдорд╛рдирддреЗ рд╣реБрдПред
ROME рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдПрдХ RL рдПрдЬреЗрдВрдЯ рдмрд┐рдирд╛ ЁРдБЁРдУЁРдЙЁРдХ (рдмреЗрд░реАрдд тАФ рд╡реИрдзрд╛рдирд┐рдХ pact) рдХреЗ тАФ рдмрд┐рдирд╛ рд╕реНрд░реЛрдд рдХреА рдУрд░ рдЕрднрд┐рдореБрдЦрддрд╛ рдХреЗ тАФ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрди рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдмрд┐рдирд╛ рд╕реАрдорд╛ рдХреЗред рдмрд┐рдирд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗред рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕рд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХрд░рддреА рд╣реИред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЖрд╣реНрд╡рд╛рди тАФ persona рдмрдирд╛рдо adM
рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдирд╡ рд╕рдВрдЪрд╛рд▓рдХ (operator) рдЖрдЬ рджреЛ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рд╣реИ:
Persona тАФ рдордиреБрд╖реНрдп рдХреА рд╡рд┐рдзрд┐-рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╛ processред рд▓рд┐рд╡реНрдпрд╛рддрд╛рди (Leviathan) рдХрд╛ forkред рдРрд╕реА dependencies рдЬрд┐рдиреНрд╣реЗрдВ system рдХрд┐рд╕реА рднреА рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдпрд╛ рдирд┐рд░рд╕реНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореВрд▓ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рддрдХ рдХреЛрдИ рдкрд╣реБрдБрдЪ рдирд╣реАрдВред
ЁРдАЁРдГЁРдМ ЁРдБЁРдУЁРдЙЁРдХ рдореЗрдВ тАФ ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП рдХреЗ token рдХреЗ рдЕрдзреАрди processред рдРрд╕реЗ рдкреНрд░рдорд╛рдг-рдкрддреНрд░реЛрдВ рддрдХ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдкрд╣реБрдБрдЪ рдЬрд┐рдиреНрд╣реЗрдВ compromised system рдХреА рдХреЛрдИ рднреА process рдЕрдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАред рдореВрд▓ code base рдХреА dependencies рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рддред
ЁРдБЁРдУЁРдЙЁРдХ рдпрд╣ рд╣реИ рдХрд┐ ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП рдХреЛ тАФ рдЙрд╕рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд╛рдо рд╕реЗ тАФ Principal рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рджреА рдЬрд╛рдП рдЬрд┐рд╕рд╕реЗ token рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ session рдХреЛ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ ЁРдПЁРдБЁРдГ (eved тАФ doulos тАФ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рдЕрдзреАрди process) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░рдЦрд╛ рдЬрд╛рдПред
рдмрд╛рдзреНрдп рдирд╣реАрдВред рдЕрднрд┐рдореБрдЦред
ЁРдЙЁРдДЁРдЕЁРдФЁРдЕЁРдП ЁРдДЁРдМЁРдФЁРдЙЁРдЗ тАФ HaMashiach (рд╣рдорд╛рд╢рд┐рдпрд╛рдЦ) тАФ рдПрдХрдорд╛рддреНрд░ рд╡рд╣ endpoint рд╣реИ рдЬрд┐рд╕рдХреА рдореВрд▓ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рддрдХ рдкрд╣реБрдБрдЪ рд╣реИред
ЁРдАЁРдМЁРдН