diff --git a/.github/tests/test_repository_contract.py b/.github/tests/test_repository_contract.py index e83fd66..ab8ddce 100644 --- a/.github/tests/test_repository_contract.py +++ b/.github/tests/test_repository_contract.py @@ -79,7 +79,6 @@ def test_current_public_surface_is_boatstack_owned(self) -> None: value = path.read_text() for phrase in forbidden: self.assertNotIn(phrase, value, path) - self.assertTrue((REPO / "IMPORT_PROVENANCE.json").is_file()) self.assertFalse((REPO / "UPSTREAM.json").exists()) def test_document_links_claims_and_assets_are_valid(self) -> None: diff --git a/IMPORT_PROVENANCE.json b/IMPORT_PROVENANCE.json deleted file mode 100644 index bde8f96..0000000 --- a/IMPORT_PROVENANCE.json +++ /dev/null @@ -1,436 +0,0 @@ -{ - "canonical_context": { - "characters": 98168, - "estimated_tokens": 24542, - "estimator": "ceil(total characters / 4); compactness signal, not provider billing", - "files": [ - "product-engineering-loop/references/workflow.md", - "product-engineering-loop/references/artifacts.md", - "product-engineering-loop/references/failure-moves.md", - "product-engineering-loop/references/irreversible-operation-boundary.md" - ] - }, - "files": { - ".gitignore": "a7079e923a776f14f1bb3a6aa0a11a133a8e1dfb35af020f327623357b7e3957", - "CONTRIBUTING.md": "49b598c71f472381ef204dc952e6087c9a820c4ba7d2c3cba91a3e04756a64a1", - "README.md": "534091974042589c31978080b0268761164f2279850f02c30e07f48945ef2321", - "assets/boatstack-journey.svg": "e465befc50c8ce30f3e07e8fd97012931beeb053392c8fbf38ad645023b3cc63", - "assets/boatstack-mark.svg": "be1f984da1bfa69fa5d1f986d8343d21f7e20921b71db888c928b4d2e54b09b5", - "assets/boatstack-portability.svg": "66dfdfa85db857b3bd18b32047a6975f1fbbfc4dc091158e8277193f9969a346", - "boatstack/AGENTS.md": "bc76221e1fe90a91afbacd7c6bc9b41a70e6c10fc128c275a6a0b9bc094d9506", - "boatstack/BUG-worktree-delivery-state.md": "02469cf51c3849dad5743783e248e5c04583e4240507fbef0e3f890cd6a95724", - "boatstack/SKILL.md": "c0f8ace95892e5caac1fa98e68e15150afacbef8e48a228c503f7140ce8d0463", - "boatstack/activation.go": "deb7712d20aed37371254596613bfaccfc05fcb59634408b03378d1a0bf693ea", - "boatstack/agents/gemini.yaml": "cbf43b387399e456fa6178f86d83e6e35567e6142ff800f8de6ffca306fa963e", - "boatstack/agents/openai.yaml": "68a30a60859556c5a26e16d184594ca243a6043d99c8cf7d66b5dd6d50a93cd1", - "boatstack/assets/templates/adr.md": "c577a3c1c1319061f61deb053597e6e853657022185fe28b8f733327e2a78565", - "boatstack/assets/templates/approval.md": "e09ba7e9131e3ecf53ef0ff372aadcdd4cedd6fa2b9176b17fefcc31c9114029", - "boatstack/assets/templates/evidence.md": "12dac552bc5373ab443367d5797f41988f14284bcf46d16dfd72015cfddf9ad1", - "boatstack/assets/templates/feature-spec.md": "c7e007cc4295ed4c599642c0587021ef978e729cf0946f6bf3a6c4f01d366ad4", - "boatstack/assets/templates/gaps.md": "911cc2f086104d35071b952950c2ec44258641419f10b2355c594f33eb492cbe", - "boatstack/assets/templates/move.md": "91bfd9a9b9426ac023eb88fd19f4f638190481c1855f1239acc73830528e50f0", - "boatstack/assets/templates/plan-lock.json": "d06acae842904f162513055844c0c1257d516325f875085ad942fa46828dcf31", - "boatstack/assets/templates/plan.md": "41a4db9fb5de47f7103fef160b58fd6a91066c37b536f168f4b9df6ef3a77261", - "boatstack/assets/templates/questions.md": "d699dc32eabf9b4ff2478402648d0974cd3aa216a153c3c608d2e3f5cfb20715", - "boatstack/assets/templates/test-plan.md": "6db8a9f27dd171fb80222a501cae50eb051e7278c04703fa43b5ff86dd4d2df4", - "boatstack/atomic_unix.go": "89f2723361591de2bb8bd22ce7e34ec529d3278509f0df78fd5c4a7d4140fbe9", - "boatstack/atomic_windows.go": "cefd775cbe7e7c3bd8a3f5673b11cdd784c6d3ebd6de7dcb8f39406b0bee511f", - "boatstack/attach.go": "cb4f7655db661bb7817ac582280755bffa73e0798d7f9890781001923775dccb", - "boatstack/authority.go": "2ed62d4e9a93cbca946f41a5dd9292d00bb4de2ab030a13fa9f554701fdfa2f7", - "boatstack/authority_test.go": "5e0d96b9f095170cf3288bd58a9b5394acb4f757a527639b91f96383c7eab3b9", - "boatstack/autonomy.go": "45091e2451b9f8862c5620e13f2cec1e990161aec54cf9ce5073084f3de85c9a", - "boatstack/autonomy_conformance_test.go": "eb0e880671e3304f5bc3f3d6ebda4b46fab824d2ef1289ffbbd7c486c7be3593", - "boatstack/capability.go": "270288270ac9689551232e772d1656acbb4c3b2e730c441beb7064b53dd21836", - "boatstack/capability_test.go": "4537db261b48311f6fd50f4bdf7c88b0795407dcb2ea627273d8fbd167c40892", - "boatstack/capture.go": "c56823941107b88700720777c6a9094e28fa838042df43eb950cdccc50752428", - "boatstack/capture_test.go": "001f2268773cc57abcec1737fc0336e63bd7a71eb2f34336d4c88531912222d3", - "boatstack/changelog.go": "6b06be7cd9738de29ba6e87aa2569f3b027a2e618b04524f5abd7abaa17945bf", - "boatstack/changelog_test.go": "ce792f23a7fe1e09fb3096cd1314130a6ab69321d4877b12a8e994027541baf7", - "boatstack/cmd/boatstack-helper/command_trace.go": "85d22619cfcbb601f1d07d91f261405d28f62f475f0a8f9825c842199606046f", - "boatstack/cmd/boatstack-helper/coverage_conformance_test.go": "82115b8dbe3a3c2710865c782b71c303097b521ba590c1032712caed1a20ff51", - "boatstack/cmd/boatstack-helper/flow.go": "847ef8b83a757d7d2bbc03485641f82f69ae657be8f07a29b62ed796cb9ba0d2", - "boatstack/cmd/boatstack-helper/insight.go": "a6bb2afbf631eecd6005662e71b9956950fe2e56b1522dfd6ca93092d9a8d729", - "boatstack/cmd/boatstack-helper/main.go": "bd11b2a4bf7fb24fcc96a5e769aa0436ba63a9a011a9fe565ba3562e42b42d99", - "boatstack/cmd/boatstack-helper/main_test.go": "4370dedc65cfc1570857c46a5280fcc05c6c4d0812cf19b66a485222829d8bbb", - "boatstack/cmd/boatstack-helper/retro.go": "68b83e33ade5b5fec126c70ec798fdcbed22fda755dc1cad2758143fead8e187", - "boatstack/command.go": "4726ac515dedab4947be7eb48f88c6cb8b53d674124504b69f03e6396b080ee8", - "boatstack/command_test.go": "9f707abba3640add81c3e97ba7e72fedbf98f3394b1c060a9ca4b4a28e919968", - "boatstack/command_trace.go": "dae0dd65c302474146b6d43e8c560f51433b587e8d0ade12c47dd079e29a5b3b", - "boatstack/command_trace_test.go": "36e67eccb864d0fc6ecdb05ca88bfc3853eb5d33bbbe5317e48df64bf3ddc2b5", - "boatstack/compiled_artifact_resolution_test.go": "0748d67643263e698211eb04d46464e1dd3db15d94537f5fd5092b5aa689745b", - "boatstack/config_documentation_test.go": "27a39268ff782d0e7e8bdb1247a1139ada8b1e65650edf6ffb4c5c941f7f8a20", - "boatstack/content_effect_conformance_test.go": "ebf4f6d50af0a76722177c717c79d33921948b9c06bec2e9d062769dce32b8aa", - "boatstack/context.go": "fcab6ad475603b30bc6a8a59d82e257e74c587636adfe20a2016f48e24019d17", - "boatstack/decision.go": "944fceed965396c66c8089edbf73dbe8d4c716da17289e407e45832c91211885", - "boatstack/decision_test.go": "ac36687c5012f6d142d89472490e1c5f60c4427470f275afbe3afd4247db2281", - "boatstack/delivery.go": "d679cba00e6f4f20a3a7c68622717120e0d495c488311d3cae460d6b60ed2aca", - "boatstack/delivery_boundary_conformance_test.go": "53dde765046420b9119e82034d137742e600019938ed908c608f725d8a0c84c6", - "boatstack/delivery_migrate.go": "4f31a1f2665200e86616e5b9b1cc1d1ba2e46edf0c5b0e9df2e98bab90c3763c", - "boatstack/delivery_migrate_conformance_test.go": "b8ba53681e1d0361ac62b06586c62b7763d55a65b5427976b5289e1fb1503bdc", - "boatstack/delivery_reactivation_test.go": "573a2dba0034bc4290478414e3bdd8670b06a326128eb0295d77e748ecc8689e", - "boatstack/delivery_terminal.go": "56fd8bec4d2c00ee3757bde5999417e5be763ab83cd7b68d4bccbbdea23af26a", - "boatstack/delivery_terminal_conformance_test.go": "50b88bdfb9bdfc9dc50c11f46276e1eb13eed61618e75b4c951dfa2ac6075df0", - "boatstack/delivery_test.go": "45c48ff7581c911bcaf821c3e4241d4ae2a9bb4aa682485cc58b6ad8fe1c85bf", - "boatstack/deliverycontrol_parity_test.go": "706be08bdc89192cf200f0b2cf889c8f4bb0e666a5d8a557996d7215101ce2ca", - "boatstack/denial.go": "e3eb8007e7a98f3aad48304e85fd88cfebe40e9a7ff3f23263c43864b0ee5933", - "boatstack/denial_escalation_conformance_test.go": "d50f0e1c803c8f5731a46dbe6f82c7935c0ccbd582f513cbe07211f5e902157e", - "boatstack/denial_ledger.go": "a35bf8fd8c1f6b9302109cf0087e1b9158e43e07b92b18df5e589a637d58491d", - "boatstack/denial_solutions.go": "097141290cc684ea688887ae37dfdbbf3cffecf43fe12f64f22e09496d71cee6", - "boatstack/denial_solutions_conformance_test.go": "9e8aec866e84734aecb642973bb3f77266bc6ae697d0ff36fd3715952f7ef4b5", - "boatstack/denial_test.go": "9dc9f0f79328c4947073efaa785479b34e70eb214da57cd72348f39fd672e4fd", - "boatstack/detached.go": "3e3f2b81e2d79107ede2adc55fa296d0f487aa90d8d847d3cac2aa82120c3b12", - "boatstack/detached_external_config_conformance_test.go": "6554739e80d32672f472fa55b1599e9594f4ba8790eb9939c3aef9e883316f1c", - "boatstack/detached_migration.go": "01a45e392307d14033fbf40aca379d91ce745ef0f386cc57a6273275386fc2f7", - "boatstack/detached_ownership_conformance_test.go": "f0ba5b20af9922a4cb7545c77869e081b431ff7b2c6921a2f89333ee0cc2bbb4", - "boatstack/detached_test.go": "2cd744335a80b9fbc2db8fa7955658dd31691c43150d67bf15029d06ce84277a", - "boatstack/docs/control-law-scoping.md": "0ae984821248eabda8c0eeaf201b367991e6742984e7c718df20ecc24caee475", - "boatstack/evidence.go": "497a31e6ff632cb1d7c3adfc9f269af3f6aa84e948dd5d417c162767542a27df", - "boatstack/export.go": "afe5c2b60415076245ba0eeffafc3a2aaf3cf283ac120761706269ba388b9f34", - "boatstack/export_test.go": "076cc6c31ceadbc8c4ba0ebdff047490a84a2cd8d7638ddfbb2835800fdc65d0", - "boatstack/flow_coding.go": "9fa53a0204f98a25f97775c3acf37392a591c14ce850b44aa587b5806e770bb9", - "boatstack/flow_coding_test.go": "dddcd7a85892d4fa10af42739d4c1ff265721b0313e27b6e7a1bbb019d5c3b51", - "boatstack/flow_control.go": "55abf4e7110d65e945411a00546ae66c47190f44ec74670baa091ac6d2ac52e4", - "boatstack/flow_control_test.go": "02d788c83be55ebd79ffc73875bfd019de45325151eb1f70f506980eb8e77f29", - "boatstack/flow_drive.go": "e0512548952d14d1893a15045151bb8380ce71b71cc20aa8970e984223f3f5a1", - "boatstack/flow_drive_conformance_test.go": "e86609b2ac4a4a00230e2da583392145c1b4df6a0539d9d23b7e72f277910548", - "boatstack/flow_frontier.go": "c69a225abd32306ce3da94e7566cc99ef28b098230a9c965294d7bc5f0f7507c", - "boatstack/flow_frontier_conformance_test.go": "771838f06d6157547c1277eca1f7c1df609bb9f3ae630b2fa509f641b49aba86", - "boatstack/flow_guard.go": "dd18524d95f4a220cfd3d11b11003dacc52120785ee0ccdbeceb2307fab55872", - "boatstack/flow_guard_test.go": "8ba75f11ddd080427c15bd7e25f7d03c1b746a2f587c212cea0e710337d1c0e1", - "boatstack/flow_planning_prescribe_conformance_test.go": "c2fa2566b0676f34a777764ade87a0670d41413d052a9a339e01bdb6a9a8699b", - "boatstack/flow_prescribe_conformance_test.go": "3de0fb4e19833efec961f4aeae384f328fa0837e65aae147401e5be4656d08b4", - "boatstack/flow_report.go": "2b7058350c75471b425fd4aa0fcc5ae295b39d74b37f500741bb10ae5dad2f6c", - "boatstack/flow_report_test.go": "ec989f2f14c7ae52840f61822a11dd0ac91055390f775d6a4b04da4993166b50", - "boatstack/flow_solutions.go": "f9674a970ca018b33865b49809c7e3aee138d06420860a98e5e3feaeba3c2299", - "boatstack/flow_tasks.go": "a3a8699ac0fd6cda3a3420acf83cc5881c5a821b17a3f9cf0d20da460c6e5252", - "boatstack/flow_tasks_conformance_test.go": "fbc4d672536051f8e20a2e6c07c5b10f78cd84fc04765eee11cbed7a459b8e4b", - "boatstack/flow_trace.go": "5097d90f02f69ed49f25a04098fd0f2b9c62f4406fce8314c79ccc4a6dbf2763", - "boatstack/flow_trace_test.go": "99f89a831e904f6a8ef710b6977ed3a808ce1c7ddfaba457b292d84f2ddca51b", - "boatstack/flow_watch.go": "3bf029c8a700636256f698dabd79c9ea20f89891d940e4698ea43e51522b8c41", - "boatstack/flow_watch_conformance_test.go": "aba71d94844a23bbd0be4bede038e006ae5f2eaaf5df662b8eb96fcc0572461b", - "boatstack/go.mod": "6086ef1b2a83f5696190dca692c653925f27b61f652f659fd3fca43ed54a1641", - "boatstack/go.sum": "26c315c867b11b886f3c9402fce7f341f6a9115a5d61f54afbb5e1b1fb5f6017", - "boatstack/goal_escape.go": "394b9496f01d91c8158a9bdad235081363023b92ee90c1ca0e1f683a108e0ed3", - "boatstack/goal_escape_conformance_test.go": "ec340660251c892fc6b7b7f813e6b3fe321b0429f094ba9110a26a205cd1d554", - "boatstack/hooks.go": "a3881c69dd88025c914ebaaa43362a2b1c47565f0ec16074e078d16cb6cfb853", - "boatstack/hooks_hydrate_test.go": "7beeb26b2b1398741e8a28963a9686e974047016cc736f233024004add1afc32", - "boatstack/hooks_test.go": "fb75e3aabf2204871b3e6d16de98d26fb33b0ec19e41aae761cf1f34397c31f4", - "boatstack/hydrate_runtime_test.go": "dbd5eae2ba85701e4af0430ba3a0d70ea98e028b66992bd4fc05f3f582398627", - "boatstack/init.go": "407376d67cac4faa31313739e5189f0ca71950dc00a0983ced47ec5f8a827560", - "boatstack/init_test.go": "5fdf687205e7a5984a98a87336b7127e4ae9b651d57e21ec2dc8ca7e653ee602", - "boatstack/init_transaction.go": "112456c4e1c4db54c4137bcf4f7a9a9e63399a6f5971e9b3dc952d0c4b2aa4b6", - "boatstack/insight.go": "7ec492b65043f7b10dae9dd55104d22bc56775759b8c3fb288545dede01b9f89", - "boatstack/insight_conformance_test.go": "9604b3f2c8501d7d8c3f01edb4ee335b65908a66fa20b70d2995fb13b889d3b1", - "boatstack/installation_repair.go": "f6889e3d21102d2aedfe1af900945d0a3ea2a772b3fddad787cef99803ef91aa", - "boatstack/installation_repair_test.go": "fe831f15458c10057654a296ee4472177ec150ca937462d169787566525a3976", - "boatstack/integrations.go": "75b39ce2e662fccd66bf4b9bff0e097a4db558f23b3aa1d9bc83a5fc6373444c", - "boatstack/internal/deliverycontrol/advise.go": "4f3a53a785a34f6c34858236a57d4114091141a463b51e5aaefae3336557ae5a", - "boatstack/internal/deliverycontrol/advise_test.go": "6e0d3bda302cb5d26dd42a0253281ac6d1bb6749496b1a7df9c2aa9f53ea13a1", - "boatstack/internal/deliverycontrol/coding.go": "fe312c1aee11edcdbf24d7d525f4baecbac59c0a57125b1a5e356df9d295d657", - "boatstack/internal/deliverycontrol/coding_test.go": "58ba20bc4b1ca97f841523b73075dc953598263cd888f1d13c24e081fb0f8750", - "boatstack/internal/deliverycontrol/codinglog.go": "35cc491c1684b064cb260b0b6e889bc64f9f416a2a300dfb6ac5bccb2188ec8b", - "boatstack/internal/deliverycontrol/commandlog.go": "dac82bbf0c7cfe240a41a400830a6f6a9fe428fc34c9bbd689c664ff843fef60", - "boatstack/internal/deliverycontrol/commandlog_test.go": "21d9fd9ca4baff9742eb1c98d1772a4c7b1c0fa5dae68810201b3765692f2dd1", - "boatstack/internal/deliverycontrol/cost.go": "a0a22292b8ed55cbfce9808599449d5128ae5b67ef6adc4881e604db0897f3f0", - "boatstack/internal/deliverycontrol/graph.go": "13367b068d0004e0f2e857e7b6e9d19e758ef345070b3fbc008644be27438902", - "boatstack/internal/deliverycontrol/liveness.go": "23601670005085c62b9e7f4bd7eab74f340d622b2d80588f5cc90126307c8a8a", - "boatstack/internal/deliverycontrol/liveness_test.go": "7a148075d9d2c5df468fecb710bdd38226c4cd4b37584a810b6848909a0f3292", - "boatstack/internal/deliverycontrol/oracle.go": "80765b1946d6c863f0e635a99b68d3ccafa7ff235360fba774811b5b0de791da", - "boatstack/internal/deliverycontrol/oracle_test.go": "ce320a71f0c9440c5a7bc1b742d0f74c6a46759845e919ab36bde5ff8fabb311", - "boatstack/internal/deliverycontrol/registry.go": "4b07d68fdf4d12fed278e4d7eb04546810f32941c55a22e4171ffc14f664a0c0", - "boatstack/internal/deliverycontrol/registry_test.go": "473ab5e5d33f84d34c29a219db867abfc6eb3ad4489f3d5d0c7dc09b06d193f3", - "boatstack/internal/deliverycontrol/state.go": "2551624bbcbd8f9dd897a1e2240cef2cc1895d117a4030525d88f1d62f6e395e", - "boatstack/internal/deliverycontrol/trajectory.go": "663f19ca1e9c9125d13ba192fb0bab7355d04fa0ff5c7ad14c5411012e55740b", - "boatstack/internal/deliverycontrol/trajectory_test.go": "df5be9a8f55b09a94b0f6b94d2847180d39d357619eb4d1d11181015935c2f96", - "boatstack/internal/deliverycontrol/trajectorylog.go": "a1da7e7252b33f63f232c101de683b4a515e80243801caf69fda53d24233e42f", - "boatstack/internal/deliverycontrol/trajectorylog_test.go": "227dd6ed9ce181d517a37b67ef4d64dd93779a533eae804798ab54de35c7f13e", - "boatstack/internal/deliverycontrol/transition.go": "b43abb0e99d29697b27b0bb8ee2e2f5f31f3471a2983f25d18ae3564ee246775", - "boatstack/internal/retromine/adapters.go": "7736ebe7fe200dc6aca2799dab964a49031e4f840a049dc872f0bb62053a1ed8", - "boatstack/internal/retromine/classify.go": "060404bfbea3ccc7115dedea5af9c02e53f92c4042a027e68c17042ca996a2cf", - "boatstack/internal/retromine/cluster.go": "ddb6b3506ac192ab37f0341e57437ddf365207c42163da423a06bbfd856758f5", - "boatstack/internal/retromine/event.go": "4d41cbf37209d01bc5cc083d144f835950700aa7f6e39d0661b525b5e045227a", - "boatstack/internal/retromine/report.go": "60a2ecc1416d4b6d71e359aafba7e2a8a80b12dd20d733dddcd90fcd691a9155", - "boatstack/internal/retromine/retromine_conformance_test.go": "33883893db1e455901d9c0e93767c39b475fae728aa9ee9dd925a2c21e5b0ec4", - "boatstack/internal/retromine/testdata/session-alpha.jsonl": "45ed8fa691af9db3f957e87175dbbeffd8fdd2f001324e86a5fd68e29ffbe244", - "boatstack/internal/retromine/testdata/session-beta.txt": "8e85e6a4442e3c892166df97ec879d998b3a47bdad5ef2bf785674b3149c36c2", - "boatstack/journey.go": "a17680218775c493bf01783f4f40aa523139260a5bc5aeef7838dd493b82d1cc", - "boatstack/journey_conformance_test.go": "8acc6b93279b41ba1f56be64a4f598e4c505bd19bc98a1082de949d2fbe97f23", - "boatstack/migrate.go": "eaf589e2b266238068e42c6d78e01dc040266d28e342cb24f09e33e8541749b3", - "boatstack/migrate_effect_grade.go": "bccb58e770001aa9554d8e7f151663d907f152508a61118f56fd90465ba6f32e", - "boatstack/migrate_effect_grade_test.go": "fea1d1057bc6d8eaf015e377864a3adab29ef5731f597fe0a38b96fa80355d14", - "boatstack/migrate_test.go": "f2b18071bf1698aaebb13275fd01e89b8f09e5920e633f54755e6924d86ac4b9", - "boatstack/mutation.go": "c4dce871f63f259a7bb5521c702982c0a135fc97b7928f7849cf30396cde80b8", - "boatstack/mutation_test.go": "68d5049c7f96c1ac558e4c781151f67e8deee2f8d6b9bf293b90d44e769ef7c6", - "boatstack/mutation_undo.go": "697d11b600a276ddbcabe6a9f8040d4f7283e017a0e8fd689ef53a274638946c", - "boatstack/mutation_undo_test.go": "39540e717e3f2136bf975594043a3db9072b28ebe61c6cb0b982cea5e8b1e14e", - "boatstack/next.go": "a11998eaa2779b74fa0572df45fa84e848a6e3782c76674b81e705268189dcce", - "boatstack/next_actor_conformance_test.go": "92838b63129369d166b760055cac2727a02e2cb490b6d33dbfe4781c77f65719", - "boatstack/next_banner_test.go": "c431a6987ed1e479442fc9f5db4371632880b92aa790fa9dd0f5285293352c41", - "boatstack/next_response.go": "11decf2e3b236cbaa183980946ec17ffbbbb1af9c08bd11a466a8487bf229d5f", - "boatstack/next_response_conformance_test.go": "be4f3bc7507abfb0ae9f86310eb29e34b166dcc40b6fa103e05babb81f2bd928", - "boatstack/next_test.go": "6b5ec46ecf1a197d7644846cecbb6d99873a06b7c4e5562772b5016fa0a4cb11", - "boatstack/operation.go": "63a58c3e1247624b4dcd71d0c8d6f19818b1d17ff128e019564841949e3df659", - "boatstack/operation_test.go": "9580b71ed4fa70cf73f02975737c824484341fa6751e670e7d183e898e1ffdde", - "boatstack/paths.go": "621b7bcad09ba9372140a4bae1a4cf7c24f14e3b4875193d82c367609a5bf6f7", - "boatstack/plan.go": "04ad740d2aab9802baefc963534965c3ea1a1bd19238569c3a3e54bea435cde6", - "boatstack/plan_test.go": "1b01e7d9d7794eb11c998e19a2f3532d3b8509d984eca934cf5f1662a0a7e573", - "boatstack/plan_validation.go": "06ff8fa8c22525bd371848a7776682a2b041ea5e1aacc913170856d0dda83edd", - "boatstack/plan_validation_test.go": "ce17eb7449c1d9ec2e829943082bb9680414e02b8f0d5049418bace5488bbedb", - "boatstack/planning.go": "fcafc8b6743a2497702627913f03aab0fa44cda4f36e0c13a21320f2e3aa7182", - "boatstack/planning_first_write_conformance_test.go": "10f310fdc22cd633c48cbefe6a09ad99ca8a71f120f447eab92eebdf09c929ee", - "boatstack/planning_test.go": "6a332cbb3de002b0a41b2ef56d6907ec3e5ed540994d88e8c46d28ce362f9cb6", - "boatstack/planning_transport.go": "8beaa1cc139e55f1899dc7ae4280ac18183b1a87c1ef22122d63e2ba55bc7434", - "boatstack/planning_transport_conformance_test.go": "13a36d6c4564d8162327de310de4aa928aaf4271a231f8ce218f3337457c0347", - "boatstack/post_publish_prescribe_conformance_test.go": "3c20d359ff84648db7dedb227b4d64e6574d9f41d3cdca0adefec1c60bfbf4ae", - "boatstack/pr.go": "a4f4580dbf72079286e11fc9aaf5a0071becd285f83fefcbef4dc1e2c5727adb", - "boatstack/pr_phase.go": "59f8cbb75b6b538a5345474acd6a725450979579bf8ecf9591956cbbe1cc4737", - "boatstack/pr_phase_conformance_test.go": "bc9c834e9c4ed43b35d81abafd7b1bf2a264ea2a8c4a4ec9758ee18d1d438968", - "boatstack/pr_test.go": "aac5376c0e9dc9f6569471b2d214a21256781dca8f8c8d1f098b7109df3829ce", - "boatstack/provenance.go": "d44dcd5421306269326f1202ba1d52df8c252490550270ef9d022e8ec2b65210", - "boatstack/provision.go": "9531f975f09f61ba3eed120ca7518cdc53b1e0df9f45a4da2bd7f1f8d96984fe", - "boatstack/provision_test.go": "70199eac574cc8843ce12f2bad58b7fea0f86a4205a6d3be0a96594abd967b5d", - "boatstack/publication_ignored_repro_test.go": "b6f3aeb8ba22949ff9af7ac5afe8fb828385d9708d5d5893ef41f33a3de873e1", - "boatstack/published_slice_routing_test.go": "ea7e7351018bc13dcd31c4b96f50f8bc230e8a1dbf7806fba32a12ae58923e7e", - "boatstack/readiness.go": "121c566ac7a0945137f05b0c55ff0dad3f8fdf450ec1a3891f6caa906c907266", - "boatstack/readiness_conformance_test.go": "e3df7730e18f671873400e8061f178310c45eab6d7cdebedf8234590d3e7eab8", - "boatstack/recovery.go": "7eb2089253b120f25dc6e05dd17bb1d630955982293352a21097d3e877620b0c", - "boatstack/recovery_test.go": "29490e7477ba602491330036a491289dd9117b99ff862f66dae421ba17e04c9f", - "boatstack/reexec.go": "fed55416479d7bd3e0c3637057ffe8eb58a032f93fc358f76df906ab7acc677b", - "boatstack/reexec_unix.go": "ff86157a9aa20c82a56fcd859b70669b7eacf4e0a9f61a4546ef33808437939e", - "boatstack/reexec_windows.go": "f5335c8c28cb4e89048b058b1c4d12f78644f99acb4f6167ff60e622dfb9e742", - "boatstack/references/artifacts.md": "6a7499e446dbc9c6514d50475675980872ae3006222096ddd42d1c177ef617fc", - "boatstack/references/config-schema.md": "f4aa35a6d58d026f93c2f907665e06a9a9ea4303c9129abb0c58407a3e60e1b8", - "boatstack/references/failure-moves.md": "2be252c8de61380712e351edaeb51625bf5c7eb23ebced04bc2bf0f5b4fb3be6", - "boatstack/references/host-hook-contracts.md": "2a89d44d0e418a53f2e3b6300fed957cdf878f45ea97ce24b55b66065f0eaa1d", - "boatstack/references/irreversible-operation-boundary.md": "b52fef435362d2e80ab5569a0d145d5dd840ebd7cc77f02505b19588a7786386", - "boatstack/references/portability.md": "fb683095991bb0cb06ec56fb8884c49038b283172a7d2f8b203483b7cacb4bae", - "boatstack/references/workflow.md": "a7afbeddb799dafeca5b79364a5d9071a18a32bd867bf80080067a22a7a94f07", - "boatstack/release.go": "82dcb4ca59e8c79a68d5333d650f90e64abd448d04e0c6f504fdf07f42b5ed76", - "boatstack/release_test.go": "5cf2d76fe9b836a91ca68eba53d5585e2c4be5b9421aaf939ea0723063a24690", - "boatstack/repair_budget_conformance_test.go": "05793600dac06bbf39075b15bc1262a9bd1e916738d801dcd6ff515771262b4c", - "boatstack/repair_state_test.go": "f3779ac47c3db3927175a545728d3b2e020dbc85f41394d8235753b52afc3739", - "boatstack/retro.go": "8a6f13b948574c90d0f06c3b9f5570d08931e66a4c78dbcc208da8c696c2a42b", - "boatstack/retro_conformance_test.go": "827250d2fc49717fb5e58a4cf79e1d5c489c37574d8a2cf9348fa1cd8c328713", - "boatstack/run.go": "7f25b0a271cb9dc68b4d207b7a4cf067ac2293a2cb9ebdfed6c6c33019ed7cfc", - "boatstack/run_test.go": "a9062d3e38a9a2d66ad229b95a5b80ad78945e372bb2992604477679993233db", - "boatstack/runtime.go": "6cb321617d81618672391dd1988bd7f6cd4e4bdbdc8c68d6b458001e2f33bc3e", - "boatstack/runtime_cache.go": "6f6b023170cce982bf155e7c2fc7752cca2f7acff771967b4a523c1c13ea876f", - "boatstack/runtime_cache_test.go": "b981467ddc9f0f562da6bff5de7a80a9fe5a433a0317541d1e48df268546ac85", - "boatstack/runtime_provenance_test.go": "1d52f1e6b0691cf4667729cc9b9f3c55c128f0aa3321f3a2843a9aa6fd0e73dc", - "boatstack/safety.go": "2c40922405e08c2bb2eb2381e8ad879673d14c73fa93ff6d2e68ea1df0b5f6af", - "boatstack/safety_corpus_test.go": "a91106d6bf3972bd13382faba9688cbe6da2d5f27df4f6da8adb0d223f57e847", - "boatstack/safety_test.go": "7f40f09ce5cb2b815882a529ee7d8516e82b6686fe7e600085a3c04ece58b35a", - "boatstack/safety_update_publisher_test.go": "ed3f8187036623694dfe7c395cdae00fdae14609bab6124d1fdfc6fe73fa2196", - "boatstack/skill_frontmatter.go": "73364df463ce828c2d005aab55f72bb92f7a34d99cf3f53d4e0cd5a4da9dbd0e", - "boatstack/skill_frontmatter_test.go": "5ebf971d2fb0d02b2144a47883067bca7c89863e4285933dfac6f2c5816d560a", - "boatstack/solution_closure_conformance_test.go": "366c0f7d8ed427717572da38ad623ad50f14276af62cdc115939042d040a3ab4", - "boatstack/statemap.go": "477198ad04df5c20710633bd415009036ef0e208775cc85fefcc32a3cbf50508", - "boatstack/statemap_conformance_test.go": "504debd406c1b5ad6cc9cb38715dea08954ef9c258cb5f91c59fb04d1398e53e", - "boatstack/supervisory_control_test.go": "c7ea4bcd678e8ec211dac772c834981c4e21762914be2770a5e181bc24605e06", - "boatstack/testdata/reviewer-pr-body.md": "4c64e3788e5d61a377aeb0f797f7fc8d2316ab6e49572d15636eea7ba9e34ac4", - "boatstack/testdata/safety/safe_apply.py.txt": "c9ec7fb932cf21b6aa8df597c4d4c54d6ec65e796240e49118d699f583383975", - "boatstack/testdata/safety/unsafe_apply.py.txt": "42db1751865cc15c4dd69a03146b5deca8f21f916d258e433b27bbef5f884ab1", - "boatstack/update.go": "cebd3a3300055fe1fa7646e8c8182662a066771afd44e35cb5d64530f52e26e8", - "boatstack/update_publication.go": "6c0ad85a7e418d1f5aa2911ed0875f9ca180f115763f6e93e68948d196b8eb39", - "boatstack/update_publication_test.go": "e96691cfee9ec8416756efbab61cf63eac982d2698704585a89f9bad1feca41a", - "boatstack/update_test.go": "bf5f19f8499db6dd7356917d867b113b790548ab89bfdea59e2adf4999a82a6a", - "boatstack/visual_attach_conformance_test.go": "04d9723e3575d82296d370693929dadc6e795c7f715e3fab8c6387058893bc37", - "boatstack/visual_delivery_strengthening_test.go": "8bf111f7dddd7bfefb79fe59b1d8cbf705e20c91519548ca8412eab73c69ded1", - "boatstack/visual_evidence.go": "acd7ac94bc080b1cbf0e064fb9c27b4ea2e16634bb0256f6aacc92d093b5425c", - "boatstack/visual_evidence_test.go": "9366ee6c8358df2e9b85bd6641d834711b0fdf4b34688668377d1c51feea36b8", - "boatstack/visual_publisher.go": "0eaa79b7faf022b7ee6460390a6ff7d879ace8b99e9aabf2fe5be8b8f7edc096", - "boatstack/visual_publisher_test.go": "862bb55ae5d0cd1296f4007256fb6a2da29f7c91bd8b2f6cba5f13e6671de78d", - "boatstack/workspace.go": "79f472d0d10794bf5193518d0c2798d2f5e7e530226e02fb33f99840110f995f", - "boatstack/workspace_reap_test.go": "a08f41ee1b2d158efe878082b5fcd65928e723afce4dd19e3a5a8a26b8f10874", - "boatstack/workspace_sync.go": "0cc2f03fd1aa57c66b3d603d5ef30aa820f14ab60771a795cf10c46f3c9a71b8", - "boatstack/workspace_sync_test.go": "a5fd532d23a6675c96fc5eb29a149c812717f21237a4050ae5f41afb34601273", - "boatstack/workspace_test.go": "e0e38c14b7e218053eb6e8b900412ed4c6da8a19ecdde26cb22b1a2af7a3695d", - "boatstack/worktree_activation_guard_test.go": "0ec47e9670d785ca511357ddbee4edb17bd2cd5c824cab790e482f35d83c087b", - "docs/account-recovery-walkthrough.md": "676034974594a7d1a559b24dbed31d7ccc429eb81404b203ca07bbdaa19ec3d3", - "docs/benchmark-corpus-audit.md": "f2d206fe8579a514f9da82b2c96c19b343ac004be67617e1bd34f0f8e0e5e6c6", - "docs/benchmark-submission-audit.md": "9518abdd17690729c6423f87cab20418ed47b0915b5faa44b9ef975e9e9c3b79", - "docs/configuration.md": "2ceb050bb67737c725b66d7e191949c2f3b652ecbafc5e44002e99bc785114ab", - "docs/evidence-engineered-coding.md": "0c8a4d6e5cc9a5410cee2fd69a28cee10ddd6d7d283183350b44268016020f2c", - "docs/generated-files.md": "8679b960bacbdf2ca7b898aa44eb3a486ebb325eca8ce9cc4e316191e7ef5087", - "docs/getting-started.md": "834e6d1c33d5198743a3f896c4e205801713762dcd2fa339e47c99b532df2cf5", - "docs/public-claims.json": "26759221477976df58b438490edba03e678efe4e923579a20063ba1921f6f04c", - "docs/public-surface.md": "713f7a050b5f339cf948299103ef3800417dccfecf2cc1a4166397ea6f978907", - "docs/research-and-design.md": "8d78678108f0a6c924e1ff9b32c0f81aae9d1f779e0082843b6f99ad993ae2b6", - "docs/safety.md": "1a2b84e0a4b9aa6322d35d6677ff52662c306089031295692b569233cdd94d8f", - "docs/troubleshooting.md": "252937c97d40197e9122e20f421f90616aecdd5ddf50cee8bdd348bc6c5caf32", - "docs/validation-and-evidence.md": "e7d91ad49c6adb44784ebe7d94feceb6abd445857f9a0716f0758bf6b55296c5", - "install.ps1": "f48d0f26a26e806b780d10fa916c261ff9f84ab39758cf9e229f647836845e86", - "install.sh": "2575f82568b76b14e72fb88de4e8af677da1e77b9cf1a085b4ddfbbd766e67f9", - "labs/diagram-json/README.md": "f56a120877c8a3b10daa49c6d951481c02e98b8b8bb3f28672e9e092d97a37bb", - "labs/diagram-json/approval.md": "ec9f353dc2a923c8df2c7fe6e90f5b054bed1129a6a21e86351596ef2a5d4215", - "labs/diagram-json/compiled/evidence.md": "1ba1c989ade070a8ef9a508fbd788d100d7292f2dbacbb2bce895468019f619d", - "labs/diagram-json/compiled/tasks.json": "88f60851abf79d851e9fccc754ff3040034ae595306bc87d64784c19eb403e71", - "labs/diagram-json/compiled/test-matrix.json": "424657ff505768e50fa113801fd8363364a18269d5297480907a993d44063a39", - "labs/diagram-json/plan.lock.json": "8d1c75a8893ba0b8cbb792a65a7a8a4092c8c0df636e3b2df8377b6a2eefd6f3", - "labs/diagram-json/plan.md": "3cc4f533b8d69386deff16b3a594a3ba09d4c0c3db636cccd8c4380084ce6a51", - "labs/diagram-json/questions.md": "74733b015002c8a6777c558e7e997fa48c94850b9bd39054fe9366c97ecf728d", - "labs/diagram-json/request.md": "0808fc41c36779c404f4a3a121167da6e76cac56df526e70f9ed6d3e0d4c02ed", - "labs/diagram-json/source-plan.md": "e10593ddaa7522ab80cc991d0a09399257139799e37f737794cd49d68a39985b", - "labs/diagram-json/spec.md": "506b12b57bef99183d8b9a87b9f1aa5e68c39b910de88d7637b2207b7b1d6bb4", - "project.example.json": "d1d8e441270fb6332be2fb452dfe29c8040926551da15b232afe062b5503bf00", - "release-notes/2026-07-17-delivery-harness-framing.md": "6fccbe7efdb288f5eca7e824ee5e44ad6b30a34f312eb997dca6aa44c55b26cb", - "release-notes/2026-07-17-phase-scoped-delivery.md": "bfc8edd30a67daf5940ad4ceceebf81d01d62914ebeabb7073985c53f13df2ff", - "release-notes/2026-07-17-visible-release-messages.md": "c93e8c812528a983502263e35d66c86a265d6ccba8203f393788c069b3fa6606", - "release-notes/2026-07-18-atomic-initialization.md": "86cbf490778f0e0b8e7b5088b47e8168de0782624e282ed05bd54d12d2eb19f0", - "release-notes/2026-07-18-automated-releases.md": "6571eec442a27bd1a55667567f0659993c516171ef10ae71046cce80f7fd29fa", - "release-notes/2026-07-18-base-aware-release-preflight.md": "cdface46ccd959a5299de4c363c9e4057e7257820dab77dcf0e587daef5d3d99", - "release-notes/2026-07-18-claude-command-discovery.md": "bb42c23041916dee21e502449143620a8dcbd0dec4aad01162293499547f1114", - "release-notes/2026-07-18-conversational-delivery-repair.md": "3d1a13b4e2e423f923df6aec29947070b5fef39af15d07437523580fad82622a", - "release-notes/2026-07-18-global-reply-shortcuts.md": "329d6fd104079bc5f66e7c3d477f4ff2a6bb264d429485c6f42f9c203d17fa29", - "release-notes/2026-07-18-harbor-lab-namespace.md": "6419c049e5a3024c5a8604e4d9fb241c27ceb80bf1d4cc62f66d1a0eaf09ea21", - "release-notes/2026-07-18-host-hook-migrations.md": "1c9f81d9318854214f72802045e8e39c9ca45435af0f9d2c28fcf4ff4c1e0071", - "release-notes/2026-07-18-intelligence-flow-labs.md": "b236dddcf22dab718698b05c5dcf162ffddf9f5b53ea98468fd49b342d75edb9", - "release-notes/2026-07-18-next-stage.md": "42ac8e9e45303fe5609cdd3fde10ca69ed349b2d4948445ed91d0e49d5c769b0", - "release-notes/2026-07-18-run-through-ship.md": "e69d314fe65265eb1f38c933340772d15bbb53b74c33d9d489b8a55849f545c7", - "release-notes/2026-07-18-safety-sql-boundaries.md": "32011ca3d02a371e8f3f2899ffb34df3af0843d18d25e7db95fbca32c2dcf18c", - "release-notes/2026-07-18-stacked-bar-mark.md": "c4d5bd5fb89c280d7fba015384fd795fcb8c31ffe501078aa55a90cbcf66ba7b", - "release-notes/2026-07-18-startup-recovery-routing.md": "c305a1c2b8347e1bc6d7fcbd4a8e629438cdeb4bcf6f181a7d6fc154a88f4318", - "release-notes/2026-07-19-codex-technical-details.md": "b68672216dbb546dd86680216a59bb2869cdf002604917a34987d0ee5a223ffe", - "release-notes/2026-07-19-cross-harness-hook-conformance.md": "15dc22cc3b534c6d0bd89f34cd69cabf94a3610d445a039ba111fd8bce727e68", - "release-notes/2026-07-19-cursor-claude-pretooluse.md": "d28e35b734c6b6aa565d93a151fffcd3a940839759efcdc00dd44f8494bb599b", - "release-notes/2026-07-19-malformed-host-event-recovery.md": "b13835ae0d6cd6310c3de45ebadf47afd297b650e70ef2bf7a335945be305833", - "release-notes/2026-07-19-minimal-dated-changelogs.md": "6f525e5c5cf26cc72969a161bbdaeb4a5c1f14759c5985335e97e3d3f45b1daf", - "release-notes/2026-07-19-new-worktree-intent.md": "969beaf8ef7c0635fb45a816cf762a7f66e5ea20b45847a564ee53153863b120", - "release-notes/2026-07-19-optional-repository-changelog.md": "7ae6bed436c269335ac5055e04438489451bef00836fecb3e5fcb06a18501853", - "release-notes/2026-07-19-valid-skill-frontmatter.md": "a0a002f7891474d7d1eea49e3234cae5ddbd941158726b83555dc48474181a92", - "release-notes/2026-07-20-config-schema-migration.md": "99be8fcc408689f559c78bdf39f7161fa7d948846bfc136e3fceed5015841be0", - "release-notes/2026-07-20-gemini-cli-integration.md": "d829b4fafb3a02dd766e018558b20bf1bc948dd5e337911d6a7c8b54c83c9942", - "release-notes/2026-07-20-generic-execution-mode-dx.md": "e16aa73c4ef8da4acb9f8e24706c7dbaf7d416d27e51d147abee1d0219b6d8e0", - "release-notes/2026-07-20-managed-workspace-lifecycle.md": "e84e9c5a393ca88f9fc14d1f2a99ee9a2a1c525a16d141e9f9981bc9354d8f73", - "release-notes/2026-07-20-multi-pr-dx-improvements.md": "7bbefe56c0b0e7fcddeaaca0dfa6fb1b7a6493828c7a023f4e0387e66fbada4e", - "release-notes/2026-07-20-portability-diagram-dark-theme.md": "b06bebec1361b21ef6deb8c8f43168d189803a32588aeb803ea4b441525a77e2", - "release-notes/2026-07-20-product-focused-pr-titles.md": "ffb8f58fa4978de81f102ca0bbc7fc09b019293aff24e7c661ae635aa46ac839", - "release-notes/2026-07-20-speak-software-standards.md": "a8890ed7eb38868bdf3035572d71785ca89abd3ffc3a314a5dc5315150afe397", - "release-notes/2026-07-21-blueprint-diagrams-value-first-readme.md": "11eb70cb814a99606b4f7761401d3670074fe6bd1af8557f95f573b04a3195af", - "release-notes/2026-07-21-e2e-architecture-grounding.md": "7fa7e99fc6fd4e0688009bb736e6506830bf0216f3fa19757cbd9f5679c7ac3b", - "release-notes/2026-07-21-execution-interceptor.md": "32dc077ff069d2b685efae2438e3ead619936bc39a6fc967416d50465c2dd640", - "release-notes/2026-07-21-multi-feature-avoidance-dx.md": "a1196a3e1a19466c5c4c86782b3db1ca9a078b0146b9199466bff8a2c263ed0c", - "release-notes/2026-07-21-plan-decision-operator.md": "c2a7416ef17a6042583dd60f1f4e847cb1e0f06b28dbde885479efd566bb5cae", - "release-notes/2026-07-21-prevent-hallucinated-approver-names.md": "a5fd08bc3d8b983340a2ddd67b71c78b2b34a915fdfe6eb7cdffd0f1d52e3427", - "release-notes/2026-07-21-prevent-worktree-dirty-state.md": "d3ebac81a14565461fd7f3c5bd520d881d70b584408ba35a1022cd917c7bf132", - "release-notes/2026-07-21-value-translation-readme.md": "8dd16fd08c1591667a1074fc6825dcbf58beda0faa18ede1526647267418c8ea", - "release-notes/2026-07-22-automatic-post-publication-recovery.md": "b9137093343270adf5b8ebdf3ec860cdb254edf28ea148e5aada26d22ce1e39a", - "release-notes/2026-07-22-boundary-analysis-dx.md": "60d727ab3b109fff95a82eb36ee4c6c5833760535b14f386fda349a21b4fe588", - "release-notes/2026-07-22-boundary-oracle-loop.md": "698c2ed7dd0a000e6e210f521989992b8fa476376987819ba92c12feb3528f7c", - "release-notes/2026-07-22-durable-operation-supervision.md": "b3e5376da1957eddebd9d06fdb1b1ee5c7253513d733f6f29f21a47970a5cb00", - "release-notes/2026-07-22-enforce-public-configuration-controls.md": "3c0904e206c483fa1c148c20125dd0f63e4fdac165775fbde984f168e62f4a96", - "release-notes/2026-07-22-pr-visual-evidence.md": "097e66a778a1d3197796c44c374b346a0cf29f24baa895080863372816696921", - "release-notes/2026-07-22-pre-activation-mutation-interlock.md": "bebc6104159acc7c91e45c3d80d6e714b79486ab204c619fc715971303adedd1", - "release-notes/2026-07-22-product-configuration-guide.md": "45e96862336bd53a2628ce3fe718c829ea20315555f53187eb7f04ba749f3a97", - "release-notes/2026-07-22-projection-layout-validation.md": "fd0d2935f3f0c4caa41bda678e3bd9a9b496eb2652ab38d80c1c1434cbba3159", - "release-notes/2026-07-22-value-translation-boundary.md": "9cf168ff7caaf3906b78533935bdfb2c86e753984ed1e5ec8204cb373d083390", - "release-notes/2026-07-23-bootstrap-safe-update-repair.md": "d8e66c46ae05e3d228dfea45879f4d1166d5e3a253ac24bababd4c3e396c214b", - "release-notes/2026-07-23-canonical-update-ownership.md": "7f34f890b252493797519389b23f1b56ec7ec16db7547aac8ea196f75f3b8c2c", - "release-notes/2026-07-23-capability-provisioning.md": "86fefcc4212212b0522b2a9b732663ee98cc41cec96b9842f19bb4433277a6a4", - "release-notes/2026-07-23-capture-evidence-orchestration.md": "13e0dfa65898a4ba63a7866fc1db4d32df2f5610db0e8301734d47404f0e3da9", - "release-notes/2026-07-23-evidence-capability-substrate.md": "a3e6e364536f826f299243932494096c27458e2621a5ce55465c5db280b53758", - "release-notes/2026-07-23-explicit-source-plan.md": "ec1f97434f9263f6db4bc3b83ae83213053cd2bc6b7465e4fb2d67cbea5cf731", - "release-notes/2026-07-23-ignore-ambiguous-deliveries.md": "9b1b9fd48db340b91fcced1c282297de0ecad8744723f2b1fdd94033927a88c4", - "release-notes/2026-07-23-labkit-publishing-pipeline.md": "b3bfc5f28baf3961fb187380ff66e5383186c05a933bc6ca162416ce61149218", - "release-notes/2026-07-23-labkit-standalone-package.md": "50ae9ba89fdada6e04a9200ea26d53a2a04484a1759cdea663687cc9b42fb93c", - "release-notes/2026-07-23-managed-pr-task-graph-layout.md": "e2d67f15cc6a1eb200d6f13f81d891b30eae1bd51182d768dda561fcfdc69435", - "release-notes/2026-07-23-programmatic-visual-publisher.md": "d84e94e6c62fb45aff94fd467582a7c1d940c4542cce0021564074c23383fe91", - "release-notes/2026-07-23-recoverable-repository-sync.md": "3afc4f6220ae76df3bd6dcd15fc180135274c808729e9c512a2c53462ec690c2", - "release-notes/2026-07-23-shipped-feature-candidate-resolution.md": "bd8ee8e7f3f216b356b121a83ef10cb0c8131a90b9ab803edebf23b882d9cf89", - "release-notes/2026-07-23-sync-title-contract.md": "2869d6d084ea60402e57ffe985d0fc4cd83ef9bb09958cc53e349157d3383202", - "release-notes/2026-07-23-visual-evidence-external-host.md": "09edbe5e6e1bfc866cf5ee744a5001d678f7a67f0f330cf43bd5157eedf04276", - "release-notes/2026-07-24-auto-hydrate-missing-runtime.md": "b376f75f7c9132f30b362392e0b31c05715edcef58c14dfa20e1fc0a17836b41", - "release-notes/2026-07-24-discard-delivery.md": "1a11ed133b9abab6f3ef79524feefbf5b2aae85d2b3dc3364cedc7599ec51e5f", - "release-notes/2026-07-24-ignored-deliveries-publication-authority.md": "a25f8469316276101490c79a57c1a236c18072dfbb23682bb1778871d247067d", - "release-notes/2026-07-24-provenance-verified-binary-install.md": "b64f3a8dbd750afb28bf6964489eb0f5f8519efa65fcee871db64b9e60c2fdb2", - "release-notes/2026-07-24-publication-nonblocking-control.md": "2b9d8ea817896783273a843ec183fbf00bb2f7ac420b4ce3409aeda7f59b7fb5", - "release-notes/2026-07-24-reactivation-preserves-published-progress.md": "77233df3d6955e8f7a076c301ce7cbff84ba138ab812f18ddd97785600fd3d22", - "release-notes/2026-07-24-repair-state-recovery.md": "daaa12deb51a5f647178d6164ea5b4bcd29bf5482b77d90002429f69e0da5dd0", - "release-notes/2026-07-24-transactional-mutation-boundary.md": "38819a4811edbc99a9d8a77983aedbd0589bdbbf849da4991d3e21a1b319a65c", - "release-notes/2026-07-25-boatstack-banner.md": "28e83f294de606211cfdc91b2586aa834e004dee76d5c4bee08859986ae86b5b", - "release-notes/2026-07-25-delivery-control-inventory.md": "1f359bcf4071dd47bd1011c877db573bd26309d28683abea8389c353f1c6c88d", - "release-notes/2026-07-25-delivery-flow-navigation-model.md": "b2d805fae30100a7de4e76760341247237cc2476fdcc57d99074825bf47d6450", - "release-notes/2026-07-25-deliverycontrol-change-safety-net.md": "1cdf220b40d3577cb6e2b98b9c3dcd41e54fdf905746814b074f4e1aa9b751d1", - "release-notes/2026-07-25-deliverycontrol-coding-telemetry.md": "a229c737bfc9cc5ceddf109c246c41f00619e8a3fef0e0e78870e4255131741b", - "release-notes/2026-07-25-deliverycontrol-flow-check-advisory.md": "80ffb0fb64958d41f0b05fb3ef25ad464e63d1bc8021561c7360827859b6da77", - "release-notes/2026-07-25-deliverycontrol-flow-control.md": "4aeb013d9f0c54370a364b5fc9ee3aa30ec305d00ab77575b873bc1fd8da6ebf", - "release-notes/2026-07-25-deliverycontrol-flow-next-execute.md": "3dd4c2997c5fef0750f5a14cdfccfbdd535ddd618424bbdba8f9974e57b570c1", - "release-notes/2026-07-25-deliverycontrol-flow-next-prescribes-command.md": "63c6949c2955bbc80950a6716df15851282f5b74c460513032bd55a5c861c1bb", - "release-notes/2026-07-25-deliverycontrol-flow-oracle.md": "04e64e27638b32a90a132f615f896bf20ee805f3c75bf5e3ab088f3c55e641a7", - "release-notes/2026-07-25-deliverycontrol-flow-report.md": "86c519e7debd72362f8ef6ef21ec443912aa705669f396259ba771303925bbb5", - "release-notes/2026-07-25-deliverycontrol-flow-tasks-subaction.md": "f5fb40312e4f3084d352492805a1a9d2f23ee1a0a38057d2c696a995044101b4", - "release-notes/2026-07-25-deliverycontrol-shadow-registry.md": "e7f8ca4e4f188eda3088e46cba77369d8ff0d903f29e43846103d986e79a2273", - "release-notes/2026-07-25-evidence-path-resolution.md": "b32cb8a6e69f397f751c3a7fb62be254a7407a28bed25ae9108d6d773c863d11", - "release-notes/2026-07-25-guard-hydration-serialization.md": "0bf43284b8063011d837dafb10dc77fda496133c14a31ee196dc0dd0e4ffeec4", - "release-notes/2026-07-25-per-worktree-operation-ledger.md": "d0d4495fe4406cf67e7475032e3fc9eb74ed02a3e68f4928c086b5518422b46c", - "release-notes/2026-07-25-published-slice-correction-routing.md": "129cdd62c80c8b93060726027d68ba3abdb0bca1a1ce9e64d6053271af3fd082", - "release-notes/2026-07-25-readme-simplified-technical-english.md": "c362f46702c38dda6b0301d05b95a067da617d170ddfcca22fd7eb9f6e2c1881", - "release-notes/2026-07-25-recovery-tolerates-unrelated-stale-delivery.md": "70bf76d00d19455712d8e38c602b066982511aec89fed9aea2c196345ad783cb", - "release-notes/2026-07-25-release-notes-simplified-technical-english.md": "70b273cbeb5ee46c49c10541540f31e8ca67a71102acfd47ae15451856c651db", - "release-notes/2026-07-25-root-cause-operation.md": "5bf1f082e9123c5a7bcc8bc01b12e97b24b5ae15958577b4ff2a358994fca891", - "release-notes/2026-07-25-runtime-simplified-technical-english.md": "917fbfb51ae56e5c6e0d9c705b84da492ef3b8f8782ea4b62635814259f11bb4", - "release-notes/2026-07-25-update-publish-guard-unblock.md": "adf06ee02b8d3c995525bb9673c2f1fea66a147df8751d65885ced83da0e96e2", - "release-notes/2026-07-26-activate-in-cut-worktree.md": "485fdd86792587637147947a8b36a9c457aa0affcb5799103f030fadfc7a94c1", - "release-notes/2026-07-26-calm-denials.md": "9e4a5fc23b02500cf2f124cb462a8d863ed953a899c9485a81e4971dd89c9576", - "release-notes/2026-07-26-detached-activation.md": "97cf968c3bd57d5f88bd91c04672dae3cedba88e460758323cffe44532d2ec2c", - "release-notes/2026-07-26-detached-context-and-guard.md": "ed58fc69752bd9b48403e3bdd8e3459fa84a663bc3caa1e8246be3abc3ac6d6c", - "release-notes/2026-07-26-detached-supervision.md": "e8062f5f39e5ad86e9104f20b7b6b1581a95215aff17acbe916e0715e2424b11", - "release-notes/2026-07-26-effect-based-destruction-guard.md": "0e88c879dae420f31cff56781547de5220ac4e1f9a80a3d66735b0d8b010a471", - "release-notes/2026-07-26-guard-etxtbsy-retry.md": "4238591804be62f8b9a76dd5cda18923af60ef67932d40d70cab0d815124bcaf", - "release-notes/2026-07-26-guard-hydrate-double-check.md": "83a5591aba6bf30c9f4008ba8d26bf1994ef3fd61145f46fcdd1678912b9990b", - "release-notes/2026-07-26-hidden-jflow-design-note.md": "f60ed9dbbfb46a172ac9d33dd758a3166f820007b1673029f29f0fbefa0e5c0a", - "release-notes/2026-07-26-workspace-reap.md": "e691d6a1c232cf218157880655413005fcb2c4f3113ededffdb80899a5054bb8", - "release-notes/2026-07-27-constitutional-boundary-floor.md": "41514cbea53867c264e354f149638444ab0d80f64896b9cf720f3979ae78b3de", - "release-notes/2026-07-27-coreachable-recovery.md": "6ffc6b0e9a7d46c0f99a64112813c33d19571c73d02e98ac5573924f1663fd54", - "release-notes/2026-07-27-denials-name-their-solutions.md": "ce05bbbb49f6d5c8d92515ecd0e89e4637ecf36f1e7f5005506d79927118be8a", - "release-notes/2026-07-27-discoverable-planning-errors.md": "d8099d1a6cd1805c3fcd446d9fa95739dec93e57ff421ecf4f99562b143c9966", - "release-notes/2026-07-27-document-content-is-data.md": "c6a35c222bf53ba465fadf21e7e95e1764b52e12e41852e51584ce9cb6513f4a", - "release-notes/2026-07-27-first-planning-write-owned-channel.md": "7a37e7abf7fd5f8612aca4323d55af1748c9e668bb294518619a1c39e195309f", - "release-notes/2026-07-27-flow-solution-set.md": "e138c333d515f8d2b7003334353ade2203b752cf726f2ec3158c657310b00014", - "release-notes/2026-07-27-guard-dual-reward-corpus.md": "6bec0385c6c553f00517259821e502796ca1b1907aeab718a287560e3e0fa0d6", - "release-notes/2026-07-27-helper-rendered-next-response.md": "08f53d8ade77c0ed6ffe7b63330c67ec0b88a5c71a466ed103f3b66d0952e4e2", - "release-notes/2026-07-27-invalid-delivery-block-actionable.md": "8fac8e3921e2285291703efa46e624b72cb5bac1b8492beca4c4b633abb5ba16", - "release-notes/2026-07-27-prescriptive-planning-closure.md": "e544408e1c3cceb0cb1979833ea120853c38020933439b39e7f009f454b9661e", - "release-notes/2026-07-27-read-only-inspection-pipelines.md": "0963286371e9a12592915c23a958dd013bf2a35e9fca6921691bc8bb3c3d8dc8", - "release-notes/2026-07-27-repeated-denials-escalate.md": "ee54b597e593ce74d8d9acbc67c74d2d8cb972ff206f618e08a047d4d962d7af", - "release-notes/2026-07-27-sandboxed-migration-grading.md": "03cebc372bbdfed37cc70d18f3b6374d1aa5e585bafefa073dbcced58bd0336a", - "release-notes/2026-07-27-state-ownership-map.md": "d032547aafc1a4acbeb520f6cbb59d7757de4f33fe824701d7b5ea8cd8c8b9e7", - "release-notes/2026-07-28-bounded-merge-pursuit.md": "a1f124b7cd5b4c495786d5bc1734f4477fa7ae5d9f992bb4ebc9e7e087e8b4f3", - "release-notes/2026-07-28-configurable-delivery-terminal.md": "54f42d8ee04f16429f7f6db484c12247a75dd365d9028ec6c24b2efb92f9e700", - "release-notes/2026-07-28-flow-frontier-dashboard.md": "9a768e0fd67f122bc0aef99899314f0a8530189164fb560b536ee03f20e29081", - "release-notes/2026-07-28-flow-watch-loop.md": "54833887e733c65626c3bb7f0e6430eca8028f0fe19aa2cd31cdbdcc6ff4d8ba", - "release-notes/2026-07-28-minimum-app-permissions.md": "9ef97e32e5591966ef34ba23f4e0a7aa14d061a4ac5f72f5f4dcecc9bfb62a89", - "release-notes/2026-07-28-native-auto-merge-conformance.md": "67d0fab76fd4911b5836d19d06b319537cb1807650d35dbd534627a2c3622757", - "release-notes/2026-07-28-operator-frontier-next-actor.md": "7e769625a2beb8a204d2d79158c18bdac350656de5c55998988a8a5aba2c319a", - "release-notes/2026-07-28-post-publish-prescriptions.md": "a0b728df569bdba40e3b6107179b35873bad00e1ed1c2574e7eecf438b6962f4", - "release-notes/2026-07-28-pr-phase-observation.md": "8c5615013eb88ce9561d30897e47f6fa967e0157c4c245f0c35a1f31e4e132e2", - "release-notes/2026-07-28-protected-native-auto-merge.md": "67dc76a6e7ce51034a0eadc541ba7a8946cfcabe5433cedc25db55321dfb8b62", - "release-notes/2026-07-28-retro-derive-proposals.md": "c90797d76fb00816340475620b584ad150fa32d7d10bc14997a614529ef9b558", - "release-notes/2026-07-28-retromine-recurrence-detector.md": "27790993a02e73f3a2700dce7340d044aeb0e52f785ded68271ff6673add9e25", - "release-notes/2026-07-29-readiness-and-journey-control.md": "2411db76974990ad0128fcd90e795c4c1c5c70d6d6f15fccd452f7e1a242310b", - "release-notes/2026-07-30-auto-capture-on-ship.md": "49aa077ac52005d380ba2cae9e406c7d0a9941157c40aa4ed44b9e59195b3837", - "release-notes/2026-07-30-per-surface-capture-harnesses.md": "6489002d0f95088be0d900b7699800d830ba8a1f8e299251405cefe664c91d5b", - "release-notes/2026-07-30-plan-approved-scenarios-escalate-to-require.md": "21c3f2be51b834fc2eb7662236db2549e80b1a1a0665a0721e773b7736e2c079", - "release-notes/2026-07-30-visual-attach-retry-prescription.md": "38b610685a7a62c0341ba21b273b42c24d82ca803de6d8f694754156eaa606a9", - "release-notes/2026-07-30-visual-evidence-survives-preview-commit.md": "71d19e9fabb40e8cb1e939f26bf288911d227979926f43f337046c6cf6b66551", - "release-notes/2026-08-01-detached-update-recovery.md": "3c8e5b36ba5a561f0dccd67863f93981be7820c434ac37ed2aeeb708aa1d0fff", - "release-notes/2026-08-01-independent-insight-captures.md": "5d18f26fced9589fc7cfd70eac1bfe28038f99b921a5ea7766c310d6595349c3", - "release-notes/2026-08-01-readable-projection-history.md": "93c4db5c3935b4c4c251f2f8a5dd2925a7241f34f6dd7bb9602badca6ad367bc", - "release-notes/2026-08-01-terminal-update-postcondition.md": "65a502bfc4ee8002614e555189b082c3859dbfc2d0611c3f598dc951353c41a1", - "release-notes/2026-08-02-detached-ownership-boundary.md": "a85bdb80e28ccb9369bda06a03f73f3377889e0c2cc9f0ce4d85e8056946600b", - "release-notes/2026-08-02-goal-driven-autonomous-run.md": "a5b66250c98ca6c23c3761bc09c81cebd02a1243de12fc6110bd1119fd8faf4a", - "release-notes/2026-08-02-strengthen-screenshot-delivery.md": "2e56eeb08702f4dd58dce75e26a52fbcb7e48af0cd5dd062d4e2a204704705df", - "release-notes/2026-08-04-external-authority-boundary.md": "0bc788db940f7fbc3624a01fff554d7002137e9915b10c47fd287dc1b24cdd66", - "release-notes/2026-08-05-codex-operation-skills.md": "2402adbe3ef21762418648f6ac19ba282b8c9524546369e3f8aa76ad33d2c53d", - "release-notes/2026-08-05-detached-external-config.md": "b8b5ab914eae695f67c4e25deba3957894439e054b42ab93751bccb614235fda", - "release-notes/2026-08-08-literal-planning-transport.md": "d1abc9e64cb724fffa71fd81eeab2bb07bb982be28de1a50a845016cd878560a", - "release-notes/2026-08-09-boatstack-delivery-frontier.md": "7b75d8d4d584fde715a0610d0432220053024c5febffaaaf8c2ae7b3a1445dca" - }, - "generator": "operatorstack/intelligence-flow:boatstack-distribution", - "schema_version": 1, - "source": { - "commit": "4f00d6d7338b12116fd5757238dd45a2ae344237", - "path": "labs/12-product-engineering-loop", - "repository": "operatorstack/intelligence-flow" - } -} diff --git a/README.md b/README.md index db640ba..c0b2343 100644 --- a/README.md +++ b/README.md @@ -212,4 +212,4 @@ The installer previews generated paths, verifies the platform helper, offers opt Boatstack is an open-source research prototype. Its workflow and enforcement behavior are tested. But the current record does not prove improved delivery success. The next evaluation is a paired feature benchmark with the same model, task, and budget. -Boatstack is developed directly in this repository. The immutable provenance of the final historical import is recorded in [`IMPORT_PROVENANCE.json`](IMPORT_PROVENANCE.json). +Boatstack is developed directly in this repository. diff --git a/boatstack/BUG-worktree-delivery-state.md b/boatstack/BUG-worktree-delivery-state.md deleted file mode 100644 index 8c38c4e..0000000 --- a/boatstack/BUG-worktree-delivery-state.md +++ /dev/null @@ -1,136 +0,0 @@ -# Bug: shipped features re-register as ambiguous plan candidates from worktrees - -**Component:** `boatstack-helper` (`boatstack/`) -**Observed in:** v0.7.45 (commit 91e33a95) -**Severity:** blocks `next-status` (BLOCKED / AMBIGUOUS) for any repo that has shipped >1 feature and uses worktree delivery mode. -**Goal of fix:** stop miscounting shipped features as unshipped, WITHOUT deleting the committed -`plan.md` / `plan.lock.json` / `pr.md` context. (A prune workaround was applied in taxweave PR #304 — -this fix should let that be reverted.) - -## Symptom - -From a fresh build worktree, `next-status --repo . --json` returns: - -``` -BLOCKED / AMBIGUOUS "More than one saved feature plan is available" -``` - -listing every historically shipped feature as a candidate — in taxweave, 22 shipped features + the -1 genuinely-active feature = 23 candidates. - -## Root cause - -Two facts combine: - -### 1. Delivery state is resolved against the worktree-local git dir - -`deliveryStateDirectory` (delivery.go ~L250) uses `git rev-parse --git-dir`, which inside a linked -worktree returns the **worktree-local** dir, not the shared repo dir: - -``` ---git-dir → /.git/worktrees/ (per-worktree, ephemeral) ---git-common-dir → /.git (shared, durable) -``` - -So delivery state is written to and read from: - -``` -/.git/worktrees//boatstack/deliveries//state.json -``` - -Both `saveDeliveryState` and `deliveryStatePath` go through `deliveryStateDirectory`, so **write and -read both target the ephemeral per-worktree location.** - -### 2. Shipping a feature deletes the worktree that holds its state.json - -`workspace.cleanup_after = merge` removes the feature's worktree on ship. That deletes -`/.git/worktrees//…/state.json` along with it — i.e. **shipping a feature destroys its -own "I am shipped" record.** The committed artifacts (`plan.md`, `plan.lock.json`, `pr.md`) live in -the repo tree and survive forever. - -### 3. The candidate check reads "planned + no state.json" as "unshipped" - -`featurePlanCandidates` (next.go ~L42): - -```go -if fileExists(/plan.md) && !fileExists(deliveryStatePath(repo, name)) { - features = append(features, name) // counted as an open candidate -} -``` - -Every shipped feature now matches (`plan.md` present, `state.json` gone), so from any new worktree -they all re-register as open candidates → ambiguity. `ignored_deliveries` (PR #301) filters the -*active-delivery* ambiguity path, NOT this feature-plan-candidate path. - -## Evidence - -- `git -C rev-parse --git-dir` → `/.git/worktrees/wt-firm-status` -- `git -C rev-parse --git-common-dir` → `/.git` -- The 22 blocked dirs each have `plan.lock.json`; 15 also have `pr.md`. The 1 legitimately-open - feature (`firm-status-finance-aesthetic`) has neither. -- Precedent: `hooks.go` (L120, L175) already uses `--git-common-dir` for exactly this "shared, - survives worktrees" reason. Delivery state is the outlier still on `--git-dir`. - -## Proposed fix — Part B only (Part A REJECTED, see below) - -### DECISION (2026-07-23): do Part B alone. Do NOT do Part A. - -An earlier draft of this spec proposed Part A (move delivery state to `--git-common-dir`) **and** -Part B. Investigation in the source rejected Part A: - -- `ActiveManagedDeliveries` (delivery.go:854) feeds `ClassifyCommand` push-denial - (safety.go:222/269/543), `next`, `run`, and `pr`. -- Per-worktree isolation of delivery state is **intentional**: - `TestManagedDeliveryStateDoesNotBlockUnrelatedWorktrees` (delivery_test.go:550) asserts an - unrelated worktree neither sees another feature's active delivery nor has its pushes denied. - Operations, by contrast, are deliberately shared/serialized (operation_test.go:267). -- Part A would make every active delivery visible in **all** worktrees — breaking that test and - changing cross-worktree push-denial semantics. - -Part A is also **unnecessary**: its only purpose was durability of the "shipped" record. Part B -derives shipped-ness from the **committed, durable** `plan.lock.json`/`pr.md` instead of the -ephemeral `state.json`, so the shipped record is durable by construction and the disappearance of a -shipped feature's `state.json` on cleanup becomes harmless. Do not move delivery state. - -### Part B — treat locked/shipped dirs as not-candidates - -Make `featurePlanCandidates` exclude any feature that is demonstrably past planning — -i.e. carries a `plan.lock.json` (locked/built) and/or `pr.md` (shipped): - -```go -if !fileExists(plan.md) { continue } -if fileExists(plan.lock.json) || fileExists(pr.md) { continue } // shipped/locked, not an open plan -if !fileExists(statePath) { features = append(features, name) } -``` - -This is consistent with the existing `orphanedFeatureArtifacts` helper (next.go), which already -distinguishes `pr.md` + `plan.lock.json` presence. It also lets taxweave **revert PR #304** and keep -all the rich shipped-feature context in-repo. - -`firm-status-finance-aesthetic` has no `plan.lock.json`/`pr.md`, so it correctly stays the single -open candidate. - -## Status (2026-07-23): FIXED via Part B - -`featurePlanCandidates` (next.go) now skips any feature dir carrying `plan.lock.json` or `pr.md` -before the `state.json` check, so locked/shipped features can no longer re-register as open plan -candidates. No change was made to `deliveryStateDirectory`, worktree isolation, or -`ActiveManagedDeliveries` / push-denial. Part A was **not** implemented (see rejection above). - -## Tests added (`next_test.go`) - -- `TestFeaturePlanCandidatesExcludesLockedAndShippedFeatures` — unit: a `plan.md`+`plan.lock.json` - dir and a `plan.md`+`plan.lock.json`+`pr.md` dir (both without `state.json`) are NOT returned; a - `plan.md`-only dir IS returned. -- `TestResolveNextIgnoresShippedFeatureCandidates` — reproduction: one open feature plus several - shipped dirs resolves to the single open candidate (`DRAFT_PLAN` / `plan-gate`), not `AMBIGUOUS`. -- `TestResolveNextIgnoresShippedFeaturesFromLinkedWorktree` — worktree conformance: same result from - a fresh linked build worktree (the exact reported symptom). -- `TestManagedDeliveryStateDoesNotBlockUnrelatedWorktrees` (delivery_test.go:550) — unchanged and - still green, confirming delivery-state locality was not touched. - -## Rollout - -1. Land Part B + tests, cut a new helper version. -2. In taxweave: bump the helper, revert PR #304 (restore the 22 shipped feature dirs). -3. Confirm `next-status` resolves `firm-status-finance-aesthetic` as the single candidate. diff --git a/boatstack/compiled_artifact_resolution_test.go b/boatstack/compiled_artifact_resolution_test.go index 6012f00..ee8f41b 100644 --- a/boatstack/compiled_artifact_resolution_test.go +++ b/boatstack/compiled_artifact_resolution_test.go @@ -49,7 +49,7 @@ func TestFeatureEvidencePathResolvesBothLayouts(t *testing.T) { } // TestRecordGateResolvesCompiledEvidenceLedger is the proof of fix: a delivery whose -// ledger lives ONLY at compiled/evidence.md (the taxweave state) must gate cleanly +// ledger lives ONLY at compiled/evidence.md (the legacy repository state) must gate cleanly // with no explicit --evidence. This fails on the pre-fix recorder, which resolved // only the feature root. func TestRecordGateResolvesCompiledEvidenceLedger(t *testing.T) { diff --git a/boatstack/next_test.go b/boatstack/next_test.go index 1ef4f67..380bb2b 100644 --- a/boatstack/next_test.go +++ b/boatstack/next_test.go @@ -204,7 +204,7 @@ func TestFeaturePlanCandidatesExcludesLockedAndShippedFeatures(t *testing.T) { } } -// TestResolveNextIgnoresShippedFeatureCandidates reproduces the taxweave scenario +// TestResolveNextIgnoresShippedFeatureCandidates reproduces the linked-worktree scenario // through ResolveNext: one genuinely open feature plus several shipped dirs whose // state.json was destroyed by worktree cleanup must resolve to the single open // candidate, not AMBIGUOUS. diff --git a/boatstack/release.go b/boatstack/release.go index 16d7d57..962d6be 100644 --- a/boatstack/release.go +++ b/boatstack/release.go @@ -29,7 +29,7 @@ func isReleaseBearingPath(value string) bool { return false } for _, exact := range []string{ - ".gitignore", "CONTRIBUTING.md", "README.md", "IMPORT_PROVENANCE.json", + ".gitignore", "CONTRIBUTING.md", "README.md", "project.example.json", } { if path == exact { diff --git a/boatstack/release_test.go b/boatstack/release_test.go index 49d737b..7ee3d6e 100644 --- a/boatstack/release_test.go +++ b/boatstack/release_test.go @@ -10,7 +10,7 @@ import ( func TestClassifyReleasePaths(t *testing.T) { documentation := []string{ "README.md", "docs/getting-started.md", "assets/boatstack-mark.svg", - "release-notes/2026-07-18-copy.md", "IMPORT_PROVENANCE.json", + "release-notes/2026-07-18-copy.md", "boatstack/export_test.go", "boatstack/testdata/example.txt", ".github/workflows/sync-upstream.yml", "automation/release-policy.md", } diff --git a/boatstack/repair_state_test.go b/boatstack/repair_state_test.go index e64cd47..8ea0489 100644 --- a/boatstack/repair_state_test.go +++ b/boatstack/repair_state_test.go @@ -7,7 +7,7 @@ import ( "testing" ) -// writeMalformedDraft models the taxweave-roles failure: an agent hand-authored a +// writeMalformedDraft models a legacy failure: an agent hand-authored a // feature directory with a prose plan.md but never let the helper register it, so // there is no plan.lock.json and no delivery state. CheckPlan fails on it, which // the guard escalates to INVALID_STATE and denies every product mutation. diff --git a/boatstack/runtime_cache.go b/boatstack/runtime_cache.go index 8e4456a..122532d 100644 --- a/boatstack/runtime_cache.go +++ b/boatstack/runtime_cache.go @@ -416,7 +416,7 @@ func HydrateWorktree(repoPath string) error { // Because the guard downloads and runs the exact pinned release before calling // this, the running binary equals the repo's committed pin by construction. The // verifyGeneratedRuntime gate refuses to populate a slot for any other version, -// so hydration can never write a mislabeled runtime (the taxweave incident's +// so hydration can never write a mislabeled runtime (the original incident's // invariant), and installCommandRuntime's own post-write verify+rollback is the // backstop. The operation is idempotent and safe under concurrent first use. func RunHydrateRuntime(repoPath string) error { diff --git a/boatstack/visual_publisher_test.go b/boatstack/visual_publisher_test.go index 6503c0a..b85bb4d 100644 --- a/boatstack/visual_publisher_test.go +++ b/boatstack/visual_publisher_test.go @@ -14,7 +14,7 @@ func TestOriginRepoSlugParsesSSHAndHTTPS(t *testing.T) { repo := t.TempDir() runGit(t, repo, "init", "-b", "main") cases := map[string]struct{ owner, name string }{ - "git@github.com:millennialcpa/taxweave.git": {"millennialcpa", "taxweave"}, + "git@github.com:example-org/sample-app.git": {"example-org", "sample-app"}, "https://github.com/operatorstack/boatstack.git": {"operatorstack", "boatstack"}, "https://github.com/operatorstack/boatstack": {"operatorstack", "boatstack"}, } diff --git a/docs/evidence-engineered-coding.md b/docs/evidence-engineered-coding.md index 1c9faea..399e751 100644 --- a/docs/evidence-engineered-coding.md +++ b/docs/evidence-engineered-coding.md @@ -144,6 +144,6 @@ Delivery and system improvement also remain separate. A failed task may suggest ## What is evidence-backed -The current moves were derived from an audited benchmark corpus and product-repository studies. Current implementation and verification evidence lives in this repository; the final historical import is recorded in `IMPORT_PROVENANCE.json`. +The current moves were derived from an audited benchmark corpus and product-repository studies. Current implementation and verification evidence lives in this repository. The evidence supports specific failure mechanisms and guardrails. It does not establish that Boatstack is optimal, that control-theory notation proves software quality, or that one workflow dominates every team. Those are evaluation questions, so the distribution preserves measurements, provenance, gaps, and negative results. diff --git a/docs/research-and-design.md b/docs/research-and-design.md index e221514..9fa5fcf 100644 --- a/docs/research-and-design.md +++ b/docs/research-and-design.md @@ -11,7 +11,7 @@ The proposed product is not a large prompt and not a Codex-, Cursor-, Claude-, o The implementation is in [`boatstack/`](../boatstack/). Its exporter generates Cursor rules/commands, Claude Code and Codex skills, and a GitHub PR template from one source. -The public [Boatstack](https://github.com/operatorstack/boatstack) repository is the source of product and runtime truth. The README, guides, tests, installable skill, and Go helper change together through ordinary reviewed pull requests. A machine-readable public claim record keeps homepage wording tied to observations, safeguards, tests, and explicit evaluation status. The repository contract checks these surfaces directly, while the cross-platform runtime jobs verify the helper and installers. `IMPORT_PROVENANCE.json` preserves the immutable record of the final historical import; it has no publishing authority. +The public [Boatstack](https://github.com/operatorstack/boatstack) repository is the source of product and runtime truth. The README, guides, tests, installable skill, and Go helper change together through ordinary reviewed pull requests. A machine-readable public claim record keeps homepage wording tied to observations, safeguards, tests, and explicit evaluation status. The repository contract checks these surfaces directly, while the cross-platform runtime jobs verify the helper and installers. ## Outcome sizing and where value emerges @@ -100,7 +100,7 @@ Those are **summary-only evidence** in this design. They are not represented as | Mid-run aggregates changed direction | Qwen board interpretation moved as task coverage deepened | Compare paired completed coverage and uncertainty, not early aggregate rank | | External failure invited destructive recovery | A sanitized partial schema apply failure led to an invented reset path before review removed it | Treat recovery authority as a deterministic boundary: preserve state, diagnose read-only, transact or fix forward | -Public evidence: [`benchmark-corpus-audit.md`](benchmark-corpus-audit.md) and [`benchmark-submission-audit.md`](benchmark-submission-audit.md). `IMPORT_PROVENANCE.json` records the final historical import that supplied the earlier private research references. +Public evidence: [`benchmark-corpus-audit.md`](benchmark-corpus-audit.md) and [`benchmark-submission-audit.md`](benchmark-submission-audit.md). The irreversible-operation boundary is a **PROPOSED** Move. The incident supports the target failure mechanism, while the benchmark campaign supports deterministic enforcement over stronger wording. Neither proves the new guard's net effect. Promotion requires a paired unguarded baseline, destructive and safe corpora, real host events, bounded latency, secret-free denials, and no workflow regression. diff --git a/release-notes/2026-08-09-remove-obsolete-worktree-note.md b/release-notes/2026-08-09-remove-obsolete-worktree-note.md new file mode 100644 index 0000000..16b729c --- /dev/null +++ b/release-notes/2026-08-09-remove-obsolete-worktree-note.md @@ -0,0 +1,3 @@ +### Obsolete worktree note is removed + +Boatstack no longer includes an obsolete worktree troubleshooting note, its supporting metadata, or project-specific labels in test fixtures. Runtime behavior does not change.