devlyn-cli 4.0.1 → 4.2.0

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 (72) hide show
  1. package/AGENTS.md +11 -95
  2. package/CLAUDE.md +7 -160
  3. package/LICENSE +21 -0
  4. package/README.md +83 -114
  5. package/bin/devlyn.js +330 -472
  6. package/bin/instruction-templates.json +120 -2
  7. package/bin/instructions.js +35 -8
  8. package/config/skills/_shared/adapters/claude.md +8 -85
  9. package/config/skills/_shared/adapters/codex.md +14 -34
  10. package/config/skills/_shared/adapters/omp.md +1 -11
  11. package/config/skills/_shared/codex-monitored.sh +4 -54
  12. package/config/skills/_shared/engine-doctor.sh +18 -58
  13. package/config/skills/_shared/engine-preflight.md +15 -47
  14. package/config/skills/_shared/expected-contract.py +242 -0
  15. package/config/skills/_shared/expected.schema.json +10 -95
  16. package/config/skills/_shared/invocation-receipt.py +26 -757
  17. package/config/skills/_shared/platform-support.py +37 -28
  18. package/config/skills/_shared/role-config.py +100 -421
  19. package/config/skills/_shared/runtime-principles.md +17 -93
  20. package/config/skills/_shared/task-complete.py +490 -285
  21. package/config/skills/_shared/task-completion.md +235 -0
  22. package/config/skills/devlyn-engines/SKILL.md +9 -11
  23. package/config/skills/devlyn-ideate/SKILL.md +57 -107
  24. package/config/skills/devlyn-ideate/references/elicitation.md +18 -99
  25. package/config/skills/devlyn-ideate/references/loop.md +110 -0
  26. package/config/skills/devlyn-ideate/references/package-format.md +128 -0
  27. package/config/skills/devlyn-ideate/scripts/acceptance.py +795 -0
  28. package/config/skills/devlyn-ideate/scripts/queue.py +1780 -0
  29. package/package.json +2 -3
  30. package/config/commit-conventions.md +0 -28
  31. package/config/skills/_shared/adapters/README.md +0 -74
  32. package/config/skills/_shared/adapters/grok.md +0 -100
  33. package/config/skills/_shared/archive_run.py +0 -969
  34. package/config/skills/_shared/codex-config.md +0 -81
  35. package/config/skills/_shared/collect-codex-findings.py +0 -505
  36. package/config/skills/_shared/finish-gate.py +0 -521
  37. package/config/skills/_shared/grok-anchor-guard.py +0 -78
  38. package/config/skills/_shared/judge-output-parser.py +0 -200
  39. package/config/skills/_shared/judge-role-evidence.py +0 -320
  40. package/config/skills/_shared/phase-prompt-render.py +0 -183
  41. package/config/skills/_shared/process-evidence.py +0 -926
  42. package/config/skills/_shared/resolve-bootstrap.py +0 -1410
  43. package/config/skills/_shared/resolve-stop-hook.py +0 -359
  44. package/config/skills/_shared/run-bounded.py +0 -58
  45. package/config/skills/_shared/spec-verify-check.py +0 -5083
  46. package/config/skills/_shared/state-phase-write.py +0 -5989
  47. package/config/skills/_shared/terminal-claim-check.py +0 -777
  48. package/config/skills/_shared/verify-merge-findings.py +0 -3528
  49. package/config/skills/devlyn-design-ui/SKILL.md +0 -650
  50. package/config/skills/devlyn-ideate/references/from-spec-mode.md +0 -61
  51. package/config/skills/devlyn-ideate/references/project-mode.md +0 -80
  52. package/config/skills/devlyn-ideate/references/spec-template.md +0 -121
  53. package/config/skills/devlyn-ideate/references/templates/decision.md +0 -48
  54. package/config/skills/devlyn-ideate/references/templates/roadmap.md +0 -50
  55. package/config/skills/devlyn-ideate/references/templates/vision.md +0 -44
  56. package/config/skills/devlyn-queue/SKILL.md +0 -66
  57. package/config/skills/devlyn-queue/scripts/append.py +0 -94
  58. package/config/skills/devlyn-resolve/SKILL.md +0 -379
  59. package/config/skills/devlyn-resolve/references/free-form-mode.md +0 -71
  60. package/config/skills/devlyn-resolve/references/outer-loop.md +0 -23
  61. package/config/skills/devlyn-resolve/references/phases/build-gate.md +0 -75
  62. package/config/skills/devlyn-resolve/references/phases/cleanup.md +0 -33
  63. package/config/skills/devlyn-resolve/references/phases/implement.md +0 -44
  64. package/config/skills/devlyn-resolve/references/phases/plan.md +0 -39
  65. package/config/skills/devlyn-resolve/references/phases/probe-derive.md +0 -261
  66. package/config/skills/devlyn-resolve/references/phases/surface-close.md +0 -34
  67. package/config/skills/devlyn-resolve/references/phases/verify.md +0 -310
  68. package/config/skills/devlyn-resolve/references/state-schema.md +0 -152
  69. package/config/skills/devlyn-resolve/references/task-completion.md +0 -160
  70. package/config/templates/prompt-templates.md +0 -71
  71. package/config/templates/template-feature.spec.md +0 -255
  72. package/config/templates/template-product-spec.md +0 -680
@@ -81,6 +81,7 @@
81
81
  ],
82
82
  "paragraphs": {
83
83
  "AGENTS.md": [
84
+ "00044037bbe954aacee48c5edbe01b53aabef90fbe3f0c28c9136dc428fdd7df",
84
85
  "0042d7a45818c8e1c451ac255502ee014fda81a2dbd2a4c04e75a66bc3493940",
85
86
  "0144d44eb6a0537211159e5f15baf2cacf11cc3275490ac5d295917df22cff27",
86
87
  "01e073f6a5722534affe03ab334fe4a394347f13de5ce191b757a0b7c6f51904",
@@ -88,24 +89,39 @@
88
89
  "029ce19ffbe7b9bab829a8da4aecbfec239c566b2b395112dddeda4516a50255",
89
90
  "02acf4d54b0fbb587b78b227a16d3394f737f9a984d168bd5ab71f4d6b00ab72",
90
91
  "03d85ed66f64ea52f2f96d9fb203b05ac6afc0ba634a4dfb3585429ce1531c44",
92
+ "0467080d13d933b663362006ae5f5a0ad73baaed51ad50faf3f0d3d9f92244a3",
93
+ "0634a245075d1a5aac4e58c1345f40f5f4c3b4909315f86aacd7ab239ea3ce61",
91
94
  "0869633a322da8f8d800b1d2c23becc52f5ff592f0823533ea24f09de465c53a",
95
+ "090f003bb30b98e6979865f3eb9bbc66eaa8f0cd74a89ff2eea5ef38cbee13b5",
92
96
  "0926622dde30d21c6cafe6b69b0bb0608b31e2528655615c7edbdedc6ae43d7c",
97
+ "0a8be3a2fb2bd90dd48d9bfa1f1419f77a5378929f6b296c5332252e73c61d43",
93
98
  "0b679ac026de2416da082320f94e0f4f0ae9680b97751500db80b3546f9db9be",
99
+ "0bc87e8af36113cda1539f916c835fe65485fc33e9010ece546b07e5925f4a9c",
94
100
  "0c0458c53f32a021ed4cf6ca7db6f8c3d1dd4fc93204850017e7194864fcbc16",
95
101
  "0c1bff2a27ca5fea0b1e2a53378a9b7a24c2c7ad0c548c397b1b773085ec094d",
96
102
  "0ce35b1151dc073ed9c98fcce819816c0d07f912d9e780941f9f6a63f2103563",
97
103
  "0dae9eb0a2fc92cd68cd7d674f3b6d18f5fef2bc3855df3d9005b04cb48e6cbb",
104
+ "10a623e1b87e495b54d32199ebac1437b982ed918ab4345a9833164edb87a847",
105
+ "110fc0f471d898e1cda13cc0d3020a9442fad5e1e6556e474392d31c573635fa",
106
+ "12d107c59a70220039ac0c034931886b3ae96d4b90f39755ae9026e6e347c783",
98
107
  "13a405568d93fe04c3e886196f60d3599742510211844cba4d7c29a2302ad0d5",
99
108
  "13d0fe82861940c1a9cbc55e638b99e259285291cf3f2c8604f6cec29cfaf8cf",
100
109
  "13f787f74ba8dfa315f36ff91e7a72f6d69bf4c8f98d094ee43286e5f8a0c6b2",
101
110
  "15598b4bdb679c765c616182509d021633b964ecc7f8be77cc0d90680a713e98",
102
111
  "16a1d88b1a778004f91439f57371164b525b21d3aec1820510c0de596e5d1fb7",
112
+ "16c7d965e59534532e390b17dba008a2414fe88dcd3595e89a16d6d86ca01f61",
113
+ "1705d88a34e295eef17ee08ebf412decb6f45d328e57c58996fe20f0594fb820",
103
114
  "17ac254ca2cf86f7637db35f6380370aef06c4f87c08af6c1976e968c4c3f549",
104
115
  "186f55e73293c12c2c5ada4c8ceffdbee69c7d147e17237f3650ae235e9ca7b8",
116
+ "188e31cffa81acc58baf4c94b525d3a1945ffb41ba849244b7372e6852e48fb8",
117
+ "19d17a2a263d240c7e3c4520f8bd6cf4705bf99532edc84d4546eb0440e6dff8",
105
118
  "1b1d4045f72b6e96026b549edfcb24cfdb0e3d621814b769893f53095b11f362",
106
119
  "1c3ef72df964eb9d6ba964b4dc1e10c442c7ac46f44e40f9e634a74594cc2f3b",
107
120
  "1d90788860a8e032046629a2a0e106bbbf325a8a627012897ee9235fbab98bd0",
121
+ "1dae9a70c6181c45ecc4dc5bca6abba27c88283ad6ac7b79af19517ad393fa2f",
122
+ "1e422822267e34b88f562ba5255de6dd01f0ecefaf0418c9ef833171ee45e355",
108
123
  "1f3336666bede137770444293ff66e5c104f84de7e63221c0f35c562dd8081ea",
124
+ "2004e8e621b572a5d0a24298a2f9f605e449c54e36eafbd47cbaac134422ff17",
109
125
  "20fe0401771436eecdbccfaf8e24742d387292bf73017b583f8078133117c133",
110
126
  "2203c9d11299068ec05668c24ebbd2eb461fdf832928524a21ce97933ea2cc16",
111
127
  "220ddfe5b75c8b2787a674d801d05c1394fafc40a30ed4a83d88545b44732943",
@@ -116,7 +132,10 @@
116
132
  "271a24d10b43d36b0f819cbc87d45797965aa6966a44f1b1cc5d75b358585fb6",
117
133
  "275402f7bbee5801fab557a9c422f072bf9406d2eaa09587fb700d86054764dc",
118
134
  "28005a526962d96d1e5903060b146fd3f061e68d360a8bd9496f3223bfc46f08",
135
+ "2800ed718e182f46600fd2fa81945bc1447711e61bd4631c41bbdaa167b6a514",
119
136
  "298331f9213abbb53895eeb6cefad07b728573acd71689bd3ee99a220b40804e",
137
+ "29db056213342819ff931b83f35c820b51943be8336481be400b2b1595d080b5",
138
+ "2c0de2adfa785b49dc77589e3693b5b7e0088e1a1f89bdf59d8b3bb4796466d7",
120
139
  "2c636872ad58c3f2cbba3393191c98cdf233cbbcd9a5ae4ff1212b897c43bcd8",
121
140
  "2c751f07eb6bb7efbb0a54a726a71f6e30dad9421143094b4655439483575410",
122
141
  "2d2b7a6ff45171a40273517f3b224d75329c729fe0bdf160807903a32f26ceaf",
@@ -124,73 +143,106 @@
124
143
  "2f35f493f8648119ff9668a48e89d5c58cd231629bcc1cf4f0db3957e8541eb9",
125
144
  "2fa7b235cb2c6a9ce91424a8253c969544f3ec3dea5a74517e80cc41515f60ef",
126
145
  "3028863f5fa89be1c523eb3694f47ad8d79f6cbcbe3ddf0eed8d3c12f8632664",
146
+ "3170e99ff14afd2eee943acb21160fc8e0239ba3234b1067983fb3e652d16ad9",
127
147
  "31c7c50b67666e5f036d594c91e8ae66a2f312a220e84195269d4d7c67f28b71",
148
+ "31fab6e9b4250d23fdfcc81c9b6fc96c98c1a9c4267011be25c5445bed74e0b9",
128
149
  "321736562be8aee7022685afa739e76f6755d0a38f890b32c8aa786876201f18",
129
150
  "33e5f6b7feef11a99562bc321338dcef40a9940547a7fe22b814559527e88932",
130
151
  "33e6e01f67981cf6b4020218dfc4d87cfde7115bf205541fc2441b0876bcac2a",
131
152
  "3475b34e03725d5e8ea4f2e2fbecc60e1c3ad4a89167e1bb9a26d41640eccbd7",
132
153
  "34a09b8d6023ae5b858ec5135cae8efeabd921e3108e63e9627a222b188fe554",
154
+ "34a494444df9d11dea3e6f01868ed11ece52c322d7198ed2075ab2640da45266",
133
155
  "350aa6a3140d56a22cb4d5f2503f453ad238384150dc2b5e480fc626db33dfec",
156
+ "35782424442926d2fdc6128337e2f86ce681890ff7c2328dfe8475af009e6fea",
134
157
  "37f003566c80ead28d713e86bd6a877e2e3239302c884911f5144a896c291c17",
158
+ "39972d3dd19a7d771d2d3a5d083fddca6da1a22ad8ea27dbe70bbb4615ef2c94",
135
159
  "39af5b94a2734e4fc6c943b604fde4b0d798c4a2a7b1ffb5d053ab7f22488de3",
136
160
  "39c3033487667dc0020f9cb6c106afb000177294560be80d67b5020475aec3f6",
137
161
  "3c38ab8745dde6391d4dda47d74fe5f8cef410c28325d43dc0dd22e8cf4ab4a7",
138
162
  "3d5ebe5059b580afbf55f16003024a2b78214c7fe02240d22a13871c3c9c5d6f",
139
163
  "3e87f3023f1ee4810c769a27f63244a4c4825fa3c78417abd8a1a4bfb6350134",
164
+ "3efd55e3caac3e3488b81921446bc9ca4ec92ac766abbcfefafeb183b21464a1",
140
165
  "3f05e197006cf9715612c67cb8709690e053262e9a0702723e69798ad29a2c08",
166
+ "41323b1c12be256f604edf8c49ff505acbaa75b6a1b938b76286d5eebec1ce95",
141
167
  "41660630582e14f984686f201e6af130e29bbd3fadc3c76a3c6055a7a8f78c4f",
142
168
  "41d2ff119ff97961c64e5eb57632c2d04b22794b50eb9227506c4ed763ebca3f",
169
+ "4289d25b4cde8b257b57c559fd4c848b6f0f9f8e4133765c02e318fd632a5ad0",
143
170
  "4296dd9dd895ef73f7f5333506b5c680bf43ecb49899dd59e1330bc08321a531",
171
+ "43f175fbadb60e9392dba146010d5162e5a7f8999f82af509b7e050c05cd5ef4",
144
172
  "44ddff760db63fa64c11b8d7b991757542a3b8a352424f987414d2ab009ddeee",
145
173
  "45d23210821e7c6e0ca7a913c318fcd99a25f1f5c6fbec94fb352790f114b7a0",
146
174
  "47409008d40b54fcca9d06d2f02b3cb1e399d1b6cfd612c2c3f0d31d305d0621",
147
175
  "496090ec83bbdbe440289a1bc79d64f225aa30f7a84e8cac39a289a8bf3f40b0",
148
176
  "4b577b0ca5006944b42aa87a0c45f76eb1c371e0200e6287958c47369437a7ed",
149
177
  "4bbcb7fefd5366ed4151ce588e8482b747bdd85a7ecf795862a1c243218a162f",
178
+ "4be3b4c5e644ecc5ae41a86223d9d0bd3fd73f4d78e633528a49a8a87989dc3e",
150
179
  "4c3c4295f7cb794d0466f93886bf89b316382feafec68606385eb6b4c36eebbc",
151
180
  "4c4ee4b0948bc84b130c39b9846a5317ec76a6e3a8d95281a78e740192081662",
152
181
  "4cae665b0a714cd7b20b59ef356b53e21dec1cf4679458de2a23b5077bceafff",
182
+ "4d38758f5c5c00cf25a80c136329103d9a1a4ba80fbb4650465e2dced831c3e4",
153
183
  "4d42f91b8ff88de40921f825ec3a9aeeba30e85c7442ea2f8876b7c68555c39c",
154
184
  "4d756bc5c6a7c7ca1589efc6c340c75fb389699fe14d114aa211a29921e7effe",
155
185
  "4dcba526b49c91411d98925a7f638d990acea0f904ba8f143f195f7f99f85e33",
156
186
  "4e114313a6fbf27b89bebe7847f9aebb4ca2c61d23d167997efd459fa091e602",
187
+ "4e80a2a2797d5320ea96f785698b699a49fd69622bf00733edb8de67f46dd148",
157
188
  "4f6bf3fa8b8b706d234a7d5a3dda34e52ce1fcba68770aadf606c1717543bd5a",
158
189
  "50fe2edc6da214c0ae4bfce43d8d210f98ff15da2d2f9bca88269dab9a4ed179",
190
+ "51a7490d3c92e196373ec01bde05d8209426b765b6351dfe27449838c487f073",
191
+ "51f3b9f2ab795a0f73bdb10888c11519d1e47bccb883c15048898366d2d6a051",
192
+ "520d8aeba0a6cdea9550a580e1e596435af8b79ff1af7a26fa28e7e9460c78a7",
159
193
  "53a8f3196d2320ba46bf1299bfabb38dff495218bb47b35a43ac5072308f9deb",
160
194
  "54cdf7a05afb97642d06a0d8284f17d51fed5ce0fdcdac949655c47734802893",
161
195
  "55ff3f39ef7341cfb1e8b50271821d574eeddc455461d6df317caa9c5b55827f",
162
196
  "565b3481d42f039453771e9d72fb87d268ef8ca1df8255ddbcd60d3ec08f1d17",
163
197
  "5791164f8db2193d08400f98638ac6c3ab8999e18316527c8406245e8c902a0b",
198
+ "57fce2cb0a6e9ad1e9b7bb8a4c41345a43c591632aa8b5969104724ed9d63d78",
164
199
  "5879c70282a5c7f15af3d44993c5985991e1550aa892d5896c63cd7833b5a77d",
165
200
  "58abb824a9ec59fdf03abd03fcca79dd7d56953936e20533d6e1957778f3543d",
201
+ "5978dcb6e377cf64fe4865f68355d9f48bbf6f2fa19a2d89eb94e5eabbb1e813",
202
+ "5a12650a43b6a809a28ef665907740b90150fce895b4d4de4e5d7446a482f182",
166
203
  "5ad7118a8116ae2fea66b45dc6c59128b16f8e8000911f87acbcdba1525b9b68",
204
+ "5b82f9020d952e89ccf8803bce90dd5b9c38b39fa59a629349c9d15cc14c9597",
167
205
  "5c775bb62be74cec0b9f52520d89ac918872c3a65832c7eb120b5b4461b30854",
168
206
  "5da2a81f95f8697406622ac92c8ccb61537b90c74a99beb48905844394cdd93e",
207
+ "5dcd2f3c12ef8665788614439bc8a87f14b3c8ed6c2d779ec587ac304933d47a",
169
208
  "5e329ef8e25962ef0c9b29cf769fa1a92a82ab597ef29118961ff250eee76f70",
209
+ "5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
210
+ "5eaedae1a36f29150537ca51771c3ed19afadc72e08a304179c52454252ad312",
170
211
  "5ffc38dcb6fdccd02c03d67777b3a45ffc131883b61ce604dc8c9d74394dd739",
171
212
  "601518dee731c1966283001440827f4250beccc82bfb573d596e04eac45c1918",
172
213
  "6152799d5f13bb10d474f2498c0b5258da2ee5197819b67ff87716183711a59b",
214
+ "6167d215ef472ba8983c5e9c98ac2b8ae38148af484bf9ab5b510604481ccaa0",
173
215
  "62885f1b3145c2db1c43cf177136b66a96a3bffeed9d5f21ae030dd11ce0cbff",
174
216
  "62e6fd47df18ae64e990abb2961344564aa5ec6fc621ef29b98a7fbfc699eade",
217
+ "638585f17e6093b78a60d897759c98be26fc1f638d3986e5026716e11cc723c7",
175
218
  "64466f2e02790fabc286e2473824862a82b792f0f30443ec47c2d73b6798972f",
219
+ "64d7917277aed5b73764db6995682997319ecf84ce6baaa1a117506c78c58e03",
176
220
  "651baf0c8e411894a3f7f062ecb3899754c5b18b6fefa90c3a369d97b9053b76",
177
221
  "65be0ed583da62908bc6cff50a6276892deef26e13a2973547b3c2275f998215",
222
+ "67e66519c9ddea6dc18617bf2f9217f00de6e691f2e9189da86467cf53a71ba7",
178
223
  "68015de1a4488c72de9f89222511fc19a8f300ec34384e79f0472614f5f1d89e",
179
224
  "68c2c7120bbd720ed650d8f1ef4512cf7c3899eb7aa8f0c729eec0a5d3056edd",
180
225
  "69360e65a9a3598323719c0b212025eda2bad51fc936caebbab686aee72fe559",
181
226
  "6944b85b05112f427b40c2407a68f51acadb3d9f65c82afe5772780fc5bd47d1",
182
227
  "698aa7cde1345c04111a10d5fa1c78eec6ac8867185908f3705a875a5b3bb875",
183
228
  "69b0122066857d8b166ab5e94e162bf2479425760914ca6c05c655455b8f6e66",
229
+ "6a08a11aea6a1dfaa99823a73bc8730e8fff9c483ec8989aaeca669cfc7b3ed6",
184
230
  "6b287911edc5fa5f7792941de251b46d8ae8500553239b559f11292136e89e7a",
231
+ "6b65f3883cfca3d531ab716c069c88f3a7d964657c5e026bda25eacdb37f16c5",
232
+ "6c32954c006e1cbe92ca74656797f0165dbd55ca77a8873fa63737206e40b857",
185
233
  "6c7d2465dc68f1d040d5f3904f7d08622a0f2195de893635f5f359e72b9b2f5e",
186
234
  "6ce3f0a6ffffd02adb100b725b53ad6cacc2a133f38075e0103bfd854792b2dd",
187
235
  "6d55968e33c5b5d6e3a7efd67319584a16cd2ed3121bca9b5337f2abfd583566",
188
236
  "6dcd1ec9b76ba8cdb6af964b9eb6bb9e7a1e57b9a050501638d7f99b83ee878a",
189
237
  "6e32040ced878f6cd2a2fb3848d1b7ff43020244442b3f84349ccc063c96d191",
238
+ "6eda1f1ba7cfa0773c7248f51b449014ecc2d954b0dbb8e06d2e0476f41548fc",
190
239
  "6ee5b6030d798abf42b9cfc72a181c94215a1f5c219538a502d926996b1f8fef",
191
240
  "6f04a962b5ea29922a81fd4ac5402474a6c1320c2f660ce6c80837f0367575e7",
192
241
  "6f592236266c8c6256cdd7a352d4fec36316022005029b96859c6a65380b233f",
242
+ "6f9b366d18f73b72e6d66bc942a84126c60bed911faf834522c92fde7d12ad4c",
243
+ "7076c6738e6d3e2739680f57c9ab3c7522ec0b9ace00b663619bcd7370ce570a",
193
244
  "722cc953822fe6a46b182f787999d166920a6b3ad4bd71b57ea2bdc79590071a",
245
+ "7457d0f899bffbe34526b04f89673a3f84a9aaaa8c12f90d69e3cc261cd4cecf",
194
246
  "74d1a65b0689c3a4fb81c950c56f8b753a240f43ca336389aadc90c02fae13b9",
195
247
  "7608b1cabef6a327cd841f8c994301a12aa29e04a00fcd02d641a3ed6d619db7",
196
248
  "76517a747d47a3986b7181db4bbe5898ad3d6d82644ce39d8bf62edc998cecb9",
@@ -209,13 +261,23 @@
209
261
  "8954f0209ecdac5a48f68c9ba5da95840ba745aabfb3751c6c216a06d809d1c9",
210
262
  "897d0d57a5ab67b082a3fbaf078ac3e9c724acb033b6df35b8959ae28c26bc93",
211
263
  "8a612ad6038c31b74582cce2a2165c2be6be72e29db03dd2a2ab55d5a67d3055",
264
+ "8b0c46ab550956964233c24c188a68b9e054b9a250c17a7f7d3ac49dcc735798",
265
+ "8b5229a215f1b662c6da49a96f06bb7ec32e39c435100d49275272c25837fb47",
266
+ "8bfa724fab748a31d710b443ee13e4464369b7d5c82b9515ddb18df56132d671",
212
267
  "8c06bf7daf489571b342b7b4ba23b13f28cc5436e1b4694460e29962a7b63e8f",
213
268
  "8ce293fd80ec392803698f6564b995f6bbcb8fc6072dcc8a45b0b4afea989950",
214
269
  "8ec1424b49dbae25dcba6f7c220624a024e426f32a0fb1bb56b49cfb38ca4132",
270
+ "8f661ec0332ea9652b1d64fcf2f49d7fc74e74e640b9721215091b80336340d6",
215
271
  "8fcf65b36f913900c3383577658b5598d6dfedda065b8472bd1465edbe16598d",
272
+ "907b9aea6b6b8bc92c533e20959d36fdc4cb13555a1c7424da1a4d06dd54940d",
216
273
  "93139ffbcc58182fa3eaace0cf7a3b390ec022df48d2d868de5b0612539be43f",
274
+ "940314e942580968c7db9913998373fae2b4c7eb454a619f7dc5055d9f9f0da8",
217
275
  "94572b9eb51f7e043637fb65f5bcd4614c4298a3ff1da72d3b837f28e582816b",
276
+ "94f2a4a84eecf32eff88690fef58f842874597ab6891a1e76b08bd717ebe1e7d",
277
+ "95805d8d950e2e16ba18b2e7860aa2d12c2d7cb779f2b67e5ce3bfd3153aa7bb",
278
+ "977dc49a0f94b5ce9a9300d1751d30a87a7f9f14988ff1134db1755495014485",
218
279
  "97e49229fac2d3fcde65cb617c0d11df002ba61b0237ac270a536d086966f85d",
280
+ "98376af0fb1e33b5d4f7434a1045359330c8f8a44f19fd4e7c03a9190adc8f80",
219
281
  "9a736d01c0be8f37b2749dad83296aa85af28f9d02df1040fceee2f56800d02a",
220
282
  "9af7d2cfea6575731b38218b91f3cd80b0e92e16ab875e04f830f0251c1820ac",
221
283
  "9bd770d53f10157db148c3513852d4ae627c52a736b004984f8d84ccf8b1b91d",
@@ -224,40 +286,58 @@
224
286
  "9d9afeab8026b9bf7074febe07380d8ea7a9ef7168149e72ff8af93c1abee29b",
225
287
  "9e074e9e2c4302901a160f0ba121aa348b2a0e1e1313a2079aae289f2746de3e",
226
288
  "9e65019acb60433529160c929b840398fe6e5d72dcfd219cb79e69ba2d3cd5e9",
289
+ "9f105921480a9157deaad98839fee04bb52ae28f72a8efa6ddf78d658ec1b2b3",
227
290
  "9f62c5b2a94e8b5e81528ccbdb6f78d147d14882108568b2cb3b7f85212694c0",
291
+ "9f6d9ef148d5b4ab1e365bd7411a01a1d019ee241d9ed556bab5ee7499d79417",
228
292
  "a02eb2d8d77553327fb77377dbfedeab059b2e68e0a33c469b9be54a5d55182b",
293
+ "a10a5a7838269e918a14d99e09bf54162b7f5e460ff488d068e420aa63180af7",
294
+ "a12a5593a1725fceed3c52706a13ed6a72063f267e13696f0ce2a4bc50bb37b5",
229
295
  "a27ec7f5f0f0a2798e53695f20dc43fe28378d551fc060e2c772d0b522a336e5",
230
296
  "a3a15249968f64085b0cec8c0826688a4c3a1e4cf09b4879054baa086d5cbca1",
231
297
  "a4da26a46ab83815d8ca5d747c68a907ad67dad485adbc6c863b982ee23b307e",
232
298
  "a5d6ff585d696254d6727cd1e6d7f8825881f90210eff744265e211ced715ea3",
299
+ "a5f9cf621cf485e6247f664752e13929b4e52a0bbd3955cdd022c1af584b05ab",
233
300
  "a7ff913df40945a8a16b6632214020a368119ff665953d4a07ec58330b39f101",
301
+ "a9395efaa63038c24ffaed027b72acd6d67612a80f697e47fd440e3ddc16ef20",
234
302
  "aafc680a7ac73e100f4a17d2c4070190e68563f78614c39f4c2f58f1e291d9a9",
235
303
  "ab7f6d08d95cf1c22b7ec6e2e113158b7f767b73d8dde04fd1c3b33788922c93",
236
304
  "ac432d9179f245fec0beaf4010355613dcd6d476d8c9268c9cd430c98e73ff35",
305
+ "adcb46726c532fef32c4e420d305c2de9bd43b668fa5d0e7f00a570a6a426500",
306
+ "af35a3eee2e642bb1d32390efdcceb3de4558287e8b26d7c40df0e521cd00a3c",
237
307
  "af3a498714fecb29ebdc1e43e5cc0425efaf1c290130e6913cabd75fe4c9cc67",
238
308
  "af77f01317665c50815eb3cfefe481519efcc9c8b81bac06fc110abf723c7868",
309
+ "af96d41e6e6d2dce4d1038d71f0f68306fa8170d2c37c537c593778e558f3dc5",
310
+ "b069c869e8261c335a230abc5280680226310539f2c88d0981748232779ccf92",
311
+ "b07ae643b2e0acea880c9aeb137ced4994c110eaff49c4d2c4ec9acf7456ea8b",
312
+ "b30a7e52330cb528e990355934068a2dac3348cff7d1feca16d45749a80fcd15",
239
313
  "b3921b2317558010f99625aff30f3ed7a7a0dd4f37c586a6c4f9e1001e100134",
240
314
  "b3ac898e73c5b7923c1050bdbc36144dc6f4ad8bd9b83c8515394c418ef447ed",
315
+ "b47216b5373d7311644fbbbd84031fb9f4fc9cab95027408c4d570c06dbcbcff",
241
316
  "b61ff3e6723cff3138e0ec8a134796ceba89e8e92ebeedf489f27efb2c7b7308",
242
317
  "b80dfcc822578de4d16dafd7c574043304d0ffb07081f057b106a305dafd5715",
243
318
  "b973a4150a7803f88f863c28cd597cc375e07a6603b7c19c1a921c8f768faffe",
244
319
  "ba5832e597f0ec03182fa53b62c7cef1e858324e32f6fc875ca3e0cbb05b5043",
245
320
  "bba97d2b6986964c1f68e11e928cfaefae20a06b3d4a01108eaa19a9a871c6a9",
246
321
  "bddb4f88a0c11165b9cafe7a31027e9769313e1aee7c0a9ed9dad490e4fe1bcc",
322
+ "be11c198a50be2884c4c1efec52bbddff55c7547a5daf0ec2ef046279c95dc45",
247
323
  "bfdb7c7e4db21e1c452e730cecadc8e97abd317c6e54ae58c298f4288b1f1354",
324
+ "c1a1e9722a0f3c13c693eeaacdac8cc3d13d36d242f2bab58311170496ea4e2e",
248
325
  "c236da36a45d4013ffb7e131575229b605f662a30b5174f14754f519acc24252",
249
326
  "c276962617888c5ac2d352c5e2ed018c5ce9d00f199c73e1dd61438ec4a914fb",
250
327
  "c2e80f501e29074e625206b864b084138153be2c83e63cacb20d47f62dd82f95",
251
328
  "c30ca5296f3d86e32cc6402854fd788418f18522f6393739f915d7cbbac07f98",
252
329
  "c3ac943658e9b46ca3d6fd37c28d9fb0046c9e5c55b80bd3f4a2075ef034b3bc",
253
330
  "c487138f2084c8848b9b8139db0d023bc5bd5be9d23f362fa067a87cd4434df8",
331
+ "c4b86faf6aaf92338f4854d33502a9144a605356d5d6043a4319c65998aaa659",
254
332
  "c4ff44cfc1edcc2cc02eeeb9a71e8983ed424b39194cd223a311e7e2008e2d4f",
255
333
  "c5e84bc89a528d25424cc483c813429bc18a3e5c26ce08faa431bff5806ef347",
256
334
  "c69efc98cb9c2624f1c316e1e2fc2ff7bd571b56f2464d91ff26d8a53a121a8f",
257
335
  "c6f56fcaef8225a3c8bc51a989c0c8f7df60af5b1f5249b8ab8506d1dacb7a8b",
258
336
  "c71ec3ca963cb4b7ba17af0733c14b8f12a40f3eaaf7c5a38e547a93f55ed0fd",
259
337
  "c7beb627b08fa0ef03ce82a50f04264faf3b9c537f086fed8394413725df644d",
338
+ "c7c237437ad0d596729af187abd116cfb196f70ae416eb82ceeeaeab0ccdc855",
260
339
  "c8ad53d4b77a68110b0117fd4987045d51a18c8a898aa9f19937c69e338d123c",
340
+ "c8c41ebf06a97a07a2a7bd9b84eb87380a9e1ecfbbe467695869b6f3120557c9",
261
341
  "c9ac8adc629118280bf558eb1e03002d10f86edb4945db776d0a7b25861a98da",
262
342
  "c9cb893dbaaa9ce01e17b6a922ff540b8ef3a3cc137892ecb973ddfb2571a7fd",
263
343
  "ca5b15055913f9a606df9f09cbc4536b2f24258e25b568dbb16926248904d840",
@@ -270,17 +350,27 @@
270
350
  "cefad7acb7dcd92777f888081aa6585b1418aa581366736fd44db68b1bd66dd0",
271
351
  "cf43eb0460beebdfe1efbfb1a35a39e5fe450137252ea2c83e51d978faa1f17e",
272
352
  "d00bd5de007711de75b02c2602708aefac3715667dd924912296c219ff032e1e",
353
+ "d01281863338b4ca88c8af979296b5c92534053f270079ee508cdb0bc7810eca",
354
+ "d07f2a32bc75d6b25d60a5404db6fba52bc967bde80862484ed77cc7fdc8ce1f",
273
355
  "d189a2002b4ef0e858acb734c4ed14f6af6f0b7bb250b178f65d439369a9149a",
356
+ "d342ef78e480e86a51375142cc31797143e3ebd3dec52ab2f788530505f54fe0",
357
+ "d3df16f5c755d614c644ac33c397e6ece6b0d3ddc4b18de70d45b2b938311248",
274
358
  "d41692aa7577bbd85144fe73d111947f98e1304f4aceb891d712daa5907d550d",
275
359
  "d486a0b267c9425bde2cba737d802d2412a9b4b4b339e925500c1643327d2a3d",
360
+ "d496c0136a48c3ee3de3fd8dbed8e0ebc649d906c507722993b9c5833239d49b",
276
361
  "d5d8d02a1fb53cd28ed1c33e7184067b76defbfcc6cab9498b365dee35579013",
277
362
  "d75bdfc9cf08cfcb46214f69dac4f20b1a0a30b86d91127007fe587de9eaaeb0",
278
363
  "d768a149b5842e0d50eda941872188c8b29bcfb4b1aa0f4190fd4299f237fce0",
364
+ "d86e60d02c872b5552afb7a99499d3f3433c4ee3117a95bdbfb48d78b7cb72df",
279
365
  "d8c50cb04441e6b568236bc6cd494b4de296dfc7e8b33cf96e7aeb94612df3b8",
366
+ "d940c2df4cfffa42265e4f85e429762b99dd6d055c1658d782c7b472c6ebacd5",
280
367
  "da019f3edfb762b9216016a3ea9cf7211b2ba698a55ddda5cec2e478218b0288",
368
+ "db194ffd774757f9e0c373e36fc127f8c031a541f23bf9abfdcd935277b0318b",
281
369
  "ddb200267b43942de3c061b449d08cc3f73441258b74816cfe13da091377b428",
282
370
  "dff43f9976c68267baf13f6a460f24af8e76be233c8440ac4684dc664106deae",
371
+ "e031aef2a9adb0d0900e8269cf84c892f77b9938984e26df54826d1771861629",
283
372
  "e05f671dbf45aef8e7e4211195d46be8554c188d8df8899093359c414ffef2fe",
373
+ "e09e26bed82003847992909d860bc7d57fd12e34f68839508b59f6e14056399a",
284
374
  "e237f12ed08800ccc4c6eb4ae57cdd59d61198711f6a3b02dcb668aa08fddb93",
285
375
  "e289dbab99dadb30d8315b32b8243154148c82955f238936bce4c1fe1c3ae525",
286
376
  "e2bac40f3ff0b39726f95caaa9b19aa3b21596f165ac7a9dc68ebf42681d58cb",
@@ -288,13 +378,18 @@
288
378
  "e43e4b5b86044fbf7be8d7fd1e3e27cd2089bfc8243e07dc2c3fc034c19794ea",
289
379
  "e44015948c7d04e60f3fed7e348c2052538e7784d8fe7ea3edf9f52de07448dd",
290
380
  "e54b2aa51360267b8f397fb0d902e13af7ae1e3a9194dc7b83f8011fc1174f9d",
381
+ "e562f976c71f5e66f5a55c3eb0fc18a0aa5e6b443d41478117e6b58d58b7bcd1",
291
382
  "e60304667adad561168f4d49a6ace28e6dee00458824a18934a7fbadcc9ffe87",
292
383
  "e651b56abaf3714b11bf777a6b1852fb584eced5dc1ba9276fdc99d4947b0fcd",
293
384
  "e7b6acc92feeca083213584386a523d10a38f00bb37520e38237e2a867336a90",
294
385
  "e8fc2a1e576ab5040456c1bb42627a9a32677bd8b838168858ff2e50b04b6514",
295
386
  "eabde79c2815cd4156619b6057ae519cd6d853f8618a50148bb2139e5901750a",
387
+ "eae84c889dc07cd55106a4ef9d58a6048cf13795a6a3125962da9fdbc4d4c493",
388
+ "ecd1441f52e2606eed2f65e5a44fec96241efad764f7dd925ceabf12f9c7493a",
296
389
  "edc13409cbb9d5f8490db1b5dab2cce87d80f288a1b6831631063aed863713fb",
390
+ "efa2d941ac13cd2f71980a14bb46e1c304727012ee8eff783556bb9f7c091587",
297
391
  "efdaa126a2876e4e8d365f35e77ab1a2fbd7f35bf153edc8e2983e3b0809b159",
392
+ "f1103992e82ffb5c051e93a0ad38ef40ce143b9b9e7ef99a9ebea372607118ff",
298
393
  "f1c1d51c3774ba6954d970eeeeb89cfea67c84f9cd0a4dddc62ff4c0ed4933fb",
299
394
  "f1d90015427db879f4e68cf154fdd15a4a5ac714ee55f471e66116c8d8eb4487",
300
395
  "f47ac6855ee2491356424b56c281d5f2d6e871ad68ac4ac2e55f63d44707f2b0",
@@ -304,13 +399,16 @@
304
399
  "f7bccdcb0aeeb796996b3f245f11106af7a312248a198c516370bd97dfa7d681",
305
400
  "f82bc3883defb365100cb5b86b9a9a8ddcf5fa81c1eb83d657089190be44979d",
306
401
  "f8d3895ca1e8ff9197b21b37088e59b341668873be310a6661d93808b79dc3ef",
402
+ "fb04cabf9ddaa3b85bcd9217f6a816f6388b5b065a4887d5965335a81ef84fe6",
307
403
  "fb5190a3e4a8a4cece04d127c9ca4c7a67598f294f29941b08ef779ce60d9a6c",
308
404
  "fbab958f82d33ec1fc50eec993ad2790c96a06a121672095d6673977b244b9de",
309
405
  "fc222187397c3c6cfe0a9864e8449e9f365f396cbf26368cdfd955fae9ac164f",
310
406
  "fc5c3b053d38dcd91edeaef99ae8e308218563f10a66690b5fe1b5d12c42e42b",
311
407
  "fc813d93e760a69058c05fc0c9380f7dd09e3235cc22398a97ed2c1445eca29c",
312
408
  "fc98b9a7c2abdcc797b808459cea5ee0a1fdfcd95f24a8c0c38c0f4d920c77a7",
313
- "ffbd338af8a2b43cce01855c3d75582fe63e1bd1e60d9a62b70312afce30d331"
409
+ "fe77333774ef88faae6fa95402d7ced6f9caa18d6c97406aca0d934f5e700891",
410
+ "ffbd338af8a2b43cce01855c3d75582fe63e1bd1e60d9a62b70312afce30d331",
411
+ "ffd4b4af5ab9f5b4682e69a4a729df3dea59b98cc95e5724e0e4498e74a71e8d"
314
412
  ],
315
413
  "CLAUDE.md": [
316
414
  "00343e30ffbe497b405bfc956f52986fce298c1b162ec07831f06ae90d689369",
@@ -339,6 +437,7 @@
339
437
  "080051ed34915b572971d9fc734b95ba7a7984f6e799a7286055d41a7aeaa3b6",
340
438
  "0845abb4d59bce13c33c80b3292ba829bace0abe26d67a100a3bbc07e5db2b7d",
341
439
  "086b65c51d3342970968f4c3c6554a605b8740ed82809d26587cbd08f87d19f8",
440
+ "0a8be3a2fb2bd90dd48d9bfa1f1419f77a5378929f6b296c5332252e73c61d43",
342
441
  "0ab05e7ec571a8c899901514ab0655622817e8a77254ec2ec763fd78dad7f5bd",
343
442
  "0b45db686d97f33be4dc2b091ed259de534c2e3f97f8787574e722d2e86a0c1d",
344
443
  "0be26727b83829948ce23413a534c309a54dc7d238c8c1b232a31bbb26cb717c",
@@ -383,6 +482,7 @@
383
482
  "1c14e388ba39b4953aa51b2b73a92d287027f6849e25ee8725d9e3ea51f78fa1",
384
483
  "1c8eb04322ddd32ba3557b70d441e339d26159acb4b7361702177af607ecdf58",
385
484
  "1eb91782df82c7e317b7080d6caee3d8a3e638d3306b21c3dc1dbd8101179019",
485
+ "1f646b24267aeb362829ab0a63be6a9c43cad8621096f641675a774d3531bb6c",
386
486
  "1fa41c8a810b585535072b74f943a8570d942eb5617154353a5c8b6ebff4a2fb",
387
487
  "201b88453127e7a4dceb42a7ce6250812ed8a1aa00687c989d58741695ec8291",
388
488
  "20a6ad5c33b13bc791f34e1e414aadd5bf9b25383d21f0dde96a76cd9f45606a",
@@ -445,6 +545,7 @@
445
545
  "347019bc4c775fb46ff2fa68e8845b082aad6053b8e646c5f4aa5196a6a52f84",
446
546
  "34e0ff8adfd8d5088dcf09ef68a8f9d14d319b77115a5dc79b382dee1f7e451a",
447
547
  "35782424442926d2fdc6128337e2f86ce681890ff7c2328dfe8475af009e6fea",
548
+ "35b0cfdb6c727c658dc228e52e172061494bc0391479119fcff83a2f87e3fe6b",
448
549
  "35b1aa18fa6f90d3dac5b24aa9f54debf433857c694aa78f6bf122f4464480f5",
449
550
  "35d558ed31c5c53aeba50cd8c53f3d4fa8e2a8bc287f13a25a99944a8ebded29",
450
551
  "3610b254d617a02d9627f472a75326d11865f546c03df24e5acd6d047ba7d460",
@@ -540,6 +641,7 @@
540
641
  "5b82f9020d952e89ccf8803bce90dd5b9c38b39fa59a629349c9d15cc14c9597",
541
642
  "5d1183e08f92cb76c9fb41131742771101daebd65199b32050818a554e1ca185",
542
643
  "5d56b35a8b69aabc401bb42cf93f38d0eebcb1219f3a8a032e124c45d4e4b5d8",
644
+ "5dcd2f3c12ef8665788614439bc8a87f14b3c8ed6c2d779ec587ac304933d47a",
543
645
  "5dec4f3f015629b0c29c802b30a9e373c570fca85bb3e260c0dac9662d2685cd",
544
646
  "5dfd01e48b8b3eb9d6eec85d68624b2af0dd0eeb483307865ef88b0fc916bc97",
545
647
  "5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
@@ -564,6 +666,7 @@
564
666
  "6a27907ba14fae9ddcacd551007b783b2f813c51c118828c74fd2174e09a7d41",
565
667
  "6a5ea10aa15a05ac992bd118adc3c0de48c85cea504aef655065d9678f93717c",
566
668
  "6b26d02b3f87d53a964b6fe405992104dd2ee85f8c1b3048951ece574d9005a8",
669
+ "6b65f3883cfca3d531ab716c069c88f3a7d964657c5e026bda25eacdb37f16c5",
567
670
  "6b726d35cdc0851401769b6de9c422cfa475dbe7c0d036726706439a2cdbb02a",
568
671
  "6b87c5a061164bac137a5bd44056ae78101b7315e09502bc9156b806e1ef0c00",
569
672
  "6bd51d5724a2ca78115853583a363b15bf74632714aebb5a51962159110a03f8",
@@ -582,6 +685,7 @@
582
685
  "72c9862cb638431dadce3a7ea004ebe76fa6e8d9e94f40178a8ad7a8d479fd0a",
583
686
  "730165a8d5893eec0b5056de6c79e50bd35a98321b78fcb946273c075d06140b",
584
687
  "74099aa171aa5bd6c61bb213f1c3b6735beb4abcabc197e75744e5c2d88817a8",
688
+ "7457d0f899bffbe34526b04f89673a3f84a9aaaa8c12f90d69e3cc261cd4cecf",
585
689
  "746f71b4a75713b055c6691179b364dc0da582e226e97f40ae409d9f73ee0311",
586
690
  "75b022c464eacbb24bf6e5b225e8e6fb1f313869603c1695a95cc995ee2699e0",
587
691
  "75d8e47601bab4fd9935ec353e7ea2146dc52954bf9b490816f97a42ed7610cf",
@@ -593,6 +697,7 @@
593
697
  "7aaf7227bd67650944c709f4143b6b9161834d391e5cfd4aaeea105f5e840594",
594
698
  "7af6e9be693d906ba1f942430f46b288176e418d35eefb869d3cc35570e3daff",
595
699
  "7b47b07e3062f3dc839f11397bc3265120e01a35b0fda094d738e28a6729e6c3",
700
+ "7bb5c341115c56592c0d1b5903d01321ce9c324136bc53babf9d438389796d94",
596
701
  "7c0dacd603b4381539d6d3cf21f5fe625cf54b05eb4aa750fce658529b11d81d",
597
702
  "7c79750557c7d7156df6f135fb582ec09cc5f4987ac8e2af0f5113e42c117224",
598
703
  "7d083db061c678113c12453eb73299caa9e207dd6418ad63406154fd330f3309",
@@ -605,6 +710,7 @@
605
710
  "818e10a1244cf2aa6fe34f6d1a8f680c124ecb201ab4364a2021a215dc5533cb",
606
711
  "82319a758f8397ba30f13857b1d814bb0652bcc9bf527e25a4761e0d60d685bf",
607
712
  "8320d006c59b36ea9a6227b6ee32c9da72e565b610e862e41a7d409894b56d09",
713
+ "835fe46abd073f866a928d1cd6cc0af1ef76d485e070d4c0ba9b0c2d8c411df8",
608
714
  "83abc941a813a09a37feea1edaa0b6ae69d28bfd88844cb5a1f867254638a4d8",
609
715
  "841faeaab5635f2552e257a69ab9b39a03db25d40ca711a31ec30853a0f69d08",
610
716
  "855c1f988b0794e1f1b1a589b8f5860312317bec5570af5f7c49001884f486da",
@@ -612,6 +718,7 @@
612
718
  "85fa19a45def0b572cd7b9a8310e7997677f88e48879f85b82688f1ab65b3b8d",
613
719
  "8619e97c3712d7d83a1101629f8546d013f3d5542659053283e9dbc565e4bfc0",
614
720
  "866c65c557a855671f5cd24ea4b9acf76b87a6ede4f42cea10c21c2486b26848",
721
+ "868cec4966c5b4b22dd6cdec48c973224a8a9d0187b58b711db55024fe9ff80a",
615
722
  "86e67b1646b959e175eaa510b7aee00d642dfb645da979b5a264218174e64584",
616
723
  "870231faeb0a9c7adb66e8e6d20bd271e45d4d1e5fb58737d9cadcca4f42de2a",
617
724
  "871b119f7954a8751ce0cfc08a2655d10ba66e4a27c632a4285d8d4eb916269d",
@@ -626,6 +733,7 @@
626
733
  "8aa71cc3b1cff95ecf309049f4fc6f6dec3b8827272e0ec72d05cec9f9e2803f",
627
734
  "8acb7ff8fca15e6f4c9db052f3690b908804e2bc98a20ffc12c5caaef6c87b55",
628
735
  "8b417f12b79e7328ab8998bde222da856470a9fe2a5eff838c710d5fc66c850e",
736
+ "8bfa724fab748a31d710b443ee13e4464369b7d5c82b9515ddb18df56132d671",
629
737
  "8c89d0106c4051f7400670c2e83e6e3cfd95533b6d4d5f715124f28dbf41c37e",
630
738
  "8cff7c530e70102f9506012e91f305c306c56a6e68073f44aba74a827c87f679",
631
739
  "8d0079bdee4cf4dc86c1cca826f81584fe2c97db04514fdd666167df8b509979",
@@ -658,11 +766,13 @@
658
766
  "9dcfd026c98eda9dad08214f602187ac47b3388029a8e33d46c20d49a4f8b3a4",
659
767
  "9de043ab22d62e6227b220e5d6ef7628f08380ba629c4c72766c2ec5fbc7cd9f",
660
768
  "9e8649d414e65cdeaffab5090601cfbdfc91ba3a78626b66ca8fe85669acb3e7",
769
+ "9f105921480a9157deaad98839fee04bb52ae28f72a8efa6ddf78d658ec1b2b3",
661
770
  "9f60ff43c2eb53ef727b06a0958e6636e034ece04fd542f9deb4a94b14871432",
662
771
  "9fb2bb484494751d0888a37d0de4d1b72fb2efb5453a8b0204de9fc8254a4595",
663
772
  "a045cf85544fd3b3c71c6ff5da52656247b81a8d22828f1d01e677704859e6b4",
664
773
  "a04d86da6195f71926bee98cc812b61497a0948cd60e2b235712de2215af7d4b",
665
774
  "a053c180750405173ec7141081081d171df1aa74ef62a3c8854b6f7f61a9e659",
775
+ "a10a5a7838269e918a14d99e09bf54162b7f5e460ff488d068e420aa63180af7",
666
776
  "a219da47dd42cfbfcc808a6f00279ba87b2bbe1928ee009434bcb4ffa71e790d",
667
777
  "a292850ee0ceb0549d2e0cd50e48c8596594a509597f7210f59acbad7b45b475",
668
778
  "a2b7ab33386255547ecd6fce85b574d0354ef8e93d2bafb58e0cb77d7fee46b7",
@@ -692,6 +802,7 @@
692
802
  "ae165ed9dd87a9a0cc44e6aedecda36e7baf30f906387b6b61498b15024e6ebd",
693
803
  "aee00431c6f1093dabf9f28ac906e6769e6a637bd7029b260e20c44120470ca5",
694
804
  "af009f3b01fe6d41be46d0992a74c1a3d0681264b72a1a344cb14e787c770a65",
805
+ "af35a3eee2e642bb1d32390efdcceb3de4558287e8b26d7c40df0e521cd00a3c",
695
806
  "b0bfa637d2cae4be520471a45c0503f517400c6bf30cd394318fcd28b0bf6df1",
696
807
  "b240b9b48eb5404781c4985878ebb29781bd9cd8d943796ea545a043847a696d",
697
808
  "b248b5c31b014ad5505bca439a714a0834f9c57b7132f8b5077c4369cc49279a",
@@ -699,6 +810,7 @@
699
810
  "b306b9a953a3fb5a9e15315099b7fa31bdac076f17b66ebc9259141ab1a47e98",
700
811
  "b38536c283085dced3d955f6d4e44709c2bf5e64111dc7c637593e36415aabbe",
701
812
  "b5aee45614a24eed18f2e4bc840a8065c8143717b41259c0c6a6f5fcda10c55b",
813
+ "b5ed93204a83bd43b1514c92330d41f7e30696fbb78243c934abcb264a2158c0",
702
814
  "b5eefabd99457de1df2edbe78d22ee3967c18c83975657f17d15c18abb4df28e",
703
815
  "b6ca70dfc1111cd1a43bf89e2a46459af77dfce229922f148a6f289fdd650691",
704
816
  "b72e4d316502751c6e43d943580182ece074d509fd520c097f782e206239ceb9",
@@ -716,6 +828,7 @@
716
828
  "bb88e23401b6d11ef9a198107a30eed055c5d21b589738a3f74ddd39b4d76701",
717
829
  "bba69a83c7459bb44e4558051ead063003c7d152be222cbdb250008dbd9d64cf",
718
830
  "bc2ed35fa458e1fb26fd52c14220622c1f9d5dc95a69ab888209949f26400cf9",
831
+ "bc94dea221397fcfca8011c44d7b05790d60a51bbfe35f8d5bef4aaa1b3f3002",
719
832
  "bd222e31dc5ecfdd8f1539aaf9d13f7c5f454113e65924f78060dd0e92974653",
720
833
  "be11c198a50be2884c4c1efec52bbddff55c7547a5daf0ec2ef046279c95dc45",
721
834
  "be49c865c8b78d714cd68baeace35163cf96ecc5c7ed5c7e2a4d5f46c7b1a8e6",
@@ -766,8 +879,11 @@
766
879
  "d19be0bfb42f1790c5b6ca1937208eea906828ff2a4ca3db9898efec50ba6fd3",
767
880
  "d1da83f9946ab02cfad62623784b08a52f3f063976ab9b0c5e8a43131aa10078",
768
881
  "d230016fd8ff7318169ccafa4ac50d94d9b8191370bc8b13149d8d58bfced9d0",
882
+ "d313ee61489edaf0c72ee2e70ee3a46b534ffbc49f02404c4516073bf16d2c91",
769
883
  "d36ca232e2f764ac114976ac179955a798824a148ff5a8e11fdab96428a0aa86",
770
884
  "d37bd6a360ef6f6d4ebc51c3fa9190021a350b68539750aff77682a67b48bb90",
885
+ "d3df16f5c755d614c644ac33c397e6ece6b0d3ddc4b18de70d45b2b938311248",
886
+ "d496c0136a48c3ee3de3fd8dbed8e0ebc649d906c507722993b9c5833239d49b",
771
887
  "d4bd7c282f4e5566a8c3d3500683801cb36d7fe41cd7c385fa10c38755dd4aa5",
772
888
  "d52b18bf2bf26813548370212ba9eef13360679c97baae313b87d2b5dea4ea88",
773
889
  "d58f34824ea64c3bcacb13c797c8ea68623288bc0d5280d12fa0af27a511acb1",
@@ -851,11 +967,13 @@
851
967
  "fd12c4da9cc5df8a0b41e98e30e3a6bfcce31902f860be541145d77ed458dda8",
852
968
  "fd8befbc4061f2476c8edb97982043a7ce43caa4b3a529f472ae191f5d9b81fd",
853
969
  "fe0bac647b061b1974ab623fbacd72865d7aec39969e2f4585b939abbcb43d6a",
970
+ "fe77333774ef88faae6fa95402d7ced6f9caa18d6c97406aca0d934f5e700891",
854
971
  "ff03ba1ce6021d1d81f710084d8fdda61cd3a38c2e4f7252ae2eae94bb7ba5d9",
855
972
  "ff2b34264a111ea52124a016fe6fdba437ca5752a183a9a80b8d5abc9be6ba0f",
856
973
  "ff39e0c8a38e75a76c5abb3ae3ab87fd6c7aa75fc40b2b9e269d99aaca02b30e",
857
974
  "ff6cc2213ac0ba09985ec631ac5320fd356f783e373b6e8a347cb7f88fd14f5c",
858
- "ff7303737742c55a8806c655cab4a65abf3fc0fcf1f96b50a5a1a534ed3148ff"
975
+ "ff7303737742c55a8806c655cab4a65abf3fc0fcf1f96b50a5a1a534ed3148ff",
976
+ "ffd4b4af5ab9f5b4682e69a4a729df3dea59b98cc95e5724e0e4498e74a71e8d"
859
977
  ]
860
978
  }
861
979
  }
@@ -119,6 +119,18 @@ function instructionParagraphs(text) {
119
119
  return paragraphs;
120
120
  }
121
121
 
122
+ // Claude Code expands an `@AGENTS.md` import line, except inside a fenced code block.
123
+ function importsAgentsMd(text) {
124
+ let fence = null;
125
+ for (const line of text.replace(/^\uFEFF/, '').split(/\r?\n/)) {
126
+ const marker = /^ {0,3}(`{3,}|~{3,})/.exec(line)?.[1];
127
+ if (marker && !fence) fence = marker;
128
+ else if (marker && marker[0] === fence[0] && marker.length >= fence.length && /^ {0,3}(?:`+|~+)\s*$/.test(line)) fence = null;
129
+ else if (!fence && line.trimEnd() === '@AGENTS.md') return true;
130
+ }
131
+ return false;
132
+ }
133
+
122
134
  function customInstructions(text, name, template, managed = false) {
123
135
  const known = new Set([
124
136
  ...legacyTemplates.paragraphs[name],
@@ -143,6 +155,12 @@ function customInstructions(text, name, template, managed = false) {
143
155
  return bom + paragraphs.filter((_, index) => keep.has(index)).map((p) => p.text).join('');
144
156
  }
145
157
 
158
+ // Devlyn defaults in an instruction file: a managed block, or stock paragraphs of a template
159
+ // that a release before managed blocks copied in whole (the evidence migration replaces).
160
+ function holdsDevlynDefaults(name, text) {
161
+ return text.includes(BEGIN) || customInstructions(text, name, '') !== text;
162
+ }
163
+
146
164
  function retainFile(file, bytes) {
147
165
  for (const directory of [path.dirname(path.dirname(file)), path.dirname(file)]) {
148
166
  const stat = fs.lstatSync(directory, { throwIfNoEntry: false });
@@ -162,7 +180,9 @@ function retainFile(file, bytes) {
162
180
  }
163
181
  }
164
182
 
165
- function updateInstructions(name) {
183
+ // `withBlock` false removes the devlyn defaults the file holds, keeping everything else. `write` false writes nothing
184
+ // and returns whether the file needs an update, a merge included.
185
+ function updateInstructions(name, initial = '', withBlock = true, write = true) {
166
186
  const templatePath = path.join(__dirname, '..', name);
167
187
  const template = fs.readFileSync(templatePath, 'utf8');
168
188
  if (template.includes(BEGIN) || template.includes(END)) {
@@ -181,16 +201,18 @@ function updateInstructions(name) {
181
201
  throw new InstructionError(`Instruction file must be a regular file; preserved: ${dest}. Move it aside and rerun, then merge your shared rules outside the managed block.`);
182
202
  }
183
203
  const before = exists ? fs.readFileSync(dest) : Buffer.alloc(0);
184
- let current;
204
+ let current = initial;
185
205
  try {
186
- current = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(before);
206
+ if (exists) current = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(before);
187
207
  } catch (cause) {
188
208
  throw new InstructionError(`${name} must be UTF-8; original preserved. Convert its encoding and rerun installation.`, { cause });
189
209
  }
190
210
  const eol = current.match(/\r?\n/)?.[0] || '\n';
191
211
  const block = managedBlock(template, eol);
212
+ const inserted = withBlock ? block : '';
192
213
  const recovery = path.join(process.cwd(), '.devlyn', 'instructions');
193
214
  const conflict = (reason) => {
215
+ if (!write) return true;
194
216
  const incoming = path.join(recovery, `${name}.${digest(block)}.incoming`);
195
217
  const backup = path.join(recovery, `${name}.${digest(before)}.backup`);
196
218
  const guide = path.join(recovery, `${name}.${digest(before)}.${digest(block)}.merge.md`);
@@ -225,8 +247,11 @@ function updateInstructions(name) {
225
247
  const custom = digest(normalize(previous)) === start[1] ? ''
226
248
  : customInstructions(previous, name,
227
249
  'Project-specific instructions outside this managed block take precedence over these defaults.\n\n' + template, true);
250
+ const after = current.slice(end.index + end[0].length);
228
251
  content = current.slice(0, start.index + (start[0].startsWith('\uFEFF') ? 1 : 0))
229
- + custom + (custom ? eol : '') + block + current.slice(end.index + end[0].length);
252
+ + custom + (custom ? eol : '') + inserted + after;
253
+ // A block removed from the end takes along the blank lines that set it apart.
254
+ if (!inserted && !after) content = content.replace(/(\r?\n)(?:\r?\n)+$/, '$1');
230
255
  } else {
231
256
  const normalized = normalize(template);
232
257
  const bodyStart = normalized.indexOf('## North Star\n');
@@ -240,14 +265,15 @@ function updateInstructions(name) {
240
265
  if (ranges.length === 1 && !LEGACY.test(current.slice(0, ranges[0].start)
241
266
  + ranges[0].custom + current.slice(ranges[0].end))) {
242
267
  const { start, end, custom } = ranges[0];
243
- content = current.slice(0, start) + custom + block + current.slice(end);
268
+ content = current.slice(0, start) + custom + inserted + current.slice(end);
244
269
  } else {
245
270
  const custom = customInstructions(current, name, template);
246
- content = custom + (custom ? eol + eol : '') + block;
271
+ content = custom + (custom && inserted ? eol + eol : '') + inserted;
247
272
  }
248
273
  }
249
274
  const bytes = Buffer.from(content);
250
275
  if (bytes.equals(before)) return false;
276
+ if (!write) return true;
251
277
  if (exists) {
252
278
  const backup = path.join(recovery, `${name}.${digest(before)}.backup`);
253
279
  retainFile(backup, before);
@@ -264,8 +290,9 @@ function updateInstructions(name) {
264
290
  } finally {
265
291
  if (fs.existsSync(temp)) fs.unlinkSync(temp);
266
292
  }
267
- console.log(` → Updated Devlyn defaults in ${name}; project-specific instructions preserved`);
293
+ console.log(!exists ? ` → Created ${name}`
294
+ : ` → ${withBlock ? 'Updated Devlyn defaults in' : 'Removed Devlyn defaults from'} ${name}; project-specific instructions preserved`);
268
295
  return true;
269
296
  }
270
297
 
271
- module.exports = { updateInstructions, InstructionError, instructionParagraphs };
298
+ module.exports = { updateInstructions, InstructionError, instructionParagraphs, holdsDevlynDefaults, importsAgentsMd };