rosett-ai 1.3.3

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 (527) hide show
  1. checksums.yaml +7 -0
  2. data/.ai-provenance.yml +119 -0
  3. data/.debride_whitelist +186 -0
  4. data/.fasterer.yml +29 -0
  5. data/.mdl_style.rb +10 -0
  6. data/.mdlrc +3 -0
  7. data/.mutant.yml +49 -0
  8. data/.namespace-allowlist +42 -0
  9. data/.reek.yml +1040 -0
  10. data/.rosett-ai/config.yml +3 -0
  11. data/.rspec +5 -0
  12. data/.rubocop.yml +380 -0
  13. data/.ruby-version +1 -0
  14. data/.yamllint +51 -0
  15. data/.yardopts +12 -0
  16. data/AI-DISCLOSURE.md +48 -0
  17. data/CHANGELOG.md +519 -0
  18. data/CLAUDE.md +141 -0
  19. data/CONTRIBUTING.md +734 -0
  20. data/INSTALL.md +154 -0
  21. data/LICENSE +674 -0
  22. data/LICENSE.md +675 -0
  23. data/QUICKSTART.md +73 -0
  24. data/README.md +366 -0
  25. data/Rakefile +200 -0
  26. data/SECURITY.md +114 -0
  27. data/bin/rai +1 -0
  28. data/cliff.toml +52 -0
  29. data/conf/adopt_redactions.yml +8 -0
  30. data/conf/behaviour/.gitkeep +0 -0
  31. data/conf/compliance/cra_rules.yml +25 -0
  32. data/conf/compliance/license_rules.yml +20 -0
  33. data/conf/design/aaif_alignment.yml +181 -0
  34. data/conf/design/ab_testing.yml +172 -0
  35. data/conf/design/accessibility.yml +84 -0
  36. data/conf/design/ai_authorship.yml +210 -0
  37. data/conf/design/ai_provenance.yml +224 -0
  38. data/conf/design/ai_tool_configuration.yml +207 -0
  39. data/conf/design/architecture.yml +139 -0
  40. data/conf/design/autocompletion.yml +115 -0
  41. data/conf/design/backward_compatibility.yml +112 -0
  42. data/conf/design/behaviour_composition.yml +246 -0
  43. data/conf/design/build_rake_extraction.yml +57 -0
  44. data/conf/design/ci_pipeline.yml +100 -0
  45. data/conf/design/claude_code_configuration.yml +157 -0
  46. data/conf/design/compiler.yml +128 -0
  47. data/conf/design/comply.yml +153 -0
  48. data/conf/design/content_packs.yml +84 -0
  49. data/conf/design/desktop_integration.yml +289 -0
  50. data/conf/design/distribution.yml +216 -0
  51. data/conf/design/doctor.yml +184 -0
  52. data/conf/design/documentation.yml +152 -0
  53. data/conf/design/engine_architecture.yml +257 -0
  54. data/conf/design/error_handling.yml +103 -0
  55. data/conf/design/feature_flags.yml +142 -0
  56. data/conf/design/git_hooks.yml +165 -0
  57. data/conf/design/gui_plugins.yml +475 -0
  58. data/conf/design/i18n.yml +84 -0
  59. data/conf/design/integration_testing.yml +56 -0
  60. data/conf/design/licensing_system.yml +88 -0
  61. data/conf/design/lifecycle_management.yml +208 -0
  62. data/conf/design/mcp_integration.yml +207 -0
  63. data/conf/design/mcp_settings.yml +126 -0
  64. data/conf/design/migration.yml +56 -0
  65. data/conf/design/monitoring_observability.yml +194 -0
  66. data/conf/design/namespace_cleanup.yml +145 -0
  67. data/conf/design/plugin_test_segregation.yml +145 -0
  68. data/conf/design/policy_management.yml +229 -0
  69. data/conf/design/project_management.yml +183 -0
  70. data/conf/design/rai_mcp_asset_discovery.yml +164 -0
  71. data/conf/design/rai_mcp_server.yml +605 -0
  72. data/conf/design/release_management.yml +117 -0
  73. data/conf/design/retrofit.yml +199 -0
  74. data/conf/design/retrospective_analyzer.yml +79 -0
  75. data/conf/design/scope_hierarchy.yml +352 -0
  76. data/conf/design/security.yml +115 -0
  77. data/conf/design/session_retrospective.yml +85 -0
  78. data/conf/design/smart_ui_feedback.yml +89 -0
  79. data/conf/design/structured_logging.yml +148 -0
  80. data/conf/design/styles.yml +123 -0
  81. data/conf/design/test_peer_review.yml +89 -0
  82. data/conf/design/testing.yml +136 -0
  83. data/conf/design/threat_model.yml +108 -0
  84. data/conf/design/ui_framework.yml +111 -0
  85. data/conf/design/usage_optimization.yml +122 -0
  86. data/conf/design/version_management.yml +60 -0
  87. data/conf/design/workflow.yml +227 -0
  88. data/conf/mcp/server_defaults.yml +42 -0
  89. data/conf/mcp/trust.yml +21 -0
  90. data/conf/packaging/core.yml +12 -0
  91. data/conf/packaging/gtk4.yml +11 -0
  92. data/conf/packaging/qt6.yml +11 -0
  93. data/conf/policy/default_deny_list.yml +197 -0
  94. data/conf/review/cli-command-audit.yml +857 -0
  95. data/conf/review/design-docs.yml +1064 -0
  96. data/conf/review/design-questionnaire.yml +153 -0
  97. data/conf/review/questionnaire.yml +146 -0
  98. data/conf/review/rosett-ai-core.yml +2919 -0
  99. data/conf/schemas/ai_config_schema.json +73 -0
  100. data/conf/schemas/behaviour_schema.json +132 -0
  101. data/conf/schemas/compliance_rule_schema.json +63 -0
  102. data/conf/schemas/content_pack_manifest_schema.json +51 -0
  103. data/conf/schemas/design_schema.json +210 -0
  104. data/conf/schemas/engine_manifest_schema.json +144 -0
  105. data/conf/schemas/lockfile_schema.json +74 -0
  106. data/conf/schemas/mcp_server_schema.json +48 -0
  107. data/conf/schemas/packaging_schema.json +70 -0
  108. data/conf/schemas/policy_schema.json +85 -0
  109. data/conf/schemas/provenance_schema.json +84 -0
  110. data/conf/schemas/rai_config_schema.json +56 -0
  111. data/conf/schemas/rai_project_schema.json +20 -0
  112. data/conf/schemas/scope_hierarchy_schema.json +49 -0
  113. data/conf/schemas/target_schema.json +67 -0
  114. data/conf/schemas/tooling_schema.json +65 -0
  115. data/conf/schemas/workflow_schema.json +112 -0
  116. data/conf/targets/agents_md.yml +17 -0
  117. data/conf/targets/claude.yml +12 -0
  118. data/conf/tooling/tools.yml +58 -0
  119. data/dist/rosett-ai-mcp.service +48 -0
  120. data/dist/rosett-ai-mcp.yml.default +45 -0
  121. data/doc/AAIF_POSITIONING.md +58 -0
  122. data/doc/ADOPT.md +224 -0
  123. data/doc/AI_PROVENANCE.md +139 -0
  124. data/doc/ARCHITECTURE.md +920 -0
  125. data/doc/BEHAVIOUR.md +409 -0
  126. data/doc/BUILD.md +138 -0
  127. data/doc/CI_CD_RECIPES.md +171 -0
  128. data/doc/CLAUDE_SESSIONS_MOVED.md +16 -0
  129. data/doc/COMMAND_ANALYSIS.md +229 -0
  130. data/doc/CONFIGURATION.md +281 -0
  131. data/doc/DESIGN_AUDIT.md +235 -0
  132. data/doc/DESIGN_PEER_REVIEW.md +771 -0
  133. data/doc/DESKTOP.md +447 -0
  134. data/doc/ENGINES.md +567 -0
  135. data/doc/ENGINE_DEVELOPMENT_GUIDE.md +417 -0
  136. data/doc/FEATURE_AUDIT.md +218 -0
  137. data/doc/IMPLEMENTATION_PLAN.md +669 -0
  138. data/doc/INCIDENT_REPORT_2026-02-02.md +251 -0
  139. data/doc/MIGRATION_GUIDE.md +88 -0
  140. data/doc/PACKAGING.md +232 -0
  141. data/doc/PROJECT_DASHBOARD.md +153 -0
  142. data/doc/PULP_DEPLOYMENT.md +164 -0
  143. data/doc/QUALITY_FIX_SUMMARY.md +110 -0
  144. data/doc/QUICK_START.md +162 -0
  145. data/doc/REEK_CONFIGURATION.md +166 -0
  146. data/doc/REFERENCE.md +253 -0
  147. data/doc/REFERENCES.md +324 -0
  148. data/doc/SECURITY_REVIEW_CHECKLIST.md +72 -0
  149. data/doc/SESSION_2026-02-28_GTK4_HARDENING.md +359 -0
  150. data/doc/SETUP.md +202 -0
  151. data/doc/TEST_PEER_REVIEW.md +152 -0
  152. data/doc/THREAT_MODEL.md +230 -0
  153. data/doc/USAGE.md +545 -0
  154. data/doc/USER_MANUAL.md +585 -0
  155. data/doc/ai_test_review_checklist.md +110 -0
  156. data/doc/changes/2026-02-18-packaging-fpm.md +155 -0
  157. data/doc/changes/2026-02-19-testing-infrastructure.md +221 -0
  158. data/doc/changes/2026-02-20-security-implementation.md +281 -0
  159. data/doc/changes/2026-02-20-styles-implementation.md +220 -0
  160. data/doc/changes/2026-02-21-architecture-completion.md +95 -0
  161. data/doc/changes/2026-02-21-architecture-ui-layer.md +253 -0
  162. data/doc/changes/2026-02-21-cc-config-implementation.md +108 -0
  163. data/doc/changes/2026-02-21-ci-pipeline-implementation.md +214 -0
  164. data/doc/changes/2026-02-21-compiler-multi-target-pipeline.md +241 -0
  165. data/doc/changes/2026-02-21-config-design-show-commands.md +61 -0
  166. data/doc/changes/2026-02-21-design-implementation-overview.md +455 -0
  167. data/doc/changes/2026-02-21-lifecycle-management.md +196 -0
  168. data/doc/changes/2026-02-21-path-resolver.md +128 -0
  169. data/doc/changes/2026-02-24-ci-tmpdir-mutant-fetch.md +45 -0
  170. data/doc/changes/2026-03-01-ci-bundler-strategy.md +120 -0
  171. data/doc/changes/2026-03-20-security-hardening-phase2.md +163 -0
  172. data/doc/context/SESSION-HANDOFF.md +69 -0
  173. data/doc/context/ai-engine-usage-trends-2026.md +80 -0
  174. data/doc/context/plan-pluggable-engines.md +590 -0
  175. data/doc/decisions/001-flog-deferred.md +32 -0
  176. data/doc/decisions/002-path-resolution-strategy.md +158 -0
  177. data/doc/decisions/003-ui-adapter-selection.md +193 -0
  178. data/doc/decisions/004-design-document-validation.md +179 -0
  179. data/doc/decisions/005-package-splitting-strategy.md +200 -0
  180. data/doc/decisions/006-multi-engine-architecture.md +147 -0
  181. data/doc/decisions/007-engine-agnostic-pivot.md +219 -0
  182. data/doc/decisions/008-ci-bundler-strategy.md +129 -0
  183. data/doc/decisions/009-core-only-v1-release.md +60 -0
  184. data/doc/decisions/010-engine-debian-packaging.md +66 -0
  185. data/doc/decisions/011-context-aware-cli.md +71 -0
  186. data/doc/dependency_decisions.yml +247 -0
  187. data/doc/issues/001-wrapper-missing-environment-variables.md +197 -0
  188. data/doc/issues/002-embedded-ruby-wrong-prefix.md +217 -0
  189. data/doc/issues/003-smoke-test-false-positive.md +127 -0
  190. data/doc/issues/004-market-research-design-updates.md +109 -0
  191. data/doc/issues/005-compile-scope-coexistence.md +161 -0
  192. data/doc/locales/.gitkeep +0 -0
  193. data/doc/man/rai.1.ronn +505 -0
  194. data/doc/operations/packaging.md +133 -0
  195. data/doc/operations/rosett-ai-release.md +65 -0
  196. data/doc/reference/error-catalog.md +107 -0
  197. data/doc/reference/rosett-ai-technical-reference.pdf +0 -0
  198. data/doc/reference/src/Pictures/cover.jpg +0 -0
  199. data/doc/reference/src/Pictures/head1.jpg +0 -0
  200. data/doc/reference/src/Pictures/head2.jpg +0 -0
  201. data/doc/reference/src/Pictures/head3.jpg +0 -0
  202. data/doc/reference/src/Pictures/head4.jpg +0 -0
  203. data/doc/reference/src/Pictures/head5.jpg +0 -0
  204. data/doc/reference/src/Pictures/head6.jpg +0 -0
  205. data/doc/reference/src/Pictures/head7.jpg +0 -0
  206. data/doc/reference/src/Pictures/head8.jpg +0 -0
  207. data/doc/reference/src/StyleInd.ist +4 -0
  208. data/doc/reference/src/bibliography.bib +79 -0
  209. data/doc/reference/src/main.tex +1288 -0
  210. data/doc/reference/src/structure.tex +303 -0
  211. data/doc/rosett-ai-bookmarks.html +301 -0
  212. data/kitchen.yml +46 -0
  213. data/lib/rosett_ai/adopter/executor_resolver.rb +77 -0
  214. data/lib/rosett_ai/adopter/local_analysis_collector.rb +154 -0
  215. data/lib/rosett_ai/adopter/rule_adopter.rb +254 -0
  216. data/lib/rosett_ai/ai_config/config_compiler.rb +111 -0
  217. data/lib/rosett_ai/ai_config/context_window.rb +55 -0
  218. data/lib/rosett_ai/ai_config/cost_controls.rb +44 -0
  219. data/lib/rosett_ai/ai_config/fallback_chain.rb +64 -0
  220. data/lib/rosett_ai/ai_config/model_router.rb +121 -0
  221. data/lib/rosett_ai/ai_config/validator.rb +45 -0
  222. data/lib/rosett_ai/authorship/attribution_compiler.rb +99 -0
  223. data/lib/rosett_ai/authorship/disclosure_policy.rb +81 -0
  224. data/lib/rosett_ai/authorship/review_validator.rb +39 -0
  225. data/lib/rosett_ai/authorship/trailer_generator.rb +88 -0
  226. data/lib/rosett_ai/backup/compressor.rb +180 -0
  227. data/lib/rosett_ai/backup/destination.rb +91 -0
  228. data/lib/rosett_ai/behaviour/manager.rb +156 -0
  229. data/lib/rosett_ai/compiler/backend.rb +86 -0
  230. data/lib/rosett_ai/compiler/backends/agents_md_backend.rb +80 -0
  231. data/lib/rosett_ai/compiler/backends/claude_backend.rb +88 -0
  232. data/lib/rosett_ai/compiler/backends/generic_backend.rb +15 -0
  233. data/lib/rosett_ai/compiler/behaviour_compiler.rb +40 -0
  234. data/lib/rosett_ai/compiler/capability_checker.rb +104 -0
  235. data/lib/rosett_ai/compiler/compilation_pipeline.rb +361 -0
  236. data/lib/rosett_ai/compiler/compiled_output.rb +39 -0
  237. data/lib/rosett_ai/compiler/locale_compiler.rb +250 -0
  238. data/lib/rosett_ai/compiler/target_profile.rb +112 -0
  239. data/lib/rosett_ai/completion/generator.rb +101 -0
  240. data/lib/rosett_ai/completion/shells/bash_generator.rb +126 -0
  241. data/lib/rosett_ai/completion/shells/fish_generator.rb +78 -0
  242. data/lib/rosett_ai/completion/shells/zsh_generator.rb +126 -0
  243. data/lib/rosett_ai/comply/checkers/cra_checker.rb +102 -0
  244. data/lib/rosett_ai/comply/checkers/license_checker.rb +85 -0
  245. data/lib/rosett_ai/comply/checkers/spdx_header_checker.rb +98 -0
  246. data/lib/rosett_ai/comply/reporter.rb +113 -0
  247. data/lib/rosett_ai/comply/runner.rb +50 -0
  248. data/lib/rosett_ai/composition/circular_dependency_detector.rb +56 -0
  249. data/lib/rosett_ai/composition/composer.rb +158 -0
  250. data/lib/rosett_ai/composition/composition_result.rb +64 -0
  251. data/lib/rosett_ai/composition/conflict_detector.rb +53 -0
  252. data/lib/rosett_ai/composition/lockfile.rb +103 -0
  253. data/lib/rosett_ai/composition/merge_strategy.rb +131 -0
  254. data/lib/rosett_ai/composition/priority_sorter.rb +29 -0
  255. data/lib/rosett_ai/composition/scope_resolver.rb +55 -0
  256. data/lib/rosett_ai/config/compile_result.rb +37 -0
  257. data/lib/rosett_ai/config/compiler.rb +13 -0
  258. data/lib/rosett_ai/config/domain_transformer.rb +13 -0
  259. data/lib/rosett_ai/config/key_map.rb +13 -0
  260. data/lib/rosett_ai/config/masking_secret_resolver.rb +40 -0
  261. data/lib/rosett_ai/config/scope_router.rb +13 -0
  262. data/lib/rosett_ai/config/secret_resolver.rb +125 -0
  263. data/lib/rosett_ai/configuration.rb +119 -0
  264. data/lib/rosett_ai/content/content_client.rb +60 -0
  265. data/lib/rosett_ai/content/pack_installer.rb +117 -0
  266. data/lib/rosett_ai/content/pack_manifest.rb +50 -0
  267. data/lib/rosett_ai/content/pack_registry.rb +68 -0
  268. data/lib/rosett_ai/content_packs/manager.rb +50 -0
  269. data/lib/rosett_ai/dbus/compositor_detector.rb +77 -0
  270. data/lib/rosett_ai/dbus/focus_adapters/base.rb +59 -0
  271. data/lib/rosett_ai/dbus/focus_adapters/gnome_adapter.rb +172 -0
  272. data/lib/rosett_ai/dbus/focus_adapters/hyprland_adapter.rb +77 -0
  273. data/lib/rosett_ai/dbus/focus_adapters/i3_adapter.rb +65 -0
  274. data/lib/rosett_ai/dbus/focus_adapters/kwin_adapter.rb +103 -0
  275. data/lib/rosett_ai/dbus/focus_adapters/x11_adapter.rb +105 -0
  276. data/lib/rosett_ai/dbus/focus_monitor_interface.rb +103 -0
  277. data/lib/rosett_ai/dbus/manager_interface.rb +213 -0
  278. data/lib/rosett_ai/dbus/plugin_manager_interface.rb +169 -0
  279. data/lib/rosett_ai/dbus/rate_limiter.rb +89 -0
  280. data/lib/rosett_ai/dbus/service.rb +121 -0
  281. data/lib/rosett_ai/dbus/status_notifier_interface.rb +79 -0
  282. data/lib/rosett_ai/deprecation.rb +79 -0
  283. data/lib/rosett_ai/desktop/dbus_client.rb +259 -0
  284. data/lib/rosett_ai/desktop/gtk4_app.rb +371 -0
  285. data/lib/rosett_ai/desktop/gtk4_preferences.rb +331 -0
  286. data/lib/rosett_ai/desktop/gui_logger.rb +236 -0
  287. data/lib/rosett_ai/doctor/check.rb +92 -0
  288. data/lib/rosett_ai/doctor/checks/cache_health_check.rb +50 -0
  289. data/lib/rosett_ai/doctor/checks/dbus_availability_check.rb +39 -0
  290. data/lib/rosett_ai/doctor/checks/engine_detection_check.rb +46 -0
  291. data/lib/rosett_ai/doctor/checks/file_permission_check.rb +44 -0
  292. data/lib/rosett_ai/doctor/checks/gem_dependency_check.rb +55 -0
  293. data/lib/rosett_ai/doctor/checks/ruby_version_check.rb +50 -0
  294. data/lib/rosett_ai/doctor/checks/stale_config_nncc_check.rb +57 -0
  295. data/lib/rosett_ai/doctor/checks/stale_home_nncc_check.rb +59 -0
  296. data/lib/rosett_ai/doctor.rb +81 -0
  297. data/lib/rosett_ai/documentation/reference_compiler.rb +122 -0
  298. data/lib/rosett_ai/documentation/translator.rb +62 -0
  299. data/lib/rosett_ai/engines/base_config_compiler.rb +203 -0
  300. data/lib/rosett_ai/engines/detector.rb +63 -0
  301. data/lib/rosett_ai/engines/registry.rb +50 -0
  302. data/lib/rosett_ai/error_handler.rb +139 -0
  303. data/lib/rosett_ai/exit_codes.rb +76 -0
  304. data/lib/rosett_ai/feature_flags.rb +102 -0
  305. data/lib/rosett_ai/formatting.rb +33 -0
  306. data/lib/rosett_ai/gem_consistency_checker.rb +199 -0
  307. data/lib/rosett_ai/git_hooks/chain_detector.rb +86 -0
  308. data/lib/rosett_ai/git_hooks/installer.rb +175 -0
  309. data/lib/rosett_ai/git_hooks/script_generator.rb +125 -0
  310. data/lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb +79 -0
  311. data/lib/rosett_ai/i18n/locale_resolver.rb +46 -0
  312. data/lib/rosett_ai/i18n/utf8_checker.rb +32 -0
  313. data/lib/rosett_ai/init/config_file_writer.rb +24 -0
  314. data/lib/rosett_ai/init/directory_builder.rb +38 -0
  315. data/lib/rosett_ai/init/file_copier.rb +95 -0
  316. data/lib/rosett_ai/init/global_initializer.rb +28 -0
  317. data/lib/rosett_ai/init/local_initializer.rb +27 -0
  318. data/lib/rosett_ai/init/mcp_registrar.rb +109 -0
  319. data/lib/rosett_ai/init/project_initializer.rb +38 -0
  320. data/lib/rosett_ai/licensing/license_key.rb +139 -0
  321. data/lib/rosett_ai/licensing/license_store.rb +64 -0
  322. data/lib/rosett_ai/licensing/license_validator.rb +60 -0
  323. data/lib/rosett_ai/licensing/tier.rb +42 -0
  324. data/lib/rosett_ai/mcp/admin/auditor.rb +88 -0
  325. data/lib/rosett_ai/mcp/admin/health_checker.rb +81 -0
  326. data/lib/rosett_ai/mcp/admin/registry.rb +100 -0
  327. data/lib/rosett_ai/mcp/admin/schema_validator.rb +63 -0
  328. data/lib/rosett_ai/mcp/enforcement/.gitkeep +0 -0
  329. data/lib/rosett_ai/mcp/enforcement/hook_generator.rb +197 -0
  330. data/lib/rosett_ai/mcp/enforcement/validator.rb +215 -0
  331. data/lib/rosett_ai/mcp/governance.rb +160 -0
  332. data/lib/rosett_ai/mcp/http_security_config.rb +158 -0
  333. data/lib/rosett_ai/mcp/instructions.rb +266 -0
  334. data/lib/rosett_ai/mcp/key_hasher.rb +66 -0
  335. data/lib/rosett_ai/mcp/keyfile.rb +221 -0
  336. data/lib/rosett_ai/mcp/middleware/authentication.rb +146 -0
  337. data/lib/rosett_ai/mcp/middleware/content_type.rb +56 -0
  338. data/lib/rosett_ai/mcp/middleware/cors.rb +83 -0
  339. data/lib/rosett_ai/mcp/middleware/origin_validation.rb +73 -0
  340. data/lib/rosett_ai/mcp/middleware/rate_limit.rb +106 -0
  341. data/lib/rosett_ai/mcp/middleware/request_size.rb +51 -0
  342. data/lib/rosett_ai/mcp/plugins.rb +143 -0
  343. data/lib/rosett_ai/mcp/prompts/compilation_prompt.rb +40 -0
  344. data/lib/rosett_ai/mcp/prompts/compliance_prompt.rb +41 -0
  345. data/lib/rosett_ai/mcp/prompts/diagnostics_prompt.rb +41 -0
  346. data/lib/rosett_ai/mcp/prompts/validation_prompt.rb +41 -0
  347. data/lib/rosett_ai/mcp/resources/behaviour_resource.rb +127 -0
  348. data/lib/rosett_ai/mcp/resources/config_resource.rb +72 -0
  349. data/lib/rosett_ai/mcp/resources/design_resource.rb +58 -0
  350. data/lib/rosett_ai/mcp/resources/hooks_resource.rb +74 -0
  351. data/lib/rosett_ai/mcp/resources/provenance_resource.rb +51 -0
  352. data/lib/rosett_ai/mcp/resources/rules_resource.rb +60 -0
  353. data/lib/rosett_ai/mcp/resources/schema_resource.rb +72 -0
  354. data/lib/rosett_ai/mcp/response_helper.rb +46 -0
  355. data/lib/rosett_ai/mcp/security_logger.rb +60 -0
  356. data/lib/rosett_ai/mcp/server.rb +212 -0
  357. data/lib/rosett_ai/mcp/settings/server_installer.rb +112 -0
  358. data/lib/rosett_ai/mcp/settings/trust_manager.rb +142 -0
  359. data/lib/rosett_ai/mcp/tools/adopt_tool.rb +70 -0
  360. data/lib/rosett_ai/mcp/tools/backup_tool.rb +64 -0
  361. data/lib/rosett_ai/mcp/tools/behaviour_display_tool.rb +72 -0
  362. data/lib/rosett_ai/mcp/tools/behaviour_list_tool.rb +56 -0
  363. data/lib/rosett_ai/mcp/tools/behaviour_manage_tool.rb +114 -0
  364. data/lib/rosett_ai/mcp/tools/behaviour_show_tool.rb +62 -0
  365. data/lib/rosett_ai/mcp/tools/compile_status_tool.rb +122 -0
  366. data/lib/rosett_ai/mcp/tools/compile_tool.rb +191 -0
  367. data/lib/rosett_ai/mcp/tools/comply_tool.rb +79 -0
  368. data/lib/rosett_ai/mcp/tools/config_compile_tool.rb +71 -0
  369. data/lib/rosett_ai/mcp/tools/config_status_tool.rb +79 -0
  370. data/lib/rosett_ai/mcp/tools/content_tool.rb +78 -0
  371. data/lib/rosett_ai/mcp/tools/context_query_tool.rb +156 -0
  372. data/lib/rosett_ai/mcp/tools/design_list_tool.rb +57 -0
  373. data/lib/rosett_ai/mcp/tools/design_show_tool.rb +69 -0
  374. data/lib/rosett_ai/mcp/tools/doctor_tool.rb +62 -0
  375. data/lib/rosett_ai/mcp/tools/documentation_status_tool.rb +45 -0
  376. data/lib/rosett_ai/mcp/tools/engines_tool.rb +84 -0
  377. data/lib/rosett_ai/mcp/tools/hook_install_tool.rb +190 -0
  378. data/lib/rosett_ai/mcp/tools/hook_preview_tool.rb +173 -0
  379. data/lib/rosett_ai/mcp/tools/hooks_status_tool.rb +84 -0
  380. data/lib/rosett_ai/mcp/tools/init_tool.rb +87 -0
  381. data/lib/rosett_ai/mcp/tools/license_status_tool.rb +44 -0
  382. data/lib/rosett_ai/mcp/tools/project_tool.rb +117 -0
  383. data/lib/rosett_ai/mcp/tools/provenance_tool.rb +97 -0
  384. data/lib/rosett_ai/mcp/tools/provenance_write_tool.rb +40 -0
  385. data/lib/rosett_ai/mcp/tools/retrofit_tool.rb +81 -0
  386. data/lib/rosett_ai/mcp/tools/rule_search_tool.rb +163 -0
  387. data/lib/rosett_ai/mcp/tools/schema_get_tool.rb +94 -0
  388. data/lib/rosett_ai/mcp/tools/tooling_tool.rb +86 -0
  389. data/lib/rosett_ai/mcp/tools/validate_tool.rb +105 -0
  390. data/lib/rosett_ai/mcp/tools/workflow_execute_tool.rb +74 -0
  391. data/lib/rosett_ai/mcp/tools/workflow_tool.rb +78 -0
  392. data/lib/rosett_ai/migration/detector.rb +117 -0
  393. data/lib/rosett_ai/migration/nncc_config_migrator.rb +94 -0
  394. data/lib/rosett_ai/migration/nncc_project_migrator.rb +90 -0
  395. data/lib/rosett_ai/migration/xdg_migrator.rb +123 -0
  396. data/lib/rosett_ai/package_manager/apt.rb +108 -0
  397. data/lib/rosett_ai/package_manager/base.rb +68 -0
  398. data/lib/rosett_ai/package_manager/gem_backend.rb +90 -0
  399. data/lib/rosett_ai/packaging/variant_config.rb +92 -0
  400. data/lib/rosett_ai/path_resolver.rb +115 -0
  401. data/lib/rosett_ai/plugins/contract.rb +43 -0
  402. data/lib/rosett_ai/plugins/engine_contract.rb +60 -0
  403. data/lib/rosett_ai/plugins/gui_contract.rb +74 -0
  404. data/lib/rosett_ai/plugins/mcp_contract.rb +48 -0
  405. data/lib/rosett_ai/plugins/registry.rb +150 -0
  406. data/lib/rosett_ai/policy/auditor.rb +41 -0
  407. data/lib/rosett_ai/policy/deny_list.rb +71 -0
  408. data/lib/rosett_ai/policy/opt_out_scanner.rb +37 -0
  409. data/lib/rosett_ai/policy/policy_compiler.rb +84 -0
  410. data/lib/rosett_ai/policy/protected_files.rb +47 -0
  411. data/lib/rosett_ai/policy/tier_hierarchy.rb +48 -0
  412. data/lib/rosett_ai/policy/validator.rb +35 -0
  413. data/lib/rosett_ai/profiler.rb +79 -0
  414. data/lib/rosett_ai/project/drift_detector.rb +126 -0
  415. data/lib/rosett_ai/project/manager.rb +115 -0
  416. data/lib/rosett_ai/project/sync_manager.rb +138 -0
  417. data/lib/rosett_ai/project/template_applier.rb +105 -0
  418. data/lib/rosett_ai/project_context.rb +82 -0
  419. data/lib/rosett_ai/provenance/entry.rb +63 -0
  420. data/lib/rosett_ai/provenance/file_source.rb +32 -0
  421. data/lib/rosett_ai/provenance/source.rb +62 -0
  422. data/lib/rosett_ai/provenance/store.rb +153 -0
  423. data/lib/rosett_ai/provenance/tracker.rb +62 -0
  424. data/lib/rosett_ai/provenance/trailer_generator.rb +43 -0
  425. data/lib/rosett_ai/provenance/validator.rb +45 -0
  426. data/lib/rosett_ai/quorum/collector.rb +59 -0
  427. data/lib/rosett_ai/quorum/comparator.rb +81 -0
  428. data/lib/rosett_ai/quorum/dispatcher.rb +57 -0
  429. data/lib/rosett_ai/quorum/strategies/adopt.rb +56 -0
  430. data/lib/rosett_ai/rai_config.rb +107 -0
  431. data/lib/rosett_ai/retrofit/base_parser.rb +66 -0
  432. data/lib/rosett_ai/retrofit/engine.rb +171 -0
  433. data/lib/rosett_ai/retrofit/parsers/agents_md_parser.rb +50 -0
  434. data/lib/rosett_ai/retrofit/parsers/claude_parser.rb +69 -0
  435. data/lib/rosett_ai/retrofit/parsers/cursor_parser.rb +82 -0
  436. data/lib/rosett_ai/retrofit/round_trip_validator.rb +65 -0
  437. data/lib/rosett_ai/retrofit/scanner.rb +47 -0
  438. data/lib/rosett_ai/retrofit/secret_detector.rb +87 -0
  439. data/lib/rosett_ai/secrets_resolver.rb +71 -0
  440. data/lib/rosett_ai/smart_feedback/suggester.rb +83 -0
  441. data/lib/rosett_ai/smart_feedback/thor_middleware.rb +84 -0
  442. data/lib/rosett_ai/structured_logger.rb +110 -0
  443. data/lib/rosett_ai/telemetry/json_lines_writer.rb +50 -0
  444. data/lib/rosett_ai/telemetry/log_rotator.rb +67 -0
  445. data/lib/rosett_ai/telemetry/provider.rb +26 -0
  446. data/lib/rosett_ai/telemetry/reporter.rb +144 -0
  447. data/lib/rosett_ai/telemetry.rb +47 -0
  448. data/lib/rosett_ai/text_sanitizer.rb +62 -0
  449. data/lib/rosett_ai/thor/cli.rb +269 -0
  450. data/lib/rosett_ai/thor/tasks/adopt.rb +250 -0
  451. data/lib/rosett_ai/thor/tasks/backup.rb +420 -0
  452. data/lib/rosett_ai/thor/tasks/behaviour.rb +474 -0
  453. data/lib/rosett_ai/thor/tasks/build.rb +1162 -0
  454. data/lib/rosett_ai/thor/tasks/compile.rb +415 -0
  455. data/lib/rosett_ai/thor/tasks/completion.rb +123 -0
  456. data/lib/rosett_ai/thor/tasks/comply.rb +82 -0
  457. data/lib/rosett_ai/thor/tasks/config.rb +265 -0
  458. data/lib/rosett_ai/thor/tasks/content.rb +193 -0
  459. data/lib/rosett_ai/thor/tasks/dbus.rb +321 -0
  460. data/lib/rosett_ai/thor/tasks/design.rb +258 -0
  461. data/lib/rosett_ai/thor/tasks/desktop.rb +129 -0
  462. data/lib/rosett_ai/thor/tasks/doctor.rb +127 -0
  463. data/lib/rosett_ai/thor/tasks/documentation.rb +321 -0
  464. data/lib/rosett_ai/thor/tasks/engines.rb +167 -0
  465. data/lib/rosett_ai/thor/tasks/hooks.rb +219 -0
  466. data/lib/rosett_ai/thor/tasks/init.rb +259 -0
  467. data/lib/rosett_ai/thor/tasks/license.rb +120 -0
  468. data/lib/rosett_ai/thor/tasks/mcp.rb +535 -0
  469. data/lib/rosett_ai/thor/tasks/migrate.rb +121 -0
  470. data/lib/rosett_ai/thor/tasks/plugins.rb +157 -0
  471. data/lib/rosett_ai/thor/tasks/project.rb +260 -0
  472. data/lib/rosett_ai/thor/tasks/provenance.rb +195 -0
  473. data/lib/rosett_ai/thor/tasks/release.rb +314 -0
  474. data/lib/rosett_ai/thor/tasks/retrofit.rb +90 -0
  475. data/lib/rosett_ai/thor/tasks/tooling.rb +308 -0
  476. data/lib/rosett_ai/thor/tasks/validate.rb +108 -0
  477. data/lib/rosett_ai/thor/tasks/workflow.rb +196 -0
  478. data/lib/rosett_ai/tooling/ci_yaml_validator.rb +37 -0
  479. data/lib/rosett_ai/tooling/version_checker.rb +35 -0
  480. data/lib/rosett_ai/ui/accessible_tui.rb +61 -0
  481. data/lib/rosett_ai/ui/base.rb +46 -0
  482. data/lib/rosett_ai/ui/gtk4.rb +98 -0
  483. data/lib/rosett_ai/ui/kde.rb +40 -0
  484. data/lib/rosett_ai/ui/qt6.rb +40 -0
  485. data/lib/rosett_ai/ui/registry.rb +60 -0
  486. data/lib/rosett_ai/ui/tty_helper.rb +74 -0
  487. data/lib/rosett_ai/ui/tui.rb +59 -0
  488. data/lib/rosett_ai/validators/behaviour_validator.rb +20 -0
  489. data/lib/rosett_ai/validators/design_validator.rb +17 -0
  490. data/lib/rosett_ai/validators/schema_validator.rb +84 -0
  491. data/lib/rosett_ai/validators/tooling_validator.rb +17 -0
  492. data/lib/rosett_ai/version.rb +8 -0
  493. data/lib/rosett_ai/version_consistency_checker.rb +129 -0
  494. data/lib/rosett_ai/workflow/audit_log.rb +86 -0
  495. data/lib/rosett_ai/workflow/engine.rb +142 -0
  496. data/lib/rosett_ai/workflow/manager.rb +82 -0
  497. data/lib/rosett_ai/workflow/schema_validator.rb +71 -0
  498. data/lib/rosett_ai/workflow/step_runner.rb +61 -0
  499. data/lib/rosett_ai/workflow/steps/prompt_step.rb +62 -0
  500. data/lib/rosett_ai/workflow/steps/rai_step.rb +74 -0
  501. data/lib/rosett_ai/workflow/steps/shell_step.rb +53 -0
  502. data/lib/rosett_ai/yaml_loader.rb +78 -0
  503. data/lib/rosett_ai.rb +221 -0
  504. data/lib/rubocop/cop/rosett_ai/shell_interpolation.rb +54 -0
  505. data/lib/rubocop/cop/rosett_ai/unsafe_const_get.rb +60 -0
  506. data/lib/rubocop/cop/rosett_ai/unsafe_send.rb +50 -0
  507. data/lib/rubocop/cop/rosett_ai/unsafe_yaml_load.rb +40 -0
  508. data/lib/rubocop/rosett_ai.rb +9 -0
  509. data/lib/scripts/generated/docker_hub_tags.rb +126 -0
  510. data/locales/.gitkeep +0 -0
  511. data/locales/ar.yml +579 -0
  512. data/locales/en.yml +571 -0
  513. data/locales/fr.yml +567 -0
  514. data/packaging/build-engine-deb.sh +81 -0
  515. data/packaging/scripts/postinst +17 -0
  516. data/packaging/scripts/postrm +19 -0
  517. data/packaging/scripts/prerm +10 -0
  518. data/packaging/wrapper.sh.template +38 -0
  519. data/rosett-ai.gemspec +63 -0
  520. data/rules/.gitkeep +0 -0
  521. data/scripts/publish/pulp_upload.sh +123 -0
  522. data/settings.json +29 -0
  523. data/share/applications/be.neatnerds.rosettai.desktop +29 -0
  524. data/share/dbus-1/interfaces/be.neatnerds.rosettai.xml +103 -0
  525. data/share/dbus-1/services/be.neatnerds.rosettai.service +3 -0
  526. data/share/templates/behaviour/criticalthinking.yml +69 -0
  527. metadata +810 -0
data/doc/REFERENCES.md ADDED
@@ -0,0 +1,324 @@
1
+ # Rosett-AI Project References & Bibliography
2
+
3
+ Comprehensive reference list for the Rosett-AI project.
4
+ All resources collected during design, research, and implementation phases.
5
+
6
+ Last updated: 2026-03-04
7
+
8
+ ---
9
+
10
+ ## Table of Contents
11
+
12
+ 1. [Licensing & Legal](#1-licensing--legal)
13
+ 2. [AI Ecosystem (AAIF, MCP, AGENTS.md)](#2-ai-ecosystem-aaif-mcp-agentsmd)
14
+ 3. [D-Bus & Desktop IPC](#3-d-bus--desktop-ipc)
15
+ 4. [GNOME / GTK4 Development](#4-gnome--gtk4-development)
16
+ 5. [KDE / Qt6 Development](#5-kde--qt6-development)
17
+ 6. [Accessibility Standards & Tools](#6-accessibility-standards--tools)
18
+ 7. [GUI Testing](#7-gui-testing)
19
+ 8. [Compositor & Window Manager Integration](#8-compositor--window-manager-integration)
20
+ 9. [Ruby Gems & Libraries](#9-ruby-gems--libraries)
21
+ 10. [Build, Packaging & Distribution](#10-build-packaging--distribution)
22
+ 11. [Code Quality & Development Tools](#11-code-quality--development-tools)
23
+ 12. [Standards & Specifications](#12-standards--specifications)
24
+ 13. [Project Infrastructure](#13-project-infrastructure)
25
+
26
+ ---
27
+
28
+ ## 1. Licensing & Legal
29
+
30
+ ### 1.1 GPL & Open Source Licenses
31
+
32
+ | Resource | URL | Related To | Notes |
33
+ |----------|-----|------------|-------|
34
+ | GPL-3.0 Full Text (HTML) | https://www.gnu.org/licenses/gpl-3.0.en.html | `LICENSE.md`, licensing decision | Project license |
35
+ | GPL-3.0 Full Text (TXT) | https://www.gnu.org/licenses/gpl-3.0.txt | `LICENSE.md` | Machine-readable |
36
+ | AGPL-3.0 Full Text (HTML) | https://www.gnu.org/licenses/agpl-3.0.en.html | Licensing research | Considered, not chosen |
37
+ | AGPL-3.0 Full Text (TXT) | https://www.gnu.org/licenses/agpl-3.0.txt | Licensing research | |
38
+ | GNU Licenses Overview | https://www.gnu.org/licenses/ | `LICENSE.md` | |
39
+ | Why Not LGPL | https://www.gnu.org/licenses/why-not-lgpl.html | `LICENSE.md` | |
40
+ | FSF GPL FAQ: Relicensing | https://www.gnu.org/licenses/gpl-faq.en.html#CanDeveloperThirdParty | AAIF licensing analysis | Third-party relicensing |
41
+ | Apache-2.0 / GPL-3.0 Compatibility | https://www.apache.org/licenses/GPL-compatibility.html | AAIF licensing analysis | Goose (Apache-2.0) + rosett-ai (GPL-3.0) |
42
+ | Free Software Foundation | https://fsf.org/ | `LICENSE.md` | |
43
+ | SPDX License List | https://spdx.org/licenses/ | Licensing research | License identifiers |
44
+ | SPDX Specification v3.0.1 | https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/ | Licensing research | Expression syntax |
45
+
46
+ ### 1.2 Anthropic Legal & Terms
47
+
48
+ | Resource | URL | Related To | Notes |
49
+ |----------|-----|------------|-------|
50
+ | Anthropic Consumer Terms of Service | https://www.anthropic.com/legal/consumer-terms | Licensing research | AI output ownership |
51
+ | Anthropic Commercial Terms of Service | https://www.anthropic.com/legal/commercial-terms | Licensing research | Commercial use rights |
52
+ | Anthropic Acceptable Use Policy | https://www.anthropic.com/legal/aup | Licensing research | |
53
+ | Claude Code Legal & Compliance | https://code.claude.com/docs/en/legal-and-compliance | Licensing research | |
54
+ | Expanded Legal Protections Announcement | https://www.anthropic.com/news/expanded-legal-protections-api-improvements | Licensing research | IP indemnity |
55
+
56
+ ### 1.3 US Copyright Law & AI
57
+
58
+ | Resource | URL | Related To | Notes |
59
+ |----------|-----|------------|-------|
60
+ | US Copyright Office AI Hub | https://www.copyright.gov/ai/ | Licensing research | Central AI copyright resource |
61
+ | Part 2: Copyrightability Report (PDF) | https://www.copyright.gov/ai/Copyright-and-Artificial-Intelligence-Part-2-Copyrightability-Report.pdf | Licensing research | |
62
+ | Part 3: Generative AI Training Report (PDF) | https://www.copyright.gov/ai/Copyright-and-Artificial-Intelligence-Part-3-Generative-AI-Training-Report-Pre-Publication-Version.pdf | Licensing research | |
63
+ | Federal Register March 2023 Registration Guidance | https://www.federalregister.gov/documents/2023/03/16/2023-05321/copyright-registration-guidance-works-containing-material-generated-by-artificial-intelligence | Licensing research | Works containing AI material |
64
+ | Zarya of the Dawn Official Letter (PDF) | https://www.copyright.gov/docs/zarya-of-the-dawn.pdf | Licensing research | Landmark ruling |
65
+ | Thaler v. Perlmutter D.C. Circuit Opinion (PDF) | https://media.cadc.uscourts.gov/opinions/docs/2025/03/23-5233.pdf | Licensing research | Human authorship required |
66
+ | Thaler v. Perlmutter SCOTUS Petition (PDF) | https://cdn.patentlyo.com/media/2025/10/Thaler-v-Perlmutter-Petition.pdf | Licensing research | |
67
+ | CRS Report: Generative AI and Copyright Law | https://www.congress.gov/crs-product/LSB10922 | Licensing research | Congressional Research Service |
68
+
69
+ ### 1.4 EU AI Act & Copyright
70
+
71
+ | Resource | URL | Related To | Notes |
72
+ |----------|-----|------------|-------|
73
+ | EU AI Act Full Text (EUR-Lex PDF) | https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689 | Licensing research | Official Journal |
74
+ | EU AI Act Article 53 (GPAI Obligations) | https://artificialintelligenceact.eu/article/53/ | Licensing research | |
75
+ | EU AI Act Article 50 (Transparency) | https://artificialintelligenceact.eu/article/50/ | Licensing research | |
76
+ | EP Briefing: Copyright of AI-Generated Works (2025) | https://www.europarl.europa.eu/RegData/etudes/BRIE/2025/782585/EPRS_BRI(2025)782585_EN.pdf | Licensing research | European Parliament |
77
+ | EP Study: Generative AI and Copyright (2025) | https://www.europarl.europa.eu/RegData/etudes/STUD/2025/774095/IUST_STU(2025)774095_EN.pdf | Licensing research | European Parliament |
78
+
79
+ ### 1.5 Legal Analysis (Law Firms)
80
+
81
+ | Resource | URL | Related To | Notes |
82
+ |----------|-----|------------|-------|
83
+ | Jones Day: Copyrightability of AI Outputs | https://www.jonesday.com/en/insights/2025/02/copyrightability-of-ai-outputs-us-copyright-office-analyzes-human-authorship-requirement | Licensing research | Feb 2025 |
84
+ | Foley & Lardner: Clarifying Copyrightability | https://www.foley.com/insights/publications/2025/02/clarifying-copyrightability-ai-assisted-works/ | Licensing research | Feb 2025 |
85
+ | Skadden: Appellate Court Affirms Human Authorship | https://www.skadden.com/insights/publications/2025/03/appellate-court-affirms-human-authorship | Licensing research | Mar 2025 |
86
+ | Finnegan: DC Circuit Holds Human Authorship Required | https://www.finnegan.com/en/insights/ip-updates/dc-circuit-court-holds-that-human-authorship-is-required-as-a-matter-of-statutory-law-for-copyright-protection.html | Licensing research | |
87
+ | BitLaw: Copyright Protection for AI-Generated Works | https://www.bitlaw.com/ai/AI-copyright.html | Licensing research | |
88
+
89
+ ### 1.6 AI Model Licenses
90
+
91
+ | Resource | URL | Related To | Notes |
92
+ |----------|-----|------------|-------|
93
+ | Mistral Open Models License | https://help.mistral.ai/en/articles/347393-under-which-license-are-mistral-s-open-models-available | Compiler targets | Apache 2.0 |
94
+ | EleutherAI GPT-NeoX Repository | https://github.com/EleutherAI/gpt-neox | Compiler targets | Apache 2.0 |
95
+ | Meta Llama 2 License | https://ai.meta.com/llama/license/ | Compiler targets | Custom license |
96
+ | Meta Llama 3/3.1/3.2 License | https://www.llama.com/llama3/license/ | Compiler targets | Llama 3 Community |
97
+ | Meta Llama 4 License | https://www.llama.com/llama4/license/ | Compiler targets | |
98
+
99
+ ---
100
+
101
+ ## 2. AI Ecosystem (AAIF, MCP, AGENTS.md)
102
+
103
+ | Resource | URL | Related To | Notes |
104
+ |----------|-----|------------|-------|
105
+ | AAIF Website | https://aaif.io/ | `aaif_alignment.yml`, `mcp_integration.yml` | Founded 2025-12-09 |
106
+ | Linux Foundation Projects | https://www.linuxfoundation.org/projects | AAIF licensing analysis | Charter template |
107
+ | Open-Core Model (Wikipedia) | https://en.wikipedia.org/wiki/Open-core_model | AAIF licensing analysis | Business model reference |
108
+ | MCP Specification (2025-03-26) | https://modelcontextprotocol.io/specification/2025-03-26 | `mcp_integration.yml` | Current spec version |
109
+ | MCP Server Registry | https://registry.modelcontextprotocol.io | MCP integration | Server discovery |
110
+ | MCP Ruby SDK | https://github.com/modelcontextprotocol/ruby-sdk | MCP integration | gem: mcp v0.9.2 |
111
+ | MCP Servers Repository | https://github.com/modelcontextprotocol/servers | MCP integration | Reference implementations |
112
+ | MCP GitHub Organization | https://github.com/modelcontextprotocol | MCP integration | 36 repositories |
113
+ | AGENTS.md Specification | https://agents.md/ | `aaif_alignment.yml` | Created 2025-08-19; 60k+ projects |
114
+ | Goose by Block | https://github.com/block/goose | AAIF ecosystem | Apache-2.0; 31k+ stars |
115
+ | Goose GOVERNANCE.md | https://github.com/block/goose/blob/main/GOVERNANCE.md | AAIF licensing analysis | |
116
+ | Aider | https://github.com/Aider-AI/aider | Engine Phase 3 | Apache-2.0; CLI-based AI coding |
117
+ | Cursor by Anysphere | https://cursor.com | Engine Phase 4 | IDE with AI integration |
118
+ | GitHub Copilot | https://github.com/features/copilot | Engine Phase 4 | AI pair programmer |
119
+ | Windsurf by Codeium | https://codeium.com/windsurf | Engine Phase 4 | AI-powered IDE |
120
+ | Anthropic Ruby SDK | https://github.com/anthropics/anthropic-sdk-ruby | `doc/ADOPT.md`, `CONTRIBUTING.md` | gem: anthropic ~> 1.16 |
121
+
122
+ ---
123
+
124
+ ## 3. D-Bus & Desktop IPC
125
+
126
+ | Resource | URL | Related To | Notes |
127
+ |----------|-----|------------|-------|
128
+ | D-Bus Specification | https://dbus.freedesktop.org/doc/dbus-specification.html | `desktop_integration.yml` | Wire protocol |
129
+ | D-Bus API Design Guidelines | https://dbus.freedesktop.org/doc/dbus-api-design.html | `desktop_integration.yml` | Interface design |
130
+ | D-Bus Tutorial (freedesktop.org) | https://dbus.freedesktop.org/doc/dbus-tutorial.html | Desktop integration research | |
131
+ | D-Bus (Wikipedia) | https://en.wikipedia.org/wiki/D-Bus | Desktop integration research | Overview |
132
+ | D-Bus (ArchWiki) | https://wiki.archlinux.org/title/D-Bus | Desktop integration research | Practical guide |
133
+ | KDE D-Bus Introduction | https://develop.kde.org/docs/features/d-bus/introduction_to_dbus/ | Desktop integration research | KDE perspective |
134
+ | Wayland vs D-Bus for Shell IPC (KDE Blog) | https://blogs.kde.org/2020/10/11/linux-desktop-shell-ipc-wayland-vs-d-bus-and-lack-agreement-when-use-them/ | Desktop integration research | Architecture decision |
135
+ | Arch Linux RFC 0025: dbus-broker Default | https://rfc.archlinux.page/0025-dbus-broker-default/ | Desktop integration research | dbus-broker adoption |
136
+ | systemd/User (ArchWiki) | https://wiki.archlinux.org/title/Systemd/User | Desktop integration research | User session D-Bus |
137
+ | wlr-foreign-toplevel-management Protocol | https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1 | Desktop integration research | Focus tracking (wlroots) |
138
+ | ruby-dbus on GitHub | https://github.com/mvidner/ruby-dbus | `desktop_integration.yml` | v0.24.0; LGPL-2.1 |
139
+ | ruby-dbus Tutorial | https://github.com/mvidner/ruby-dbus/blob/master/doc/Tutorial.md | Desktop integration research | |
140
+ | ruby-dbus on RubyGems | https://rubygems.org/gems/ruby-dbus | Desktop integration research | |
141
+
142
+ ---
143
+
144
+ ## 4. GNOME / GTK4 Development
145
+
146
+ | Resource | URL | Related To | Notes |
147
+ |----------|-----|------------|-------|
148
+ | GNOME Human Interface Guidelines | https://developer.gnome.org/hig/ | `ui_framework.yml`, `desktop_integration.yml` | HIG compliance |
149
+ | GNOME Accessibility Guidelines | https://developer.gnome.org/documentation/guidelines/accessibility.html | `accessibility.yml` | |
150
+ | GTK4 Accessibility Documentation | https://docs.gtk.org/gtk4/section-accessibility.html | `accessibility.yml`, desktop research | GtkAccessible roles |
151
+ | GTK4 Test Accessible Functions | https://docs.gtk.org/gtk4/func.test_accessible_has_role.html | Desktop integration research | Widget testing |
152
+ | Libadwaita Documentation | https://gnome.pages.gitlab.gnome.org/libadwaita/ | Desktop integration research | AdwPreferencesDialog |
153
+ | ruby-gnome Project | https://github.com/ruby-gnome/ruby-gnome | `desktop_integration.yml` | gtk4 + adwaita gems |
154
+ | gtk4 Gem on RubyGems | https://rubygems.org/gems/gtk4 | Desktop integration research | v4.3.5 (Feb 2026) |
155
+ | adwaita Gem on RubyGems | https://rubygems.org/gems/adwaita | Desktop integration research | v4.3.5 (Feb 2026) |
156
+ | Meson i18n Module | https://mesonbuild.com/i18n-module.html | Desktop integration research | gettext compilation |
157
+ | Pop!_OS GNOME Control Center Patch | https://github.com/pop-os/gnome-control-center/blob/e87068996f29fe812e94478d4cebc38741c1853d/debian/patches/system76_firmware.patch | Desktop integration research | Evidence: no external GCC plugins |
158
+
159
+ ---
160
+
161
+ ## 5. KDE / Qt6 Development
162
+
163
+ | Resource | URL | Related To | Notes |
164
+ |----------|-----|------------|-------|
165
+ | KDE KCM Development | https://develop.kde.org/docs/features/configuration/kcm/ | `desktop_integration.yml` | KCM plugin architecture |
166
+ | KDE Human Interface Guidelines | https://develop.kde.org/hig/ | `ui_framework.yml`, `desktop_integration.yml` | HIG compliance |
167
+ | KDE Frameworks 6 Porting Guide | https://develop.kde.org/docs/features/configuration/porting_kf6/ | Desktop integration research | KF5 to KF6 |
168
+ | Qt6 QAccessible Documentation | https://doc.qt.io/qt-6/qaccessible.html | `accessibility.yml`, desktop research | AT-SPI2 bridge |
169
+ | KDE Accessibility / qt-atspi | https://community.kde.org/Accessibility/qt-atspi | Desktop integration research | |
170
+
171
+ ---
172
+
173
+ ## 6. Accessibility Standards & Tools
174
+
175
+ | Resource | URL | Related To | Notes |
176
+ |----------|-----|------------|-------|
177
+ | EN 301 549 (EU Accessibility Standard) | https://www.etsi.org/deliver/etsi_en/301500_301599/301549/ | `accessibility.yml` | EU target standard |
178
+ | WCAG 2.2 Cognitive Patterns | https://www.w3.org/WAI/WCAG2/supplemental/patterns/o5p03-manageable-quantity/ | Desktop integration research | Max 5 choices per screen |
179
+ | W3C Cognitive Accessibility | https://www.w3.org/WAI/cognitive/ | Desktop integration research | |
180
+ | AT-SPI2 D-Bus Interfaces | https://documentation.ubuntu.com/desktop/en/latest/reference/accessibility/dbus/ | Desktop integration research | Linux a11y layer |
181
+
182
+ ---
183
+
184
+ ## 7. GUI Testing
185
+
186
+ | Resource | URL | Related To | Notes |
187
+ |----------|-----|------------|-------|
188
+ | Dogtail (GitLab) | https://gitlab.com/dogtail/dogtail | `testing.yml`, desktop research | v1.0.7 (Jul 2025); cross-toolkit |
189
+ | Dogtail Cross-Toolkit Testing Article | https://ydirson.gitlab.io/the-floss-cook/a11y/2020/04/29/dogtail-against-gtk-and-qt.html | Desktop integration research | |
190
+ | Spix (Qt6 Test Automation) | https://github.com/faaxm/spix | Desktop integration research | MIT; KDAB; XMLRPC |
191
+ | Debian CI GUI Testing | https://wiki.debian.org/ContinuousIntegration/GUI | `ci_pipeline.yml` | xvfb + at-spi2 |
192
+
193
+ ---
194
+
195
+ ## 8. Compositor & Window Manager Integration
196
+
197
+ | Resource | URL | Related To | Notes |
198
+ |----------|-----|------------|-------|
199
+ | i3ipc Ruby Gem | https://github.com/veelenga/i3ipc-ruby | `desktop_integration.yml` | sway/i3 focus adapter |
200
+ | Hyprland IPC Wiki | https://wiki.hyprland.org/IPC/ | `desktop_integration.yml` | socket2 events |
201
+ | awesome WM D-Bus Module | https://awesomewm.org/doc/api/libraries/dbus.html | Desktop integration research | |
202
+
203
+ ---
204
+
205
+ ## 9. Ruby Gems & Libraries
206
+
207
+ ### 9.1 Runtime Dependencies (from rosett-ai.gemspec)
208
+
209
+ | Gem | Version | URL | Purpose |
210
+ |-----|---------|-----|---------|
211
+ | anthropic | ~> 1.16 | https://github.com/anthropics/anthropic-sdk-ruby | Claude API client |
212
+ | ed25519 | ~> 1.4 | https://rubygems.org/gems/ed25519 | License key signing |
213
+ | faraday | ~> 2.14 | https://rubygems.org/gems/faraday | HTTP client |
214
+ | gettext | ~> 3.5 | https://rubygems.org/gems/gettext | i18n (gettext format) |
215
+ | i18n | ~> 1.14 | https://rubygems.org/gems/i18n | Internationalisation |
216
+ | json | ~> 2.18 | https://rubygems.org/gems/json | JSON parsing |
217
+ | json_schemer | ~> 2.5 | https://rubygems.org/gems/json_schemer | JSON Schema validation |
218
+ | jwt | ~> 2.10 | https://rubygems.org/gems/jwt | JWT license tokens |
219
+ | jwt-eddsa | ~> 0.9 | https://rubygems.org/gems/jwt-eddsa | Ed25519 JWT extension |
220
+ | paint | ~> 2.3 | https://rubygems.org/gems/paint | Terminal colours |
221
+ | rainbow | ~> 3.1 | https://rubygems.org/gems/rainbow | Terminal colours |
222
+ | rubyzip | ~> 2.4 | https://rubygems.org/gems/rubyzip | ZIP archive handling |
223
+ | terminal-table | ~> 4.0 | https://rubygems.org/gems/terminal-table | CLI table output |
224
+ | thor | ~> 1.5 | https://rubygems.org/gems/thor | CLI framework |
225
+ | tty-prompt | ~> 0.23 | https://rubygems.org/gems/tty-prompt | Interactive prompts |
226
+ | tty-spinner | ~> 0.9 | https://rubygems.org/gems/tty-spinner | CLI spinners |
227
+ | zeitwerk | ~> 2.7 | https://rubygems.org/gems/zeitwerk | Autoloader |
228
+
229
+ ### 9.2 Development Dependencies (from Gemfile)
230
+
231
+ | Gem | Version | URL | Purpose |
232
+ |-----|---------|-----|---------|
233
+ | bundler-audit | ~> 0.9 | https://rubygems.org/gems/bundler-audit | CVE audit |
234
+ | factory_bot | ~> 6.5 | https://rubygems.org/gems/factory_bot | Test factories |
235
+ | fakefs | ~> 3.2 | https://rubygems.org/gems/fakefs | Filesystem stubs |
236
+ | flay | ~> 2.14 | https://rubygems.org/gems/flay | Duplication detection |
237
+ | fpm | ~> 1.17 | https://rubygems.org/gems/fpm | Package builder |
238
+ | mdl | ~> 0.15 | https://rubygems.org/gems/mdl | Markdown lint |
239
+ | mutant-rspec | ~> 0.14 | https://rubygems.org/gems/mutant-rspec | Mutation testing |
240
+ | overcommit | ~> 0.68 | https://rubygems.org/gems/overcommit | Git hooks |
241
+ | rantly | ~> 3.0 | https://rubygems.org/gems/rantly | Property-based testing |
242
+ | reek | ~> 6.5 | https://rubygems.org/gems/reek | Code smell detection |
243
+ | ronn-ng | ~> 0.10 | https://rubygems.org/gems/ronn-ng | Man page generation |
244
+ | rspec | ~> 3.13 | https://rubygems.org/gems/rspec | Test framework |
245
+ | rubocop | ~> 1.82 | https://rubygems.org/gems/rubocop | Linter |
246
+ | rubocop-performance | ~> 1.26 | https://rubygems.org/gems/rubocop-performance | Performance cops |
247
+ | rubocop-rspec | ~> 3.9 | https://rubygems.org/gems/rubocop-rspec | RSpec cops |
248
+ | ruby_audit | ~> 3.1 | https://rubygems.org/gems/ruby_audit | Ruby CVE audit |
249
+ | simplecov | ~> 0.22 | https://rubygems.org/gems/simplecov | Coverage |
250
+ | webmock | ~> 3.26 | https://rubygems.org/gems/webmock | HTTP mocking |
251
+ | yard | ~> 0.9 | https://rubygems.org/gems/yard | Documentation |
252
+
253
+ ### 9.3 Future / Desktop Dependencies
254
+
255
+ | Gem | Version | URL | Purpose |
256
+ |-----|---------|-----|---------|
257
+ | ruby-dbus | 0.24.0 | https://rubygems.org/gems/ruby-dbus | D-Bus IPC (Phase 1) |
258
+ | gtk4 | 4.3.5 | https://rubygems.org/gems/gtk4 | GTK4 bindings (rosett-ai-gtk4) |
259
+ | adwaita | 4.3.5 | https://rubygems.org/gems/adwaita | Libadwaita bindings (rosett-ai-gtk4) |
260
+ | i3ipc | — | https://rubygems.org/gems/i3ipc | sway/i3 IPC (focus monitor) |
261
+ | mcp | 0.9.2 | https://rubygems.org/gems/mcp | MCP server SDK |
262
+
263
+ ---
264
+
265
+ ## 10. Build, Packaging & Distribution
266
+
267
+ | Resource | URL | Related To | Notes |
268
+ |----------|-----|------------|-------|
269
+ | fpm Project | https://github.com/jordansissel/fpm | `doc/PACKAGING.md` | .deb builder |
270
+ | fpm Documentation | https://fpm.readthedocs.io/en/latest/ | `doc/PACKAGING.md` | |
271
+ | fpm on RubyGems | https://rubygems.org/gems/fpm | `doc/PACKAGING.md` | |
272
+ | rbenv | https://github.com/rbenv/rbenv | `doc/SETUP.md` | Ruby version manager |
273
+ | ruby-build | https://github.com/rbenv/ruby-build | `doc/SETUP.md`, `doc/PACKAGING.md` | Compile Ruby from source |
274
+ | dpkg-deb Man Page | https://man7.org/linux/man-pages/man1/dpkg-deb.1.html | `doc/PACKAGING.md` | |
275
+ | Debian FakeRoot Wiki | https://wiki.debian.org/FakeRoot | `doc/PACKAGING.md` | |
276
+ | rsync Homepage | https://rsync.samba.org/ | `doc/PACKAGING.md` | |
277
+ | rsync Man Page | https://download.samba.org/pub/rsync/rsync.1 | `doc/PACKAGING.md` | |
278
+ | Pulp Project | https://pulpproject.org | `distribution.yml` | Multi-format repo management |
279
+ | GNU C Library (glibc) | https://www.gnu.org/software/libc/ | `doc/PACKAGING.md` | System dependency |
280
+ | OpenSSL | https://www.openssl.org/ | `doc/PACKAGING.md` | System dependency |
281
+ | zlib | https://www.zlib.net/ | `doc/PACKAGING.md` | System dependency |
282
+ | LibYAML | https://pyyaml.org/wiki/LibYAML | `doc/PACKAGING.md` | System dependency |
283
+ | Semantic Versioning 2.0.0 | https://semver.org | `release_management.yml` | Versioning standard |
284
+ | Keep a Changelog 1.1.0 | https://keepachangelog.com/en/1.1.0/ | `cliff.toml`, `CHANGELOG.md` | Changelog format |
285
+ | git-cliff Configuration | https://git-cliff.org/docs/configuration | `cliff.toml` | Changelog generator |
286
+
287
+ ---
288
+
289
+ ## 11. Code Quality & Development Tools
290
+
291
+ | Resource | URL | Related To | Notes |
292
+ |----------|-----|------------|-------|
293
+ | Reek Project | https://github.com/troessner/reek | `doc/REEK_CONFIGURATION.md` | Code smell detector |
294
+ | Reek 4-to-5 Migration Guide | https://github.com/troessner/reek/blob/master/docs/Reek-4-to-Reek-5-migration.md | `doc/REEK_CONFIGURATION.md` | |
295
+ | Reek Duplicate Method Call Docs | https://github.com/troessner/reek/blob/master/docs/Duplicate-Method-Call.md | `doc/REEK_CONFIGURATION.md` | |
296
+ | Overcommit | https://github.com/sds/overcommit | `doc/QUALITY_FIX_SUMMARY.md` | Git hook manager |
297
+ | RubyGems | https://rubygems.org | `Gemfile` | Package registry |
298
+ | JSON Schema Draft 2020-12 | https://json-schema.org/draft/2020-12/schema | `conf/schemas/design_schema.json` | Validation standard |
299
+
300
+ ---
301
+
302
+ ## 12. Standards & Specifications
303
+
304
+ | Resource | URL | Related To | Notes |
305
+ |----------|-----|------------|-------|
306
+ | XDG Base Directory Specification | https://specifications.freedesktop.org/basedir/latest/ | ADR-002 | Path resolution |
307
+ | XDG Base Directory (ArchWiki) | https://wiki.archlinux.org/title/XDG_Base_Directory | ADR-002 | |
308
+ | KDE XDG Filesystem Hierarchy | https://userbase.kde.org/KDE_System_Administration/XDG_Filesystem_Hierarchy | ADR-002 | |
309
+ | Ruby EOL Dates | https://endoflife.date/api/ruby.json | `lifecycle_management.yml` | Version lifecycle |
310
+ | Ruby Official Releases | https://www.ruby-lang.org/en/downloads/releases/ | `lifecycle_management.yml` | |
311
+
312
+ ---
313
+
314
+ ## 13. Project Infrastructure
315
+
316
+ | Resource | URL | Related To | Notes |
317
+ |----------|-----|------------|-------|
318
+ | rosett-ai Repository | https://gitlab.neatnerds.be/neatnerds/NeatNerds-AI/rosett-ai | `rosett-ai.gemspec`, `CONTRIBUTING.md` | Source code |
319
+ | rosett-ai Releases | https://gitlab.neatnerds.be/neatnerds/NeatNerds-AI/rosett-ai/-/releases | `INSTALL.md` | Download packages |
320
+ | rosett-ai Design Schema | https://gitlab.neatnerds.be/neatnerds/NeatNerds-AI/rosett-ai/schemas/design_schema.json | `conf/schemas/design_schema.json` | $id URI |
321
+ | rosett-ai Pricing Page | https://neatnerds.be/rosett-ai/pricing | `content_packs.yml` | Content pack tiers |
322
+ | APT Repository GPG Key | https://repo.neatnerds.be/gpg.key | `distribution.yml` | Package signing |
323
+ | APT Repository (stable) | https://repo.neatnerds.be/stable | `distribution.yml` | Debian packages |
324
+ | RPM Repository (stable) | https://repo.neatnerds.be/stable/rpm | `distribution.yml` | RPM packages |
@@ -0,0 +1,72 @@
1
+ # Security Review Checklist
2
+
3
+ Use this checklist when reviewing changes that affect trust boundaries,
4
+ external integrations, or security-sensitive code.
5
+
6
+ ## Pre-Review
7
+
8
+ - [ ] Identify which trust boundaries (see `doc/THREAT_MODEL.md`) are affected
9
+ - [ ] Confirm the change does not introduce a new trust boundary without
10
+ updating the threat model
11
+
12
+ ## Input Validation
13
+
14
+ - [ ] All external input is validated at the boundary (not deep in the call chain)
15
+ - [ ] `YAML.safe_load` is used (never `YAML.load`)
16
+ - [ ] File size, nesting depth, and key count limits are enforced for YAML input
17
+ - [ ] CLI arguments are type-checked by Thor
18
+ - [ ] Environment variables have safe defaults via `ENV.fetch`
19
+
20
+ ## Output Safety
21
+
22
+ - [ ] Output paths are canonicalised with `File.expand_path`
23
+ - [ ] Output paths are checked against the whitelist
24
+ (`~/.claude/`, project `.claude/`, `~/.config/rosett-ai/`)
25
+ - [ ] File permissions are set explicitly (`0644`, `0755`, `0600` as appropriate)
26
+ - [ ] Temporary files use `Tempfile.new` with `ensure` cleanup
27
+
28
+ ## Secrets
29
+
30
+ - [ ] Secrets are never logged, displayed, or included in error messages
31
+ - [ ] Secret files use `0600` permissions
32
+ - [ ] Secrets resolution follows the hierarchy: ENV > keyring > secrets file
33
+ - [ ] No hardcoded credentials in source code
34
+
35
+ ## Shell Commands
36
+
37
+ - [ ] All shell commands use array-form `system()` (never string interpolation)
38
+ - [ ] User input is never interpolated into shell command strings
39
+ - [ ] Command output is not passed to `eval` or similar
40
+
41
+ ## Dependencies
42
+
43
+ - [ ] New dependencies are justified and documented
44
+ - [ ] `Gemfile.lock` is updated with exact version pins
45
+ - [ ] `bundler-audit` passes with no findings
46
+ - [ ] Native extension gems are documented and justified
47
+
48
+ ## Content Packs
49
+
50
+ - [ ] Content pack YAML is validated against schemas
51
+ - [ ] Archive extraction checks for path traversal
52
+ - [ ] No Ruby code is executed from content packs
53
+ - [ ] Checksums are verified before installation
54
+
55
+ ## D-Bus
56
+
57
+ - [ ] Method signatures match expected types
58
+ - [ ] Unknown methods return appropriate D-Bus errors
59
+ - [ ] Arguments are validated beyond type checking
60
+ - [ ] Only session bus is used (no system bus)
61
+
62
+ ## ANSI / Display
63
+
64
+ - [ ] Control characters are stripped from external input before display
65
+ - [ ] No information is conveyed by colour alone
66
+ - [ ] TTY detection is used to disable formatting for non-interactive output
67
+
68
+ ## Post-Review
69
+
70
+ - [ ] Threat model is updated if new trust boundaries were introduced
71
+ - [ ] Security-relevant test cases are added (positive and negative)
72
+ - [ ] `gitleaks` passes (no secrets in committed code)