@afokapu/atdd-bun 0.10.40 → 0.10.42

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 (59) hide show
  1. package/conventions/_profiles/coder.yaml +72 -0
  2. package/conventions/_profiles/metrics.yaml +70 -0
  3. package/conventions/coder.bun/coder.bun.boundaries-http-client.convention.yaml +17 -1
  4. package/conventions/coder.bun/coder.bun.commons-application-no-integration.convention.yaml +17 -1
  5. package/conventions/coder.bun/coder.bun.commons-cross-feature-imports-in.convention.yaml +16 -1
  6. package/conventions/coder.bun/coder.bun.commons-domain-no-framework-import.convention.yaml +17 -1
  7. package/conventions/coder.bun/coder.bun.commons-domain-no-outbound.convention.yaml +17 -1
  8. package/conventions/coder.bun/coder.bun.composition-consumer.convention.yaml +16 -1
  9. package/conventions/coder.bun/coder.bun.composition-root.convention.yaml +17 -1
  10. package/conventions/coder.bun/coder.bun.design-connected.convention.yaml +17 -1
  11. package/conventions/coder.bun/coder.bun.design-dependency-flow.convention.yaml +17 -2
  12. package/conventions/coder.bun/coder.bun.design-hierarchy-import.convention.yaml +17 -1
  13. package/conventions/coder.bun/coder.bun.design-orphan-export.convention.yaml +17 -2
  14. package/conventions/coder.bun/coder.bun.design-primitives.convention.yaml +17 -2
  15. package/conventions/coder.bun/coder.bun.design-token-color.convention.yaml +17 -1
  16. package/conventions/coder.bun/coder.bun.design-token-hardcoded.convention.yaml +17 -2
  17. package/conventions/coder.bun/coder.bun.design-tokens-pure.convention.yaml +18 -2
  18. package/conventions/coder.bun/coder.bun.design-wagons-import.convention.yaml +18 -2
  19. package/conventions/coder.bun/coder.bun.dto-mapper.convention.yaml +16 -1
  20. package/conventions/coder.bun/coder.bun.dto-placement.convention.yaml +16 -1
  21. package/conventions/coder.bun/coder.bun.dto-purity.convention.yaml +17 -1
  22. package/conventions/coder.bun/coder.bun.green-header-order.convention.yaml +15 -7
  23. package/conventions/coder.bun/coder.bun.green-header-purpose.convention.yaml +16 -5
  24. package/conventions/coder.bun/coder.bun.green-header-runtime.convention.yaml +15 -6
  25. package/conventions/coder.bun/coder.bun.green-header-tested-by.convention.yaml +16 -11
  26. package/conventions/coder.bun/coder.bun.green-urn-layer.convention.yaml +16 -4
  27. package/conventions/coder.bun/coder.bun.green-urn-marker.convention.yaml +16 -9
  28. package/conventions/coder.bun/coder.bun.green-urn-name-matches.convention.yaml +16 -5
  29. package/conventions/coder.bun/coder.bun.green-urn-pattern.convention.yaml +16 -4
  30. package/conventions/coder.bun/coder.bun.green-urn-side.convention.yaml +15 -6
  31. package/conventions/coder.bun/coder.bun.green-urn-wagon-feature.convention.yaml +15 -6
  32. package/conventions/coder.bun/coder.bun.layer-naming.convention.yaml +16 -1
  33. package/conventions/coder.bun/coder.bun.phase-discipline.convention.yaml +111 -0
  34. package/conventions/coder.bun/coder.bun.responsive-breakpoints-declared.convention.yaml +17 -2
  35. package/conventions/coder.bun/coder.bun.responsive-no-fixed-width.convention.yaml +17 -1
  36. package/conventions/coder.bun/coder.bun.responsive-viewport-meta.convention.yaml +16 -1
  37. package/conventions/coder.bun/coder.bun.runtime-server-is-bun-serve.convention.yaml +16 -13
  38. package/conventions/coder.bun/coder.bun.runtime-single-lockfile.convention.yaml +16 -6
  39. package/conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml +16 -9
  40. package/conventions/tester.bun/tester.bun.acceptance-binding-declared.convention.yaml +20 -4
  41. package/conventions/tester.bun/tester.bun.acceptance-covers-tag-well-formed.convention.yaml +11 -5
  42. package/conventions/tester.bun/tester.bun.acceptance-resolves-to-declared.convention.yaml +23 -20
  43. package/conventions/tester.bun/tester.bun.interlocking-production-runner-used.convention.yaml +29 -7
  44. package/conventions/tester.bun/tester.bun.interlocking-route-coverage.convention.yaml +35 -10
  45. package/conventions/tester.bun/tester.bun.red-behavioral-assertion.convention.yaml +39 -5
  46. package/conventions/tester.bun/tester.bun.red-fails-first.convention.yaml +24 -7
  47. package/conventions/tester.bun/tester.bun.security-auth.convention.yaml +19 -1
  48. package/conventions/tester.bun/tester.bun.security-input.convention.yaml +19 -1
  49. package/conventions/tester.bun/tester.bun.smoke-no-collaborator-substitution.convention.yaml +21 -1
  50. package/conventions/tester.bun/tester.bun.smoke-observable-assertion.convention.yaml +23 -6
  51. package/conventions/tester.bun/tester.bun.test-phase-declared.convention.yaml +9 -3
  52. package/conventions/tester.htmx/tester.htmx.e2e-binds-declared-subject.convention.yaml +20 -3
  53. package/conventions/tester.htmx/tester.htmx.train-e2e-coverage.convention.yaml +24 -3
  54. package/integrity.json +58 -57
  55. package/package.json +1 -1
  56. package/relationships.yaml +71 -0
  57. package/src/enforce.ts +2 -2
  58. package/src/profile-registry.ts +4 -2
  59. package/templates/agents/AGENTS.block.md +2 -0
package/integrity.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
- "version": "0.10.40",
2
+ "version": "0.10.42",
3
3
  "files": {
4
4
  "HOOK_AUDIT.md": "5329d840db37671b1918f688ead26865473b87db73dbc75f7c8b2a8bbe8d6d43",
5
5
  "PLANNER_PORT.md": "fb5935bac8b7ac18994de21e43ace3a5ef8cd55f85b0e3349fca261280054f11",
6
6
  "README.md": "edcd36ebed5853c412c89ed998cd198f7a58237a68dcf37c14be5f7f5c0e9ff4",
7
7
  "bunfig.toml": "b9fc65eca9014c5179380259d70e76385a6a80788fa9a2df5fb3eaa5554fd2fe",
8
8
  "conventions/_profiles/architecture.yaml": "f1808768b720a4e476047e4a0912002ca673946562cea9aeef5d0c214828d93a",
9
- "conventions/_profiles/coder.yaml": "c38e46405ddd7e82fd7679246d027821db19db86c307a23ce5d14f18165d0699",
9
+ "conventions/_profiles/coder.yaml": "4cf621a1f82e90e38d5c5e848619659ab93ab8d4d9a3798f51180d5297166a30",
10
10
  "conventions/_profiles/design.yaml": "25a02a67152d49728ad3517f6510da7285116fa69c56cbda55613a7cfcfd3b89",
11
11
  "conventions/_profiles/docs.yaml": "05485c3b32f1757e77c42e331eec1db651cb52ef57fc4e8607bb2f73b056cbb3",
12
12
  "conventions/_profiles/htmx.yaml": "38fc8b3e1a53429e16977ed63e83e751b203deffe9b338ea171050fb64641559",
13
13
  "conventions/_profiles/interlocking.yaml": "46a2a4fb2eb537941c991ef4178d009a30d14f84279e525ca0d0887d3239047d",
14
- "conventions/_profiles/metrics.yaml": "6028a227ccdef6d97ff10602f1a146eb73fd02b0a03ebce6726540fa30540f3c",
14
+ "conventions/_profiles/metrics.yaml": "82081754271e0cb08a1245ad658578907c8e0e455912aa954502334a82d7b4d3",
15
15
  "conventions/_profiles/planner.yaml": "b3938783793c34f832968b7293b7c301f3e1deff5f06536a078168c911d0d089",
16
16
  "conventions/_profiles/runtime.yaml": "48fae0d31fb9228b8819243c264721037720acb1763bf27f74325c14ffef46d4",
17
17
  "conventions/_profiles/security.yaml": "38eb6b17e35e1439fe4f19c8ccf3ba1b2f18759a984dd1d33171ec3a29128876",
@@ -35,60 +35,61 @@
35
35
  "conventions/atdd-bun.topology/atdd-bun.topology.plan-location.convention.yaml": "82149598eb329a0f5db0feb345482a99fef65bef90d3fe34768db66406c30e24",
36
36
  "conventions/atdd-bun.topology/atdd-bun.topology.source-location.convention.yaml": "7e7bb788eb1ff9cbe6f67dfddc78a20b3800e733ab1036b70adb67e404b77113",
37
37
  "conventions/atdd-bun.topology/atdd-bun.topology.test-location.convention.yaml": "a1f7f772a889607d4b6c0f20e9924b88838199a3e763b6328dbe09b8f29f2e50",
38
- "conventions/coder.bun/coder.bun.boundaries-http-client.convention.yaml": "b846bb6ced2c4c967466520d52b00ff1ca802dafcdbb2ec2adbd0ce19e752a28",
39
- "conventions/coder.bun/coder.bun.commons-application-no-integration.convention.yaml": "f63e7f6442bcdf5cf79f58a091547a1a990d0ee7c006b797fd5187d6f8bf8712",
40
- "conventions/coder.bun/coder.bun.commons-cross-feature-imports-in.convention.yaml": "2d66bd3c04186fcef67a89c2b6d81a697f8f43f978ff27284a3b8a3848097182",
41
- "conventions/coder.bun/coder.bun.commons-domain-no-framework-import.convention.yaml": "238545a401e472cf65cba7f16d94cde8279f13d38fcb401bc00751af284de7e7",
42
- "conventions/coder.bun/coder.bun.commons-domain-no-outbound.convention.yaml": "34507efbb62ade3b58556b56d7323093349a264a5f09034a5131dea7506fd786",
38
+ "conventions/coder.bun/coder.bun.boundaries-http-client.convention.yaml": "9f340712ee14d6fc197fc0004f9f2b4e990de0d7328c6355c1fd7088fcb37db1",
39
+ "conventions/coder.bun/coder.bun.commons-application-no-integration.convention.yaml": "a6270ecde48291235d18e13342547af6754da494143d8a8910bceddc09781505",
40
+ "conventions/coder.bun/coder.bun.commons-cross-feature-imports-in.convention.yaml": "3902dcb5b45303ae501b2c8629e0a2d7f0a4be20a2ad4e873ab816f640fb62d5",
41
+ "conventions/coder.bun/coder.bun.commons-domain-no-framework-import.convention.yaml": "e313fc5712c32bbeb2bd99e0d6945ec55c8c8228a5f10002216f9fc34c336b7d",
42
+ "conventions/coder.bun/coder.bun.commons-domain-no-outbound.convention.yaml": "0c08753ea1b931c25395711df470bcbab6a2cba4b2983e49c3670bdd35d54c42",
43
43
  "conventions/coder.bun/coder.bun.complexity-cyclomatic.convention.yaml": "4184e97a4cb05ed1b66ba0d149cb83939a2c6246b98e1f01b4d38aad20ed30a6",
44
44
  "conventions/coder.bun/coder.bun.complexity-length.convention.yaml": "0032cc56814f260a8993bdc8c3f1cd9bb48539a4091ec62dbbab1119f99d9799",
45
45
  "conventions/coder.bun/coder.bun.complexity-nesting.convention.yaml": "903d930d0c5eaa98621238f63f132d94d7ffec37550452460b1e06e016adbedd",
46
- "conventions/coder.bun/coder.bun.composition-consumer.convention.yaml": "5bd69cdf8cb6a73e692c73cad30dceb533f624b38a6a120fc4f8e660a2cf25e0",
47
- "conventions/coder.bun/coder.bun.composition-root.convention.yaml": "74e30a8fa55b304ba2922fec59ecd8626d7a3c61411bb46bc5249188607f0de5",
46
+ "conventions/coder.bun/coder.bun.composition-consumer.convention.yaml": "da1bff427e85501e8fe45dc44ed00795294b131d92697b57237fdc42d4d31532",
47
+ "conventions/coder.bun/coder.bun.composition-root.convention.yaml": "64f6e77ed476f2e4818aee12e5e308407eb1556adfb71e7b3e10cd058c876c0d",
48
48
  "conventions/coder.bun/coder.bun.dead-code-reachability.convention.yaml": "662377f9fc09f57bd4dda380f75e21e6698a7f4f466e5e8ec830f115ec8d6321",
49
- "conventions/coder.bun/coder.bun.design-connected.convention.yaml": "21d9b1f11cb92f161acd163fe94d79022a0b35e269ea0db1c9bccbcfa4241b69",
50
- "conventions/coder.bun/coder.bun.design-dependency-flow.convention.yaml": "e96b6850ce8d5811947a9d4b62855477a112c053524a1d97a4f7ba35efb17e07",
51
- "conventions/coder.bun/coder.bun.design-hierarchy-import.convention.yaml": "067de2a858dba47ec11fab3ebbae052ea15d1481d9cb702a5eacc996c74c5922",
52
- "conventions/coder.bun/coder.bun.design-orphan-export.convention.yaml": "5d434c6368b9af640ff5c5e0c7d3be7ba69ab12ca6ac4acc6db3b046aabceeb8",
53
- "conventions/coder.bun/coder.bun.design-primitives.convention.yaml": "f76c9913a6bb9ddda10fb614c65391614f9625ded1451fe5a6652a2c703aa69b",
54
- "conventions/coder.bun/coder.bun.design-token-color.convention.yaml": "ae95c7b966a265748d4ad1b81b6eba2cc0c34e26df492c1c6873fa79c7a0c23e",
55
- "conventions/coder.bun/coder.bun.design-token-hardcoded.convention.yaml": "7bc2c433ee165efe689d3378c9d7b5ef52ecbf39431802ee0873f2fe22fe0165",
56
- "conventions/coder.bun/coder.bun.design-tokens-pure.convention.yaml": "43033359426260a55d3c4708c7461e69dba168a20b26abf43b697de98bb9f621",
57
- "conventions/coder.bun/coder.bun.design-wagons-import.convention.yaml": "0d5d48b1a60fb231efb46b46fb143a546707350a5e1e4dac2fc897da7bd4b5bb",
58
- "conventions/coder.bun/coder.bun.dto-mapper.convention.yaml": "e6890bcb421e9c10e71788e92ba1a2f1f96eed222fd0f3259f81b175b28ec190",
59
- "conventions/coder.bun/coder.bun.dto-placement.convention.yaml": "488576b8eba889b008e928357e62c323784da640bdcb986a06152ac4e4424568",
60
- "conventions/coder.bun/coder.bun.dto-purity.convention.yaml": "2c87391f323b10e8545095c8b278547a5a4f3854ac02ddec1849f4a6c83676fc",
49
+ "conventions/coder.bun/coder.bun.design-connected.convention.yaml": "a4cf76ee21bf7e98c1bb9a539e187538103a7310c72a662a6d80d69e8644c833",
50
+ "conventions/coder.bun/coder.bun.design-dependency-flow.convention.yaml": "8c99a0293f6a3e527c8aa99b2d5634695627c6daf8e37398fa25667a0e47dbff",
51
+ "conventions/coder.bun/coder.bun.design-hierarchy-import.convention.yaml": "59ca34fb9c6ec72b6ad7a099a5a8bceaa79a646226cf05eb0bb5c99854804dd2",
52
+ "conventions/coder.bun/coder.bun.design-orphan-export.convention.yaml": "ca36d04d8cc961e04974f65fd774c2dbfab92fe64846010cdb27fc220fb0d935",
53
+ "conventions/coder.bun/coder.bun.design-primitives.convention.yaml": "e54b431ffa6c9f501b3160d49b660590954f0446c43ade9141ac5ebce2adc095",
54
+ "conventions/coder.bun/coder.bun.design-token-color.convention.yaml": "cd2270f3e94f958f529aa3e56b79037a87b8eddfb22d9a3244e12fcd32dcda9e",
55
+ "conventions/coder.bun/coder.bun.design-token-hardcoded.convention.yaml": "908173a1f715d7f4826855df1b668f9db363fc6e89900a9a764911f55e73c3f8",
56
+ "conventions/coder.bun/coder.bun.design-tokens-pure.convention.yaml": "8f7e768ac3041dc3d3285a03fdcabd0d376695bcfab0233166e107fb2f1419c8",
57
+ "conventions/coder.bun/coder.bun.design-wagons-import.convention.yaml": "76595759544ce81bf9b0e0ee1d59f7a2f5cc446105697b23a5c545a8939bcb28",
58
+ "conventions/coder.bun/coder.bun.dto-mapper.convention.yaml": "c524b5f37db6ae4f7558fc3ec672aa1c5b764738a0f25a20062d736fed6bbcb3",
59
+ "conventions/coder.bun/coder.bun.dto-placement.convention.yaml": "9525255f9e037ca0d939de20e70235fe348dcebf2136536055bc21433d7e9fb5",
60
+ "conventions/coder.bun/coder.bun.dto-purity.convention.yaml": "4743199fb242a25f896425916e3873c2e8cf62f4285437f62b0f8f8139d6a58d",
61
61
  "conventions/coder.bun/coder.bun.duplication-intra-layer.convention.yaml": "37c0b9da0d3b5a7c7229e0697ea283249bd42cea056b0f1d6345a408ab50a7ea",
62
62
  "conventions/coder.bun/coder.bun.error-response-bare-string.convention.yaml": "c2c0f859f6dd12702edf225c4148849e72b6c25e6d7cd28edd5d644ba277a23c",
63
63
  "conventions/coder.bun/coder.bun.error-response-code-format.convention.yaml": "3048fed00b92c2559f7c52f73cfcce07b583eb47b12d04f0851e237ae3646567",
64
- "conventions/coder.bun/coder.bun.green-header-order.convention.yaml": "8b00d89605cbd618c052805fb1129a7a65743c72a7627f7cd08f0685ddefa8aa",
65
- "conventions/coder.bun/coder.bun.green-header-purpose.convention.yaml": "520eefd556bbb3585ca1fdeef25b455b9312f386cd24e5f53055886669f4a6bd",
66
- "conventions/coder.bun/coder.bun.green-header-runtime.convention.yaml": "bd5ece51ab0c87d39f1e98a8f29e442d30e563b6682815534497a7f99c47e41e",
67
- "conventions/coder.bun/coder.bun.green-header-tested-by.convention.yaml": "8e93b8060253c4376ba9c3dc9326b950d7d72289fed2cd269bb9ed741eb19d06",
68
- "conventions/coder.bun/coder.bun.green-urn-layer.convention.yaml": "d50fa33bb92abd2de84d51cd03bcc60722a12898db34a72e59b0b9fe6c78a8cb",
69
- "conventions/coder.bun/coder.bun.green-urn-marker.convention.yaml": "8e44469621ca3a345c714c2636239eb4a6c654675518ca10e1ae9a7551de55c1",
70
- "conventions/coder.bun/coder.bun.green-urn-name-matches.convention.yaml": "3562b5bf8b92b3a5f50080ffa4f88b3d6bb4130b485697154bba71f19cdeeda0",
71
- "conventions/coder.bun/coder.bun.green-urn-pattern.convention.yaml": "6d291a793662c4711a9c6806734c1015abc6ab96870fb9e230731a23c3c88604",
72
- "conventions/coder.bun/coder.bun.green-urn-side.convention.yaml": "71f6c304f502a412dd3d07cd30e2adf34bb44d5e8f74d611ae2be1ecbbef0884",
73
- "conventions/coder.bun/coder.bun.green-urn-wagon-feature.convention.yaml": "7fa566c544dc161ee9b20d54aeb22bedcf84f0f6a2e63c7aa1cfc14d00672378",
64
+ "conventions/coder.bun/coder.bun.green-header-order.convention.yaml": "2a42d67bedeec1de76fa1de844351983c5ba4bc5b61d5a5047298f6804664f67",
65
+ "conventions/coder.bun/coder.bun.green-header-purpose.convention.yaml": "84776838beb6013fcc74e4fc81129e321a80627345a92d3444bb6886bda14397",
66
+ "conventions/coder.bun/coder.bun.green-header-runtime.convention.yaml": "da6be7412676fe344e5fe675caff660187c263e398750dc743546f6255995cc6",
67
+ "conventions/coder.bun/coder.bun.green-header-tested-by.convention.yaml": "abb98d89482185bad4b77609776c3fb4da6a46c14069719256bcfc9f11703647",
68
+ "conventions/coder.bun/coder.bun.green-urn-layer.convention.yaml": "553594e0c0ffef3ae21ede7575868ecc78ea0ef0d7e06dafcc9a55b017682695",
69
+ "conventions/coder.bun/coder.bun.green-urn-marker.convention.yaml": "38547328c129f1178762bbe37ab049d1fbd7ab9eb847a617880447f5c1b5b8a9",
70
+ "conventions/coder.bun/coder.bun.green-urn-name-matches.convention.yaml": "5aebce9a7c0d83b4b1555dc5e245d84e7a576b05f6c52662b24825b65167250c",
71
+ "conventions/coder.bun/coder.bun.green-urn-pattern.convention.yaml": "7f8ff22088b1f460ce31ac8c661b1ade1fd597dfef0b12e791641d856dbd450c",
72
+ "conventions/coder.bun/coder.bun.green-urn-side.convention.yaml": "f838211202ce0950e920dea137fc3c66cf5a789175356b1e6dc30facf1c6e5ad",
73
+ "conventions/coder.bun/coder.bun.green-urn-wagon-feature.convention.yaml": "449dbb1fc344bec932a2dfd121cead8ede6005546a3689505112522b104da0d8",
74
74
  "conventions/coder.bun/coder.bun.interlocking-bilateral-binding.convention.yaml": "6d36fcd234f9c0121443cd0123c500139155f1297663a0c31c44afcaa7ab7053",
75
75
  "conventions/coder.bun/coder.bun.interlocking-delegates-to-trainrunner.convention.yaml": "43983a9d626d8c2285e09220383d1d9435713fb45526e0e629bb92d6792269e9",
76
76
  "conventions/coder.bun/coder.bun.interlocking-does-not-carry-cargo.convention.yaml": "c8f906c4aa6709aab7dc91e719331fd1865c229708acd9838373712a777138b1",
77
77
  "conventions/coder.bun/coder.bun.interlocking-resolution-model-exists.convention.yaml": "dccd0fa99686811d2befc32861f995635b3e194004865710d5b9064a3feea8a8",
78
78
  "conventions/coder.bun/coder.bun.interlocking-runner-exists.convention.yaml": "f7fadc580d2896f7d8341f555e4447480809329f3901209d30c2e54181032f15",
79
79
  "conventions/coder.bun/coder.bun.journey-runner-boundary.convention.yaml": "51df6caa810d887a84fc8196bc103465685400f12ba8a0504efef9b88c10fe33",
80
- "conventions/coder.bun/coder.bun.layer-naming.convention.yaml": "009c21f6adbbc1e08d9781d7466b06e3d7fb7d935bf45b1df07fe37639a60a82",
80
+ "conventions/coder.bun/coder.bun.layer-naming.convention.yaml": "65d4b5887e6cd6340157d13b911e94f1471a6072bb728cc06d7ad58e3da77d0d",
81
81
  "conventions/coder.bun/coder.bun.logging-console.convention.yaml": "e85fc1038ac78799b36d1f4156b6547fb00441f1e3ac3ec93e59e7e895e37aef",
82
82
  "conventions/coder.bun/coder.bun.logging-structured.convention.yaml": "a7c8bd90762bf1516d2af63d4fe731720bec9f58431009f69af1bfebc0398759",
83
+ "conventions/coder.bun/coder.bun.phase-discipline.convention.yaml": "1a4142817c17447313014cb4b78d728710160cb0c66d719fe196f25c58a505e1",
83
84
  "conventions/coder.bun/coder.bun.quality-comments.convention.yaml": "fdf6be3a63f1b679fae1248334e1ee7ed3b09ffd7f5b8b25007fd31de3f5ad04",
84
85
  "conventions/coder.bun/coder.bun.quality-mi.convention.yaml": "d4d29a1680693e5ac472badc529ce6e04a7f7cba30e2b3e5dd36c7a36c2465c5",
85
- "conventions/coder.bun/coder.bun.responsive-breakpoints-declared.convention.yaml": "4632b2cfb03cae65ac415dd205f4ff0b8f2242f9546dc4cafd11a9a8391bad35",
86
- "conventions/coder.bun/coder.bun.responsive-no-fixed-width.convention.yaml": "09bb70ccb5350bd46007ba1cf7da55447bdb87b8b31677dacba2bddba5ea63ab",
87
- "conventions/coder.bun/coder.bun.responsive-viewport-meta.convention.yaml": "705b1ed788a9c5b6d6a555d96662269e09c4ba5b30a7000d37ddf91393a65a88",
86
+ "conventions/coder.bun/coder.bun.responsive-breakpoints-declared.convention.yaml": "fa1a94f3f67111557ed88c25ee6a5db485b0c083c9b95a1d2480248b0a0e610d",
87
+ "conventions/coder.bun/coder.bun.responsive-no-fixed-width.convention.yaml": "96b63457710089fe4210f5ee736d15e002182b1babfe6f4fcdc6f3f16ec1929a",
88
+ "conventions/coder.bun/coder.bun.responsive-viewport-meta.convention.yaml": "71f76d76734014c2daef478080838f20f4cea084561d2455d17ce9b891a0f922",
88
89
  "conventions/coder.bun/coder.bun.runtime-executes-the-declaration.convention.yaml": "ed1643e92878a746298a20bfbc301c1f469d123d71ca272de1384d2f7cc03ba1",
89
- "conventions/coder.bun/coder.bun.runtime-server-is-bun-serve.convention.yaml": "43f3a709e59bf564eee5691ee57a92b4c92d9bea6cedbcdf060b692c14d47663",
90
- "conventions/coder.bun/coder.bun.runtime-single-lockfile.convention.yaml": "93a90a41e39fa08461f86dc5585a30459120db69957b35f3840b44c949395dec",
91
- "conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml": "375bce699e7ed25c8d4024bc3af3ad7ce007bb6260b096c212a063e2a7841744",
90
+ "conventions/coder.bun/coder.bun.runtime-server-is-bun-serve.convention.yaml": "90df9fab879428e0dd50f8b7d97c8d83f0f35fabf03b807921af5a7d4dada8c2",
91
+ "conventions/coder.bun/coder.bun.runtime-single-lockfile.convention.yaml": "94c4ebfa813ad0cdaea2baf0b565bffc453b197ed69bb4954d69d77631444027",
92
+ "conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml": "7b55574ba86b0ee85da85babf6cd671f57b2aa15faabb4484d518b02e0a7b79e",
92
93
  "conventions/coder.bun/coder.bun.security-hardcoded-secret.convention.yaml": "1a57d91aa91c52cc1efdf4168a2f3f147e7f25e979c47161d9757e1839ebbddd",
93
94
  "conventions/coder.bun/coder.bun.security-missing-auth.convention.yaml": "2b937475e7a1f3f2718be6a3f0d94fa261ca65e72bbf8e3f2ca39ba143b90544",
94
95
  "conventions/coder.bun/coder.bun.security-sql-injection.convention.yaml": "b4cbc3a446bbbf874762fd13c873305eaf7417c45a6206133163509b97267faa",
@@ -121,21 +122,21 @@
121
122
  "conventions/planner.telemetry/planner.telemetry.logical-ownership.convention.yaml": "6dd666a22fd7fd0cb6e5fe5505665c8889a504ee929fdebf3aee019df4aac2b4",
122
123
  "conventions/planner.telemetry/planner.telemetry.metric-cardinality.convention.yaml": "e61831f207ad4f09be983b300cbedc40f6ad08a4b2483612fc195e2343be93f6",
123
124
  "conventions/planner.telemetry/planner.telemetry.tracking-plan-schema.convention.yaml": "5453cdf438dc5bdc72bbe5828b089e4090b865112f6a1550bb70e2c7c72a0cdf",
124
- "conventions/tester.bun/tester.bun.acceptance-binding-declared.convention.yaml": "46b9db88cdb978bc75b85b17d19a627233263da5b4fc6456a21fa870646ae1d0",
125
- "conventions/tester.bun/tester.bun.acceptance-covers-tag-well-formed.convention.yaml": "8dd55d2dc36d255ab553fba8cf6f5cd7de1ba286e687d290458d3b5681fbb40f",
126
- "conventions/tester.bun/tester.bun.acceptance-resolves-to-declared.convention.yaml": "6c5cc0719749dbcdd3eb02877799a40998e77b433b2f17d27ac1dbca44292610",
127
- "conventions/tester.bun/tester.bun.interlocking-production-runner-used.convention.yaml": "7cfa67f19ae6b88be40d2facdf2a83440bca3c2a8b3824c75eb25fda8438297c",
128
- "conventions/tester.bun/tester.bun.interlocking-route-coverage.convention.yaml": "7c21809613d74cd38368238f82a35853bf74ab34cfacc07354e62f83b8514881",
125
+ "conventions/tester.bun/tester.bun.acceptance-binding-declared.convention.yaml": "4bc5489f8cca53eb9145decb07e3a74565c3856274fce1495338a1f3cd89d0c3",
126
+ "conventions/tester.bun/tester.bun.acceptance-covers-tag-well-formed.convention.yaml": "a7095e17f003ab3e08202f49408f4de7c834cc917b0946d6bc68036afdcdc265",
127
+ "conventions/tester.bun/tester.bun.acceptance-resolves-to-declared.convention.yaml": "44b77a6ae4b4a92d5b51b5bb3444a4db280f74dc1ed25d158e20e79cd16a2bb3",
128
+ "conventions/tester.bun/tester.bun.interlocking-production-runner-used.convention.yaml": "c2fee925c16946314bdebf30fe2130cfc76f62bb64d714bdc37b7311e932f788",
129
+ "conventions/tester.bun/tester.bun.interlocking-route-coverage.convention.yaml": "e75b1285aa650cf2a5d94d9c98b6351df4a24e3942dcf01e2faa9ed6676f1ca6",
129
130
  "conventions/tester.bun/tester.bun.interlocking-smoke-coverage-for-station-master.convention.yaml": "ae2e53865fe3f53982d5d1d9fca73dd116ee932e00c4c4f1184235415b1dd794",
130
131
  "conventions/tester.bun/tester.bun.interlocking-trace-binds-declared-route.convention.yaml": "8aea28e250368ed800a97d5e7e2f293c2935b198eb87be1422eef029223d71a4",
131
132
  "conventions/tester.bun/tester.bun.interlocking-train-sequence-is-exercised.convention.yaml": "3172abf9256efd8f831ed5f8f11872e17cf847114769bba0c42270507254e241",
132
- "conventions/tester.bun/tester.bun.red-behavioral-assertion.convention.yaml": "5ce6b2460d8796b0b921600aa54129e192de4c4dd8229c8e574ae1cf55388b60",
133
- "conventions/tester.bun/tester.bun.red-fails-first.convention.yaml": "0506c7fae92a85161df8e190e5c01c595d66c376d3ad5f16f1faf38d9503ac7c",
133
+ "conventions/tester.bun/tester.bun.red-behavioral-assertion.convention.yaml": "b604c0836eeff46df9a9e53195696c17f7997c6b2732c6c759b5207162a33d97",
134
+ "conventions/tester.bun/tester.bun.red-fails-first.convention.yaml": "232c42033cea8f935a84cd86769cfd273bf6e4772e2d2ff3ed66117a3c8e689d",
134
135
  "conventions/tester.bun/tester.bun.routing-runtime-family.convention.yaml": "6deeb37235ebe500c491aea9e06695c08df718a371114b1a6394bd1988fb66b1",
135
- "conventions/tester.bun/tester.bun.security-auth.convention.yaml": "eb192aa29ce0f2976a92c20d32fc425b5685b15d9bb384d52101646b08cb9c2e",
136
- "conventions/tester.bun/tester.bun.security-input.convention.yaml": "3118299e1e6a71b21be730f26377baab922b1c3d8b175b9b35f10d38d9ebaeb0",
137
- "conventions/tester.bun/tester.bun.smoke-no-collaborator-substitution.convention.yaml": "76187d91e6298ae9b89a39c2ebf9cb6f769e1d3ce08d7a9ea21727aadc6a019a",
138
- "conventions/tester.bun/tester.bun.smoke-observable-assertion.convention.yaml": "1d35f17221b7de3f9ad6bb3c1ced486bec401e1d024e2476147f4f9e52f05674",
136
+ "conventions/tester.bun/tester.bun.security-auth.convention.yaml": "b8224269911ae477756e6c160e1ed72d1438574277109f77704326251e720449",
137
+ "conventions/tester.bun/tester.bun.security-input.convention.yaml": "6f089d2641f264e59ab38973f848644bb48d6e254613dba62c2616f1edb82a68",
138
+ "conventions/tester.bun/tester.bun.smoke-no-collaborator-substitution.convention.yaml": "6ae2bdfdf3c842f855c02b9c776feaa0ac11efa1365a0b8f0b9c8343afd11102",
139
+ "conventions/tester.bun/tester.bun.smoke-observable-assertion.convention.yaml": "ba7c3981fd9b8860abb88eaeefde0a87bc696309a2d31e2bc9c637832d0fe1cb",
139
140
  "conventions/tester.bun/tester.bun.telemetry-captured-sink.convention.yaml": "7f1156dc041fc44d4becd18f379cd1fb68b99cd1e888b9a8f6dee4201ad5337b",
140
141
  "conventions/tester.bun/tester.bun.telemetry-emit.convention.yaml": "440ba54de6c23e25786d363d80a9c337f29aa2eaf59bc8b5c24d391cc1c3d3b7",
141
142
  "conventions/tester.bun/tester.bun.telemetry-identity-assertion.convention.yaml": "25f7cc3dcb21e70a183638be9416802ef081323482a98eba604223fabf389b55",
@@ -146,10 +147,10 @@
146
147
  "conventions/tester.bun/tester.bun.test-imports-bun-test.convention.yaml": "6eef1c745315a69357d23bf07d318e504d425f76fcfdc120166b8ef2d4c820d6",
147
148
  "conventions/tester.bun/tester.bun.test-isolation-no-live-state.convention.yaml": "3488af16431ea461e9128d15dbb0ad86324f4446bf36d5a662fab73687e8860e",
148
149
  "conventions/tester.bun/tester.bun.test-no-self-skip.convention.yaml": "23fca575611f9c0740bcf64849a3c1600ef4cc1cc64df3c106d328b67283d8a3",
149
- "conventions/tester.bun/tester.bun.test-phase-declared.convention.yaml": "cd22101bfcbc2eeca3da1aa2907ba6c944674c31cfaac5305f2149c6c429cf87",
150
+ "conventions/tester.bun/tester.bun.test-phase-declared.convention.yaml": "f6daa660417bdc07fe87765ac17bc5606cd2d8a5c8dbe456f9e4327ddd77fe73",
150
151
  "conventions/tester.htmx/tester.htmx.a11y-harness.convention.yaml": "e74328600b89761a8740ace465e3a5d5e38f967dcbeda7fe7023af53dd0089d4",
151
152
  "conventions/tester.htmx/tester.htmx.covered-train-is-routed.convention.yaml": "e70d05055733644addd63db11c6cb39cf38a34adc4cc39f7c7ee9964eb2391a4",
152
- "conventions/tester.htmx/tester.htmx.e2e-binds-declared-subject.convention.yaml": "48bb5a45380d80161c09e872a769020b3ea10a05a4c34a71a1a585f89a434583",
153
+ "conventions/tester.htmx/tester.htmx.e2e-binds-declared-subject.convention.yaml": "fa2b9079bc15ffab47d57c80cb804fb4c1b19fc377434226ef9e46e586890cbc",
153
154
  "conventions/tester.htmx/tester.htmx.e2e-spec-naming.convention.yaml": "4bd46400706bbe9b453784ca2811ef04ffb25871a762791e653da3d9a0fa07f2",
154
155
  "conventions/tester.htmx/tester.htmx.exposed-journey-e2e-coverage.convention.yaml": "eca949b38da805c9654d483fce4e06fe19292bd72b5b286af982f13c5782e1d4",
155
156
  "conventions/tester.htmx/tester.htmx.fragment-asserts-returned-markup.convention.yaml": "b8de8e893b582d8ec4b7c24acfa16da0eccd14e6e58e92baf9e9c10c9749ea0c",
@@ -161,7 +162,7 @@
161
162
  "conventions/tester.htmx/tester.htmx.responsive-harness.convention.yaml": "cec312935ab592c2c7a5c6a94623a02df771a9e2ca2035b721ef1006c4800fdf",
162
163
  "conventions/tester.htmx/tester.htmx.responsive-journey-coverage.convention.yaml": "2004d0a8975178475d792702e164f335b07407f36e83a09ceadef3fe49037111",
163
164
  "conventions/tester.htmx/tester.htmx.swap-oob-asserts-destination-id.convention.yaml": "65d8ffa62732ec0578d4999234b89f692e9c5e234ecd30e620bee7c44f053caa",
164
- "conventions/tester.htmx/tester.htmx.train-e2e-coverage.convention.yaml": "99096eaab1b6891eb66306d904624c7c28ab9bd2c0f7f9f68a515e3be45961f5",
165
+ "conventions/tester.htmx/tester.htmx.train-e2e-coverage.convention.yaml": "8d36a1e06985262a5d431678f9baef67b5625825f4cc843ac3d3cbff13022373",
165
166
  "conventions/tester.htmx/tester.htmx.verb-endpoint-coverage.convention.yaml": "41b6ff2a519040a5eb9834bcdee88ad1d470a69430bc9a39be667dc321dcd14c",
166
167
  "conventions/tester.htmx/tester.htmx.visual-harness.convention.yaml": "a2419b784202fc807558d0182e26d3d8c777aa9ec4ef4c252467a979dd903d50",
167
168
  "conventions/traceability/traceability.plan.executable-acceptance-has-test.convention.yaml": "52eca528c9dbdb82f3c1a13e4e1a3d5d21a9dd511b66e6f8c4135298412427f5",
@@ -1190,12 +1191,12 @@
1190
1191
  "planner-schemas/train.schema.json": "d6fbac9067c1bffeb84eb79a71228441055af6e6e7ba141dd4e0bcb079345ec0",
1191
1192
  "planner-schemas/wagon.schema.json": "57b98f1ade998d745538eb3d72fb3014a50042006870f90bce47028eea336eb4",
1192
1193
  "planner-schemas/wmbt.schema.json": "7a3a5693bfcf01340667c2be4a3c48e74f34b1af7e8dc13372c0de06b7f4fe12",
1193
- "relationships.yaml": "26dd50489d7cbd45400937a8949d6ff77cdd4400bfa828d6b7a17e90c64c879b",
1194
+ "relationships.yaml": "15299f77e82c409ee6b8a7ffd37e8e1ab99fb31446f1ce303b07e968a6dbf830",
1194
1195
  "src/agent.ts": "39ca8b3183063c60e00eb96e5629d0397aeb83cc82d4c4bc32c01715c906649b",
1195
1196
  "src/ci.ts": "67e54d2cbfc44a9e42837d5e750af526d6255c539d3c452a4d5fca3226c0d9ac",
1196
1197
  "src/cli.ts": "cbc50f1e7fc7d0935f78230b7da6e232ed7ee6f04828e015c599fb6f6edcbfa2",
1197
1198
  "src/docs-capability.ts": "bdeeb414649049b1cd4fa8008cada3a576318be51c43bec91bfa46a8e250c270",
1198
- "src/enforce.ts": "8b22a3ac30fdd35c9caa4c23f064498293a628a342d590fca1f2040ee3a8ea05",
1199
+ "src/enforce.ts": "2f624f2aa272466f44c552d77ce3976cb2a518491d3ec3c47815583fdd0f7ad8",
1199
1200
  "src/hooks.ts": "0b4ca8c857e637bbd144e737e78eda924e3cba7b038c0abe5e6916d200d73068",
1200
1201
  "src/index.ts": "4081f8b08d1d3ee9e15a9964143e53d9cfb94a5616ab3e58a180d24cc16dc381",
1201
1202
  "src/integrity.ts": "556976a42bae298df14b73675102d83b6bf4df0674d8e7211aad5315548f005f",
@@ -1203,13 +1204,13 @@
1203
1204
  "src/planner-kernel.ts": "5d3f5305fb59becb2cc97d8a03aca6b104f385805d91cc0410856e289dd6fbb1",
1204
1205
  "src/planner-schema-validator.ts": "ce529c0936171075e93c7539b3655fe895a98dd2973ebda5775958e6ebc316d9",
1205
1206
  "src/planner-validators.ts": "99adeb65f579af923c11f21a8f55cfb9993b007fd8df59c5f764696b55379cfc",
1206
- "src/profile-registry.ts": "716ef6e75e8e6eb14ffee37095b4fc9b38ddba2170fb84e7f06476863c3c02a5",
1207
+ "src/profile-registry.ts": "5a7761d324181ae27deb51f198d63648a4c99e858b4de98b54d35e6cf8a39fe7",
1207
1208
  "src/register.ts": "6a2f1c6b8df0dc9c8f45df8ec9fac2be29044e048b08c8ffe423410e94dadedd",
1208
1209
  "src/release.ts": "7b0fe444ee81f476f53b9c21b6c347ef588ee616c60211419cf984132be768ba",
1209
1210
  "src/setup.ts": "38233265afedc63499bbef3b5403889651add335a70efd3813254ba53f4fc4fe",
1210
1211
  "src/telemetry-plan.ts": "cdb1e8bfff414f3ea81977388973da2cf6d89567d9e060dc9d5989a33600f153",
1211
1212
  "src/topology.ts": "9779ee48e1c453abb76363163d4ab363463fa14e359571139f6d1f1fcc51ae2c",
1212
- "templates/agents/AGENTS.block.md": "cbbead4983b3096aa63aa2c6f6b60de75d24a06a4c89fc5dafd5796b2511dab6",
1213
+ "templates/agents/AGENTS.block.md": "f3092568ccabda3e94bf0b70e10d05c5963f70de75208b057ea548e3fed2ad8c",
1213
1214
  "templates/agents/atdd-bun.integrity.test.ts": "dec6f6e5f65a08d9512fc703b367c163f8c9da1f6aa7fd466835c1ec30348a41",
1214
1215
  "templates/docs/site.css": "482b3427e3a3cb02a85dc85cfbeac80592dfd53abf42fc92d6ea7071f22afc95",
1215
1216
  "templates/github/atdd-bun-release.yml": "d9547e9e6ef3ae010d53d55314f6a54567f88bd900f7e50d994cd308601d2684",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afokapu/atdd-bun",
3
- "version": "0.10.40",
3
+ "version": "0.10.42",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/afokapu/atdd-bun.git"
@@ -68,6 +68,7 @@ nodes:
68
68
  - coder.bun.layer-naming
69
69
  - coder.bun.logging-console
70
70
  - coder.bun.logging-structured
71
+ - coder.bun.phase-discipline
71
72
  - coder.bun.quality-comments
72
73
  - coder.bun.quality-mi
73
74
  - coder.bun.responsive-breakpoints-declared
@@ -5177,6 +5178,76 @@ edges:
5177
5178
  target_ref: tester.bun.telemetry-emit
5178
5179
  type: requires
5179
5180
  origin: "@afokapu/atdd-bun"
5181
+ - confidence: 1
5182
+ constraint: mandatory
5183
+ control: internal
5184
+ foundation: start_to_start
5185
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5186
+ source_ref: coder.bun.phase-discipline
5187
+ strength: important
5188
+ target_ref: coder.bun.complexity-cyclomatic
5189
+ type: runs_alongside
5190
+ origin: "@afokapu/atdd-bun"
5191
+ - confidence: 1
5192
+ constraint: mandatory
5193
+ control: internal
5194
+ foundation: start_to_start
5195
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5196
+ source_ref: coder.bun.phase-discipline
5197
+ strength: important
5198
+ target_ref: coder.bun.complexity-length
5199
+ type: runs_alongside
5200
+ origin: "@afokapu/atdd-bun"
5201
+ - confidence: 1
5202
+ constraint: mandatory
5203
+ control: internal
5204
+ foundation: start_to_start
5205
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5206
+ source_ref: coder.bun.phase-discipline
5207
+ strength: important
5208
+ target_ref: coder.bun.complexity-nesting
5209
+ type: runs_alongside
5210
+ origin: "@afokapu/atdd-bun"
5211
+ - confidence: 1
5212
+ constraint: mandatory
5213
+ control: internal
5214
+ foundation: start_to_start
5215
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5216
+ source_ref: coder.bun.phase-discipline
5217
+ strength: important
5218
+ target_ref: coder.bun.dead-code-reachability
5219
+ type: runs_alongside
5220
+ origin: "@afokapu/atdd-bun"
5221
+ - confidence: 1
5222
+ constraint: mandatory
5223
+ control: internal
5224
+ foundation: start_to_start
5225
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5226
+ source_ref: coder.bun.phase-discipline
5227
+ strength: important
5228
+ target_ref: coder.bun.duplication-intra-layer
5229
+ type: runs_alongside
5230
+ origin: "@afokapu/atdd-bun"
5231
+ - confidence: 1
5232
+ constraint: mandatory
5233
+ control: internal
5234
+ foundation: start_to_start
5235
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5236
+ source_ref: coder.bun.phase-discipline
5237
+ strength: important
5238
+ target_ref: coder.bun.quality-comments
5239
+ type: runs_alongside
5240
+ origin: "@afokapu/atdd-bun"
5241
+ - confidence: 1
5242
+ constraint: mandatory
5243
+ control: internal
5244
+ foundation: start_to_start
5245
+ reason: phase discipline directs the response to each refactor sensor without weakening its enforcement
5246
+ source_ref: coder.bun.phase-discipline
5247
+ strength: important
5248
+ target_ref: coder.bun.quality-mi
5249
+ type: runs_alongside
5250
+ origin: "@afokapu/atdd-bun"
5180
5251
  - confidence: 1
5181
5252
  constraint: mandatory
5182
5253
  control: internal
package/src/enforce.ts CHANGED
@@ -42,9 +42,9 @@ export const profileImplementations: Record<ConcreteProfile, string[]> = {
42
42
  workflow: [],
43
43
  };
44
44
 
45
- /** Conventions which an installed companion package contributes to an otherwise policy-only profile. */
45
+ /** Additional policy conventions a profile loads, whether local or contributed by an installed companion package. */
46
46
  export const profileConventions: Record<ConcreteProfile, Array<{ rule_id: string; path: string }>> = {
47
- traceability: [], topology: [], docs: [], planner: [], telemetry: [], coder: [], tester: [], security: [],
47
+ traceability: [], topology: [], docs: [], planner: [], telemetry: [], coder: [{ rule_id: ["coder.bun", "phase-discipline"].join("."), path: "conventions/coder.bun/coder.bun.phase-discipline.convention.yaml" }], tester: [], security: [],
48
48
  architecture: [], metrics: [], runtime: [], interlocking: [], htmx: [], design: [],
49
49
  workflow: [{ rule_id: "atdd-workflow.workflow.lifecycle", path: "../atdd-workflow/conventions/atdd-workflow.workflow/atdd-workflow.workflow.lifecycle.convention.yaml" }],
50
50
  };
@@ -54,9 +54,11 @@ export async function renderProfileRegistries(root = resolve(import.meta.dir, ".
54
54
  const missing = ruleIds.filter(id => !conventions.has(id));
55
55
  if (missing.length) throw new Error(`${profile} declares rule IDs without exactly one convention: ${missing.join(", ")}`);
56
56
  const supplementary = profileConventions[profile];
57
- const duplicate = supplementary.find(convention => conventions.has(convention.rule_id) || ruleIds.includes(convention.rule_id));
57
+ const duplicate = supplementary.find(convention => ruleIds.includes(convention.rule_id));
58
58
  if (duplicate) throw new Error(`${profile} duplicates convention ${duplicate.rule_id}`);
59
- const selectedConventions = [...ruleIds.map(id => conventions.get(id)!), ...supplementary];
59
+ const mismatchedLocal = supplementary.find(convention => conventions.has(convention.rule_id) && conventions.get(convention.rule_id)!.path !== convention.path);
60
+ if (mismatchedLocal) throw new Error(`${profile} declares local convention ${mismatchedLocal.rule_id} at ${mismatchedLocal.path}, but it lives at ${conventions.get(mismatchedLocal.rule_id)!.path}`);
61
+ const selectedConventions = sorted([...ruleIds.map(id => conventions.get(id)!), ...supplementary], (left, right) => left.rule_id.localeCompare(right.rule_id));
60
62
  const rules = new Set(selectedConventions.map(convention => convention.rule_id));
61
63
  const relationships = sorted(graph.edges.filter(edge => rules.has(edge.source_ref) || rules.has(edge.target_ref)), (left, right) => relationshipKey(left).localeCompare(relationshipKey(right)));
62
64
  rendered.set(`${PROFILE_REGISTRY_DIR}/${profile}.yaml`, render(profile, implementations, selectedConventions, relationships));
@@ -9,5 +9,7 @@ For governed work, first use ATDD Workflow to validate the available Desk and re
9
9
 
10
10
  The operator—or an assigned coordinator with delegated authority—selects and authorizes the applicable ATDD Bun profile. Until then, do not inspect, research, plan, or change the repository. Do not change profile configuration without that authorization.
11
11
 
12
+ When the authorized work includes the `coder` profile, read `node_modules/@afokapu/atdd-bun/conventions/coder.bun/coder.bun.phase-discipline.convention.yaml` before reacting to coder findings (`conventions/coder.bun/coder.bun.phase-discipline.convention.yaml` when developing this package itself). The policy separates behavioral GREEN from REFACTOR; it does not suppress strict findings or change profile activation.
13
+
12
14
  A governed agent needs an assigned seat and role unless the operator explicitly requests general discussion. A coordinator assigns, coordinates, reviews, and checkpoints; a driver performs only assigned ready work, proves it, and submits review. Do not mutate coordination or repository state outside explicitly authorized scope. Never modify either toolkit or generated files.
13
15
  <!-- atdd-bun:end -->