konveyor / konveyor/agentic-controller

Decide Hub shared/scm adoption + git-credential isolation, reconciled with OpenShell

Open
#85 1 comment 0 reactions 1 assignee Claimed by @savitharaghunathan View on GitHub
kind/feature ready-for-human stream/harness
Dominant language
Go
Stars
2
Forks
12
Avg merge
2d 5h
Merged PRs (30d)
41

Description

**Why this is `ready-for-human`:** this is a coupled design decision with
cross-ADR judgment calls, not a delegatable implementation task. Deferred
from #142 (ADR 0016 + ADR 0017) to post-dev-preview.

## Decide, as one coherent design

1. **Hub `shared/scm` adoption** (the original scope of this issue) —
replace the harness's in-process go-git backend with
`tackle2-hub/shared/scm.Git`, so there's one git backend across Hub and
the harness instead of two. This removes `StripCredentials` but
introduces an on-disk credential-helper file (`scmHome/.git-credentials`)
for the run's duration. See ADR 0016 (draft on #142).

2. **Git-credential isolation from goose** — the on-disk credential file
breaks ADR 0007's isolation claim: goose runs as a subprocess sharing
the harness UID, so file-mode bits don't keep it out. ADR 0017 (draft on
#142) proposes moving goose into its own native-sidecar container under a
distinct UID. This would be the operator's first-ever `securityContext`
usage, a second pod container, and a second image user.

3. **Reconcile with OpenShell (ADR 0004, Accepted).** OpenShell's privacy
router already "strips sandbox-supplied credentials and injects real
backend credentials," and its supervisor "handles credential isolation."
Before we commit to the goose-sidecar isolation model, decide whether
OpenShell simply owns this problem — otherwise we risk building isolation
machinery that OpenShell makes redundant.

## Why deferred

- (1) and (2) are a package: adopting `shared/scm` is what puts the
credential on disk, which is the only reason (2) exists. They must be
decided together.
- Both are bigger than the dev-preview (v0.11.0) sprint and don't block it —
the current go-git + credential-strip path works today.
- The cleanest resolution may be "OpenShell owns credential isolation," so
this should be decided alongside the OpenShell integration, not ahead of
it.

## Inputs

- PR #142 — full analysis and alternatives (setuid helper, `CAP_SETUID`,
`GIT_ASKPASS`, native sidecar, scoped credentials). Preserve; do not lose.
- ADRs: 0004 (OpenShell), 0007 (harness thin runner), 0008 (harness owns pod
ACP port), 0016 (draft), 0017 (draft).

## Outcome

An accepted ADR (or a supersession of 0007) covering all three points, with
implementation issues to follow.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.