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
@@ -3,7 +3,14 @@
3
3
  "title": "NeatNerds Content Pack Manifest",
4
4
  "description": "Schema for premium content pack manifest files",
5
5
  "type": "object",
6
- "required": ["name", "version", "tier_required", "description", "author", "contents"],
6
+ "required": [
7
+ "name",
8
+ "version",
9
+ "tier_required",
10
+ "description",
11
+ "author",
12
+ "contents"
13
+ ],
7
14
  "additionalProperties": false,
8
15
  "properties": {
9
16
  "name": {
@@ -18,7 +25,11 @@
18
25
  },
19
26
  "tier_required": {
20
27
  "type": "string",
21
- "enum": ["supporter", "subscriber", "enterprise"],
28
+ "enum": [
29
+ "supporter",
30
+ "subscriber",
31
+ "enterprise"
32
+ ],
22
33
  "description": "Minimum tier required to access this pack"
23
34
  },
24
35
  "description": {
@@ -37,15 +48,23 @@
37
48
  "properties": {
38
49
  "behaviours": {
39
50
  "type": "array",
40
- "items": { "type": "string" },
51
+ "items": {
52
+ "type": "string"
53
+ },
41
54
  "description": "List of behaviour YAML filenames"
42
55
  },
43
56
  "designs": {
44
57
  "type": "array",
45
- "items": { "type": "string" },
58
+ "items": {
59
+ "type": "string"
60
+ },
46
61
  "description": "List of design YAML filenames"
47
62
  }
48
63
  }
49
64
  }
65
+ },
66
+ "$comment": {
67
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only",
68
+ "note": null
50
69
  }
51
70
  }
@@ -7,10 +7,21 @@
7
7
  "date": "2026-02-22",
8
8
  "version": "1.2.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", "domain", "version", "status", "intent", "constraints", "acceptance_criteria"],
16
+ "required": [
17
+ "name",
18
+ "domain",
19
+ "version",
20
+ "status",
21
+ "intent",
22
+ "constraints",
23
+ "acceptance_criteria"
24
+ ],
14
25
  "additionalProperties": false,
15
26
  "properties": {
16
27
  "name": {
@@ -22,7 +33,22 @@
22
33
  },
23
34
  "domain": {
24
35
  "type": "string",
25
- "enum": ["core", "ui", "security", "testing", "styles", "i18n", "accessibility", "licensing", "ci", "compiler", "release", "documentation", "operations", "forge"],
36
+ "enum": [
37
+ "core",
38
+ "ui",
39
+ "security",
40
+ "testing",
41
+ "styles",
42
+ "i18n",
43
+ "accessibility",
44
+ "licensing",
45
+ "ci",
46
+ "compiler",
47
+ "release",
48
+ "documentation",
49
+ "operations",
50
+ "forge"
51
+ ],
26
52
  "description": "Domain category grouping related specs"
27
53
  },
28
54
  "version": {
@@ -32,7 +58,11 @@
32
58
  },
33
59
  "status": {
34
60
  "type": "string",
35
- "enum": ["draft", "approved", "implemented"],
61
+ "enum": [
62
+ "draft",
63
+ "approved",
64
+ "implemented"
65
+ ],
36
66
  "description": "Draft allows AI deviation; approved means follow strictly; implemented means code exists"
37
67
  },
38
68
  "priority": {
@@ -61,7 +91,9 @@
61
91
  },
62
92
  "depends_on": {
63
93
  "type": "array",
64
- "items": { "type": "string" },
94
+ "items": {
95
+ "type": "string"
96
+ },
65
97
  "description": "List of design document names this document depends on"
66
98
  },
67
99
  "intent": {
@@ -72,40 +104,72 @@
72
104
  "constraints": {
73
105
  "type": "array",
74
106
  "minItems": 1,
75
- "items": { "type": "string" },
107
+ "items": {
108
+ "type": "string"
109
+ },
76
110
  "description": "Hard boundaries that must not be crossed"
77
111
  },
78
112
  "acceptance_criteria": {
79
113
  "type": "array",
80
114
  "minItems": 1,
81
- "items": { "type": "string" },
115
+ "items": {
116
+ "type": "string"
117
+ },
82
118
  "description": "Testable statements defining done"
83
119
  },
84
120
  "examples": {
85
121
  "type": "array",
86
122
  "items": {
87
123
  "type": "object",
88
- "required": ["scenario", "expected"],
124
+ "required": [
125
+ "scenario",
126
+ "expected"
127
+ ],
89
128
  "properties": {
90
- "scenario": { "type": "string", "description": "Description of the situation" },
91
- "expected": { "type": "string", "description": "What should happen" },
92
- "not": { "type": "string", "description": "What should NOT happen" }
129
+ "scenario": {
130
+ "type": "string",
131
+ "description": "Description of the situation"
132
+ },
133
+ "expected": {
134
+ "type": "string",
135
+ "description": "What should happen"
136
+ },
137
+ "not": {
138
+ "type": "string",
139
+ "description": "What should NOT happen"
140
+ }
93
141
  }
94
142
  },
95
143
  "description": "Concrete examples of expected behaviour"
96
144
  },
97
145
  "anti_patterns": {
98
146
  "type": "array",
99
- "items": { "type": "string" },
147
+ "items": {
148
+ "type": "string"
149
+ },
100
150
  "description": "What NOT to do — common wrong approaches to avoid"
101
151
  },
102
152
  "preferences": {
103
153
  "type": "object",
104
154
  "properties": {
105
- "language": { "type": "string" },
106
- "patterns": { "type": "array", "items": { "type": "string" } },
107
- "testing": { "type": "string" },
108
- "gems": { "type": "array", "items": { "type": "string" } }
155
+ "language": {
156
+ "type": "string"
157
+ },
158
+ "patterns": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "string"
162
+ }
163
+ },
164
+ "testing": {
165
+ "type": "string"
166
+ },
167
+ "gems": {
168
+ "type": "array",
169
+ "items": {
170
+ "type": "string"
171
+ }
172
+ }
109
173
  },
110
174
  "additionalProperties": true,
111
175
  "description": "Technical preferences (only when it matters)"
@@ -114,11 +178,27 @@
114
178
  "type": "array",
115
179
  "items": {
116
180
  "type": "object",
117
- "required": ["path", "type", "description"],
181
+ "required": [
182
+ "path",
183
+ "type",
184
+ "description"
185
+ ],
118
186
  "properties": {
119
- "path": { "type": "string", "description": "Relative path to asset file" },
120
- "type": { "type": "string", "enum": ["mockup", "reference", "diagram"] },
121
- "description": { "type": "string" }
187
+ "path": {
188
+ "type": "string",
189
+ "description": "Relative path to asset file"
190
+ },
191
+ "type": {
192
+ "type": "string",
193
+ "enum": [
194
+ "mockup",
195
+ "reference",
196
+ "diagram"
197
+ ]
198
+ },
199
+ "description": {
200
+ "type": "string"
201
+ }
122
202
  }
123
203
  },
124
204
  "description": "Visual assets (images) AI can process directly"
@@ -139,12 +219,22 @@
139
219
  "type": "array",
140
220
  "items": {
141
221
  "type": "object",
142
- "required": ["action"],
222
+ "required": [
223
+ "action"
224
+ ],
143
225
  "properties": {
144
- "action": { "type": "string" },
145
- "tui": { "type": "string" },
146
- "gtk4": { "type": "string" },
147
- "qt6": { "type": "string" }
226
+ "action": {
227
+ "type": "string"
228
+ },
229
+ "tui": {
230
+ "type": "string"
231
+ },
232
+ "gtk4": {
233
+ "type": "string"
234
+ },
235
+ "qt6": {
236
+ "type": "string"
237
+ }
148
238
  }
149
239
  },
150
240
  "description": "Cross-platform interaction definitions"
@@ -156,12 +246,24 @@
156
246
  "type": "array",
157
247
  "items": {
158
248
  "type": "object",
159
- "required": ["element", "role", "label"],
249
+ "required": [
250
+ "element",
251
+ "role",
252
+ "label"
253
+ ],
160
254
  "properties": {
161
- "element": { "type": "string" },
162
- "role": { "type": "string" },
163
- "label": { "type": "string" },
164
- "description": { "type": "string" }
255
+ "element": {
256
+ "type": "string"
257
+ },
258
+ "role": {
259
+ "type": "string"
260
+ },
261
+ "label": {
262
+ "type": "string"
263
+ },
264
+ "description": {
265
+ "type": "string"
266
+ }
165
267
  }
166
268
  }
167
269
  },
@@ -169,38 +271,71 @@
169
271
  "type": "array",
170
272
  "items": {
171
273
  "type": "object",
172
- "required": ["key", "action"],
274
+ "required": [
275
+ "key",
276
+ "action"
277
+ ],
173
278
  "properties": {
174
- "key": { "type": "string" },
175
- "action": { "type": "string" }
279
+ "key": {
280
+ "type": "string"
281
+ },
282
+ "action": {
283
+ "type": "string"
284
+ }
176
285
  }
177
286
  }
178
287
  },
179
- "focus_order": { "type": "array", "items": { "type": "string" } },
288
+ "focus_order": {
289
+ "type": "array",
290
+ "items": {
291
+ "type": "string"
292
+ }
293
+ },
180
294
  "announcements": {
181
295
  "type": "array",
182
296
  "items": {
183
297
  "type": "object",
184
- "required": ["event", "announce"],
298
+ "required": [
299
+ "event",
300
+ "announce"
301
+ ],
185
302
  "properties": {
186
- "event": { "type": "string" },
187
- "announce": { "type": "string" },
188
- "priority": { "type": "string", "enum": ["polite", "assertive"] }
303
+ "event": {
304
+ "type": "string"
305
+ },
306
+ "announce": {
307
+ "type": "string"
308
+ },
309
+ "priority": {
310
+ "type": "string",
311
+ "enum": [
312
+ "polite",
313
+ "assertive"
314
+ ]
315
+ }
189
316
  }
190
317
  }
191
318
  },
192
319
  "target_sizes": {
193
320
  "type": "object",
194
321
  "properties": {
195
- "minimum": { "type": "string" },
196
- "recommended": { "type": "string" }
322
+ "minimum": {
323
+ "type": "string"
324
+ },
325
+ "recommended": {
326
+ "type": "string"
327
+ }
197
328
  }
198
329
  },
199
330
  "timing": {
200
331
  "type": "object",
201
332
  "properties": {
202
- "no_time_limits": { "type": "boolean" },
203
- "animations_respect_prefers_reduced_motion": { "type": "boolean" }
333
+ "no_time_limits": {
334
+ "type": "boolean"
335
+ },
336
+ "animations_respect_prefers_reduced_motion": {
337
+ "type": "boolean"
338
+ }
204
339
  }
205
340
  }
206
341
  },
@@ -6,10 +6,17 @@
6
6
  "$comment": {
7
7
  "date": "2026-02-26",
8
8
  "version": "1.2.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", "display_name", "version", "components", "capabilities"],
13
+ "required": [
14
+ "name",
15
+ "display_name",
16
+ "version",
17
+ "components",
18
+ "capabilities"
19
+ ],
13
20
  "additionalProperties": false,
14
21
  "properties": {
15
22
  "name": {
@@ -30,7 +37,9 @@
30
37
  },
31
38
  "components": {
32
39
  "type": "object",
33
- "required": ["backend"],
40
+ "required": [
41
+ "backend"
42
+ ],
34
43
  "additionalProperties": false,
35
44
  "properties": {
36
45
  "backend": {
@@ -87,7 +96,13 @@
87
96
  },
88
97
  "api_type": {
89
98
  "type": "string",
90
- "enum": ["cli", "http", "grpc", "sdk", "openai_compatible"],
99
+ "enum": [
100
+ "cli",
101
+ "http",
102
+ "grpc",
103
+ "sdk",
104
+ "openai_compatible"
105
+ ],
91
106
  "description": "Type of API interface used by the engine"
92
107
  },
93
108
  "default_endpoint": {
@@ -107,7 +122,9 @@
107
122
  },
108
123
  "capabilities": {
109
124
  "type": "object",
110
- "required": ["compile"],
125
+ "required": [
126
+ "compile"
127
+ ],
111
128
  "additionalProperties": false,
112
129
  "properties": {
113
130
  "compile": {
@@ -4,7 +4,15 @@
4
4
  "title": "rosett-ai Lockfile Schema",
5
5
  "description": "Schema for .rosett-ai-lock.yml behaviour composition lockfile",
6
6
  "type": "object",
7
- "required": ["lockfile_version", "generated_at", "generator", "generator_version", "rule_count", "behaviours", "composition"],
7
+ "required": [
8
+ "lockfile_version",
9
+ "generated_at",
10
+ "generator",
11
+ "generator_version",
12
+ "rule_count",
13
+ "behaviours",
14
+ "composition"
15
+ ],
8
16
  "properties": {
9
17
  "lockfile_version": {
10
18
  "type": "integer",
@@ -44,7 +52,12 @@
44
52
  "description": "Ordered list of composed rules",
45
53
  "items": {
46
54
  "type": "object",
47
- "required": ["id", "behaviour", "scope", "priority"],
55
+ "required": [
56
+ "id",
57
+ "behaviour",
58
+ "scope",
59
+ "priority"
60
+ ],
48
61
  "properties": {
49
62
  "id": {
50
63
  "type": "string",
@@ -56,7 +69,12 @@
56
69
  },
57
70
  "scope": {
58
71
  "type": "string",
59
- "enum": ["global", "organisation", "project", "local"],
72
+ "enum": [
73
+ "global",
74
+ "organisation",
75
+ "project",
76
+ "local"
77
+ ],
60
78
  "description": "Scope in which this rule was defined"
61
79
  },
62
80
  "priority": {
@@ -70,5 +88,9 @@
70
88
  }
71
89
  }
72
90
  },
73
- "additionalProperties": false
91
+ "additionalProperties": false,
92
+ "$comment": {
93
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only",
94
+ "note": null
95
+ }
74
96
  }
@@ -3,7 +3,10 @@
3
3
  "title": "MCP Server Configuration",
4
4
  "description": "Schema for Rosett-AI MCP server configuration files",
5
5
  "type": "object",
6
- "required": ["name", "transport"],
6
+ "required": [
7
+ "name",
8
+ "transport"
9
+ ],
7
10
  "properties": {
8
11
  "name": {
9
12
  "type": "string",
@@ -12,11 +15,18 @@
12
15
  },
13
16
  "transport": {
14
17
  "type": "string",
15
- "enum": ["stdio", "http", "streamable-http"],
18
+ "enum": [
19
+ "stdio",
20
+ "http",
21
+ "streamable-http"
22
+ ],
16
23
  "description": "Transport protocol"
17
24
  },
18
25
  "command": {
19
- "type": ["string", "array"],
26
+ "type": [
27
+ "string",
28
+ "array"
29
+ ],
20
30
  "description": "Command to launch stdio server"
21
31
  },
22
32
  "url": {
@@ -26,12 +36,16 @@
26
36
  },
27
37
  "args": {
28
38
  "type": "array",
29
- "items": { "type": "string" },
39
+ "items": {
40
+ "type": "string"
41
+ },
30
42
  "description": "Additional command arguments"
31
43
  },
32
44
  "env": {
33
45
  "type": "object",
34
- "additionalProperties": { "type": "string" },
46
+ "additionalProperties": {
47
+ "type": "string"
48
+ },
35
49
  "description": "Environment variables"
36
50
  },
37
51
  "source_file": {
@@ -39,10 +53,37 @@
39
53
  "description": "Path to source configuration file"
40
54
  }
41
55
  },
42
- "if": { "properties": { "transport": { "const": "stdio" } } },
43
- "then": { "required": ["command"] },
56
+ "if": {
57
+ "properties": {
58
+ "transport": {
59
+ "const": "stdio"
60
+ }
61
+ }
62
+ },
63
+ "then": {
64
+ "required": [
65
+ "command"
66
+ ]
67
+ },
44
68
  "else": {
45
- "if": { "properties": { "transport": { "enum": ["http", "streamable-http"] } } },
46
- "then": { "required": ["url"] }
69
+ "if": {
70
+ "properties": {
71
+ "transport": {
72
+ "enum": [
73
+ "http",
74
+ "streamable-http"
75
+ ]
76
+ }
77
+ }
78
+ },
79
+ "then": {
80
+ "required": [
81
+ "url"
82
+ ]
83
+ }
84
+ },
85
+ "$comment": {
86
+ "spdx": "SPDX-FileCopyrightText: 2025-2026 Hugo Antonio Sepulveda Manriquez <query@neatnerds.be> | SPDX-License-Identifier: GPL-3.0-only",
87
+ "note": null
47
88
  }
48
89
  }
@@ -6,10 +6,15 @@
6
6
  "$comment": {
7
7
  "date": "2026-02-21",
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", "variant", "description"],
13
+ "required": [
14
+ "name",
15
+ "variant",
16
+ "description"
17
+ ],
13
18
  "additionalProperties": false,
14
19
  "properties": {
15
20
  "name": {
@@ -21,7 +26,12 @@
21
26
  },
22
27
  "variant": {
23
28
  "type": "string",
24
- "enum": ["core", "gtk4", "qt6", "kde"],
29
+ "enum": [
30
+ "core",
31
+ "gtk4",
32
+ "qt6",
33
+ "kde"
34
+ ],
25
35
  "description": "Package variant identifier"
26
36
  },
27
37
  "description": {
@@ -31,7 +41,12 @@
31
41
  },
32
42
  "ui_adapter": {
33
43
  "type": "string",
34
- "enum": ["tui", "gtk4", "qt6", "kde"],
44
+ "enum": [
45
+ "tui",
46
+ "gtk4",
47
+ "qt6",
48
+ "kde"
49
+ ],
35
50
  "description": "UI adapter this variant provides"
36
51
  },
37
52
  "system_dependencies": {
@@ -47,7 +62,10 @@
47
62
  "type": "array",
48
63
  "items": {
49
64
  "type": "object",
50
- "required": ["name", "version"],
65
+ "required": [
66
+ "name",
67
+ "version"
68
+ ],
51
69
  "additionalProperties": false,
52
70
  "properties": {
53
71
  "name": {