Repository navigation
feat: initial release - #1
Conversation
6a0fcfc to
98378bb
Compare
98378bb to
cc67228
Compare
rhuanbarreto
left a comment
There was a problem hiding this comment.
CHANGES
Two P1 issues block adoption:
- P1 — Federated network authentication cannot succeed (
action.yml:70). The pinned Tailscale action requiresaudiencetogether with client ID and tags for federation; no audience or client secret is provided here. Its authentication validation therefore rejects every documented federated setup, and the picker always falls back. Pass the appropriate audience (for example,api.tailscale.com/${{ inputs.tailnet-client-id }}for that identity configuration) and verify the real upstream authentication path. See the pinned upstream validation. - P1 — Preserve the existing capacity-service overflow protocol (
src/pick.sh:90,src/pick.sh:95). The existing integration offers the alternate provider using theblacksmithquery parameter and receiveschoice: "blacksmith". Sending onlyoverflowand accepting onlyoverflowbreaks compatibility: the service cannot see the offer, and an existing valid provider decision is rejected. A fixture response{"choice":"blacksmith","reason":"capacity available"}with a configured overflow reproduces the unwanted self-hosted fallback. Retain compatibility at the service boundary while keeping the public input/output naming generic, and cover both request and response translation.
Non-blocking:
- P2 — Check HTTP status explicitly (
src/pick.sh:91).curl --failaccepts 3xx. A local server returning HTTP 302 with{"choice":"hosted","reason":"redirected"}selected hosted instead of the documented self-hosted error fallback. Require the intended successful status before interpreting the body; apply the same protection to the runner API request. - P2 — Avoid moving a major tag backwards (
.github/workflows/release.yml:35). Publishing an older patch/minor release after a newer one unconditionally force-moves the major tag to the older commit. Compare release versions before advancing the major tag. Release permissions and checkout credential handling are otherwise scoped correctly.
Validation at cc67228: 24 Bash decision checks, 3 Python service tests, and 4 Python request tests passed. ShellCheck 0.10.0, actionlint 1.7.7, Zizmor 1.31.1 offline, the repository content self-check, and git diff --check passed. Independent scans of the complete tree, git log -p --all, branch names, and PR title/body/comments found no prohibited content or IPv4 literals; commit author identities matched the requirement. Both push/PR CI checks and fallback jobs passed. Additional probes covered missing jq (successful JSON fallback), the existing provider response, and HTTP 302. Runner response fields were checked against the documented REST response shape. No repository code, branch, commit, tag, or settings were changed.
rhuanbarreto
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Round 2 reviewed at c80026b. No remaining P0/P1 findings; all four previous findings are resolved.
action.yml:71supplies the federated identity audience required by the pinned upstream action. The regression assertion passes, and the upstream authentication validation/token path was checked. No live identity connection was attempted.src/pick.shrestores the provider offer query convention, includes the owner only with that offer, and translates the service provider response into publicchoice: overflowwhile preserving the complete configured target. Request/response and example-service tests pass.- Both network request paths use the shared HTTP helper requiring status 200. Tests cover non-200 statuses for both sources, plus real HTTP 200/302 service responses.
scripts/is-latest-release.shgates major-tag advancement on the highest stable version within that major. Real local Git tag tests cover older releases, numeric version ordering, separate majors, and prerelease exclusion; the workflow invokes the gate before updating the major tag.
Validation: 24 Bash decision checks, 3 Python service tests, 9 Python request tests, and 2 Python release tests passed. ShellCheck 0.10.0, actionlint 1.7.7, Zizmor 1.31.1 offline, python3 scripts/check-public.py, and git diff --check passed. Independent scans of the complete tree, full git log -p --all, branch names, and PR title/body/comments/reviews found no prohibited vocabulary, other repository names, or IPv4 literals. Commit author identities match the requirement. gh pr checks 1 reports passing checks and fallback jobs for both push and pull request.
No new P2/P3 findings. Review only; no code, branches, commits, tags, or repository settings changed.
Included
Review round 1 fixes
audience: api.tailscale.com/${{ inputs.tailnet-client-id }}. Checked the pinned upstream validation and OIDC token path; regression asserts the audience setting. Live federation requires a caller identity and was not exercised locally.blacksmithas the offer parameter, using the first label for array targets, and sendorgonly with that offer. Translate wire choiceblacksmithto public choiceoverflowwhile preserving the complete configured runs-on target. Updated the example service and contract documentation.Regression tests were added and observed failing before their respective fixes.
Validation
The initial main commit contains only the MIT license and a one-line README. This PR remains open for maintainer review. No merge, tags or repository settings changes have been performed.