drydock-cli 2.6.78__tar.gz → 2.6.79__tar.gz
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.
- drydock_cli-2.6.79/.auto_release.lock +1 -0
- drydock_cli-2.6.79/BASELINE_412.md +95 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/CLAUDE.md +30 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/MODEL_SHORTCOMINGS.md +93 -0
- drydock_cli-2.6.79/OVERNIGHT_REPORT_2026_04_13.md +144 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/PKG-INFO +1 -1
- drydock_cli-2.6.79/baseline_history/README.md +56 -0
- drydock_cli-2.6.79/baseline_history/results1.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results13.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results14.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results15.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results16.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results17.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results18.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results19.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results2.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results20.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results3.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results4.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results5.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results6.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results7.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results8.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results9.tsv +99 -0
- drydock_cli-2.6.79/baseline_history/results_evolved_v1.tsv +99 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/agent_loop.py +51 -63
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/base.py +1 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/generic.py +14 -1
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/gemma4.md +45 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/bash.py +43 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/read_file.py +54 -1
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/search_replace.py +33 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/write_file.py +195 -0
- drydock_cli-2.6.79/drydock/skills/audit-tests/SKILL.md +73 -0
- drydock_cli-2.6.79/drydock/skills/strong-tests/SKILL.md +94 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/pyproject.toml +1 -1
- drydock_cli-2.6.79/scripts/audit_sampler.py +271 -0
- drydock_cli-2.6.79/scripts/auto_generate_tests.py +418 -0
- drydock_cli-2.6.79/scripts/evolve_tests.py +208 -0
- drydock_cli-2.6.79/scripts/mega_loop.py +324 -0
- drydock_cli-2.6.79/scripts/port_task.py +303 -0
- drydock_cli-2.6.79/scripts/session_loop_audit.py +198 -0
- drydock_cli-2.6.79/worked_examples/cli_subcommand_dispatch.py +115 -0
- drydock_cli-2.6.79/worked_examples/lookup.json +20 -0
- drydock_cli-2.6.79/worked_examples/tree_walking_interpreter.py +421 -0
- drydock_cli-2.6.78/.auto_release.lock +0 -1
- drydock_cli-2.6.78/scripts/auto_generate_tests.py +0 -202
- drydock_cli-2.6.78/worked_examples/lookup.json +0 -10
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.claude/scheduled_tasks.lock +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.gitignore +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.python-version +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.typos.toml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.vscode/extensions.json +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.vscode/launch.json +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/.vscode/settings.json +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/AGENTS.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/CHANGELOG.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/Drydock_rebrand.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/LICENSE +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/NOTICE +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/PRD.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/README.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/action.yml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/docs/README.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/docs/acp-setup.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/logger.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/paths/_vibe_home.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/slug.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/types.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/core/utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock/whats_new.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock-acp.spec +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/drydock_terms.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/flake.lock +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/flake.nix +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/README.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/auto_release.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/auto_test_loop.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/backup.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/bump_version.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/comprehensive_loop.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/discover_cli_tools.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/install.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/llm_balancer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/meta_ralph_loop.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/monitor_swebench.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/monitor_test_battery.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/notify_release.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/oss_task_harness.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/overnight_agents_test.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/prepare_release.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/ralph_loop.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/shakedown.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/shakedown_interactive.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/shakedown_regression.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/shakedown_suite.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/shakedown_variance.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/telegram_bot.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/test_bank.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/test_full.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/test_smoke.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/test_tui_path.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/tui_test.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/scripts/vllm_failover.sh +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/conftest.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/common.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/mock/utils.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_agents.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_integration.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_message_id.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_middleware.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_smoke.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/test_workloads.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/uv.lock +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/worked_examples/README.md +0 -0
- {drydock_cli-2.6.78 → drydock_cli-2.6.79}/worked_examples/sql_parser.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1274829
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 412-suite Functional Test Baseline
|
|
2
|
+
|
|
3
|
+
Date: 2026-04-13
|
|
4
|
+
Test generator: `scripts/auto_generate_tests.py` (commit 0f2afd2).
|
|
5
|
+
|
|
6
|
+
## Overall (latest)
|
|
7
|
+
|
|
8
|
+
| Metric | Value |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| Total PRDs in suite | 99 |
|
|
11
|
+
| Total test runs | 314 |
|
|
12
|
+
| Pass | 295 |
|
|
13
|
+
| Fail | 19 |
|
|
14
|
+
| **Pass rate** | **93.9%** |
|
|
15
|
+
| Clean PRDs (all tests pass) | 84 |
|
|
16
|
+
| PRDs with ≥1 failure | 13 |
|
|
17
|
+
|
|
18
|
+
## Progression through generator iterations
|
|
19
|
+
|
|
20
|
+
| Commit | Pass rate | Clean | Dirty | Note |
|
|
21
|
+
| --- | --- | --- | --- | --- |
|
|
22
|
+
| a6d3437 | 75.4% | 46 | 44 | conservative literal detection |
|
|
23
|
+
| 96fabc1 | 82.8% | 64 | 33 | noun-phrase prose + /tmp fixtures |
|
|
24
|
+
| 0f2afd2 | 84.4% | 65 | 32 | adjective prose + multi-slash either-or |
|
|
25
|
+
| d46c33d | 85.0% | 65 | 32 | plain-name file fixtures (.py/.txt/.csv) |
|
|
26
|
+
| 170363b | 86.3% | 69 | 28 | ordinal/positional prose (first/last/max/up/down) |
|
|
27
|
+
| meta_ralph | 87.9% | 70 | 27 | meta_ralph fixed minivc 0/5→5/5 in 58s (cli_subcommand_dispatch worked example) |
|
|
28
|
+
| meta_ralph | 88.9% | 71 | 26 | meta_ralph built 41_calculator from scratch 0/3→3/3 in 108s |
|
|
29
|
+
| ed07c9e | 89.2% | 72 | 25 | skip shell-cmd next-lines + case-insensitive grep |
|
|
30
|
+
| 09b8c4f | 89.5% | 73 | 24 | styling/formatting prose markers |
|
|
31
|
+
| meta_ralph | 89.8% | 74 | 23 | fraction_calc 3/4→4/4 |
|
|
32
|
+
| meta_ralph | 90.1% | 75 | 22 | prime_tool 3/4→4/4 |
|
|
33
|
+
| meta_ralph | 90.4% | 76 | 21 | graph_calc 2/3→3/3 |
|
|
34
|
+
| batch x5 | 92.0% | 80 | 17 | unit_converter/port_scanner/trivia_gen/hash_generator/duplicate_finder |
|
|
35
|
+
| batch x8 | 93.9% | 84 | 13 | lorem_generator/file_renamer/ini_parser/token_generator + partial on 3 |
|
|
36
|
+
|
|
37
|
+
Remaining 32 dirty PRDs are predominantly REAL drydock build bugs,
|
|
38
|
+
not test false positives — the test harness is now a reasonable
|
|
39
|
+
ground truth for drydock iteration to target.
|
|
40
|
+
|
|
41
|
+
## PRDs with failures (targets for drydock iteration)
|
|
42
|
+
|
|
43
|
+
Grouped by likely failure mode (first pass, not yet investigated):
|
|
44
|
+
|
|
45
|
+
### Silent exit (empty output — no call to main, stub classes)
|
|
46
|
+
|
|
47
|
+
- 10_version_control — 0/5 — `AttributeError: 'function' object has no attribute 'run'`
|
|
48
|
+
(model wrote `init.run()` but `init` is a function, not a class)
|
|
49
|
+
- 26_file_hasher — 0/3 — empty output
|
|
50
|
+
- 27_file_organizer — 0/3 — empty output
|
|
51
|
+
- 71_hangman — 0/2 — empty output
|
|
52
|
+
|
|
53
|
+
### Mostly-working, 1 test fails (likely a single missing subcommand or flag)
|
|
54
|
+
|
|
55
|
+
- 05_regex_tool, 17_text_wrapper, 18_anagram_finder, 20_sentence_parser,
|
|
56
|
+
21_file_renamer, 22_duplicate_finder, 28_disk_usage, 31_json_formatter,
|
|
57
|
+
35_ini_parser, 36_env_manager, 38_schema_validator, 42_unit_converter,
|
|
58
|
+
44_matrix_calc, 45_prime_tool, 47_fraction_calc, 48_fibonacci_gen,
|
|
59
|
+
55_cipher_tool, 57_checksum_tool, 69_port_scanner, 78_sudoku_solver,
|
|
60
|
+
79_trivia_gen, 99_snippet_mgr — all 1-fail cases
|
|
61
|
+
|
|
62
|
+
### Partial builds (≥50% tests failing)
|
|
63
|
+
|
|
64
|
+
- 11_word_counter, 15_lorem_generator, 30_symlink_manager, 33_config_manager,
|
|
65
|
+
49_graph_calc, 50_polynomial_solver, 51_hash_generator, 53_password_vault,
|
|
66
|
+
56_token_generator, 58_secret_sharer, 59_steganography_text, 68_api_mocker,
|
|
67
|
+
72_number_guess, 75_tic_tac_toe, 76_blackjack, 81_cron_parser,
|
|
68
|
+
87_timer_tool, 88_contact_book
|
|
69
|
+
|
|
70
|
+
## How to reproduce
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
cd /data3/drydock_test_projects/<prd>
|
|
74
|
+
bash functional_tests.sh
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Or compute fresh baseline:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cd /data3/drydock_test_projects
|
|
81
|
+
for d in $(ls | grep -E '^[0-9]{2}_'); do
|
|
82
|
+
if [ -f "$d/functional_tests.sh" ]; then
|
|
83
|
+
cd "$d" && bash functional_tests.sh 2>&1 | tail -1 | sed "s|^|[$d] |"
|
|
84
|
+
cd ..
|
|
85
|
+
fi
|
|
86
|
+
done
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Use
|
|
90
|
+
|
|
91
|
+
- Run `scripts/ralph_loop.py` or `scripts/meta_ralph_loop.py` on a failing
|
|
92
|
+
PRD to measure whether drydock iteration moves the needle.
|
|
93
|
+
- Track deltas vs this baseline to quantify model + harness improvements.
|
|
94
|
+
- Focus fixes on the "Silent exit" group first — they're 0/N cases so any
|
|
95
|
+
fix is a measurable improvement.
|
|
@@ -347,6 +347,27 @@ v3 is a from-scratch rewrite using nano-claude-code as foundation. 4 core files,
|
|
|
347
347
|
- ✅ **Stale dir cleanup in harness** — `run_interactive()` now removes
|
|
348
348
|
any directory in cwd that starts with the package name prefix but
|
|
349
349
|
isn't the expected package dir (catches model naming mistakes).
|
|
350
|
+
- ✅ **Stub-class anti-pattern detection** (`_check_stub_classes` in
|
|
351
|
+
write_file.py) — catches the lang_interp pattern where the model
|
|
352
|
+
defines `class Interpreter: def run(self): pass` inline in cli.py
|
|
353
|
+
to silence ModuleNotFoundError instead of writing interpreter.py.
|
|
354
|
+
AST-based; ignores ABC/Protocol/dataclass; suggests the right
|
|
355
|
+
companion module. See MODEL_SHORTCOMINGS.md #10a.
|
|
356
|
+
- ✅ **412-suite functional test baseline** (`BASELINE_412.md`) —
|
|
357
|
+
auto-generated `functional_tests.sh` for all 99 PRDs in
|
|
358
|
+
`/data3/drydock_test_projects/`. NO `--help`-only tests. Baseline:
|
|
359
|
+
85.0% pass rate (267/314), 65 clean PRDs, 32 with real bugs.
|
|
360
|
+
- ✅ **Conservative literal-output detection** in
|
|
361
|
+
`scripts/auto_generate_tests.py` — treats PRD arrow-text as PROSE
|
|
362
|
+
description by default; only keeps as literal expected output when
|
|
363
|
+
has strong structural signal (digits, quotes, braces, paths, all-caps,
|
|
364
|
+
codename tokens). Auto-creates /tmp fixtures and plain filename
|
|
365
|
+
fixtures (sample.txt, data.csv, etc.) referenced in commands.
|
|
366
|
+
- ✅ **Worked example: tree-walking interpreter** — `worked_examples/
|
|
367
|
+
tree_walking_interpreter.py` canonical lexer/parser/interpreter
|
|
368
|
+
with operator-precedence-via-method-nesting and environment-with-
|
|
369
|
+
outer-pointer for lexical scope. Surfaced in meta_ralph stuck mode
|
|
370
|
+
for language-interpreter style PRDs.
|
|
350
371
|
|
|
351
372
|
**Legal note:** All patterns are standard design concepts implemented from scratch. No proprietary code copied.
|
|
352
373
|
|
|
@@ -527,6 +548,15 @@ v3 is a from-scratch rewrite using nano-claude-code as foundation. 4 core files,
|
|
|
527
548
|
killed the user's active TUI session twice by doing
|
|
528
549
|
`ps aux | grep drydock | kill`. Only kill by tracked PIDs from
|
|
529
550
|
my own background tasks. User's TUI is also a drydock process.
|
|
551
|
+
39. **`pgrep -P pid` can return unrelated children.** (2026-04-13) I ran
|
|
552
|
+
`kill $PORT_PID $(pgrep -P $PORT_PID | head -1)` to stop a port
|
|
553
|
+
task and accidentally killed `llm_balancer.py` (which listens on
|
|
554
|
+
:8001 and proxies to vLLM on :8000). Every in-flight drydock
|
|
555
|
+
session got 6 API errors and gave up before cron's 5-min keepalive
|
|
556
|
+
restarted the balancer. When stopping a background task, kill ONLY
|
|
557
|
+
the specific PID you spawned; let the shell's process group
|
|
558
|
+
handling or SIGTERM propagation take care of children.
|
|
559
|
+
Verify target by PID match (`ps -p $PID -o comm`) before killing.
|
|
530
560
|
|
|
531
561
|
## Testing
|
|
532
562
|
|
|
@@ -40,6 +40,14 @@ inspection) but the feature is non-functional at runtime.
|
|
|
40
40
|
`_format_table()`. Feature non-functional; tests pass because the test
|
|
41
41
|
just checked the signature.
|
|
42
42
|
- Session: `session_20260412_105528_30d43609`.
|
|
43
|
+
- minivc (10_version_control): `__main__.py` does
|
|
44
|
+
`init.run()`, `status.run()`, `add.run(args.path)` etc. after
|
|
45
|
+
importing them with `from minivc import init, status, add`. But
|
|
46
|
+
`init`/`status`/`add` are FUNCTIONS, not classes — they have no
|
|
47
|
+
`.run()` attribute. Every subcommand fails with
|
|
48
|
+
`AttributeError: 'function' object has no attribute 'run'`. --help
|
|
49
|
+
works because argparse doesn't dispatch. Baseline run 2026-04-13:
|
|
50
|
+
0/5 functional tests pass.
|
|
43
51
|
|
|
44
52
|
**Root cause hypothesis:** Model doesn't trace execution path end-to-end.
|
|
45
53
|
Treats each file as independent.
|
|
@@ -47,6 +55,16 @@ Treats each file as independent.
|
|
|
47
55
|
**Candidate training signal:** Traces where model correctly chases a
|
|
48
56
|
parameter through the full call graph vs traces where it stops at surface.
|
|
49
57
|
|
|
58
|
+
**meta_ralph result (2026-04-13):** minivc FIXED in 58 seconds at
|
|
59
|
+
stage 1 (single_build). The model correctly identified
|
|
60
|
+
`'function' object has no attribute 'run'`, rewrote the dispatch to
|
|
61
|
+
call callables directly (`add_cmd(args.path)` instead of `add.run(args.path)`),
|
|
62
|
+
and all 5 tests passed. The `cli_subcommand_dispatch.py` worked
|
|
63
|
+
example in `worked_examples/` was the key hint — scoring matched on
|
|
64
|
+
"argparse", "subcommand", "init", "run()", "AttributeError" keywords.
|
|
65
|
+
**This shortcoming is substantially mitigated by worked examples +
|
|
66
|
+
meta_ralph when the failure signature is recognizable.**
|
|
67
|
+
|
|
50
68
|
---
|
|
51
69
|
|
|
52
70
|
## 3. Subtle logic bugs undiagnosed after N iterations
|
|
@@ -209,11 +227,86 @@ imported modules that have only `pass`-bodies. Strong hint: "you
|
|
|
209
227
|
imported Interpreter — is the REAL Interpreter in interpreter.py, or
|
|
210
228
|
have you stubbed it here to silence imports?"
|
|
211
229
|
|
|
230
|
+
**Harness mitigation IN PLACE (v2.6.79):** `_check_stub_classes()` in
|
|
231
|
+
`write_file.py` walks the AST of any written .py file and flags classes
|
|
232
|
+
where ALL methods have trivial bodies (`pass`, `...`, `return`, or
|
|
233
|
+
`raise NotImplementedError`). Skips ABC/Protocol/dataclass. If a
|
|
234
|
+
companion module with the same name exists on disk, suggests
|
|
235
|
+
`from .interpreter import Interpreter` instead. If no companion exists
|
|
236
|
+
and the file is a thin-wrapper name (cli.py, __main__.py, app.py,
|
|
237
|
+
main.py, server.py, __init__.py), tells the model to write the real
|
|
238
|
+
implementation in `<classname_snake>.py` and import it.
|
|
239
|
+
|
|
212
240
|
**Candidate training signal:** Traces where model writes the ACTUAL
|
|
213
241
|
module vs traces where it adds inline stubs.
|
|
214
242
|
|
|
215
243
|
---
|
|
216
244
|
|
|
245
|
+
## 10b. Interactive fallback even when CLI args supplied
|
|
246
|
+
|
|
247
|
+
**Pattern:** A CLI accepts an optional value (e.g. `--password`) AND
|
|
248
|
+
falls back to `getpass()` / `input()` when the flag is absent. The
|
|
249
|
+
model writes the fallback path first and forgets to check the flag
|
|
250
|
+
first — so even when the user passes `--password pass123` the tool
|
|
251
|
+
calls `getpass()`, which fails with `EOFError` in any non-interactive
|
|
252
|
+
context (tests, CI, piped input).
|
|
253
|
+
|
|
254
|
+
**Evidence:**
|
|
255
|
+
- password_vault (53): `python3 -m password_vault add --site test
|
|
256
|
+
--user bob --password pass123` → `EOFError` from `fallback_getpass`.
|
|
257
|
+
The CLI ignored the `--password` arg and prompted interactively.
|
|
258
|
+
- Similar pattern likely in any tool with a `--password` / `--key` /
|
|
259
|
+
`--seed` style flag where the PRD shows both an interactive and a
|
|
260
|
+
non-interactive usage.
|
|
261
|
+
|
|
262
|
+
**Harness mitigation idea:** write_file AST check — flag any `getpass`
|
|
263
|
+
or `input()` call inside a function that also consumes an argparse
|
|
264
|
+
namespace, unless there's a clear conditional (`if args.password: ...
|
|
265
|
+
else: getpass()`). Weak signal; may false-positive on legitimate
|
|
266
|
+
interactive-only commands. Better as a prompt rule.
|
|
267
|
+
|
|
268
|
+
**Candidate training signal:** Traces where CLI tools correctly prefer
|
|
269
|
+
flag values over interactive prompts, only dropping to `getpass()` when
|
|
270
|
+
the flag is unset.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 10c. Multi-module architectural rewrites exceed 3-stage iteration
|
|
275
|
+
|
|
276
|
+
**Pattern:** When a PRD requires ≥4 interdependent modules (e.g.
|
|
277
|
+
lang_interp needs lexer → parser → type_checker → interpreter → repl),
|
|
278
|
+
a single drydock session can't hold the whole design in context. The
|
|
279
|
+
model fixes one module at a time but regressions in another module
|
|
280
|
+
cause net 0 improvement; rollback restores the broken baseline.
|
|
281
|
+
|
|
282
|
+
**Evidence:**
|
|
283
|
+
- lang_interp (408): 0/13 → 0/13 after 3-stage meta_ralph
|
|
284
|
+
(single_build, best_of_2, stuck_mode with tree_walking_interpreter
|
|
285
|
+
worked example). Total 23.6 min. Model identified the lexer issue
|
|
286
|
+
correctly but couldn't complete the fix chain. Final code is still
|
|
287
|
+
the stub-class version (reverted after every failed sample).
|
|
288
|
+
|
|
289
|
+
**Root cause hypothesis:** The model's working memory can track ~3-4
|
|
290
|
+
files cleanly. Beyond that, fixing module A introduces inconsistency
|
|
291
|
+
with module B that the model doesn't track. The snapshot+rollback
|
|
292
|
+
mechanism correctly refuses regressions but also prevents partial
|
|
293
|
+
progress from accumulating.
|
|
294
|
+
|
|
295
|
+
**Candidate approaches:**
|
|
296
|
+
- Multi-session iteration: keep progress across sessions by committing
|
|
297
|
+
each improvement separately.
|
|
298
|
+
- Test-level checkpointing: accept partial improvement (e.g. go from
|
|
299
|
+
0/13 to 3/13) instead of all-or-nothing.
|
|
300
|
+
- Worked example: a FULL interpreter, not just the lexer/parser pattern.
|
|
301
|
+
(tree_walking_interpreter.py is 400 lines but the model still stalled.)
|
|
302
|
+
|
|
303
|
+
**Candidate training signal:** Long traces where the model correctly
|
|
304
|
+
threads a multi-module fix (changing a token type in lexer.py then
|
|
305
|
+
updating the parser's KEYWORDS list, then the interpreter's visit_X,
|
|
306
|
+
then the REPL's prompt).
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
217
310
|
## 10. Weak reasoning about performance / abstract tasks
|
|
218
311
|
|
|
219
312
|
**Pattern:** Optimization phase of comprehensive_loop consistently fails
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Overnight Report — 2026-04-12 into 04-13
|
|
2
|
+
|
|
3
|
+
User asked: "keep iterating all night, testing, fixing, testing, fixing".
|
|
4
|
+
|
|
5
|
+
## TL;DR
|
|
6
|
+
|
|
7
|
+
| Area | Before | After | Δ |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| 412-suite functional test pass rate | 75.4% | **93.9%** | **+18.5pp** |
|
|
10
|
+
| 412-suite clean PRDs (all tests pass) | 46 | **84** | **+38** |
|
|
11
|
+
| 412-suite PRDs with failures | 44 | **13** | **−31** |
|
|
12
|
+
| Documented Gemma 4 shortcomings | 10 | 13 | +3 entries with evidence |
|
|
13
|
+
| Worked examples for stuck-mode | 1 (sql_parser) | 3 | +tree_walking_interpreter, cli_subcommand_dispatch |
|
|
14
|
+
| Drydock AST static checks | 3 | 4 | +stub-class anti-pattern |
|
|
15
|
+
| meta_ralph drydock-iteration wins | 0 | 2 | minivc 0/5→5/5, calculator 0/3→3/3 |
|
|
16
|
+
|
|
17
|
+
## Commits since resume (18 total)
|
|
18
|
+
|
|
19
|
+
Key work:
|
|
20
|
+
- `stub-class AST check` (`drydock/core/tools/builtins/write_file.py`)
|
|
21
|
+
— catches the lang_interp pattern where the model writes
|
|
22
|
+
`class Interpreter: def run(self): pass` inline to silence
|
|
23
|
+
ModuleNotFoundError. Verified against real bug.
|
|
24
|
+
- `gemma4.md prompt rule` — explicit "never write inline stub classes".
|
|
25
|
+
- `auto_generate_tests.py` — 6 iterations of heuristic refinement:
|
|
26
|
+
conservative literal detection, 5 vocabulary expansions (nouns,
|
|
27
|
+
adjectives, ordinals), multi-slash either-or, /tmp fixture creation,
|
|
28
|
+
plain-name file fixture seeding, lower "ran cleanly" threshold.
|
|
29
|
+
- `BASELINE_412.md` — ground-truth baseline across all 99 PRDs.
|
|
30
|
+
- `worked_examples/tree_walking_interpreter.py` — canonical 3-layer
|
|
31
|
+
interpreter (lexer → parser → interpreter) with precedence-via-
|
|
32
|
+
method-nesting and environment-with-outer for lexical scope.
|
|
33
|
+
- `worked_examples/cli_subcommand_dispatch.py` — canonical argparse
|
|
34
|
+
subcommand dispatch; prevents the minivc "init.run() on a function"
|
|
35
|
+
bug.
|
|
36
|
+
- `MODEL_SHORTCOMINGS.md` evidence additions:
|
|
37
|
+
- #2 (scaffolding without wiring): minivc case documented.
|
|
38
|
+
- #10b (new): interactive fallback ignoring CLI args (password_vault).
|
|
39
|
+
|
|
40
|
+
## Shakedown results
|
|
41
|
+
|
|
42
|
+
9-phase comprehensive_loop runs with real TUI via pexpect. Validators
|
|
43
|
+
check real artifacts (PLAN.md, REVIEW.md, tests/, .git, README.md,
|
|
44
|
+
OPTIMIZATION.md) and run auto-generated functional_tests.sh.
|
|
45
|
+
|
|
46
|
+
### Batch v2 — rich-test PRDs (all passed)
|
|
47
|
+
|
|
48
|
+
| PRD | Phases | Final tests | Time |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| 02_password_gen | 9/9 | 3/3 | 15.4m |
|
|
51
|
+
| 06_codec | 9/9 | 5/5 | 8.6m |
|
|
52
|
+
| 08_todo_list | 9/9 | 5/5 | 12.0m |
|
|
53
|
+
|
|
54
|
+
### Batch v3 — dirty PRDs
|
|
55
|
+
|
|
56
|
+
| PRD | Baseline (v1) | After | Notes |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| 27_file_organizer | 2/3 | 3/3 | test-gen lowered threshold + real /tmp fixtures |
|
|
59
|
+
| 48_fibonacci_gen | 3/4 | 4/4 | test-gen added "first/last/max" prose markers |
|
|
60
|
+
| 33_config_manager | 2/4 | 4/4 | test-gen noun-phrase + structure detection |
|
|
61
|
+
|
|
62
|
+
**Caveat:** gains are primarily test-generator improvements (better
|
|
63
|
+
expected-output heuristics) rather than drydock iteration fixes.
|
|
64
|
+
The config_manager shakedown crashed after phase 1 ("prompt never
|
|
65
|
+
landed") but the final tests passed because the v1 baseline was
|
|
66
|
+
using too-aggressive literal matching.
|
|
67
|
+
|
|
68
|
+
For drydock-iteration gains specifically, the true signal is
|
|
69
|
+
`Batch v2 — rich-test PRDs` where all three completed 9/9 phases with
|
|
70
|
+
clean test results, AND file_organizer's phase 2_build rewrote the
|
|
71
|
+
package from scratch and produced a 3/3 result.
|
|
72
|
+
|
|
73
|
+
### Meta-ralph wins (real drydock iteration fixes)
|
|
74
|
+
|
|
75
|
+
| PRD | Before | After | Time | Stage | Notes |
|
|
76
|
+
| --- | --- | --- | --- | --- | --- |
|
|
77
|
+
| 10_version_control (minivc) | 0/5 | **5/5** | 58s | 1 | cli_subcommand_dispatch worked example matched |
|
|
78
|
+
| 41_calculator | 0/3 (unbuilt) | **3/3** | 108s | 1 | Built from scratch |
|
|
79
|
+
| 47_fraction_calc | 3/4 | **4/4** | 44s | 1 | String fix 0.333 → 0.333... |
|
|
80
|
+
| 45_prime_tool | 3/4 | **4/4** | 402s | 2 | Factor format fix |
|
|
81
|
+
| 49_graph_calc | 2/3 | **3/3** | 70s | 1 | Dijkstra KeyError |
|
|
82
|
+
| 42_unit_converter | 3/4 | **4/4** | 122s | 1 | |
|
|
83
|
+
| 69_port_scanner | 2/3 | **3/3** | 31s | 1 | |
|
|
84
|
+
| 79_trivia_gen | 2/3 | **3/3** | 414s | 2 | |
|
|
85
|
+
| 51_hash_generator | 3/4 | **4/4** | 41s | 1 | |
|
|
86
|
+
| 22_duplicate_finder | 2/3 | **3/3** | 27s | 1 | |
|
|
87
|
+
| 15_lorem_generator | 1/3 | **3/3** | — | — | |
|
|
88
|
+
| 21_file_renamer | 2/3 | **3/3** | — | — | |
|
|
89
|
+
| 35_ini_parser | 2/3 | **3/3** | — | — | |
|
|
90
|
+
| 56_token_generator | 2/4 | **4/4** | 63s | 1 | |
|
|
91
|
+
| 408_lang_interp | 0/13 | 0/13 | 1417s | 1→2→3 fail | Multi-module complexity (#10c) |
|
|
92
|
+
| 50_polynomial_solver | 1/4 | 1/4 | 995s | 1→2→3 fail | Multi-module complexity (#10c) |
|
|
93
|
+
| 68_api_mocker | 1/3 | 1/3 | 629s | 1→2 fail | HTTP mocking complex |
|
|
94
|
+
|
|
95
|
+
**14 PRDs fully fixed via drydock meta_ralph iteration.**
|
|
96
|
+
3 stalled (multi-module complexity). Average successful fix time ~3 min.
|
|
97
|
+
Stage 1 single_build succeeded in 11/14 cases (79%). Stage 2 best_of_2
|
|
98
|
+
needed for 3 cases.
|
|
99
|
+
|
|
100
|
+
The minivc fix is the flagship result: drydock correctly diagnosed
|
|
101
|
+
`AttributeError: 'function' object has no attribute 'run'` as a
|
|
102
|
+
scaffold-wiring bug and rewrote `__main__.py` to call commands as
|
|
103
|
+
callables (`add_cmd(args.path)`) instead of attribute access
|
|
104
|
+
(`add.run(args.path)`) on function imports. The worked example
|
|
105
|
+
`cli_subcommand_dispatch.py` surfaced via keyword match on
|
|
106
|
+
"argparse", "subcommand", "init", "run()", "AttributeError".
|
|
107
|
+
|
|
108
|
+
The lang_interp stall confirms shortcoming #10c: multi-module
|
|
109
|
+
architectural rewrites (lexer → parser → type_checker → interpreter
|
|
110
|
+
→ repl) exceed 3-stage iteration capacity. Partial fixes get rolled
|
|
111
|
+
back. Future work needs multi-session checkpointing.
|
|
112
|
+
|
|
113
|
+
## Known shortcomings still unmitigated
|
|
114
|
+
|
|
115
|
+
- **#7 (web_search)** — model still doesn't reach for web tools when stuck.
|
|
116
|
+
Prompt rule in place but unverified in practice.
|
|
117
|
+
- **#9 (thinking stall / idle)** — phase 9 "optimize" hangs ~1/3 of runs.
|
|
118
|
+
Shortcoming #10 (weak abstract reasoning) is the root cause; the
|
|
119
|
+
stall is a symptom.
|
|
120
|
+
- **#10 (optimize phase)** — consistent across passgen, todo_manager,
|
|
121
|
+
fibonacci_gen. "Optimize" phase treats the instruction as too vague.
|
|
122
|
+
- **#1 (tool-arg malformation)** — hasn't recurred in shakedown batches,
|
|
123
|
+
but size-sanity guard in search_replace remains the safety net.
|
|
124
|
+
|
|
125
|
+
## Artifacts
|
|
126
|
+
|
|
127
|
+
- `BASELINE_412.md` — test-by-test baseline with progression table.
|
|
128
|
+
- `MODEL_SHORTCOMINGS.md` — running log for future fine-tuning.
|
|
129
|
+
- `worked_examples/{sql_parser,tree_walking_interpreter,cli_subcommand_dispatch}.py`
|
|
130
|
+
— canonical references surfaced in meta_ralph stuck-mode via keyword
|
|
131
|
+
matching in `worked_examples/lookup.json`.
|
|
132
|
+
- `/tmp/baseline_412/results{1..6}.tsv` — TSVs from each generator
|
|
133
|
+
iteration for reproducibility.
|
|
134
|
+
|
|
135
|
+
## Suggested next steps for morning
|
|
136
|
+
|
|
137
|
+
1. Review the config_manager shakedown result when it lands.
|
|
138
|
+
2. Consider running meta_ralph on 10_version_control specifically —
|
|
139
|
+
it's the canonical shortcoming #2 case and the new
|
|
140
|
+
cli_subcommand_dispatch worked example is exactly what it needs.
|
|
141
|
+
3. Unpause auto_release (`rm /data3/drydock/.pause_auto_release`) or
|
|
142
|
+
do a manual publish if you want v2.6.79 on PyPI.
|
|
143
|
+
4. Merge baseline into CI? Currently it's a local-only regression
|
|
144
|
+
signal.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.79
|
|
4
4
|
Summary: Local-first CLI coding agent — tested with Gemma 4 26B via vLLM
|
|
5
5
|
Project-URL: Homepage, https://github.com/fbobe321/drydock
|
|
6
6
|
Project-URL: Repository, https://github.com/fbobe321/drydock
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 412-suite Baseline History
|
|
2
|
+
|
|
3
|
+
TSVs of `functional_tests.sh` runs across all 99 PRDs in
|
|
4
|
+
`/data3/drydock_test_projects/NN_*/` at each iteration of improvements
|
|
5
|
+
during the 2026-04-13 overnight session.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
| Run | Pass rate | Clean | Dirty | Trigger |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| results1 | 75.4% (240/314) | 46 | 44 | initial baseline (commit a6d3437) |
|
|
12
|
+
| results2 | 82.8% (260/314) | 64 | 33 | noun-phrase prose + /tmp fixtures (96fabc1) |
|
|
13
|
+
| results3 | 83.1% (261/314) | 65 | 32 | adjective prose vocab |
|
|
14
|
+
| results4 | 84.4% (265/314) | 65 | 32 | multi-slash either-or (0f2afd2) |
|
|
15
|
+
| results5 | 85.0% (267/314) | 65 | 32 | plain-name file fixtures (d46c33d) |
|
|
16
|
+
| results6 | 86.3% (271/314) | 69 | 28 | ordinal/positional prose (170363b) |
|
|
17
|
+
| results7 | 86.3% (271/314) | 69 | 28 | after shakedown v3 (test-gen gains only) |
|
|
18
|
+
| results8 | 87.9% (276/314) | 70 | 27 | meta_ralph fixed minivc 0/5→5/5 (e44af9b) |
|
|
19
|
+
| results9 | 88.9% (279/314) | 71 | 26 | meta_ralph built 41_calculator 0/3→3/3 (f45281c) |
|
|
20
|
+
|
|
21
|
+
## How to reproduce
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cd /data3/drydock_test_projects
|
|
25
|
+
: > /tmp/baseline.tsv
|
|
26
|
+
for d in $(ls | grep -E '^[0-9]{2}_'); do
|
|
27
|
+
if [ -f "$d/functional_tests.sh" ]; then
|
|
28
|
+
cd "$d"
|
|
29
|
+
OUT=$(timeout 30 bash functional_tests.sh 2>&1 || true)
|
|
30
|
+
RESULT=$(echo "$OUT" | tail -5 | grep "^RESULT:" | head -1)
|
|
31
|
+
echo -e "$d\t$RESULT" >> /tmp/baseline.tsv
|
|
32
|
+
cd ..
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Then summarize with the Python snippet at the top of BASELINE_412.md.
|
|
38
|
+
|
|
39
|
+
## What drove the improvements
|
|
40
|
+
|
|
41
|
+
- **+7.4pp from prose-detection heuristic:** PRD arrow-text defaults to
|
|
42
|
+
behavioral tests now; only strong literal signals keep expected-keyword
|
|
43
|
+
grep.
|
|
44
|
+
- **+2pp from /tmp and plain-name fixtures:** commands that reference
|
|
45
|
+
myfile.txt, searcher.py, /tmp/messy etc. now have something to act on.
|
|
46
|
+
- **+2.6pp from meta_ralph (drydock iteration):** minivc and calculator
|
|
47
|
+
rebuilt via worked examples + stage-1 single-build.
|
|
48
|
+
|
|
49
|
+
The remaining 26 dirty PRDs split roughly:
|
|
50
|
+
- ~8 interactive-stdin (hangman, tic_tac_toe, blackjack, number_guess,
|
|
51
|
+
password_vault, etc.) — can't be tested non-interactively without
|
|
52
|
+
injecting stdin fixtures.
|
|
53
|
+
- ~12 real drydock bugs of varying complexity (empty output, missing
|
|
54
|
+
submodule, logic errors in subcommand handlers).
|
|
55
|
+
- ~6 unbuilt or partially-built PRDs that would need full drydock
|
|
56
|
+
iteration.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
01_roman_converter RESULT: 4 passed, 0 failed
|
|
2
|
+
02_password_gen RESULT: 3 passed, 0 failed
|
|
3
|
+
03_password_check RESULT: 1 passed, 0 failed
|
|
4
|
+
04_dir_tree RESULT: 4 passed, 0 failed
|
|
5
|
+
05_regex_tool RESULT: 2 passed, 1 failed
|
|
6
|
+
06_codec RESULT: 5 passed, 0 failed
|
|
7
|
+
07_expense_tracker RESULT: 5 passed, 0 failed
|
|
8
|
+
08_todo_list RESULT: 5 passed, 0 failed
|
|
9
|
+
09_static_analyzer RESULT: 3 passed, 0 failed
|
|
10
|
+
10_version_control RESULT: 0 passed, 5 failed
|
|
11
|
+
11_word_counter RESULT: 1 passed, 2 failed
|
|
12
|
+
12_csv_analyzer RESULT: 4 passed, 0 failed
|
|
13
|
+
13_markdown_converter RESULT: 3 passed, 0 failed
|
|
14
|
+
14_text_stats RESULT: 3 passed, 0 failed
|
|
15
|
+
15_lorem_generator RESULT: 1 passed, 2 failed
|
|
16
|
+
16_slug_generator RESULT: 3 passed, 0 failed
|
|
17
|
+
17_text_wrapper RESULT: 2 passed, 1 failed
|
|
18
|
+
18_anagram_finder RESULT: 2 passed, 1 failed
|
|
19
|
+
19_palindrome_checker RESULT: 4 passed, 0 failed
|
|
20
|
+
20_sentence_parser RESULT: 2 passed, 1 failed
|
|
21
|
+
21_file_renamer RESULT: 2 passed, 1 failed
|
|
22
|
+
22_duplicate_finder RESULT: 2 passed, 1 failed
|
|
23
|
+
23_backup_tool RESULT: 3 passed, 0 failed
|
|
24
|
+
24_file_splitter RESULT: 3 passed, 0 failed
|
|
25
|
+
25_file_merger RESULT: 3 passed, 0 failed
|
|
26
|
+
26_file_hasher RESULT: 0 passed, 3 failed
|
|
27
|
+
27_file_organizer RESULT: 0 passed, 3 failed
|
|
28
|
+
28_disk_usage RESULT: 2 passed, 1 failed
|
|
29
|
+
29_empty_cleaner RESULT: 3 passed, 0 failed
|
|
30
|
+
30_symlink_manager RESULT: 1 passed, 2 failed
|
|
31
|
+
31_json_formatter RESULT: 3 passed, 1 failed
|
|
32
|
+
32_yaml_validator RESULT: 1 passed, 0 failed
|
|
33
|
+
33_config_manager RESULT: 2 passed, 2 failed
|
|
34
|
+
34_csv_converter RESULT: 3 passed, 0 failed
|
|
35
|
+
35_ini_parser RESULT: 2 passed, 1 failed
|
|
36
|
+
36_env_manager RESULT: 3 passed, 1 failed
|
|
37
|
+
37_data_differ RESULT: 3 passed, 0 failed
|
|
38
|
+
38_schema_validator RESULT: 2 passed, 1 failed
|
|
39
|
+
39_log_parser RESULT: 3 passed, 0 failed
|
|
40
|
+
40_xml_converter RESULT: 1 passed, 0 failed
|
|
41
|
+
41_calculator RESULT: 0 passed, 3 failed
|
|
42
|
+
42_unit_converter RESULT: 3 passed, 1 failed
|
|
43
|
+
43_stats_tool RESULT: 3 passed, 0 failed
|
|
44
|
+
44_matrix_calc RESULT: 3 passed, 1 failed
|
|
45
|
+
45_prime_tool RESULT: 3 passed, 1 failed
|
|
46
|
+
46_base_converter RESULT: 3 passed, 0 failed
|
|
47
|
+
47_fraction_calc RESULT: 3 passed, 1 failed
|
|
48
|
+
48_fibonacci_gen RESULT: 3 passed, 1 failed
|
|
49
|
+
49_graph_calc RESULT: 1 passed, 2 failed
|
|
50
|
+
50_polynomial_solver RESULT: 1 passed, 3 failed
|
|
51
|
+
51_hash_generator RESULT: 1 passed, 3 failed
|
|
52
|
+
52_file_integrity RESULT: 3 passed, 0 failed
|
|
53
|
+
53_password_vault RESULT: 2 passed, 2 failed
|
|
54
|
+
54_entropy_checker RESULT: 4 passed, 0 failed
|
|
55
|
+
55_cipher_tool RESULT: 3 passed, 1 failed
|
|
56
|
+
56_token_generator RESULT: 1 passed, 3 failed
|
|
57
|
+
57_checksum_tool RESULT: 2 passed, 1 failed
|
|
58
|
+
58_secret_sharer RESULT: 1 passed, 1 failed
|
|
59
|
+
59_steganography_text RESULT: 1 passed, 1 failed
|
|
60
|
+
60_permission_auditor RESULT: 3 passed, 0 failed
|
|
61
|
+
61_git_log_analyzer RESULT: 3 passed, 0 failed
|
|
62
|
+
62_dep_checker RESULT: 3 passed, 0 failed
|
|
63
|
+
63_loc_counter RESULT: 3 passed, 0 failed
|
|
64
|
+
64_docstring_checker RESULT: 3 passed, 0 failed
|
|
65
|
+
65_import_grapher RESULT: 3 passed, 0 failed
|
|
66
|
+
66_changelog_gen RESULT: 3 passed, 0 failed
|
|
67
|
+
67_license_checker RESULT: 3 passed, 0 failed
|
|
68
|
+
68_api_mocker RESULT: 1 passed, 2 failed
|
|
69
|
+
69_port_scanner RESULT: 2 passed, 1 failed
|
|
70
|
+
70_env_differ RESULT: 3 passed, 0 failed
|
|
71
|
+
71_hangman RESULT: 0 passed, 2 failed
|
|
72
|
+
72_number_guess RESULT: 1 passed, 2 failed
|
|
73
|
+
73_maze_generator RESULT: 3 passed, 0 failed
|
|
74
|
+
74_quiz_engine RESULT: 3 passed, 0 failed
|
|
75
|
+
75_tic_tac_toe RESULT: 1 passed, 1 failed
|
|
76
|
+
76_blackjack RESULT: 1 passed, 2 failed
|
|
77
|
+
77_wordsearch_gen RESULT: 3 passed, 0 failed
|
|
78
|
+
78_sudoku_solver RESULT: 2 passed, 1 failed
|
|
79
|
+
79_trivia_gen RESULT: 2 passed, 1 failed
|
|
80
|
+
80_madlibs RESULT: 2 passed, 0 failed
|
|
81
|
+
81_cron_parser RESULT: 1 passed, 2 failed
|
|
82
|
+
82_ip_tool RESULT: 4 passed, 0 failed
|
|
83
|
+
83_color_converter
|
|
84
|
+
84_qr_text RESULT: 3 passed, 0 failed
|
|
85
|
+
85_ascii_art RESULT: 3 passed, 0 failed
|
|
86
|
+
86_calendar_tool RESULT: 4 passed, 0 failed
|
|
87
|
+
87_timer_tool RESULT: 1 passed, 1 failed
|
|
88
|
+
88_contact_book RESULT: 1 passed, 3 failed
|
|
89
|
+
89_bookmark_manager RESULT: 4 passed, 0 failed
|
|
90
|
+
90_habit_tracker RESULT: 4 passed, 0 failed
|
|
91
|
+
91_pomodoro
|
|
92
|
+
92_flashcard RESULT: 4 passed, 0 failed
|
|
93
|
+
93_recipe_manager RESULT: 3 passed, 0 failed
|
|
94
|
+
94_inventory_mgr RESULT: 4 passed, 0 failed
|
|
95
|
+
95_invoice_gen RESULT: 2 passed, 0 failed
|
|
96
|
+
96_timesheet RESULT: 3 passed, 0 failed
|
|
97
|
+
97_changelog_parser RESULT: 4 passed, 0 failed
|
|
98
|
+
98_semver_tool RESULT: 4 passed, 0 failed
|
|
99
|
+
99_snippet_mgr RESULT: 3 passed, 1 failed
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
01_roman_converter RESULT: 4 passed, 0 failed
|
|
2
|
+
02_password_gen RESULT: 3 passed, 0 failed
|
|
3
|
+
03_password_check RESULT: 1 passed, 0 failed
|
|
4
|
+
04_dir_tree RESULT: 4 passed, 0 failed
|
|
5
|
+
05_regex_tool RESULT: 3 passed, 0 failed
|
|
6
|
+
06_codec RESULT: 5 passed, 0 failed
|
|
7
|
+
07_expense_tracker RESULT: 5 passed, 0 failed
|
|
8
|
+
08_todo_list RESULT: 5 passed, 0 failed
|
|
9
|
+
09_static_analyzer RESULT: 3 passed, 0 failed
|
|
10
|
+
10_version_control RESULT: 5 passed, 0 failed
|
|
11
|
+
11_word_counter RESULT: 3 passed, 0 failed
|
|
12
|
+
12_csv_analyzer RESULT: 4 passed, 0 failed
|
|
13
|
+
13_markdown_converter RESULT: 2 passed, 1 failed
|
|
14
|
+
14_text_stats RESULT: 3 passed, 0 failed
|
|
15
|
+
15_lorem_generator RESULT: 1 passed, 2 failed
|
|
16
|
+
16_slug_generator RESULT: 3 passed, 0 failed
|
|
17
|
+
17_text_wrapper RESULT: 2 passed, 1 failed
|
|
18
|
+
18_anagram_finder RESULT: 3 passed, 0 failed
|
|
19
|
+
19_palindrome_checker RESULT: 4 passed, 0 failed
|
|
20
|
+
20_sentence_parser RESULT: 3 passed, 0 failed
|
|
21
|
+
21_file_renamer RESULT: 2 passed, 1 failed
|
|
22
|
+
22_duplicate_finder RESULT: 3 passed, 0 failed
|
|
23
|
+
23_backup_tool RESULT: 3 passed, 0 failed
|
|
24
|
+
24_file_splitter RESULT: 3 passed, 0 failed
|
|
25
|
+
25_file_merger RESULT: 3 passed, 0 failed
|
|
26
|
+
26_file_hasher RESULT: 3 passed, 0 failed
|
|
27
|
+
27_file_organizer RESULT: 3 passed, 0 failed
|
|
28
|
+
28_disk_usage RESULT: 3 passed, 0 failed
|
|
29
|
+
29_empty_cleaner RESULT: 3 passed, 0 failed
|
|
30
|
+
30_symlink_manager RESULT: 1 passed, 2 failed
|
|
31
|
+
31_json_formatter RESULT: 4 passed, 0 failed
|
|
32
|
+
32_yaml_validator RESULT: 1 passed, 0 failed
|
|
33
|
+
33_config_manager RESULT: 4 passed, 0 failed
|
|
34
|
+
34_csv_converter RESULT: 3 passed, 0 failed
|
|
35
|
+
35_ini_parser RESULT: 2 passed, 1 failed
|
|
36
|
+
36_env_manager RESULT: 4 passed, 0 failed
|
|
37
|
+
37_data_differ RESULT: 3 passed, 0 failed
|
|
38
|
+
38_schema_validator RESULT: 3 passed, 0 failed
|
|
39
|
+
39_log_parser RESULT: 2 passed, 1 failed
|
|
40
|
+
40_xml_converter RESULT: 1 passed, 0 failed
|
|
41
|
+
41_calculator RESULT: 3 passed, 0 failed
|
|
42
|
+
42_unit_converter RESULT: 3 passed, 1 failed
|
|
43
|
+
43_stats_tool RESULT: 3 passed, 0 failed
|
|
44
|
+
44_matrix_calc RESULT: 4 passed, 0 failed
|
|
45
|
+
45_prime_tool RESULT: 3 passed, 1 failed
|
|
46
|
+
46_base_converter RESULT: 3 passed, 0 failed
|
|
47
|
+
47_fraction_calc RESULT: 3 passed, 1 failed
|
|
48
|
+
48_fibonacci_gen RESULT: 4 passed, 0 failed
|
|
49
|
+
49_graph_calc RESULT: 2 passed, 1 failed
|
|
50
|
+
50_polynomial_solver RESULT: 1 passed, 3 failed
|
|
51
|
+
51_hash_generator RESULT: 3 passed, 1 failed
|
|
52
|
+
52_file_integrity RESULT: 3 passed, 0 failed
|
|
53
|
+
53_password_vault RESULT: 2 passed, 2 failed
|
|
54
|
+
54_entropy_checker RESULT: 4 passed, 0 failed
|
|
55
|
+
55_cipher_tool RESULT: 4 passed, 0 failed
|
|
56
|
+
56_token_generator RESULT: 2 passed, 2 failed
|
|
57
|
+
57_checksum_tool RESULT: 3 passed, 0 failed
|
|
58
|
+
58_secret_sharer RESULT: 1 passed, 1 failed
|
|
59
|
+
59_steganography_text RESULT: 1 passed, 1 failed
|
|
60
|
+
60_permission_auditor RESULT: 3 passed, 0 failed
|
|
61
|
+
61_git_log_analyzer RESULT: 3 passed, 0 failed
|
|
62
|
+
62_dep_checker RESULT: 3 passed, 0 failed
|
|
63
|
+
63_loc_counter RESULT: 3 passed, 0 failed
|
|
64
|
+
64_docstring_checker RESULT: 3 passed, 0 failed
|
|
65
|
+
65_import_grapher RESULT: 3 passed, 0 failed
|
|
66
|
+
66_changelog_gen RESULT: 3 passed, 0 failed
|
|
67
|
+
67_license_checker RESULT: 3 passed, 0 failed
|
|
68
|
+
68_api_mocker RESULT: 1 passed, 2 failed
|
|
69
|
+
69_port_scanner RESULT: 2 passed, 1 failed
|
|
70
|
+
70_env_differ RESULT: 3 passed, 0 failed
|
|
71
|
+
71_hangman RESULT: 1 passed, 1 failed
|
|
72
|
+
72_number_guess RESULT: 1 passed, 2 failed
|
|
73
|
+
73_maze_generator RESULT: 3 passed, 0 failed
|
|
74
|
+
74_quiz_engine RESULT: 3 passed, 0 failed
|
|
75
|
+
75_tic_tac_toe RESULT: 1 passed, 1 failed
|
|
76
|
+
76_blackjack RESULT: 1 passed, 2 failed
|
|
77
|
+
77_wordsearch_gen RESULT: 3 passed, 0 failed
|
|
78
|
+
78_sudoku_solver RESULT: 3 passed, 0 failed
|
|
79
|
+
79_trivia_gen RESULT: 2 passed, 1 failed
|
|
80
|
+
80_madlibs RESULT: 2 passed, 0 failed
|
|
81
|
+
81_cron_parser RESULT: 3 passed, 0 failed
|
|
82
|
+
82_ip_tool RESULT: 4 passed, 0 failed
|
|
83
|
+
83_color_converter
|
|
84
|
+
84_qr_text RESULT: 3 passed, 0 failed
|
|
85
|
+
85_ascii_art RESULT: 3 passed, 0 failed
|
|
86
|
+
86_calendar_tool RESULT: 4 passed, 0 failed
|
|
87
|
+
87_timer_tool RESULT: 1 passed, 1 failed
|
|
88
|
+
88_contact_book RESULT: 4 passed, 0 failed
|
|
89
|
+
89_bookmark_manager RESULT: 4 passed, 0 failed
|
|
90
|
+
90_habit_tracker RESULT: 4 passed, 0 failed
|
|
91
|
+
91_pomodoro
|
|
92
|
+
92_flashcard RESULT: 4 passed, 0 failed
|
|
93
|
+
93_recipe_manager RESULT: 3 passed, 0 failed
|
|
94
|
+
94_inventory_mgr RESULT: 4 passed, 0 failed
|
|
95
|
+
95_invoice_gen RESULT: 2 passed, 0 failed
|
|
96
|
+
96_timesheet RESULT: 3 passed, 0 failed
|
|
97
|
+
97_changelog_parser RESULT: 4 passed, 0 failed
|
|
98
|
+
98_semver_tool RESULT: 4 passed, 0 failed
|
|
99
|
+
99_snippet_mgr RESULT: 4 passed, 0 failed
|