rosett-ai 1.3.3 → 1.5.10
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +413 -22
- data/README.md +56 -42
- data/bin/raictl +13 -0
- data/conf/adopt_redactions.yml +2 -0
- data/conf/compliance/cra_rules.yml +2 -0
- data/conf/compliance/license_rules.yml +2 -0
- data/conf/mcp/server_defaults.yml +2 -0
- data/conf/mcp/trust.yml +1 -0
- data/conf/packaging/core.yml +2 -0
- data/conf/packaging/gtk4.yml +2 -0
- data/conf/packaging/qt6.yml +2 -0
- data/conf/policy/default_deny_list.yml +2 -0
- data/conf/review/cli-command-audit.yml +2 -0
- data/conf/review/design-docs.yml +2 -0
- data/conf/review/design-questionnaire.yml +2 -0
- data/conf/review/questionnaire.yml +2 -0
- data/conf/review/rosett-ai-core.yml +2 -0
- data/conf/schemas/ai_config_schema.json +14 -2
- data/conf/schemas/autoqueue.schema.json +153 -0
- data/conf/schemas/behaviour_schema.json +31 -7
- data/conf/schemas/compliance_rule_schema.json +17 -4
- data/conf/schemas/content_pack_manifest_schema.json +23 -4
- data/conf/schemas/design_schema.json +177 -42
- data/conf/schemas/engine_manifest_schema.json +22 -5
- data/conf/schemas/lockfile_schema.json +26 -4
- data/conf/schemas/mcp_server_schema.json +50 -9
- data/conf/schemas/packaging_schema.json +23 -5
- data/conf/schemas/policy_schema.json +35 -9
- data/conf/schemas/provenance_schema.json +33 -5
- data/conf/schemas/rai_config_schema.json +6 -2
- data/conf/schemas/rai_project_schema.json +8 -2
- data/conf/schemas/scope_hierarchy_schema.json +22 -5
- data/conf/schemas/target_schema.json +33 -6
- data/conf/schemas/tooling_schema.json +53 -12
- data/conf/schemas/workflow_schema.json +39 -9
- data/conf/targets/agents_md.yml +1 -0
- data/conf/targets/claude.yml +2 -0
- data/conf/tooling/tools.yml +2 -0
- data/lib/rosett_ai/adopter/local_analysis_collector.rb +5 -0
- data/lib/rosett_ai/adopter/rule_adopter.rb +40 -0
- data/lib/rosett_ai/ai_config/context_window.rb +3 -0
- data/lib/rosett_ai/ai_config/cost_controls.rb +1 -0
- data/lib/rosett_ai/ai_config/fallback_chain.rb +1 -0
- data/lib/rosett_ai/ai_config/model_router.rb +1 -0
- data/lib/rosett_ai/ai_config/validator.rb +2 -0
- data/lib/rosett_ai/authorship/attribution_compiler.rb +1 -0
- data/lib/rosett_ai/authorship/disclosure_policy.rb +2 -0
- data/lib/rosett_ai/authorship/review_validator.rb +1 -0
- data/lib/rosett_ai/authorship/trailer_generator.rb +1 -0
- data/lib/rosett_ai/backup/compressor.rb +3 -0
- data/lib/rosett_ai/backup/destination.rb +1 -0
- data/lib/rosett_ai/behaviour/manager.rb +1 -0
- data/lib/rosett_ai/compiler/backend.rb +3 -0
- data/lib/rosett_ai/compiler/backends/agents_md_backend.rb +1 -0
- data/lib/rosett_ai/compiler/backends/claude_backend.rb +1 -0
- data/lib/rosett_ai/compiler/behaviour_compiler.rb +1 -0
- data/lib/rosett_ai/compiler/compilation_pipeline.rb +1 -7
- data/lib/rosett_ai/compiler/locale_compiler.rb +2 -0
- data/lib/rosett_ai/compiler/target_profile.rb +11 -0
- data/lib/rosett_ai/completion/generator.rb +2 -0
- data/lib/rosett_ai/completion/shells/zsh_generator.rb +1 -0
- data/lib/rosett_ai/comply/checkers/cra_checker.rb +1 -0
- data/lib/rosett_ai/comply/checkers/license_checker.rb +2 -0
- data/lib/rosett_ai/comply/checkers/spdx_header_checker.rb +4 -0
- data/lib/rosett_ai/comply/runner.rb +2 -0
- data/lib/rosett_ai/composition/composer.rb +1 -0
- data/lib/rosett_ai/composition/lockfile.rb +1 -0
- data/lib/rosett_ai/composition/merge_strategy.rb +1 -0
- data/lib/rosett_ai/config/masking_secret_resolver.rb +9 -0
- data/lib/rosett_ai/config/secret_resolver.rb +4 -0
- data/lib/rosett_ai/configuration.rb +4 -0
- data/lib/rosett_ai/content/content_client.rb +15 -0
- data/lib/rosett_ai/content/pack_installer.rb +1 -0
- data/lib/rosett_ai/content/pack_manifest.rb +21 -0
- data/lib/rosett_ai/content_packs/manager.rb +1 -0
- data/lib/rosett_ai/dbus/compositor_detector.rb +2 -0
- data/lib/rosett_ai/dbus/focus_adapters/base.rb +1 -0
- data/lib/rosett_ai/dbus/focus_adapters/gnome_adapter.rb +5 -0
- data/lib/rosett_ai/dbus/focus_adapters/hyprland_adapter.rb +4 -0
- data/lib/rosett_ai/dbus/focus_adapters/i3_adapter.rb +4 -0
- data/lib/rosett_ai/dbus/focus_adapters/kwin_adapter.rb +4 -0
- data/lib/rosett_ai/dbus/focus_adapters/x11_adapter.rb +4 -0
- data/lib/rosett_ai/dbus/focus_monitor_interface.rb +1 -0
- data/lib/rosett_ai/dbus/manager_interface.rb +1 -0
- data/lib/rosett_ai/dbus/plugin_manager_interface.rb +2 -0
- data/lib/rosett_ai/dbus/rate_limiter.rb +1 -0
- data/lib/rosett_ai/dbus/service.rb +3 -0
- data/lib/rosett_ai/dbus/status_notifier_interface.rb +14 -0
- data/lib/rosett_ai/desktop/dbus_client.rb +6 -0
- data/lib/rosett_ai/desktop/gtk4_app.rb +3 -0
- data/lib/rosett_ai/desktop/gtk4_preferences.rb +1 -0
- data/lib/rosett_ai/desktop/gui_logger.rb +2 -0
- data/lib/rosett_ai/doctor/check.rb +1 -1
- data/lib/rosett_ai/doctor/checks/cache_health_check.rb +1 -0
- data/lib/rosett_ai/doctor.rb +1 -0
- data/lib/rosett_ai/documentation/reference_compiler.rb +9 -0
- data/lib/rosett_ai/documentation/translator.rb +8 -0
- data/lib/rosett_ai/engines/base_config_compiler.rb +71 -1
- data/lib/rosett_ai/engines/detector.rb +5 -0
- data/lib/rosett_ai/engines/registry.rb +7 -0
- data/lib/rosett_ai/exit_codes.rb +6 -0
- data/lib/rosett_ai/formatting.rb +1 -0
- data/lib/rosett_ai/gem_consistency_checker.rb +6 -0
- data/lib/rosett_ai/git_hooks/chain_detector.rb +1 -0
- data/lib/rosett_ai/git_hooks/installer.rb +4 -0
- data/lib/rosett_ai/git_hooks/script_generator.rb +2 -0
- data/lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb +6 -0
- data/lib/rosett_ai/i18n/utf8_checker.rb +1 -0
- data/lib/rosett_ai/init/config_file_writer.rb +4 -0
- data/lib/rosett_ai/init/directory_builder.rb +15 -0
- data/lib/rosett_ai/init/file_copier.rb +51 -0
- data/lib/rosett_ai/init/mcp_registrar.rb +1 -0
- data/lib/rosett_ai/init/project_initializer.rb +1 -0
- data/lib/rosett_ai/licensing/license_key.rb +4 -0
- data/lib/rosett_ai/licensing/license_store.rb +11 -0
- data/lib/rosett_ai/licensing/tier.rb +9 -0
- data/lib/rosett_ai/mcp/admin/auditor.rb +1 -0
- data/lib/rosett_ai/mcp/admin/health_checker.rb +1 -0
- data/lib/rosett_ai/mcp/admin/registry.rb +1 -0
- data/lib/rosett_ai/mcp/enforcement/hook_generator.rb +27 -4
- data/lib/rosett_ai/mcp/enforcement/validator.rb +24 -3
- data/lib/rosett_ai/mcp/governance.rb +9 -0
- data/lib/rosett_ai/mcp/http_security_config.rb +22 -0
- data/lib/rosett_ai/mcp/key_hasher.rb +4 -2
- data/lib/rosett_ai/mcp/keyfile.rb +4 -0
- data/lib/rosett_ai/mcp/middleware/cors.rb +4 -0
- data/lib/rosett_ai/mcp/middleware/origin_validation.rb +1 -0
- data/lib/rosett_ai/mcp/middleware/rate_limit.rb +3 -0
- data/lib/rosett_ai/mcp/plugins.rb +1 -0
- data/lib/rosett_ai/mcp/prompts/compilation_prompt.rb +2 -0
- data/lib/rosett_ai/mcp/prompts/compliance_prompt.rb +3 -0
- data/lib/rosett_ai/mcp/prompts/diagnostics_prompt.rb +2 -0
- data/lib/rosett_ai/mcp/prompts/validation_prompt.rb +2 -0
- data/lib/rosett_ai/mcp/resources/behaviour_resource.rb +2 -0
- data/lib/rosett_ai/mcp/resources/config_resource.rb +2 -0
- data/lib/rosett_ai/mcp/resources/design_resource.rb +1 -0
- data/lib/rosett_ai/mcp/resources/hooks_resource.rb +3 -0
- data/lib/rosett_ai/mcp/resources/provenance_resource.rb +2 -0
- data/lib/rosett_ai/mcp/resources/rules_resource.rb +1 -0
- data/lib/rosett_ai/mcp/resources/schema_resource.rb +1 -0
- data/lib/rosett_ai/mcp/server.rb +7 -1
- data/lib/rosett_ai/mcp/settings/trust_manager.rb +3 -0
- data/lib/rosett_ai/mcp/tools/adopt_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/backup_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/behaviour_display_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/behaviour_list_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/behaviour_manage_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/behaviour_show_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/compile_status_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/compile_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/comply_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/config_compile_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/config_status_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/content_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/context_query_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/design_list_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/design_show_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/doctor_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/documentation_status_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/engines_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/hook_install_tool.rb +7 -0
- data/lib/rosett_ai/mcp/tools/hook_preview_tool.rb +33 -8
- data/lib/rosett_ai/mcp/tools/hooks_status_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/init_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/license_status_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/project_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/provenance_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/provenance_write_tool.rb +3 -0
- data/lib/rosett_ai/mcp/tools/retrofit_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/rule_search_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/schema_get_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/tooling_tool.rb +5 -0
- data/lib/rosett_ai/mcp/tools/validate_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/workflow_execute_tool.rb +4 -0
- data/lib/rosett_ai/mcp/tools/workflow_tool.rb +5 -0
- data/lib/rosett_ai/migration/detector.rb +1 -0
- data/lib/rosett_ai/migration/nncc_config_migrator.rb +2 -0
- data/lib/rosett_ai/migration/xdg_migrator.rb +3 -1
- data/lib/rosett_ai/package_manager/apt.rb +5 -0
- data/lib/rosett_ai/package_manager/base.rb +1 -0
- data/lib/rosett_ai/package_manager/gem_backend.rb +1 -0
- data/lib/rosett_ai/packaging/variant_config.rb +12 -0
- data/lib/rosett_ai/plugins/contract.rb +1 -0
- data/lib/rosett_ai/plugins/engine_contract.rb +2 -0
- data/lib/rosett_ai/plugins/gui_contract.rb +2 -0
- data/lib/rosett_ai/plugins/mcp_contract.rb +2 -0
- data/lib/rosett_ai/plugins/registry.rb +10 -0
- data/lib/rosett_ai/policy/auditor.rb +1 -0
- data/lib/rosett_ai/policy/opt_out_scanner.rb +1 -0
- data/lib/rosett_ai/policy/tier_hierarchy.rb +2 -0
- data/lib/rosett_ai/policy/validator.rb +1 -0
- data/lib/rosett_ai/profiler.rb +7 -0
- data/lib/rosett_ai/project/drift_detector.rb +1 -0
- data/lib/rosett_ai/project/manager.rb +1 -0
- data/lib/rosett_ai/project/template_applier.rb +1 -0
- data/lib/rosett_ai/provenance/entry.rb +2 -0
- data/lib/rosett_ai/provenance/source.rb +1 -0
- data/lib/rosett_ai/provenance/store.rb +3 -0
- data/lib/rosett_ai/provenance/validator.rb +1 -0
- data/lib/rosett_ai/quorum/collector.rb +1 -0
- data/lib/rosett_ai/quorum/comparator.rb +2 -0
- data/lib/rosett_ai/quorum/strategies/adopt.rb +1 -0
- data/lib/rosett_ai/rai_config.rb +9 -0
- data/lib/rosett_ai/retrofit/engine.rb +2 -0
- data/lib/rosett_ai/retrofit/parsers/agents_md_parser.rb +8 -0
- data/lib/rosett_ai/retrofit/parsers/claude_parser.rb +10 -0
- data/lib/rosett_ai/retrofit/parsers/cursor_parser.rb +9 -0
- data/lib/rosett_ai/retrofit/secret_detector.rb +3 -0
- data/lib/rosett_ai/secrets_resolver.rb +1 -0
- data/lib/rosett_ai/session_hooks/installer.rb +130 -0
- data/lib/rosett_ai/smart_feedback/suggester.rb +4 -0
- data/lib/rosett_ai/smart_feedback/thor_middleware.rb +7 -0
- data/lib/rosett_ai/structured_logger.rb +1 -0
- data/lib/rosett_ai/telemetry/log_rotator.rb +1 -0
- data/lib/rosett_ai/telemetry.rb +1 -0
- data/lib/rosett_ai/thor/cli.rb +9 -0
- data/lib/rosett_ai/thor/tasks/adopt.rb +2 -0
- data/lib/rosett_ai/thor/tasks/backfill_user_yml.rb +207 -0
- data/lib/rosett_ai/thor/tasks/backup.rb +6 -0
- data/lib/rosett_ai/thor/tasks/behaviour.rb +12 -0
- data/lib/rosett_ai/thor/tasks/build.rb +106 -21
- data/lib/rosett_ai/thor/tasks/compile.rb +76 -32
- data/lib/rosett_ai/thor/tasks/completion.rb +9 -0
- data/lib/rosett_ai/thor/tasks/comply.rb +2 -0
- data/lib/rosett_ai/thor/tasks/config.rb +21 -5
- data/lib/rosett_ai/thor/tasks/content.rb +8 -0
- data/lib/rosett_ai/thor/tasks/dbus.rb +13 -0
- data/lib/rosett_ai/thor/tasks/design.rb +2 -0
- data/lib/rosett_ai/thor/tasks/desktop.rb +4 -0
- data/lib/rosett_ai/thor/tasks/doctor.rb +2 -0
- data/lib/rosett_ai/thor/tasks/documentation.rb +7 -0
- data/lib/rosett_ai/thor/tasks/engines.rb +8 -0
- data/lib/rosett_ai/thor/tasks/hooks.rb +8 -0
- data/lib/rosett_ai/thor/tasks/init.rb +1 -0
- data/lib/rosett_ai/thor/tasks/license.rb +8 -0
- data/lib/rosett_ai/thor/tasks/mcp.rb +40 -0
- data/lib/rosett_ai/thor/tasks/migrate.rb +2 -0
- data/lib/rosett_ai/thor/tasks/plugins.rb +15 -0
- data/lib/rosett_ai/thor/tasks/project.rb +8 -0
- data/lib/rosett_ai/thor/tasks/provenance.rb +8 -0
- data/lib/rosett_ai/thor/tasks/release.rb +8 -0
- data/lib/rosett_ai/thor/tasks/retrofit.rb +4 -0
- data/lib/rosett_ai/thor/tasks/validate.rb +1 -0
- data/lib/rosett_ai/thor/tasks/workflow.rb +14 -0
- data/lib/rosett_ai/tooling/version_checker.rb +1 -0
- data/lib/rosett_ai/ui/accessible_tui.rb +18 -0
- data/lib/rosett_ai/ui/base.rb +3 -0
- data/lib/rosett_ai/ui/gtk4.rb +19 -0
- data/lib/rosett_ai/ui/kde.rb +1 -0
- data/lib/rosett_ai/ui/qt6.rb +1 -0
- data/lib/rosett_ai/ui/registry.rb +15 -0
- data/lib/rosett_ai/ui/tui.rb +22 -0
- data/lib/rosett_ai/validators/behaviour_validator.rb +1 -0
- data/lib/rosett_ai/validators/design_validator.rb +2 -0
- data/lib/rosett_ai/validators/schema_validator.rb +4 -0
- data/lib/rosett_ai/validators/tooling_validator.rb +1 -0
- data/lib/rosett_ai/version.rb +2 -1
- data/lib/rosett_ai/version_consistency_checker.rb +6 -0
- data/lib/rosett_ai/workflow/engine.rb +1 -0
- data/lib/rosett_ai/workflow/manager.rb +1 -0
- data/lib/rosett_ai/workflow/schema_validator.rb +2 -0
- data/lib/rosett_ai/workflow/step_runner.rb +1 -0
- data/lib/rosett_ai/workflow/steps/rai_step.rb +1 -0
- data/lib/rosett_ai/yaml_loader.rb +2 -0
- data/lib/rosett_ai.rb +2 -0
- data/lib/scripts/generated/docker_hub_tags.rb +2 -0
- data/locales/ar.yml +2 -0
- data/locales/en.yml +5 -0
- data/locales/fr.yml +2 -0
- metadata +9 -189
- data/.ai-provenance.yml +0 -119
- data/.debride_whitelist +0 -186
- data/.fasterer.yml +0 -29
- data/.mdl_style.rb +0 -10
- data/.mdlrc +0 -3
- data/.mutant.yml +0 -49
- data/.namespace-allowlist +0 -42
- data/.reek.yml +0 -1040
- data/.rosett-ai/config.yml +0 -3
- data/.rspec +0 -5
- data/.rubocop.yml +0 -380
- data/.ruby-version +0 -1
- data/.yamllint +0 -51
- data/.yardopts +0 -12
- data/AI-DISCLOSURE.md +0 -48
- data/CLAUDE.md +0 -141
- data/CONTRIBUTING.md +0 -734
- data/INSTALL.md +0 -154
- data/LICENSE.md +0 -675
- data/QUICKSTART.md +0 -73
- data/Rakefile +0 -200
- data/SECURITY.md +0 -114
- data/cliff.toml +0 -52
- data/conf/behaviour/.gitkeep +0 -0
- data/conf/design/aaif_alignment.yml +0 -181
- data/conf/design/ab_testing.yml +0 -172
- data/conf/design/accessibility.yml +0 -84
- data/conf/design/ai_authorship.yml +0 -210
- data/conf/design/ai_provenance.yml +0 -224
- data/conf/design/ai_tool_configuration.yml +0 -207
- data/conf/design/architecture.yml +0 -139
- data/conf/design/autocompletion.yml +0 -115
- data/conf/design/backward_compatibility.yml +0 -112
- data/conf/design/behaviour_composition.yml +0 -246
- data/conf/design/build_rake_extraction.yml +0 -57
- data/conf/design/ci_pipeline.yml +0 -100
- data/conf/design/claude_code_configuration.yml +0 -157
- data/conf/design/compiler.yml +0 -128
- data/conf/design/comply.yml +0 -153
- data/conf/design/content_packs.yml +0 -84
- data/conf/design/desktop_integration.yml +0 -289
- data/conf/design/distribution.yml +0 -216
- data/conf/design/doctor.yml +0 -184
- data/conf/design/documentation.yml +0 -152
- data/conf/design/engine_architecture.yml +0 -257
- data/conf/design/error_handling.yml +0 -103
- data/conf/design/feature_flags.yml +0 -142
- data/conf/design/git_hooks.yml +0 -165
- data/conf/design/gui_plugins.yml +0 -475
- data/conf/design/i18n.yml +0 -84
- data/conf/design/integration_testing.yml +0 -56
- data/conf/design/licensing_system.yml +0 -88
- data/conf/design/lifecycle_management.yml +0 -208
- data/conf/design/mcp_integration.yml +0 -207
- data/conf/design/mcp_settings.yml +0 -126
- data/conf/design/migration.yml +0 -56
- data/conf/design/monitoring_observability.yml +0 -194
- data/conf/design/namespace_cleanup.yml +0 -145
- data/conf/design/plugin_test_segregation.yml +0 -145
- data/conf/design/policy_management.yml +0 -229
- data/conf/design/project_management.yml +0 -183
- data/conf/design/rai_mcp_asset_discovery.yml +0 -164
- data/conf/design/rai_mcp_server.yml +0 -605
- data/conf/design/release_management.yml +0 -117
- data/conf/design/retrofit.yml +0 -199
- data/conf/design/retrospective_analyzer.yml +0 -79
- data/conf/design/scope_hierarchy.yml +0 -352
- data/conf/design/security.yml +0 -115
- data/conf/design/session_retrospective.yml +0 -85
- data/conf/design/smart_ui_feedback.yml +0 -89
- data/conf/design/structured_logging.yml +0 -148
- data/conf/design/styles.yml +0 -123
- data/conf/design/test_peer_review.yml +0 -89
- data/conf/design/testing.yml +0 -136
- data/conf/design/threat_model.yml +0 -108
- data/conf/design/ui_framework.yml +0 -111
- data/conf/design/usage_optimization.yml +0 -122
- data/conf/design/version_management.yml +0 -60
- data/conf/design/workflow.yml +0 -227
- data/doc/AAIF_POSITIONING.md +0 -58
- data/doc/ADOPT.md +0 -224
- data/doc/AI_PROVENANCE.md +0 -139
- data/doc/ARCHITECTURE.md +0 -920
- data/doc/BEHAVIOUR.md +0 -409
- data/doc/BUILD.md +0 -138
- data/doc/CI_CD_RECIPES.md +0 -171
- data/doc/CLAUDE_SESSIONS_MOVED.md +0 -16
- data/doc/COMMAND_ANALYSIS.md +0 -229
- data/doc/CONFIGURATION.md +0 -281
- data/doc/DESIGN_AUDIT.md +0 -235
- data/doc/DESIGN_PEER_REVIEW.md +0 -771
- data/doc/DESKTOP.md +0 -447
- data/doc/ENGINES.md +0 -567
- data/doc/ENGINE_DEVELOPMENT_GUIDE.md +0 -417
- data/doc/FEATURE_AUDIT.md +0 -218
- data/doc/IMPLEMENTATION_PLAN.md +0 -669
- data/doc/INCIDENT_REPORT_2026-02-02.md +0 -251
- data/doc/MIGRATION_GUIDE.md +0 -88
- data/doc/PACKAGING.md +0 -232
- data/doc/PROJECT_DASHBOARD.md +0 -153
- data/doc/PULP_DEPLOYMENT.md +0 -164
- data/doc/QUALITY_FIX_SUMMARY.md +0 -110
- data/doc/QUICK_START.md +0 -162
- data/doc/REEK_CONFIGURATION.md +0 -166
- data/doc/REFERENCE.md +0 -253
- data/doc/REFERENCES.md +0 -324
- data/doc/SECURITY_REVIEW_CHECKLIST.md +0 -72
- data/doc/SESSION_2026-02-28_GTK4_HARDENING.md +0 -359
- data/doc/SETUP.md +0 -202
- data/doc/TEST_PEER_REVIEW.md +0 -152
- data/doc/THREAT_MODEL.md +0 -230
- data/doc/USAGE.md +0 -545
- data/doc/USER_MANUAL.md +0 -585
- data/doc/ai_test_review_checklist.md +0 -110
- data/doc/changes/2026-02-18-packaging-fpm.md +0 -155
- data/doc/changes/2026-02-19-testing-infrastructure.md +0 -221
- data/doc/changes/2026-02-20-security-implementation.md +0 -281
- data/doc/changes/2026-02-20-styles-implementation.md +0 -220
- data/doc/changes/2026-02-21-architecture-completion.md +0 -95
- data/doc/changes/2026-02-21-architecture-ui-layer.md +0 -253
- data/doc/changes/2026-02-21-cc-config-implementation.md +0 -108
- data/doc/changes/2026-02-21-ci-pipeline-implementation.md +0 -214
- data/doc/changes/2026-02-21-compiler-multi-target-pipeline.md +0 -241
- data/doc/changes/2026-02-21-config-design-show-commands.md +0 -61
- data/doc/changes/2026-02-21-design-implementation-overview.md +0 -455
- data/doc/changes/2026-02-21-lifecycle-management.md +0 -196
- data/doc/changes/2026-02-21-path-resolver.md +0 -128
- data/doc/changes/2026-02-24-ci-tmpdir-mutant-fetch.md +0 -45
- data/doc/changes/2026-03-01-ci-bundler-strategy.md +0 -120
- data/doc/changes/2026-03-20-security-hardening-phase2.md +0 -163
- data/doc/context/SESSION-HANDOFF.md +0 -69
- data/doc/context/ai-engine-usage-trends-2026.md +0 -80
- data/doc/context/plan-pluggable-engines.md +0 -590
- data/doc/decisions/001-flog-deferred.md +0 -32
- data/doc/decisions/002-path-resolution-strategy.md +0 -158
- data/doc/decisions/003-ui-adapter-selection.md +0 -193
- data/doc/decisions/004-design-document-validation.md +0 -179
- data/doc/decisions/005-package-splitting-strategy.md +0 -200
- data/doc/decisions/006-multi-engine-architecture.md +0 -147
- data/doc/decisions/007-engine-agnostic-pivot.md +0 -219
- data/doc/decisions/008-ci-bundler-strategy.md +0 -129
- data/doc/decisions/009-core-only-v1-release.md +0 -60
- data/doc/decisions/010-engine-debian-packaging.md +0 -66
- data/doc/decisions/011-context-aware-cli.md +0 -71
- data/doc/dependency_decisions.yml +0 -247
- data/doc/issues/001-wrapper-missing-environment-variables.md +0 -197
- data/doc/issues/002-embedded-ruby-wrong-prefix.md +0 -217
- data/doc/issues/003-smoke-test-false-positive.md +0 -127
- data/doc/issues/004-market-research-design-updates.md +0 -109
- data/doc/issues/005-compile-scope-coexistence.md +0 -161
- data/doc/locales/.gitkeep +0 -0
- data/doc/man/rai.1.ronn +0 -505
- data/doc/operations/packaging.md +0 -133
- data/doc/operations/rosett-ai-release.md +0 -65
- data/doc/reference/error-catalog.md +0 -107
- data/doc/reference/rosett-ai-technical-reference.pdf +0 -0
- data/doc/reference/src/Pictures/cover.jpg +0 -0
- data/doc/reference/src/Pictures/head1.jpg +0 -0
- data/doc/reference/src/Pictures/head2.jpg +0 -0
- data/doc/reference/src/Pictures/head3.jpg +0 -0
- data/doc/reference/src/Pictures/head4.jpg +0 -0
- data/doc/reference/src/Pictures/head5.jpg +0 -0
- data/doc/reference/src/Pictures/head6.jpg +0 -0
- data/doc/reference/src/Pictures/head7.jpg +0 -0
- data/doc/reference/src/Pictures/head8.jpg +0 -0
- data/doc/reference/src/StyleInd.ist +0 -4
- data/doc/reference/src/bibliography.bib +0 -79
- data/doc/reference/src/main.tex +0 -1288
- data/doc/reference/src/structure.tex +0 -303
- data/doc/rosett-ai-bookmarks.html +0 -301
- data/kitchen.yml +0 -46
- data/lib/rosett_ai/mcp/enforcement/.gitkeep +0 -0
- data/locales/.gitkeep +0 -0
- data/packaging/build-engine-deb.sh +0 -81
- data/packaging/scripts/postinst +0 -17
- data/packaging/scripts/postrm +0 -19
- data/packaging/scripts/prerm +0 -10
- data/packaging/wrapper.sh.template +0 -38
- data/rosett-ai.gemspec +0 -63
- data/rules/.gitkeep +0 -0
- data/scripts/publish/pulp_upload.sh +0 -123
- data/settings.json +0 -29
data/.rosett-ai/config.yml
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
# Rosett-AI - RuboCop Configuration
|
|
2
|
-
#
|
|
3
|
-
# MFA disabled due to OTP timing issues when pushing gems
|
|
4
|
-
Gemspec/RequireMFA:
|
|
5
|
-
Enabled: false
|
|
6
|
-
#
|
|
7
|
-
# Use plugins for extensions that support it
|
|
8
|
-
plugins:
|
|
9
|
-
- rubocop-factory_bot
|
|
10
|
-
- rubocop-performance
|
|
11
|
-
- rubocop-rake
|
|
12
|
-
- rubocop-rspec
|
|
13
|
-
- rubocop-thread_safety
|
|
14
|
-
#
|
|
15
|
-
# Custom project cops
|
|
16
|
-
require:
|
|
17
|
-
- ./lib/rubocop/rosett_ai
|
|
18
|
-
#
|
|
19
|
-
# === Custom Security Cops ===
|
|
20
|
-
#
|
|
21
|
-
RosettAi/UnsafeYamlLoad:
|
|
22
|
-
Enabled: true
|
|
23
|
-
Severity: error
|
|
24
|
-
#
|
|
25
|
-
RosettAi/ShellInterpolation:
|
|
26
|
-
Enabled: true
|
|
27
|
-
Severity: error
|
|
28
|
-
#
|
|
29
|
-
# Advisory cops (warning) - existing safe code uses frozen registries
|
|
30
|
-
RosettAi/UnsafeConstGet:
|
|
31
|
-
Enabled: true
|
|
32
|
-
Severity: warning
|
|
33
|
-
Exclude:
|
|
34
|
-
# RuboCop cops use on_send which is part of the AST API
|
|
35
|
-
- 'lib/rubocop/cop/**/*'
|
|
36
|
-
# Test helpers use dynamic patterns for setup
|
|
37
|
-
- 'spec/**/*'
|
|
38
|
-
# These files use frozen PARSER_REGISTRY/CATEGORIES constants (safe pattern)
|
|
39
|
-
- 'lib/rosett_ai/retrofit/engine.rb'
|
|
40
|
-
- 'lib/rosett_ai/thor/tasks/validate.rb'
|
|
41
|
-
# Logger const_get catches NameError and falls back to WARN (safe)
|
|
42
|
-
- 'lib/rosett_ai/structured_logger.rb'
|
|
43
|
-
#
|
|
44
|
-
RosettAi/UnsafeSend:
|
|
45
|
-
Enabled: true
|
|
46
|
-
Severity: warning
|
|
47
|
-
Exclude:
|
|
48
|
-
# GTK4 apps use send for action dispatch with validated method names
|
|
49
|
-
- 'lib/rosett_ai/desktop/**/*'
|
|
50
|
-
# GUI logger delegates via send with internally-defined method names
|
|
51
|
-
- 'lib/rosett_ai/desktop/gui_logger.rb'
|
|
52
|
-
# Thor tasks use send for Rainbow color methods (hardcoded)
|
|
53
|
-
- 'lib/rosett_ai/thor/tasks/**/*'
|
|
54
|
-
# RuboCop cops test AST patterns
|
|
55
|
-
- 'lib/rubocop/cop/**/*'
|
|
56
|
-
# Test helpers may use dynamic dispatch
|
|
57
|
-
- 'spec/**/*'
|
|
58
|
-
#
|
|
59
|
-
# === Thread Safety ===
|
|
60
|
-
#
|
|
61
|
-
# Thread safety cops are advisory for nncc — many patterns that trigger these
|
|
62
|
-
# cops are intentional (singletons, registries, parallel dispatch). We exclude
|
|
63
|
-
# files with known-safe patterns and keep the cops enabled to catch new issues.
|
|
64
|
-
#
|
|
65
|
-
ThreadSafety:
|
|
66
|
-
Enabled: true
|
|
67
|
-
Exclude:
|
|
68
|
-
# Test files may use patterns that trigger thread safety cops for setup/teardown
|
|
69
|
-
- 'spec/**/*'
|
|
70
|
-
#
|
|
71
|
-
ThreadSafety/ClassInstanceVariable:
|
|
72
|
-
Enabled: true
|
|
73
|
-
Exclude:
|
|
74
|
-
# Module-level memoization for singletons (standard Ruby pattern)
|
|
75
|
-
- 'lib/rosett_ai.rb'
|
|
76
|
-
# Singleton patterns and registries (intentional)
|
|
77
|
-
- 'lib/rosett_ai/dbus/**/*'
|
|
78
|
-
- 'lib/rosett_ai/deprecation.rb'
|
|
79
|
-
- 'lib/rosett_ai/desktop/**/*'
|
|
80
|
-
- 'lib/rosett_ai/doctor.rb'
|
|
81
|
-
- 'lib/rosett_ai/doctor/check.rb'
|
|
82
|
-
- 'lib/rosett_ai/feature_flags.rb'
|
|
83
|
-
- 'lib/rosett_ai/path_resolver.rb'
|
|
84
|
-
- 'lib/rosett_ai/plugins/registry.rb'
|
|
85
|
-
- 'lib/rosett_ai/structured_logger.rb'
|
|
86
|
-
- 'lib/rosett_ai/telemetry/reporter.rb'
|
|
87
|
-
- 'lib/rosett_ai/thor/tasks/build.rb'
|
|
88
|
-
- 'lib/rosett_ai/ui/registry.rb'
|
|
89
|
-
- 'spec/**/*'
|
|
90
|
-
#
|
|
91
|
-
ThreadSafety/NewThread:
|
|
92
|
-
Enabled: true
|
|
93
|
-
Exclude:
|
|
94
|
-
# D-Bus service and focus adapters require threads by design
|
|
95
|
-
- 'lib/rosett_ai/dbus/**/*'
|
|
96
|
-
# Quorum dispatcher uses threads for parallel engine execution
|
|
97
|
-
- 'lib/rosett_ai/quorum/dispatcher.rb'
|
|
98
|
-
- 'spec/**/*'
|
|
99
|
-
#
|
|
100
|
-
ThreadSafety/DirChdir:
|
|
101
|
-
Enabled: true
|
|
102
|
-
Exclude:
|
|
103
|
-
# Tests commonly use Dir.chdir for isolation
|
|
104
|
-
- 'spec/**/*'
|
|
105
|
-
# Reference compiler needs chdir for relative path handling
|
|
106
|
-
- 'lib/rosett_ai/documentation/reference_compiler.rb'
|
|
107
|
-
# Gemspec uses chdir for file listing
|
|
108
|
-
- '*.gemspec'
|
|
109
|
-
#
|
|
110
|
-
ThreadSafety/ClassAndModuleAttributes:
|
|
111
|
-
Enabled: true
|
|
112
|
-
Exclude:
|
|
113
|
-
- 'spec/**/*'
|
|
114
|
-
#
|
|
115
|
-
ThreadSafety/MutableClassInstanceVariable:
|
|
116
|
-
Enabled: true
|
|
117
|
-
Exclude:
|
|
118
|
-
- 'spec/**/*'
|
|
119
|
-
# Registry patterns use mutable hashes intentionally
|
|
120
|
-
- 'lib/rosett_ai/deprecation.rb'
|
|
121
|
-
- 'lib/rosett_ai/doctor.rb'
|
|
122
|
-
- 'lib/rosett_ai/ui/registry.rb'
|
|
123
|
-
#
|
|
124
|
-
AllCops:
|
|
125
|
-
TargetRubyVersion: 3.3
|
|
126
|
-
NewCops: enable
|
|
127
|
-
Exclude:
|
|
128
|
-
- 'vendor/**/*'
|
|
129
|
-
- 'tmp/**/*'
|
|
130
|
-
- 'cache/**/*'
|
|
131
|
-
- 'coverage/**/*'
|
|
132
|
-
- 'pkg/**/*'
|
|
133
|
-
#
|
|
134
|
-
# Layout
|
|
135
|
-
Layout/LineLength:
|
|
136
|
-
Max: 120
|
|
137
|
-
AllowedPatterns:
|
|
138
|
-
- '^\s*#'
|
|
139
|
-
- '^\s*"'
|
|
140
|
-
- "^\\s*'"
|
|
141
|
-
#
|
|
142
|
-
Layout/MultilineMethodCallIndentation:
|
|
143
|
-
EnforcedStyle: indented
|
|
144
|
-
#
|
|
145
|
-
Layout/FirstArrayElementIndentation:
|
|
146
|
-
EnforcedStyle: consistent
|
|
147
|
-
#
|
|
148
|
-
Layout/FirstHashElementIndentation:
|
|
149
|
-
EnforcedStyle: consistent
|
|
150
|
-
#
|
|
151
|
-
# Metrics
|
|
152
|
-
Metrics/AbcSize:
|
|
153
|
-
Max: 25
|
|
154
|
-
Exclude:
|
|
155
|
-
# Test setup blocks are inherently verbose (let chains, before hooks, multi-step arrange)
|
|
156
|
-
- 'spec/**/*'
|
|
157
|
-
# Thor tasks orchestrate multi-stage workflows (build, backup, compile) with sequential steps
|
|
158
|
-
- 'lib/rosett_ai/thor/tasks/**/*'
|
|
159
|
-
# Compiler render/diff methods handle complex string assembly and multi-pass transformation
|
|
160
|
-
- 'lib/rosett_ai/compiler/**/*'
|
|
161
|
-
# GTK4 desktop app builds UI widget trees — inherently creates many objects
|
|
162
|
-
- 'lib/rosett_ai/desktop/**/*'
|
|
163
|
-
# Engine backends render markdown with complex string assembly
|
|
164
|
-
- 'lib/rosett_ai/engines/*/backend.rb'
|
|
165
|
-
#
|
|
166
|
-
Metrics/BlockLength:
|
|
167
|
-
Exclude:
|
|
168
|
-
# RSpec describe/context blocks are naturally long by design
|
|
169
|
-
- 'spec/**/*'
|
|
170
|
-
# Standard Ruby exclusions — gemspec, Gemfile, and Rakefile use DSL blocks
|
|
171
|
-
- '*.gemspec'
|
|
172
|
-
- 'Gemfile'
|
|
173
|
-
- 'Rakefile'
|
|
174
|
-
#
|
|
175
|
-
Metrics/ModuleLength:
|
|
176
|
-
Exclude:
|
|
177
|
-
# Root module declares 20+ error classes (one-liners) + module-level singletons
|
|
178
|
-
- 'lib/rosett_ai.rb'
|
|
179
|
-
# Instructions module contains 7 markdown heredoc sections — content, not complexity
|
|
180
|
-
- 'lib/rosett_ai/mcp/instructions.rb'
|
|
181
|
-
# Governance module is a tool/resource/prompt registry — grows with each tool
|
|
182
|
-
- 'lib/rosett_ai/mcp/governance.rb'
|
|
183
|
-
#
|
|
184
|
-
Metrics/ClassLength:
|
|
185
|
-
Max: 200
|
|
186
|
-
Exclude:
|
|
187
|
-
# BuildPackage orchestrates a 9-stage build pipeline with per-stage methods and formatting
|
|
188
|
-
- 'lib/rosett_ai/thor/tasks/build.rb'
|
|
189
|
-
# Documentation has scan + apply + reference compilation + locale + status methods
|
|
190
|
-
- 'lib/rosett_ai/thor/tasks/documentation.rb'
|
|
191
|
-
# Compile orchestrates engine resolution + compilation + orphan removal + locale compilation
|
|
192
|
-
- 'lib/rosett_ai/thor/tasks/compile.rb'
|
|
193
|
-
# GTK4 desktop app has many UI builder methods and action handlers
|
|
194
|
-
- 'lib/rosett_ai/desktop/**/*'
|
|
195
|
-
# Thor task classes grow with long_desc blocks (help text, not logic)
|
|
196
|
-
- 'lib/rosett_ai/thor/tasks/mcp.rb'
|
|
197
|
-
- 'lib/rosett_ai/thor/tasks/dbus.rb'
|
|
198
|
-
- 'lib/rosett_ai/thor/tasks/release.rb'
|
|
199
|
-
# Init has long_desc blocks + multiple scope setup methods + MCP registration
|
|
200
|
-
- 'lib/rosett_ai/thor/tasks/init.rb'
|
|
201
|
-
- 'lib/rosett_ai/thor/tasks/tooling.rb'
|
|
202
|
-
- 'lib/rosett_ai/thor/tasks/hooks.rb'
|
|
203
|
-
- 'lib/rosett_ai/thor/tasks/backup.rb'
|
|
204
|
-
#
|
|
205
|
-
Metrics/MethodLength:
|
|
206
|
-
Max: 25
|
|
207
|
-
Exclude:
|
|
208
|
-
# Test methods contain multi-step setup and assertion sequences
|
|
209
|
-
- 'spec/**/*'
|
|
210
|
-
# Thor task methods orchestrate multi-stage CLI workflows with inline output formatting
|
|
211
|
-
- 'lib/rosett_ai/thor/tasks/**/*'
|
|
212
|
-
# GTK4 desktop app methods build widget trees with multiple configuration steps
|
|
213
|
-
- 'lib/rosett_ai/desktop/**/*'
|
|
214
|
-
#
|
|
215
|
-
Metrics/CyclomaticComplexity:
|
|
216
|
-
Max: 10
|
|
217
|
-
#
|
|
218
|
-
Metrics/PerceivedComplexity:
|
|
219
|
-
Max: 10
|
|
220
|
-
#
|
|
221
|
-
# Naming
|
|
222
|
-
Naming/FileName:
|
|
223
|
-
Exclude:
|
|
224
|
-
- 'Gemfile'
|
|
225
|
-
- 'Rakefile'
|
|
226
|
-
#
|
|
227
|
-
Naming/AccessorMethodName:
|
|
228
|
-
Exclude:
|
|
229
|
-
# D-Bus interfaces follow standard D-Bus method naming (GetStatus, GetFocusState)
|
|
230
|
-
- 'lib/rosett_ai/dbus/*_interface.rb'
|
|
231
|
-
#
|
|
232
|
-
# Style
|
|
233
|
-
Style/Documentation:
|
|
234
|
-
Enabled: true
|
|
235
|
-
#
|
|
236
|
-
Style/FrozenStringLiteralComment:
|
|
237
|
-
Enabled: true
|
|
238
|
-
EnforcedStyle: always
|
|
239
|
-
#
|
|
240
|
-
Style/Copyright:
|
|
241
|
-
Enabled: true
|
|
242
|
-
Notice: 'SPDX-License-Identifier: GPL-3.0-only'
|
|
243
|
-
AutocorrectNotice: "# SPDX-License-Identifier: GPL-3.0-only\n# Copyright (C) 2026 Hugo Antonio Sepulveda Manriquez / NeatNerds"
|
|
244
|
-
Exclude:
|
|
245
|
-
# Dependency manifests and external config files are not project source code
|
|
246
|
-
- 'Gemfile'
|
|
247
|
-
- '.mdl_style.rb'
|
|
248
|
-
#
|
|
249
|
-
Style/StringLiterals:
|
|
250
|
-
EnforcedStyle: single_quotes
|
|
251
|
-
#
|
|
252
|
-
Style/StringLiteralsInInterpolation:
|
|
253
|
-
EnforcedStyle: single_quotes
|
|
254
|
-
#
|
|
255
|
-
Style/SymbolArray:
|
|
256
|
-
EnforcedStyle: brackets
|
|
257
|
-
#
|
|
258
|
-
Style/WordArray:
|
|
259
|
-
EnforcedStyle: brackets
|
|
260
|
-
#
|
|
261
|
-
Style/TrailingCommaInArrayLiteral:
|
|
262
|
-
EnforcedStyleForMultiline: no_comma
|
|
263
|
-
#
|
|
264
|
-
Style/TrailingCommaInHashLiteral:
|
|
265
|
-
EnforcedStyleForMultiline: no_comma
|
|
266
|
-
#
|
|
267
|
-
Style/HashSyntax:
|
|
268
|
-
EnforcedStyle: ruby19
|
|
269
|
-
#
|
|
270
|
-
Style/RedundantSelf:
|
|
271
|
-
Enabled: true
|
|
272
|
-
#
|
|
273
|
-
Style/ClassAndModuleChildren:
|
|
274
|
-
EnforcedStyle: nested
|
|
275
|
-
#
|
|
276
|
-
Style/RescueModifier:
|
|
277
|
-
Exclude:
|
|
278
|
-
# Tests use rescue modifier for concise exception-testing patterns
|
|
279
|
-
- 'spec/**/*'
|
|
280
|
-
#
|
|
281
|
-
Style/RedundantConstantBase:
|
|
282
|
-
Enabled: true
|
|
283
|
-
Exclude:
|
|
284
|
-
# Specs reference ::Thor to avoid resolving to RosettAi::Thor module
|
|
285
|
-
- 'spec/rosett_ai/smart_feedback/thor_middleware_spec.rb'
|
|
286
|
-
- 'spec/rosett_ai/thor/tasks/**/*'
|
|
287
|
-
#
|
|
288
|
-
# RSpec
|
|
289
|
-
RSpec/ExampleLength:
|
|
290
|
-
Max: 15
|
|
291
|
-
#
|
|
292
|
-
RSpec/MultipleMemoizedHelpers:
|
|
293
|
-
Max: 7
|
|
294
|
-
#
|
|
295
|
-
RSpec/MultipleExpectations:
|
|
296
|
-
Max: 5
|
|
297
|
-
#
|
|
298
|
-
RSpec/NestedGroups:
|
|
299
|
-
Max: 4
|
|
300
|
-
#
|
|
301
|
-
RSpec/DescribeClass:
|
|
302
|
-
Exclude:
|
|
303
|
-
# Integration specs test cross-cutting behaviour, not individual classes
|
|
304
|
-
- 'spec/integration/**/*'
|
|
305
|
-
#
|
|
306
|
-
RSpec/SpecFilePathFormat:
|
|
307
|
-
Enabled: true
|
|
308
|
-
Exclude:
|
|
309
|
-
# D-Bus module uses uppercase DBus, not D_Bus — directory naming follows module structure
|
|
310
|
-
- 'spec/rosett_ai/dbus/**/*'
|
|
311
|
-
- 'spec/rosett_ai/thor/tasks/dbus_spec.rb'
|
|
312
|
-
#
|
|
313
|
-
RSpec/SpecFilePathSuffix:
|
|
314
|
-
Enabled: true
|
|
315
|
-
#
|
|
316
|
-
RSpec/AnyInstance:
|
|
317
|
-
Exclude:
|
|
318
|
-
# Thor tasks have private stage methods that need stubbing for isolation testing
|
|
319
|
-
- 'spec/rosett_ai/thor/tasks/**/*'
|
|
320
|
-
# D-Bus interfaces use AnyInstance for stubbing compile pipelines
|
|
321
|
-
- 'spec/rosett_ai/dbus/**/*'
|
|
322
|
-
#
|
|
323
|
-
RSpec/VerifiedDoubles:
|
|
324
|
-
Exclude:
|
|
325
|
-
# External D-Bus libraries (ruby-dbus, i3ipc) can't be verified — classes loaded dynamically
|
|
326
|
-
- 'spec/rosett_ai/dbus/**/*'
|
|
327
|
-
- 'spec/rosett_ai/thor/tasks/dbus_spec.rb'
|
|
328
|
-
# GTK4/Adwaita classes can't be verified — gem may not be installed
|
|
329
|
-
- 'spec/rosett_ai/desktop/**/*'
|
|
330
|
-
- 'spec/rosett_ai/thor/tasks/desktop_spec.rb'
|
|
331
|
-
# MCP gem classes are optional — can't be verified when gem not loaded
|
|
332
|
-
- 'spec/rosett_ai/mcp/server_spec.rb'
|
|
333
|
-
#
|
|
334
|
-
RSpec/MessageSpies:
|
|
335
|
-
Exclude:
|
|
336
|
-
# D-Bus specs use expect().to receive for setup simplicity with mocked external services
|
|
337
|
-
- 'spec/rosett_ai/dbus/**/*'
|
|
338
|
-
# Desktop specs use expect().to receive for GTK4/D-Bus mocking
|
|
339
|
-
- 'spec/rosett_ai/desktop/**/*'
|
|
340
|
-
- 'spec/rosett_ai/thor/tasks/desktop_spec.rb'
|
|
341
|
-
#
|
|
342
|
-
RSpec/ReceiveMessages:
|
|
343
|
-
Exclude:
|
|
344
|
-
# Desktop specs set up mock objects with multiple stubs
|
|
345
|
-
- 'spec/rosett_ai/desktop/**/*'
|
|
346
|
-
- 'spec/rosett_ai/thor/tasks/desktop_spec.rb'
|
|
347
|
-
#
|
|
348
|
-
RSpec/LeadingSubject:
|
|
349
|
-
Exclude:
|
|
350
|
-
# Desktop specs place subject after mocks for readability
|
|
351
|
-
- 'spec/rosett_ai/desktop/**/*'
|
|
352
|
-
#
|
|
353
|
-
RSpec/DescribedClass:
|
|
354
|
-
Enabled: true
|
|
355
|
-
#
|
|
356
|
-
RSpec/MultipleDescribes:
|
|
357
|
-
Enabled: true
|
|
358
|
-
Exclude:
|
|
359
|
-
# Compressor/Destination base + subclasses are tightly coupled — one spec file per hierarchy
|
|
360
|
-
- 'spec/rosett_ai/backup/compressor_spec.rb'
|
|
361
|
-
- 'spec/rosett_ai/backup/destination_spec.rb'
|
|
362
|
-
#
|
|
363
|
-
# Performance
|
|
364
|
-
Performance/StringReplacement:
|
|
365
|
-
Enabled: true
|
|
366
|
-
#
|
|
367
|
-
Performance/RegexpMatch:
|
|
368
|
-
Enabled: true
|
|
369
|
-
#
|
|
370
|
-
# Rake
|
|
371
|
-
Rake/Desc:
|
|
372
|
-
Enabled: true
|
|
373
|
-
#
|
|
374
|
-
# Gemspec
|
|
375
|
-
Gemspec/DevelopmentDependencies:
|
|
376
|
-
Enabled: true
|
|
377
|
-
#
|
|
378
|
-
RSpec/PredicateMatcher:
|
|
379
|
-
Enabled: true
|
|
380
|
-
#
|
data/.ruby-version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.3.10
|
data/.yamllint
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# NeatNerds Code Companion - yamllint Configuration
|
|
2
|
-
|
|
3
|
-
extends: default
|
|
4
|
-
|
|
5
|
-
rules:
|
|
6
|
-
line-length:
|
|
7
|
-
max: 240
|
|
8
|
-
level: warning
|
|
9
|
-
|
|
10
|
-
indentation:
|
|
11
|
-
spaces: 2
|
|
12
|
-
indent-sequences: whatever
|
|
13
|
-
|
|
14
|
-
document-start: disable
|
|
15
|
-
|
|
16
|
-
truthy:
|
|
17
|
-
level: warning
|
|
18
|
-
|
|
19
|
-
comments:
|
|
20
|
-
min-spaces-from-content: 1
|
|
21
|
-
|
|
22
|
-
braces:
|
|
23
|
-
min-spaces-inside: 0
|
|
24
|
-
max-spaces-inside: 1
|
|
25
|
-
|
|
26
|
-
brackets:
|
|
27
|
-
min-spaces-inside: 0
|
|
28
|
-
max-spaces-inside: 0
|
|
29
|
-
|
|
30
|
-
colons:
|
|
31
|
-
max-spaces-before: 0
|
|
32
|
-
max-spaces-after: 1
|
|
33
|
-
|
|
34
|
-
commas:
|
|
35
|
-
max-spaces-before: 0
|
|
36
|
-
min-spaces-after: 1
|
|
37
|
-
max-spaces-after: 1
|
|
38
|
-
|
|
39
|
-
hyphens:
|
|
40
|
-
max-spaces-after: 1
|
|
41
|
-
|
|
42
|
-
empty-lines:
|
|
43
|
-
max: 2
|
|
44
|
-
max-start: 0
|
|
45
|
-
max-end: 1
|
|
46
|
-
|
|
47
|
-
ignore:
|
|
48
|
-
- vendor/
|
|
49
|
-
- cache/
|
|
50
|
-
- coverage/
|
|
51
|
-
- .git/
|
data/.yardopts
DELETED
data/AI-DISCLOSURE.md
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# AI Disclosure
|
|
2
|
-
|
|
3
|
-
This project uses AI tools in its development process.
|
|
4
|
-
|
|
5
|
-
## AI Tools Used
|
|
6
|
-
|
|
7
|
-
| Tool | Provider | Purpose |
|
|
8
|
-
|------|----------|---------|
|
|
9
|
-
| Claude Code | Anthropic | Code authoring, refactoring, testing, documentation |
|
|
10
|
-
|
|
11
|
-
## Governance Policy
|
|
12
|
-
|
|
13
|
-
1. **All AI-generated code is human-reviewed** before merging. The human
|
|
14
|
-
contributor bears primary responsibility for all committed code,
|
|
15
|
-
regardless of whether it was AI-generated.
|
|
16
|
-
|
|
17
|
-
2. **Commit trailers document AI involvement.** Every commit that includes
|
|
18
|
-
AI-generated or AI-assisted content carries a `Co-Authored-By` trailer
|
|
19
|
-
identifying the AI tool and model version.
|
|
20
|
-
|
|
21
|
-
3. **AI provenance is tracked.** The `.ai-provenance.yml` file records
|
|
22
|
-
which sessions contributed to the codebase, the AI model used, the
|
|
23
|
-
scope of work, and which files were affected.
|
|
24
|
-
|
|
25
|
-
4. **No AI-generated code ships without tests.** All new functionality
|
|
26
|
-
includes test coverage verified by the human reviewer.
|
|
27
|
-
|
|
28
|
-
5. **DCO sign-off required.** All contributions comply with the Developer
|
|
29
|
-
Certificate of Origin. The `Signed-off-by` trailer is enforced via
|
|
30
|
-
git hooks where applicable.
|
|
31
|
-
|
|
32
|
-
## License Compatibility
|
|
33
|
-
|
|
34
|
-
This project is licensed under GPL-3.0-only. AI-generated code is
|
|
35
|
-
contributed under the same license. SPDX license identifiers are present
|
|
36
|
-
on all source files.
|
|
37
|
-
|
|
38
|
-
## Provenance Verification
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
raictl provenance validate # Validate all provenance entries
|
|
42
|
-
raictl provenance log # View provenance history
|
|
43
|
-
raictl comply --headers # Verify SPDX headers
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Questions
|
|
47
|
-
|
|
48
|
-
For questions about AI usage in this project, contact: query@neatnerds.be
|
data/CLAUDE.md
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# Rosett-AI
|
|
2
|
-
|
|
3
|
-
## Project Overview
|
|
4
|
-
|
|
5
|
-
| Field | Value |
|
|
6
|
-
|-------|-------|
|
|
7
|
-
| Gem name | rosett-ai |
|
|
8
|
-
| CLI | raictl (bin/raictl) |
|
|
9
|
-
| Purpose | Author AI assistant rules once, compile to Claude Code, Cursor, AGENTS.md, and more |
|
|
10
|
-
| License | GPL-3.0-only |
|
|
11
|
-
| Ruby | 3.3.10 (rbenv) |
|
|
12
|
-
| Framework | Thor (CLI), Zeitwerk (autoloading) |
|
|
13
|
-
|
|
14
|
-
## CLI Usage
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# Core workflow
|
|
18
|
-
raictl compile # Compile rules to ~/.claude/rules/
|
|
19
|
-
raictl compile --verbose # Compile with detailed output
|
|
20
|
-
raictl compile --simulate --verbose # Dry run with diffs
|
|
21
|
-
raictl compile --vendor # Compile and write lockfile
|
|
22
|
-
raictl compile --engine generic # Compile for a specific engine
|
|
23
|
-
raictl validate # Validate all config files
|
|
24
|
-
|
|
25
|
-
# Behaviour management
|
|
26
|
-
raictl behaviour list # List behaviour files
|
|
27
|
-
raictl behaviour show NAME # Show specific behaviour
|
|
28
|
-
raictl behaviour validate [NAME] # Validate behaviour file(s)
|
|
29
|
-
raictl behaviour manage add NAME # Create new behaviour
|
|
30
|
-
|
|
31
|
-
# Design documents
|
|
32
|
-
raictl design list # List all design documents
|
|
33
|
-
raictl design show NAME # Show design document details
|
|
34
|
-
raictl design validate [NAME] # Validate design document(s)
|
|
35
|
-
|
|
36
|
-
# Project lifecycle
|
|
37
|
-
raictl init --global # Set up global ~/.claude/ structure
|
|
38
|
-
raictl init --local # Set up project-local .claude/ structure
|
|
39
|
-
raictl init --project # Set up .rosett-ai/ project structure
|
|
40
|
-
raictl doctor # Run diagnostic checks
|
|
41
|
-
raictl project status # Show project status
|
|
42
|
-
|
|
43
|
-
# Configuration management
|
|
44
|
-
raictl config compile # Compile YAML scopes to JSON settings
|
|
45
|
-
raictl migrate # Migrate legacy .nncc/ and ~/.config/nncc/ paths
|
|
46
|
-
|
|
47
|
-
# Compliance and provenance
|
|
48
|
-
raictl comply # Run all compliance checks (CRA, license, SPDX)
|
|
49
|
-
raictl provenance add # Record AI contribution for HEAD commit
|
|
50
|
-
raictl provenance validate # Validate provenance entries
|
|
51
|
-
|
|
52
|
-
# Engines and plugins
|
|
53
|
-
raictl engines list # List all known engines
|
|
54
|
-
raictl engines detect # Detect installed engines
|
|
55
|
-
raictl plugins list engine # List installed engine plugins
|
|
56
|
-
|
|
57
|
-
# Other
|
|
58
|
-
raictl hooks install # Install git hooks via overcommit
|
|
59
|
-
raictl mcp serve # Start MCP JSON-RPC server
|
|
60
|
-
raictl completion install # Install shell completions
|
|
61
|
-
raictl backup --global # Back up ~/.claude/ structure
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Directory Structure
|
|
65
|
-
|
|
66
|
-
```text
|
|
67
|
-
├── bin/raictl # CLI executable (symlinked as rai)
|
|
68
|
-
├── lib/rosett_ai/ # Ruby library code (Zeitwerk-managed)
|
|
69
|
-
│ ├── thor/ # CLI command definitions
|
|
70
|
-
│ │ ├── cli.rb # Main Thor CLI class
|
|
71
|
-
│ │ └── tasks/ # Individual command implementations
|
|
72
|
-
│ ├── compiler/ # Rule compilation pipeline
|
|
73
|
-
│ ├── engines/ # Engine plugin system
|
|
74
|
-
│ ├── doctor/ # Diagnostic checks
|
|
75
|
-
│ ├── git_hooks/ # Git hook management
|
|
76
|
-
│ ├── migrate/ # Legacy config migration
|
|
77
|
-
│ └── version.rb # Version constant
|
|
78
|
-
├── conf/
|
|
79
|
-
│ ├── behaviour/ # Behaviour YAML files (rules source)
|
|
80
|
-
│ ├── design/ # Design documents (YAML)
|
|
81
|
-
│ ├── schemas/ # JSON Schema validation files
|
|
82
|
-
│ ├── targets/ # Compiler target profiles
|
|
83
|
-
│ ├── packaging/ # Package variant configs (core, gtk4)
|
|
84
|
-
│ └── claude_code/ # Claude Code scope configs
|
|
85
|
-
├── spec/ # RSpec test suite
|
|
86
|
-
├── packaging/ # Debian packaging scripts
|
|
87
|
-
├── locales/ # i18n locale files
|
|
88
|
-
├── doc/man/ # Man page source (ronn-ng)
|
|
89
|
-
└── rosett-ai.gemspec # Gem specification
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Development
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
bundle install # Install dependencies
|
|
96
|
-
overcommit --install # Install git hooks
|
|
97
|
-
bundle exec rspec # Run test suite
|
|
98
|
-
bundle exec rubocop # Run linter
|
|
99
|
-
bundle exec reek # Run code smell detector
|
|
100
|
-
bundle exec bundler-audit check # Security audit
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Architecture
|
|
104
|
-
|
|
105
|
-
- **Engine plugin system**: Engines (claude, generic, agents_md) define how rules compile to target formats. Engines are separate gems discovered via `RAI_ENGINE_PATH` or standard gem paths.
|
|
106
|
-
- **Scope hierarchy**: Configuration applies in order: global (`~/.claude/`) → local (`.claude/`) → project (`.rosett-ai/`). Later scopes override earlier ones.
|
|
107
|
-
- **XDG config**: Global config lives at `~/.config/rosett-ai/`
|
|
108
|
-
- **Compilation pipeline**: Behaviour YAML → rule extraction → target-specific rendering → output files
|
|
109
|
-
- **Design doc system**: `conf/design/*.yml` records architectural decisions with question/decision/rationale structure
|
|
110
|
-
|
|
111
|
-
## Testing
|
|
112
|
-
|
|
113
|
-
- RSpec with SimpleCov coverage tracking
|
|
114
|
-
- Pre-commit hooks: RuboCop, Reek
|
|
115
|
-
- Pre-push hooks: RSpec, bundler-audit
|
|
116
|
-
- CI: GitLab CI with lint, test, build, and mutation stages
|
|
117
|
-
|
|
118
|
-
## Packaging (Developer Rake Tasks)
|
|
119
|
-
|
|
120
|
-
Build, release, and packaging commands are developer-only and available via Rake:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
rake build:package # Build core .deb package
|
|
124
|
-
rake build:package[gtk4] # Build GTK4 variant
|
|
125
|
-
rake build:engine # Build engine plugin .deb
|
|
126
|
-
rake release:prepare[minor] # Bump version, changelog, release commit
|
|
127
|
-
rake release:tag # Create annotated git tag
|
|
128
|
-
rake release:status # Show version, last tag, unreleased commits
|
|
129
|
-
rake readme:update # Update README version/test/engine numbers
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
- `.deb` packages include hermetic Ruby at `/opt/rosett-ai/`
|
|
133
|
-
- Variants: core (CLI-only), gtk4 (with desktop GUI)
|
|
134
|
-
- Wrapper script at `/usr/bin/raictl` sets `BUNDLE_PATH` and `BUNDLE_DEPLOYMENT`
|
|
135
|
-
|
|
136
|
-
## Key Conventions
|
|
137
|
-
|
|
138
|
-
- Conventional Commits for all commit messages
|
|
139
|
-
- Language purity: Ruby only for all scripting
|
|
140
|
-
- SPDX license headers on all source files
|
|
141
|
-
- GPL-3.0-only license
|