Skip to content

Fix deferred minors from #55–#57; add small-team setup guide - #58

Merged
Cylop merged 10 commits into
mainfrom
fix/deferred-minors
Oct 23, 2026
Merged

Cylop merged 10 commits into
mainfrom
fix/deferred-minors

Conversation

@Cylop

@Cylop Cylop commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Fixes the minor findings deferred from #55, #56 and #57, and adds a setup guide for a small team.

Fixes

  • Profiles: a person with status: left expects nothing in profile check, even when a directory group still assigns them profiles.
  • access review: refuses existing NNN.json/NNN.execution.json before discovery; escapes Markdown in --detail summaries; the old-index.json refusal names the folder and the CI remedy.
  • Starter verify workflow: accepts only a finished post-merge permesh-plan.yml push run on the default branch of this repository, including runs that exited 4 or 6, which still hold the matched plans. The job exits like the CLI for the worst plan (errors, then 3, 4, 6). Behavioural tests run the workflow's shell steps with stand-in gh and permesh.
  • Starter: workflows pass PERMESH_GOOGLE_CLIENT_SECRET and PERMESH_GOOGLE_REFRESH_TOKEN, because a Google access token expires within an hour, too short for weekly CI. The README uses env:// references instead of the keychain-only auth login. GitLab docs say not to mark provider variables Protected.
  • permesh mcp:
    • a failure to reach the client exits 5 instead of blaming the protocol version;
    • a symlink that leaves the workspace reads as "File not found in the workspace", so its target's existence isn't revealed;
    • empty profiles/remove lists get a specific message, and the schemas set minItems: 1;
    • the instructions say report.complete;
    • docs list every command that is left out;
    • ADR 0035 gains "Rejected options".
  • Stable fixtures: new access-plan-move.json and check-report-notifications.json (with notifications enabled; failure reasons normalized as human text). There's a renamed-field self-check on the plan fixture and a stronger reload check for the profile suggest draft. README and ADR 0036 now state coverage accurately.

Docs

  • New docs/team-setup.md: about 10 people on GitHub and Google Workspace, from repository to weekly CI and reviewed joins, moves and leaves. Linked from docs/README.md and getting started.

Validation

  • cargo fmt --check, cargo clippy --workspace --all-targets -D warnings and docs check are clean.
  • cargo test --workspace: 734 passed, 0 failed.
  • Final review on Opus found 0 Critical and 3 Important findings, all fixed in one pass, each with a test that failed first where code changed:
    • verify refused runs that exited 4 or 6;
    • the guide's credentials couldn't work in CI;
    • the guide's example profile included an undefined profile.

Rulings

  • Leave plans on providers without a groups capability: completeness unchanged. Such a provider can't report group routes, and requiring memberships would make every leave there permanently incomplete. Documented in access-plans.md.
  • Cancelled MCP call queued behind a running one: no change. rmcp drops responses for cancelled requests, and a new test shows the queued call starts no provider.
  • Race between MCP path checks and file creation: documented, not fixed. A local writer that can swap symlinks can already write anywhere the user can.
  • Notification failure reasons: treated as human text in fixtures, with their type still frozen.

Deferred minors

  • access verify now applies left too: verifying an old join/move plan for someone since marked left lists all their access as extra (exit unchanged).
  • The verify workflow compares .path exactly; if GitHub ever adds @ref, every run is refused.
  • GFM still autolinks bare URLs and emails inside escaped --detail text; a leading - in an operation can nest a list.
  • check_out silently passes when --out can't be listed; on Windows 000.JSON isn't matched.
  • The guide redirects profile suggest straight into profiles/; a failed run leaves an empty file that breaks profile loading.
  • The guide doesn't say where provider versions for ci/providers.txt come from.
  • The access-plans sentence on providers without groups is hard to follow.

@Cylop
Cylop merged commit 3c802d0 into main Oct 23, 2026
15 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