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
data/doc/DESIGN_AUDIT.md
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Design Document Audit Report
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-03-15
|
|
4
|
+
**Scope**: All 36 design documents in `conf/design/`
|
|
5
|
+
**Method**: Schema validation + content analysis of every document
|
|
6
|
+
|
|
7
|
+
## Inventory
|
|
8
|
+
|
|
9
|
+
| # | Name | Domain | Version | Status | Constraints | Criteria |
|
|
10
|
+
|---|------|--------|---------|--------|-------------|----------|
|
|
11
|
+
| 1 | aaif_alignment | core | 0.1.0 | draft | 10 | 13 |
|
|
12
|
+
| 2 | accessibility | accessibility | 1.0.0 | approved | 13 | 7 |
|
|
13
|
+
| 3 | ai_authorship | core | 0.1.0 | draft | 10 | 12 |
|
|
14
|
+
| 4 | ai_provenance | security | 0.1.0 | draft | 10 | 12 |
|
|
15
|
+
| 5 | ai_tool_configuration | core | 0.1.0 | draft | 10 | 13 |
|
|
16
|
+
| 6 | architecture | core | 1.0.0 | approved | 6 | 8 |
|
|
17
|
+
| 7 | autocompletion | ui | 0.1.0 | draft | 6 | 8 |
|
|
18
|
+
| 8 | behaviour_composition | compiler | 0.1.0 | draft | 10 | 13 |
|
|
19
|
+
| 9 | ci_pipeline | ci | 1.0.0 | approved | 10 | 12 |
|
|
20
|
+
| 10 | claude_code_configuration | core | 0.1.0 | approved | 21 | 18 |
|
|
21
|
+
| 11 | compiler | compiler | 1.0.0 | approved | 10 | 9 |
|
|
22
|
+
| 12 | comply | security | 0.1.0 | draft | 7 | 7 |
|
|
23
|
+
| 13 | content_packs | licensing | 1.0.0 | approved | 9 | 8 |
|
|
24
|
+
| 14 | desktop_integration | ui | 0.1.0 | draft | 11 | 11 |
|
|
25
|
+
| 15 | distribution | ci | 0.2.0 | draft | 18 | 13 |
|
|
26
|
+
| 16 | documentation | documentation | 0.1.0 | approved | 9 | 10 |
|
|
27
|
+
| 17 | engine_architecture | core | 0.1.0 | draft | 11 | 12 |
|
|
28
|
+
| 18 | gui_plugins | ui | 0.1.0 | draft | 12 | 15 |
|
|
29
|
+
| 19 | i18n | i18n | 1.0.0 | approved | 10 | 8 |
|
|
30
|
+
| 20 | licensing_system | licensing | 1.0.0 | approved | 13 | 9 |
|
|
31
|
+
| 21 | lifecycle_management | core | 1.0.0 | approved | 9 | 7 |
|
|
32
|
+
| 22 | mcp_integration | core | 0.1.0 | draft | 12 | 13 |
|
|
33
|
+
| 23 | mcp_settings | core | 0.1.0 | draft | 7 | 7 |
|
|
34
|
+
| 24 | monitoring_observability | operations | 1.0.0 | draft | 9 | 13 |
|
|
35
|
+
| 25 | policy_management | security | 0.1.0 | draft | 10 | 12 |
|
|
36
|
+
| 26 | project_management | core | 0.1.0 | draft | 6 | 6 |
|
|
37
|
+
| 27 | release_management | release | 0.1.0 | approved | 11 | 10 |
|
|
38
|
+
| 28 | security | security | 1.1.0 | approved | 17 | 12 |
|
|
39
|
+
| 29 | smart_ui_feedback | ui | 0.1.0 | draft | 7 | 7 |
|
|
40
|
+
| 30 | styles | styles | 1.0.0 | approved | 11 | 8 |
|
|
41
|
+
| 31 | test_peer_review | testing | 0.1.0 | draft | 8 | 8 |
|
|
42
|
+
| 32 | testing | testing | 1.0.0 | approved | 11 | 9 |
|
|
43
|
+
| 33 | ui_framework | ui | 1.0.0 | approved | 8 | 8 |
|
|
44
|
+
| 34 | usage_optimization | operations | 1.0.0 | draft | 13 | 11 |
|
|
45
|
+
| 35 | version_management | ci | 1.0.0 | approved | 6 | 6 |
|
|
46
|
+
| 36 | workflow | core | 0.1.0 | draft | 8 | 7 |
|
|
47
|
+
|
|
48
|
+
**Totals**: 17 approved, 19 draft | 14 unique domains | 362 constraints | 360 criteria
|
|
49
|
+
|
|
50
|
+
## 1. Consistency
|
|
51
|
+
|
|
52
|
+
### Version Numbering
|
|
53
|
+
|
|
54
|
+
Convention: approved = 1.0.0+, draft = 0.x.0.
|
|
55
|
+
|
|
56
|
+
**Exception**: `claude_code_configuration` is **approved at 0.1.0** — breaks the pattern.
|
|
57
|
+
All other approved docs are 1.0.0 (or `security` at 1.1.0, `distribution` at 0.2.0 draft).
|
|
58
|
+
|
|
59
|
+
### Status Values
|
|
60
|
+
|
|
61
|
+
Two-state system: `approved` (17) and `draft` (19). No intermediate states.
|
|
62
|
+
Clean and consistent.
|
|
63
|
+
|
|
64
|
+
### Domain Taxonomy (14 domains)
|
|
65
|
+
|
|
66
|
+
| Domain | Count | Examples |
|
|
67
|
+
|--------|-------|---------|
|
|
68
|
+
| core | 11 | architecture, engine_architecture, mcp_integration |
|
|
69
|
+
| ui | 6 | ui_framework, desktop_integration, autocompletion |
|
|
70
|
+
| security | 4 | security, ai_provenance, policy_management, comply |
|
|
71
|
+
| ci | 3 | ci_pipeline, distribution, version_management |
|
|
72
|
+
| testing | 2 | testing, test_peer_review |
|
|
73
|
+
| compiler | 2 | compiler, behaviour_composition |
|
|
74
|
+
| licensing | 2 | licensing_system, content_packs |
|
|
75
|
+
| operations | 2 | monitoring_observability, usage_optimization |
|
|
76
|
+
| accessibility | 1 | accessibility |
|
|
77
|
+
| documentation | 1 | documentation |
|
|
78
|
+
| i18n | 1 | i18n |
|
|
79
|
+
| release | 1 | release_management |
|
|
80
|
+
| styles | 1 | styles |
|
|
81
|
+
|
|
82
|
+
Flat taxonomy — no hierarchy. `core` dominates (30% of docs).
|
|
83
|
+
|
|
84
|
+
### Intent Style
|
|
85
|
+
|
|
86
|
+
Mixed: 22 imperative ("Define...", "Establish..."), 14 declarative ("Developers need...",
|
|
87
|
+
"Software distributed..."). Older approved docs tend imperative; newer drafts mix styles.
|
|
88
|
+
|
|
89
|
+
### Constraint and Criteria Counts
|
|
90
|
+
|
|
91
|
+
- **Constraints**: 6-21 per doc (median 10). Variation correlates with complexity.
|
|
92
|
+
- **Criteria**: 6-18 per doc (median 9). Same pattern.
|
|
93
|
+
|
|
94
|
+
## 2. Contradictions
|
|
95
|
+
|
|
96
|
+
**None found.** Key points of alignment:
|
|
97
|
+
|
|
98
|
+
- **Technology stack**: Ruby, Thor, YAML.safe_load, RSpec, Mutant — consistent everywhere
|
|
99
|
+
- **MCP overlap resolved**: `mcp_integration` and `mcp_settings` cross-reference each other
|
|
100
|
+
via `depends_on`. Settings is narrower (trust model for server config).
|
|
101
|
+
- **Security hierarchy**: `policy_management` explicitly defers to `security` —
|
|
102
|
+
"Policies must never weaken security constraints from security.yml"
|
|
103
|
+
- **Authorship vs Provenance**: Clean separation documented —
|
|
104
|
+
provenance = machine data, authorship = human-facing policies
|
|
105
|
+
- **Dependency graph**: DAG with no cycles. `security` is the root.
|
|
106
|
+
|
|
107
|
+
## 3. Tensions
|
|
108
|
+
|
|
109
|
+
### Engine-Agnostic vs Claude-Specific
|
|
110
|
+
|
|
111
|
+
Two overlapping configuration systems:
|
|
112
|
+
|
|
113
|
+
| Document | Status | Scope |
|
|
114
|
+
|----------|--------|-------|
|
|
115
|
+
| `claude_code_configuration` | approved | Claude Code settings (4 scopes) |
|
|
116
|
+
| `ai_tool_configuration` | draft | Engine-agnostic AI tool config |
|
|
117
|
+
|
|
118
|
+
**Tension**: `claude_code_configuration` is Claude-specific but approved.
|
|
119
|
+
`ai_tool_configuration` is engine-agnostic but still draft. Migration path unclear.
|
|
120
|
+
|
|
121
|
+
**Recommendation**: Promote `ai_tool_configuration` to approved and document
|
|
122
|
+
`claude_code_configuration` as the Claude engine's reference implementation,
|
|
123
|
+
or explicitly deprecate it.
|
|
124
|
+
|
|
125
|
+
### TUI-First vs Desktop Complexity
|
|
126
|
+
|
|
127
|
+
Core principle: "TUI-first, CLI fully functional without any GUI package installed."
|
|
128
|
+
|
|
129
|
+
But `desktop_integration` and `gui_plugins` introduce D-Bus, StatusNotifierItem,
|
|
130
|
+
and compositor-specific focus monitors — significant complexity for P3 features.
|
|
131
|
+
|
|
132
|
+
**Risk**: Desktop features may absorb disproportionate development bandwidth.
|
|
133
|
+
Not a contradiction (D-Bus can run headless), but a scope management concern.
|
|
134
|
+
|
|
135
|
+
### Offline-First vs API Features
|
|
136
|
+
|
|
137
|
+
Consistent constraint: "Must work offline" (licensing, provenance, MCP admin, comply).
|
|
138
|
+
API features are opt-in (`--api` flag on adopt, MCP executor). Tension is managed.
|
|
139
|
+
|
|
140
|
+
## 4. Completeness
|
|
141
|
+
|
|
142
|
+
### Constraint Quality
|
|
143
|
+
|
|
144
|
+
**Strong (approved docs)**: Specific, actionable, testable.
|
|
145
|
+
|
|
146
|
+
- `security`: "Never use YAML.load — always YAML.safe_load with explicit permitted_classes"
|
|
147
|
+
- `testing`: "Mutation score must meet threshold before code can merge"
|
|
148
|
+
- `compiler`: "Compilation of 100 behaviour files completes in under 5 seconds"
|
|
149
|
+
|
|
150
|
+
**Weaker (some drafts)**: Broad, aspirational.
|
|
151
|
+
|
|
152
|
+
- `project_management`: "All project operations must work within the .rosett-ai/ directory scope"
|
|
153
|
+
- `workflow`: "Workflows must not access network unless explicitly declared"
|
|
154
|
+
|
|
155
|
+
### Acceptance Criteria Testability
|
|
156
|
+
|
|
157
|
+
Most criteria are testable. Draft docs have ~10-20% process/governance criteria
|
|
158
|
+
that are harder to verify programmatically ("Project configuration changes must
|
|
159
|
+
be logged for audit trail" — no format specified).
|
|
160
|
+
|
|
161
|
+
### Missing Cross-Cutting Concerns
|
|
162
|
+
|
|
163
|
+
| Missing Topic | Suggested Priority | Notes |
|
|
164
|
+
|---------------|-------------------|-------|
|
|
165
|
+
| Backward compatibility | P2 | Deprecation policy, migration paths, output versioning |
|
|
166
|
+
| Error handling patterns | P1 | Structured errors, exit codes, localized messages |
|
|
167
|
+
| Threat model | P1 | Adversary scenarios, supply chain risk for content packs |
|
|
168
|
+
|
|
169
|
+
### Gaps Between Documents
|
|
170
|
+
|
|
171
|
+
- **GUI testing strategy**: `ui_framework` mentions shared_examples but no
|
|
172
|
+
integration/accessibility test design
|
|
173
|
+
- **Package signing key management**: `distribution` covers GPG-signed packages
|
|
174
|
+
but no doc on key rotation or signing ceremonies
|
|
175
|
+
- **Multi-user environments**: No doc on namespace collision or permission
|
|
176
|
+
conflicts when multiple users share a system
|
|
177
|
+
|
|
178
|
+
## 5. Harmony
|
|
179
|
+
|
|
180
|
+
### Coherence Assessment
|
|
181
|
+
|
|
182
|
+
**Yes.** The 36 docs follow a clear layered architecture:
|
|
183
|
+
|
|
184
|
+
| Layer | Priority | Docs | Purpose |
|
|
185
|
+
|-------|----------|------|---------|
|
|
186
|
+
| Foundation | P1 | 6 | Security, testing, CI, styles, versions |
|
|
187
|
+
| Core Product | P2 | 11 | Engines, compiler, AI integration, compliance |
|
|
188
|
+
| UX Polish | P3 | 8 | Accessibility, i18n, desktop, autocompletion |
|
|
189
|
+
| Monetization | P4 | 2 | Licensing, content packs |
|
|
190
|
+
| Dev Tooling | P5 | 2 | Release management, documentation |
|
|
191
|
+
| Optimization | P6 | 2 | Monitoring, performance |
|
|
192
|
+
|
|
193
|
+
### Dependency Graph
|
|
194
|
+
|
|
195
|
+
- `security` is the root — 16 docs depend on it
|
|
196
|
+
- `architecture` is the structural backbone — 12 docs depend on it
|
|
197
|
+
- `engine_architecture` enables the plugin ecosystem — 9 docs depend on it
|
|
198
|
+
- No cycles detected. Clean DAG.
|
|
199
|
+
|
|
200
|
+
### Implicit Assumptions
|
|
201
|
+
|
|
202
|
+
These are assumed but not always stated explicitly:
|
|
203
|
+
|
|
204
|
+
1. **Linux-only** — stated in `architecture`, assumed everywhere
|
|
205
|
+
2. **Debian-first** — .deb packaging, RPM as Phase 2
|
|
206
|
+
3. **Single-user** — XDG paths assume one user per HOME
|
|
207
|
+
4. **Ruby 3.3.10** — scattered references, not centrally declared
|
|
208
|
+
5. **Zeitwerk lazy loading** — mentioned in `usage_optimization`, assumed in code
|
|
209
|
+
|
|
210
|
+
## Summary
|
|
211
|
+
|
|
212
|
+
### Strengths
|
|
213
|
+
|
|
214
|
+
1. **No contradictions** — technology choices align, dependencies are clean
|
|
215
|
+
2. **Strong approved docs** — P1 foundation is detailed, specific, testable
|
|
216
|
+
3. **Coherent layering** — P1-P6 priority structure is logical
|
|
217
|
+
4. **Sound dependency graph** — DAG, no cycles, clear hierarchy
|
|
218
|
+
|
|
219
|
+
### Issues
|
|
220
|
+
|
|
221
|
+
| # | Issue | Severity | Action |
|
|
222
|
+
|---|-------|----------|--------|
|
|
223
|
+
| 1 | `claude_code_configuration` approved at 0.1.0 | Low | Bump to 1.0.0 or document exception |
|
|
224
|
+
| 2 | Engine-agnostic vs Claude-specific tension | Medium | Clarify relationship |
|
|
225
|
+
| 3 | 19 draft docs vs 17 approved (backlog) | Low | Expected — drafts are future work |
|
|
226
|
+
| 4 | Intent style inconsistency | Low | Standardize to imperative voice |
|
|
227
|
+
| 5 | Missing cross-cutting docs | Medium | Consider error handling, threat model |
|
|
228
|
+
| 6 | Implicit assumptions not documented | Low | Add to architecture.yml |
|
|
229
|
+
|
|
230
|
+
### Overall Verdict
|
|
231
|
+
|
|
232
|
+
**Production-ready design corpus.** The 36 documents form a coherent, well-structured
|
|
233
|
+
architecture with no contradictions and a sound dependency graph. The main risks are
|
|
234
|
+
scope management (19 draft docs) and one unresolved config tension. Recommended
|
|
235
|
+
clarifications are minor — no structural changes needed.
|