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.
- checksums.yaml +7 -0
- data/.ai-provenance.yml +119 -0
- data/.debride_whitelist +186 -0
- data/.fasterer.yml +29 -0
- data/.mdl_style.rb +10 -0
- data/.mdlrc +3 -0
- data/.mutant.yml +49 -0
- data/.namespace-allowlist +42 -0
- data/.reek.yml +1040 -0
- data/.rosett-ai/config.yml +3 -0
- data/.rspec +5 -0
- data/.rubocop.yml +380 -0
- data/.ruby-version +1 -0
- data/.yamllint +51 -0
- data/.yardopts +12 -0
- data/AI-DISCLOSURE.md +48 -0
- data/CHANGELOG.md +519 -0
- data/CLAUDE.md +141 -0
- data/CONTRIBUTING.md +734 -0
- data/INSTALL.md +154 -0
- data/LICENSE +674 -0
- data/LICENSE.md +675 -0
- data/QUICKSTART.md +73 -0
- data/README.md +366 -0
- data/Rakefile +200 -0
- data/SECURITY.md +114 -0
- data/bin/rai +1 -0
- data/cliff.toml +52 -0
- data/conf/adopt_redactions.yml +8 -0
- data/conf/behaviour/.gitkeep +0 -0
- data/conf/compliance/cra_rules.yml +25 -0
- data/conf/compliance/license_rules.yml +20 -0
- data/conf/design/aaif_alignment.yml +181 -0
- data/conf/design/ab_testing.yml +172 -0
- data/conf/design/accessibility.yml +84 -0
- data/conf/design/ai_authorship.yml +210 -0
- data/conf/design/ai_provenance.yml +224 -0
- data/conf/design/ai_tool_configuration.yml +207 -0
- data/conf/design/architecture.yml +139 -0
- data/conf/design/autocompletion.yml +115 -0
- data/conf/design/backward_compatibility.yml +112 -0
- data/conf/design/behaviour_composition.yml +246 -0
- data/conf/design/build_rake_extraction.yml +57 -0
- data/conf/design/ci_pipeline.yml +100 -0
- data/conf/design/claude_code_configuration.yml +157 -0
- data/conf/design/compiler.yml +128 -0
- data/conf/design/comply.yml +153 -0
- data/conf/design/content_packs.yml +84 -0
- data/conf/design/desktop_integration.yml +289 -0
- data/conf/design/distribution.yml +216 -0
- data/conf/design/doctor.yml +184 -0
- data/conf/design/documentation.yml +152 -0
- data/conf/design/engine_architecture.yml +257 -0
- data/conf/design/error_handling.yml +103 -0
- data/conf/design/feature_flags.yml +142 -0
- data/conf/design/git_hooks.yml +165 -0
- data/conf/design/gui_plugins.yml +475 -0
- data/conf/design/i18n.yml +84 -0
- data/conf/design/integration_testing.yml +56 -0
- data/conf/design/licensing_system.yml +88 -0
- data/conf/design/lifecycle_management.yml +208 -0
- data/conf/design/mcp_integration.yml +207 -0
- data/conf/design/mcp_settings.yml +126 -0
- data/conf/design/migration.yml +56 -0
- data/conf/design/monitoring_observability.yml +194 -0
- data/conf/design/namespace_cleanup.yml +145 -0
- data/conf/design/plugin_test_segregation.yml +145 -0
- data/conf/design/policy_management.yml +229 -0
- data/conf/design/project_management.yml +183 -0
- data/conf/design/rai_mcp_asset_discovery.yml +164 -0
- data/conf/design/rai_mcp_server.yml +605 -0
- data/conf/design/release_management.yml +117 -0
- data/conf/design/retrofit.yml +199 -0
- data/conf/design/retrospective_analyzer.yml +79 -0
- data/conf/design/scope_hierarchy.yml +352 -0
- data/conf/design/security.yml +115 -0
- data/conf/design/session_retrospective.yml +85 -0
- data/conf/design/smart_ui_feedback.yml +89 -0
- data/conf/design/structured_logging.yml +148 -0
- data/conf/design/styles.yml +123 -0
- data/conf/design/test_peer_review.yml +89 -0
- data/conf/design/testing.yml +136 -0
- data/conf/design/threat_model.yml +108 -0
- data/conf/design/ui_framework.yml +111 -0
- data/conf/design/usage_optimization.yml +122 -0
- data/conf/design/version_management.yml +60 -0
- data/conf/design/workflow.yml +227 -0
- data/conf/mcp/server_defaults.yml +42 -0
- data/conf/mcp/trust.yml +21 -0
- data/conf/packaging/core.yml +12 -0
- data/conf/packaging/gtk4.yml +11 -0
- data/conf/packaging/qt6.yml +11 -0
- data/conf/policy/default_deny_list.yml +197 -0
- data/conf/review/cli-command-audit.yml +857 -0
- data/conf/review/design-docs.yml +1064 -0
- data/conf/review/design-questionnaire.yml +153 -0
- data/conf/review/questionnaire.yml +146 -0
- data/conf/review/rosett-ai-core.yml +2919 -0
- data/conf/schemas/ai_config_schema.json +73 -0
- data/conf/schemas/behaviour_schema.json +132 -0
- data/conf/schemas/compliance_rule_schema.json +63 -0
- data/conf/schemas/content_pack_manifest_schema.json +51 -0
- data/conf/schemas/design_schema.json +210 -0
- data/conf/schemas/engine_manifest_schema.json +144 -0
- data/conf/schemas/lockfile_schema.json +74 -0
- data/conf/schemas/mcp_server_schema.json +48 -0
- data/conf/schemas/packaging_schema.json +70 -0
- data/conf/schemas/policy_schema.json +85 -0
- data/conf/schemas/provenance_schema.json +84 -0
- data/conf/schemas/rai_config_schema.json +56 -0
- data/conf/schemas/rai_project_schema.json +20 -0
- data/conf/schemas/scope_hierarchy_schema.json +49 -0
- data/conf/schemas/target_schema.json +67 -0
- data/conf/schemas/tooling_schema.json +65 -0
- data/conf/schemas/workflow_schema.json +112 -0
- data/conf/targets/agents_md.yml +17 -0
- data/conf/targets/claude.yml +12 -0
- data/conf/tooling/tools.yml +58 -0
- data/dist/rosett-ai-mcp.service +48 -0
- data/dist/rosett-ai-mcp.yml.default +45 -0
- data/doc/AAIF_POSITIONING.md +58 -0
- data/doc/ADOPT.md +224 -0
- data/doc/AI_PROVENANCE.md +139 -0
- data/doc/ARCHITECTURE.md +920 -0
- data/doc/BEHAVIOUR.md +409 -0
- data/doc/BUILD.md +138 -0
- data/doc/CI_CD_RECIPES.md +171 -0
- data/doc/CLAUDE_SESSIONS_MOVED.md +16 -0
- data/doc/COMMAND_ANALYSIS.md +229 -0
- data/doc/CONFIGURATION.md +281 -0
- data/doc/DESIGN_AUDIT.md +235 -0
- data/doc/DESIGN_PEER_REVIEW.md +771 -0
- data/doc/DESKTOP.md +447 -0
- data/doc/ENGINES.md +567 -0
- data/doc/ENGINE_DEVELOPMENT_GUIDE.md +417 -0
- data/doc/FEATURE_AUDIT.md +218 -0
- data/doc/IMPLEMENTATION_PLAN.md +669 -0
- data/doc/INCIDENT_REPORT_2026-02-02.md +251 -0
- data/doc/MIGRATION_GUIDE.md +88 -0
- data/doc/PACKAGING.md +232 -0
- data/doc/PROJECT_DASHBOARD.md +153 -0
- data/doc/PULP_DEPLOYMENT.md +164 -0
- data/doc/QUALITY_FIX_SUMMARY.md +110 -0
- data/doc/QUICK_START.md +162 -0
- data/doc/REEK_CONFIGURATION.md +166 -0
- data/doc/REFERENCE.md +253 -0
- data/doc/REFERENCES.md +324 -0
- data/doc/SECURITY_REVIEW_CHECKLIST.md +72 -0
- data/doc/SESSION_2026-02-28_GTK4_HARDENING.md +359 -0
- data/doc/SETUP.md +202 -0
- data/doc/TEST_PEER_REVIEW.md +152 -0
- data/doc/THREAT_MODEL.md +230 -0
- data/doc/USAGE.md +545 -0
- data/doc/USER_MANUAL.md +585 -0
- data/doc/ai_test_review_checklist.md +110 -0
- data/doc/changes/2026-02-18-packaging-fpm.md +155 -0
- data/doc/changes/2026-02-19-testing-infrastructure.md +221 -0
- data/doc/changes/2026-02-20-security-implementation.md +281 -0
- data/doc/changes/2026-02-20-styles-implementation.md +220 -0
- data/doc/changes/2026-02-21-architecture-completion.md +95 -0
- data/doc/changes/2026-02-21-architecture-ui-layer.md +253 -0
- data/doc/changes/2026-02-21-cc-config-implementation.md +108 -0
- data/doc/changes/2026-02-21-ci-pipeline-implementation.md +214 -0
- data/doc/changes/2026-02-21-compiler-multi-target-pipeline.md +241 -0
- data/doc/changes/2026-02-21-config-design-show-commands.md +61 -0
- data/doc/changes/2026-02-21-design-implementation-overview.md +455 -0
- data/doc/changes/2026-02-21-lifecycle-management.md +196 -0
- data/doc/changes/2026-02-21-path-resolver.md +128 -0
- data/doc/changes/2026-02-24-ci-tmpdir-mutant-fetch.md +45 -0
- data/doc/changes/2026-03-01-ci-bundler-strategy.md +120 -0
- data/doc/changes/2026-03-20-security-hardening-phase2.md +163 -0
- data/doc/context/SESSION-HANDOFF.md +69 -0
- data/doc/context/ai-engine-usage-trends-2026.md +80 -0
- data/doc/context/plan-pluggable-engines.md +590 -0
- data/doc/decisions/001-flog-deferred.md +32 -0
- data/doc/decisions/002-path-resolution-strategy.md +158 -0
- data/doc/decisions/003-ui-adapter-selection.md +193 -0
- data/doc/decisions/004-design-document-validation.md +179 -0
- data/doc/decisions/005-package-splitting-strategy.md +200 -0
- data/doc/decisions/006-multi-engine-architecture.md +147 -0
- data/doc/decisions/007-engine-agnostic-pivot.md +219 -0
- data/doc/decisions/008-ci-bundler-strategy.md +129 -0
- data/doc/decisions/009-core-only-v1-release.md +60 -0
- data/doc/decisions/010-engine-debian-packaging.md +66 -0
- data/doc/decisions/011-context-aware-cli.md +71 -0
- data/doc/dependency_decisions.yml +247 -0
- data/doc/issues/001-wrapper-missing-environment-variables.md +197 -0
- data/doc/issues/002-embedded-ruby-wrong-prefix.md +217 -0
- data/doc/issues/003-smoke-test-false-positive.md +127 -0
- data/doc/issues/004-market-research-design-updates.md +109 -0
- data/doc/issues/005-compile-scope-coexistence.md +161 -0
- data/doc/locales/.gitkeep +0 -0
- data/doc/man/rai.1.ronn +505 -0
- data/doc/operations/packaging.md +133 -0
- data/doc/operations/rosett-ai-release.md +65 -0
- data/doc/reference/error-catalog.md +107 -0
- 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 +4 -0
- data/doc/reference/src/bibliography.bib +79 -0
- data/doc/reference/src/main.tex +1288 -0
- data/doc/reference/src/structure.tex +303 -0
- data/doc/rosett-ai-bookmarks.html +301 -0
- data/kitchen.yml +46 -0
- data/lib/rosett_ai/adopter/executor_resolver.rb +77 -0
- data/lib/rosett_ai/adopter/local_analysis_collector.rb +154 -0
- data/lib/rosett_ai/adopter/rule_adopter.rb +254 -0
- data/lib/rosett_ai/ai_config/config_compiler.rb +111 -0
- data/lib/rosett_ai/ai_config/context_window.rb +55 -0
- data/lib/rosett_ai/ai_config/cost_controls.rb +44 -0
- data/lib/rosett_ai/ai_config/fallback_chain.rb +64 -0
- data/lib/rosett_ai/ai_config/model_router.rb +121 -0
- data/lib/rosett_ai/ai_config/validator.rb +45 -0
- data/lib/rosett_ai/authorship/attribution_compiler.rb +99 -0
- data/lib/rosett_ai/authorship/disclosure_policy.rb +81 -0
- data/lib/rosett_ai/authorship/review_validator.rb +39 -0
- data/lib/rosett_ai/authorship/trailer_generator.rb +88 -0
- data/lib/rosett_ai/backup/compressor.rb +180 -0
- data/lib/rosett_ai/backup/destination.rb +91 -0
- data/lib/rosett_ai/behaviour/manager.rb +156 -0
- data/lib/rosett_ai/compiler/backend.rb +86 -0
- data/lib/rosett_ai/compiler/backends/agents_md_backend.rb +80 -0
- data/lib/rosett_ai/compiler/backends/claude_backend.rb +88 -0
- data/lib/rosett_ai/compiler/backends/generic_backend.rb +15 -0
- data/lib/rosett_ai/compiler/behaviour_compiler.rb +40 -0
- data/lib/rosett_ai/compiler/capability_checker.rb +104 -0
- data/lib/rosett_ai/compiler/compilation_pipeline.rb +361 -0
- data/lib/rosett_ai/compiler/compiled_output.rb +39 -0
- data/lib/rosett_ai/compiler/locale_compiler.rb +250 -0
- data/lib/rosett_ai/compiler/target_profile.rb +112 -0
- data/lib/rosett_ai/completion/generator.rb +101 -0
- data/lib/rosett_ai/completion/shells/bash_generator.rb +126 -0
- data/lib/rosett_ai/completion/shells/fish_generator.rb +78 -0
- data/lib/rosett_ai/completion/shells/zsh_generator.rb +126 -0
- data/lib/rosett_ai/comply/checkers/cra_checker.rb +102 -0
- data/lib/rosett_ai/comply/checkers/license_checker.rb +85 -0
- data/lib/rosett_ai/comply/checkers/spdx_header_checker.rb +98 -0
- data/lib/rosett_ai/comply/reporter.rb +113 -0
- data/lib/rosett_ai/comply/runner.rb +50 -0
- data/lib/rosett_ai/composition/circular_dependency_detector.rb +56 -0
- data/lib/rosett_ai/composition/composer.rb +158 -0
- data/lib/rosett_ai/composition/composition_result.rb +64 -0
- data/lib/rosett_ai/composition/conflict_detector.rb +53 -0
- data/lib/rosett_ai/composition/lockfile.rb +103 -0
- data/lib/rosett_ai/composition/merge_strategy.rb +131 -0
- data/lib/rosett_ai/composition/priority_sorter.rb +29 -0
- data/lib/rosett_ai/composition/scope_resolver.rb +55 -0
- data/lib/rosett_ai/config/compile_result.rb +37 -0
- data/lib/rosett_ai/config/compiler.rb +13 -0
- data/lib/rosett_ai/config/domain_transformer.rb +13 -0
- data/lib/rosett_ai/config/key_map.rb +13 -0
- data/lib/rosett_ai/config/masking_secret_resolver.rb +40 -0
- data/lib/rosett_ai/config/scope_router.rb +13 -0
- data/lib/rosett_ai/config/secret_resolver.rb +125 -0
- data/lib/rosett_ai/configuration.rb +119 -0
- data/lib/rosett_ai/content/content_client.rb +60 -0
- data/lib/rosett_ai/content/pack_installer.rb +117 -0
- data/lib/rosett_ai/content/pack_manifest.rb +50 -0
- data/lib/rosett_ai/content/pack_registry.rb +68 -0
- data/lib/rosett_ai/content_packs/manager.rb +50 -0
- data/lib/rosett_ai/dbus/compositor_detector.rb +77 -0
- data/lib/rosett_ai/dbus/focus_adapters/base.rb +59 -0
- data/lib/rosett_ai/dbus/focus_adapters/gnome_adapter.rb +172 -0
- data/lib/rosett_ai/dbus/focus_adapters/hyprland_adapter.rb +77 -0
- data/lib/rosett_ai/dbus/focus_adapters/i3_adapter.rb +65 -0
- data/lib/rosett_ai/dbus/focus_adapters/kwin_adapter.rb +103 -0
- data/lib/rosett_ai/dbus/focus_adapters/x11_adapter.rb +105 -0
- data/lib/rosett_ai/dbus/focus_monitor_interface.rb +103 -0
- data/lib/rosett_ai/dbus/manager_interface.rb +213 -0
- data/lib/rosett_ai/dbus/plugin_manager_interface.rb +169 -0
- data/lib/rosett_ai/dbus/rate_limiter.rb +89 -0
- data/lib/rosett_ai/dbus/service.rb +121 -0
- data/lib/rosett_ai/dbus/status_notifier_interface.rb +79 -0
- data/lib/rosett_ai/deprecation.rb +79 -0
- data/lib/rosett_ai/desktop/dbus_client.rb +259 -0
- data/lib/rosett_ai/desktop/gtk4_app.rb +371 -0
- data/lib/rosett_ai/desktop/gtk4_preferences.rb +331 -0
- data/lib/rosett_ai/desktop/gui_logger.rb +236 -0
- data/lib/rosett_ai/doctor/check.rb +92 -0
- data/lib/rosett_ai/doctor/checks/cache_health_check.rb +50 -0
- data/lib/rosett_ai/doctor/checks/dbus_availability_check.rb +39 -0
- data/lib/rosett_ai/doctor/checks/engine_detection_check.rb +46 -0
- data/lib/rosett_ai/doctor/checks/file_permission_check.rb +44 -0
- data/lib/rosett_ai/doctor/checks/gem_dependency_check.rb +55 -0
- data/lib/rosett_ai/doctor/checks/ruby_version_check.rb +50 -0
- data/lib/rosett_ai/doctor/checks/stale_config_nncc_check.rb +57 -0
- data/lib/rosett_ai/doctor/checks/stale_home_nncc_check.rb +59 -0
- data/lib/rosett_ai/doctor.rb +81 -0
- data/lib/rosett_ai/documentation/reference_compiler.rb +122 -0
- data/lib/rosett_ai/documentation/translator.rb +62 -0
- data/lib/rosett_ai/engines/base_config_compiler.rb +203 -0
- data/lib/rosett_ai/engines/detector.rb +63 -0
- data/lib/rosett_ai/engines/registry.rb +50 -0
- data/lib/rosett_ai/error_handler.rb +139 -0
- data/lib/rosett_ai/exit_codes.rb +76 -0
- data/lib/rosett_ai/feature_flags.rb +102 -0
- data/lib/rosett_ai/formatting.rb +33 -0
- data/lib/rosett_ai/gem_consistency_checker.rb +199 -0
- data/lib/rosett_ai/git_hooks/chain_detector.rb +86 -0
- data/lib/rosett_ai/git_hooks/installer.rb +175 -0
- data/lib/rosett_ai/git_hooks/script_generator.rb +125 -0
- data/lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb +79 -0
- data/lib/rosett_ai/i18n/locale_resolver.rb +46 -0
- data/lib/rosett_ai/i18n/utf8_checker.rb +32 -0
- data/lib/rosett_ai/init/config_file_writer.rb +24 -0
- data/lib/rosett_ai/init/directory_builder.rb +38 -0
- data/lib/rosett_ai/init/file_copier.rb +95 -0
- data/lib/rosett_ai/init/global_initializer.rb +28 -0
- data/lib/rosett_ai/init/local_initializer.rb +27 -0
- data/lib/rosett_ai/init/mcp_registrar.rb +109 -0
- data/lib/rosett_ai/init/project_initializer.rb +38 -0
- data/lib/rosett_ai/licensing/license_key.rb +139 -0
- data/lib/rosett_ai/licensing/license_store.rb +64 -0
- data/lib/rosett_ai/licensing/license_validator.rb +60 -0
- data/lib/rosett_ai/licensing/tier.rb +42 -0
- data/lib/rosett_ai/mcp/admin/auditor.rb +88 -0
- data/lib/rosett_ai/mcp/admin/health_checker.rb +81 -0
- data/lib/rosett_ai/mcp/admin/registry.rb +100 -0
- data/lib/rosett_ai/mcp/admin/schema_validator.rb +63 -0
- data/lib/rosett_ai/mcp/enforcement/.gitkeep +0 -0
- data/lib/rosett_ai/mcp/enforcement/hook_generator.rb +197 -0
- data/lib/rosett_ai/mcp/enforcement/validator.rb +215 -0
- data/lib/rosett_ai/mcp/governance.rb +160 -0
- data/lib/rosett_ai/mcp/http_security_config.rb +158 -0
- data/lib/rosett_ai/mcp/instructions.rb +266 -0
- data/lib/rosett_ai/mcp/key_hasher.rb +66 -0
- data/lib/rosett_ai/mcp/keyfile.rb +221 -0
- data/lib/rosett_ai/mcp/middleware/authentication.rb +146 -0
- data/lib/rosett_ai/mcp/middleware/content_type.rb +56 -0
- data/lib/rosett_ai/mcp/middleware/cors.rb +83 -0
- data/lib/rosett_ai/mcp/middleware/origin_validation.rb +73 -0
- data/lib/rosett_ai/mcp/middleware/rate_limit.rb +106 -0
- data/lib/rosett_ai/mcp/middleware/request_size.rb +51 -0
- data/lib/rosett_ai/mcp/plugins.rb +143 -0
- data/lib/rosett_ai/mcp/prompts/compilation_prompt.rb +40 -0
- data/lib/rosett_ai/mcp/prompts/compliance_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/prompts/diagnostics_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/prompts/validation_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/resources/behaviour_resource.rb +127 -0
- data/lib/rosett_ai/mcp/resources/config_resource.rb +72 -0
- data/lib/rosett_ai/mcp/resources/design_resource.rb +58 -0
- data/lib/rosett_ai/mcp/resources/hooks_resource.rb +74 -0
- data/lib/rosett_ai/mcp/resources/provenance_resource.rb +51 -0
- data/lib/rosett_ai/mcp/resources/rules_resource.rb +60 -0
- data/lib/rosett_ai/mcp/resources/schema_resource.rb +72 -0
- data/lib/rosett_ai/mcp/response_helper.rb +46 -0
- data/lib/rosett_ai/mcp/security_logger.rb +60 -0
- data/lib/rosett_ai/mcp/server.rb +212 -0
- data/lib/rosett_ai/mcp/settings/server_installer.rb +112 -0
- data/lib/rosett_ai/mcp/settings/trust_manager.rb +142 -0
- data/lib/rosett_ai/mcp/tools/adopt_tool.rb +70 -0
- data/lib/rosett_ai/mcp/tools/backup_tool.rb +64 -0
- data/lib/rosett_ai/mcp/tools/behaviour_display_tool.rb +72 -0
- data/lib/rosett_ai/mcp/tools/behaviour_list_tool.rb +56 -0
- data/lib/rosett_ai/mcp/tools/behaviour_manage_tool.rb +114 -0
- data/lib/rosett_ai/mcp/tools/behaviour_show_tool.rb +62 -0
- data/lib/rosett_ai/mcp/tools/compile_status_tool.rb +122 -0
- data/lib/rosett_ai/mcp/tools/compile_tool.rb +191 -0
- data/lib/rosett_ai/mcp/tools/comply_tool.rb +79 -0
- data/lib/rosett_ai/mcp/tools/config_compile_tool.rb +71 -0
- data/lib/rosett_ai/mcp/tools/config_status_tool.rb +79 -0
- data/lib/rosett_ai/mcp/tools/content_tool.rb +78 -0
- data/lib/rosett_ai/mcp/tools/context_query_tool.rb +156 -0
- data/lib/rosett_ai/mcp/tools/design_list_tool.rb +57 -0
- data/lib/rosett_ai/mcp/tools/design_show_tool.rb +69 -0
- data/lib/rosett_ai/mcp/tools/doctor_tool.rb +62 -0
- data/lib/rosett_ai/mcp/tools/documentation_status_tool.rb +45 -0
- data/lib/rosett_ai/mcp/tools/engines_tool.rb +84 -0
- data/lib/rosett_ai/mcp/tools/hook_install_tool.rb +190 -0
- data/lib/rosett_ai/mcp/tools/hook_preview_tool.rb +173 -0
- data/lib/rosett_ai/mcp/tools/hooks_status_tool.rb +84 -0
- data/lib/rosett_ai/mcp/tools/init_tool.rb +87 -0
- data/lib/rosett_ai/mcp/tools/license_status_tool.rb +44 -0
- data/lib/rosett_ai/mcp/tools/project_tool.rb +117 -0
- data/lib/rosett_ai/mcp/tools/provenance_tool.rb +97 -0
- data/lib/rosett_ai/mcp/tools/provenance_write_tool.rb +40 -0
- data/lib/rosett_ai/mcp/tools/retrofit_tool.rb +81 -0
- data/lib/rosett_ai/mcp/tools/rule_search_tool.rb +163 -0
- data/lib/rosett_ai/mcp/tools/schema_get_tool.rb +94 -0
- data/lib/rosett_ai/mcp/tools/tooling_tool.rb +86 -0
- data/lib/rosett_ai/mcp/tools/validate_tool.rb +105 -0
- data/lib/rosett_ai/mcp/tools/workflow_execute_tool.rb +74 -0
- data/lib/rosett_ai/mcp/tools/workflow_tool.rb +78 -0
- data/lib/rosett_ai/migration/detector.rb +117 -0
- data/lib/rosett_ai/migration/nncc_config_migrator.rb +94 -0
- data/lib/rosett_ai/migration/nncc_project_migrator.rb +90 -0
- data/lib/rosett_ai/migration/xdg_migrator.rb +123 -0
- data/lib/rosett_ai/package_manager/apt.rb +108 -0
- data/lib/rosett_ai/package_manager/base.rb +68 -0
- data/lib/rosett_ai/package_manager/gem_backend.rb +90 -0
- data/lib/rosett_ai/packaging/variant_config.rb +92 -0
- data/lib/rosett_ai/path_resolver.rb +115 -0
- data/lib/rosett_ai/plugins/contract.rb +43 -0
- data/lib/rosett_ai/plugins/engine_contract.rb +60 -0
- data/lib/rosett_ai/plugins/gui_contract.rb +74 -0
- data/lib/rosett_ai/plugins/mcp_contract.rb +48 -0
- data/lib/rosett_ai/plugins/registry.rb +150 -0
- data/lib/rosett_ai/policy/auditor.rb +41 -0
- data/lib/rosett_ai/policy/deny_list.rb +71 -0
- data/lib/rosett_ai/policy/opt_out_scanner.rb +37 -0
- data/lib/rosett_ai/policy/policy_compiler.rb +84 -0
- data/lib/rosett_ai/policy/protected_files.rb +47 -0
- data/lib/rosett_ai/policy/tier_hierarchy.rb +48 -0
- data/lib/rosett_ai/policy/validator.rb +35 -0
- data/lib/rosett_ai/profiler.rb +79 -0
- data/lib/rosett_ai/project/drift_detector.rb +126 -0
- data/lib/rosett_ai/project/manager.rb +115 -0
- data/lib/rosett_ai/project/sync_manager.rb +138 -0
- data/lib/rosett_ai/project/template_applier.rb +105 -0
- data/lib/rosett_ai/project_context.rb +82 -0
- data/lib/rosett_ai/provenance/entry.rb +63 -0
- data/lib/rosett_ai/provenance/file_source.rb +32 -0
- data/lib/rosett_ai/provenance/source.rb +62 -0
- data/lib/rosett_ai/provenance/store.rb +153 -0
- data/lib/rosett_ai/provenance/tracker.rb +62 -0
- data/lib/rosett_ai/provenance/trailer_generator.rb +43 -0
- data/lib/rosett_ai/provenance/validator.rb +45 -0
- data/lib/rosett_ai/quorum/collector.rb +59 -0
- data/lib/rosett_ai/quorum/comparator.rb +81 -0
- data/lib/rosett_ai/quorum/dispatcher.rb +57 -0
- data/lib/rosett_ai/quorum/strategies/adopt.rb +56 -0
- data/lib/rosett_ai/rai_config.rb +107 -0
- data/lib/rosett_ai/retrofit/base_parser.rb +66 -0
- data/lib/rosett_ai/retrofit/engine.rb +171 -0
- data/lib/rosett_ai/retrofit/parsers/agents_md_parser.rb +50 -0
- data/lib/rosett_ai/retrofit/parsers/claude_parser.rb +69 -0
- data/lib/rosett_ai/retrofit/parsers/cursor_parser.rb +82 -0
- data/lib/rosett_ai/retrofit/round_trip_validator.rb +65 -0
- data/lib/rosett_ai/retrofit/scanner.rb +47 -0
- data/lib/rosett_ai/retrofit/secret_detector.rb +87 -0
- data/lib/rosett_ai/secrets_resolver.rb +71 -0
- data/lib/rosett_ai/smart_feedback/suggester.rb +83 -0
- data/lib/rosett_ai/smart_feedback/thor_middleware.rb +84 -0
- data/lib/rosett_ai/structured_logger.rb +110 -0
- data/lib/rosett_ai/telemetry/json_lines_writer.rb +50 -0
- data/lib/rosett_ai/telemetry/log_rotator.rb +67 -0
- data/lib/rosett_ai/telemetry/provider.rb +26 -0
- data/lib/rosett_ai/telemetry/reporter.rb +144 -0
- data/lib/rosett_ai/telemetry.rb +47 -0
- data/lib/rosett_ai/text_sanitizer.rb +62 -0
- data/lib/rosett_ai/thor/cli.rb +269 -0
- data/lib/rosett_ai/thor/tasks/adopt.rb +250 -0
- data/lib/rosett_ai/thor/tasks/backup.rb +420 -0
- data/lib/rosett_ai/thor/tasks/behaviour.rb +474 -0
- data/lib/rosett_ai/thor/tasks/build.rb +1162 -0
- data/lib/rosett_ai/thor/tasks/compile.rb +415 -0
- data/lib/rosett_ai/thor/tasks/completion.rb +123 -0
- data/lib/rosett_ai/thor/tasks/comply.rb +82 -0
- data/lib/rosett_ai/thor/tasks/config.rb +265 -0
- data/lib/rosett_ai/thor/tasks/content.rb +193 -0
- data/lib/rosett_ai/thor/tasks/dbus.rb +321 -0
- data/lib/rosett_ai/thor/tasks/design.rb +258 -0
- data/lib/rosett_ai/thor/tasks/desktop.rb +129 -0
- data/lib/rosett_ai/thor/tasks/doctor.rb +127 -0
- data/lib/rosett_ai/thor/tasks/documentation.rb +321 -0
- data/lib/rosett_ai/thor/tasks/engines.rb +167 -0
- data/lib/rosett_ai/thor/tasks/hooks.rb +219 -0
- data/lib/rosett_ai/thor/tasks/init.rb +259 -0
- data/lib/rosett_ai/thor/tasks/license.rb +120 -0
- data/lib/rosett_ai/thor/tasks/mcp.rb +535 -0
- data/lib/rosett_ai/thor/tasks/migrate.rb +121 -0
- data/lib/rosett_ai/thor/tasks/plugins.rb +157 -0
- data/lib/rosett_ai/thor/tasks/project.rb +260 -0
- data/lib/rosett_ai/thor/tasks/provenance.rb +195 -0
- data/lib/rosett_ai/thor/tasks/release.rb +314 -0
- data/lib/rosett_ai/thor/tasks/retrofit.rb +90 -0
- data/lib/rosett_ai/thor/tasks/tooling.rb +308 -0
- data/lib/rosett_ai/thor/tasks/validate.rb +108 -0
- data/lib/rosett_ai/thor/tasks/workflow.rb +196 -0
- data/lib/rosett_ai/tooling/ci_yaml_validator.rb +37 -0
- data/lib/rosett_ai/tooling/version_checker.rb +35 -0
- data/lib/rosett_ai/ui/accessible_tui.rb +61 -0
- data/lib/rosett_ai/ui/base.rb +46 -0
- data/lib/rosett_ai/ui/gtk4.rb +98 -0
- data/lib/rosett_ai/ui/kde.rb +40 -0
- data/lib/rosett_ai/ui/qt6.rb +40 -0
- data/lib/rosett_ai/ui/registry.rb +60 -0
- data/lib/rosett_ai/ui/tty_helper.rb +74 -0
- data/lib/rosett_ai/ui/tui.rb +59 -0
- data/lib/rosett_ai/validators/behaviour_validator.rb +20 -0
- data/lib/rosett_ai/validators/design_validator.rb +17 -0
- data/lib/rosett_ai/validators/schema_validator.rb +84 -0
- data/lib/rosett_ai/validators/tooling_validator.rb +17 -0
- data/lib/rosett_ai/version.rb +8 -0
- data/lib/rosett_ai/version_consistency_checker.rb +129 -0
- data/lib/rosett_ai/workflow/audit_log.rb +86 -0
- data/lib/rosett_ai/workflow/engine.rb +142 -0
- data/lib/rosett_ai/workflow/manager.rb +82 -0
- data/lib/rosett_ai/workflow/schema_validator.rb +71 -0
- data/lib/rosett_ai/workflow/step_runner.rb +61 -0
- data/lib/rosett_ai/workflow/steps/prompt_step.rb +62 -0
- data/lib/rosett_ai/workflow/steps/rai_step.rb +74 -0
- data/lib/rosett_ai/workflow/steps/shell_step.rb +53 -0
- data/lib/rosett_ai/yaml_loader.rb +78 -0
- data/lib/rosett_ai.rb +221 -0
- data/lib/rubocop/cop/rosett_ai/shell_interpolation.rb +54 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_const_get.rb +60 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_send.rb +50 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_yaml_load.rb +40 -0
- data/lib/rubocop/rosett_ai.rb +9 -0
- data/lib/scripts/generated/docker_hub_tags.rb +126 -0
- data/locales/.gitkeep +0 -0
- data/locales/ar.yml +579 -0
- data/locales/en.yml +571 -0
- data/locales/fr.yml +567 -0
- data/packaging/build-engine-deb.sh +81 -0
- data/packaging/scripts/postinst +17 -0
- data/packaging/scripts/postrm +19 -0
- data/packaging/scripts/prerm +10 -0
- data/packaging/wrapper.sh.template +38 -0
- data/rosett-ai.gemspec +63 -0
- data/rules/.gitkeep +0 -0
- data/scripts/publish/pulp_upload.sh +123 -0
- data/settings.json +29 -0
- data/share/applications/be.neatnerds.rosettai.desktop +29 -0
- data/share/dbus-1/interfaces/be.neatnerds.rosettai.xml +103 -0
- data/share/dbus-1/services/be.neatnerds.rosettai.service +3 -0
- data/share/templates/behaviour/criticalthinking.yml +69 -0
- metadata +810 -0
|
@@ -0,0 +1,857 @@
|
|
|
1
|
+
---
|
|
2
|
+
repository: rosett-ai
|
|
3
|
+
audit_type: cli_commands
|
|
4
|
+
created: "2026-03-23"
|
|
5
|
+
completed: "2026-03-23"
|
|
6
|
+
total_command_groups: 28
|
|
7
|
+
audited: 28
|
|
8
|
+
signed_off: 28
|
|
9
|
+
|
|
10
|
+
# Questionnaire (10 questions per command group)
|
|
11
|
+
#
|
|
12
|
+
# Q1 Behavior: Does the command do what it says?
|
|
13
|
+
# Q2 Path awareness: Correct directory context?
|
|
14
|
+
# Q3 Help text: Meaningful desc + long_desc with examples?
|
|
15
|
+
# Q4 Error handling: Correct exit codes, meaningful messages?
|
|
16
|
+
# Q5 Options: Each flag tested and working?
|
|
17
|
+
# Q6 Output: Consistent format, JSON option where appropriate?
|
|
18
|
+
# Q7 i18n: All strings in locale files?
|
|
19
|
+
# Q8 Tests: Unit + integration coverage?
|
|
20
|
+
# Q9 Man page: Documented and accurate?
|
|
21
|
+
# Q10 Accessibility: --accessible mode works?
|
|
22
|
+
#
|
|
23
|
+
# Answer values: pass | concern | fail
|
|
24
|
+
# Status values: pending | in_review | needs_fix | approved | approved_with_notes
|
|
25
|
+
# Finding status values: pending | fixed | accepted
|
|
26
|
+
|
|
27
|
+
# ─────────────────────────────────────────────────
|
|
28
|
+
# Cross-cutting finding: Q10 accessibility
|
|
29
|
+
#
|
|
30
|
+
# The --accessible class_option is defined in lib/rosett_ai/thor/cli.rb:33
|
|
31
|
+
# but options[:accessible] is NEVER checked by any task class.
|
|
32
|
+
# RosettAi::Ui::AccessibleTui exists and is registered, but is only
|
|
33
|
+
# activated via environment detection (ORCA_RUNNING, BRLTTY_TTY),
|
|
34
|
+
# not via the CLI flag. This affects 24 of 28 command groups.
|
|
35
|
+
# The 4 exceptions (completion, version, provenance, backup) produce
|
|
36
|
+
# plain text or already use TTY-aware output.
|
|
37
|
+
#
|
|
38
|
+
# Status: ACCEPTED — tracked for accessibility milestone (post-v1.0.0).
|
|
39
|
+
# The flag is defined and AccessibleTui is implemented; wiring the
|
|
40
|
+
# flag into task classes is a feature enhancement, not a bug.
|
|
41
|
+
# ─────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
# ─────────────────────────────────────────────────
|
|
44
|
+
# Phases completed:
|
|
45
|
+
# Phase 1 (a42a012): Structural fixes — execute→semantic verbs, tree, Dir.pwd
|
|
46
|
+
# Phase 2 (c9bcb8a): Audit registry — Q1-Q10 for all 28 commands
|
|
47
|
+
# Phase 3 (392356f): Test gap remediation — 8 InSpec controls, path awareness tests
|
|
48
|
+
# Phase 4 (d95428b): Help text overhaul — verb-first desc, long_desc with EXAMPLES
|
|
49
|
+
# Phase 5 (this): Sign-off — finding resolution, status flip
|
|
50
|
+
# ─────────────────────────────────────────────────
|
|
51
|
+
|
|
52
|
+
command_groups:
|
|
53
|
+
adopt:
|
|
54
|
+
file: lib/rosett_ai/thor/tasks/adopt.rb
|
|
55
|
+
spec: spec/rosett_ai/thor/tasks/adopt_spec.rb
|
|
56
|
+
integration: test/integration/rai_commands/controls/adopt.rb
|
|
57
|
+
status: approved_with_notes
|
|
58
|
+
notes: "Q10 accepted — accessibility wiring deferred to post-v1.0.0"
|
|
59
|
+
answers:
|
|
60
|
+
Q1_behavior: pass
|
|
61
|
+
Q2_path_awareness: pass
|
|
62
|
+
Q3_help_text: pass
|
|
63
|
+
Q4_error_handling: pass
|
|
64
|
+
Q5_options: pass
|
|
65
|
+
Q6_output: pass
|
|
66
|
+
Q7_i18n: pass
|
|
67
|
+
Q8_tests: pass
|
|
68
|
+
Q9_man_page: pass
|
|
69
|
+
Q10_accessibility: fail
|
|
70
|
+
findings:
|
|
71
|
+
- severity: high
|
|
72
|
+
question: Q10
|
|
73
|
+
description: "Color-only severity (critical=red bright, high=red, medium=yellow, low=cyan). --accessible flag ignored."
|
|
74
|
+
resolution: "Check options[:accessible] and spell out severity in column text. Use plain text status labels."
|
|
75
|
+
status: accepted
|
|
76
|
+
|
|
77
|
+
backup:
|
|
78
|
+
file: lib/rosett_ai/thor/tasks/backup.rb
|
|
79
|
+
spec: spec/rosett_ai/thor/tasks/backup_spec.rb
|
|
80
|
+
integration: test/integration/rai_commands/controls/backup.rb
|
|
81
|
+
status: approved
|
|
82
|
+
answers:
|
|
83
|
+
Q1_behavior: pass
|
|
84
|
+
Q2_path_awareness: pass
|
|
85
|
+
Q3_help_text: pass
|
|
86
|
+
Q4_error_handling: pass
|
|
87
|
+
Q5_options: pass
|
|
88
|
+
Q6_output: pass
|
|
89
|
+
Q7_i18n: pass
|
|
90
|
+
Q8_tests: pass
|
|
91
|
+
Q9_man_page: pass
|
|
92
|
+
Q10_accessibility: concern
|
|
93
|
+
findings:
|
|
94
|
+
- severity: minor
|
|
95
|
+
question: Q10
|
|
96
|
+
description: "TTY::Spinner correctly gated by TtyHelper.interactive? but no explicit --accessible mode."
|
|
97
|
+
resolution: "Add plain text output when TtyHelper.accessible? is true. Already better than other commands."
|
|
98
|
+
status: accepted
|
|
99
|
+
|
|
100
|
+
behaviour:
|
|
101
|
+
file: lib/rosett_ai/thor/tasks/behaviour.rb
|
|
102
|
+
spec: spec/rosett_ai/thor/tasks/behaviour_spec.rb
|
|
103
|
+
additional_specs:
|
|
104
|
+
- spec/rosett_ai/thor/tasks/behaviour_manage_spec.rb
|
|
105
|
+
integration: test/integration/rai_commands/controls/behaviour.rb
|
|
106
|
+
status: approved_with_notes
|
|
107
|
+
notes: "Q3 fixed in Phase 4. Q10 accepted — accessibility wiring deferred."
|
|
108
|
+
answers:
|
|
109
|
+
Q1_behavior: pass
|
|
110
|
+
Q2_path_awareness: pass
|
|
111
|
+
Q3_help_text: pass
|
|
112
|
+
Q4_error_handling: pass
|
|
113
|
+
Q5_options: pass
|
|
114
|
+
Q6_output: pass
|
|
115
|
+
Q7_i18n: pass
|
|
116
|
+
Q8_tests: pass
|
|
117
|
+
Q9_man_page: pass
|
|
118
|
+
Q10_accessibility: fail
|
|
119
|
+
findings:
|
|
120
|
+
- severity: medium
|
|
121
|
+
question: Q3
|
|
122
|
+
description: "behaviour subcommands (display, list, show, validate) lack long_desc with examples."
|
|
123
|
+
resolution: "Add long_desc to each subcommand showing example usage and flag documentation."
|
|
124
|
+
status: fixed
|
|
125
|
+
- severity: high
|
|
126
|
+
question: Q10
|
|
127
|
+
description: "No --accessible mode. Color-only status indicators (red/green/yellow)."
|
|
128
|
+
resolution: "Check options[:accessible] and use plain text status labels."
|
|
129
|
+
status: accepted
|
|
130
|
+
|
|
131
|
+
build:
|
|
132
|
+
file: lib/rosett_ai/thor/tasks/build.rb
|
|
133
|
+
spec: spec/rosett_ai/thor/tasks/build_spec.rb
|
|
134
|
+
additional_specs:
|
|
135
|
+
- spec/rosett_ai/thor/tasks/build_package_spec.rb
|
|
136
|
+
- spec/rosett_ai/thor/tasks/build_engine_spec.rb
|
|
137
|
+
integration: test/integration/rai_commands/controls/build.rb
|
|
138
|
+
status: approved_with_notes
|
|
139
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q7 and Q10 accepted — deferred to i18n and accessibility milestones."
|
|
140
|
+
answers:
|
|
141
|
+
Q1_behavior: pass
|
|
142
|
+
Q2_path_awareness: pass
|
|
143
|
+
Q3_help_text: pass
|
|
144
|
+
Q4_error_handling: pass
|
|
145
|
+
Q5_options: pass
|
|
146
|
+
Q6_output: pass
|
|
147
|
+
Q7_i18n: concern
|
|
148
|
+
Q8_tests: pass
|
|
149
|
+
Q9_man_page: pass
|
|
150
|
+
Q10_accessibility: fail
|
|
151
|
+
findings:
|
|
152
|
+
- severity: medium
|
|
153
|
+
question: Q7
|
|
154
|
+
description: "Most user-facing strings hardcoded English. Only 3 i18n keys exist."
|
|
155
|
+
resolution: "Extract all strings to locales/en.yml under rosett_ai.cli.build and rosett_ai.cli.build_engine."
|
|
156
|
+
status: accepted
|
|
157
|
+
- severity: medium
|
|
158
|
+
question: Q8
|
|
159
|
+
description: "No InSpec integration tests. Unit coverage thorough but e2e missing."
|
|
160
|
+
resolution: "Add test/integration/rai_commands/controls/build.rb with smoke tests."
|
|
161
|
+
status: fixed
|
|
162
|
+
- severity: high
|
|
163
|
+
question: Q10
|
|
164
|
+
description: "No --accessible mode. Color-only status, animated spinners, no screen reader support."
|
|
165
|
+
resolution: "Check TtyHelper.accessible? before Rainbow/TTY::Spinner."
|
|
166
|
+
status: accepted
|
|
167
|
+
|
|
168
|
+
compile:
|
|
169
|
+
file: lib/rosett_ai/thor/tasks/compile.rb
|
|
170
|
+
spec: spec/rosett_ai/thor/tasks/compile_spec.rb
|
|
171
|
+
integration: test/integration/rai_commands/controls/compile.rb
|
|
172
|
+
status: approved_with_notes
|
|
173
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
174
|
+
answers:
|
|
175
|
+
Q1_behavior: pass
|
|
176
|
+
Q2_path_awareness: pass
|
|
177
|
+
Q3_help_text: pass
|
|
178
|
+
Q4_error_handling: pass
|
|
179
|
+
Q5_options: pass
|
|
180
|
+
Q6_output: pass
|
|
181
|
+
Q7_i18n: pass
|
|
182
|
+
Q8_tests: pass
|
|
183
|
+
Q9_man_page: pass
|
|
184
|
+
Q10_accessibility: fail
|
|
185
|
+
findings:
|
|
186
|
+
- severity: medium
|
|
187
|
+
question: Q10
|
|
188
|
+
description: "Rainbow coloring throughout (lines 83, 120, 169, etc.) without checking --accessible flag."
|
|
189
|
+
resolution: "Check options[:accessible] or query RosettAi::Ui::Registry adapter. Conditionally disable Rainbow."
|
|
190
|
+
status: accepted
|
|
191
|
+
|
|
192
|
+
completion:
|
|
193
|
+
file: lib/rosett_ai/thor/tasks/completion.rb
|
|
194
|
+
spec: spec/rosett_ai/thor/tasks/completion_spec.rb
|
|
195
|
+
integration: test/integration/rai_commands/controls/completion.rb
|
|
196
|
+
status: approved_with_notes
|
|
197
|
+
notes: "Q7 accepted — error message i18n deferred."
|
|
198
|
+
answers:
|
|
199
|
+
Q1_behavior: pass
|
|
200
|
+
Q2_path_awareness: pass
|
|
201
|
+
Q3_help_text: pass
|
|
202
|
+
Q4_error_handling: pass
|
|
203
|
+
Q5_options: pass
|
|
204
|
+
Q6_output: pass
|
|
205
|
+
Q7_i18n: concern
|
|
206
|
+
Q8_tests: pass
|
|
207
|
+
Q9_man_page: pass
|
|
208
|
+
Q10_accessibility: pass
|
|
209
|
+
findings:
|
|
210
|
+
- severity: minor
|
|
211
|
+
question: Q7
|
|
212
|
+
description: "Only install success message uses i18n. Error messages hardcoded in English."
|
|
213
|
+
resolution: "Extract error messages to locales/en.yml under rosett_ai.cli.completion."
|
|
214
|
+
status: accepted
|
|
215
|
+
|
|
216
|
+
comply:
|
|
217
|
+
file: lib/rosett_ai/thor/tasks/comply.rb
|
|
218
|
+
spec: spec/rosett_ai/thor/tasks/comply_spec.rb
|
|
219
|
+
integration: test/integration/rai_commands/controls/comply.rb
|
|
220
|
+
status: approved_with_notes
|
|
221
|
+
notes: "Q7 and Q10 accepted — deferred to i18n and accessibility milestones."
|
|
222
|
+
answers:
|
|
223
|
+
Q1_behavior: pass
|
|
224
|
+
Q2_path_awareness: pass
|
|
225
|
+
Q3_help_text: pass
|
|
226
|
+
Q4_error_handling: pass
|
|
227
|
+
Q5_options: pass
|
|
228
|
+
Q6_output: pass
|
|
229
|
+
Q7_i18n: concern
|
|
230
|
+
Q8_tests: pass
|
|
231
|
+
Q9_man_page: pass
|
|
232
|
+
Q10_accessibility: concern
|
|
233
|
+
findings:
|
|
234
|
+
- severity: minor
|
|
235
|
+
question: Q7
|
|
236
|
+
description: "i18n keys at rosett_ai.comply.* instead of Rosett-AI.cli.comply. Only 7 keys; check messages may be hardcoded."
|
|
237
|
+
resolution: "Audit Reporter/Runner for hardcoded strings. Move all keys to rosett_ai.cli.comply."
|
|
238
|
+
status: accepted
|
|
239
|
+
- severity: medium
|
|
240
|
+
question: Q10
|
|
241
|
+
description: "No explicit --accessible handling. JSON format good but no plain text alternative."
|
|
242
|
+
resolution: "Add --format=plain for screen readers. Check TtyHelper.accessible? in Reporter."
|
|
243
|
+
status: accepted
|
|
244
|
+
|
|
245
|
+
config:
|
|
246
|
+
file: lib/rosett_ai/thor/tasks/config.rb
|
|
247
|
+
spec: spec/rosett_ai/thor/tasks/config_spec.rb
|
|
248
|
+
integration: test/integration/rai_commands/controls/config_cmd.rb
|
|
249
|
+
status: approved_with_notes
|
|
250
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
251
|
+
answers:
|
|
252
|
+
Q1_behavior: pass
|
|
253
|
+
Q2_path_awareness: pass
|
|
254
|
+
Q3_help_text: pass
|
|
255
|
+
Q4_error_handling: pass
|
|
256
|
+
Q5_options: pass
|
|
257
|
+
Q6_output: pass
|
|
258
|
+
Q7_i18n: pass
|
|
259
|
+
Q8_tests: pass
|
|
260
|
+
Q9_man_page: pass
|
|
261
|
+
Q10_accessibility: fail
|
|
262
|
+
findings:
|
|
263
|
+
- severity: high
|
|
264
|
+
question: Q10
|
|
265
|
+
description: "Color (green/yellow/red/cyan) and Unicode symbols (checkmark/cross/dash) only. No --accessible mode."
|
|
266
|
+
resolution: "Check options[:accessible]. Spell out action names ('Created', 'Updated')."
|
|
267
|
+
status: accepted
|
|
268
|
+
|
|
269
|
+
content:
|
|
270
|
+
file: lib/rosett_ai/thor/tasks/content.rb
|
|
271
|
+
spec: spec/rosett_ai/thor/tasks/content_spec.rb
|
|
272
|
+
integration: test/integration/rai_commands/controls/content.rb
|
|
273
|
+
status: approved_with_notes
|
|
274
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q10 accepted — accessibility wiring deferred."
|
|
275
|
+
answers:
|
|
276
|
+
Q1_behavior: pass
|
|
277
|
+
Q2_path_awareness: pass
|
|
278
|
+
Q3_help_text: pass
|
|
279
|
+
Q4_error_handling: pass
|
|
280
|
+
Q5_options: pass
|
|
281
|
+
Q6_output: pass
|
|
282
|
+
Q7_i18n: pass
|
|
283
|
+
Q8_tests: pass
|
|
284
|
+
Q9_man_page: pass
|
|
285
|
+
Q10_accessibility: fail
|
|
286
|
+
findings:
|
|
287
|
+
- severity: medium
|
|
288
|
+
question: Q8
|
|
289
|
+
description: "No InSpec integration tests (premium features may need special setup)."
|
|
290
|
+
resolution: "Add test/integration/rai_commands/controls/content.rb with smoke tests."
|
|
291
|
+
status: fixed
|
|
292
|
+
- severity: high
|
|
293
|
+
question: Q10
|
|
294
|
+
description: "Rainbow colors without accessible alternative."
|
|
295
|
+
resolution: "Check options[:accessible] before coloring. Add --format=plain."
|
|
296
|
+
status: accepted
|
|
297
|
+
|
|
298
|
+
dbus:
|
|
299
|
+
file: lib/rosett_ai/thor/tasks/dbus.rb
|
|
300
|
+
spec: spec/rosett_ai/thor/tasks/dbus_spec.rb
|
|
301
|
+
integration: test/integration/rai_commands/controls/dbus.rb
|
|
302
|
+
status: approved_with_notes
|
|
303
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q10 accepted — accessibility wiring deferred."
|
|
304
|
+
answers:
|
|
305
|
+
Q1_behavior: pass
|
|
306
|
+
Q2_path_awareness: pass
|
|
307
|
+
Q3_help_text: pass
|
|
308
|
+
Q4_error_handling: pass
|
|
309
|
+
Q5_options: pass
|
|
310
|
+
Q6_output: pass
|
|
311
|
+
Q7_i18n: pass
|
|
312
|
+
Q8_tests: pass
|
|
313
|
+
Q9_man_page: pass
|
|
314
|
+
Q10_accessibility: concern
|
|
315
|
+
findings:
|
|
316
|
+
- severity: medium
|
|
317
|
+
question: Q8
|
|
318
|
+
description: "No InSpec integration test. Only RSpec unit tests."
|
|
319
|
+
resolution: "Add test/integration/rai_commands/controls/dbus.rb."
|
|
320
|
+
status: fixed
|
|
321
|
+
- severity: medium
|
|
322
|
+
question: Q10
|
|
323
|
+
description: "TTY color output (green/yellow/red) without --accessible override."
|
|
324
|
+
resolution: "Check options[:accessible] before Rainbow. Add plain text status labels."
|
|
325
|
+
status: accepted
|
|
326
|
+
|
|
327
|
+
design:
|
|
328
|
+
file: lib/rosett_ai/thor/tasks/design.rb
|
|
329
|
+
spec: spec/rosett_ai/thor/tasks/design_spec.rb
|
|
330
|
+
integration: test/integration/rai_commands/controls/design.rb
|
|
331
|
+
status: approved_with_notes
|
|
332
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
333
|
+
answers:
|
|
334
|
+
Q1_behavior: pass
|
|
335
|
+
Q2_path_awareness: pass
|
|
336
|
+
Q3_help_text: pass
|
|
337
|
+
Q4_error_handling: pass
|
|
338
|
+
Q5_options: pass
|
|
339
|
+
Q6_output: pass
|
|
340
|
+
Q7_i18n: pass
|
|
341
|
+
Q8_tests: pass
|
|
342
|
+
Q9_man_page: pass
|
|
343
|
+
Q10_accessibility: fail
|
|
344
|
+
findings:
|
|
345
|
+
- severity: high
|
|
346
|
+
question: Q10
|
|
347
|
+
description: "Color-only status (approved=green, draft=yellow). No --accessible mode."
|
|
348
|
+
resolution: "Check options[:accessible] and use plain text status labels."
|
|
349
|
+
status: accepted
|
|
350
|
+
|
|
351
|
+
desktop:
|
|
352
|
+
file: lib/rosett_ai/thor/tasks/desktop.rb
|
|
353
|
+
spec: spec/rosett_ai/thor/tasks/desktop_spec.rb
|
|
354
|
+
integration: test/integration/rai_commands/controls/desktop.rb
|
|
355
|
+
status: approved_with_notes
|
|
356
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q10 accepted — accessibility wiring deferred."
|
|
357
|
+
answers:
|
|
358
|
+
Q1_behavior: pass
|
|
359
|
+
Q2_path_awareness: pass
|
|
360
|
+
Q3_help_text: pass
|
|
361
|
+
Q4_error_handling: pass
|
|
362
|
+
Q5_options: pass
|
|
363
|
+
Q6_output: pass
|
|
364
|
+
Q7_i18n: pass
|
|
365
|
+
Q8_tests: pass
|
|
366
|
+
Q9_man_page: pass
|
|
367
|
+
Q10_accessibility: concern
|
|
368
|
+
findings:
|
|
369
|
+
- severity: medium
|
|
370
|
+
question: Q8
|
|
371
|
+
description: "No InSpec integration test. Only RSpec unit tests."
|
|
372
|
+
resolution: "Add test/integration/rai_commands/controls/desktop.rb."
|
|
373
|
+
status: fixed
|
|
374
|
+
- severity: medium
|
|
375
|
+
question: Q10
|
|
376
|
+
description: "TTY color output (green/yellow) without --accessible override."
|
|
377
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
378
|
+
status: accepted
|
|
379
|
+
|
|
380
|
+
doctor:
|
|
381
|
+
file: lib/rosett_ai/thor/tasks/doctor.rb
|
|
382
|
+
spec: spec/rosett_ai/thor/tasks/doctor_spec.rb
|
|
383
|
+
integration: test/integration/rai_commands/controls/doctor.rb
|
|
384
|
+
status: approved_with_notes
|
|
385
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
386
|
+
answers:
|
|
387
|
+
Q1_behavior: pass
|
|
388
|
+
Q2_path_awareness: pass
|
|
389
|
+
Q3_help_text: pass
|
|
390
|
+
Q4_error_handling: pass
|
|
391
|
+
Q5_options: pass
|
|
392
|
+
Q6_output: pass
|
|
393
|
+
Q7_i18n: pass
|
|
394
|
+
Q8_tests: pass
|
|
395
|
+
Q9_man_page: pass
|
|
396
|
+
Q10_accessibility: fail
|
|
397
|
+
findings:
|
|
398
|
+
- severity: medium
|
|
399
|
+
question: Q10
|
|
400
|
+
description: "Rainbow for status colors. Terminal::Table with box-drawing chars. No --accessible mode."
|
|
401
|
+
resolution: "Check options[:accessible]. Use RosettAi::Ui::AccessibleTui.display_table when set."
|
|
402
|
+
status: accepted
|
|
403
|
+
|
|
404
|
+
documentation:
|
|
405
|
+
file: lib/rosett_ai/thor/tasks/documentation.rb
|
|
406
|
+
spec: spec/rosett_ai/thor/tasks/documentation_spec.rb
|
|
407
|
+
integration: test/integration/rai_commands/controls/documentation.rb
|
|
408
|
+
status: approved_with_notes
|
|
409
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q1/Q4/Q10 accepted — stub implementation and accessibility deferred."
|
|
410
|
+
answers:
|
|
411
|
+
Q1_behavior: concern
|
|
412
|
+
Q2_path_awareness: pass
|
|
413
|
+
Q3_help_text: pass
|
|
414
|
+
Q4_error_handling: concern
|
|
415
|
+
Q5_options: pass
|
|
416
|
+
Q6_output: concern
|
|
417
|
+
Q7_i18n: pass
|
|
418
|
+
Q8_tests: pass
|
|
419
|
+
Q9_man_page: pass
|
|
420
|
+
Q10_accessibility: fail
|
|
421
|
+
findings:
|
|
422
|
+
- severity: medium
|
|
423
|
+
question: Q1
|
|
424
|
+
description: "apply_changes stubs only print messages, do not actually modify files."
|
|
425
|
+
resolution: "Implement actual file modification or document as future work."
|
|
426
|
+
status: accepted
|
|
427
|
+
- severity: medium
|
|
428
|
+
question: Q4
|
|
429
|
+
description: "No explicit Thor::Error raises for validation failures. translate continues on missing file."
|
|
430
|
+
resolution: "Add proper exit codes and Thor::Error for failures."
|
|
431
|
+
status: accepted
|
|
432
|
+
- severity: medium
|
|
433
|
+
question: Q8
|
|
434
|
+
description: "No InSpec integration tests. Only RSpec unit tests."
|
|
435
|
+
resolution: "Add test/integration/rai_commands/controls/documentation.rb."
|
|
436
|
+
status: fixed
|
|
437
|
+
- severity: high
|
|
438
|
+
question: Q10
|
|
439
|
+
description: "Hardcoded Paint/Rainbow calls. TTY::Spinner with Unicode. Does not check --accessible."
|
|
440
|
+
resolution: "Check options[:accessible] before Paint/Rainbow/TTY::Spinner."
|
|
441
|
+
status: accepted
|
|
442
|
+
|
|
443
|
+
engines:
|
|
444
|
+
file: lib/rosett_ai/thor/tasks/engines.rb
|
|
445
|
+
spec: spec/rosett_ai/thor/tasks/engines_spec.rb
|
|
446
|
+
integration: test/integration/rai_commands/controls/engines.rb
|
|
447
|
+
status: approved_with_notes
|
|
448
|
+
notes: "Q8 minor gap accepted. Q10 accepted — accessibility wiring deferred."
|
|
449
|
+
answers:
|
|
450
|
+
Q1_behavior: pass
|
|
451
|
+
Q2_path_awareness: pass
|
|
452
|
+
Q3_help_text: pass
|
|
453
|
+
Q4_error_handling: pass
|
|
454
|
+
Q5_options: pass
|
|
455
|
+
Q6_output: pass
|
|
456
|
+
Q7_i18n: pass
|
|
457
|
+
Q8_tests: concern
|
|
458
|
+
Q9_man_page: pass
|
|
459
|
+
Q10_accessibility: fail
|
|
460
|
+
findings:
|
|
461
|
+
- severity: minor
|
|
462
|
+
question: Q8
|
|
463
|
+
description: "Missing test coverage for 'engines plugins' subcommand."
|
|
464
|
+
resolution: "Add RSpec and InSpec tests for 'engines plugins' subcommand."
|
|
465
|
+
status: accepted
|
|
466
|
+
- severity: high
|
|
467
|
+
question: Q10
|
|
468
|
+
description: "Rainbow colors without fallback. No --accessible mode."
|
|
469
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
470
|
+
status: accepted
|
|
471
|
+
|
|
472
|
+
hooks:
|
|
473
|
+
file: lib/rosett_ai/thor/tasks/hooks.rb
|
|
474
|
+
spec: spec/rosett_ai/thor/tasks/hooks_spec.rb
|
|
475
|
+
integration: test/integration/rai_commands/controls/hooks.rb
|
|
476
|
+
status: approved_with_notes
|
|
477
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
478
|
+
answers:
|
|
479
|
+
Q1_behavior: pass
|
|
480
|
+
Q2_path_awareness: pass
|
|
481
|
+
Q3_help_text: pass
|
|
482
|
+
Q4_error_handling: pass
|
|
483
|
+
Q5_options: pass
|
|
484
|
+
Q6_output: pass
|
|
485
|
+
Q7_i18n: pass
|
|
486
|
+
Q8_tests: pass
|
|
487
|
+
Q9_man_page: pass
|
|
488
|
+
Q10_accessibility: concern
|
|
489
|
+
findings:
|
|
490
|
+
- severity: medium
|
|
491
|
+
question: Q10
|
|
492
|
+
description: "Table output uses color (green/yellow/red/cyan) without --accessible override."
|
|
493
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
494
|
+
status: accepted
|
|
495
|
+
|
|
496
|
+
init:
|
|
497
|
+
file: lib/rosett_ai/thor/tasks/init.rb
|
|
498
|
+
spec: spec/rosett_ai/thor/tasks/init_spec.rb
|
|
499
|
+
integration: test/integration/rai_commands/controls/init.rb
|
|
500
|
+
status: approved_with_notes
|
|
501
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
502
|
+
answers:
|
|
503
|
+
Q1_behavior: pass
|
|
504
|
+
Q2_path_awareness: pass
|
|
505
|
+
Q3_help_text: pass
|
|
506
|
+
Q4_error_handling: pass
|
|
507
|
+
Q5_options: pass
|
|
508
|
+
Q6_output: pass
|
|
509
|
+
Q7_i18n: pass
|
|
510
|
+
Q8_tests: pass
|
|
511
|
+
Q9_man_page: pass
|
|
512
|
+
Q10_accessibility: fail
|
|
513
|
+
findings:
|
|
514
|
+
- severity: medium
|
|
515
|
+
question: Q10
|
|
516
|
+
description: "Rainbow + TTY::Spinner without checking --accessible. TtyHelper.interactive? helps but doesn't address the flag."
|
|
517
|
+
resolution: "Check options[:accessible] before using Rainbow. Replace spinners with plain messages when set."
|
|
518
|
+
status: accepted
|
|
519
|
+
|
|
520
|
+
license:
|
|
521
|
+
file: lib/rosett_ai/thor/tasks/license.rb
|
|
522
|
+
spec: spec/rosett_ai/thor/tasks/license_spec.rb
|
|
523
|
+
integration: test/integration/rai_commands/controls/license.rb
|
|
524
|
+
status: approved_with_notes
|
|
525
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q10 accepted — accessibility wiring deferred."
|
|
526
|
+
answers:
|
|
527
|
+
Q1_behavior: pass
|
|
528
|
+
Q2_path_awareness: pass
|
|
529
|
+
Q3_help_text: pass
|
|
530
|
+
Q4_error_handling: pass
|
|
531
|
+
Q5_options: pass
|
|
532
|
+
Q6_output: pass
|
|
533
|
+
Q7_i18n: pass
|
|
534
|
+
Q8_tests: pass
|
|
535
|
+
Q9_man_page: pass
|
|
536
|
+
Q10_accessibility: fail
|
|
537
|
+
findings:
|
|
538
|
+
- severity: medium
|
|
539
|
+
question: Q8
|
|
540
|
+
description: "No InSpec integration tests."
|
|
541
|
+
resolution: "Add test/integration/rai_commands/controls/license.rb."
|
|
542
|
+
status: fixed
|
|
543
|
+
- severity: medium
|
|
544
|
+
question: Q10
|
|
545
|
+
description: "Rainbow colors (yellow/green/red) without --accessible mode."
|
|
546
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
547
|
+
status: accepted
|
|
548
|
+
|
|
549
|
+
mcp:
|
|
550
|
+
file: lib/rosett_ai/thor/tasks/mcp.rb
|
|
551
|
+
spec: spec/rosett_ai/thor/tasks/mcp_spec.rb
|
|
552
|
+
integration: test/integration/rai_commands/controls/mcp.rb
|
|
553
|
+
status: approved_with_notes
|
|
554
|
+
notes: "Q7/Q8/Q10 accepted — i18n, test depth, and accessibility deferred."
|
|
555
|
+
answers:
|
|
556
|
+
Q1_behavior: pass
|
|
557
|
+
Q2_path_awareness: pass
|
|
558
|
+
Q3_help_text: pass
|
|
559
|
+
Q4_error_handling: pass
|
|
560
|
+
Q5_options: pass
|
|
561
|
+
Q6_output: pass
|
|
562
|
+
Q7_i18n: concern
|
|
563
|
+
Q8_tests: concern
|
|
564
|
+
Q9_man_page: pass
|
|
565
|
+
Q10_accessibility: concern
|
|
566
|
+
findings:
|
|
567
|
+
- severity: high
|
|
568
|
+
question: Q7
|
|
569
|
+
description: "Only 3 i18n keys. Many hardcoded strings (trust messages, table headings, validation output)."
|
|
570
|
+
resolution: "Extract all user-visible strings to locales/en.yml under rosett_ai.cli.mcp."
|
|
571
|
+
status: accepted
|
|
572
|
+
- severity: high
|
|
573
|
+
question: Q8
|
|
574
|
+
description: "Minimal RSpec coverage (3 tests for 9 subcommands). No tests for add/remove/trust-*/audit/serve."
|
|
575
|
+
resolution: "Add comprehensive RSpec tests for all 9 mcp subcommands."
|
|
576
|
+
status: accepted
|
|
577
|
+
- severity: medium
|
|
578
|
+
question: Q10
|
|
579
|
+
description: "Table output uses color without --accessible override."
|
|
580
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
581
|
+
status: accepted
|
|
582
|
+
|
|
583
|
+
plugins:
|
|
584
|
+
file: lib/rosett_ai/thor/tasks/plugins.rb
|
|
585
|
+
spec: spec/rosett_ai/thor/tasks/plugins_spec.rb
|
|
586
|
+
integration: test/integration/rai_commands/controls/plugins.rb
|
|
587
|
+
status: approved_with_notes
|
|
588
|
+
notes: "Q4/Q10 accepted — error handling style and accessibility deferred."
|
|
589
|
+
answers:
|
|
590
|
+
Q1_behavior: pass
|
|
591
|
+
Q2_path_awareness: pass
|
|
592
|
+
Q3_help_text: pass
|
|
593
|
+
Q4_error_handling: concern
|
|
594
|
+
Q5_options: pass
|
|
595
|
+
Q6_output: pass
|
|
596
|
+
Q7_i18n: pass
|
|
597
|
+
Q8_tests: pass
|
|
598
|
+
Q9_man_page: pass
|
|
599
|
+
Q10_accessibility: fail
|
|
600
|
+
findings:
|
|
601
|
+
- severity: medium
|
|
602
|
+
question: Q4
|
|
603
|
+
description: "install/remove use 'exit 1' instead of raising Thor::Error (inconsistent with other commands)."
|
|
604
|
+
resolution: "Replace 'exit 1' with 'raise ::Thor::Error' for consistent error handling."
|
|
605
|
+
status: accepted
|
|
606
|
+
- severity: high
|
|
607
|
+
question: Q10
|
|
608
|
+
description: "Rainbow colors without fallback. --accessible flag not used."
|
|
609
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
610
|
+
status: accepted
|
|
611
|
+
|
|
612
|
+
project:
|
|
613
|
+
file: lib/rosett_ai/thor/tasks/project.rb
|
|
614
|
+
spec: spec/rosett_ai/thor/tasks/project_spec.rb
|
|
615
|
+
integration: test/integration/rai_commands/controls/project.rb
|
|
616
|
+
status: approved_with_notes
|
|
617
|
+
notes: "Q1/Q8/Q10 accepted — behavioral test depth and accessibility deferred."
|
|
618
|
+
answers:
|
|
619
|
+
Q1_behavior: concern
|
|
620
|
+
Q2_path_awareness: pass
|
|
621
|
+
Q3_help_text: pass
|
|
622
|
+
Q4_error_handling: pass
|
|
623
|
+
Q5_options: pass
|
|
624
|
+
Q6_output: pass
|
|
625
|
+
Q7_i18n: pass
|
|
626
|
+
Q8_tests: concern
|
|
627
|
+
Q9_man_page: pass
|
|
628
|
+
Q10_accessibility: fail
|
|
629
|
+
findings:
|
|
630
|
+
- severity: medium
|
|
631
|
+
question: Q1
|
|
632
|
+
description: "Specs only test command registration and option presence, not actual behavior."
|
|
633
|
+
resolution: "Add behavioral tests for status, info, apply-template, drift, sync."
|
|
634
|
+
status: accepted
|
|
635
|
+
- severity: medium
|
|
636
|
+
question: Q8
|
|
637
|
+
description: "No behavioral RSpec tests. InSpec tests status/info only."
|
|
638
|
+
resolution: "Add comprehensive behavioral tests."
|
|
639
|
+
status: accepted
|
|
640
|
+
- severity: high
|
|
641
|
+
question: Q10
|
|
642
|
+
description: "Rainbow colors (green/yellow/red) as sole health indicators. --accessible flag ignored."
|
|
643
|
+
resolution: "Check options[:accessible] and use plain text status labels."
|
|
644
|
+
status: accepted
|
|
645
|
+
|
|
646
|
+
provenance:
|
|
647
|
+
file: lib/rosett_ai/thor/tasks/provenance.rb
|
|
648
|
+
spec: spec/rosett_ai/thor/tasks/provenance_spec.rb
|
|
649
|
+
integration: test/integration/rai_commands/controls/provenance.rb
|
|
650
|
+
status: approved
|
|
651
|
+
notes: "Q9 fixed in Phase 5 — removed undocumented 'provenance add' from man page."
|
|
652
|
+
answers:
|
|
653
|
+
Q1_behavior: pass
|
|
654
|
+
Q2_path_awareness: pass
|
|
655
|
+
Q3_help_text: pass
|
|
656
|
+
Q4_error_handling: pass
|
|
657
|
+
Q5_options: pass
|
|
658
|
+
Q6_output: pass
|
|
659
|
+
Q7_i18n: pass
|
|
660
|
+
Q8_tests: pass
|
|
661
|
+
Q9_man_page: pass
|
|
662
|
+
Q10_accessibility: pass
|
|
663
|
+
findings:
|
|
664
|
+
- severity: high
|
|
665
|
+
question: Q9
|
|
666
|
+
description: "Man page documented 'provenance add' command that did not exist in source code."
|
|
667
|
+
resolution: "Removed 'provenance add' from man page (Phase 5). 4 subcommands match: init, validate, show, log."
|
|
668
|
+
status: fixed
|
|
669
|
+
- severity: minor
|
|
670
|
+
question: Q1
|
|
671
|
+
description: "4 subcommands implemented (init, validate, show, log). Man page previously documented 5th 'add' that didn't exist."
|
|
672
|
+
resolution: "Man page corrected — no longer documents non-existent 'add' subcommand."
|
|
673
|
+
status: fixed
|
|
674
|
+
|
|
675
|
+
release:
|
|
676
|
+
file: lib/rosett_ai/thor/tasks/release.rb
|
|
677
|
+
spec: spec/rosett_ai/thor/tasks/release_spec.rb
|
|
678
|
+
integration: test/integration/rai_commands/controls/release.rb
|
|
679
|
+
status: approved_with_notes
|
|
680
|
+
notes: "Q8 fixed in Phase 3 (InSpec). Q10 accepted — accessibility wiring deferred."
|
|
681
|
+
answers:
|
|
682
|
+
Q1_behavior: pass
|
|
683
|
+
Q2_path_awareness: pass
|
|
684
|
+
Q3_help_text: pass
|
|
685
|
+
Q4_error_handling: pass
|
|
686
|
+
Q5_options: pass
|
|
687
|
+
Q6_output: pass
|
|
688
|
+
Q7_i18n: pass
|
|
689
|
+
Q8_tests: pass
|
|
690
|
+
Q9_man_page: pass
|
|
691
|
+
Q10_accessibility: fail
|
|
692
|
+
findings:
|
|
693
|
+
- severity: medium
|
|
694
|
+
question: Q8
|
|
695
|
+
description: "No InSpec integration tests. Git operations mocked in unit tests."
|
|
696
|
+
resolution: "Add test/integration/rai_commands/controls/release.rb with 'release status' smoke test."
|
|
697
|
+
status: fixed
|
|
698
|
+
- severity: high
|
|
699
|
+
question: Q10
|
|
700
|
+
description: "Rainbow used for all status indicators (green/red). No --accessible mode."
|
|
701
|
+
resolution: "Add explicit PASS/FAIL text. Check TtyHelper.accessible? before Rainbow."
|
|
702
|
+
status: accepted
|
|
703
|
+
|
|
704
|
+
retrofit:
|
|
705
|
+
file: lib/rosett_ai/thor/tasks/retrofit.rb
|
|
706
|
+
spec: spec/rosett_ai/thor/tasks/retrofit_spec.rb
|
|
707
|
+
integration: test/integration/rai_commands/controls/retrofit.rb
|
|
708
|
+
status: approved_with_notes
|
|
709
|
+
notes: "Q1/Q8/Q10 accepted — behavioral test depth and accessibility deferred."
|
|
710
|
+
answers:
|
|
711
|
+
Q1_behavior: concern
|
|
712
|
+
Q2_path_awareness: pass
|
|
713
|
+
Q3_help_text: pass
|
|
714
|
+
Q4_error_handling: pass
|
|
715
|
+
Q5_options: pass
|
|
716
|
+
Q6_output: pass
|
|
717
|
+
Q7_i18n: pass
|
|
718
|
+
Q8_tests: concern
|
|
719
|
+
Q9_man_page: pass
|
|
720
|
+
Q10_accessibility: fail
|
|
721
|
+
findings:
|
|
722
|
+
- severity: medium
|
|
723
|
+
question: Q1
|
|
724
|
+
description: "Specs only test command registration and option presence, not actual behavior."
|
|
725
|
+
resolution: "Add behavioral tests for convert and engines subcommands."
|
|
726
|
+
status: accepted
|
|
727
|
+
- severity: medium
|
|
728
|
+
question: Q8
|
|
729
|
+
description: "No behavioral RSpec tests. InSpec tests help/engines only."
|
|
730
|
+
resolution: "Add comprehensive behavioral tests."
|
|
731
|
+
status: accepted
|
|
732
|
+
- severity: high
|
|
733
|
+
question: Q10
|
|
734
|
+
description: "Rainbow colors (green/yellow/red) as sole file status indicators. --accessible flag ignored."
|
|
735
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
736
|
+
status: accepted
|
|
737
|
+
|
|
738
|
+
tooling:
|
|
739
|
+
file: lib/rosett_ai/thor/tasks/tooling.rb
|
|
740
|
+
spec: spec/rosett_ai/thor/tasks/tooling_spec.rb
|
|
741
|
+
integration: test/integration/rai_commands/controls/tooling.rb
|
|
742
|
+
status: approved_with_notes
|
|
743
|
+
notes: "Q8 partially fixed in Phase 3 (InSpec added). RSpec depth accepted. Q10 accepted."
|
|
744
|
+
answers:
|
|
745
|
+
Q1_behavior: pass
|
|
746
|
+
Q2_path_awareness: pass
|
|
747
|
+
Q3_help_text: pass
|
|
748
|
+
Q4_error_handling: pass
|
|
749
|
+
Q5_options: pass
|
|
750
|
+
Q6_output: concern
|
|
751
|
+
Q7_i18n: pass
|
|
752
|
+
Q8_tests: concern
|
|
753
|
+
Q9_man_page: pass
|
|
754
|
+
Q10_accessibility: fail
|
|
755
|
+
findings:
|
|
756
|
+
- severity: high
|
|
757
|
+
question: Q8
|
|
758
|
+
description: "RSpec spec only verifies command registration (20 lines). No functional tests. No InSpec tests."
|
|
759
|
+
resolution: "InSpec controls added in Phase 3. RSpec functional depth accepted as known gap."
|
|
760
|
+
status: accepted
|
|
761
|
+
- severity: high
|
|
762
|
+
question: Q10
|
|
763
|
+
description: "Rainbow for status colors. Terminal::Table with Unicode box-drawing. No --accessible mode."
|
|
764
|
+
resolution: "Check options[:accessible] before Rainbow. Use accessible table format."
|
|
765
|
+
status: accepted
|
|
766
|
+
|
|
767
|
+
validate:
|
|
768
|
+
file: lib/rosett_ai/thor/tasks/validate.rb
|
|
769
|
+
spec: spec/rosett_ai/thor/tasks/validate_spec.rb
|
|
770
|
+
integration: test/integration/rai_commands/controls/validate.rb
|
|
771
|
+
status: approved_with_notes
|
|
772
|
+
notes: "Q10 accepted — accessibility wiring deferred."
|
|
773
|
+
answers:
|
|
774
|
+
Q1_behavior: pass
|
|
775
|
+
Q2_path_awareness: pass
|
|
776
|
+
Q3_help_text: pass
|
|
777
|
+
Q4_error_handling: pass
|
|
778
|
+
Q5_options: pass
|
|
779
|
+
Q6_output: pass
|
|
780
|
+
Q7_i18n: pass
|
|
781
|
+
Q8_tests: pass
|
|
782
|
+
Q9_man_page: pass
|
|
783
|
+
Q10_accessibility: concern
|
|
784
|
+
findings:
|
|
785
|
+
- severity: medium
|
|
786
|
+
question: Q10
|
|
787
|
+
description: "Rainbow coloring (green=valid, red=invalid) without checking --accessible flag."
|
|
788
|
+
resolution: "Check options[:accessible] and use plain text labels instead of color."
|
|
789
|
+
status: accepted
|
|
790
|
+
|
|
791
|
+
version:
|
|
792
|
+
file: lib/rosett_ai/thor/cli.rb
|
|
793
|
+
spec: spec/rosett_ai/thor/cli_spec.rb
|
|
794
|
+
integration: test/integration/rai_commands/controls/version.rb
|
|
795
|
+
status: approved_with_notes
|
|
796
|
+
notes: "Q3/Q8/Q9 minor gaps accepted — version command is minimal by design."
|
|
797
|
+
answers:
|
|
798
|
+
Q1_behavior: pass
|
|
799
|
+
Q2_path_awareness: pass
|
|
800
|
+
Q3_help_text: concern
|
|
801
|
+
Q4_error_handling: pass
|
|
802
|
+
Q5_options: pass
|
|
803
|
+
Q6_output: pass
|
|
804
|
+
Q7_i18n: pass
|
|
805
|
+
Q8_tests: concern
|
|
806
|
+
Q9_man_page: concern
|
|
807
|
+
Q10_accessibility: pass
|
|
808
|
+
findings:
|
|
809
|
+
- severity: minor
|
|
810
|
+
question: Q3
|
|
811
|
+
description: "Short desc only. No long_desc. No examples."
|
|
812
|
+
resolution: "Add long_desc mentioning -v/--version aliases and BUILD_INFO fields."
|
|
813
|
+
status: accepted
|
|
814
|
+
- severity: minor
|
|
815
|
+
question: Q8
|
|
816
|
+
description: "No unit tests in cli_spec.rb. Only InSpec integration tests. No BUILD_INFO parsing tests."
|
|
817
|
+
resolution: "Add unit tests for version command and BUILD_INFO parsing."
|
|
818
|
+
status: accepted
|
|
819
|
+
- severity: minor
|
|
820
|
+
question: Q9
|
|
821
|
+
description: "Man page has one-line entry. Does not mention BUILD_INFO fields or -v/--version aliases."
|
|
822
|
+
resolution: "Expand man page entry with BUILD_INFO details and aliases."
|
|
823
|
+
status: accepted
|
|
824
|
+
|
|
825
|
+
workflow:
|
|
826
|
+
file: lib/rosett_ai/thor/tasks/workflow.rb
|
|
827
|
+
spec: spec/rosett_ai/thor/tasks/workflow_spec.rb
|
|
828
|
+
integration: test/integration/rai_commands/controls/workflow.rb
|
|
829
|
+
status: approved_with_notes
|
|
830
|
+
notes: "Q1/Q8/Q10 accepted — behavioral test depth and accessibility deferred."
|
|
831
|
+
answers:
|
|
832
|
+
Q1_behavior: concern
|
|
833
|
+
Q2_path_awareness: pass
|
|
834
|
+
Q3_help_text: pass
|
|
835
|
+
Q4_error_handling: pass
|
|
836
|
+
Q5_options: pass
|
|
837
|
+
Q6_output: pass
|
|
838
|
+
Q7_i18n: pass
|
|
839
|
+
Q8_tests: concern
|
|
840
|
+
Q9_man_page: pass
|
|
841
|
+
Q10_accessibility: fail
|
|
842
|
+
findings:
|
|
843
|
+
- severity: medium
|
|
844
|
+
question: Q1
|
|
845
|
+
description: "Specs only test command registration and list/empty case. No tests for validate/simulate/execute."
|
|
846
|
+
resolution: "Add behavioral tests for all 4 subcommands."
|
|
847
|
+
status: accepted
|
|
848
|
+
- severity: medium
|
|
849
|
+
question: Q8
|
|
850
|
+
description: "Only 1 context tested in RSpec. InSpec tests list/validate only."
|
|
851
|
+
resolution: "Add comprehensive behavioral RSpec tests."
|
|
852
|
+
status: accepted
|
|
853
|
+
- severity: high
|
|
854
|
+
question: Q10
|
|
855
|
+
description: "Rainbow colors without checking --accessible flag. Colorized status is color-only information."
|
|
856
|
+
resolution: "Check options[:accessible] before Rainbow."
|
|
857
|
+
status: accepted
|