Skip to content

fix(workcontext): r142 follow-ups: authority rows at d091cc7a, conditional across-owners advice, empty-owner vector - #848

Merged
antoinetoussaint-byte merged 1 commit into
mainfrom
fix/owner-r142-followups
Oct 26, 2026
Merged

antoinetoussaint-byte merged 1 commit into
mainfrom
fix/owner-r142-followups

Conversation

@antoinetoussaint-byte

Copy link
Copy Markdown
Contributor

Follow-ups to #847 (merged at b57347f) from review r142: minors 1, 2, 4 and 5.

What changed

f1: the authority rows describe authority main. Authority #18 merged at f688c549, so the three authority readers are now owner-aware:

  • hop.go:183 skips owner-selected scopes.
  • work_context.py:113 and :218 keep the owner and compare it.
  • codefly_hop/__init__.py:232 skips owner-selected scopes.

The rows say this, and say that only consumers pinned before f688c549 are still owner-blind. Every "(open)" is gone.

f2: one service, one issuer.

  • The row cites modules/authority/services/local/.../issuer.go:88-126 (ListResources, with whole at :103-104).
  • It also cites state.go:1346 (coverageOf, whole kind at :1359).
  • All lines were read from a fresh clone of authority main at d091cc7a, not from the stale mirror.
  • The prose now describes one Issuer: Issue (:205) and Delegate (:662) refuse owners through refuseOwners (:750). ListResources still reads scopes itself and must become owner-aware before the issuer mints an owner.

f4: the across-owners advice is conditional.

  • When owners split the scope by resource id (each id is covered with all actions under one owner), the refusal advises one invocation per owner on that owner's resources.
  • When they split its actions, it says no child can hold the whole scope and the parent must hold it under one owner.
  • New case: "named ids whose actions two owners split". The two existing cases now assert the advice.

f5: resource_owner_vectors.json now has an accepted "no owner" ("") vector.

f3 (the authority's wire copy of the owner rule) belongs to codefly-dev/authority and is not in this PR.

Classification

Fix: docs, core's refusal wording and the shared test vectors. No hack.

Evidence

  • make buf-lint is clean.
  • make buf-breaking: no breaking change against origin/main.
  • go vet ./workcontext/... ok.
  • go test -race -count=1 ./workcontext/... ./runnable/... ok.
  • Local Python protovalidate 2.1.0 probe: 41 of 41 vectors agree, "no owner" included. As before, the probe is not in CI.

🤖 Generated with Claude Code

…ional across-owners advice, empty-owner vector

- docs/work-context.md: the three authority readers (hop.go:183,
  work_context.py:113/:218, codefly_hop:232) are owner-aware since authority
  #18 (f688c549); the issuer row names the one service, local, and its
  ListResources (issuer.go:88-126) and state.go coverageOf (:1346/:1359),
  read from a fresh clone at d091cc7a; Issue and Delegate refuse owners.
- InheritResourceOwner advises one invocation per owner only when the
  owners split the scope by resource; when they split its actions it says
  no child can hold the whole scope and the parent must hold it under one
  owner.
- resource_owner_vectors.json accepts the empty owner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@antoinetoussaint-byte
antoinetoussaint-byte merged commit ad9a48c into main Oct 26, 2026
10 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.

1 participant