Skip to content

KindFamilies: put kind behavior and spelling on declared cases - #2667

Merged
4 commits merged into
mainfrom
next/kind-families
Oct 23, 2026
Merged

4 commits merged into
mainfrom
next/kind-families

Conversation

@trissim

@trissim trissim commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Six kind encodings now carry their behavior on declared cases. 350 lines deleted, 435 added at fa87d28.

  • TagAction and its match/parameter bag become TagEdit records. Create, rename and delete carry their own required fields; CommsTagsTool accepts the declared edit record and the shared parent performs the final catalog read.
  • ExecutionProvenance owns source, route and retry rules. ACP, goal and system inherit ClaimlessOrigin; WireOrigin owns Python and SQL rules. The store, recovery snapshot and cohort proof invoke those methods. Wire SQL membership derives from the sourced declarations rather than a separately written wire spelling.
  • BusyInputPolicy composes StreamingInputPolicy. The Pi-capable cases carry its exact steer/followUp spellings; reject owns the refusal. The parallel map, Prompt Literal roster and private-sidecar string annotation are deleted.
  • MessageControl owns wake policy; the external passive flag and its caller switch disappear. MembershipTransition derives join/leave selection from case predicates and shares message-role construction. SavedView becomes a record family with ParticipantsView and ActivityView, preserving kind in its wire representation.

Removed production decision/restatement sites, at base c613c0f: channel_management.py:122 (TagAction match); execution_store.py:77 and :79 (wire/claimless creation); coordination_tables/executions.py:236 (retry); coordination_snapshot.py:211 (route switch); cohort_schema.py:342 (obligation origin); turn_inputs.py:37 and :170 (parallel Pi dispatch); messages.py:278 (control flag); channels.py:197 (membership case selection). SQL wire identities at coordination_tables/executions.py:182, :207, :335 and :339 and coordination_tables/responses.py:65 and :76 now derive from WireOrigin's methods. Old enum normalization in executions.py:277 is deleted. No production caller compares these cases to choose their behavior.

The phase's ViewKind name check previously also banned typed_table.ViewKind(CatalogKind), an already-correct behavior owner for SQLite schema-table type=view. Keep it exact and restrict that evidence to the actual bare-enum ViewKind. SQLite owns that catalog vocabulary. Pi's native RPC streamingBehavior owns steer/followUp; those bytes remain exact on the case declarations. No compatibility aliases or alternate decoding path.

The existing tests/fixtures and tool-schema expectations are migrated with the source. The tag tool's canonical request is now edit={kind:create,name:...}; native tool schemas supply that shape. Membership and saved-view stored wire keys retain their existing spellings. SQL generated columns retain the scalar predicate with the present single sourced case; retry-view/trigger text now derives its predicate from the owner.

The pre-edit NRA receipt covers762 Core/paired-Toad/dependency modules and6410 original classes, with8 unprojected local/conditional declarations explicitly OPEN; lexical matches do not establish arbitrary dynamic binding. Receipt: /home/ts/.cache/agent-scratch/commander-control-plane/kind-families-source-before.json. No later census, debt scan or test run was made after Tristan stopped worker checks. The single integrator owns the changed test files and actual application checks.

Shared-file boundaries: tools.py contains only tag/view type changes; publisher.py and response_conversation.py replace ordinary-control references; plan_phases.py changes only KindFamilies evidence. MI field names and ControlPlane/relocation behavior remain with their respective owners.

Assumed: runtime origins use the nominal cases; Pi retains its pinned streamingBehavior contract; the integrator combines the shared-file heads and runs the changed tests once. Source shape alone is not installed qualification. OwnedDispatch follows on a fresh main branch.

@trissim
trissim marked this pull request as ready for review October 23, 2026 08:18
Copilot AI balanced review requested due to automatic review settings October 23, 2026 08:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions

Copy link
Copy Markdown

debt-tools at ba056fa, every finding:

grew NoneAbsence:tools/cutover/carry_finished_turns.py +2
grew StringSubscript +2
grew TypeErrors:tools/cutover/carry_finished_turns.py +2
grew Unformatted:tools/cutover/carry_owner_requests.py +1
introduced NoneAbsence:tools/cutover/carry_finished_turns.py at lines [91, 93]

@github-actions

Copy link
Copy Markdown

debt-src at ba056fa, every finding:

grew FamilyFlattened:src/agent_comms/publisher.py +1
grew FamilyFlattened:src/agent_comms/response_conversation.py +1
grew FunctionLocalImport:src/agent_comms/coordination_tables/executions.py +1
grew FunctionLocalImport:src/agent_comms/native_session_files.py +1
grew FunctionLocalImport:src/agent_comms/turn_lease.py +1
grew GodClassExcess:src/agent_comms/typed_table.py::TypedTable +15
grew LintFindings:src/agent_comms/bus_tables.py +5
grew LintFindings:src/agent_comms/coordination_tables/executions.py +3
grew LintFindings:src/agent_comms/coordination_tables/responses.py +2
grew LintFindings:src/agent_comms/declared_family.py +1
grew LintFindings:src/agent_comms/diagnostics.py +1
grew LintFindings:src/agent_comms/historical_views.py +1
grew LintFindings:src/agent_comms/installer/backup.py +1
grew LintFindings:src/agent_comms/messages.py +1
grew LintFindings:src/agent_comms/native_session_files.py +1
grew LintFindings:src/agent_comms/pi_commands.py +2
grew LintFindings:src/agent_comms/private_registry_guard.py +2
grew LintFindings:src/agent_comms/private_sidecar.py +2
grew LintFindings:src/agent_comms/registry_document.py +1
grew LintFindings:src/agent_comms/registry_store.py +1
grew LintFindings:src/agent_comms/selected_participant.py +1
grew LintFindings:src/agent_comms/selected_tool_broker.py +1
grew LintFindings:src/agent_comms/selected_triage.py +1
grew LintFindings:src/agent_comms/selected_turn.py +1
grew LintFindings:src/agent_comms/turn_lease.py +1
grew LintFindings:src/agent_comms/typed_table.py +2
grew NoneAbsence:src/agent_comms/pi_commands.py +1
grew NoneAbsence:src/agent_comms/turn_lease.py +1
grew TypeErrors:src/agent_comms/bus_tables.py +2
grew TypeErrors:src/agent_comms/installer/upgrade.py +1
grew TypeErrors:src/agent_comms/wake.py +2
grew UncarriedRecordFormat +1
introduced NoneAbsence:src/agent_comms/pi_commands.py at lines [188]
introduced NoneAbsence:src/agent_comms/private_sidecar.py at lines [373, 389]
introduced NoneAbsence:src/agent_comms/turn_lease.py at lines [317]

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