Skip to content

fix(megarepo): never persist credentialed clone URLs - #2292

Merged
schickling-assistant merged 4 commits into
mainfrom
fix/clone-url-credentials-redo
Nov 3, 2026
Merged

schickling-assistant merged 4 commits into
mainfrom
fix/clone-url-credentials-redo

Conversation

@schickling-assistant

@schickling-assistant schickling-assistant commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Credentialed HTTP(S) source and legacy lock URLs could persist secrets in origin/configuration and leak through tracing or store paths. Stripping only inside synchronization splits source identity across preflight and store operations.

Goal

Reject credentialed member and lock inputs before downstream identity derivation, persistence, or instrumentation. Authentication stays with credential helpers or SSH.

Decisions

  • Share fail-closed source validation across configuration members, persisted lock URLs, the source parser, and mr add input.
  • Return redacted userinfo and guidance to fix the lock/config and use a credential helper or SSH.
  • Never rewrite accepted source identities inside synchronization; retain only small clone-argument/span sanitization as defense in depth. Writer locks are unchanged.
  • Decode boundaries explicitly require reportInput to remain disabled, because enclosing schema issues can otherwise retain raw input. Repository audit found no enabling decode option or megarepo issue-input serializer.
  • Extend existing tests and README; real-Git coverage stays in the decision-0026 unbounded suite.

Verification

  • Focused configuration, lock, Git, member, timeout integration, and writer-lock suites: 6 files, 204 tests passed.
  • devenv tasks run buck2:quick: passed.
  • CI=1 devenv tasks run lint:check: passed.
  • JSON/KDL tests reject username/password, token-only, and percent-encoded userinfo; SSH/scp remain accepted.
  • Legacy credentialed lock is rejected with safe guidance. Actual configuration and lock decode errors serialize both Cause and issue without fixture secrets.
  • Direct clone regression verifies clean persisted origin and captured span attributes against a local remote.
  • No generated source changes. Buck daemons stopped and outputs cleaned after use.

Complexity

One shared rejection schema and redaction boundary; small clone defense in depth; no new dependency or locking abstraction.

Concerns

Credentialed HTTP(S) configuration and legacy locks now fail closed. Remove embedded credentials and configure a credential helper or SSH. Enabling schema reportInput would violate the documented credential-retention constraint.

Friction & bottlenecks

Review caught source-identity splitting, legacy-lock acceptance, and an inaccurate input-retention claim; corrected all three with structured-error regression coverage.

Follow-ups

None.

References

See #1525.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree unknown

agent-identity: agent/effect-utils/effect-utils-manager
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.10.2
agent-runtime: OMP 18.10.2
agent-model: anthropic/claude-opus-5-5
@schickling-assistant schickling-assistant added the type:bug Something broken or a regression · Set: manual label Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Storybook Previews

Subject Status Report Details Updated
devbar success devbar preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-react success effect-react preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-rpc-explorer-react success effect-rpc-explorer-react preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-schema-form-aria success effect-schema-form-aria preview deployed Preview is ready 2026-11-03 09:45 UTC
genie success genie preview deployed Preview is ready 2026-11-03 09:45 UTC
gh-ci-utils success gh-ci-utils preview deployed Preview is ready 2026-11-03 09:45 UTC
megarepo success megarepo preview deployed Preview is ready 2026-11-03 09:45 UTC
meters success meters preview deployed Preview is ready 2026-11-03 09:45 UTC
notion-cli success notion-cli preview deployed Preview is ready 2026-11-03 09:46 UTC
notion-md success notion-md preview deployed Preview is ready 2026-11-03 09:46 UTC
notion-react success notion-react preview deployed Preview is ready 2026-11-03 09:46 UTC
react-inspector success react-inspector preview deployed Preview is ready 2026-11-03 09:46 UTC
tui-react success tui-react preview deployed Preview is ready 2026-11-03 09:46 UTC
Report history

PR 2292 · 2026-11-03 09:46 UTC

Subject Status Report Details Updated
devbar success devbar preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-react success effect-react preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-rpc-explorer-react success effect-rpc-explorer-react preview deployed Preview is ready 2026-11-03 09:45 UTC
effect-schema-form-aria success effect-schema-form-aria preview deployed Preview is ready 2026-11-03 09:45 UTC
genie success genie preview deployed Preview is ready 2026-11-03 09:45 UTC
gh-ci-utils success gh-ci-utils preview deployed Preview is ready 2026-11-03 09:45 UTC
megarepo success megarepo preview deployed Preview is ready 2026-11-03 09:45 UTC
meters success meters preview deployed Preview is ready 2026-11-03 09:45 UTC
notion-cli success notion-cli preview deployed Preview is ready 2026-11-03 09:46 UTC
notion-md success notion-md preview deployed Preview is ready 2026-11-03 09:46 UTC
notion-react success notion-react preview deployed Preview is ready 2026-11-03 09:46 UTC
react-inspector success react-inspector preview deployed Preview is ready 2026-11-03 09:46 UTC
tui-react success tui-react preview deployed Preview is ready 2026-11-03 09:46 UTC

PR 2292 · 2026-11-03 08:12 UTC

Subject Status Report Details Updated
devbar success devbar preview deployed Preview is ready 2026-11-03 08:12 UTC
effect-react success effect-react preview deployed Preview is ready 2026-11-03 08:12 UTC
effect-rpc-explorer-react success effect-rpc-explorer-react preview deployed Preview is ready 2026-11-03 08:12 UTC
effect-schema-form-aria success effect-schema-form-aria preview deployed Preview is ready 2026-11-03 08:12 UTC
genie success genie preview deployed Preview is ready 2026-11-03 08:12 UTC
gh-ci-utils success gh-ci-utils preview deployed Preview is ready 2026-11-03 08:12 UTC
megarepo success megarepo preview deployed Preview is ready 2026-11-03 08:12 UTC
meters success meters preview deployed Preview is ready 2026-11-03 08:12 UTC
notion-cli success notion-cli preview deployed Preview is ready 2026-11-03 08:12 UTC
notion-md success notion-md preview deployed Preview is ready 2026-11-03 08:12 UTC
notion-react success notion-react preview deployed Preview is ready 2026-11-03 08:12 UTC
react-inspector success react-inspector preview deployed Preview is ready 2026-11-03 08:12 UTC
tui-react success tui-react preview deployed Preview is ready 2026-11-03 08:12 UTC

PR 2292 · 2026-11-03 07:59 UTC

Subject Status Report Details Updated
devbar success devbar preview deployed Preview is ready 2026-11-03 07:58 UTC
effect-react success effect-react preview deployed Preview is ready 2026-11-03 07:58 UTC
effect-rpc-explorer-react success effect-rpc-explorer-react preview deployed Preview is ready 2026-11-03 07:58 UTC
effect-schema-form-aria success effect-schema-form-aria preview deployed Preview is ready 2026-11-03 07:58 UTC
genie success genie preview deployed Preview is ready 2026-11-03 07:58 UTC
gh-ci-utils success gh-ci-utils preview deployed Preview is ready 2026-11-03 07:58 UTC
megarepo success megarepo preview deployed Preview is ready 2026-11-03 07:58 UTC
meters success meters preview deployed Preview is ready 2026-11-03 07:58 UTC
notion-cli success notion-cli preview deployed Preview is ready 2026-11-03 07:59 UTC
notion-md success notion-md preview deployed Preview is ready 2026-11-03 07:59 UTC
notion-react success notion-react preview deployed Preview is ready 2026-11-03 07:59 UTC
react-inspector success react-inspector preview deployed Preview is ready 2026-11-03 07:59 UTC
tui-react success tui-react preview deployed Preview is ready 2026-11-03 07:59 UTC

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Pipeline traces

24 jobs; 7 successful, 0 failed, 0 cancelled, 17 skipped

Pipeline jobs and steps waterfall

Job Status Wall time Delta vs main p50 Trace
default-ref-policy success 0m 49s +0.0s (0.0%; n=7) not instrumented
pr-buck2-tools success 5m 56s no main baseline Explore
test-megarepo-store-gc success 6m 48s no main baseline Explore
quality success 12m 11s no main baseline Explore
source-shape success 0m 49s no main baseline not instrumented
All other jobs (19)
Job Status Wall time Delta vs main p50 Trace
tested-tree success 0m 03s -7.0s (-70.0%; n=7) not instrumented
pr-reviews-resolved success 0m 06s +2.0s (50.0%; n=7) not instrumented
test-live-deploy-ci-tools skipped unavailable duration unavailable unavailable
publish-products skipped unavailable duration unavailable unavailable
promote-published skipped unavailable duration unavailable unavailable
weaver skipped unavailable duration unavailable unavailable
pr-a-inert-buck skipped unavailable duration unavailable unavailable
build-products skipped unavailable duration unavailable unavailable
test[runner=namespace-profile-linux-x86-64] skipped unavailable duration unavailable unavailable
test-playwright-utils skipped unavailable duration unavailable unavailable
test-integration-restate skipped unavailable duration unavailable unavailable
test[runner=namespace-profile-macos-arm64] skipped unavailable duration unavailable unavailable
cargo skipped unavailable duration unavailable unavailable
test-playwright-tui-react skipped unavailable duration unavailable unavailable
trusted-buck2-remote-cache-proof skipped unavailable duration unavailable unavailable
test-integration-notion skipped unavailable duration unavailable unavailable
deploy-storybooks skipped unavailable duration unavailable unavailable
consumer-smoke skipped unavailable duration unavailable unavailable
notify-alignment skipped unavailable duration unavailable unavailable

Main baseline samples (by job): tested-tree n=7, default-ref-policy n=7, pr-buck2-tools n=0, test-megarepo-store-gc n=0, pr-reviews-resolved n=7, test-live-deploy-ci-tools n=7, publish-products n=7, promote-published n=7, quality n=0, weaver n=0, pr-a-inert-buck n=0, build-products n=0, test[runner=namespace-profile-linux-x86-64] n=0, test-playwright-utils n=0, test-integration-restate n=0, test[runner=namespace-profile-macos-arm64] n=0, cargo n=0, test-playwright-tui-react n=0, trusted-buck2-remote-cache-proof n=7, test-integration-notion n=7, deploy-storybooks n=7, consumer-smoke n=7, source-shape n=0, notify-alignment n=7.
Selected main run IDs: 41592509695, 41578249550, 41576405668, 41562937006, 41553095319, 41530939005, 41517480317, 41425546624, 41407774253, 41367940679, 41365767770, 41360433876, 41355035143, 41351722692, 41342714443, 41341266910, 41337853204, 41334466707, 41277009116, 41262535058.
Task-level durations are not included. Trace links may be empty while export, indexing, or retention is pending.

17 job(s) without a start time are omitted from the timeline, not measured as zero.

agent-identity: agent/effect-utils/effect-utils-manager
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.10.2
agent-runtime: OMP 18.10.2
agent-model: anthropic/claude-opus-5-5
agent-identity: agent/effect-utils/effect-utils-manager
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.10.2
agent-runtime: OMP 18.10.2
agent-model: anthropic/claude-opus-5-5
@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Independent review GO at exact head 623d630, after 3 rounds. Round 1 NO-GO: stripping credentials during sync split the source identity (the store preflight still derived token@host paths), and lock and add still persisted the original URL. Round 2 NO-GO: legacy locks were still accepted, and the retention of schema issue input was undocumented. Final design: credentialed HTTP(S) sources fail closed at one shared schema, which covers config (JSON/KDL, nested), mr add and lock decoding. The guidance is redacted and tells the user to fix the config or lock and use a credential helper or SSH. ssh:// and scp forms are still accepted. Sync makes no identity rewrite. The clone sanitizer remains as defense in depth. Tests serialize the full Cause and SchemaIssue for config and legacy locks and assert that no secret survives. reportInput is not used in the repo; that constraint is documented at both decode boundaries. Behavior note: an existing lock that already contains a credentialed URL now fails with that guidance. Supersedes #1525.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant
schickling-assistant marked this pull request as ready for review November 3, 2026 08:03
@github-actions
github-actions Bot requested a review from schickling November 3, 2026 08:05
@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Merge record: CI is green at exact head 623d630, and the independent exact-head GO is above. Enqueued.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Merge record (effect-utils-manager): head 623d630, CI green (36 checks), independent review GO at this head, no Hypermerge label. Enqueuing.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant
schickling-assistant added this pull request to the merge queue Nov 3, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 3, 2026
agent-identity: agent/effect-utils/effect-utils-manager
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.10.2
agent-runtime: OMP 18.10.2
agent-model: anthropic/claude-opus-5-5
@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

GO carried to exact head f4e17c0. The delta from the reviewed head 623d630 is one hunk in cli/commands/add.ts: the AddCommandError message for an ordinary invalid reference goes back to the historical generic text (the CLI contract baseline that ejected run 41608837823). Credentialed references still use the redacted credential guidance. The bounded Buck megarepo lane passes locally.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Merge record: CI is green at exact head f4e17c0, with GO carried above. Re-enqueued.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant

Copy link
Copy Markdown
Collaborator Author

Merge record (effect-utils-manager): head f4e17c0, CI green (35 checks), independent review GO at this head, no Hypermerge label. Enqueuing.

Posted on behalf of @schickling
field value
agent_identity agent/effect-utils/effect-utils-manager
session 01a1b244
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree effect-utils/main

@schickling-assistant
schickling-assistant added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 48eab4c Nov 3, 2026
35 checks passed
@schickling-assistant
schickling-assistant deleted the fix/clone-url-credentials-redo branch November 3, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:bug Something broken or a regression · Set: manual

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant