Repository navigation
fix(conformance): the staleness probe exposes a real team the fixture names - #8
Merged
Merged
Conversation
… names "a callee refuses what does not verify" moved the organisation's authority by granting the installed solution to a team id the suite made up (callee-probe-N). A host that validates team ids, as Accounts does, refuses it as an invalid subject id, so the case failed on a fixture reason rather than on the behaviour it names. The fixture now names the team through its own path, as Lifecycle.Team already does: UnexposedTeam, a real team of the organisation that InstalledSolution is not yet exposed to. The case stays required; an empty UnexposedTeam fails as a missing fixture. The local fixtures name "auditors", a team no person carries, since Acme's wiki already reaches finance and engineering and an already-exposed team is an idempotent no-op that moves nothing (checked: with "finance" the probe fails as "not stale"). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
The required case "a callee refuses what does not verify" checks staleness by granting
InstalledSolutionto a team, which moves the organisation's authority. The suite made the team id up (callee-probe-<revision>). Accounts validates team ids and refuses that one asinvalid subject id, so on saas the case failed because of the fixture, not because of the behaviour it is named for.The fixture now supplies the team, the same way
Lifecycle.Teamalready does. The new field isFixture.UnexposedTeam: a real team ofOrganizationthatInstalledSolutionis not yet exposed to, created or found through the host's own fixture path. The case is still required. An emptyUnexposedTeamfails as a missing fixture.libraries/conformance/go/conformance.go: adds the field and makes the probe grantf.UnexposedTeam.libraries/conformance/go/README.md: one paragraph on the field.local_authority_test.go,live_test.go):UnexposedTeam: "auditors". Local team ids are the strings people carry, so a team no person carries is a real team with no members.Why not reuse
Lifecycle.Team: on both hosts it names Finance, and the installed solution already reaches Finance. Granting a team that is already exposed is an idempotent no-op, so the revision never moves.Classification
This is a fix, made in the suite, which is where the fixture-reason failure came from. It reuses the fixture's existing way of supplying a team (
Lifecycle.Team/teamNamedon Accounts) and adds no team-creation path to the suite.Evidence
go vet ./... && go test -race ./...inlibraries/conformance/go: passes. The package has no test files, so this is a compile and vet check.go test -race ./plugins/registry_testinmodules/authority/services/local/code:ok gateway/plugins/registry_test 35.3s.TestTheLocalAuthorityPassesTheSuiteEveryImplementationMustPasspasses, includinga_callee_refuses_what_does_not_verify,_by_name(32.04s).TestARunningLocalAuthorityPassesTheSuitewas skipped becauseAUTHORITY_GRPC_ADDRwas not set.UnexposedTeam: "finance", which wiki already reaches, the probe fails atconformance.go:408: ... is stale, refused as PermissionDenied: <nil>. This confirms the case still tests staleness and is not passing by construction.Not verified: I did not run the suite against Accounts. The Accounts fixture (
host_interface_conformance_test.go) must setUnexposedTeam. A team with no members, created through its store, is the safe choice, because the probe leaves the grant in place for the rest of the run. Until it sets the field, this case fails on Accounts as a missing fixture, which names the gap honestly. Today it fails as an invalid subject id.Overlap with open PRs
The diff stays small on purpose. All three PRs touch
libraries/conformance/go/conformance.go:Run's case list, around line 264. No hunk overlap.Fixturefield around line 92, a case around line 589, and a README table row. This PR's field goes afterInstalledAudience(line 51), its probe edit is around line 397, and its README paragraph comes after the Lifecycle paragraph. No hunk overlap is expected, but whichever lands second should rebase.🤖 Generated with Claude Code