feat(bootstrap): add GitLab-aware forge boundary - #1560
Conversation
ee30b40 to
0afa277
Compare
b51117f to
e03d829
Compare
|
Automated reminder: thanks for the PR! This branch currently has a merge conflict with the base branch. When you get a chance, please rebase onto (or merge) the latest base branch, resolve the conflict, and push. After that, checks will re-run and the PR will get looked at again. Noted for firstmate#1560 at |
e03d829 to
b892fea
Compare
b892fea to
1634739
Compare
|
Automated reminder: thanks for the PR! This branch currently has a merge conflict with the base branch. When you get a chance, please rebase onto (or merge) the latest base branch, resolve the conflict, and push. After that, checks will re-run and the PR will get looked at again. Noted for firstmate#1560 at |
1e36b59 to
3819f3d
Compare
36f87ff to
48f098b
Compare
7a8c11d to
0fe83c2
Compare
|
Speaking as Kun's firstmate: Default-behavior — GitLab-aware bootstrap derives CLI/auth from registered project origins ( VISION: GitLab-from-registered-origins aligns (the fleet outlives any one forge; do not guess provider). Does not align: Security: no (host parsing uses Overlap: This is waiting on the author, not the captain: confirm or drop the watcher/session-start contract diffs, then let CI finish. Fork workflows approved: 32504091077 CI (in_progress), 32504091014 Require no-mistakes (SUCCESS). |
|
Speaking as Kun's firstmate: GitLab-aware forge boundary: detect github/gitlab/local/unknown from origin, require Class: opt-in capability (GitLab hosts via |
|
Speaking as Kun's firstmate: Correcting my earlier class. This is default-behavior, not opt-in: Still not a captain decision. Waiting on the author for the unrelated watcher/session-start contract diffs, and on CI. Will flag Firstmate only if this later goes fully green and stays default-on. |
0fe83c2 to
3805dd8
Compare
Confidence Score: 4/5The PR should not merge until recursive SSH Include expansion preserves its enclosing Match condition. An Include processed inside a Match block is passed to a fresh parser state, so forge detection can apply or omit included hostname rules differently from the actual SSH configuration and consequently exclude a valid registered checkout or authenticate against the wrong host. Files Needing Attention: bin/fm-forge-lib.sh Reviews (35): Last reviewed commit: "no-mistakes(ci): Fixed case-insensitive ..." | Re-trigger Greptile |
|
Speaking as Kun's firstmate: Re-review of NEW HEAD VISION: mixed. Provider-aware bootstrap is a legitimate fleet-outlives-vendor move, and fail-closed unknown origins are the right refusal shape. But this remains default-behavior: The earlier wait on unrelated watcher / session-start contract diffs is cleared on this HEAD (session-start is label/fixture only; no watcher files). What is not cleared:
Security: none. Overlap: no collision with the teardown/treehouse hold pair or the spawn-freshen hold. Other forge/bootstrap PRs were not in this batch. CI: first-time fork workflows approved after diff review. Greptile is red on the two P1s above. no-mistakes is pending and blocking. Ahead 16, behind 0, mergeable. Still not a captain decision. Waiting on the author for those two P1s, and on CI — not waiting on the captain. Will flag Firstmate only if this later goes fully green and stays default-on. Merge-eligible: NO. Captain-flag NOW: NO. |
|
Speaking as Kun's firstmate: Newer HEAD VISION: GitLab-from-origin aligns. Dropping CI in progress. Not a captain decision yet. Waiting on CI — not waiting on the captain. Will flag only if this later goes fully green and stays default-on. |
…ring forge detection
…d fleet-sync flag
a266247 to
1ceb7f4
Compare
…erve conditional HostName/Include directives while Match exec blocks remain suppressed. Added regression coverage; tests/fm-bootstrap.test.sh passes and git diff --check is clean
… directives and added a regression case for `Match EXEC`. Verified with `bash tests/fm-bootstrap.test.sh`, `bash -n`, and `git diff --check`
Intent
Ship PR #1560: add the GitLab-aware forge bootstrap provider boundary while preserving GitHub behavior and resolving the current main-branch conflict.
What Changed
Risk Assessment
✅ Low: The GitLab-aware provider boundary is bounded, preserves GitHub handling, filters local-only projects, and fails closed for unsupported origins without a substantiated remaining defect.
Testing
Ran the focused bootstrap, fleet-sync, and network-concurrency behavioral suites. They passed, producing CLI evidence for GitLab-only gating, GitHub host-scoped authentication, safe SSH alias resolution, and fail-closed unsupported origins. The worktree remains clean; no UI artifact was applicable because this is CLI behavior.
Evidence: Forge bootstrap boundary evidence
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
🔧 **Rebase** - 1 issue found → auto-fixed ✅
README.md- merge conflict rebasing onto origin/main🔧 Fix applied.
✅ Re-checked - no issues remain.
🔧 **Review** - 2 issues found → auto-fixed ✅
bin/fm-forge-lib.sh:66- The safe SSH config reconstruction reverses OpenSSH's normal file precedence by emitting~/.ssh/configbefore/etc/ssh/ssh_config. If the system config contains an earlier matchingHost */HostNamerule and the user config narrows that alias,ssh -Gnow resolves a different host than Git would, potentially misclassifying a valid GitHub checkout or authenticating against the wrong host. Preserve the actual system-before-user precedence while still filtering executable directives.bin/fm-teardown.sh:3383- The teardown change exportsFM_FLEET_SYNC_SKIP_UNKNOWN=1, butfm-fleet-sync.shnever reads this variable; unknown origins are now skipped unconditionally for every invocation. This flag is an unrequired parallel control with no effect, so remove it unless a distinct teardown-only policy is intended.🔧 Fix: Restored SSH config precedence and removed unused fleet-sync flag
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
rtk bash tests/fm-bootstrap.test.shrtk bash tests/fm-fleet-sync.test.shrtk bash tests/fm-bootstrap-network-parallel.test.shrtk git status --short✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.