Skip to content

P954: acquire relationship people and DM status through their actual owners - #1331

Merged
trissim merged 5 commits into
mainfrom
work/frame-baseline--P954--toad
Oct 30, 2026
Merged

trissim merged 5 commits into
mainfrom
work/frame-baseline--P954--toad

Conversation

@trissim

@trissim trissim commented Oct 29, 2026 •

Copy link
Copy Markdown

P954 — 3 commits, 3 files, +31/-33; nominal people and one-peer status

Paired with OpenHCSDev/agent-comms#3607. Exact source: Core d0da7a9ef2348efd7ebd6452f53b7fc7385eaa4e; Toad b5961208ad4921b9e3a17b6b47503a1933dcb113, rebased onto main f17010bc0. Local and explicit remote refs match; trees clean. Integrate the matched pair before rollout: this status reader uses Core's new strict incarnation operation. Core's base also includes merged #3621, the independent required-key set checker repair. Published source is not an installed speedup.

1. Complete relationship people, not widget-owned absence

Before, RelationshipEntry.person was ThreadView | None; navigation, row preparation and refresh rediscovered absence. A rejected Core checkpoint created entries before their selected people existed. The subsequent show_member still converted nominal absence to None, conflating it with a real model-cache miss.

After:

Core ThreadView(PresentMember) / NoThreadView(NullMember)
└─ Toad entry_target, keys_for_threads, RelationshipRow.present — nominal presence
   └─ RelationshipRows.show_member passes existing captured Mapping[str, ThreadRowModel]
      ├─ unavailable entry → original unavailable/detail handling
      ├─ present person → rows.get(person.thread.name), then actual model miss/incarnation check
      └─ no person → original label/detail path, no cache lookup

The row consumes the mapping without copying or mutating it. A matching cached model is reused with existing worker cancellation; a genuine miss or mismatched incarnation keeps the real async ThreadRowModel.of fallback, original captured person and stale-entry guard. Lookup uses person.thread.name, not an older entry.target alias. Availability, tooltips, navigation and focus remain. There is one production present caller and no existing test/tool RelationshipRow.present caller found.

IDEN-3: fact=nominal person presence versus distinct model-cache absence; at=former show_member next(..., None); derive=existing presence capability; by=Core ThreadView/NoThreadView and RelationshipRow.present at thread_comms.py:114. Public wire absence stays JSON null. No widget copy of backend relationship state or second model cache.

2. DM status needs one current peer, not a catalog

Before, DmConversation.status_text built CurrentDisplayReferences for every registered/alias incarnation solely to recover one peer name. A retained real profile contains64/370 samples (17.3%) on that whole-roster chain. The first narrow version removed the roster but copied strict current-peer selection, private KeyError refusal and canonicalization beside Core's retained target.

After:

Core ThreadIncarnation.require_current(snapshot)
├─ IncarnationThreadTarget.selected_name — same current canonical name
└─ DmConversation.status_text — one snapshot, configuration.answer(current.name)

ChannelConversation.status_text — saved-view/empty label, ZERO registry reads (unchanged)
WireSource.references — deleted; command context already uses captured sidebar references

The existing strict owner requires recorded birth, resolves through snapshot.incarnation(original.name), and refuses missing/recreated peers with UnregisteredThreadError. Tolerant historical current/resolved semantics stay unchanged. Status retains asyncio.to_thread and the actual configuration answer owner. Core publication retains HumanSendRefusedError translation. No complete references catalog, fresh registry cut, worker, cache, lookup index, local identity algorithm or empty-status fallback.

IMPL-12: fact=strict original-peer selection; at=Core channel_targets.py:485 and Toad conversation_kind.py:301; derive=base-method; by=Core ThreadIncarnation.require_current at thread_identity.py:212. The latest paired continuation changes2 files,+7/-9; its Core counterpart changes3 files,+40/-5. Whole src/tests/tools search finds no CurrentDisplayReferences.from_registry caller in Toad. Dynamic bindings remain OPEN.

Evidence and outstanding qualification

Before-profile: /home/ts/.cache/agent-scratch/claude-code/perf/toad-1696798-1802-pyspy.raw, live Toad1696798,18:02,15s requested50Hz,370 retained samples,64 on the catalog chain. This is a sample fraction, NOT measured CPU share or a promised saving. After-profile UNRUN. Necessary selected-peer configuration work can still appear under the reader.

NRA source-only before/after extensions p954-strict-before.json / p954-strict-after.json:8 parsed modules,7 production modules,104 projected classes,0 parse omissions, reusing retained p954-1df7-4c49-source-map.json. Conditional/local/external/dynamic bindings remain OPEN; source evidence is not behavioral proof.

Core authored UNRUN genuine-declaration controls for strict rename/current canonical return, old captured-cut isolation, removed/recreated refusal, tolerant stale retention and birthless family refusal. Root retains38+8+1 earlier passing controls, not latest-head acceptance. Matched two-file typing had six diagnostics in unchanged older methods, not a clean pass.

No Toad tests edited: its CLAUDE.md forbids test edits/runs. Thus edit41's requested new Toad status/presentation controls were not authored. Root must qualify actual live/renamed status, stale declared refusal, nominal no-person label/detail without a model lookup, and uncached/cached real presentation. No author pytest/checker/import probe/environment/frontend/provider/profile/install ran. Exact matched typing/hosted gates, authentic saved-cut parity/payoff, installed working result,16ms frames and p99.9 remain OPEN. This does not close P954.

Overlap: existing queue-toad-fix1319/1317 queue, prompt and SelectTarget work is untouched. P918's import relocation lands last. Toad's abandoned empty index.lock had no process holder; only that owned lock was removed before a successful rebase. No source or other agent's work was removed.

decoded the address book to print one name
hired two birth inspectors to replace the address book
the actual identity owner finally gets the job

Assumed: Root integrates and qualifies this exact matched pair, then measures the real configured multi-tab frontend. No live speedup claimed.

Copilot AI balanced review requested due to automatic review settings October 29, 2026 19:58

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 insufficient remaining quota.

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 force-pushed the work/frame-baseline--P954--toad branch 3 times, most recently from 4c4922e to 364fb2e Compare October 29, 2026 22:19
@trissim trissim changed the title Consume complete P954 relationship people through their nominal presence P954: acquire relationship people and DM status through their actual owners Oct 29, 2026
@trissim
trissim force-pushed the work/frame-baseline--P954--toad branch 2 times, most recently from b596120 to 7f711c1 Compare October 30, 2026 00:54
@trissim
trissim force-pushed the work/frame-baseline--P954--toad branch from 7f711c1 to 95be07c Compare October 30, 2026 01:26
@trissim
trissim merged commit 42b6f46 into main Oct 30, 2026
1 of 3 checks passed
trissim added a commit that referenced this pull request Oct 30, 2026
Revert #1331 until its agent-comms pair #3607 lands
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