rosett-ai 1.3.3 → 1.5.9

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 (453) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +398 -22
  3. data/README.md +56 -42
  4. data/bin/raictl +13 -0
  5. data/conf/adopt_redactions.yml +2 -0
  6. data/conf/compliance/cra_rules.yml +2 -0
  7. data/conf/compliance/license_rules.yml +2 -0
  8. data/conf/mcp/server_defaults.yml +2 -0
  9. data/conf/mcp/trust.yml +1 -0
  10. data/conf/packaging/core.yml +2 -0
  11. data/conf/packaging/gtk4.yml +2 -0
  12. data/conf/packaging/qt6.yml +2 -0
  13. data/conf/policy/default_deny_list.yml +2 -0
  14. data/conf/review/cli-command-audit.yml +2 -0
  15. data/conf/review/design-docs.yml +2 -0
  16. data/conf/review/design-questionnaire.yml +2 -0
  17. data/conf/review/questionnaire.yml +2 -0
  18. data/conf/review/rosett-ai-core.yml +2 -0
  19. data/conf/schemas/ai_config_schema.json +14 -2
  20. data/conf/schemas/autoqueue.schema.json +153 -0
  21. data/conf/schemas/behaviour_schema.json +31 -7
  22. data/conf/schemas/compliance_rule_schema.json +17 -4
  23. data/conf/schemas/content_pack_manifest_schema.json +23 -4
  24. data/conf/schemas/design_schema.json +177 -42
  25. data/conf/schemas/engine_manifest_schema.json +22 -5
  26. data/conf/schemas/lockfile_schema.json +26 -4
  27. data/conf/schemas/mcp_server_schema.json +50 -9
  28. data/conf/schemas/packaging_schema.json +23 -5
  29. data/conf/schemas/policy_schema.json +35 -9
  30. data/conf/schemas/provenance_schema.json +33 -5
  31. data/conf/schemas/rai_config_schema.json +6 -2
  32. data/conf/schemas/rai_project_schema.json +8 -2
  33. data/conf/schemas/scope_hierarchy_schema.json +22 -5
  34. data/conf/schemas/target_schema.json +33 -6
  35. data/conf/schemas/tooling_schema.json +53 -12
  36. data/conf/schemas/workflow_schema.json +39 -9
  37. data/conf/targets/agents_md.yml +1 -0
  38. data/conf/targets/claude.yml +2 -0
  39. data/conf/tooling/tools.yml +2 -0
  40. data/lib/rosett_ai/adopter/local_analysis_collector.rb +5 -0
  41. data/lib/rosett_ai/adopter/rule_adopter.rb +40 -0
  42. data/lib/rosett_ai/ai_config/context_window.rb +3 -0
  43. data/lib/rosett_ai/ai_config/cost_controls.rb +1 -0
  44. data/lib/rosett_ai/ai_config/fallback_chain.rb +1 -0
  45. data/lib/rosett_ai/ai_config/model_router.rb +1 -0
  46. data/lib/rosett_ai/ai_config/validator.rb +2 -0
  47. data/lib/rosett_ai/authorship/attribution_compiler.rb +1 -0
  48. data/lib/rosett_ai/authorship/disclosure_policy.rb +2 -0
  49. data/lib/rosett_ai/authorship/review_validator.rb +1 -0
  50. data/lib/rosett_ai/authorship/trailer_generator.rb +1 -0
  51. data/lib/rosett_ai/backup/compressor.rb +3 -0
  52. data/lib/rosett_ai/backup/destination.rb +1 -0
  53. data/lib/rosett_ai/behaviour/manager.rb +1 -0
  54. data/lib/rosett_ai/compiler/backend.rb +3 -0
  55. data/lib/rosett_ai/compiler/backends/agents_md_backend.rb +1 -0
  56. data/lib/rosett_ai/compiler/backends/claude_backend.rb +1 -0
  57. data/lib/rosett_ai/compiler/behaviour_compiler.rb +1 -0
  58. data/lib/rosett_ai/compiler/compilation_pipeline.rb +1 -7
  59. data/lib/rosett_ai/compiler/locale_compiler.rb +2 -0
  60. data/lib/rosett_ai/compiler/target_profile.rb +11 -0
  61. data/lib/rosett_ai/completion/generator.rb +2 -0
  62. data/lib/rosett_ai/completion/shells/zsh_generator.rb +1 -0
  63. data/lib/rosett_ai/comply/checkers/cra_checker.rb +1 -0
  64. data/lib/rosett_ai/comply/checkers/license_checker.rb +2 -0
  65. data/lib/rosett_ai/comply/checkers/spdx_header_checker.rb +4 -0
  66. data/lib/rosett_ai/comply/runner.rb +2 -0
  67. data/lib/rosett_ai/composition/composer.rb +1 -0
  68. data/lib/rosett_ai/composition/lockfile.rb +1 -0
  69. data/lib/rosett_ai/composition/merge_strategy.rb +1 -0
  70. data/lib/rosett_ai/config/masking_secret_resolver.rb +9 -0
  71. data/lib/rosett_ai/config/secret_resolver.rb +4 -0
  72. data/lib/rosett_ai/configuration.rb +4 -0
  73. data/lib/rosett_ai/content/content_client.rb +15 -0
  74. data/lib/rosett_ai/content/pack_installer.rb +1 -0
  75. data/lib/rosett_ai/content/pack_manifest.rb +21 -0
  76. data/lib/rosett_ai/content_packs/manager.rb +1 -0
  77. data/lib/rosett_ai/dbus/compositor_detector.rb +2 -0
  78. data/lib/rosett_ai/dbus/focus_adapters/base.rb +1 -0
  79. data/lib/rosett_ai/dbus/focus_adapters/gnome_adapter.rb +5 -0
  80. data/lib/rosett_ai/dbus/focus_adapters/hyprland_adapter.rb +4 -0
  81. data/lib/rosett_ai/dbus/focus_adapters/i3_adapter.rb +4 -0
  82. data/lib/rosett_ai/dbus/focus_adapters/kwin_adapter.rb +4 -0
  83. data/lib/rosett_ai/dbus/focus_adapters/x11_adapter.rb +4 -0
  84. data/lib/rosett_ai/dbus/focus_monitor_interface.rb +1 -0
  85. data/lib/rosett_ai/dbus/manager_interface.rb +1 -0
  86. data/lib/rosett_ai/dbus/plugin_manager_interface.rb +2 -0
  87. data/lib/rosett_ai/dbus/rate_limiter.rb +1 -0
  88. data/lib/rosett_ai/dbus/service.rb +3 -0
  89. data/lib/rosett_ai/dbus/status_notifier_interface.rb +14 -0
  90. data/lib/rosett_ai/desktop/dbus_client.rb +6 -0
  91. data/lib/rosett_ai/desktop/gtk4_app.rb +3 -0
  92. data/lib/rosett_ai/desktop/gtk4_preferences.rb +1 -0
  93. data/lib/rosett_ai/desktop/gui_logger.rb +2 -0
  94. data/lib/rosett_ai/doctor/check.rb +1 -1
  95. data/lib/rosett_ai/doctor/checks/cache_health_check.rb +1 -0
  96. data/lib/rosett_ai/doctor.rb +1 -0
  97. data/lib/rosett_ai/documentation/reference_compiler.rb +9 -0
  98. data/lib/rosett_ai/documentation/translator.rb +8 -0
  99. data/lib/rosett_ai/engines/base_config_compiler.rb +71 -1
  100. data/lib/rosett_ai/engines/detector.rb +5 -0
  101. data/lib/rosett_ai/engines/registry.rb +7 -0
  102. data/lib/rosett_ai/exit_codes.rb +6 -0
  103. data/lib/rosett_ai/formatting.rb +1 -0
  104. data/lib/rosett_ai/gem_consistency_checker.rb +6 -0
  105. data/lib/rosett_ai/git_hooks/chain_detector.rb +1 -0
  106. data/lib/rosett_ai/git_hooks/installer.rb +4 -0
  107. data/lib/rosett_ai/git_hooks/script_generator.rb +2 -0
  108. data/lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb +6 -0
  109. data/lib/rosett_ai/i18n/utf8_checker.rb +1 -0
  110. data/lib/rosett_ai/init/config_file_writer.rb +4 -0
  111. data/lib/rosett_ai/init/directory_builder.rb +15 -0
  112. data/lib/rosett_ai/init/file_copier.rb +51 -0
  113. data/lib/rosett_ai/init/mcp_registrar.rb +1 -0
  114. data/lib/rosett_ai/init/project_initializer.rb +1 -0
  115. data/lib/rosett_ai/licensing/license_key.rb +4 -0
  116. data/lib/rosett_ai/licensing/license_store.rb +11 -0
  117. data/lib/rosett_ai/licensing/tier.rb +9 -0
  118. data/lib/rosett_ai/mcp/admin/auditor.rb +1 -0
  119. data/lib/rosett_ai/mcp/admin/health_checker.rb +1 -0
  120. data/lib/rosett_ai/mcp/admin/registry.rb +1 -0
  121. data/lib/rosett_ai/mcp/enforcement/hook_generator.rb +27 -4
  122. data/lib/rosett_ai/mcp/enforcement/validator.rb +24 -3
  123. data/lib/rosett_ai/mcp/governance.rb +9 -0
  124. data/lib/rosett_ai/mcp/http_security_config.rb +22 -0
  125. data/lib/rosett_ai/mcp/key_hasher.rb +4 -2
  126. data/lib/rosett_ai/mcp/keyfile.rb +4 -0
  127. data/lib/rosett_ai/mcp/middleware/cors.rb +4 -0
  128. data/lib/rosett_ai/mcp/middleware/origin_validation.rb +1 -0
  129. data/lib/rosett_ai/mcp/middleware/rate_limit.rb +3 -0
  130. data/lib/rosett_ai/mcp/plugins.rb +1 -0
  131. data/lib/rosett_ai/mcp/prompts/compilation_prompt.rb +2 -0
  132. data/lib/rosett_ai/mcp/prompts/compliance_prompt.rb +3 -0
  133. data/lib/rosett_ai/mcp/prompts/diagnostics_prompt.rb +2 -0
  134. data/lib/rosett_ai/mcp/prompts/validation_prompt.rb +2 -0
  135. data/lib/rosett_ai/mcp/resources/behaviour_resource.rb +2 -0
  136. data/lib/rosett_ai/mcp/resources/config_resource.rb +2 -0
  137. data/lib/rosett_ai/mcp/resources/design_resource.rb +1 -0
  138. data/lib/rosett_ai/mcp/resources/hooks_resource.rb +3 -0
  139. data/lib/rosett_ai/mcp/resources/provenance_resource.rb +2 -0
  140. data/lib/rosett_ai/mcp/resources/rules_resource.rb +1 -0
  141. data/lib/rosett_ai/mcp/resources/schema_resource.rb +1 -0
  142. data/lib/rosett_ai/mcp/server.rb +7 -1
  143. data/lib/rosett_ai/mcp/settings/trust_manager.rb +3 -0
  144. data/lib/rosett_ai/mcp/tools/adopt_tool.rb +4 -0
  145. data/lib/rosett_ai/mcp/tools/backup_tool.rb +4 -0
  146. data/lib/rosett_ai/mcp/tools/behaviour_display_tool.rb +4 -0
  147. data/lib/rosett_ai/mcp/tools/behaviour_list_tool.rb +3 -0
  148. data/lib/rosett_ai/mcp/tools/behaviour_manage_tool.rb +5 -0
  149. data/lib/rosett_ai/mcp/tools/behaviour_show_tool.rb +4 -0
  150. data/lib/rosett_ai/mcp/tools/compile_status_tool.rb +4 -0
  151. data/lib/rosett_ai/mcp/tools/compile_tool.rb +4 -0
  152. data/lib/rosett_ai/mcp/tools/comply_tool.rb +4 -0
  153. data/lib/rosett_ai/mcp/tools/config_compile_tool.rb +4 -0
  154. data/lib/rosett_ai/mcp/tools/config_status_tool.rb +3 -0
  155. data/lib/rosett_ai/mcp/tools/content_tool.rb +5 -0
  156. data/lib/rosett_ai/mcp/tools/context_query_tool.rb +4 -0
  157. data/lib/rosett_ai/mcp/tools/design_list_tool.rb +3 -0
  158. data/lib/rosett_ai/mcp/tools/design_show_tool.rb +4 -0
  159. data/lib/rosett_ai/mcp/tools/doctor_tool.rb +4 -0
  160. data/lib/rosett_ai/mcp/tools/documentation_status_tool.rb +3 -0
  161. data/lib/rosett_ai/mcp/tools/engines_tool.rb +5 -0
  162. data/lib/rosett_ai/mcp/tools/hook_install_tool.rb +7 -0
  163. data/lib/rosett_ai/mcp/tools/hook_preview_tool.rb +33 -8
  164. data/lib/rosett_ai/mcp/tools/hooks_status_tool.rb +5 -0
  165. data/lib/rosett_ai/mcp/tools/init_tool.rb +5 -0
  166. data/lib/rosett_ai/mcp/tools/license_status_tool.rb +3 -0
  167. data/lib/rosett_ai/mcp/tools/project_tool.rb +5 -0
  168. data/lib/rosett_ai/mcp/tools/provenance_tool.rb +5 -0
  169. data/lib/rosett_ai/mcp/tools/provenance_write_tool.rb +3 -0
  170. data/lib/rosett_ai/mcp/tools/retrofit_tool.rb +5 -0
  171. data/lib/rosett_ai/mcp/tools/rule_search_tool.rb +4 -0
  172. data/lib/rosett_ai/mcp/tools/schema_get_tool.rb +5 -0
  173. data/lib/rosett_ai/mcp/tools/tooling_tool.rb +5 -0
  174. data/lib/rosett_ai/mcp/tools/validate_tool.rb +4 -0
  175. data/lib/rosett_ai/mcp/tools/workflow_execute_tool.rb +4 -0
  176. data/lib/rosett_ai/mcp/tools/workflow_tool.rb +5 -0
  177. data/lib/rosett_ai/migration/detector.rb +1 -0
  178. data/lib/rosett_ai/migration/nncc_config_migrator.rb +2 -0
  179. data/lib/rosett_ai/migration/xdg_migrator.rb +3 -1
  180. data/lib/rosett_ai/package_manager/apt.rb +5 -0
  181. data/lib/rosett_ai/package_manager/base.rb +1 -0
  182. data/lib/rosett_ai/package_manager/gem_backend.rb +1 -0
  183. data/lib/rosett_ai/packaging/variant_config.rb +12 -0
  184. data/lib/rosett_ai/plugins/contract.rb +1 -0
  185. data/lib/rosett_ai/plugins/engine_contract.rb +2 -0
  186. data/lib/rosett_ai/plugins/gui_contract.rb +2 -0
  187. data/lib/rosett_ai/plugins/mcp_contract.rb +2 -0
  188. data/lib/rosett_ai/plugins/registry.rb +10 -0
  189. data/lib/rosett_ai/policy/auditor.rb +1 -0
  190. data/lib/rosett_ai/policy/opt_out_scanner.rb +1 -0
  191. data/lib/rosett_ai/policy/tier_hierarchy.rb +2 -0
  192. data/lib/rosett_ai/policy/validator.rb +1 -0
  193. data/lib/rosett_ai/profiler.rb +7 -0
  194. data/lib/rosett_ai/project/drift_detector.rb +1 -0
  195. data/lib/rosett_ai/project/manager.rb +1 -0
  196. data/lib/rosett_ai/project/template_applier.rb +1 -0
  197. data/lib/rosett_ai/provenance/entry.rb +2 -0
  198. data/lib/rosett_ai/provenance/source.rb +1 -0
  199. data/lib/rosett_ai/provenance/store.rb +3 -0
  200. data/lib/rosett_ai/provenance/validator.rb +1 -0
  201. data/lib/rosett_ai/quorum/collector.rb +1 -0
  202. data/lib/rosett_ai/quorum/comparator.rb +2 -0
  203. data/lib/rosett_ai/quorum/strategies/adopt.rb +1 -0
  204. data/lib/rosett_ai/rai_config.rb +9 -0
  205. data/lib/rosett_ai/retrofit/engine.rb +2 -0
  206. data/lib/rosett_ai/retrofit/parsers/agents_md_parser.rb +8 -0
  207. data/lib/rosett_ai/retrofit/parsers/claude_parser.rb +10 -0
  208. data/lib/rosett_ai/retrofit/parsers/cursor_parser.rb +9 -0
  209. data/lib/rosett_ai/retrofit/secret_detector.rb +3 -0
  210. data/lib/rosett_ai/secrets_resolver.rb +1 -0
  211. data/lib/rosett_ai/session_hooks/installer.rb +130 -0
  212. data/lib/rosett_ai/smart_feedback/suggester.rb +4 -0
  213. data/lib/rosett_ai/smart_feedback/thor_middleware.rb +7 -0
  214. data/lib/rosett_ai/structured_logger.rb +1 -0
  215. data/lib/rosett_ai/telemetry/log_rotator.rb +1 -0
  216. data/lib/rosett_ai/telemetry.rb +1 -0
  217. data/lib/rosett_ai/thor/cli.rb +9 -0
  218. data/lib/rosett_ai/thor/tasks/adopt.rb +2 -0
  219. data/lib/rosett_ai/thor/tasks/backfill_user_yml.rb +207 -0
  220. data/lib/rosett_ai/thor/tasks/backup.rb +6 -0
  221. data/lib/rosett_ai/thor/tasks/behaviour.rb +12 -0
  222. data/lib/rosett_ai/thor/tasks/build.rb +87 -4
  223. data/lib/rosett_ai/thor/tasks/compile.rb +76 -32
  224. data/lib/rosett_ai/thor/tasks/completion.rb +9 -0
  225. data/lib/rosett_ai/thor/tasks/comply.rb +2 -0
  226. data/lib/rosett_ai/thor/tasks/config.rb +21 -5
  227. data/lib/rosett_ai/thor/tasks/content.rb +8 -0
  228. data/lib/rosett_ai/thor/tasks/dbus.rb +13 -0
  229. data/lib/rosett_ai/thor/tasks/design.rb +2 -0
  230. data/lib/rosett_ai/thor/tasks/desktop.rb +4 -0
  231. data/lib/rosett_ai/thor/tasks/doctor.rb +2 -0
  232. data/lib/rosett_ai/thor/tasks/documentation.rb +7 -0
  233. data/lib/rosett_ai/thor/tasks/engines.rb +8 -0
  234. data/lib/rosett_ai/thor/tasks/hooks.rb +8 -0
  235. data/lib/rosett_ai/thor/tasks/init.rb +1 -0
  236. data/lib/rosett_ai/thor/tasks/license.rb +8 -0
  237. data/lib/rosett_ai/thor/tasks/mcp.rb +40 -0
  238. data/lib/rosett_ai/thor/tasks/migrate.rb +2 -0
  239. data/lib/rosett_ai/thor/tasks/plugins.rb +15 -0
  240. data/lib/rosett_ai/thor/tasks/project.rb +8 -0
  241. data/lib/rosett_ai/thor/tasks/provenance.rb +8 -0
  242. data/lib/rosett_ai/thor/tasks/release.rb +8 -0
  243. data/lib/rosett_ai/thor/tasks/retrofit.rb +4 -0
  244. data/lib/rosett_ai/thor/tasks/validate.rb +1 -0
  245. data/lib/rosett_ai/thor/tasks/workflow.rb +14 -0
  246. data/lib/rosett_ai/tooling/version_checker.rb +1 -0
  247. data/lib/rosett_ai/ui/accessible_tui.rb +18 -0
  248. data/lib/rosett_ai/ui/base.rb +3 -0
  249. data/lib/rosett_ai/ui/gtk4.rb +19 -0
  250. data/lib/rosett_ai/ui/kde.rb +1 -0
  251. data/lib/rosett_ai/ui/qt6.rb +1 -0
  252. data/lib/rosett_ai/ui/registry.rb +15 -0
  253. data/lib/rosett_ai/ui/tui.rb +22 -0
  254. data/lib/rosett_ai/validators/behaviour_validator.rb +1 -0
  255. data/lib/rosett_ai/validators/design_validator.rb +2 -0
  256. data/lib/rosett_ai/validators/schema_validator.rb +4 -0
  257. data/lib/rosett_ai/validators/tooling_validator.rb +1 -0
  258. data/lib/rosett_ai/version.rb +2 -1
  259. data/lib/rosett_ai/version_consistency_checker.rb +6 -0
  260. data/lib/rosett_ai/workflow/engine.rb +1 -0
  261. data/lib/rosett_ai/workflow/manager.rb +1 -0
  262. data/lib/rosett_ai/workflow/schema_validator.rb +2 -0
  263. data/lib/rosett_ai/workflow/step_runner.rb +1 -0
  264. data/lib/rosett_ai/workflow/steps/rai_step.rb +1 -0
  265. data/lib/rosett_ai/yaml_loader.rb +2 -0
  266. data/lib/rosett_ai.rb +2 -0
  267. data/lib/scripts/generated/docker_hub_tags.rb +2 -0
  268. data/locales/ar.yml +2 -0
  269. data/locales/en.yml +5 -0
  270. data/locales/fr.yml +2 -0
  271. metadata +9 -189
  272. data/.ai-provenance.yml +0 -119
  273. data/.debride_whitelist +0 -186
  274. data/.fasterer.yml +0 -29
  275. data/.mdl_style.rb +0 -10
  276. data/.mdlrc +0 -3
  277. data/.mutant.yml +0 -49
  278. data/.namespace-allowlist +0 -42
  279. data/.reek.yml +0 -1040
  280. data/.rosett-ai/config.yml +0 -3
  281. data/.rspec +0 -5
  282. data/.rubocop.yml +0 -380
  283. data/.ruby-version +0 -1
  284. data/.yamllint +0 -51
  285. data/.yardopts +0 -12
  286. data/AI-DISCLOSURE.md +0 -48
  287. data/CLAUDE.md +0 -141
  288. data/CONTRIBUTING.md +0 -734
  289. data/INSTALL.md +0 -154
  290. data/LICENSE.md +0 -675
  291. data/QUICKSTART.md +0 -73
  292. data/Rakefile +0 -200
  293. data/SECURITY.md +0 -114
  294. data/cliff.toml +0 -52
  295. data/conf/behaviour/.gitkeep +0 -0
  296. data/conf/design/aaif_alignment.yml +0 -181
  297. data/conf/design/ab_testing.yml +0 -172
  298. data/conf/design/accessibility.yml +0 -84
  299. data/conf/design/ai_authorship.yml +0 -210
  300. data/conf/design/ai_provenance.yml +0 -224
  301. data/conf/design/ai_tool_configuration.yml +0 -207
  302. data/conf/design/architecture.yml +0 -139
  303. data/conf/design/autocompletion.yml +0 -115
  304. data/conf/design/backward_compatibility.yml +0 -112
  305. data/conf/design/behaviour_composition.yml +0 -246
  306. data/conf/design/build_rake_extraction.yml +0 -57
  307. data/conf/design/ci_pipeline.yml +0 -100
  308. data/conf/design/claude_code_configuration.yml +0 -157
  309. data/conf/design/compiler.yml +0 -128
  310. data/conf/design/comply.yml +0 -153
  311. data/conf/design/content_packs.yml +0 -84
  312. data/conf/design/desktop_integration.yml +0 -289
  313. data/conf/design/distribution.yml +0 -216
  314. data/conf/design/doctor.yml +0 -184
  315. data/conf/design/documentation.yml +0 -152
  316. data/conf/design/engine_architecture.yml +0 -257
  317. data/conf/design/error_handling.yml +0 -103
  318. data/conf/design/feature_flags.yml +0 -142
  319. data/conf/design/git_hooks.yml +0 -165
  320. data/conf/design/gui_plugins.yml +0 -475
  321. data/conf/design/i18n.yml +0 -84
  322. data/conf/design/integration_testing.yml +0 -56
  323. data/conf/design/licensing_system.yml +0 -88
  324. data/conf/design/lifecycle_management.yml +0 -208
  325. data/conf/design/mcp_integration.yml +0 -207
  326. data/conf/design/mcp_settings.yml +0 -126
  327. data/conf/design/migration.yml +0 -56
  328. data/conf/design/monitoring_observability.yml +0 -194
  329. data/conf/design/namespace_cleanup.yml +0 -145
  330. data/conf/design/plugin_test_segregation.yml +0 -145
  331. data/conf/design/policy_management.yml +0 -229
  332. data/conf/design/project_management.yml +0 -183
  333. data/conf/design/rai_mcp_asset_discovery.yml +0 -164
  334. data/conf/design/rai_mcp_server.yml +0 -605
  335. data/conf/design/release_management.yml +0 -117
  336. data/conf/design/retrofit.yml +0 -199
  337. data/conf/design/retrospective_analyzer.yml +0 -79
  338. data/conf/design/scope_hierarchy.yml +0 -352
  339. data/conf/design/security.yml +0 -115
  340. data/conf/design/session_retrospective.yml +0 -85
  341. data/conf/design/smart_ui_feedback.yml +0 -89
  342. data/conf/design/structured_logging.yml +0 -148
  343. data/conf/design/styles.yml +0 -123
  344. data/conf/design/test_peer_review.yml +0 -89
  345. data/conf/design/testing.yml +0 -136
  346. data/conf/design/threat_model.yml +0 -108
  347. data/conf/design/ui_framework.yml +0 -111
  348. data/conf/design/usage_optimization.yml +0 -122
  349. data/conf/design/version_management.yml +0 -60
  350. data/conf/design/workflow.yml +0 -227
  351. data/doc/AAIF_POSITIONING.md +0 -58
  352. data/doc/ADOPT.md +0 -224
  353. data/doc/AI_PROVENANCE.md +0 -139
  354. data/doc/ARCHITECTURE.md +0 -920
  355. data/doc/BEHAVIOUR.md +0 -409
  356. data/doc/BUILD.md +0 -138
  357. data/doc/CI_CD_RECIPES.md +0 -171
  358. data/doc/CLAUDE_SESSIONS_MOVED.md +0 -16
  359. data/doc/COMMAND_ANALYSIS.md +0 -229
  360. data/doc/CONFIGURATION.md +0 -281
  361. data/doc/DESIGN_AUDIT.md +0 -235
  362. data/doc/DESIGN_PEER_REVIEW.md +0 -771
  363. data/doc/DESKTOP.md +0 -447
  364. data/doc/ENGINES.md +0 -567
  365. data/doc/ENGINE_DEVELOPMENT_GUIDE.md +0 -417
  366. data/doc/FEATURE_AUDIT.md +0 -218
  367. data/doc/IMPLEMENTATION_PLAN.md +0 -669
  368. data/doc/INCIDENT_REPORT_2026-02-02.md +0 -251
  369. data/doc/MIGRATION_GUIDE.md +0 -88
  370. data/doc/PACKAGING.md +0 -232
  371. data/doc/PROJECT_DASHBOARD.md +0 -153
  372. data/doc/PULP_DEPLOYMENT.md +0 -164
  373. data/doc/QUALITY_FIX_SUMMARY.md +0 -110
  374. data/doc/QUICK_START.md +0 -162
  375. data/doc/REEK_CONFIGURATION.md +0 -166
  376. data/doc/REFERENCE.md +0 -253
  377. data/doc/REFERENCES.md +0 -324
  378. data/doc/SECURITY_REVIEW_CHECKLIST.md +0 -72
  379. data/doc/SESSION_2026-02-28_GTK4_HARDENING.md +0 -359
  380. data/doc/SETUP.md +0 -202
  381. data/doc/TEST_PEER_REVIEW.md +0 -152
  382. data/doc/THREAT_MODEL.md +0 -230
  383. data/doc/USAGE.md +0 -545
  384. data/doc/USER_MANUAL.md +0 -585
  385. data/doc/ai_test_review_checklist.md +0 -110
  386. data/doc/changes/2026-02-18-packaging-fpm.md +0 -155
  387. data/doc/changes/2026-02-19-testing-infrastructure.md +0 -221
  388. data/doc/changes/2026-02-20-security-implementation.md +0 -281
  389. data/doc/changes/2026-02-20-styles-implementation.md +0 -220
  390. data/doc/changes/2026-02-21-architecture-completion.md +0 -95
  391. data/doc/changes/2026-02-21-architecture-ui-layer.md +0 -253
  392. data/doc/changes/2026-02-21-cc-config-implementation.md +0 -108
  393. data/doc/changes/2026-02-21-ci-pipeline-implementation.md +0 -214
  394. data/doc/changes/2026-02-21-compiler-multi-target-pipeline.md +0 -241
  395. data/doc/changes/2026-02-21-config-design-show-commands.md +0 -61
  396. data/doc/changes/2026-02-21-design-implementation-overview.md +0 -455
  397. data/doc/changes/2026-02-21-lifecycle-management.md +0 -196
  398. data/doc/changes/2026-02-21-path-resolver.md +0 -128
  399. data/doc/changes/2026-02-24-ci-tmpdir-mutant-fetch.md +0 -45
  400. data/doc/changes/2026-03-01-ci-bundler-strategy.md +0 -120
  401. data/doc/changes/2026-03-20-security-hardening-phase2.md +0 -163
  402. data/doc/context/SESSION-HANDOFF.md +0 -69
  403. data/doc/context/ai-engine-usage-trends-2026.md +0 -80
  404. data/doc/context/plan-pluggable-engines.md +0 -590
  405. data/doc/decisions/001-flog-deferred.md +0 -32
  406. data/doc/decisions/002-path-resolution-strategy.md +0 -158
  407. data/doc/decisions/003-ui-adapter-selection.md +0 -193
  408. data/doc/decisions/004-design-document-validation.md +0 -179
  409. data/doc/decisions/005-package-splitting-strategy.md +0 -200
  410. data/doc/decisions/006-multi-engine-architecture.md +0 -147
  411. data/doc/decisions/007-engine-agnostic-pivot.md +0 -219
  412. data/doc/decisions/008-ci-bundler-strategy.md +0 -129
  413. data/doc/decisions/009-core-only-v1-release.md +0 -60
  414. data/doc/decisions/010-engine-debian-packaging.md +0 -66
  415. data/doc/decisions/011-context-aware-cli.md +0 -71
  416. data/doc/dependency_decisions.yml +0 -247
  417. data/doc/issues/001-wrapper-missing-environment-variables.md +0 -197
  418. data/doc/issues/002-embedded-ruby-wrong-prefix.md +0 -217
  419. data/doc/issues/003-smoke-test-false-positive.md +0 -127
  420. data/doc/issues/004-market-research-design-updates.md +0 -109
  421. data/doc/issues/005-compile-scope-coexistence.md +0 -161
  422. data/doc/locales/.gitkeep +0 -0
  423. data/doc/man/rai.1.ronn +0 -505
  424. data/doc/operations/packaging.md +0 -133
  425. data/doc/operations/rosett-ai-release.md +0 -65
  426. data/doc/reference/error-catalog.md +0 -107
  427. data/doc/reference/rosett-ai-technical-reference.pdf +0 -0
  428. data/doc/reference/src/Pictures/cover.jpg +0 -0
  429. data/doc/reference/src/Pictures/head1.jpg +0 -0
  430. data/doc/reference/src/Pictures/head2.jpg +0 -0
  431. data/doc/reference/src/Pictures/head3.jpg +0 -0
  432. data/doc/reference/src/Pictures/head4.jpg +0 -0
  433. data/doc/reference/src/Pictures/head5.jpg +0 -0
  434. data/doc/reference/src/Pictures/head6.jpg +0 -0
  435. data/doc/reference/src/Pictures/head7.jpg +0 -0
  436. data/doc/reference/src/Pictures/head8.jpg +0 -0
  437. data/doc/reference/src/StyleInd.ist +0 -4
  438. data/doc/reference/src/bibliography.bib +0 -79
  439. data/doc/reference/src/main.tex +0 -1288
  440. data/doc/reference/src/structure.tex +0 -303
  441. data/doc/rosett-ai-bookmarks.html +0 -301
  442. data/kitchen.yml +0 -46
  443. data/lib/rosett_ai/mcp/enforcement/.gitkeep +0 -0
  444. data/locales/.gitkeep +0 -0
  445. data/packaging/build-engine-deb.sh +0 -81
  446. data/packaging/scripts/postinst +0 -17
  447. data/packaging/scripts/postrm +0 -19
  448. data/packaging/scripts/prerm +0 -10
  449. data/packaging/wrapper.sh.template +0 -38
  450. data/rosett-ai.gemspec +0 -63
  451. data/rules/.gitkeep +0 -0
  452. data/scripts/publish/pulp_upload.sh +0 -123
  453. data/settings.json +0 -29
data/README.md CHANGED
@@ -4,8 +4,7 @@
4
4
 
5
5
  raictl is an engine-agnostic configuration management tool for AI-assisted development workflows.
6
6
  Define operational rules in generic YAML, then compile them to any supported AI tool's native format.
7
- v1.2.0 ships with Claude Code and AGENTS.md engines.
8
- Additional engines (Cursor, Copilot, Windsurf, Goose, Aider, Ollama, GPT-NeoX, Generic) are in development.
7
+ Ships with Claude Code and AGENTS.md builtin engines; additional engines available as plugin gems.
9
8
 
10
9
  ```mermaid
11
10
  graph LR
@@ -50,10 +49,10 @@ graph LR
50
49
 
51
50
  | Field | Value |
52
51
  |-------|-------|
53
- | Version | <!-- rai:version -->1.2.0<!-- /rai:version --> |
52
+ | Version | <!-- rai:version -->1.3.4<!-- /rai:version --> |
54
53
  | License | GPL-3.0-only |
55
- | Ruby | 3.3.10 (rbenv) |
56
- | Tests | <!-- rai:tests -->4672 RSpec specs<!-- /rai:tests --> |
54
+ | Ruby | 3.4.8 (rbenv) |
55
+ | Tests | <!-- rai:tests -->4477 RSpec specs<!-- /rai:tests --> |
57
56
  | Author | Hugo Antonio Sepulveda Manriquez |
58
57
 
59
58
  ## Quick Start
@@ -67,7 +66,7 @@ gem install rosett-ai
67
66
  ### Or install from .deb (Debian/Ubuntu)
68
67
 
69
68
  ```bash
70
- sudo dpkg -i rosett-ai_1.2.0-1_amd64.deb
69
+ sudo dpkg -i rosett-ai_1.3.4-1_amd64.deb
71
70
  ```
72
71
 
73
72
  ### Initialize
@@ -125,6 +124,10 @@ mindmap
125
124
  YAML DoS Prevention
126
125
  Path Whitelisting
127
126
  Custom RuboCop Cops
127
+ MCP Server
128
+ 33 Tools / 8 Resources
129
+ Systemd User Service
130
+ Enforcement Pipeline
128
131
  CLI
129
132
  Compile / Validate / Adopt
130
133
  Backup / Migrate / Doctor
@@ -143,6 +146,7 @@ mindmap
143
146
  - **GTK4/Adwaita Application** -- Crash-proof GUI with `safe_action()` wrapper pattern
144
147
  - **Behaviour Management** -- Priority-sorted rules (1-100 scale) with sensitivity filtering
145
148
  - **Adopt Analysis** -- Local structural checks with optional API-powered analysis
149
+ - **MCP Server** -- Model Context Protocol server with 33 tools, 8 resources, 4 prompts; runs as a systemd user service
146
150
  - **Content Packs** -- Premium content delivery via Ed25519-signed JWT licensing
147
151
  - **Debian Packaging** -- `.deb` packages via fpm for core, gtk4, and qt6 variants
148
152
  - **i18n** -- Internationalisation with gettext/Qt locale compilation
@@ -178,6 +182,12 @@ graph TB
178
182
  GENERIC[engines/generic/]:::planned
179
183
  end
180
184
 
185
+ subgraph MCP_LAYER["MCP Layer"]
186
+ MCP_SRV[MCP Server]:::available
187
+ MCP_TOOLS[33 Tools]
188
+ MCP_RES[8 Resources]
189
+ end
190
+
181
191
  subgraph DESKTOP["Desktop Layer"]
182
192
  DBUS_SVC[D-Bus Service]
183
193
  GTK4[GTK4 App]
@@ -193,6 +203,10 @@ graph TB
193
203
  COMP --> YAML
194
204
  VALID --> YAML
195
205
  CONFIG --> PATH
206
+ MCP_SRV --> COMP
207
+ MCP_SRV --> VALID
208
+ MCP_TOOLS --> MCP_SRV
209
+ MCP_RES --> MCP_SRV
196
210
  DBUS_SVC --> COMP
197
211
  GTK4 -->|D-Bus IPC| DBUS_SVC
198
212
  FOCUS --> DBUS_SVC
@@ -228,10 +242,18 @@ raictl behaviour display # Show behaviour configuration
228
242
  raictl config compile # Compile YAML scopes to JSON
229
243
  raictl design list # List design documents
230
244
 
245
+ # MCP server
246
+ raictl mcp serve # Start MCP JSON-RPC server
247
+ raictl mcp status # Show MCP server status
248
+
231
249
  # Desktop
232
250
  raictl dbus start # Start D-Bus service
233
251
  raictl desktop gtk4 # Launch GTK4 application
234
252
 
253
+ # Compliance & provenance
254
+ raictl comply # Run compliance checks (CRA, license, SPDX)
255
+ raictl provenance add # Record AI contribution for HEAD commit
256
+
235
257
  # Backup
236
258
  raictl backup --global --local # Back up all configurations
237
259
  ```
@@ -272,40 +294,32 @@ See [USAGE.md](doc/USAGE.md) for the full command reference.
272
294
  ```text
273
295
  rosett-ai/
274
296
  ├── bin/raictl # CLI executable
275
- ├── lib/rosett_ai/ # Ruby library (4800+ LOC)
276
- │ ├── engines/ # Engine backends
277
- ├── claude/ # Claude Code engine (7 components)
278
- ├── cursor/ # Cursor (Anysphere) engine
279
- ├── copilot/ # GitHub Copilot engine
280
- ├── windsurf/ # Windsurf (Codeium) engine
281
- ├── agents_md/ # AGENTS.md engine
282
- ├── goose/ # Goose (Block) engine
283
- ├── aider/ # Aider engine
284
- ├── generic/ # Generic markdown engine
285
- ├── ollama/ # Ollama engine
286
- │ └── gpt_neox/ # GPT-NeoX engine
287
- │ ├── compiler/ # Compilation pipeline
288
- ├── desktop/ # GTK4 app + GUI logger
289
- ├── dbus/ # D-Bus service + focus adapters
290
- │ ├── validators/ # Schema-based validators
291
- │ ├── licensing/ # Ed25519 JWT license keys
292
- │ ├── content/ # Content pack system
293
- │ ├── backup/ # Backup with compression
294
- ├── thor/tasks/ # 16 CLI subcommands
295
- │ └── ui/ # UI adapter registry
296
- ├── conf/ # Configuration
297
- ├── behaviour/ # Behaviour YAML files
298
- ├── design/ # Design documents (21 files)
299
- ├── schemas/ # JSON Schemas (10 files)
300
- │ ├── engines/ # Per-engine config
301
- │ └── packaging/ # Package variant configs
302
- ├── spec/ # RSpec tests (119 files)
303
- ├── doc/ # Documentation
304
- │ ├── decisions/ # ADRs (001-007)
305
- │ └── changes/ # Implementation notes
306
- ├── locales/ # i18n (en, fr, ar)
307
- ├── packaging/ # Debian scripts
308
- └── CLAUDE.md # Project instructions
297
+ ├── lib/rosett_ai/ # Ruby library
298
+ │ ├── compiler/ # Compilation pipeline
299
+ │ ├── engines/ # Engine plugin registry + detector
300
+ │ ├── mcp/ # MCP server (33 tools, 8 resources)
301
+ │ ├── desktop/ # GTK4 app + GUI logger
302
+ │ ├── dbus/ # D-Bus service + focus adapters
303
+ │ ├── validators/ # Schema-based validators
304
+ │ ├── comply/ # CRA/license/SPDX compliance
305
+ │ ├── provenance/ # AI provenance tracking
306
+ │ ├── licensing/ # Ed25519 JWT license keys
307
+ │ ├── content/ # Content pack system
308
+ ├── backup/ # Backup with compression
309
+ │ ├── thor/tasks/ # CLI subcommands
310
+ └── ui/ # UI adapter registry
311
+ ├── conf/ # Configuration
312
+ │ ├── behaviour/ # Behaviour YAML files
313
+ │ ├── design/ # Design documents
314
+ │ ├── schemas/ # JSON Schemas
315
+ │ ├── mcp/ # MCP server config
316
+ └── packaging/ # Package variant configs
317
+ ├── dist/ # Systemd service units
318
+ ├── spec/ # RSpec tests
319
+ ├── doc/ # Documentation
320
+ ├── locales/ # i18n (en, fr, ar)
321
+ ├── packaging/ # Debian scripts
322
+ └── share/ # Desktop/D-Bus integration files
309
323
  ```
310
324
 
311
325
  ## Development
@@ -315,7 +329,7 @@ rosett-ai/
315
329
  ```bash
316
330
  git clone https://gitlab.com/neatnerds/foss/rosett-ai.git
317
331
  cd rosett-ai
318
- rbenv install 3.3.10
332
+ rbenv install 3.4.8
319
333
  bundle install
320
334
  overcommit --install
321
335
  bin/raictl version
@@ -362,5 +376,5 @@ GPL-3.0-only
362
376
 
363
377
  ## Contact
364
378
 
365
- - Author: hugo@neatnerds.be
379
+ - Author: query@neatnerds.be
366
380
  - Support: query@neatnerds.be
data/bin/raictl ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # SPDX-License-Identifier: GPL-3.0-only
5
+ # Copyright (C) 2026 Hugo Antonio Sepulveda Manriquez / NeatNerds
6
+
7
+ # NeatNerds Code Companion - CLI Executable
8
+ # This is the main entry point for the rai command
9
+
10
+ require 'rosett_ai'
11
+
12
+ RosettAi::I18n::Utf8Checker.check!
13
+ RosettAi::Thor::CLI.start(ARGV)
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  patterns:
3
5
  - pattern: '(?i)\b[A-Z0-9._%+-]+@neatnerds\.be\b'
4
6
  replacement: '[EMAIL-REDACTED]'
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  name: cra_compliance
3
5
  version: 1.0.0
4
6
  description: EU Cyber Resilience Act (CRA) compliance checks
@@ -1,3 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
2
+ # SPDX-License-Identifier: GPL-3.0-only
1
3
  ---
2
4
  name: license_compliance
3
5
  version: 1.0.0
@@ -1,3 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
2
+ # SPDX-License-Identifier: GPL-3.0-only
1
3
  # frozen_string_literal: false
2
4
  # Default MCP server configuration for Rosett-AI.
3
5
  #
data/conf/mcp/trust.yml CHANGED
@@ -1,3 +1,4 @@
1
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
1
2
  # SPDX-License-Identifier: GPL-3.0-only
2
3
  # Copyright (C) 2026 Hugo Antonio Sepulveda Manriquez / NeatNerds
3
4
  #
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  name: rosett-ai
3
5
  variant: core
4
6
  description: >-
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  name: rosett-ai-gtk4
3
5
  variant: gtk4
4
6
  description: >-
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  name: rosett-ai-qt6
3
5
  variant: qt6
4
6
  description: >-
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  # Default deny list patterns for AI tool access control.
3
5
  #
4
6
  # These patterns prevent AI tools from reading or modifying sensitive files.
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  repository: rosett-ai
3
5
  audit_type: cli_commands
4
6
  created: "2026-03-23"
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  # Design Document Peer Review Registry — Rosett-AI core
3
5
  # Generated: 2026-03-15
4
6
  # Updated: 2026-03-16 (gap-fill design document review)
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  # Design Document Peer Review Questionnaire
3
5
  # Version: 1.0.0
4
6
  # Used by: rai design peer review process
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  # Test Peer Review Questionnaire Template
3
5
  # Version: 1.0.0
4
6
  # Used by: Rosett-AI test peer review process (see conf/design/test_peer_review.yml)
@@ -1,4 +1,6 @@
1
1
  ---
2
+ # SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
3
+ # SPDX-License-Identifier: GPL-3.0-only
2
4
  # Test Peer Review Registry — Rosett-AI core
3
5
  # Generated: 2026-03-14
4
6
  # Questionnaire: conf/review/questionnaire.yml
@@ -30,7 +30,11 @@
30
30
  },
31
31
  "truncation_strategy": {
32
32
  "type": "string",
33
- "enum": ["tail", "head", "middle"],
33
+ "enum": [
34
+ "tail",
35
+ "head",
36
+ "middle"
37
+ ],
34
38
  "description": "How to truncate input when exceeding context window"
35
39
  }
36
40
  }
@@ -41,7 +45,11 @@
41
45
  "properties": {
42
46
  "preferred_tier": {
43
47
  "type": "string",
44
- "enum": ["economy", "standard", "premium"],
48
+ "enum": [
49
+ "economy",
50
+ "standard",
51
+ "premium"
52
+ ],
45
53
  "description": "Default cost tier preference (advisory only)"
46
54
  },
47
55
  "monthly_budget_note": {
@@ -69,5 +77,9 @@
69
77
  "description": "Engine-specific operational parameters (temperature, top_p, etc.)",
70
78
  "additionalProperties": true
71
79
  }
80
+ },
81
+ "$comment": {
82
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only",
83
+ "note": null
72
84
  }
73
85
  }
@@ -0,0 +1,153 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gitlab.neatnerds.be/foss/rosett-ai/rosett-ai/schemas/autoqueue.schema.json",
4
+ "title": "NeatNerds Orchestrator Autoqueue",
5
+ "description": "Schema for the persistent orchestrator dispatch queue (autoqueue.yml). Validates queue items, priorities, tiers, lifecycle statuses, and inter-item dependencies.",
6
+ "$comment": {
7
+ "date": "2026-05-22",
8
+ "version": "0.2.0",
9
+ "source": "rosett-ai",
10
+ "changes_0.2.0": "Option A schema update: status enum extended to include deferred/stuck-killed/failed; dependencies items accept integer WP IDs in addition to aq-NNN strings; acceptance_summary required only for actionable statuses (queued/dispatched/blocked/done-with-followup)"
11
+ },
12
+ "type": "object",
13
+ "required": ["version", "items"],
14
+ "additionalProperties": true,
15
+ "properties": {
16
+ "version": {
17
+ "type": "string",
18
+ "description": "Schema version (semver)"
19
+ },
20
+ "last_updated": {
21
+ "type": "string",
22
+ "description": "ISO 8601 datetime of last modification"
23
+ },
24
+ "last_updated_by": {
25
+ "type": "string",
26
+ "description": "Session or agent that last modified the queue"
27
+ },
28
+ "cpu_budget": {
29
+ "type": "object",
30
+ "description": "Available CPU budget for dispatch decisions",
31
+ "properties": {
32
+ "total": {
33
+ "type": "integer",
34
+ "minimum": 1,
35
+ "description": "Total CPU cores available"
36
+ },
37
+ "reserved_orchestrator": {
38
+ "type": "integer",
39
+ "minimum": 0,
40
+ "description": "Cores reserved for the orchestrator session"
41
+ },
42
+ "reserved_system": {
43
+ "type": "integer",
44
+ "minimum": 0,
45
+ "description": "Cores reserved for system processes"
46
+ }
47
+ },
48
+ "additionalProperties": false
49
+ },
50
+ "items": {
51
+ "type": "array",
52
+ "description": "Ordered list of dispatch queue items",
53
+ "items": {
54
+ "type": "object",
55
+ "required": [
56
+ "id",
57
+ "priority",
58
+ "tier",
59
+ "cpu_count",
60
+ "status"
61
+ ],
62
+ "if": {
63
+ "properties": {
64
+ "status": {"enum": ["queued", "dispatched", "blocked", "done-with-followup"]}
65
+ },
66
+ "required": ["status"]
67
+ },
68
+ "then": {
69
+ "required": ["acceptance_summary"]
70
+ },
71
+ "additionalProperties": true,
72
+ "properties": {
73
+ "id": {
74
+ "type": "string",
75
+ "pattern": "^aq-\\d+$",
76
+ "description": "Unique queue item identifier (aq-NNN)"
77
+ },
78
+ "session_name": {
79
+ "type": "string",
80
+ "description": "Name of the worker session to be dispatched"
81
+ },
82
+ "priority": {
83
+ "type": "string",
84
+ "enum": ["immediate", "high", "normal", "low"],
85
+ "description": "Dispatch priority"
86
+ },
87
+ "tier": {
88
+ "type": "string",
89
+ "enum": ["micro", "standard", "campaign"],
90
+ "description": "Mission tier (determines CPU and time budget)"
91
+ },
92
+ "model": {
93
+ "type": "string",
94
+ "description": "Claude model to use for the dispatched session"
95
+ },
96
+ "cpu_count": {
97
+ "type": "integer",
98
+ "minimum": 1,
99
+ "description": "Number of CPU cores to pin for this session"
100
+ },
101
+ "status": {
102
+ "type": "string",
103
+ "enum": ["queued", "dispatched", "done", "done-with-followup", "blocked", "deferred", "stuck-killed", "failed"],
104
+ "description": "Current lifecycle status of the queue item. Terminal statuses: done, done-with-followup, deferred, stuck-killed, failed."
105
+ },
106
+ "linked_wps": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "integer"
110
+ },
111
+ "description": "OpenProject WP IDs linked to this mission"
112
+ },
113
+ "dependencies": {
114
+ "type": "array",
115
+ "items": {
116
+ "oneOf": [
117
+ {"type": "string", "pattern": "^aq-\\d+$"},
118
+ {"type": "integer", "minimum": 1}
119
+ ]
120
+ },
121
+ "description": "Other autoqueue IDs (aq-NNN strings) or OpenProject WP IDs (integers) that must be done before this can pop"
122
+ },
123
+ "brief_path": {
124
+ "type": "string",
125
+ "description": "Absolute path to a pre-staged MISSION-BRIEF.md (optional)"
126
+ },
127
+ "rationale": {
128
+ "type": "string",
129
+ "description": "Why this item was queued"
130
+ },
131
+ "queued_at": {
132
+ "type": "string",
133
+ "description": "ISO 8601 datetime when the item was added"
134
+ },
135
+ "queued_by": {
136
+ "type": "string",
137
+ "description": "Session or agent that added this item"
138
+ },
139
+ "estimated_effort_hours": {
140
+ "type": "number",
141
+ "minimum": 0,
142
+ "description": "Estimated effort in hours"
143
+ },
144
+ "acceptance_summary": {
145
+ "type": "string",
146
+ "minLength": 1,
147
+ "description": "One-paragraph summary of what done looks like for this item"
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
@@ -7,10 +7,17 @@
7
7
  "date": "2026-04-17",
8
8
  "version": "1.3.0",
9
9
  "source": "rosett-ai",
10
- "compatible_claude_code_versions": [">=0.1.0"]
10
+ "compatible_claude_code_versions": [
11
+ ">=0.1.0"
12
+ ],
13
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only"
11
14
  },
12
15
  "type": "object",
13
- "required": ["name", "description", "rules"],
16
+ "required": [
17
+ "name",
18
+ "description",
19
+ "rules"
20
+ ],
14
21
  "additionalProperties": false,
15
22
  "properties": {
16
23
  "name": {
@@ -49,7 +56,11 @@
49
56
  },
50
57
  "scope": {
51
58
  "type": "string",
52
- "enum": ["global", "project", "personal"],
59
+ "enum": [
60
+ "global",
61
+ "project",
62
+ "personal"
63
+ ],
53
64
  "description": "Compilation scope: global (to ~/.claude/rules/), project (to .claude/rules/), personal (to ~/.claude/rules/, not shared). Defaults to global when omitted."
54
65
  },
55
66
  "sensitive": {
@@ -69,7 +80,10 @@
69
80
  "description": "Operational rules for Claude Code (at least one required)",
70
81
  "items": {
71
82
  "type": "object",
72
- "required": ["id", "description"],
83
+ "required": [
84
+ "id",
85
+ "description"
86
+ ],
73
87
  "properties": {
74
88
  "id": {
75
89
  "type": "string",
@@ -95,7 +109,11 @@
95
109
  "properties": {
96
110
  "type": {
97
111
  "type": "string",
98
- "enum": ["enforceable", "advisory", "informational"],
112
+ "enum": [
113
+ "enforceable",
114
+ "advisory",
115
+ "informational"
116
+ ],
99
117
  "description": "Enforcement tier: enforceable (hook-generatable), advisory (guidance only), informational (context only)"
100
118
  },
101
119
  "pattern": {
@@ -114,7 +132,11 @@
114
132
  },
115
133
  "action": {
116
134
  "type": "string",
117
- "enum": ["block", "warn", "log"],
135
+ "enum": [
136
+ "block",
137
+ "warn",
138
+ "log"
139
+ ],
118
140
  "description": "Enforcement action: block (reject tool call), warn (stderr warning), log (silent log)"
119
141
  },
120
142
  "message": {
@@ -122,7 +144,9 @@
122
144
  "description": "Human-readable message shown when the rule triggers"
123
145
  }
124
146
  },
125
- "required": ["type"],
147
+ "required": [
148
+ "type"
149
+ ],
126
150
  "additionalProperties": false
127
151
  }
128
152
  }
@@ -6,10 +6,15 @@
6
6
  "$comment": {
7
7
  "date": "2026-03-16",
8
8
  "version": "1.0.0",
9
- "source": "rosett-ai"
9
+ "source": "rosett-ai",
10
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only"
10
11
  },
11
12
  "type": "object",
12
- "required": ["name", "version", "rules"],
13
+ "required": [
14
+ "name",
15
+ "version",
16
+ "rules"
17
+ ],
13
18
  "additionalProperties": false,
14
19
  "properties": {
15
20
  "name": {
@@ -31,7 +36,11 @@
31
36
  "minItems": 1,
32
37
  "items": {
33
38
  "type": "object",
34
- "required": ["id", "description", "severity"],
39
+ "required": [
40
+ "id",
41
+ "description",
42
+ "severity"
43
+ ],
35
44
  "additionalProperties": false,
36
45
  "properties": {
37
46
  "id": {
@@ -45,7 +54,11 @@
45
54
  },
46
55
  "severity": {
47
56
  "type": "string",
48
- "enum": ["error", "warning", "info"],
57
+ "enum": [
58
+ "error",
59
+ "warning",
60
+ "info"
61
+ ],
49
62
  "description": "Severity level"
50
63
  },
51
64
  "check": {