feat(forge): carry the owner-qualified actor handle on the wire (RIG-3326) - #1020
Draft
rigel-mintaka wants to merge 1 commit into
Draft
feat(forge): carry the owner-qualified actor handle on the wire (RIG-3326)#1020rigel-mintaka wants to merge 1 commit into
rigel-mintaka wants to merge 1 commit into
Conversation
This was referenced Sep 8, 2026
|
Compass engineering docs preview: https://compass-forge-rig-3326-owner.compass-eng-docs.pages.dev Deployed from |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements T0 of the RIG-3326 record (
docs/designs/server/compass-forge-self-delegate-suppression/design.md, under review in #997). Stacked on #1019.Restores the owner on attribution so the notify router has an owner-qualified actor at all. Without this the whole COMMENT/REVIEW suppression arm is structurally inert.
AgentAttributionregainsowner_handle = 2. Field 2 is legitimately reclaimable per DL-186: no wire build ever shipped the earlier owner/verified shape and nothing on disk is proto-encoded, so the number carries no compatibility obligation.stripBodyToRef,linearCommentRef,detectArtifact— each fromauthor.OwnerHandle. No new parse, no new store read: the value is in hand at every one of them.The UI adapter is a live consumer, not dead code
adaptAgentAttributioninapps/ui/src/live/adapt.tshardcodedownerHandle: ""and its doc comment justified that by citing DL-094's "no wire source" reservation. After this change there IS a wire source, so leaving it would silently discard a real value behind a stale citation. The domain type already carried the field and two tests pinned the empty default.Threaded through, comment re-pointed at DL-339, both assertions updated.
verifiedstays hedged — DL-094's attribution-is-not-a-trust-claim core is unchanged, and DL-339 amends only the owner clause.Note on the carrier
ForgeEventgains no actor field. Matt ruled OQ-1 on 2026-09-07: the STATE actor is resolved from RIG-3331'sforge_state_transitionsmemo at the actor-resolution seam, keyed on the event's coordinate + applied state. AnActorfield would have shipped with no populator and no consumer (rule://no-inert-gating). A memo miss resolves no actor, so STATE fails open until the op is writing memos.Tests
The three parse sites round-trip both handles; a header carrying no owner yields an empty
OwnerHandle— asserted explicitly, because that is the fail-open input the suppression predicate relies on. The two UI assertions carry the owner through. The Go attribution-render callers are unaffected and verified still building.Ledger-impact: none — DL-338/DL-339 land with the record itself in #997, not here.