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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: '08b1ccbf26eade94ccc451962a789f73da5037aacd3fa3fba00d442a143c259c'
4
+ data.tar.gz: 85521d6653832bdded1ce46cd951d6fff0c21521695bc4ab1eaf88523bc6c1fd
5
+ SHA512:
6
+ metadata.gz: eb06abe8951876cfb9a29c3966bead575439daca52e3d5dab67a4cab97560e54fe67dd6cfbcb6bde3a7ec800108acc44ff6aa587b13ad549b394f87e8f35a177
7
+ data.tar.gz: cc15e6fe802854c0ca427ae49a57a137d24f943a0b813a57ca809159b37215c37e1c5063ca54ff19b98740df5cb9b462f5cf597806ac4255f924fdf5b26c5e34
@@ -0,0 +1,119 @@
1
+ ---
2
+ provenance_version: 1
3
+ entries:
4
+ - commit: pending
5
+ timestamp: '2026-04-14T20:00:00Z'
6
+ session_id: W3-RELEASE-PREP
7
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
8
+ ai_tool: Claude Opus 4.6 (Anthropic)
9
+ ai_role: AI-Co-Author
10
+ files:
11
+ - path: Rakefile
12
+ source_type: modified_code
13
+ - path: README.md
14
+ source_type: documentation
15
+ - path: CLAUDE.md
16
+ source_type: documentation
17
+ - path: doc/USER_MANUAL.md
18
+ source_type: documentation
19
+ - path: lib/rosett_ai/thor/cli.rb
20
+ source_type: modified_code
21
+ - path: spec/rosett_ai/thor/cli_spec.rb
22
+ source_type: test_code
23
+ - path: LICENSE
24
+ source_type: documentation
25
+ scope: Release preparation for v1.2.0 — Rakefile extraction, README automation, honest-label diagrams
26
+ review_status: human-reviewed
27
+ - commit: ac855641b940e6ebc1daa94e13e8e5e2e8ae7beb
28
+ timestamp: '2026-04-15T08:30:00Z'
29
+ session_id: W3-SHIP-V120
30
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
31
+ ai_tool: Claude Opus 4.6 (Anthropic)
32
+ ai_role: AI-Co-Author
33
+ files:
34
+ - path: spec/integration/engine_circular_require_spec.rb
35
+ source_type: test_code
36
+ scope: Integration test for engine circular require prevention
37
+ review_status: human-reviewed
38
+ - commit: c14da8f016166d1d283b2c921f89a726d080055e
39
+ timestamp: '2026-04-15T09:00:00Z'
40
+ session_id: W3-SHIP-V120
41
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
42
+ ai_tool: Claude Opus 4.6 (Anthropic)
43
+ ai_role: AI-Co-Author
44
+ files:
45
+ - path: README.md
46
+ source_type: documentation
47
+ scope: Update README test count to 4672
48
+ review_status: human-reviewed
49
+ - commit: 7f8735e566e841e5d369712f385cbbf245c5ab40
50
+ timestamp: '2026-04-15T09:10:00Z'
51
+ session_id: W3-SHIP-V120
52
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
53
+ ai_tool: Claude Opus 4.6 (Anthropic)
54
+ ai_role: AI-Co-Author
55
+ files:
56
+ - path: spec/integration/compile_end_to_end_spec.rb
57
+ source_type: test_code
58
+ scope: Fix agents_md e2e test expectation to match title-cased output
59
+ review_status: human-reviewed
60
+ - commit: 9d41be667f3a868aa2cd3c8c09c370a8d626977b
61
+ timestamp: '2026-04-15T09:15:00Z'
62
+ session_id: W3-SHIP-V120
63
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
64
+ ai_tool: Claude Opus 4.6 (Anthropic)
65
+ ai_role: AI-Co-Author
66
+ files:
67
+ - path: spec/integration/engine_registration_spec.rb
68
+ source_type: test_code
69
+ - path: spec/rosett_ai/compiler/backend_spec.rb
70
+ source_type: test_code
71
+ scope: Fix title-case expectation and skip backend routing test
72
+ review_status: human-reviewed
73
+ - commit: f488dbfad8528d321c35f73b99a0fc0be6f24706
74
+ timestamp: '2026-04-15T09:30:00Z'
75
+ session_id: W3-SHIP-V120
76
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
77
+ ai_tool: Claude Opus 4.6 (Anthropic)
78
+ ai_role: AI-Co-Author
79
+ files:
80
+ - path: lib/rosett_ai/path_resolver.rb
81
+ source_type: modified_code
82
+ - path: lib/rosett_ai/behaviour/manager.rb
83
+ source_type: modified_code
84
+ - path: lib/rosett_ai/thor/tasks/behaviour.rb
85
+ source_type: modified_code
86
+ - path: .reek.yml
87
+ source_type: configuration
88
+ - path: spec/rosett_ai/behaviour/manager_spec.rb
89
+ source_type: test_code
90
+ - path: spec/rosett_ai/thor/tasks/behaviour_spec.rb
91
+ source_type: test_code
92
+ scope: 3-tier behaviour lookup chain (project > XDG user > packaged) and XDG-compliant Manager
93
+ review_status: human-reviewed
94
+ - commit: c80a5313acd423d17e460afab29784d053c3927c
95
+ timestamp: '2026-04-15T09:45:00Z'
96
+ session_id: W3-SHIP-V120
97
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
98
+ ai_tool: Claude Opus 4.6 (Anthropic)
99
+ ai_role: AI-Co-Author
100
+ files:
101
+ - path: lib/rosett_ai/thor/tasks/compile.rb
102
+ source_type: modified_code
103
+ - path: .reek.yml
104
+ source_type: configuration
105
+ scope: Fix compile pipeline 3-tier source lookup with correct precedence ordering
106
+ review_status: human-reviewed
107
+ - commit: 6c570e60a4c25cf6bf9ddf0e3669645c90343ef0
108
+ timestamp: '2026-04-15T10:00:00Z'
109
+ session_id: W3-SHIP-V120
110
+ contributor: Hugo Antonio Sepulveda Manriquez <hugo@neatnerds.be>
111
+ ai_tool: Claude Opus 4.6 (Anthropic)
112
+ ai_role: AI-Co-Author
113
+ files:
114
+ - path: spec/integration/xdg_behaviour_lookup_spec.rb
115
+ source_type: test_code
116
+ - path: spec/rosett_ai/path_resolver_spec.rb
117
+ source_type: test_code
118
+ scope: Regression tests for XDG 3-tier behaviour lookup, precedence, and compile
119
+ review_status: human-reviewed
@@ -0,0 +1,186 @@
1
+ # debride whitelist — methods invoked dynamically (Thor CLI, Zeitwerk, D-Bus, GTK4)
2
+ #
3
+ # Thor CLI commands (invoked via method_missing dispatch)
4
+ all
5
+ audit_log
6
+ bash
7
+ check!
8
+ check_versions
9
+ commit
10
+ command
11
+ command_name
12
+ compose
13
+ config
14
+ deactivate
15
+ default
16
+ display
17
+ drift
18
+ exit_on_failure?
19
+ feature
20
+ files
21
+ fish
22
+ gate!
23
+ gtk4
24
+ guis
25
+ id
26
+ invoke_command
27
+ launch
28
+ log
29
+ manage
30
+ modify
31
+ prepare
32
+ printable_commands
33
+ prompt_user
34
+ reference
35
+ reload!
36
+ reset_config!
37
+ show
38
+ show_about
39
+ show_preferences
40
+ show_spinner
41
+ status
42
+ trace
43
+ trust_add
44
+ trust_remove
45
+ update_index
46
+ update_status
47
+ validate_ci_yaml
48
+ zsh
49
+
50
+ # Zeitwerk autoloading (class constants resolved at load time)
51
+ ClaudeBackend
52
+ GenericBackend
53
+
54
+ # Configuration accessors (accessed via config hash or method_missing)
55
+ ai_role
56
+ ai_tool
57
+ author
58
+ available_packages
59
+ available_tiers
60
+ backend_name
61
+ bus
62
+ cache_enabled?
63
+ cache_ttl_hours
64
+ category
65
+ config_path
66
+ config_paths
67
+ connected?
68
+ consistent?
69
+ content_cache_dir
70
+ contributor
71
+ correlation_id
72
+ dbus_client
73
+ dbus_interface_class
74
+ depends_on_core?
75
+ drifted?
76
+ effective_input_tokens
77
+ engine
78
+ engine_supported?
79
+ engines
80
+ entries
81
+ entry_count
82
+ fallbacks
83
+ focus_monitor
84
+ fresh?
85
+ from_config
86
+ icon_name
87
+ installed?
88
+ last_error
89
+ local_settings_path
90
+ local_to_remote_transition?
91
+ main_loop
92
+ managed_settings_path
93
+ manager
94
+ max_tokens
95
+ mcps
96
+ measure
97
+ merged_settings
98
+ migrations_needed?
99
+ monthly_budget_note
100
+ offline_valid?
101
+ output_reserve
102
+ overrides?
103
+ phases
104
+ plugin_name
105
+ plugin_type
106
+ plugins
107
+ preferred_tier
108
+ primary
109
+ project_conf_dir
110
+ project_settings_path
111
+ protected?
112
+ register_provider
113
+ required_system_packages
114
+ resource_definitions
115
+ results
116
+ running?
117
+ scheme
118
+ security_override?
119
+ server_class
120
+ source_type
121
+ sources
122
+ status_notifier
123
+ subscriber?
124
+ supported?
125
+ tag
126
+ text_direction
127
+ timestamp
128
+ title
129
+ tool_definitions
130
+ tool_tip
131
+ toolkit
132
+ trailer_block
133
+ truncation_strategy
134
+ trust_sources
135
+ trusted?
136
+ uri
137
+ url
138
+ user_settings_path
139
+ valid_scope?
140
+ valid_tier?
141
+ validate_tool
142
+ warnings?
143
+ widget_event
144
+ with_manifest_mappings
145
+ workflow_data
146
+
147
+ # GTK4 / D-Bus callbacks (invoked by framework event dispatch)
148
+ add_advanced_page
149
+ add_context_page
150
+ add_general_page
151
+ all_enabled
152
+ all_existing
153
+ announce
154
+ application
155
+ apply_template
156
+ on_activate
157
+ on_compile_clicked
158
+ on_context_changed
159
+ on_focus_changed
160
+ on_send
161
+ on_xstr
162
+
163
+ # Constants (referenced dynamically or in case statements)
164
+ DEFAULT_CACHE_DIR
165
+ DEPENDENCY
166
+ DRIFT_TYPES
167
+ EXIT_SUCCESS
168
+ GPL_COMPATIBLE
169
+ GPL_INCOMPATIBLE
170
+ INSTALL_DIR
171
+ MCP_SPEC_VERSION
172
+ MSG
173
+ NAMES
174
+ PERMISSION
175
+ PROMPT_NAME
176
+ STATUSES
177
+ SUPPORTED_SCHEMES
178
+
179
+ # RuboCop custom cops (invoked by RuboCop framework)
180
+ on_send
181
+ on_xstr
182
+ conflicts?
183
+
184
+ # Module concern callbacks (invoked by Ruby include/extend)
185
+ included
186
+ command=
data/.fasterer.yml ADDED
@@ -0,0 +1,29 @@
1
+ # Fasterer configuration — performance micro-optimizations
2
+ # See: https://github.com/DamirSvrtan/fasterer
3
+ #
4
+ # All speedups are enabled by default. Set to false to disable.
5
+ speedups:
6
+ rescue_vs_respond_to: true
7
+ module_eval: true
8
+ shuffle_first_vs_sample: true
9
+ for_loop_vs_each: true
10
+ each_with_index_vs_while: false
11
+ map_flatten_vs_flat_map: true
12
+ reverse_each_vs_reverse_each: true
13
+ select_first_vs_detect: true
14
+ sort_vs_sort_by: true
15
+ fetch_with_argument_vs_block: false
16
+ keys_each_vs_each_key: true
17
+ hash_merge_bang_vs_hash_brackets: true
18
+ block_vs_symbol_to_proc: true
19
+ proc_call_vs_yield: true
20
+ gsub_vs_tr: true
21
+ select_last_vs_reverse_detect: true
22
+ getter_vs_attr_reader: true
23
+ setter_vs_attr_writer: true
24
+ include_vs_cover_on_range: true
25
+
26
+ exclude_paths:
27
+ - 'spec/**/*.rb'
28
+ - 'vendor/**/*.rb'
29
+ - 'tmp/**/*.rb'
data/.mdl_style.rb ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # NeatNerds Code Companion — markdownlint style rules
4
+ # See https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md
5
+ all
6
+ rule 'MD013', line_length: 240, ignore_code_blocks: true, tables: false
7
+ rule 'MD029', style: :ordered # Ordered lists use incremental numbers (1, 2, 3) not all 1s
8
+ exclude_rule 'MD033' # Inline HTML — needed for anchors and complex tables
9
+ rule 'MD007', indent: 2 # Unordered list indentation: 2-space indent per nesting level
10
+ exclude_rule 'MD024' # Multiple headings with same content — changelogs repeat "Added", "Changed", etc.
data/.mdlrc ADDED
@@ -0,0 +1,3 @@
1
+ # NeatNerds Code Companion — markdownlint configuration
2
+ style '.mdl_style.rb'
3
+ ignore_front_matter true
data/.mutant.yml ADDED
@@ -0,0 +1,49 @@
1
+ ---
2
+ usage: opensource
3
+ includes:
4
+ - lib
5
+ requires:
6
+ - rosett_ai
7
+ integration:
8
+ name: rspec
9
+ mutation:
10
+ timeout: 10.0
11
+ matcher:
12
+ subjects:
13
+ - "RosettAi::ProjectContext"
14
+ - "RosettAi::Compiler*"
15
+ - "RosettAi::PathResolver"
16
+ - "RosettAi::SecretsResolver"
17
+ - "RosettAi::YamlLoader"
18
+ - "RosettAi::TextSanitizer"
19
+ - "RosettAi::Validators*"
20
+ - "RosettAi::Configuration"
21
+ - "RosettAi::Adopter*"
22
+ - "RosettAi::Config*"
23
+ - "RosettAi::I18n*"
24
+ - "RosettAi::UI*"
25
+ - "RosettAi::Licensing*"
26
+ - "RosettAi::Content*"
27
+ - "RosettAi::Backup*"
28
+ - "RosettAi::Documentation*"
29
+ - "RosettAi::Packaging*"
30
+ - "RosettAi::VersionConsistencyChecker"
31
+ - "RosettAi::GemConsistencyChecker"
32
+ - "RosettAi::Quorum*"
33
+ - "RosettAi::ExitCodes"
34
+ - "RosettAi::ErrorHandler"
35
+ - "RosettAi::Deprecation"
36
+ - "RosettAi::Migration*"
37
+ - "RosettAi::Telemetry*"
38
+ - "RosettAi::Doctor*"
39
+ - "RosettAi::FeatureFlags*"
40
+ - "RosettAi::StructuredLogger"
41
+ - "RosettAi::Composition*"
42
+ - "RosettAi::Provenance*"
43
+ ignore:
44
+ - "RosettAi::Thor*"
45
+ - "RosettAi::VERSION"
46
+ - "RosettAi::Engines::BaseConfigCompiler"
47
+ - "RosettAi::Engines::Detector"
48
+ coverage_criteria:
49
+ test_result: true
@@ -0,0 +1,42 @@
1
+ # Namespace allowlist — intentional nncc references that must not be flagged.
2
+ # Used by CI lint:namespace job and local grep checks.
3
+ #
4
+ # Doctor checks that detect legacy nncc artifacts
5
+ stale_home_nncc
6
+ stale_config_nncc
7
+ # Migration code that references nncc as source paths
8
+ nncc_config_migrator
9
+ nncc_project_migrator
10
+ NnccConfigMigrator
11
+ NnccProjectMigrator
12
+ \.nncc
13
+ ~/.config/nncc
14
+ # MCP key prefix — backwards compatible key format (tracked for future rename)
15
+ KEY_PREFIX.*nncc_
16
+ start_with.*nncc_
17
+ # MCP prompt text referencing tool names (tracked for future rename)
18
+ nncc_compile
19
+ nncc_validate
20
+ # Project context — internal method detecting source tree (tracked for future rename)
21
+ nncc_source_tree
22
+ nncc_internal
23
+ # Backup task — default filename (tracked for future rename)
24
+ nncc_backup
25
+ # Integration spec paths — engine repo directory names
26
+ nncc-engine-
27
+ # Design docs documenting the namespace cleanup and migration
28
+ conf/design/namespace_cleanup.yml
29
+ conf/design/migration.yml
30
+ # Licensing system — NNCC- is a license key prefix format
31
+ NNCC-
32
+ # Changelog, provenance, and review configs — historical entries
33
+ CHANGELOG.md
34
+ .ai-provenance.yml
35
+ conf/review/
36
+ # Compile lockfile
37
+ compile.lock.yml
38
+ # Migration CLI — variable name and text descriptions
39
+ legacy nncc namespace
40
+ if nncc.directory
41
+ # Spec description strings
42
+ nncc_ prefix