@afokapu/atdd-bun 0.10.53 → 0.10.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/detectors/bun_interlocking_binding/checks/interlocking_runtime_executes.mjs +46 -1
  2. package/detectors/bun_interlocking_binding/detect.mjs +2 -2
  3. package/detectors/bun_interlocking_binding/fixtures/clean/server.ts +2 -2
  4. package/detectors/bun_interlocking_binding/fixtures/clean/src/trains/runner.ts +21 -3
  5. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/server.ts +2 -2
  6. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/runner.ts +21 -3
  7. package/detectors/bun_interlocking_coverage/_shared/interlocking.mjs +132 -2
  8. package/detectors/bun_interlocking_coverage/checks/interlocking_production_runner.mjs +9 -4
  9. package/detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs +4 -4
  10. package/detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs +2 -1
  11. package/detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs +7 -5
  12. package/detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs +8 -13
  13. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/convex/trains/interlocking.ts +1 -0
  14. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/convex/trains/runner.ts +1 -0
  15. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/convex/trains/interlocking.ts +1 -0
  16. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/convex/trains/runner.ts +1 -0
  17. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/convex/trains/interlocking.ts +1 -0
  18. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/convex/trains/runner.ts +1 -0
  19. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/convex/trains/interlocking.ts +1 -0
  20. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/convex/trains/runner.ts +1 -0
  21. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/convex/trains/interlocking.ts +1 -0
  22. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/convex/trains/runner.ts +1 -0
  23. package/detectors/bun_interlocking_infrastructure/checks/interlocking_station_routing.mjs +19 -0
  24. package/detectors/bun_interlocking_infrastructure/checks/journey_runner_boundary.mjs +27 -0
  25. package/detectors/bun_interlocking_infrastructure/checks/journey_station_routing.mjs +30 -0
  26. package/detectors/bun_interlocking_infrastructure/checks/wagon_contract_honoured.mjs +112 -12
  27. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/src/trains/journey.ts +17 -4
  28. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/src/trains/journey.ts +16 -3
  29. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/plan/_journeys/checkout.yaml +19 -0
  30. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/server.ts +13 -0
  31. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/src/trains/journey.ts +36 -0
  32. package/detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/src/trains/runner.ts +5 -0
  33. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_dead_read/plan/_journeys/checkout.yaml +14 -0
  34. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_dead_read/src/trains/journey.ts +15 -0
  35. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_returns_early/plan/_journeys/checkout.yaml +19 -0
  36. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_returns_early/src/trains/journey.ts +16 -0
  37. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_self_loop/plan/_journeys/checkout.yaml +14 -0
  38. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_self_loop/src/trains/journey.ts +18 -0
  39. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/plan/_journeys/public.yaml +14 -0
  40. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/server.ts +16 -0
  41. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/src/trains/journey.ts +9 -0
  42. package/integrity.json +43 -20
  43. package/package.json +1 -1
  44. package/src/hooks.ts +4 -3
package/integrity.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.10.53",
2
+ "version": "0.10.55",
3
3
  "files": {
4
4
  "HOOK_AUDIT.md": "5329d840db37671b1918f688ead26865473b87db73dbc75f7c8b2a8bbe8d6d43",
5
5
  "PLANNER_PORT.md": "fb5935bac8b7ac18994de21e43ace3a5ef8cd55f85b0e3349fca261280054f11",
@@ -334,22 +334,22 @@
334
334
  "detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_wagon_feature/OrderRow.ts": "eed3e99b3a582a41e7179228ca8c33987fdf0ca1c06d78710951057a2355d902",
335
335
  "detectors/bun_green_traceability_detector/urn_header.mjs": "ec43ef492e405d31b30617646e41617aaef7de8eebc2f153ce8d4e8f6c2de1b2",
336
336
  "detectors/bun_interlocking_binding/atdd.implementation.yaml": "8df233a7c337d38ab4fc92a309273b91fe713b27507a4b2cfa66ffc7a948d520",
337
- "detectors/bun_interlocking_binding/checks/interlocking_runtime_executes.mjs": "ea4c32914a007962012e9062cc64063fa939ff0a59c07960c34872d058720955",
338
- "detectors/bun_interlocking_binding/detect.mjs": "7e381c8c875b4cd3693a5388b9aeba6d0fc0d89435f3a480765458c6b9497e8b",
337
+ "detectors/bun_interlocking_binding/checks/interlocking_runtime_executes.mjs": "a720ffe06f50510a49cda70cbe2ab29be7901315540a39782a389c72b37a050e",
338
+ "detectors/bun_interlocking_binding/detect.mjs": "f3d431727a2e4fab94986495fb5f930d6f8fd7893af66f38cfe563a8f5e9fed6",
339
339
  "detectors/bun_interlocking_binding/fixtures/clean/e2e/interlockings/match-resolution/trace.test.ts": "5dadc041ca9825f404340ca428e14bbff5e00824ca6c25464f21cd2ce56044d8",
340
340
  "detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/_interlockings/match-resolution.yaml": "11884309beb9bcceccfeda7917ea73d51a530366db5eb60772b03cf5eeb239cd",
341
341
  "detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/train:match:match-resolution-standard.yaml": "a7067661a723e02e0e844e6b90ad187f620dd328e1b9be45163c04db1919ce77",
342
342
  "detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/train:match:match-resolution-timeout.yaml": "600da5ce0f183c8b2a1378a2566d6010252531188cc5d4707fe6d3d6201e4b9c",
343
- "detectors/bun_interlocking_binding/fixtures/clean/server.ts": "d5bc34c5b1b2b0a511e0c4604ce6f9c77491dca9aee994be720540f3052babc1",
343
+ "detectors/bun_interlocking_binding/fixtures/clean/server.ts": "445651ee78a0384e4f05c2ecfe9e8418d5371891c45e3bfe843142396598c1cb",
344
344
  "detectors/bun_interlocking_binding/fixtures/clean/src/trains/interlocking.ts": "85bb742b0912395e089ac0be2d94ae5df3137a0851bb867fbc537ad1c6c08a81",
345
- "detectors/bun_interlocking_binding/fixtures/clean/src/trains/runner.ts": "0e4b885e50f12cc2a8c8f6740bf83e7b2e7137a28e1e143586e9a8550ea5bd45",
345
+ "detectors/bun_interlocking_binding/fixtures/clean/src/trains/runner.ts": "a51c66a22bc31a471e96b1f0369c82d61b77576fdc90919b4f014f6d9e8d8a5a",
346
346
  "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/e2e/interlockings/match-resolution/trace.test.ts": "5dadc041ca9825f404340ca428e14bbff5e00824ca6c25464f21cd2ce56044d8",
347
347
  "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/_interlockings/match-resolution.yaml": "658bbd729b710b62b2b1c46653cfacd20ce40d47e72aa385f84a0311280b5555",
348
348
  "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/train:match:match-resolution-standard.yaml": "a7067661a723e02e0e844e6b90ad187f620dd328e1b9be45163c04db1919ce77",
349
349
  "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/train:match:match-resolution-timeout.yaml": "600da5ce0f183c8b2a1378a2566d6010252531188cc5d4707fe6d3d6201e4b9c",
350
- "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/server.ts": "d5bc34c5b1b2b0a511e0c4604ce6f9c77491dca9aee994be720540f3052babc1",
350
+ "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/server.ts": "445651ee78a0384e4f05c2ecfe9e8418d5371891c45e3bfe843142396598c1cb",
351
351
  "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/interlocking.ts": "b73e00fc165820b569701bb6243825e8a694e9337297807a5aeb5e2963d8c8bf",
352
- "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/runner.ts": "0e4b885e50f12cc2a8c8f6740bf83e7b2e7137a28e1e143586e9a8550ea5bd45",
352
+ "detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/runner.ts": "a51c66a22bc31a471e96b1f0369c82d61b77576fdc90919b4f014f6d9e8d8a5a",
353
353
  "detectors/bun_interlocking_binding/fixtures/dirty/e2e/interlockings/match-resolution/trace.test.ts": "5dadc041ca9825f404340ca428e14bbff5e00824ca6c25464f21cd2ce56044d8",
354
354
  "detectors/bun_interlocking_binding/fixtures/dirty/plan/_trains/_interlockings/match-resolution.yaml": "7e87ee65e8c1804fb1f2aafe94c2da71de97b3ec11bd0fb3841fec28e8f01fbb",
355
355
  "detectors/bun_interlocking_binding/fixtures/dirty/plan/_trains/train:match:match-resolution-standard.yaml": "a7067661a723e02e0e844e6b90ad187f620dd328e1b9be45163c04db1919ce77",
@@ -385,31 +385,41 @@
385
385
  "detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/server.ts": "d5bc34c5b1b2b0a511e0c4604ce6f9c77491dca9aee994be720540f3052babc1",
386
386
  "detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/src/trains/interlocking.ts": "9bcfdb4ecff6efd1f658b9fd587342615179924e25468c75daa07c2626d4d8ab",
387
387
  "detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/src/trains/runner.ts": "0e4b885e50f12cc2a8c8f6740bf83e7b2e7137a28e1e143586e9a8550ea5bd45",
388
- "detectors/bun_interlocking_coverage/_shared/interlocking.mjs": "448ba5f8561d225eef0e9fd8cc8c7a0bcfc755ad0214ff5758a7aefbbf35283c",
388
+ "detectors/bun_interlocking_coverage/_shared/interlocking.mjs": "ea5f87285111a6cd67d7febf3731d5f37c8932a98749ee51cfd39e076994aed6",
389
389
  "detectors/bun_interlocking_coverage/atdd.implementation.yaml": "f160517a8138ba3ca05e3d130e6fbfb796e643376f25743fdef4fc210196525b",
390
390
  "detectors/bun_interlocking_coverage/checks/_map.json": "0a218ea319cc6258af7bd721c2154cb9561fe67e80d80ef32d08fc77bc9403c3",
391
- "detectors/bun_interlocking_coverage/checks/interlocking_production_runner.mjs": "a1edd5aa15892564aa8d46a93dca2d17001901e90085cd660be192a2ec747c1f",
392
- "detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs": "2d73c401adf77b3147e11271653c528d02dfc50f4eebde8be35795707023fb6d",
393
- "detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs": "ad53b606c325f87b09ac89c848c75ba5618e7073223fe528cf048343147638ce",
394
- "detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs": "61dcb8a8d04e9764aab7920f346bd3684fc98e2c294aa5c58eefec555145a1d0",
395
- "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "e16af2af51a07c80f7cf5f4016ebf3f18a8cfc6b0ca9ca9187992fac6c12aeaf",
391
+ "detectors/bun_interlocking_coverage/checks/interlocking_production_runner.mjs": "6d0645debe91d05987d858efbaf04f5b70f383d34aeb319fa96b3d3e7ee28330",
392
+ "detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs": "2230b8477ece6a9f459fb0d3cd9e3f8d194d9800eb976ed7064f4dfb820202b0",
393
+ "detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs": "ca1250e762a40f04520aa3ef525d61fe834a8f5df03d961e0d6c80e4f3044a2e",
394
+ "detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs": "1cc3a11d50a075f3211a6d9cbf27aafcbf7e77b6a855ab040f765ec89dfe0eef",
395
+ "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "8a8a8e88ce8a80024d0bdcc6866819fdfaa5a2ed26e8a9c5a459848d2de346d9",
396
396
  "detectors/bun_interlocking_coverage/detect.mjs": "a124418dc29aaf8fda9cd09427230d25768206b3f563d516774667e8cf75b66e",
397
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/convex/trains/interlocking.ts": "e97288c4ca6084391bfa72d1457de26e99e9fa0c9540be4361e27731c19aeb6f",
398
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/convex/trains/runner.ts": "33ac1f93e6c1b4d26827949159fff8481965e60db56c47d2c6ad3e462adef8c9",
397
399
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
398
400
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
399
401
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/smoke/resolve-match.smoke.test.ts": "8ac030da9817a8d584f188f237379dc89f69b2d4abd4cdc41ead66d838a88aa1",
400
402
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/plan/_trains/_interlockings/match-resolution.yaml": "a7d0fab140126717d0654d7275067ac7aef234c184dacf256341f80b42d3b9f8",
403
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/convex/trains/interlocking.ts": "e97288c4ca6084391bfa72d1457de26e99e9fa0c9540be4361e27731c19aeb6f",
404
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/convex/trains/runner.ts": "33ac1f93e6c1b4d26827949159fff8481965e60db56c47d2c6ad3e462adef8c9",
401
405
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
402
406
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
403
407
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/smoke/resolve-match.smoke.test.ts": "8ac030da9817a8d584f188f237379dc89f69b2d4abd4cdc41ead66d838a88aa1",
404
408
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/plan/_trains/_interlockings/match-resolution.yaml": "9e0f02cb0889826f2ac2fb88cd8c118c97d4321dcc5fccc0b767a511606841e6",
409
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/convex/trains/interlocking.ts": "e97288c4ca6084391bfa72d1457de26e99e9fa0c9540be4361e27731c19aeb6f",
410
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/convex/trains/runner.ts": "33ac1f93e6c1b4d26827949159fff8481965e60db56c47d2c6ad3e462adef8c9",
405
411
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
406
412
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
407
413
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/smoke/resolve-match.smoke.test.ts": "8ac030da9817a8d584f188f237379dc89f69b2d4abd4cdc41ead66d838a88aa1",
408
414
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/plan/_trains/_interlockings/match-resolution.yaml": "f9789174add20032c208d4e11f0733b2176bfa6725cf695ca601e4adbc5aa210",
415
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/convex/trains/interlocking.ts": "e97288c4ca6084391bfa72d1457de26e99e9fa0c9540be4361e27731c19aeb6f",
416
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/convex/trains/runner.ts": "33ac1f93e6c1b4d26827949159fff8481965e60db56c47d2c6ad3e462adef8c9",
409
417
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
410
418
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
411
419
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/smoke/resolve-match.smoke.test.ts": "73a410fbafe087f110a8a00ba41633e1d8d6fdecbddcd7f19afb9909ad8fc77f",
412
420
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/plan/_trains/_interlockings/match-resolution.yaml": "b4fcce9002f6f0c2ff0b840e817b0dfe83e0867ccb76b825c3c248cf50a93e6a",
421
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/convex/trains/interlocking.ts": "e97288c4ca6084391bfa72d1457de26e99e9fa0c9540be4361e27731c19aeb6f",
422
+ "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/convex/trains/runner.ts": "33ac1f93e6c1b4d26827949159fff8481965e60db56c47d2c6ad3e462adef8c9",
413
423
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
414
424
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
415
425
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/smoke/resolve-match.smoke.test.ts": "8ac030da9817a8d584f188f237379dc89f69b2d4abd4cdc41ead66d838a88aa1",
@@ -440,10 +450,10 @@
440
450
  "detectors/bun_interlocking_infrastructure/checks/interlocking_no_cargo.mjs": "9107f5926f7ce92097fb37c4456fe1f88f9ef4812fdef841ea458648af5b1cde",
441
451
  "detectors/bun_interlocking_infrastructure/checks/interlocking_resolution_model.mjs": "e761495b19eed0af09fcb4db34126d0e2398e91f086e04f5ef84d0b5c1c3ec16",
442
452
  "detectors/bun_interlocking_infrastructure/checks/interlocking_runner_exists.mjs": "6b63d3f26a51f2dd27847edd27c4d9c9f15c1f02747dba611cebccfc76f13169",
443
- "detectors/bun_interlocking_infrastructure/checks/interlocking_station_routing.mjs": "0221f5a8b49763388affefff670bc2a452e539e7658b08f6230a52f13edd36bd",
444
- "detectors/bun_interlocking_infrastructure/checks/journey_runner_boundary.mjs": "570e4aef423881aed982b8f25a8d553f939d1ab82271236525c14efe3a20cd4a",
445
- "detectors/bun_interlocking_infrastructure/checks/journey_station_routing.mjs": "bfd4899a604c34de621475ce155e527b9281d1174c6daa13a2abc7bebabf2cde",
446
- "detectors/bun_interlocking_infrastructure/checks/wagon_contract_honoured.mjs": "91f612dc6e1d5ef4ab29b4442f3e3d6ef972c7aac0abac9777d7d207a6ad6ba3",
453
+ "detectors/bun_interlocking_infrastructure/checks/interlocking_station_routing.mjs": "b6370ae31e668a304af04cf010f0e235dec8cd5340d08cbe183a4f6abed03a07",
454
+ "detectors/bun_interlocking_infrastructure/checks/journey_runner_boundary.mjs": "ad74ebb76d63ef648202ca31316647221e152f79bcba6aa2d30be4f0464ac10e",
455
+ "detectors/bun_interlocking_infrastructure/checks/journey_station_routing.mjs": "b9e0f56f65f1063e5f8bf486ec7c1573cb24935a24c7c46cf6c30724694f7b4c",
456
+ "detectors/bun_interlocking_infrastructure/checks/wagon_contract_honoured.mjs": "79b5f824e7510f50e4925a98c01ef263290025748f64a27a11555f608d8001dc",
447
457
  "detectors/bun_interlocking_infrastructure/detect.mjs": "54c02f428596e057f828def0d68360b220b55dbf962b46694a21bc423ce57218",
448
458
  "detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/server.ts": "36913357fdd3c5e375829a0554c605d70f5c05e2e83349f47505741598f6eb15",
449
459
  "detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/src/match/wagon.ts": "ea202fa15fdf9d1391b1ae23343c9d1b09fcf8ef14f1dccfb8114ffaedea97c1",
@@ -466,13 +476,17 @@
466
476
  "detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/src/trains/interlocking.ts": "d3872e912893e28e38e839ad4c8c15ed8381ff0b3db7015dd26df08bae88d395",
467
477
  "detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/src/trains/runner.ts": "3717d47364732410214307bcfa8eb92d5882b935e9b2c03b0e57d94d365bbac9",
468
478
  "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/plan/_journeys/example.yaml": "471680ba04d334573ee67158d9b02093d834872fc2d2211d2a02f0372ac00455",
469
- "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/src/trains/journey.ts": "4a49c5fb36a8e708146d6152e309ed6ef0d4a8489a4c0012826adb412b3208b4",
479
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/src/trains/journey.ts": "9f17c18cb9f2205e784766e3cda580aaf21c9679490ac4991411725652661c09",
470
480
  "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/plan/_journeys/public.yaml": "840aac51f72c481650eea661e9fc414a9d157350234b67cfb7a977c201a0bdee",
471
481
  "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/server.ts": "7fdfdeb8727d654bffec15d30cc65463791dc9c002557f364eb04e51fe5f27f4",
472
- "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/src/trains/journey.ts": "2729867d88b4e5c955451b8d812392a91ca6da7d5601c64d27a84a3deb879d01",
482
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/src/trains/journey.ts": "cdc8e48e60d62fca7bf4811972957c709071f046884bbb7dd9f03b7eb6d41588",
483
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/plan/_journeys/checkout.yaml": "d536ece76684bc2979d5988f20d1b7eae260906ac8b51d4bec03ec6c4e43d0d8",
484
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/server.ts": "2e64d568e1fd9336db1f3ea89bbc77081196c7abe0731052cd0b1445386b2b25",
485
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/journey_topology_traversal/src/trains/journey.ts": "e481827002fbae5481e6976005e308705126a02b359aca9f5bb949ee558380fd",
473
486
  "detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/plan/_trains/checkout.yaml": "8bcf77e3d624e538472e778b4b3058809c1f4931c172b863f0826f0f07bcb892",
474
487
  "detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/plan/orders/_orders.yaml": "502aabeeb5a23a538f3a67ae4bb9dbd91ed4e7302f1bed5248186d07d035e47e",
475
488
  "detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/src/orders/wagon.ts": "ba4ab28f3a576135a12de1390663ed107cf04652f554c9f28d6ce1fff43d4c08",
489
+ "detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/src/trains/runner.ts": "01c1e24114e144404d3867075af0ce4ef2cba7c71dd406d33e99b08ce8035434",
476
490
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/server.ts": "36913357fdd3c5e375829a0554c605d70f5c05e2e83349f47505741598f6eb15",
477
491
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/src/match/wagon.ts": "ea202fa15fdf9d1391b1ae23343c9d1b09fcf8ef14f1dccfb8114ffaedea97c1",
478
492
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/src/trains/interlocking.ts": "88b38a1d8c020674694b8b6b5f86749805b05d1847ad974a04fe99be68e03b51",
@@ -493,8 +507,17 @@
493
507
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/match/wagon.ts": "ea202fa15fdf9d1391b1ae23343c9d1b09fcf8ef14f1dccfb8114ffaedea97c1",
494
508
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/trains/interlocking.ts": "d3872e912893e28e38e839ad4c8c15ed8381ff0b3db7015dd26df08bae88d395",
495
509
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/trains/runner.ts": "3717d47364732410214307bcfa8eb92d5882b935e9b2c03b0e57d94d365bbac9",
510
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_dead_read/plan/_journeys/checkout.yaml": "ccd3c9f48320f88092dbf0198cfdd16392431fa3ea52d311cee35927fbc80ce3",
511
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_dead_read/src/trains/journey.ts": "1c46d998aeae63c65abdd2e8e3b66b84c7f17504a667f4c04585fb79caaa3c71",
512
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_returns_early/plan/_journeys/checkout.yaml": "b6650058de59238bb015ebe740b097e64211d134f2edadac2f6da0ee23e62ef3",
513
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_returns_early/src/trains/journey.ts": "91ed7fbc35ed61f2f27806154a83e8839eca4765ea8cae01d2da72c9d9257dd1",
514
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_self_loop/plan/_journeys/checkout.yaml": "ccd3c9f48320f88092dbf0198cfdd16392431fa3ea52d311cee35927fbc80ce3",
515
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_continuation_self_loop/src/trains/journey.ts": "48b0b780f4decc5ff1df937960000b9a61996fd87c1f194f333a5cf7edd5b036",
496
516
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_runner_boundary/plan/_journeys/example.yaml": "471680ba04d334573ee67158d9b02093d834872fc2d2211d2a02f0372ac00455",
497
517
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_runner_boundary/src/trains/journey.ts": "d05d07d4eaacb695d73f2cf2ca44a6495c70a1d73ad8f4cc8a637c01fa878a64",
518
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/plan/_journeys/public.yaml": "9ae283b91968ce98e1940d01458709f78e6e90fa4b2adf5936ab1017e5198fa8",
519
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/server.ts": "851a7da3846de823a51f6e7dbaa2871338629f2b0061b04b9b72318e18a2fa0e",
520
+ "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_inert_runner/src/trains/journey.ts": "bc0a581fa90a3cc37b1126b6566945e3a94c4ef25e0e8ef951182533f9ca9f45",
498
521
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/plan/_journeys/public.yaml": "840aac51f72c481650eea661e9fc414a9d157350234b67cfb7a977c201a0bdee",
499
522
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/server.ts": "20d41fe5d1da6fa6f8b9e9800d83d3278638a555fac80f25a9b6b49cac973bf5",
500
523
  "detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/src/trains/journey.ts": "2729867d88b4e5c955451b8d812392a91ca6da7d5601c64d27a84a3deb879d01",
@@ -1198,7 +1221,7 @@
1198
1221
  "src/cli.ts": "c4ede85983445a6388bf74bbccf1251dd45df2788a699f1bf2250fa0fda3c516",
1199
1222
  "src/docs-capability.ts": "bdeeb414649049b1cd4fa8008cada3a576318be51c43bec91bfa46a8e250c270",
1200
1223
  "src/enforce.ts": "7e6b3a1fc7c90f8e1836ab3e4655778fb569a63be5e7c199de44024fc003e6be",
1201
- "src/hooks.ts": "0b4ca8c857e637bbd144e737e78eda924e3cba7b038c0abe5e6916d200d73068",
1224
+ "src/hooks.ts": "233d26c0320adea3b315d808811da9b53b989db8effd4f6ed9306a80069101e8",
1202
1225
  "src/index.ts": "4081f8b08d1d3ee9e15a9964143e53d9cfb94a5616ab3e58a180d24cc16dc381",
1203
1226
  "src/integrity.ts": "f5ad22759eec675454df82cdcf791b1f081951f08ca5084ebdcb8cd82aa1ecef",
1204
1227
  "src/journey-docs.ts": "994d229376244c84212cff951032823068a76565dd2fd427b9d44e341bd14853",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afokapu/atdd-bun",
3
- "version": "0.10.53",
3
+ "version": "0.10.55",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/afokapu/atdd-bun.git"
package/src/hooks.ts CHANGED
@@ -47,8 +47,9 @@ export async function runHook(event: HookEvent, root = process.cwd(), args: stri
47
47
  return { ok: true, message: "ok" };
48
48
  }
49
49
 
50
- const dispatcher = (event: HookEvent, entry: string) => `#!/bin/sh\nexec bun ${JSON.stringify(entry)} hook ${event} "$@"\n`;
51
- export async function installHooks(root = process.cwd(), replace = false) { const current = (await git(root, ["config", "--worktree", "--get", "core.hooksPath"])).out || (await git(root, ["config", "--get", "core.hooksPath"])).out; if (current && current !== ".githooks" && !replace) return bad(`core.hooksPath is ${current}; use --replace`); await git(root, ["config", "extensions.worktreeConfig", "true"]); await mkdir(join(root, ".githooks"), { recursive: true }); const entry = resolve(import.meta.dir, "cli.ts"); for (const event of hookEvents) { const file = join(root, ".githooks", event); await writeFile(file, dispatcher(event, entry)); await chmod(file, 0o755); } const result = await git(root, ["config", "--worktree", "core.hooksPath", ".githooks"]); return result.code ? bad(result.err) : { ok: true, message: "hooks installed" }; }
50
+ // Resolve from the checkout at hook time: installed consumers use their local package; source checkouts use src.
51
+ const dispatcher = (event: HookEvent) => `#!/bin/sh\nroot="$(git rev-parse --show-toplevel)" || exit $?\nentry="$root/node_modules/@afokapu/atdd-bun/src/cli.ts"\nif [ ! -f "$entry" ]; then\n if [ -f "$root/package.json" ] && grep -Eq '"name"[[:space:]]*:[[:space:]]*"@afokapu/atdd-bun"' "$root/package.json" && [ -f "$root/src/cli.ts" ]; then\n entry="$root/src/cli.ts"\n else\n echo "atdd-bun hook: install @afokapu/atdd-bun in this project before running hooks" >&2\n exit 1\n fi\nfi\nexec bun "$entry" hook ${event} "$@"\n`;
52
+ export async function installHooks(root = process.cwd(), replace = false) { const current = (await git(root, ["config", "--worktree", "--get", "core.hooksPath"])).out || (await git(root, ["config", "--get", "core.hooksPath"])).out; if (current && current !== ".githooks" && !replace) return bad(`core.hooksPath is ${current}; use --replace`); await git(root, ["config", "extensions.worktreeConfig", "true"]); await mkdir(join(root, ".githooks"), { recursive: true }); for (const event of hookEvents) { const file = join(root, ".githooks", event); await writeFile(file, dispatcher(event)); await chmod(file, 0o755); } const result = await git(root, ["config", "--worktree", "core.hooksPath", ".githooks"]); return result.code ? bad(result.err) : { ok: true, message: "hooks installed" }; }
52
53
  export async function uninstallHooks(root = process.cwd()) { if ((await git(root, ["config", "--worktree", "--get", "core.hooksPath"])).out === ".githooks") await git(root, ["config", "--worktree", "--unset", "core.hooksPath"]); for (const event of hookEvents) await rm(join(root, ".githooks", event), { force: true }); return { ok: true, message: "hooks uninstalled" }; }
53
54
  export async function hooksStatus(root = process.cwd()) { const path = (await git(root, ["config", "--worktree", "--get", "core.hooksPath"])).out; return { ok: path === ".githooks" && hookEvents.every(event => existsSync(join(root, ".githooks", event))), message: path || "not installed" }; }
54
55
 
@@ -57,6 +58,6 @@ export async function startWorktree(root = process.cwd(), branch = "") { const c
57
58
 
58
59
  export async function worktreeStatus(root = process.cwd()) { const cfg = await policy(root); if (!cfg.worktrees.enabled) return bad("worktree policy is disabled"); const state = await layout(root, cfg.worktrees); if ("error" in state) return bad(state.error); const result = await git(state.primary, ["worktree", "list", "--porcelain"]); return result.code ? bad(result.err) : { ok: true, message: result.out }; }
59
60
 
60
- async function generatedHooksOnly(root: string): Promise<boolean> { const directory = join(root, ".githooks"); if (!existsSync(directory)) return false; const names = (await readdir(directory)).sort(); if (names.join("\n") !== [...hookEvents].sort().join("\n")) return false; const entry = resolve(import.meta.dir, "cli.ts"); return (await Promise.all(hookEvents.map(async event => (await readFile(join(directory, event), "utf8")) === dispatcher(event, entry)))).every(Boolean); }
61
+ async function generatedHooksOnly(root: string): Promise<boolean> { const directory = join(root, ".githooks"); if (!existsSync(directory)) return false; const names = (await readdir(directory)).sort(); if (names.join("\n") !== [...hookEvents].sort().join("\n")) return false; return (await Promise.all(hookEvents.map(async event => (await readFile(join(directory, event), "utf8")) === dispatcher(event)))).every(Boolean); }
61
62
 
62
63
  export async function finishWorktree(root = process.cwd(), deleteBranch = false) { const cfg = await policy(root); if (!cfg.worktrees.enabled) return bad("worktree policy is disabled"); const state = await layout(root, cfg.worktrees); if ("error" in state) return bad(state.error); if (state.current === state.primary || !inside(state.worktreeRoot, state.current)) return bad(`finish must run from a linked worktree beneath ${state.worktreeRoot}`); if (!state.branch || cfg.protected_branches.includes(state.branch)) return bad("finish requires a non-protected named branch"); const status = (await git(state.current, ["status", "--porcelain"])).out, generatedHooks = await generatedHooksOnly(state.current), onlyGeneratedHooks = Boolean(status) && status.split("\n").every(line => line.endsWith(" .githooks/") || line.endsWith(" .githooks")); if (status && !onlyGeneratedHooks) return bad("worktree is dirty; commit, stash, or discard changes before finish"); if ((await git(state.primary, ["merge-base", "--is-ancestor", state.branch, cfg.worktrees.primary_branch])).code) return bad(`branch ${state.branch} is not merged into ${cfg.worktrees.primary_branch} in the primary checkout`); const removed = await git(state.primary, ["worktree", "remove", ...(onlyGeneratedHooks && generatedHooks ? ["--force"] : []), state.current]); if (removed.code) return bad(removed.err || removed.out); if (deleteBranch) { const deleted = await git(state.primary, ["branch", "-d", state.branch]); if (deleted.code) return bad(`worktree removed, but branch deletion failed: ${deleted.err || deleted.out}`); } return { ok: true, message: `removed merged worktree ${state.current}${deleteBranch ? ` and branch ${state.branch}` : ""}` }; }