From dfe6a47cd432fa1d16d1490c1aaafad7ddc5f430 Mon Sep 17 00:00:00 2001 From: bigboateng Date: Thu, 13 Aug 2026 10:45:47 +0100 Subject: [PATCH] Adopt repository-owned delivery control law --- .../flows/product-delivery.flow.ir.json | 62 +++++++------- .boatstack/flows/product-delivery.flow.ts | 77 +++++++++++++++--- ...ratorstack-boatstack-0.0.0-development.tgz | Bin 4138 -> 4337 bytes ...ck-software-delivery-0.0.0-development.tgz | Bin 2323 -> 1436 bytes .boatstack/runtime.json | 10 +-- package-lock.json | 4 +- 6 files changed, 104 insertions(+), 49 deletions(-) diff --git a/.boatstack/flows/product-delivery.flow.ir.json b/.boatstack/flows/product-delivery.flow.ir.json index c739910..112f066 100644 --- a/.boatstack/flows/product-delivery.flow.ir.json +++ b/.boatstack/flows/product-delivery.flow.ir.json @@ -2,10 +2,10 @@ "schema_version": 1, "compiler_version": "control-program/v1.compiler.1", "source_path": ".boatstack/flows/product-delivery.flow.ts", - "source_sha256": "d8165b6b0f5890d3d39fb00412a1203599af5343ca3751c62fccd03163bc35e5", + "source_sha256": "04cdb6a8d44a987c99728b3345e1990cb1abbae3578f1b6b2aabffa868335de7", "dependency_lock_path": "package-lock.json", - "dependency_lock_sha256": "6ebb5beff35bb67ff0ad5fbec3f3b320305886bb2f36527fe1bb68640f1db23f", - "program_fingerprint": "b4bdf6534527eebd10901e923cc5a982549e5bb5b80948fc7d64bd717e3a019a", + "dependency_lock_sha256": "4ec32cc29e3e879b7b6dbd547583d2784de2b972e6e2fd2a0bf9b5264e2fef60", + "program_fingerprint": "7823b9fe8fd8373f9c213ce16d851d0dbcfce47e73c12dd075139fa7f86b320f", "generated_skills": { ".agents/skills/product-delivery-abandon/SKILL.md": "9491f5e01cd9ccba64d34f3c1139446ea4eaebb508b7c632408ab0b5018bf3df", ".agents/skills/product-delivery-abandon/agents/openai.yaml": "9b8ad5febeadaeeda14c8fd1060edba823426dd4f8090374e86e72bcdbecefe4", @@ -233,7 +233,7 @@ "binding": { "reference": "software-delivery/delivery.slice.advance", "version": "1", - "fingerprint": "9ac042dbeed46bc53349998d12c7660100cf9c0df01aae61a7df44ebb91ae97c" + "fingerprint": "e4ec8efe1a7377706b8e5ab777a9a0d5b60f2d5edcab84455ba04fb5f72c6fe4" }, "capabilities": [ "product.mutate", @@ -279,7 +279,7 @@ "binding": { "reference": "software-delivery/evidence.visual.attach", "version": "1", - "fingerprint": "70ab48ca626b29323b8c7819fc34aea191d89fcffdc73fc7b2f41894d56a16db" + "fingerprint": "4d2e9f20fa38426eefad384a193d608580eec9e2fa2e66cfb860f2563264f210" }, "capabilities": [ "product.mutate", @@ -304,7 +304,7 @@ "binding": { "reference": "software-delivery/gate.build.record", "version": "1", - "fingerprint": "021b95a1277c28ac8717fb44c93c7a612d2c79d1e9912cc1b485e0bc30b53b68" + "fingerprint": "d7314518c37f06bc7f21d293515c92a5447045dd7e7b30cb70a9bdff023a75d6" }, "capabilities": [ "command.execute", @@ -329,7 +329,7 @@ "binding": { "reference": "software-delivery/gate.change.record", "version": "1", - "fingerprint": "7433d242966c648dd9574d1aded8d2b653c25c073cda7668fdc25e383cc03bd8" + "fingerprint": "ba0ffcaa16d6d031ac69060ab1145dde6a883243bda5515068aea2ed4b5686d5" }, "capabilities": [ "product.mutate", @@ -353,7 +353,7 @@ "binding": { "reference": "software-delivery/gate.journey.record", "version": "1", - "fingerprint": "834c3349980d588a72775ac5de24f7d59c9d565aa667f7d23d4735c65ed434b4" + "fingerprint": "2aeed790735ea34af58b2e8e5d88556e8d289f1705f408a9fa52b7b075fe5bcf" }, "capabilities": [ "product.mutate", @@ -377,7 +377,7 @@ "binding": { "reference": "software-delivery/gate.review.record", "version": "1", - "fingerprint": "395b989aca389ee6e89a1d4a5fe6fde1c83fcc90e943d915153c5dbbefca7896" + "fingerprint": "28311a99659eb5e5a49f29721a1cf53fa39ec4cd34019a46986a2b125735021e" }, "capabilities": [ "product.mutate", @@ -402,7 +402,7 @@ "binding": { "reference": "software-delivery/gate.test.record", "version": "1", - "fingerprint": "1cf3d1b49fc0d1e99b3b9b6d302eeb53c20300afeb9f33c2f13ab73a9587439e" + "fingerprint": "784c67c681e737219dc7d6e16d064933111a3411ecd221d868ee279c376dd4fe" }, "capabilities": [ "command.execute", @@ -427,7 +427,7 @@ "binding": { "reference": "software-delivery/plan.abandon", "version": "1", - "fingerprint": "e5b226bf1e31eb4e4e3be8d402832250b8b5e3e9b6e428a2e3abdfbfbbf38690" + "fingerprint": "84db4b294081c03726b3f946cfd80541ecdad8526fa9829b5fc792e136a7b212" }, "capabilities": [ "product.mutate", @@ -451,7 +451,7 @@ "binding": { "reference": "software-delivery/plan.activate", "version": "1", - "fingerprint": "65d26636f2c90ec30de9999c250cde46e12fc6fde5b481a65c85f3a201c8175d" + "fingerprint": "d52c9a1fd462fa577f2cabce43b1a58cdf36162ccee2c38c5d0187f1bedcc2f4" }, "capabilities": [ "product.mutate", @@ -489,7 +489,7 @@ "binding": { "reference": "software-delivery/plan.amend", "version": "1", - "fingerprint": "acdd6c145a8c21f689863d08c16e92ca115af9c70d4986b3b95da3ceda3dd15d" + "fingerprint": "7933d6ced53262568b911268472d92eca29e0443cd137f004d66e5856f3e1d9f" }, "capabilities": [ "product.mutate", @@ -531,7 +531,7 @@ "binding": { "reference": "software-delivery/plan.approve", "version": "1", - "fingerprint": "ea11efd6e7b491fd0f22421bc651ac0a6cceba20d049ed7737bb4fe619afc174" + "fingerprint": "d1106937489ba98ab6cbd0e523bef3717ab8c6d8e2bbd9b459819b4423f35f04" }, "capabilities": [ "product.mutate", @@ -556,7 +556,7 @@ "binding": { "reference": "software-delivery/plan.approve-amendment", "version": "1", - "fingerprint": "73fbdcb12eaa5b82e9d067e7d1c481ac1c1034d9386714e4089ca54cb04e81db" + "fingerprint": "86bdbf17094889ea456de51584b75787abbf53b8a23ebcd82bcf2fffcf0ea88a" }, "capabilities": [ "product.mutate", @@ -594,7 +594,7 @@ "binding": { "reference": "software-delivery/plan.create", "version": "1", - "fingerprint": "dfde3e65e4969d77a0bdc72e14b4fdb0229fe8e971ee668d34e075604e1cde6f" + "fingerprint": "bd0eb68833c9d59352964da6fab6ed4d63d1aaa8879de2a2148aa9e05d8ece17" }, "capabilities": [ "product.mutate", @@ -636,7 +636,7 @@ "binding": { "reference": "software-delivery/plan.invalidate", "version": "1", - "fingerprint": "52dff8e4621f874cd4030eb53325bf1cfe36d86404ede8577c1fe539e21df479" + "fingerprint": "c2b71ad9d145f81fd1eb6197ff8d8890bf1a24a276fe9c4fc5bf86672dc43be6" }, "capabilities": [ "product.mutate", @@ -677,7 +677,7 @@ "binding": { "reference": "software-delivery/plan.validate", "version": "1", - "fingerprint": "18dfebcfe9d655bfd01157a913e4ba656fb714741bffa01adba70683552c9d02" + "fingerprint": "1c7c0608efc925ea7d4ff64722bb332d666da8f8a92ae5d3bc6453a68c1fb4ff" }, "capabilities": [ "product.mutate", @@ -714,7 +714,7 @@ "binding": { "reference": "software-delivery/publication.correct", "version": "1", - "fingerprint": "ff8dde8085d0ac07a73f06eca1161e178a29f089d3393444c3212507465eccc7" + "fingerprint": "386947f3fd59cb0a5b8e74c486533a51d15fcdebdcffc584fe4f4adacb593a79" }, "capabilities": [ "command.execute", @@ -759,7 +759,7 @@ "binding": { "reference": "software-delivery/publication.execute", "version": "1", - "fingerprint": "48ebc301ff29a5f86c96b7bd1457068ba64f76922ba1c106e7faf672165c32b0" + "fingerprint": "89aa3d26815201e48a2a593cf37381b3a9189b66e9e97cdd93fcd7cceb9b13a0" }, "capabilities": [ "command.execute", @@ -804,7 +804,7 @@ "binding": { "reference": "software-delivery/publication.observe", "version": "1", - "fingerprint": "cd31baf03d88cb5bdcfa177d1b4b4ee3c973f1ca9b57406141dac8c814667d8d" + "fingerprint": "f9cee1099705095736ef53dc27583d983f9b7ddc697eeaf30bf8ce335cf19eb3" }, "capabilities": [ "command.execute", @@ -829,7 +829,7 @@ "binding": { "reference": "software-delivery/publication.preview", "version": "1", - "fingerprint": "21b8a8992dfbc96262b85d3f51c6513cbf917ad7f25bdf8bbefca0043ae0b92e" + "fingerprint": "b237006fe56f51f5209ceb4f3447d178a58e3565e7d1eb1c05c6d63fc78e3c0c" }, "capabilities": [ "product.mutate", @@ -863,7 +863,7 @@ "binding": { "reference": "software-delivery/publication.reconcile", "version": "1", - "fingerprint": "98c3bc1b45fceda99aaff02ec544cab70269c1b6ee164a74c6c5f1bd9de0015d" + "fingerprint": "40fc91cef407b9e0b1a1dec60f7d74be42e1b8f83e8f1c6b3f22becf4cc8f867" }, "capabilities": [ "command.execute", @@ -889,7 +889,7 @@ "binding": { "reference": "software-delivery/workspace.activate", "version": "1", - "fingerprint": "479e6a462eed9c87c3bdc0612da30091d213d602a9014b54d026fb2e38f3f791" + "fingerprint": "d1d4cbeaa3335e2def6ecaa09f95d20e55523ece2eecc6e6dd449f3aac72592f" }, "capabilities": [ "product.mutate", @@ -922,7 +922,7 @@ "binding": { "reference": "software-delivery/workspace.cut", "version": "1", - "fingerprint": "6a908fb77646fdc09c8c0723d556e42d4840a765c13bb3406ee2694d808e68c8" + "fingerprint": "d04725f1bd7a4ff84135ef95ea0034e78b9010ac7410b79d5a93422394bb5828" }, "capabilities": [ "command.execute", @@ -993,7 +993,7 @@ "binding": { "reference": "software-delivery/workspace.publish", "version": "1", - "fingerprint": "0e172ec441f731cc29cd58e9b33395c7e0007019701700f1dbbf014e45ff48b8" + "fingerprint": "12a7f8705dc47fd2753574063cc92af57c64a1cdf752ffa84723124e8013a71d" }, "capabilities": [ "product.mutate", @@ -1026,7 +1026,7 @@ "binding": { "reference": "software-delivery/workspace.reconcile", "version": "1", - "fingerprint": "63fc694d0429f3c89baf7f34e31f85d3d1e79c66e01d823527097bf1f86107c7" + "fingerprint": "7c02ff1d9878e42acea204a7a1113761f946ff5e3e47c5478322c1f7e060f13b" }, "capabilities": [ "product.mutate", @@ -1051,7 +1051,7 @@ "binding": { "reference": "software-delivery/workspace.sync", "version": "1", - "fingerprint": "804b4dad41a77832b641f03a7588b71250a694493d0c6e10d576e0defdb8796a" + "fingerprint": "bf23e1b053858c02c7cec00f3f2dd27f2fe67c8e7767b201d1884786ee6061be" }, "capabilities": [ "command.execute", @@ -1409,8 +1409,7 @@ } } ] - }, - "description": "A provider-observed open or updated pull request" + } }, { "id": "safely-abandoned", @@ -1440,8 +1439,7 @@ } } ] - }, - "description": "The selected delivery is explicitly and safely abandoned" + } } ], "entries": [ diff --git a/.boatstack/flows/product-delivery.flow.ts b/.boatstack/flows/product-delivery.flow.ts index 9ced9ff..13ec8d4 100644 --- a/.boatstack/flows/product-delivery.flow.ts +++ b/.boatstack/flows/product-delivery.flow.ts @@ -1,18 +1,75 @@ -import { defineFlow } from "@operatorstack/boatstack"; +import { all, defineFlow, entry, fact, marked } from "@operatorstack/boatstack"; import { - abandonEntry, - productDeliveryFlow, - runEntry, - runWithAbandonment, + inbox, + planInboxResolver, + softwareDeliveryEvidence, + softwareDeliveryFacets, + trustedOperators, + trustedTransitions, + type TrustedStep, } from "@operatorstack/boatstack-software-delivery"; -export default defineFlow(productDeliveryFlow({ +const lifecycle = [ + { id: "plan.create", priority: 35 }, + { id: "plan.validate", priority: 40 }, + { id: "plan.invalidate", priority: 41 }, + { id: "plan.amend", priority: 42 }, + { id: "plan.approve", priority: 45 }, + { id: "plan.approve-amendment", priority: 46 }, + { id: "plan.activate", priority: 50 }, + { id: "workspace.cut", priority: 52 }, + { id: "workspace.activate", priority: 53 }, + { id: "workspace.sync", priority: 58 }, + { id: "gate.build.record", priority: 61 }, + { id: "gate.test.record", priority: 62 }, + { id: "gate.review.record", priority: 63 }, + { id: "gate.change.record", priority: 64 }, + { id: "gate.journey.record", priority: 64 }, + { id: "evidence.visual.attach", priority: 66 }, + { id: "delivery.slice.advance", priority: 68 }, + { id: "publication.preview", priority: 72 }, + { id: "workspace.publish", priority: 75 }, + { id: "publication.execute", priority: 76 }, + { id: "publication.observe", priority: 77 }, + { id: "publication.correct", priority: 80 }, + { id: "workspace.reconcile", priority: 2 }, + { id: "publication.reconcile", priority: 1 }, + { id: "plan.abandon", priority: 31 }, +] satisfies TrustedStep[]; + +export default defineFlow({ id: "product-delivery", version: "1", description: "Basic React delivery from one repository plan to a published pull request", - steps: runWithAbandonment, + declarations: { input_resolvers: [planInboxResolver] }, + facets: softwareDeliveryFacets, + evidence: softwareDeliveryEvidence, + operators: trustedOperators(lifecycle), + transitions: trustedTransitions(lifecycle), + targets: [ + marked("published-pr", all( + fact("verification", ["current"]), + fact("configuration", ["verified"]), + fact("runtime", ["verified"]), + fact("publication", ["open"]), + )), + marked("safely-abandoned", all( + fact("delivery", ["discarded"]), + fact("workspace", ["abandoned", "absent"]), + )), + ], entries: [ - runEntry(".boatstack/plans/inbox"), - abandonEntry(".boatstack/plans/inbox"), + entry( + "run", + "published-pr", + [inbox(".boatstack/plans/inbox")], + "Implement one approved repository plan and publish a pull request", + ), + entry( + "abandon", + "safely-abandoned", + [inbox(".boatstack/plans/inbox")], + "Explicitly abandon the selected delivery before starting different work", + ), ], -})); +}); diff --git a/.boatstack/pilot-packages/operatorstack-boatstack-0.0.0-development.tgz b/.boatstack/pilot-packages/operatorstack-boatstack-0.0.0-development.tgz index ef81c3196b63d1db70a9cdd0456591c4d90a8faf..5a5e23bcc2c91e9426f09146c856541c175e01a4 100644 GIT binary patch literal 4337 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 fr+<3?=xN6hkax;MhGPARl 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 literal 2323 zcmV+u3GDVCiwFP!00002|Lt0BZ{s!+&gcCV1g{@#oUABLoD>RjIm+uUf_9O8JM;>} zNNH*8Fp(*hq?~wz{PzQ?_cz}H?WMRP{NRYgXGTMEW;h%rrv5!$!(qUrI%GV6NBd45 z{ISh(oYRvN)J1okBj@z!1RWetPMxEp(^KaJ9q5O%F*LaLNp95M8gNVlNJK5#Lhx1>MQdL%0e3|?jf*H6oa5D5*AW|a>*2nxP_k4 zN<+mq6UZpsg6L$kHEhH*t|=hLzRjRN=ov|Lf#z=zLI}sVR06iLj)>NR zZt^bhHC@97xXLNf@(z5(wgpG7LEe9e#J!BEUy2MV&!7E>uh=>fRIghnaTG@(^9yMr z;fifaS;;bFevNwzf~^`f0e)1~DesRMUqw05Y#{ZkdD8L>K=^y=}k(3t_1Q<7+$|HvK`HfV_p^ z!zXl+`Q-o?)KM(3cI9xO{ddqX4>ZSqB80Z*#V~d8LDMMFJY#~O0xAr#d$?wpXpW;8 zI9?2g7QzI@BHFS5#3))y5L*az7~v=qD2W5AAV6^vhDg9~2}p&TGnRA(;f^dR4zT>bP+yF4p_nkT}_c92v=JFs<^OcJk;T+f;bcoL#Ynwx86cPR6~^ zZqdiRc)8<#9s7L)yQT{4Wx~S1)}c<+m+$nb3$8$_PV~47t)nA6bmEV@@cu33Yv{zE zbm8x!L~z)B69Z^x=04b4CKDRkR4J+>YL%zCr^PufL#DSN*i!D-ci^KG)fvwAF!+%W;Ma}x`+j@Y8^L`R*55GR^MY;; zV|$BsAo`i9+bpDNk1RrwZQIQ-)#02eV?9VU-n2@%Ii`_G$_DzF9HJ*9N`OiP&pNsl zlC#57H?@nwMOcUWAbQ}Vm6=&FtPcw&AaIcq2~_E6mgu$<#}bsDcrJQES}hCdqe16A zW+E6KsjtG_DB^(g^?p8o^W2)55{Xn0T<1yeKq`o3W0r=N9`gFp9P@daY$&!q?#s2v zQe>^1fE5VsX)gNpyQf<2{QTWh#{2xMg|;Ac>f|DPRBEgs5ZT{AR{a9?wv#|q9E~Ak)SH}Y0GE>gTa=D2^jA& zPj(7M7Z(@JwAN<9ur`xRG_U0PRujLdf!!LoGV@HGhIV^`nn?Ie7XVDe)^}~YxW*r9 zn~;a;ExQpgOwqtx6LkLExQ@&#XTZWj_-Ye}=2nd&4k$|x10*1hBvX;tnc!`b>P!-% ztvf0=0u!;mAU2IZ}uTj8OCbBD}5Bzj8e@6W$ z&gy^JU;9o*{NN?)e~vSmj9c};$;5fB|Gh-hE`T}R0CxL}ccWIZ&4gT>9etYBu^rnP z1+axMii>I))+wAG-b6u?C2u(OS&7}u|FB&=W*mA9+tr$MU@KXKd7Kt4TcEoNB!Cr7 z!cI&Y_}*j(1=d-meqmM%)L0EM0Tc%i1J_3vgNnkvMb6HJ&~N&ay!+ezzp>Uj?|UKt zA3Kvt)Bne3&TIYuW&FQ%;$zGB0(NoL=d$ALrzld`#YJCYcaClQPzpaY8zu3=GND9| zEiAmDam@HyViyxah;>cKwKXH3f3kig}VpBrcG>6P? zXBCL_2$5PKndJ)p-3tqOGhUVVGa)~x(6vWCe=SizR6v=O6m)%71(ibd&-s;^g@KwM zGi=aTWcqLGBOxD~15+{$JuU2Q<&DKMky)xz)8 ziW=_-d6#d)lze=An`)D>WvUoPBcl2uGE2FuI!wv?<5^8aHaaEK+ddiEWC}|#LOwov zH6a_1kWEt$y{uoS{R^I1baUXgx*82#a*XmS+@%HN!^d9AQ;MieC&N$4grsVo-eGPvh^rI!Tf)GeB3_&kH%-O=l_d- z|JQjpGWX`Uuwp#>tY1>Ebn&1yWNJ-qY8XAVh0L$}ii`$cq@_!=4v-43JNr&wPp zur0UCc=t)}EoZwuyH^yUt3;#BWow;lMZkuO=i`+M^<^padFVErxqk|^s^MjG=e|Wk tt9Z9p%HiSPP?LP?xZ@d63003Gyfhqt1 diff --git a/.boatstack/runtime.json b/.boatstack/runtime.json index 2dc380a..6da5e0e 100644 --- a/.boatstack/runtime.json +++ b/.boatstack/runtime.json @@ -1,8 +1,8 @@ { "schema_version": 1, - "version": "v2.0.0-supersession-pilot.7", - "sha256": "23b9d57adce9b19ed18a9556c130d20f02e1afe7875ae2f2db942f593a051d4c", - "source_revision": "7315d7bbef87646f75d14300f1034d1a7cd20151", - "program_fingerprint": "8ae129b970cf336afa9179892ccca994df9b23028648053d0232afc4b2fbf87c", - "state_schema_version": 3 + "version": "v2.0.0-pr212.8f83c4f", + "sha256": "88c43bf70a84ce4374f72e205b02623a20066eb4ab8f044f132e9ca3383b1c29", + "source_revision": "8f83c4f369f626c3fc514ba85c36b03562bd8eae", + "program_fingerprint": "61f68f75f0c162f533bafdbceaae14a1eb77d0f3c453183d5d49c966892ded4c", + "state_schema_version": 4 } diff --git a/package-lock.json b/package-lock.json index 58b189c..4b2159b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "node_modules/@operatorstack/boatstack": { "version": "0.0.0-development", "resolved": "file:.boatstack/pilot-packages/operatorstack-boatstack-0.0.0-development.tgz", - "integrity": "sha512-AIQ9DIijFAxhyEyWiGS2OPZ7PPHWk+BKX609nUz+KJHY/VsOcQgQR4Y3yg8huH1gGQIEYO/4U8Z9dob724fF4g==", + "integrity": "sha512-IpSdDgBBB40R1vMst6ePJkI1p2G/mO35qViIVXEukFGKF2bUrz5UT0C1c7+vUMmLEtvKk4enEinaWePJsJThHA==", "dev": true, "dependencies": { "typescript": "5.9.3" @@ -25,7 +25,7 @@ "node_modules/@operatorstack/boatstack-software-delivery": { "version": "0.0.0-development", "resolved": "file:.boatstack/pilot-packages/operatorstack-boatstack-software-delivery-0.0.0-development.tgz", - "integrity": "sha512-F6PtvFW94wAACeTc3iMdoMzHaenu1EVMttX2Oidca7D8SnIRG3cwtOcJ2c5OFLK+ks6q/SfnN0+C9bkT7NtEdw==", + "integrity": "sha512-3+iJE5PFt1QSosdCYJOuaF+u8g0eZ77aUN7dJrDfB1DK+gHYhlrzxZKSxKn2l/SSZ1phwTPFp4NjaSDnrzReBA==", "dev": true, "dependencies": { "@operatorstack/boatstack": "0.0.0-development"