@afokapu/atdd-bun 0.10.40 → 0.10.41

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 (45) 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/integrity.json +44 -43
  41. package/package.json +1 -1
  42. package/relationships.yaml +71 -0
  43. package/src/enforce.ts +2 -2
  44. package/src/profile-registry.ts +4 -2
  45. package/templates/agents/AGENTS.block.md +2 -0
@@ -53,15 +53,22 @@ content:
53
53
  fixtures that must NOT typecheck — `fixtures/dirty/interlocking_resolution_model/...` exists
54
54
  precisely to be malformed.
55
55
  fix_hint: |
56
- Three small additions to a consumer project:
57
-
58
- package.json "devDependencies": { "typescript": "^5.6.0" }
59
- "scripts": { "typecheck": "tsc --noEmit",
60
- "check": "bun run typecheck && bun test" }
61
- tsconfig.json { "compilerOptions": { "strict": true, "noEmit": true } }
62
-
63
- Any equivalent satisfies it — `svelte-check`, `astro check`, `vue-tsc`, or extending a strict
64
- base config. What must not happen is types being stripped and never checked anywhere.
56
+ Canonical path:
57
+ * provide a real no-emit TypeScript check and wire it into the repository's check path.
58
+
59
+ During GREEN:
60
+ * reuse the existing typechecker and strict configuration when present,
61
+ * add only the minimal missing typecheck dependency, config, or script required to make TypeScript checking real,
62
+ * fix type errors introduced by the current behavior rather than weakening compiler options.
63
+
64
+ Do not broaden:
65
+ * do not disable strict checks or add blanket ignores,
66
+ * do not replace the project's typechecker without necessity,
67
+ * do not migrate unrelated configuration while establishing the required check.
68
+
69
+ Prove:
70
+ * the current behavioral acceptance passes,
71
+ * the no-emit typecheck succeeds through the repository's normal check path.
65
72
  exceptions:
66
73
  - A Bun project with no TypeScript sources is out of scope entirely.
67
74
  - A tsconfig that `extends` a base config is never reported for strictness (see terms).
package/integrity.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
- "version": "0.10.40",
2
+ "version": "0.10.41",
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",
@@ -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.41",
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 -->