Skip to content

P918: move current nominal declarations and preserve external schemas - #3614

Closed
trissim wants to merge 4 commits into
mainfrom
work/package-declarations--P918-current
Closed

trissim wants to merge 4 commits into
mainfrom
work/package-declarations--P918-current

Conversation

@trissim

@trissim trissim commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary in numbers

P918: 4 branch commits, 712 rename-aware files / 716 raw changed paths, +1039/-984 against included Core main 068c96371cc56c3059c324eb2597bdf29bd1f83a. Four flat defining modules become zero; one agent_comms.nominal package owns their definitions. 203 class declarations retained: family/discovery 9, codec 191, JSON schema 2, sealing 1. Four thousand relocated owner-source lines are not four thousand lines of deleted behavior.

Current Core: 2f510df6cc918008e30d0122962bb3bc623be8f3. Paired OpenHCSDev/toad#1330: 03da3d00b2a0b17b5c08534bede88f5f41ed9701, including ToAD main 0312fc46c684fa9d04db330fe62ac9967dc6d766 (95 files,+111/-111).

Preparation only. Core and ToAD must enter ONE paired integration batch; neither half can satisfy the consumer gate against the other package's unmigrated main. P918 stays last behind accepted overlapping features. No tests, builds, provider calls, installation, live-input replay or observation-key reannouncement by this author.

1. Actual defining owners and consumers

Before: agent_comms/{declared_family,field_codec,json_schema,sealed}.py defined the cluster; production, hooks, tests, tools and paired consumers imported those flat addresses.

After: the complete owner files live at agent_comms/nominal/. The initializer contains only a docstring. All four old files are deleted; no compatibility modules, reexports, fake __module__, second registry or second codec.

The initial current-main cut moved 941 Core import observations /703 files/50 lexical nested imports, plus 110 ToAD observations /94 files/5 nested imports. Conditional/local imports and module-object bindings retain their actual scope. Executable test/support strings, phase owner paths and the constructed DuplicatesPhase codec path move too. PackageDeclarationsPhase deliberately retains its old-path absence checks. Historical transcripts and audit fixtures remain historical, not executable compatibility consumers.

Three moved owners are byte-identical to their ordered base: declaration/discovery, JSON schema and sealing. Codec changes are its parent-relative annotation import and the description correction below. No class names, bases, registration declarations or wire selectors are renamed.

2. Shared lifecycle, discovery and sealing

FamilyMeta(AutoRegisterMeta, ABCMeta) still uses the existing RegistryConfig/LazyDiscoveryDict. Abstract and unnamed-member exclusion remains with the external metaclass. ModuleMembers._named_member retains its function-local reverse codec import at nominal/declared_family.py:290, as the order requires. Sealed keeps actual defining-module ownership; its implementations move with it.

Cold-process controls remain in tests/test_declared_family.py:210: both entry import orders, lazy family/ModuleMembers lookup, shared consumer identity, seal home, a new slots/MI family member, abstract exclusion, wire round-trip and schema acquisition. They are authored and unrun, not runtime proof.

3. Description correction: sixteen copies to one derivation

Before this correction, TextRepresentation read schema_description; fourteen Core production members, a test HexInteger and ToAD AgentKindText supplied literals. Those sixteen copies and the shared ClassVar declaration are now deleted.

After, TextRepresentation.schema() derives the description once:

return {"type": "string", "description": f"{cls.__qualname__} text"}

Every unspelled representation inherits that answer. SpelledText and members that already own genuinely different schema behavior keep it. The two former text_form() selectors remain deleted; no replacement selector/roster is added. ToAD AgentKindText and the test HexInteger require no description field.

tests/test_field_codec.py asserts literal "PathText text", not a computed copy of the implementation. This intentionally changes the earlier module-qualified description contract to class-qualified wording, per the latest review instruction. No claim that the old emitted descriptions are preserved. Encoding/decoding and family tag declarations are unchanged; descriptions/schema fingerprints still require root's qualification.

BOUND-8: fact=representation description; at=the removed per-member literals; derive=the existing TextRepresentation declaration; by=its shared schema method and Python's declared qualname.

4. Source evidence and honest limits

The retained complete scan/map remains the map; no corpus/detector scan per push. Initial ordered-base source preparation covered 1,188 Core +633 ToAD Python files, with zero selected parse omissions and zero executable old-address imports on that cut. Captured sibling source/package roots were screened for actual consumers: Textual 256 files, ui-theme 10, metaclass-registry 10, pinned audit skill 26, plus corresponding captured installed roots. Files without Core-name candidates were text-screened, not dynamically proved.

Existing evidence directory: /home/ts/.cache/agent-scratch/package-declarations/:

  • current-relocation-plan.json, current-source-closure.json: initial source cuts, scopes, owner/consumer observations and authored edit plan.
  • sequence-main-ast-{before,after}.json: 17 subsequently landed Core Python files retain main's non-import ASTs; one new test import moved to nominal.
  • restart-toad-ast-{before,after}.json: landed prompt behavior retained without a new migration edit; later landed test files match their main blobs.
  • schema-description-{before,after}.json: targeted existing eight-module description family, sixteen literals plus one annotation/read removed, zero remaining description-field sites; no product imports. schema-main-increment.json records the two newly landed commander-caller modules; their non-import ASTs match main after merging.
  • follow-main-{before,after}.json: the latest 16 landed Core modules, zero parse omissions/remaining old defining imports; 15 non-import ASTs equal main. The remaining phase-evidence module retains its already reviewed nominal owner-path relocation. The two new unit-talk imports are migrated; ToAD's landed CI behavior is retained.
  • follow-main-core-diff-stat.txt, follow-main-toad-diff-stat.txt: full current git diff --stat origin/main...HEAD output.
  • paired-747-client-match.{json,md}: exact debt-src job123786545713, all55 client-file rows;52 already changed in ToAD1330 and3 indirect consumers with no moved import. Also records actual UncarriedRecordFormat+3, which is not discharged by the paired-import explanation. P872 owns the required-key-order correction; no gate repair is smuggled into this migration.
  • four-commit-path-disposition.json: all four original commits' changed paths accounted for; the only deliberately omitted path is main's deleted owner_actions probe. The paired-client report gives each original commit's current file:line disposition.

Commands used the existing shared interpreter and NRA ModuleSyntaxIndex/PythonModulePathIdentity; inline source inventory/reproof exited 0. Earlier relocation scripts applied one revision/hash-checked authored batch and were deleted. No executable migration/scanner authority was added to the repository. The install interrupted three edit outcomes; their actual files were inspected before completing the remaining repair, without replaying uncertain inputs.

NRA symbol relocation does not discharge complete module-file lifecycle, module-object bindings, executable strings, sealing or lazy discovery. This is authored relocation informed by NRA source evidence, not native-codemod execution proof. Arbitrary computed imports/reflection and distributions outside inspected roots remain OPEN. Module-qualified comparison_digest content can change StandingRule observation keys; root owns the actual consequence/reannouncement check. Wire digest and family tags are distinct contracts.

5. Preserved history, remaining integration and qualification

Original Core #3576 and ToAD #1313 are closed as superseded, with replacement links. No branch or commit was deleted. Targeted old/current comparison found no unique migration work missing; the sole old-only changed path, installer/probes/owner_actions.py, was deleted by main 24a888254. Original checkpoints and the earlier unpublished local rebase remain retained.

This carrier was rebuilt from ordered Core 4c59ef34c /ToAD 4c3c4f3a, not mechanically rebased from the stale PRs. Reviewed initial preparation e84ac4531 /0cb21ad52 remains in ancestry. Landed mains are integrated normally; pending feature implementations and foreign worktrees are not copied.

Final consumer closure still follows accepted P957/P927/Core3566/ToAD1319, current P954/P958 corrections and other overlapping features. Their newly accepted imports must migrate on the final paired tree. Root owes current-head review, one combined cold identity/seal/discovery/codec/consumer selection, stored-format/schema and comparison-key assessment, then installed tool discovery and saved-session concurrent native replies/fresh-DM/open-tab-return qualification.

Assumed: latest class-qualified description instruction supersedes the earlier module-qualified wording requirement; source preparation is not merged/installed/working acceptance; all unresolved bindings and runtime obligations remain open.

sixteen labels described the class
the class already knew its name
the address book is deleted

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

debt-src at d76bc68, every finding:

grew ClientTypeErrors:batrachian-toad/src/toad/acp/agent_configuration.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/acp/agent_session.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/acp/log_records.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/acp/permission_controller.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/acp/sdk_boundary.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/acp/shell_command.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/agent_presentation.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/agent_schema.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/ansi/_ansi.py +35: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/application_actions.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/block_navigation.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/clipboard.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/conversation_kind.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/conversation_submission.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/conversation_turn.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/core/context_inspection.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/core/events.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/file_kind.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/frame_presentation.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/goal_interaction.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/inline_spans.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/input_history.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/line_blocks.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/markdown_links.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/mcp_declarations.py +3: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/mcp_outcomes.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/navigation_preparation.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/navigation_target.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/permission_presentation.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/plan.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/private_native_cursor.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/project_link.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/prompt_cursor.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/question_presentation.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/response_delivery.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/screens/comms.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/screens/workspace.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/session_entry.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/sidebar_layout.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/slash_command.py +8: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/surface_binding.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/tab_identity/__init__.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/tab_identity/history_origin.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/target_commands.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/terminal_attention.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/terminal_execution.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/tool_output.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/transcript_filter.py +2: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/transcript_state.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/widget_actions.py +8: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/widgets/comms_command_dialog.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/widgets/session_thread_panels.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/widgets/thread_comms.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/src/toad/workspace_sessions.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
grew ClientTypeErrors:batrachian-toad/tools/performance/history_capture_remote.py +1: this change removes or changes an agent_comms name that client file uses; run mypy on it to see which
::warning file=src/agent_comms/agent_activity.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/agent_backend.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/agent_event_updates.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/agent_events.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/agent_inbox.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/assignment_states.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/behaviour_patterns.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/build_identity.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/bus_route_counts.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/bus_source_page.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/bus_tables.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/change_report.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/channel_coding_tools.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/channel_management.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/channel_targets.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_bridges/codex_protocol.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_bridges/shared.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_commands.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_native_package.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_protocol.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cli_verbs/merge_review.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cohort_schema.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/connector_store.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/context_segments/awareness.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/context_segments/partner_activity.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/context_segments/relationships.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/context_segments/wake_values.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordination_database.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordination_tables/harness_deliveries.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordination_tables/publications.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordination_tables/recovery.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordinator_vocabulary.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/cursor_owner.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/delivery_policy.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/envelope_claim_transitions.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/exporting.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/external_transcript.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/goal_attempt_phase.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/goal_generation.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/goal_states.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/goals.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/harness_delivery_states.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/harness_install.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/head_review.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/heartbeat_subjects.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/historical_native_inputs.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/history_result.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/host_services/connector.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/input_key.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/installer/logs.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/probes/carry.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/probes/commands.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/probes/packages.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/probes/report.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/publication.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/request.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/integration.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/launch_root.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/message_reference.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_arguments.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_child.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_claim_epoch.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_file_artifact.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_input_record.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_output.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_package.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/native_pi.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_prompt_binding.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/native_runtime_input.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_tool_call.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_tool_transport.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/native_tools.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/notification_assignment.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/notification_evidence.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/notification_progress.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/obligation_states.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/optional_awareness_projection.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/order_runs.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/order_story.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/order_work.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/owned_send.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/owned_turn.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/owner_requests.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/page_traversal.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/pending_requests.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_commands.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_counts.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_events.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_helper.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_payloads.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/pi_vocabulary.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/plan_phases.py::LintFindings +3 (warns, never blocks)
::warning file=src/agent_comms/private_path.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/private_sidecar.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/progress_claims.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/proven_source_coverage.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/read_basis.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/recorded_bus.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/recorded_time.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/repo.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/restart_refusals.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/retained_task_facts.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/revision_views.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/runtime_children.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/runtime_info.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/runtime_processes.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_actions.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_source_batch.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_tool_broker.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_triage.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_write_authority.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/selected_write_plan.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/send_outcome.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/send_result.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/session_file.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/session_lifecycle.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/session_revision.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/shared_ledger.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/storage_room.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/task_sources.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_creation.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_execution.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_model.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_status.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_storage.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/thread_text.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/threads.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/todos.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/tool_calls.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/tool_declaration.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/tool_request.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/tracked_turn.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/transcript_events.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/transcript_sources.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/transcript_updates.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/triage_native_sources.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_digests.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_failure.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_input_source.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_inputs.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_phase.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/turn_watchdog.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/ui_model/delivery.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/ui_model/unit_state.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/wake.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/wake_candidate_index.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/wake_policy.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/work_branches.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/working_memory_labels.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/working_memory_policy.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/working_memory_questions.py::LintFindings +1 (warns, never blocks)
grew UncarriedRecordFormat +3
::warning file=src/agent_comms/recorded_bus.py::Unformatted +1 (warns, never blocks)
::warning file=src/agent_comms/session_file.py::Unformatted +1 (warns, never blocks)

@trissim

trissim commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

P918 exact-head client-file match

Core747493147; debt-src job123786545713; paired ToAD1330 at1a8053ca4.
Current published pair: Core2f510df6c /ToAD03da3d00b.

File Growth In ToAD1330 diff at1a8053ca4
src/toad/acp/agent_configuration.py +1 yes
src/toad/acp/agent_session.py +1 yes
src/toad/acp/log_records.py +2 yes
src/toad/acp/permission_controller.py +1 yes
src/toad/acp/sdk_boundary.py +1 yes
src/toad/acp/shell_command.py +1 yes
src/toad/agent_presentation.py +1 yes
src/toad/agent_schema.py +1 yes
src/toad/ansi/_ansi.py +35 yes
src/toad/application_actions.py +2 yes
src/toad/block_navigation.py +2 yes
src/toad/clipboard.py +1 yes
src/toad/conversation_kind.py +1 yes
src/toad/conversation_submission.py +1 yes
src/toad/conversation_turn.py +2 yes
src/toad/core/context_inspection.py +1 yes
src/toad/core/events.py +1 yes
src/toad/file_kind.py +1 yes
src/toad/frame_presentation.py +1 yes
src/toad/goal_interaction.py +1 yes
src/toad/inline_spans.py +1 yes
src/toad/input_history.py +1 yes
src/toad/line_blocks.py +2 yes
src/toad/markdown_links.py +1 yes
src/toad/mcp_declarations.py +3 yes
src/toad/mcp_outcomes.py +1 yes
src/toad/navigation_preparation.py +1 yes
src/toad/navigation_target.py +2 yes
src/toad/permission_presentation.py +1 yes
src/toad/plan.py +1 yes
src/toad/private_native_cursor.py +1 yes
src/toad/project_link.py +2 yes
src/toad/prompt_cursor.py +2 yes
src/toad/question_presentation.py +1 yes
src/toad/response_delivery.py +1 yes
src/toad/screens/comms.py +1 no; indirect consumer, see below
src/toad/screens/workspace.py +2 yes
src/toad/session_entry.py +1 yes
src/toad/sidebar_layout.py +2 yes
src/toad/slash_command.py +8 yes
src/toad/surface_binding.py +1 yes
src/toad/tab_identity/init.py +2 yes
src/toad/tab_identity/history_origin.py +1 yes
src/toad/target_commands.py +1 no; indirect consumer, see below
src/toad/terminal_attention.py +2 yes
src/toad/terminal_execution.py +2 yes
src/toad/tool_output.py +1 yes
src/toad/transcript_filter.py +2 yes
src/toad/transcript_state.py +1 yes
src/toad/widget_actions.py +8 yes
src/toad/widgets/comms_command_dialog.py +1 yes
src/toad/widgets/session_thread_panels.py +1 yes
src/toad/widgets/thread_comms.py +1 no; indirect consumer, see below
src/toad/workspace_sessions.py +1 yes
tools/performance/history_capture_remote.py +1 yes

Three untouched consumers

  • src/toad/screens/comms.py: No flat defining-module import. ViewAction at37 inherits WidgetAction imported at17; widget_actions.py13 imports nominal DeclaredFamily, Action at29 owns that ancestry.
  • src/toad/widgets/thread_comms.py: No flat defining-module import. ViewAction at98 inherits WidgetAction imported at43; widget_actions.py13 imports nominal DeclaredFamily, Action at29 owns that ancestry.
  • src/toad/target_commands.py: No flat defining-module import. ContextualCommand/ViewCommand/TargetSuggestion inherit slash_command.py CommandPresentation/SlashCommand; slash_command.py13 imports nominal DeclaredFamily and SlashCommand at65 declares the family.

52 file matches are source/diff evidence, not type-check proof. Three untouched consumers have no moved import and use migrated parents. The original job retained counts, not those individual mypy diagnostics; their resolution remains for the requested paired integration gate. No author gate/checker was run. UncarriedRecordFormat+3 remains a separate actual growth line; P872 owns the required-key set correction, not this import migration.

Original commit dispositions

  • Core27c136be6: relocation and cold control carried at nominal/declared_family.py34, nominal/field_codec.py2228 and tests/test_declared_family.py210. The sole old-only path, installer/probes/owner_actions.py, was deliberately not recreated: main24a888254 deleted it. Old text_form/schema-expression behavior is deliberately replaced by the latest ordered parent derivation at nominal/field_codec.py1774.
  • Core100f036a9: all four changes carried: plan_phases.py477; docs/refactor/retained-index-cross-version-20261005/paired-installed-controller.py11; docs/refactor/retained-routing-provenance-20261005/paired-routing-installed-controller.py11; stack/test-native-global-extensions.py22.
  • ToADc3b1f71e8: all90 changed paths carried; examples agent_schema.py5-6, widget_actions.py13 and slash_command.py13. No old-only changed paths.
  • ToAD54f6ecca1: its sole active-plan reference carried at plans/KEYMAP-PLAN.md59.

The replacements were explicitly rebuilt on ordered newer mains, so ancestry/patch identity is not the content criterion. Four-commit path comparison is four-commit-path-disposition.json; the earlier semantic old/current comparison found no unique migration work missing. Original commits/branches remain retained.

Assumed: paired gate is still owed; counts do not establish diagnostic resolution or installed behavior. P958 typed_turn_events.py66 caller migration follows accepted Core3613 API, not current landed two-argument API.

trissim commented Nov 1, 2026

Copy link
Copy Markdown
Contributor Author

Closing as superseded: the declaration move landed on main as 865135f ("Move the declaration cluster into agent_comms.nominal"). src/agent_comms/nominal/{declared_family,field_codec,json_schema,sealed}.py exist, and the flat modules are gone. This branch now conflicts in 319 files. Its toad pair #1330 is superseded the same way (toad 100b7dc2). Stale-backlog pass at Tristan's request.


Generated by Claude Code

@trissim trissim closed this Nov 1, 2026
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.

1 participant