Skip to content

P448: qualify goals through the existing managed native workflow - #1135

Merged
trissim merged 7 commits into
mainfrom
fix/p448-native-goal-qualification
Oct 23, 2026
Merged

trissim merged 7 commits into
mainfrom
fix/p448-native-goal-qualification

Conversation

@trissim

@trissim trissim commented Oct 21, 2026 •

Copy link
Copy Markdown

Goal qualification constructed an ACP server inside the test process, then handed Toad a detached agent with ready=True. That arrangement bypassed the managed native journey the cases were meant to qualify. The goal helper now enters the existing NativeSession; its provider, ACP connection, native owner and cleanup remain owned by the shared fixture. owner_server and the detached-agent setup are deleted.

The native cases retain goal creation reaching the provider, goal identity and stale-edit refusal, objective edits, failed-ledger repaint/productive successor and peer-mention navigation. The two remaining adapter consumers use bind_agent/agent_binding, and the native catalog declares accepts_comms_root.

Merged Toad main 67f6889 into this branch. The resulting diff is eight test/helper files: 120 additions, 125 deletions, and no production diff. Fifteen old PR file changes are redundant against main and have been removed.

Conflict resolutions:

  • src/toad/session_observation.py: keep main initialization; drop the duplicate NoAgentBound assignment/import.
  • tests/native/test_native_journey.py: keep main AgentBase bindings and its newer fork journey.
  • tests/support/native.py: keep main installed_wire setup, AgentDefinition decoder, AgentBase and batched owner cleanup; delete owner_server and derive the declared/attached thread from NativeSession.thread.
  • tests/support/native_steps.py: keep main CheckedNotifications and rendered feedback assertions; replace only the goal helper with NativeSession.
  • tests/support/peers/typed_turn_events.py: keep main turn_source, runtime event consumer and current stale-completion assertion.
  • tests/textual/test_compaction_turn_events.py: keep main turn lifecycle/publication checks and canonical deliver helper.
  • tests/textual/test_goal_owner_views.py: keep main repaired peer-mention navigation case.
  • tests/textual/test_permission_requests.py: keep main bind_agent call/comment.
  • tests/textual/test_plan_display.py: keep main AgentBase binding.
  • tests/textual/test_session_observation_reads.py: keep main AppAgents.unrun and explicit observation ownership.
  • tests/textual/test_session_tool_calls.py: keep main AgentBase and deliver helper.
  • tests/textual/test_transcript_presentation_fencing.py: keep main SavedSessionFile/resume path and certified-reader setup.

Also removed auto-merged duplicate NoAgentBound imports in initial_prompt_handoff and key_bursts tests. No deleted initializer, older notification recomputation or local turn producer was restored.

Validation: refactor-audit Package AST inventory before/after covered all 23 original PR modules with zero parse omissions. Interpreter-imported all 23 actual modules, including the eight retained diff modules, using this Toad source and Core main 0e3c8f7f4. Existing runtime core-c2443b43c supplied Textual/UI dependencies; pytest was imported as a library from the existing Core development environment. The two script entry points were imported with their sibling directories available, as their real launches provide. All imports succeeded. owner_server has zero declarations/consumers. No pytest runs; the integrator runs behavior/native checks.

Assumed: main fixture owners remain authoritative; the integrator owns executing the native cases.

@trissim

trissim commented Oct 22, 2026

Copy link
Copy Markdown
Author

Native feedback qualification checkpoint

The installed-afb three-case batch executed and failed all three cases (214.30s):

  • Ledger repaint and mention cases failed before their bodies, awaiting ACP session attachment. Their retained ACP logs end at session/load.
  • The direct-message case reached the held provider, but waited for the obsolete literal Responding. The provider subsequently failed because the test never released it. This is not evidence of a missing UI activity update.

The shared direct/channel journeys now consume the existing owners instead of restating labels:

  • NotificationStatus.working proves activity.
  • HistoryViews.message_notifications_for_references reads original message references; the removed message-object reader is no longer called.
  • The direct journey requires the actual reply reference and model-context read proof; the ignored channel journey requires IgnoredProgress, read proof and no answer.
  • MessageNotification.summary supplies the expected visible summary on return/reopen. No copied Responding, Responded, Checked, or no response policy remains in these journeys.

Focused Ruff, Python 3.14 compilation and git diff --check pass. No new native input was sent after this change; application acceptance remains open. The approved P464 runner must be merged and installed before using its new home policy.

Source inventory reused NRA ModuleSyntaxIndex: 277 Toad production modules parsed with six Python-3.14 syntax omissions, 289 test modules with zero omissions, and 452 installed Core modules with four omissions under the existing NRA Python-3.12 environment. The log names all ten omitted files; all declarations changed/consumed by this checkpoint were parsed. Dynamic rebinding is unresolved. The first inventory attempt with Core's Python 3.14 did not execute because that environment lacks tree_sitter. No complete-Core AST claim is made.

Evidence: /home/ts/.cache/agent-scratch/unit-goalblock/afb-shared-first-native.log, native-feedback-check.log, native-feedback-owner-ast-existing-env.log, native-feedback-publish.log.

Separately, mi-1a's verify51b failed native preflight before UI (await_get_state, 10120ms/10000ms, zero provider posts/input proofs). That frozen attempt is not replayed; native lifecycle owner assignment was requested from claude-code in message 18015. No cap was increased.

Assumed: Core's declared progress capabilities and linked answer references, rather than historical English labels, are the qualification contract. This checkpoint fixes the test premise, not the unverified product workflow.

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

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.

@trissim
trissim merged commit b971751 into main Oct 23, 2026
1 of 2 checks passed
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