3 Commits

Author SHA1 Message Date
Paulo Aboim Pinto
e159f577c7 fix(FEAT-015): close command extraction boundary gaps
Delegate capability mutations through authoritative App operations, bridge portable RegisterCommand metadata into the TUI registry, and enforce monotonic migration-frontier transitions against the baseline revision.
2026-08-18 13:39:59 +02:00
Paulo Aboim Pinto
17e2925491 feat(FEAT-015): add AST-resolved source scan to migration gate
Task 3.5/3.6 - live bidirectional frontier/source verification.

- Structural Rust item parser (pure stdlib): free functions, inherent
  methods, trait-impl methods with qualified item paths (module layout
  derived); brace/paren/generic aware; comment+string blanking
- Concrete-App detection on first parameter type (&mut App /
  &mut crate::tui::app::App)
- Bidirectional frontier check: pending group covers all its handlers;
  documented split requires ALL slices pending with handlers; stale
  removal (handler remains but group not pending), stale entry (pending
  group with no handler), and partial split all fail with diagnostics
- Selector resolution: checked-in selector records resolve to exactly
  one source item with a concrete-App signature; missing/ambiguous fail
- 8 new hermetic source-scan fixtures (47 total): parse free/trait/
  inherent, non-App ignored, missing file, matching frontier, cheating
  removal, stale entry, live source agreement

Verified: test_check_command_migration_manifest.py 47/47 OK; live gate
PASS (frontier exactly matches source; all nine groups pending);
fmt/contract/boundary/clippy all green.

Generated with Claude Code
2026-08-18 00:21:06 +02:00
Paulo Aboim Pinto
4ceb4eef3d feat(FEAT-015): add immutable migration topology, frontier, and schema gate
Task 2.3/2.4 - checked-in topology data and fail-closed schema/frontier fixtures.

- scripts/command-migration-topology.json: schema v1 topology with nine
  group roots; predeclared slices for session (lifecycle/control/export/
  structcopy), config (policy/main), debug (diagnostics/mutation), core
  (navigation/model-and-setup/coordination/policy); exhaustive, disjoint
  file scopes verified equal to each group scope; sorted unique frontier
- crates/tui/src/commands/contract.rs: PENDING_GROUPS TUI projection with
  sorted/unique/exact-coverage unit test; mod contract; wired in mod.rs
- scripts/check-command-migration-manifest.py: fail-closed validator for
  schema version, group/slice fields, selector records (free/inherent/
  trait_impl), type algebra (path/qualified/tuple/reference/pointer/slice/
  array/primitive/never), const atoms (bool/int/char/path) with canonical
  decimal magnitudes, byte range 0-255 diagnostics, frontier validity and
  shrink-or-documented-split transitions
- scripts/test_check_command_migration_manifest.py: 39 hermetic fixtures

Verified: python3 test_check_command_migration_manifest.py OK (39/39);
live gate PASS; TUI lib contract:: tests pass; fmt/clippy baseline intact.

Generated with Claude Code
2026-08-17 23:39:24 +02:00