Skip to content

rewrite: replace Python with Rust and Ratatui - #45

Open
t41372 wants to merge 1024 commits into
mainfrom
rewrite/rust-ratatui-complete-20260808-codex
Open

rewrite: replace Python with Rust and Ratatui#45
t41372 wants to merge 1024 commits into
mainfrom
rewrite/rust-ratatui-complete-20260808-codex

Conversation

@t41372

@t41372 t41372 commented Aug 12, 2026

Copy link
Copy Markdown
Owner

What this PR does

Replaces the Python implementation of skit with a complete Rust + Ratatui rewrite. The Python source is gone; a Maturin binary wheel keeps uv tool install skit-cli and PyPI upgrades working. Version 0.4 user data stays authoritative: reads never migrate, unknown fields and source bytes survive round trips, and a v0.4.0 library upgrades in place without corruption.

Architecture

Workspace crates with dependency direction toward the domain: skit-domain, skit-application (use cases, ports, typed errors), skit-language (parser-backed analysis/injection/normalization), skit-form, skit-store (TOML, locking, atomic mutation), skit-runtime (process plans, uv bootstrap, spawn), skit-ui (serializable state + reducer — the future Tauri seam), skit-tui (Ratatui/Crossterm), skit-cli (Clap + composition root), skit-i18n (complete en/zh-CN/zh-TW catalog). Every TUI capability is reachable from the CLI with --json, deterministic exit codes, --no-input, and dynamic completion.

Behavior fidelity

The Python v0.4 test suite was ported as the behavioral oracle (81 modules; per-module record in docs/design/python-test-port-ledger.md). The release contract is docs/design/rust-contract-matrix.md: all 21 rows complete, with every accepted divergence listed under "Recorded deviations". zh strings are byte-for-byte copies from the v0.4 gettext catalogs.

Evidence at the release head

  • 4,117 workspace tests, 0 failures, 525 classified ignores; TDD throughout
  • Complete executable-source line coverage (cargo llvm-cov + fail-closed gate)
  • Clippy and Rustdoc with warnings denied; cargo-deny, cargo-audit, zizmor
  • Three-platform CI (Linux, macOS, Windows), PyPI/uv compatibility job, docs site, benchmark budgets and CodSpeed — all green
  • Six independent review rounds plus an external-reviewer cycle; every confirmed finding fixed
  • Demo/walkthrough tapes under docs/assets/demo/ replay the full keyboard surface in three locales; the 12 tracked frames are byte-verified against the release binary

Deferred by owner decision

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 780 files, which is 680 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8b183c71-23fb-4540-bd88-98aacf9aa7da

📥 Commits

Reviewing files that changed from the base of the PR and between 206f9ef and 5af68f8.

⛔ Files ignored due to path filters (20)
  • Cargo.lock is excluded by !**/*.lock
  • docs/assets/demo-mouse.gif is excluded by !**/*.gif
  • docs/assets/tui-add-en.png is excluded by !**/*.png
  • docs/assets/tui-add-zh-CN.png is excluded by !**/*.png
  • docs/assets/tui-add-zh-TW.png is excluded by !**/*.png
  • docs/assets/tui-add-zh.png is excluded by !**/*.png
  • docs/assets/tui-form-en.png is excluded by !**/*.png
  • docs/assets/tui-form-zh-CN.png is excluded by !**/*.png
  • docs/assets/tui-form-zh-TW.png is excluded by !**/*.png
  • docs/assets/tui-form-zh.png is excluded by !**/*.png
  • docs/assets/tui-library-en.png is excluded by !**/*.png
  • docs/assets/tui-library-zh-CN.png is excluded by !**/*.png
  • docs/assets/tui-library-zh-TW.png is excluded by !**/*.png
  • docs/assets/tui-library-zh.png is excluded by !**/*.png
  • docs/assets/tui-settings-en.png is excluded by !**/*.png
  • docs/assets/tui-settings-zh-CN.png is excluded by !**/*.png
  • docs/assets/tui-settings-zh-TW.png is excluded by !**/*.png
  • docs/assets/tui-settings-zh.png is excluded by !**/*.png
  • docs/package-lock.json is excluded by !**/package-lock.json
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (780)
  • .cargo/mutants.toml
  • .gitattributes
  • .github/actions/install-hyperfine/action.yml
  • .github/codecov.yml
  • .github/workflows/benchmark-compare.yml
  • .github/workflows/benchmark-nightly.yml
  • .github/workflows/benchmark.yml
  • .github/workflows/ci.yml
  • .github/workflows/codspeed.yml
  • .github/workflows/docs.yml
  • .github/workflows/mutation.yml
  • .github/workflows/release.yml
  • .gitignore
  • .pre-commit-config.yaml
  • AGENTS.md
  • CONTRIBUTING.md
  • Cargo.toml
  • README.md
  • README.zh-CN.md
  • README.zh-TW.md
  • babel.cfg
  • benchmarks/README.md
  • benchmarks/__init__.py
  • benchmarks/__main__.py
  • benchmarks/budgets.py
  • benchmarks/budgets.toml
  • benchmarks/check.sh
  • benchmarks/codspeed/__init__.py
  • benchmarks/codspeed/test_bench_analyzers.py
  • benchmarks/codspeed/test_bench_store.py
  • benchmarks/compare.py
  • benchmarks/compare.sh
  • benchmarks/datasets.py
  • benchmarks/envinfo.py
  • benchmarks/envspec.py
  • benchmarks/fixtures/__init__.py
  • benchmarks/fixtures/sources.py
  • benchmarks/hyperfine.py
  • benchmarks/micro/bench_analyzers.py
  • benchmarks/micro/bench_launch.py
  • benchmarks/micro/bench_render.py
  • benchmarks/micro/bench_store.py
  • benchmarks/parsers.py
  • benchmarks/pipeline.py
  • benchmarks/results.py
  • benchmarks/run.sh
  • benchmarks/suites/__init__.py
  • benchmarks/suites/_env.py
  • benchmarks/suites/_run.py
  • benchmarks/suites/footprint.py
  • benchmarks/suites/imports.py
  • benchmarks/suites/micro.py
  • benchmarks/suites/rss.py
  • benchmarks/suites/run_overhead.py
  • benchmarks/suites/scale.py
  • benchmarks/suites/startup.py
  • benchmarks/suites/syscalls.py
  • benchmarks/suites/tui.py
  • benchmarks/suites/tui_probe.py
  • benchmarks/test.sh
  • crates/skit-application/Cargo.toml
  • crates/skit-application/src/agent_skill.rs
  • crates/skit-application/src/delivery.rs
  • crates/skit-application/src/form_feedback.rs
  • crates/skit-application/src/form_state.rs
  • crates/skit-application/src/glob_expansion.rs
  • crates/skit-application/src/health.rs
  • crates/skit-application/src/lib.rs
  • crates/skit-application/src/library_detail.rs
  • crates/skit-application/src/mutations.rs
  • crates/skit-application/src/parameter_edit.rs
  • crates/skit-application/src/path_completion.rs
  • crates/skit-application/src/path_insertion.rs
  • crates/skit-application/src/payload_policy.rs
  • crates/skit-application/src/preferences.rs
  • crates/skit-application/src/prompt_selection.rs
  • crates/skit-application/src/run_inputs.rs
  • crates/skit-application/src/runner_management.rs
  • crates/skit-application/src/tokens.rs
  • crates/skit-application/src/value_preparation.rs
  • crates/skit-application/src/value_resolution.rs
  • crates/skit-application/tests/agent_skill.rs
  • crates/skit-application/tests/delivery_assembly.rs
  • crates/skit-application/tests/form_feedback.rs
  • crates/skit-application/tests/form_state.rs
  • crates/skit-application/tests/form_state_service.rs
  • crates/skit-application/tests/glob_expansion.rs
  • crates/skit-application/tests/health.rs
  • crates/skit-application/tests/library_service.rs
  • crates/skit-application/tests/library_surface_service.rs
  • crates/skit-application/tests/localization.rs
  • crates/skit-application/tests/mutation_service.rs
  • crates/skit-application/tests/parameter_edit.rs
  • crates/skit-application/tests/path_completion_service.rs
  • crates/skit-application/tests/path_insertion.rs
  • crates/skit-application/tests/payload_policy.rs
  • crates/skit-application/tests/port_test_argv_text.rs
  • crates/skit-application/tests/port_test_flows.rs
  • crates/skit-application/tests/port_test_parameter_edit.rs
  • crates/skit-application/tests/port_test_powershell_delivery.rs
  • crates/skit-application/tests/port_test_tokens.rs
  • crates/skit-application/tests/preferences.rs
  • crates/skit-application/tests/prompt_selection.rs
  • crates/skit-application/tests/run_inputs.rs
  • crates/skit-application/tests/runner_management.rs
  • crates/skit-application/tests/value_preparation.rs
  • crates/skit-application/tests/value_resolution.rs
  • crates/skit-application/tests/value_tokens.rs
  • crates/skit-benchmarks/Cargo.toml
  • crates/skit-benchmarks/benches/core.rs
  • crates/skit-benchmarks/src/bin/skit-bench.rs
  • crates/skit-benchmarks/src/bin/skit_bench/tests.rs
  • crates/skit-benchmarks/src/budget.rs
  • crates/skit-benchmarks/src/compare.rs
  • crates/skit-benchmarks/src/dataset.rs
  • crates/skit-benchmarks/src/environment.rs
  • crates/skit-benchmarks/src/hyperfine.rs
  • crates/skit-benchmarks/src/lib.rs
  • crates/skit-benchmarks/src/parsers.rs
  • crates/skit-benchmarks/src/pipeline.rs
  • crates/skit-benchmarks/src/process.rs
  • crates/skit-benchmarks/src/python_random.rs
  • crates/skit-benchmarks/src/report.rs
  • crates/skit-benchmarks/src/runner.rs
  • crates/skit-benchmarks/src/sources.rs
  • crates/skit-benchmarks/src/stats.rs
  • crates/skit-benchmarks/src/suites/footprint.rs
  • crates/skit-benchmarks/src/suites/imports.rs
  • crates/skit-benchmarks/src/suites/micro.rs
  • crates/skit-benchmarks/src/suites/mod.rs
  • crates/skit-benchmarks/src/suites/rss.rs
  • crates/skit-benchmarks/src/suites/run_overhead.rs
  • crates/skit-benchmarks/src/suites/scale.rs
  • crates/skit-benchmarks/src/suites/startup.rs
  • crates/skit-benchmarks/src/suites/syscalls.rs
  • crates/skit-benchmarks/src/suites/tui.rs
  • crates/skit-benchmarks/src/test_support.rs
  • crates/skit-benchmarks/src/tui_probe.rs
  • crates/skit-benchmarks/tests/core_contract.rs
  • crates/skit-benchmarks/tests/dataset_contract.rs
  • crates/skit-benchmarks/tests/environment_report_contract.rs
  • crates/skit-benchmarks/tests/execution_contract.rs
  • crates/skit-benchmarks/tests/front_door_contract.rs
  • crates/skit-benchmarks/tests/pipeline_plan.rs
  • crates/skit-benchmarks/tests/port_test_benchmarks_tooling_manifest.rs
  • crates/skit-benchmarks/tests/source_contract.rs
  • crates/skit-cli/Cargo.toml
  • crates/skit-cli/src/cli.rs
  • crates/skit-cli/src/cli/tests.rs
  • crates/skit-cli/src/lib.rs
  • crates/skit-cli/src/library.rs
  • crates/skit-cli/src/main.rs
  • crates/skit-cli/src/run.rs
  • crates/skit-cli/src/run/command.rs
  • crates/skit-cli/tests/add_lanes.rs
  • crates/skit-cli/tests/catalog_contract.rs
  • crates/skit-cli/tests/cli.rs
  • crates/skit-cli/tests/coordinated_javascript_state.rs
  • crates/skit-cli/tests/edge_workflows.rs
  • crates/skit-cli/tests/i18n_cli.rs
  • crates/skit-cli/tests/library_refresh.rs
  • crates/skit-cli/tests/mutations_cli.rs
  • crates/skit-cli/tests/params_bool_hygiene.rs
  • crates/skit-cli/tests/port_test_add_feedback_contracts.rs
  • crates/skit-cli/tests/port_test_add_lane_contracts.rs
  • crates/skit-cli/tests/port_test_add_no_source.rs
  • crates/skit-cli/tests/port_test_add_validation_contracts.rs
  • crates/skit-cli/tests/port_test_agent_install.rs
  • crates/skit-cli/tests/port_test_agent_skill.rs
  • crates/skit-cli/tests/port_test_argspec_mut_manifest.rs
  • crates/skit-cli/tests/port_test_cli.rs
  • crates/skit-cli/tests/port_test_config.rs
  • crates/skit-cli/tests/port_test_config_cmd.rs
  • crates/skit-cli/tests/port_test_declared_params.rs
  • crates/skit-cli/tests/port_test_dependency_command_contracts.rs
  • crates/skit-cli/tests/port_test_dependency_write_validation.rs
  • crates/skit-cli/tests/port_test_draft_inference_and_reader_cli.rs
  • crates/skit-cli/tests/port_test_edit.rs
  • crates/skit-cli/tests/port_test_editor.rs
  • crates/skit-cli/tests/port_test_entrypoint.rs
  • crates/skit-cli/tests/port_test_fish_cli_reader_mut_manifest.rs
  • crates/skit-cli/tests/port_test_fish_manage.rs
  • crates/skit-cli/tests/port_test_healthcheck.rs
  • crates/skit-cli/tests/port_test_hermeticity.rs
  • crates/skit-cli/tests/port_test_i18n_config.rs
  • crates/skit-cli/tests/port_test_i18n_manifest.rs
  • crates/skit-cli/tests/port_test_js_analyzer_mut_manifest.rs
  • crates/skit-cli/tests/port_test_js_cli_reader_mut_manifest.rs
  • crates/skit-cli/tests/port_test_js_deps.rs
  • crates/skit-cli/tests/port_test_js_inject_cli.rs
  • crates/skit-cli/tests/port_test_js_inject_cli_batch_c.rs
  • crates/skit-cli/tests/port_test_js_inject_manifest.rs
  • crates/skit-cli/tests/port_test_langs.rs
  • crates/skit-cli/tests/port_test_packaging.rs
  • crates/skit-cli/tests/port_test_packaging_manifest.rs
  • crates/skit-cli/tests/port_test_phase1.rs
  • crates/skit-cli/tests/port_test_powershell_manifest.rs
  • crates/skit-cli/tests/port_test_prompt_cli.rs
  • crates/skit-cli/tests/port_test_prompt_kind.rs
  • crates/skit-cli/tests/port_test_prompt_utf8.rs
  • crates/skit-cli/tests/port_test_raw.rs
  • crates/skit-cli/tests/port_test_rename.rs
  • crates/skit-cli/tests/port_test_review_fixes.rs
  • crates/skit-cli/tests/port_test_run_set.rs
  • crates/skit-cli/tests/port_test_shell_analyzer_mut_manifest.rs
  • crates/skit-cli/tests/port_test_shell_cli_reader_mut_manifest.rs
  • crates/skit-cli/tests/port_test_shim_manifest.rs
  • crates/skit-cli/tests/port_test_shim_runtime.rs
  • crates/skit-cli/tests/port_test_shim_staging.rs
  • crates/skit-cli/tests/port_test_show.rs
  • crates/skit-cli/tests/port_test_store_add.rs
  • crates/skit-cli/tests/port_test_store_fix_add_deps.rs
  • crates/skit-cli/tests/port_test_store_fix_batch3_manifest.rs
  • crates/skit-cli/tests/port_test_store_fix_manifest.rs
  • crates/skit-cli/tests/port_test_store_forced_exe.rs
  • crates/skit-cli/tests/port_test_store_manifest.rs
  • crates/skit-cli/tests/port_test_tui_responsive_manifest.rs
  • crates/skit-cli/tests/port_test_uv_metadata_unpinning.rs
  • crates/skit-cli/tests/port_test_uv_metadata_views.rs
  • crates/skit-cli/tests/product_contract.rs
  • crates/skit-cli/tests/run_cli.rs
  • crates/skit-cli/tests/run_identity_races.rs
  • crates/skit-cli/tests/source_management.rs
  • crates/skit-cli/tests/support/js_inject_batch_c.rs
  • crates/skit-cli/tests/support/plain_add_pty.rs
  • crates/skit-cli/tests/support/pty.rs
  • crates/skit-cli/tests/support/shim.rs
  • crates/skit-cli/tests/support/temp_root.rs
  • crates/skit-cli/tests/surface_edges.rs
  • crates/skit-cli/tests/terminal_pty.rs
  • crates/skit-cli/tests/typed_error_locales.rs
  • crates/skit-cli/tests/v040_compatibility.rs
  • crates/skit-cli/tests/v040_run_parity_regressions.rs
  • crates/skit-domain/Cargo.toml
  • crates/skit-domain/src/lib.rs
  • crates/skit-domain/src/parameters.rs
  • crates/skit-domain/src/parameters/declarations.rs
  • crates/skit-domain/src/parameters/edit.rs
  • crates/skit-domain/src/parameters/secrets.rs
  • crates/skit-domain/tests/contract.rs
  • crates/skit-domain/tests/entry_settings.rs
  • crates/skit-domain/tests/localization.rs
  • crates/skit-domain/tests/parameter_declarations.rs
  • crates/skit-domain/tests/parameter_secrets.rs
  • crates/skit-domain/tests/parameter_serialization_edges.rs
  • crates/skit-domain/tests/parameters.rs
  • crates/skit-domain/tests/port_test_params_edit.rs
  • crates/skit-domain/tests/port_test_params_model.rs
  • crates/skit-form/Cargo.toml
  • crates/skit-form/src/field.rs
  • crates/skit-form/src/lib.rs
  • crates/skit-form/src/parameter_section.rs
  • crates/skit-form/tests/form_params.rs
  • crates/skit-form/tests/library_form_projector.rs
  • crates/skit-form/tests/onboarding_semantics.rs
  • crates/skit-form/tests/port_test_argspec_mut_exact.rs
  • crates/skit-form/tests/port_test_fish_cli_reader_mut_exact.rs
  • crates/skit-form/tests/port_test_js_analyzer_mut_exact.rs
  • crates/skit-form/tests/port_test_js_cli_reader_mut_exact.rs
  • crates/skit-form/tests/port_test_powershell_plan.rs
  • crates/skit-form/tests/port_test_shell_analyzer_mut_exact.rs
  • crates/skit-form/tests/port_test_shell_cli_reader_mut_exact.rs
  • crates/skit-form/tests/port_test_source_default_semantics.rs
  • crates/skit-form/tests/python_semantic_projection.rs
  • crates/skit-i18n/Cargo.toml
  • crates/skit-i18n/src/lib.rs
  • crates/skit-i18n/tests/catalog.rs
  • crates/skit-i18n/tests/port_test_i18n.rs
  • crates/skit-language/Cargo.toml
  • crates/skit-language/src/description.rs
  • crates/skit-language/src/lib.rs
  • crates/skit-language/src/prompt_text.rs
  • crates/skit-language/src/semantic.rs
  • crates/skit-language/src/semantic/fish.rs
  • crates/skit-language/src/semantic/javascript.rs
  • crates/skit-language/src/semantic/powershell.rs
  • crates/skit-language/src/semantic/shell.rs
  • crates/skit-language/src/semantic/tests.rs
  • crates/skit-language/src/source_text.rs
  • crates/skit-language/src/uv_edit.rs
  • crates/skit-language/tests/corpus.rs
  • crates/skit-language/tests/description_suggestion.rs
  • crates/skit-language/tests/edge_contract.rs
  • crates/skit-language/tests/language_contract.rs
  • crates/skit-language/tests/language_coverage_contracts.rs
  • crates/skit-language/tests/library_effective_settings.rs
  • crates/skit-language/tests/localization.rs
  • crates/skit-language/tests/lossless_source.rs
  • crates/skit-language/tests/metadata_edges.rs
  • crates/skit-language/tests/non_python_coverage_contracts.rs
  • crates/skit-language/tests/non_python_semantic_oracle.rs
  • crates/skit-language/tests/parser_backed_injection.rs
  • crates/skit-language/tests/port_test_analyzer.rs
  • crates/skit-language/tests/port_test_analyzer_signals.rs
  • crates/skit-language/tests/port_test_argspec.rs
  • crates/skit-language/tests/port_test_argspec_click_typer.rs
  • crates/skit-language/tests/port_test_callmatch.rs
  • crates/skit-language/tests/port_test_corpus.rs
  • crates/skit-language/tests/port_test_default_name_resolution.rs
  • crates/skit-language/tests/port_test_default_semantics_review_fixes.rs
  • crates/skit-language/tests/port_test_effective_uv_metadata.rs
  • crates/skit-language/tests/port_test_fish.rs
  • crates/skit-language/tests/port_test_js_analyzer.rs
  • crates/skit-language/tests/port_test_js_inject.rs
  • crates/skit-language/tests/port_test_metawriter.rs
  • crates/skit-language/tests/port_test_path_type.rs
  • crates/skit-language/tests/port_test_pep723_split.rs
  • crates/skit-language/tests/port_test_powershell.rs
  • crates/skit-language/tests/port_test_reconcile.rs
  • crates/skit-language/tests/port_test_rewrite.rs
  • crates/skit-language/tests/port_test_shell_analyzer.rs
  • crates/skit-language/tests/port_test_shell_getopts.rs
  • crates/skit-language/tests/port_test_shell_inject.rs
  • crates/skit-language/tests/port_test_shim.rs
  • crates/skit-language/tests/port_test_store_inference.rs
  • crates/skit-language/tests/powershell_semantic_contract.rs
  • crates/skit-language/tests/python_semantic_contract.rs
  • crates/skit-language/tests/python_v040_oracle.rs
  • crates/skit-language/tests/semantic_source_contract.rs
  • crates/skit-language/tests/uv_metadata_edit.rs
  • crates/skit-runtime/Cargo.toml
  • crates/skit-runtime/src/injected_command.rs
  • crates/skit-runtime/src/javascript_deps.rs
  • crates/skit-runtime/src/javascript_gate.rs
  • crates/skit-runtime/src/launch.rs
  • crates/skit-runtime/src/lib.rs
  • crates/skit-runtime/src/network.rs
  • crates/skit-runtime/src/shell_gate.rs
  • crates/skit-runtime/src/uv.rs
  • crates/skit-runtime/tests/javascript_dependencies.rs
  • crates/skit-runtime/tests/javascript_syntax_gate.rs
  • crates/skit-runtime/tests/launch_plan.rs
  • crates/skit-runtime/tests/localization.rs
  • crates/skit-runtime/tests/port_test_interpreters.rs
  • crates/skit-runtime/tests/port_test_launcher.rs
  • crates/skit-runtime/tests/port_test_launcher_fix.rs
  • crates/skit-runtime/tests/port_test_store_exe_target.rs
  • crates/skit-runtime/tests/port_test_template_context_quoting.rs
  • crates/skit-runtime/tests/port_test_uvman.rs
  • crates/skit-runtime/tests/port_test_uvman_manifest.rs
  • crates/skit-runtime/tests/prompt_runner.rs
  • crates/skit-runtime/tests/shell_syntax_gate.rs
  • crates/skit-runtime/tests/uv_bootstrap.rs
  • crates/skit-store/Cargo.toml
  • crates/skit-store/src/config.rs
  • crates/skit-store/src/fs_ops.rs
  • crates/skit-store/src/lib.rs
  • crates/skit-store/src/library_snapshot.rs
  • crates/skit-store/src/mutations.rs
  • crates/skit-store/src/mutations/agent_skill.rs
  • crates/skit-store/src/mutations/atomic.rs
  • crates/skit-store/src/mutations/hash.rs
  • crates/skit-store/src/mutations/registry.rs
  • crates/skit-store/src/mutations/runner_management.rs
  • crates/skit-store/src/path_completion.rs
  • crates/skit-store/src/path_glob.rs
  • crates/skit-store/src/paths.rs
  • crates/skit-store/src/prompt_selection.rs
  • crates/skit-store/src/read.rs
  • crates/skit-store/src/stamp.rs
  • crates/skit-store/src/state.rs
  • crates/skit-store/src/toml_document.rs
  • crates/skit-store/tests/agent_skill_store.rs
  • crates/skit-store/tests/config_store.rs
  • crates/skit-store/tests/coordinated_state.rs
  • crates/skit-store/tests/coverage_closure.rs
  • crates/skit-store/tests/file_store.rs
  • crates/skit-store/tests/form_state_forget.rs
  • crates/skit-store/tests/form_state_store.rs
  • crates/skit-store/tests/glob_expander.rs
  • crates/skit-store/tests/launch_paths.rs
  • crates/skit-store/tests/launch_safety.rs
  • crates/skit-store/tests/library_detail_repository.rs
  • crates/skit-store/tests/localization.rs
  • crates/skit-store/tests/mutation_refusals.rs
  • crates/skit-store/tests/mutations.rs
  • crates/skit-store/tests/port_test_argstate.rs
  • crates/skit-store/tests/port_test_argstate_shape_variants.rs
  • crates/skit-store/tests/port_test_atomic.rs
  • crates/skit-store/tests/port_test_atomic_manifest.rs
  • crates/skit-store/tests/port_test_atomic_state.rs
  • crates/skit-store/tests/port_test_presets.rs
  • crates/skit-store/tests/port_test_store.rs
  • crates/skit-store/tests/port_test_store_fix_filesystem.rs
  • crates/skit-store/tests/port_test_store_fix_metadata.rs
  • crates/skit-store/tests/prompt_selection_store.rs
  • crates/skit-store/tests/registry_edge_contracts.rs
  • crates/skit-store/tests/registry_fast_read.rs
  • crates/skit-store/tests/registry_projection.rs
  • crates/skit-store/tests/registry_rebuild_report.rs
  • crates/skit-store/tests/registry_resolve.rs
  • crates/skit-store/tests/runner_management_cas.rs
  • crates/skit-store/tests/runner_management_transaction.rs
  • crates/skit-tui/Cargo.toml
  • crates/skit-tui/src/footer.rs
  • crates/skit-tui/src/layout.rs
  • crates/skit-tui/src/lib.rs
  • crates/skit-tui/src/rowclip.rs
  • crates/skit-tui/src/screens/add.rs
  • crates/skit-tui/src/screens/library.rs
  • crates/skit-tui/src/screens/management.rs
  • crates/skit-tui/src/screens/mod.rs
  • crates/skit-tui/src/screens/modal.rs
  • crates/skit-tui/src/screens/picker.rs
  • crates/skit-tui/src/screens/preferences.rs
  • crates/skit-tui/src/screens/report.rs
  • crates/skit-tui/src/screens/run_modal.rs
  • crates/skit-tui/src/screens/settings.rs
  • crates/skit-tui/src/session.rs
  • crates/skit-tui/src/terminal.rs
  • crates/skit-tui/src/theme.rs
  • crates/skit-tui/tests/add_workflow.rs
  • crates/skit-tui/tests/interactive_run_form.rs
  • crates/skit-tui/tests/interactive_search.rs
  • crates/skit-tui/tests/main_library_surface.rs
  • crates/skit-tui/tests/management_workflow.rs
  • crates/skit-tui/tests/port_test_add_review_contracts.rs
  • crates/skit-tui/tests/port_test_draft_and_reader_tui.rs
  • crates/skit-tui/tests/port_test_ime_input.rs
  • crates/skit-tui/tests/port_test_kindnames.rs
  • crates/skit-tui/tests/port_test_path_tui.rs
  • crates/skit-tui/tests/port_test_prompt_tui.rs
  • crates/skit-tui/tests/port_test_reset_default_ui.rs
  • crates/skit-tui/tests/port_test_tui_edit.rs
  • crates/skit-tui/tests/port_test_tui_nav.rs
  • crates/skit-tui/tests/port_test_tui_responsive.rs
  • crates/skit-tui/tests/preferences_workflow.rs
  • crates/skit-tui/tests/render.rs
  • crates/skit-tui/tests/settings_screen.rs
  • crates/skit-tui/tests/terminal_pty.rs
  • crates/skit-ui/Cargo.toml
  • crates/skit-ui/src/add.rs
  • crates/skit-ui/src/lib.rs
  • crates/skit-ui/src/management.rs
  • crates/skit-ui/src/picker.rs
  • crates/skit-ui/src/preferences.rs
  • crates/skit-ui/src/run.rs
  • crates/skit-ui/src/settings.rs
  • crates/skit-ui/tests/port_test_add_review_validation.rs
  • crates/skit-ui/tests/port_test_settings_and_draft_review_atomicity.rs
  • crates/skit-ui/tests/reducer.rs
  • crates/skit-ui/tests/run_screen.rs
  • deny.toml
  • docs/README.md
  • docs/app/[lang]/(home)/redirect-to-docs.tsx
  • docs/app/[lang]/layout.tsx
  • docs/app/api/search/route.ts
  • docs/app/llms.mdx/[lang]/docs/[[...slug]]/route.ts
  • docs/app/llms.mdx/docs/[[...slug]]/route.ts
  • docs/app/og/docs/[lang]/[...slug]/route.tsx
  • docs/assets/demo/Dockerfile
  • docs/assets/demo/demo.tape
  • docs/assets/demo/record_walkthrough.sh
  • docs/assets/demo/scripts/en/pep723.py
  • docs/assets/demo/scripts/zh-CN/banner.py
  • docs/assets/demo/scripts/zh-CN/greet.py
  • docs/assets/demo/scripts/zh-CN/names.txt
  • docs/assets/demo/scripts/zh-CN/pep723.py
  • docs/assets/demo/scripts/zh/pep723.py
  • docs/assets/demo/settings-clip.tape
  • docs/assets/demo/shots.tape
  • docs/assets/demo/walkthrough-drafts.tape
  • docs/assets/demo/walkthrough-modals.tape
  • docs/assets/demo/walkthrough-shots.tape
  • docs/assets/demo/walkthrough.tape
  • docs/behavior-changes.md
  • docs/components/search.tsx
  • docs/content/docs/ai-agents.mdx
  • docs/content/docs/ai-agents.zh-CN.mdx
  • docs/content/docs/ai-agents.zh-TW.mdx
  • docs/content/docs/cli.mdx
  • docs/content/docs/cli.zh-CN.mdx
  • docs/content/docs/cli.zh-TW.mdx
  • docs/content/docs/configuration.zh-CN.mdx
  • docs/content/docs/configuration.zh-TW.mdx
  • docs/content/docs/environment.mdx
  • docs/content/docs/environment.zh-CN.mdx
  • docs/content/docs/environment.zh-TW.mdx
  • docs/content/docs/index.zh-CN.mdx
  • docs/content/docs/index.zh-TW.mdx
  • docs/content/docs/meta.zh-CN.json
  • docs/content/docs/meta.zh-TW.json
  • docs/content/docs/parameters.mdx
  • docs/content/docs/parameters.zh-CN.mdx
  • docs/content/docs/parameters.zh-TW.mdx
  • docs/content/docs/prompts.mdx
  • docs/content/docs/prompts.zh-CN.mdx
  • docs/content/docs/prompts.zh-TW.mdx
  • docs/content/docs/script-types.mdx
  • docs/content/docs/script-types.zh-CN.mdx
  • docs/content/docs/script-types.zh-TW.mdx
  • docs/content/docs/troubleshooting.mdx
  • docs/content/docs/troubleshooting.zh-CN.mdx
  • docs/content/docs/troubleshooting.zh-TW.mdx
  • docs/design/benchmarks.md
  • docs/design/multilang.md
  • docs/design/path.md
  • docs/design/prompt.md
  • docs/design/python-test-port-ledger.md
  • docs/design/rust-contract-matrix.md
  • docs/design/rust-rewrite.md
  • docs/design/rust-value-tokens.md
  • docs/lib/i18n.ts
  • docs/lib/layout.shared.tsx
  • docs/lib/shared.ts
  • docs/lib/source.ts
  • docs/mutation-ledger.md
  • docs/next.config.mjs
  • docs/package.json
  • docs/parity-backlog.md
  • docs/public/index.html
  • docs/scripts/check-contracts.mjs
  • docs/scripts/check-links.mjs
  • docs/scripts/sync-readme.mjs
  • docs/source.config.ts
  • pyproject.toml
  • rust-toolchain.toml
  • rustfmt.toml
  • scripts/check_coverage.sh
  • scripts/check_english.sh
  • scripts/check_mutation_stats.py
  • scripts/english_contractions.allow
  • scripts/i18n.py
  • scripts/i18n_coverage.py
  • scripts/record_demo.sh
  • scripts/serve_preview.py
  • scripts/test_coverage.sh
  • scripts/test_english.sh
  • scripts/test_tooling_contracts.sh
  • skills/skit/SKILL.md
  • src/skit/__init__.py
  • src/skit/__main__.py
  • src/skit/agentskill.py
  • src/skit/analysis.py
  • src/skit/argstate.py
  • src/skit/argv_text.py
  • src/skit/atomic.py
  • src/skit/callmatch.py
  • src/skit/cli.py
  • src/skit/config.py
  • src/skit/editor.py
  • src/skit/flows.py
  • src/skit/healthcheck.py
  • src/skit/i18n.py
  • src/skit/inlineform.py
  • src/skit/kindnames.py
  • src/skit/langs/__init__.py
  • src/skit/langs/base.py
  • src/skit/langs/fish/__init__.py
  • src/skit/langs/fish/analyzer.py
  • src/skit/langs/fish/cli_reader.py
  • src/skit/langs/javascript/__init__.py
  • src/skit/langs/javascript/analyzer.py
  • src/skit/langs/javascript/cli_reader.py
  • src/skit/langs/javascript/deps.py
  • src/skit/langs/javascript/inject.py
  • src/skit/langs/javascript/io.py
  • src/skit/langs/launch.py
  • src/skit/langs/powershell/__init__.py
  • src/skit/langs/powershell/cli_reader.py
  • src/skit/langs/prompt/__init__.py
  • src/skit/langs/prompt/analyzer.py
  • src/skit/langs/prompt/render.py
  • src/skit/langs/prompt/text.py
  • src/skit/langs/python/__init__.py
  • src/skit/langs/python/analyzer.py
  • src/skit/langs/python/argspec.py
  • src/skit/langs/python/metawriter.py
  • src/skit/langs/python/reconcile.py
  • src/skit/langs/python/shim.py
  • src/skit/langs/registry.py
  • src/skit/langs/shell/__init__.py
  • src/skit/langs/shell/analyzer.py
  • src/skit/langs/shell/cli_reader.py
  • src/skit/langs/shell/inject.py
  • src/skit/langs/shell/normalize.py
  • src/skit/launcher.py
  • src/skit/locales/skit.pot
  • src/skit/locales/zh_CN/LC_MESSAGES/skit.mo
  • src/skit/locales/zh_CN/LC_MESSAGES/skit.po
  • src/skit/locales/zh_TW/LC_MESSAGES/skit.mo
  • src/skit/locales/zh_TW/LC_MESSAGES/skit.po
  • src/skit/models.py
  • src/skit/params.py
  • src/skit/paths.py
  • src/skit/pep723.py
  • src/skit/promptform.py
  • src/skit/rewrite.py
  • src/skit/skills/skit/SKILL.md
  • src/skit/store.py
  • src/skit/theme.py
  • src/skit/tokens.py
  • src/skit/tui.py
  • src/skit/tui_add.py
  • src/skit/tui_footer.py
  • src/skit/tui_form.py
  • src/skit/tui_health.py
  • src/skit/tui_layout.py
  • src/skit/tui_pathpick.py
  • src/skit/tui_prefs.py
  • src/skit/tui_prompt.py
  • src/skit/tui_runner.py
  • src/skit/tui_settings.py
  • src/skit/uvman.py
  • tests/conftest.py
  • tests/test_add_feedback_contracts.py
  • tests/test_add_lane_contracts.py
  • tests/test_add_no_source.py
  • tests/test_add_review_contracts.py
  • tests/test_add_review_validation.py
  • tests/test_add_validation_contracts.py
  • tests/test_agent_install.py
  • tests/test_agent_skill.py
  • tests/test_agentskill_mut.py
  • tests/test_analysis_mut.py
  • tests/test_analyzer.py
  • tests/test_analyzer_signals.py
  • tests/test_argspec.py
  • tests/test_argspec_click_typer.py
  • tests/test_argspec_mut.py
  • tests/test_argstate_mut.py
  • tests/test_argv_text.py
  • tests/test_atomic.py
  • tests/test_atomic_mut.py
  • tests/test_base_mut.py
  • tests/test_benchmarks_tooling.py
  • tests/test_brace_delivery_cov.py
  • tests/test_callmatch.py
  • tests/test_cli.py
  • tests/test_cli_cov.py
  • tests/test_cli_design_cov.py
  • tests/test_cli_gaps_cov.py
  • tests/test_cli_mut.py
  • tests/test_cli_mut_part01.py
  • tests/test_cli_mut_part02.py
  • tests/test_cli_mut_part03.py
  • tests/test_cli_mut_part04.py
  • tests/test_cli_mut_part05.py
  • tests/test_cli_mut_part06.py
  • tests/test_config.py
  • tests/test_config_cmd.py
  • tests/test_config_mut.py
  • tests/test_corpus.py
  • tests/test_declared_params.py
  • tests/test_default_name_resolution.py
  • tests/test_default_semantics_review_fixes.py
  • tests/test_dependency_command_contracts.py
  • tests/test_dependency_write_validation.py
  • tests/test_draft_and_reader_tui.py
  • tests/test_draft_inference_and_reader_cli.py
  • tests/test_edit.py
  • tests/test_editor.py
  • tests/test_effective_uv_metadata.py
  • tests/test_entrypoint.py
  • tests/test_exec_cov.py
  • tests/test_exec_mut.py
  • tests/test_fish.py
  • tests/test_fish_analyzer_mut.py
  • tests/test_fish_cli_reader_mut.py
  • tests/test_flows.py
  • tests/test_flows_mut.py
  • tests/test_forms_cov.py
  • tests/test_healthcheck.py
  • tests/test_hermeticity.py
  • tests/test_i18n.py
  • tests/test_i18n_mut.py
  • tests/test_ime_input.py
  • tests/test_inlineform_mut.py
  • tests/test_interpreters.py
  • tests/test_js_analyzer.py
  • tests/test_js_analyzer_mut.py
  • tests/test_js_cli_reader_mut.py
  • tests/test_js_deps.py
  • tests/test_js_deps_mut.py
  • tests/test_js_inject.py
  • tests/test_js_inject_mut.py
  • tests/test_kindnames.py
  • tests/test_langs.py
  • tests/test_launch_mut.py
  • tests/test_launcher.py
  • tests/test_launcher_fix.py
  • tests/test_launcher_mut.py
  • tests/test_metawriter.py
  • tests/test_metawriter_mut.py
  • tests/test_mutation_gate.py
  • tests/test_packaging.py
  • tests/test_params_edit.py
  • tests/test_params_model.py
  • tests/test_params_mut.py
  • tests/test_path_tui.py
  • tests/test_path_type.py
  • tests/test_pep723_mut.py
  • tests/test_pep723_split.py
  • tests/test_phase1.py
  • tests/test_powershell.py
  • tests/test_presets.py
  • tests/test_prompt_cli.py
  • tests/test_prompt_kind.py
  • tests/test_prompt_tui.py
  • tests/test_prompt_utf8.py
  • tests/test_promptform_mut.py
  • tests/test_ps_cli_reader_mut.py
  • tests/test_py_analyzer_mut.py
  • tests/test_raw.py
  • tests/test_reconcile.py
  • tests/test_registry_mut_part01.py
  • tests/test_registry_mut_part02.py
  • tests/test_registry_mut_part03.py
  • tests/test_registry_mut_part04.py
  • tests/test_registry_mut_part05.py
  • tests/test_registry_mut_part06.py
  • tests/test_registry_mut_part07.py
  • tests/test_registry_mut_part08.py
  • tests/test_registry_mut_part09.py
  • tests/test_rename.py
  • tests/test_reset_default_ui.py
  • tests/test_residual_cov.py
  • tests/test_residual_gaps_cov.py
  • tests/test_residual_mut.py
  • tests/test_review_fixes.py
  • tests/test_rewrite.py
  • tests/test_rewrite_mut.py
  • tests/test_run_set.py
  • tests/test_settings_and_draft_review_atomicity.py
  • tests/test_shell_analyzer.py
  • tests/test_shell_analyzer_mut.py
  • tests/test_shell_cli_reader_mut.py
  • tests/test_shell_getopts.py
  • tests/test_shell_inject.py
  • tests/test_shell_inject_mut.py
  • tests/test_shell_normalize_mut.py
  • tests/test_shim.py
  • tests/test_shim_mut.py
  • tests/test_show.py
  • tests/test_show_mut.py
  • tests/test_source_default_semantics.py
  • tests/test_store.py
  • tests/test_store_cov.py
  • tests/test_store_fix.py
  • tests/test_store_launch_cov.py
  • tests/test_store_mut.py
  • tests/test_template_context_quoting.py
  • tests/test_tokens.py
  • tests/test_tui_add_cov.py
  • tests/test_tui_add_draft_cov.py
  • tests/test_tui_add_mut_part01.py
  • tests/test_tui_add_mut_part02.py
  • tests/test_tui_add_mut_part03.py
  • tests/test_tui_add_mut_part04.py
  • tests/test_tui_add_mut_part05.py
  • tests/test_tui_core_cov.py
  • tests/test_tui_cov.py
  • tests/test_tui_edit.py
  • tests/test_tui_form_mut.py
  • tests/test_tui_health_mut.py
  • tests/test_tui_mut.py
  • tests/test_tui_mut_part01.py
  • tests/test_tui_mut_part02.py
  • tests/test_tui_mut_part03.py
  • tests/test_tui_mut_part04.py
  • tests/test_tui_mut_part05.py
  • tests/test_tui_mut_part06.py
  • tests/test_tui_mut_part07.py
  • tests/test_tui_mut_part08.py
  • tests/test_tui_mut_part09.py
  • tests/test_tui_mut_part10.py
  • tests/test_tui_nav.py
  • tests/test_tui_prefs_agents_cov.py
  • tests/test_tui_prefs_health_cov.py
  • tests/test_tui_prefs_mut.py
  • tests/test_tui_responsive.py
  • tests/test_tui_runner_cov.py
  • tests/test_tui_settings_cov.py
  • tests/test_tui_settings_launch_cov.py
  • tests/test_tui_settings_mut_part02.py
  • tests/test_tui_settings_mut_part04.py
  • tests/test_uv_metadata_unpinning.py
  • tests/test_uv_metadata_views.py
  • tests/test_uvman.py
  • tests/test_uvman_mut.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

t41372 commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

Progress checkpoint — PR #44 intake

  • Read HANDOFF.md and the Python-port ledger. The current implementation baseline has 243 explicit parity contracts left.
  • Audited PR test(port): continue Python parity at stateful boundaries #44. It is a test-only draft with more than 570 commits and about 45,000 added test lines.
  • A fast-forward is not possible. Both branches diverged after 8687325.
  • Created and pushed integration/pr44-20260812.
  • Merged the pinned PR test(port): continue Python parity at stateful boundaries #44 snapshot 92e38e0 as the second parent in fe71836.
  • Kept the full snapshot separate because PR test(port): continue Python parity at stateful boundaries #44 intentionally contains red parity tests and global gates that conflict with this branch's green fix-loop.
  • Fixed two imported test-infrastructure compile blockers on the integration branch.
  • Started a full workspace compile-only test build.
  • Two independent audits are selecting the first coherent green test batch to import into this PR.

The next update will record the selected paths, validation results, and import commit.

t41372 commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

Progress checkpoint — first PR #44 batch imported

Imported commit: 184726d test(port): import parser mutation contracts from PR 44

Contents:

  • 6 new skit-form mutation-exact suites.
  • 61 executable Python oracle tests:
    • argspec: 3
    • Fish CLI reader: 8
    • JavaScript analyzer: 5
    • JavaScript CLI reader: 10
    • shell analyzer: 30
    • shell CLI reader: 5
  • 6 exact-name and blocked-contract manifests in skit-cli.
  • 1,054 test-only lines. No production or Cargo changes.

Validation:

  • Targeted skit-form tests: 61 passed.
  • Targeted CLI manifests: 6 passed.
  • cargo fmt --all --check: passed.
  • Clippy for skit-form and skit-cli-rs, all targets and features, warnings denied: passed.
  • Existing explicit parity count: still 243.
  • Full workspace test did not complete green. It stopped at the existing benchmark test process_timeout_terminates_the_complete_descendant_tree. The exact rerun failed again with timeout waited for a descendant that inherited a capture pipe. The imported files do not touch skit-benchmarks.

PR #44 is now paused at 6c5a408. Its final increment is merged into integration/pr44-20260812 at dc259dc.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 2026-08-12 (JS dependency fix pass)

  • Landed 54bf6c6: preserve JavaScript/TypeScript external dependency first-seen order and ignore empty dependency requirements when building the private manifest.
  • Closed and unignored 6 executable Python-v0.4 contracts in port_test_js_deps.rs (4 scanner-order + 2 empty-requirement cases).
  • Updated the authoritative ledger in 81c99e7; explicit FAILING CONTRACT attributes are now 237 (down from 243).
  • Validation passed: full skit-language and skit-runtime all-target/all-feature suites; port_test_js_deps = 42 passed, 0 failed, 109 ignored; targeted Clippy with warnings denied; formatting clean.
  • The broader language suite found three stale sorted-order assertions; they now assert the v0.4 first-seen order.

PR #44 remains pinned at paused head 6c5a408. Its full snapshot is preserved on integration/pr44-20260812; the integration workspace compiles all tests with --no-run. I will continue to import only independently green test batches into this branch.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

PR #44 import checkpoint

Imported one additional independently green test-only batch from paused head 6c5a408:

  • 817f14c adds crates/skit-store/tests/port_test_atomic_state.rs.
  • 3 public state-boundary tests pass: replace failure removes its temporary file; a failed update releases the per-slug lock for reuse; Unix atomic replacement preserves an existing state file mode.
  • No production changes and no dependency changes. The file is new and these test functions do not duplicate existing coverage.
  • Validation: exact target 3 passed / 0 failed / 0 ignored; format clean; targeted Clippy with warnings denied passed.

Only the final file blob was imported. PR #44 deletions, global gates, and unfinished red contracts remain isolated on the integration branch.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 2026-08-12 (mirror fix + reviewed PR #44 slices)

Parity fix:

  • c3e02b8 makes empty mirror environment variables behave as unset, while any nonempty alias still takes precedence.
  • Closed 3 contracts: npm registry, Python index, and Python install mirror. Explicit FAILING CONTRACT count is now 234.
  • bc3fae2 updates the ledger and handoff.
  • Validation passed: full skit-store all-target/all-feature suite; port_test_config 57 passed / 6 ignored; port_test_js_deps 43 passed / 108 ignored; targeted Clippy clean.

Reviewed imports from paused PR #44 head 6c5a408:

  • 817f14c: 3 atomic state boundary tests.
  • 7fcc177: only the 2 non-duplicate boolean parameter-edit guards from a 7-test PR file; the five duplicated cases were intentionally omitted.
  • Both batches are test-only, green, format-clean, and Clippy-clean.

Four reviewed PR #44 waves now contribute 82 executable tests plus 6 completeness manifests on this branch. The full unfinished snapshot remains isolated on integration/pr44-20260812.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Implementation checkpoint 2026-08-12

Four additional parity-fix clusters landed, primarily implemented and verified by delegated agents:

  • 6aedb9b: reference JS/TS add skips implicit dependency scanning; explicit --dep still refuses before create. Closed 1 contract.
  • 05e8b9d: exact npm/bun/deno installer argv plus unknown-runner npm fallback. Closed 2 contracts.
  • dc770fc: oracle-exact reference-mode dependency refusal voices, including complete EN/zh-CN/zh-TW catalog rows. Closed 3 contracts.
  • f8f80f5: trim explicit add --python; case-insensitive -/none remain explicit automatic constraints. Closed 2 contracts.
  • 9fcddaf corrects one old CLI sibling that still expected unknown JS runners to fail instead of falling back to npm.

Explicit FAILING CONTRACT attributes are now 226 (down from 234 at the previous checkpoint and 243 at takeover). The JS deps target is 49 passed / 0 failed / 102 ignored; add-validation is 16 passed / 0 failed / 15 ignored. Full CLI, runtime, i18n, targeted Clippy, formatting, and the add slice Rustdoc gates passed in their respective clusters. Handoff and ledger were refreshed in 9216804.

The earlier benchmark timeout is not currently reproducible: 126 exact, parallel, and complete-binary reruns all passed. Source history also rules out the recent imports/fixes. Evidence points to a scheduler-sensitive <200ms test assertion; a test-only hardening is being prepared while retaining the real timeout and descendant-marker contract.

PR #44 remains safe to continue from 6c5a408; no new remote commits were visible at the last poll.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Data-safety checkpoint

  • cc0ead1 closes 4 JavaScript dependency cleanup contracts. Explicit clear now transactionally removes package.json, installer lockfiles, node_modules, and skit stamps without relying on the old generated-manifest ownership heuristic.
  • Symlinked node_modules removes only the link; rollback/recovery and unrelated entry files remain protected.
  • Legacy .injected-* files are swept best-effort only when strictly older than one hour. Fresh files and files exactly at the cutoff survive; the port fixture was corrected to carry the oracle old mtime.
  • Validation passed: full runtime and CLI suites; port_test_js_deps 54 passed / 0 failed / 98 ignored; format; runtime+CLI Clippy; workspace Rustdoc.
  • Four additional stale PEP refusal ignores were enabled in 8cf75fe, and the benchmark descendant-timeout test was hardened without production changes in 08046bd.

Explicit FAILING CONTRACT count is now 218, down from 243 at takeover. Handoff and ledger are current at cc0ead1.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 2026-08-12 (continued handoff work + PR #44 sync)

Production parity fixes since the previous checkpoint:

  • d7575c5: dependency-free JS/TS module manifests are exact {private,type} bytes, same content is not rewritten, and no installer/stamp is created. Closed 3 contracts.
  • 2c1f6ef: prompt runner overrides trim; only successful actual choices update last-runner state across CLI/plain/enhanced paths. Closed 1 contract.
  • f1dc3c7 + 7e53da4: imported the PR test(port): continue Python parity at stateful boundaries #44 i18n replacement and fixed catalog uniqueness/Library terminology plus v0.4 empty-language clear and recoverable corrupt-config backup behavior. Core 27/27 and config 7/7 pass.
  • 07dfbce: prompt placeholders use Unicode XID scan/render while command identifiers remain ASCII; decomposed identifier bytes are preserved. Closed 3 contracts.
  • a9e1452: exact v0.4 shell/command --dep and stdin --ref refusal wording with EN/zh-CN/zh-TW E2E coverage. Closed 3 contracts.
  • cd196c9: corrected the old sibling distinction between an empty config value (clear) and an empty locale tag (invalid as a tag).

Reviewed PR #44 imports:

  • 606c716: packaging replacement, 3 executable + 2 manifest tests green after correcting the TOML 1.1 test harness.
  • 5d3c303: i18n manifest accounting green after the production fixes above.
  • PR test(port): continue Python parity at stateful boundaries #44 advanced to 3d437a1 (57/84 behavior modules; 1,116/3,018 Python contracts). Its ancestry is merged and pushed on integration/pr44-20260812 at 0320efd; workspace --no-run passes.
  • Responsive replacement currently proves 11 green / 6 genuine production gaps, with manifest 2/2 and Clippy green. It remains isolated while those six TDD clusters are fixed; no deliberate-red global gate was copied to this branch.

Explicit FAILING CONTRACT attributes are now 207, down from 243 at takeover. Handoff and ledger are current.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 2026-08-12 (JS dependency + responsive closure)

  • 219a136: closed the last 4 explicit JS dependency implementation contracts. Manifests now preserve oracle bytes/order/parser semantics; installs run in the entry directory; the 64-byte SHA-256 marker lives under node_modules; fresh and missing-installer ordering match v0.4. The Rust persistent-lock backup transaction still restores partial/crashed installs. port_test_js_deps is 64 passed / 0 failed / 88 classified ignores, with no remaining FAILING CONTRACT in that target.
  • 459765a imported the full responsive replacement as active TDD-red tests. 462aa9e, ef7c1ef, 061d29c, and 9238165 fixed detail pinning, compact modal controls, short Search, and narrow Preferences. The result is 17/17 executable plus manifest 2/2.
  • Combined responsive validation passed: full skit-tui and skit-ui all-target/all-feature suites, targeted CLI siblings, format, Clippy with warnings denied, and Rustdoc.
  • PR test(port): continue Python parity at stateful boundaries #44 integration is preserved and pushed through 2941a65 at integration commit 482cdf80: 59/84 behavior modules and 1,156/3,018 Python contracts. The newer uvman batch remains under classification; it was not copied to this branch as a claimed-green batch.
  • Explicit FAILING CONTRACT attributes remain 201. Handoff and ledger are updated at b5c4c9f.

Next cluster is the add-time unknown prompt-runner refusal (3 exact contracts), already audited red against the v0.4 oracle and delegated for TDD implementation.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint add-time prompt runner parity:

  • 3d43a40 closes 3 exact v0.4 contracts. Explicit unknown prompt runners now return exit 2 with Unknown runner: … Configured runners: …, preserving configuration order.
  • The refusal still happens before any draft, editor invocation, or entry write. Existing run/settings voices were not broadened.
  • TDD evidence: all three exact contracts were red only at the old message and are now green. Full port_test_prompt_cli is 63 passed / 87 ignored; port_test_add_lane_contracts is 14 / 7; surface_edges, full CLI, full i18n, format, workspace Clippy with warnings denied, and workspace Rustdoc with warnings denied passed in the isolated worktree.
  • Explicit FAILING CONTRACT markers are now 198. Handoff and ledger are updated at 786b4b1.

The full local workspace aggregate is being rerun with isolated state. The first two failures were environment-only: the managed sandbox made the default state directory read-only and forbade a loopback TcpListener; exact product tests pass when those capabilities are available.

Comment thread .github/workflows/benchmark-compare.yml Fixed
Comment thread .github/workflows/benchmark-compare.yml Fixed
Comment thread .github/workflows/benchmark-compare.yml Fixed
Comment thread .github/workflows/benchmark-compare.yml Fixed

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint:

  • 157f9b7 closes the two bare noninteractive add-lane contracts. A piped or --no-input bare skit add now gives the exact v0.4 EN/zh-CN/zh-TW advice and names only lanes that work without a terminal. It no longer recommends --edit, which would cause a guaranteed second refusal.
  • Both exact contracts and the full target pass: port_test_add_no_source is 19 passed / 49 classified ignores, with 11 explicit divergences remaining.
  • Full CLI, full i18n, format, workspace Clippy with warnings denied, and workspace Rustdoc with warnings denied passed in the isolated implementation worktree.
  • Explicit FAILING CONTRACT markers are now 196. Handoff and ledger are updated at e4a515a.

PR #44 test-only integration also advanced: 740259f is preserved by ordinary merge ed99ffc on integration/pr44-20260812; full workspace all-target/all-feature --no-run passes. That pinned snapshot accounts for 64/84 modules and 1,318/3,018 Python tests.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint:

  • c2187b7 closes the exact --edit --no-input refusal contract. The EN/zh-CN/zh-TW message now explains why editor launch is forbidden and gives the working skit add - -n NAME spelling.
  • The port contract and its existing sibling now assert the full oracle message rather than a weak substring.
  • Full add-lane target: 15 passed / 6 ignored. Full add lanes, CLI, i18n, format, workspace Clippy, and workspace Rustdoc pass.
  • Explicit FAILING CONTRACT markers are now 195. Handoff/ledger are updated at fdea1db.

PR #44 PowerShell classification is intentionally not imported yet: application 1/1 and manifest 2/2 pass, but form is 18/19. The red contract shows a real production gap: an unknown static PowerShell type degrades to free text but loses its boolean default. The proposed replacement also duplicates many existing language-layer exact names, so it needs product repair plus honest global deduplication before mainline import.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint:

  • affa5b2 closes 4 shebang-derived Python pin announcement contracts. When no explicit --python and no PEP 723 metadata override the source, a versioned Python shebang now emits the exact EN/zh-CN/zh-TW v0.4 note and persists the inferred requires-python.
  • Explicit Python constraints and existing PEP 723 metadata remain silent and authoritative.
  • Full add-feedback, draft-inference, CLI, i18n, format, Clippy, and Rustdoc gates pass.
  • Explicit FAILING CONTRACT markers are now 191. Handoff and ledger are current at 2c5762e.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

PowerShell reviewed import is now complete without duplicate test inflation:

  • c2ec8b6: readable PowerShell scalar defaults are decoded from the AST literal's runtime shape independently from the static-type fallback. Unknown static types stay degraded, while integer/float/Boolean/string defaults retain their values. Null, non-scalar, and dynamic expressions stay unset.
  • 51494e0: the existing language port remains the unique owner of semantic names; application owns 1 delivery contract and form owns 2 plan contracts. The manifest scans all three crates and rejects duplicate, missing, unexpected, and active/closed-overlap names.
  • Frozen accounting is exactly 20 executable + 15 architecture-closed = 35. The PR test(port): continue Python parity at stateful boundaries #44 replacement's 17 duplicate form semantics were not copied.
  • Full application/form/language/CLI all-target/all-feature tests, Clippy with warnings denied, Rustdoc, format, and exact manifests pass.

Explicit implementation FAILING CONTRACT markers remain 191 because this repaired an active-red PR #44 replacement test rather than an ignored mainline contract. Handoff/ledger are current at 159e245.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint:

  • 45516b3 closes 3 prompt token grammar contracts. Analyzer and renderer now share the v0.4 token bounds: brace-adjacent/triple-stache spellings are literal, and reserved {{prompt}} is never offered or substituted, even if stale managed values exist.
  • Full prompt-kind (115 tests), language, CLI, format, workspace Clippy, and workspace Rustdoc pass.
  • Explicit FAILING CONTRACT markers are now 188. Handoff and ledger are current at cbb8eab.
  • PowerShell accounting remains 20 executable + 15 architecture-closed with global uniqueness, and its scalar-default production fix is recorded separately.

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

PR #44 integration checkpoint:

  • Fixed pin 6168183 was merged with ancestry preserved at 0b36bf7; the integration branch then added 17e9ab0 to restore the authoritative frozen denominator.
  • The upstream denominator change to test_store.py = 60 / total 3000 was incorrect. Oracle 206f9ef contains 78 def test_ functions in tests/test_store.py; the 84-module total remains 3,018. The blocking finding is recorded on PR test(port): continue Python parity at stateful boundaries #44.
  • Fish and JS conflicts were resolved by preserving the already audited complete exact-name ports and adding only the new row-split rust_additive_* tests. Store/executable-target files merged cleanly.
  • Full workspace all-target/all-feature --no-run passes. Remote integration/pr44-20260812 points to 17e9ab0 and is clean.
  • Do not import or cite 0b36bf7 alone; use corrected integration tip 17e9ab0.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 85f84b7: imported the reviewed green owner-replacement slice from PR #44. The main branch now executes 9 test_store.py inference contracts in skit-language and 1 executable-target contract in skit-runtime, and removes the corresponding 9 architecture placeholders from the old store port. Exact targets are green (9/9, 1/1, and the remaining store owner 34 passed / 35 classified ignores); format is green. Duplicate membership tests, weak disk tests, and all red store/index/add batches remain excluded. This does not reduce the explicit implementation backlog, which remains 188.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 059e24b (docs through 90d5038): closed one more Python v0.4 parity contract. Raw malformed prompt-runner rows now preserve an explicit blank name for diagnostics, while runners() still excludes them and CLI/TUI projections still treat them as anonymous. TDD proved the old None != Some(\"\") divergence; the exact contract, owning store regression, full store suite, full CLI suite, format, workspace Clippy, and workspace Rustdoc pass. The explicit backlog is now 187 (99 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

PR #44 sync checkpoint: pinned 346acb6 and merged it with preserved ancestry into integration/pr44-20260812 at 72ae403. Workspace all-target/all-feature compilation passes; accounting remains 64/84 and 1,318/3,018 with test_store.py=78. The audit found a red false-negative strength gate and 17 manifest tests that only assert their own array lengths, so those are isolated from main. Main imported only the formatted, unique forced---exe executable contract as 769089a; Windows PATHEXT tests await native Windows verification.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 0996295: closed the three run --raw conflict contracts. --set, --preset, and --save-preset now use the exact v0.4 EN/zh-CN/zh-TW guidance; typed Usage exit 2, empty stdout, refusal ordering, and no last-run/preset write were already correct and remain unchanged. port_test_run_set is 15 passed / 12 classified ignores; full CLI, i18n, format, workspace Clippy, and workspace Rustdoc pass. Explicit backlog: 184 (102 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 796a5d1: field-less run --save-preset now reuses the exact named v0.4 refusal already used by standalone preset save. The noninteractive and interactive paths carry the entry display name through the typed error; exit 2 and the no-preset/no-last-run guarantees remain unchanged. port_test_run_set is 16 passed / 11 classified ignores; full CLI, format, workspace Clippy, and workspace Rustdoc pass. PR #44 also contributed one non-duplicated prompt mutator row, folded into the existing test as db7f7f5 without changing accounting. Explicit backlog: 183 (103 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 0b8bf2d (after 18ec1a0): closed three more run contracts. --set trims only the key and preserves value bytes; implicit saved extra arguments now emit the exact localized v0.4 notice, while raw, explicit-tail, and forget paths remain silent. The exact tests, full run-set (18/9), full CLI port (82/58), full CLI suite, i18n/catalog, format, workspace Clippy, and workspace Rustdoc pass. Explicit backlog: 180 (106 closed). PR #44 is separately integrated through fixed af05498 at cdae0a9; that increment has no raw green mainline batch due failing/duplicate manifests, 6 JS-inject reds, and rustfmt failures.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 27bbb4b: closed all three remaining --set name-shape contracts. Interactive and noninteractive run paths now share one parser: malformed items are collected in input order and take priority; unknown names are deduplicated and sorted; valid names are sorted or shown as ; values change only after the full batch validates. Exact contracts, owning atomicity units, port_test_run_set 21/6, full CLI, i18n/catalog, format, workspace Clippy, and workspace Rustdoc pass. Explicit backlog: 177 (109 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Reviewed PR #44 JS-injection import af90a10: the upstream 14-test file was not copied wholesale. Main now owns only three faithful, non-duplicate contracts—TypeScript temp suffix, Unix 0600 mode, and bad-value refusal before launch—and removes/relabels their old language stubs/byte-only owner. Linux CLI+language suites, format, workspace Clippy, and workspace Rustdoc pass. A Windows .cmd/PATHEXT shim is included for the cross-platform cases; native Windows runtime validation remains pending because this container lacks the external MSVC C toolchain. The six upstream reds, duplicate flavor rows, weak offline-plan test, drift setup bug, and missing gate-2 behavior remain excluded.

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 33d9a4a: the shared run-value validator now emits the exact localized form voice for invalid typed values. This closed three stale contracts across run-set, prompt extra-argv, and the general run lane. All three exact tests, their full port targets, application full, workspace full tests, format, Clippy, and Rustdoc pass. The dry-run injection masking contract remains isolated. Explicit backlog: 174 (112 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint b439a5e after 7bc5c5a: test_run_set.py now has zero explicit implementation divergences (23 executable green; 4 interactive/cross-crate classifications). Dry-run prints only masked injection transparency and has regression coverage proving no state write, source change, plaintext leak, or .run-* staged file. Malformed runner containers also use the exact localized recovery voice without changing machine tokens. Full workspace gates for both clusters, CLI/application suites, format, Clippy, and Rustdoc pass. Explicit backlog: 172 (114 closed).

@t41372

t41372 commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint 0f1fdd9 after 6189684 and 19cc2ff: entrypoint and test_prompt_kind.py now have zero explicit implementation divergences. Eager completion actions outrank --version; compound .prompt.md names derive the v0.4 slug; missing prompt payload/read failures become localized Not Found (127) before any dry-run output. Five contracts closed. Exact and full prompt targets, entrypoint, workspace all-targets/features, format, Clippy, and Rustdoc pass. Explicit backlog: 167 (119 closed).

t41372 added 13 commits August 23, 2026 09:36
…eview

The review panel now prints a guidance line under the dependency and
Python fields, which costs two rows. The panel scrolls, so every control
stays reachable, but this owner reads one drawn screen and its last
assertions sat below the fold at 24 rows. The terminal is 32 rows now, so
the owner keeps asserting that the panel draws its controls.
The confirmation stage read its draft from a candidate the confirm
action moved out, so the stage outlived the data that describes it. A
frontend that draws while the host performs the delete reached a
confirmation with no draft to name, and the screen fell back to
"Remove this entry:" — the entry-removal modal's sentence, which is
wrong for a kept draft twice over: a draft is a file, and that wording
never says the copy is the only one.

The candidate now ends exactly when its stage ends: the confirm action
clones it, and the outcome that returns to the source stage clears it.
The screen therefore always has a draft to name, so the fallback arm is
gone and the confirmation rows move into their own builder beside the
other stage builders. The catalog row stays: the entry-removal modal
still owns that sentence.
Six genuine string absences of forty, two of them real defects, the
tiers confirmed against the oracle's CSS, a colour owner that now reads
style state instead of bytes, and a reducer invariant the coverage gate
exposed through an unreachable fallback.
Six of forty packaged strings were genuine absences, and two of those
were real defects: a draft confirmation that called a file an entry, and
a dependency fence that rendered its Python requirement as an empty
list. Record the disproved package, the tiers matching exactly, and the
freeze the mutation matrix needs.
A terminal reports Shift for an upper-case letter but not for a shifted
symbol. The exact modifier comparison made the advertised ? Help key
dead. A character binding now ignores the Shift flag at the one shared
matching seam. The positive keyboard tests now drive every character
case through both terminal shapes, and a spec-derived test holds the
rule for every context.
Version 0.4 clips a half-scrolled widget row by row inside the Textual
scroll compositor. The settings screen instead drew a complete fresh
bordered control into the viewport remnant, so a false top border
appeared and the value row vanished while it was on screen. A cut
control now draws at full height into a scratch buffer and keeps only
the visible band, with hit regions and the cursor mapped through the
same band. The line-input and textarea painters gain buffer-level
cores so the scratch path and the frame path share one body.
The recorded walkthrough saw the initial selection flip between two
runs. A 200-iteration probe against a seeded library shows the surface
build and the reducer are pure functions of their inputs, in the tie
case too: activity descending, ties keep the ascending slug order, and
the cursor starts on the first row — the exact stable-sort semantics of
version 0.4 (src/skit/tui.py:394, src/skit/store.py:860). The flip was
input noise in the recording stack, not product state. This test holds
the contract.
Version 0.4 deletes the highlighted draft with no activation step
(OptionList.highlighted, src/skit/tui_add.py:481-490). The port armed
the ask only after a draft was activated, so Ctrl+D and the chip did
nothing on a row the keyboard had merely focused. A focus landing on a
draft row now reports a HighlightDraft action, which marks the row
without touching the source path. Activation keeps its extra step of
pointing the source path at the draft.
The zh add receipts drifted from the oracle .po: the verb (已加入, not
已添加/已新增), the ASCII colon and parentheses, 描述 for Description,
管理中的参数 for Managed parameters, and the 的 in the secrets note.
Both locales now carry the oracle strings verbatim, a catalog test
holds the whole receipt block against the .po, and the unused
'Added: {} ({})' row is gone.
Version 0.4 renders the discard ask as one question inside an untitled
border (src/skit/tui_settings.py:42-65). The panel repeated the
question as its title; the title is gone and the screen header keeps
naming the surface. The modal strings also drifted from the oracle
.po: Discard is the bare verb (放弃/放棄) and the question has no
要…吗 wrapper. A catalog test holds the set.
The clipped-cursor branch now has a tiny-viewport owner: a two-row
viewport cuts the focused three-row input and the cursor must land on
the visible content row. The options truncation guard is gone — both
render paths size the rect from control_height, so the guard was dead
after the scratch-buffer change. The draft-chord test asserts the
event by equality instead of a never-taken panic arm.
@t41372 t41372 removed the mutation-requested Run the sharded cargo-mutants matrix on this pull request label Aug 24, 2026
t41372 added 13 commits August 23, 2026 18:54
…eeds

cargo-mutants 27.1.0 calibrates the automatic timeout from a baseline that
tests only the shard's mutated package, while test_workspace = true makes
every mutant run the full workspace suite. The derived 20 s budget then
times out honest 95 s runs: 5,719 of the 9,877 mutants in run 32655362435
were never adjudicated. An explicit --timeout 300 replaces the automatic
calibration, a contract rejects the return of the automatic knobs, and the
matrix grows to 64 shards so the slowest shard class keeps a 31% margin
under the 6 h job ceiling.
…mplete-20260808-codex

# Conflicts:
#	HANDOFF.md
The walkthrough tapes were written in a throwaway harness. They now live beside demo.tape and
shots.tape, with docs/assets/demo/record_walkthrough.sh to record them across en, zh-CN, and
zh-TW. A new pep723.py demo fixture declares an empty PEP 723 dependency list, so the add
review reads that block instead of guessing from the imports.

Three tapes changed because the behaviour they record changed. Help is now a real scene: `?`
opens the overlay, Esc closes it, and `q` does nothing while it is open, so the tape closes the
overlay before it quits. The drafts tape no longer activates a draft row before Ctrl+D, because
the delete arms from keyboard focus. The `Up 4` comments no longer claim the library order is
unstable, because it is sorted by activity and then by slug. settings-clip.tape replaces the
harness bug tape and now records the fix rather than the defect.

The frames are deliberately NOT tracked. Two runs of one tape do not agree, and the
disagreement is in the capture stack rather than in skit: an earlier round measured 8 unstable
frames of 19, this round measured 9 of 20, and the two unstable sets are not the same frames. A
screenshot can raster a neighbouring beat, a torn composite of two beats, or a blank
inter-frame, while the emulator text grid and the mp4 are correct at every beat. A committed
frame would therefore fail for a reason that has nothing to do with the product. What carries
the guarantee instead is the Wait pattern on every transition: it reads the text grid, and a
Wait that fails prints the screen and stops the tape. The tracked baseline is unchanged: the 12
docs/assets/tui-*.png files that shots.tape produces and the READMEs reference.
All 21 matrix rows are complete at the release head. Full mutation
adjudication moves to issue #47 by owner decision: the pipeline fix
ships here, and the follow-up runs the 64-shard matrix to zero
survivors. HANDOFF.md was the agent working document, not product
documentation, so it leaves the tree with the work finished.
@t41372
t41372 marked this pull request as ready for review August 25, 2026 05:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants