Skip to content

fix(bitbucket): show mention names without changing editable source - #21648

Open
juliusmarminge wants to merge 3582 commits into
pull-request-12/mention-display-contractfrom
pull-request-12/bitbucket-mention-display
Open

juliusmarminge wants to merge 3582 commits into
pull-request-12/mention-display-contractfrom
pull-request-12/bitbucket-mention-display

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Rebuilt from @0pilatos0’s #14787, which identified the same-object Bitbucket mention metadata and the need to keep editable Markdown intact.

Bitbucket descriptions and comments show account IDs instead of names. Read labels only from the same response object's rendered mention metadata, and substitute prose tokens in optional display fields. Preserve exact authored text outside those ranges, including code, links, escapes, and HTML. Missing or conflicting metadata falls back to raw text; no account lookup or setting is added.

Web/desktop Summary, Timeline and Code readers and the corresponding mobile readers consume display fields. Editors, outgoing writes, drafts and agent context retain raw source. Native diff rows use a paired plain display string, avoiding Markdown conversion that lost authored source. Depends on #21647.

Verification:

  • PR-specific tests reduced from 38 to four cases in existing suites; removed two one-off test files. The original test-bearing selection went from 209 tests in four files to 180 in three, retaining pre-existing coverage. Regression assertions fail on the old behavior. Final affected selection: 190/190 in six files.
  • Scoped typechecks for contracts, source-control-core, Bitbucket, server, web and mobile; changed-file lint, formatting and diff checks pass.
  • Two fresh full-diff rounds by independent Opus and Sol reviewers. Fixed unclosed inline tags masking later mentions and native display stripping unrelated source. Round two found no code blockers.
  • Linux browser against an isolated local Bitbucket API fixture through the real HTTP adapter, decoder, RPC and client: Summary description, ordinary and inline comments, replies, unresolved/resolved Timeline entries, missing-metadata fallback, Code annotation display. Description, normal-comment and inline-comment editors opened raw tokens; cancel restored display; captured PUT requests retained raw account tokens. The normal comment was also saved through Timeline. Agent context was traced and unit-tested, without starting an agent.
  • Current-head build/typecheck, lint, package tests, Rust, release smoke and all eight server shards passed. Test Web and the aggregate Check passed on the single rerun; the initial unrelated WorkflowOpeningBlock highlighting and AttachmentFilePreview URL-recovery failures cleared. The same two browser suites passed locally (6/6). The duplicate native fingerprint runs were cancelled; the replacement run passed. Macroscope requires human approval of this parser/contract change. Human approval and the bottom layer’s remaining web CI failure block stack merge readiness.

Before (actual pinned main) and after (current stack head), same fixture, 1280×800, same viewport and scroll. Both captures use a page-only font substitution because this browser has no fallback fonts; no font/product changes are in the diff.

Before: raw Bitbucket account IDs

After: names with literal code and unknown-ID fallback preserved

Timeline: readable ordinary, inline, reply and resolved comments

Code: readable inline annotation and reply

Edit/cancel/save recording · Captured raw save payloads

The API fixture is synthetic: live Bitbucket Cloud metadata, including rendered description fields and ap-mention attributes, still needs verification with a real account. No runtime verification on macOS, Windows, iOS, Android, Electron desktop, or real remote/relay/tunnel connections. Mobile has type and focused logic coverage only. Human approval of the cross-layer parser/contract change remains required. Unmerged.

Implemented in T3 Code with Codex gpt-6-astra (tests), gpt-6.1-sol (implementation), and Claude claude-opus-5-5 / Codex gpt-6-sol (review).

Fixes #14771

@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 19, 2026
@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 19, 2026
@juliusmarminge juliusmarminge changed the title pull request 12/bitbucket mention display fix(bitbucket): show mention names without changing editable source Oct 19, 2026
@macroscopeapp

ghost commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — The changes add a lint suppression in .pnpmfile.cjs:31 that requires human review. The visible scope also includes release and infrastructure workflows with unresolved token-exposure and relay-lifecycle findings; the incomplete remainder has not been certified.

Needs human approval because:

  • 5 blocking correctness issues found at or above your repo's Minimum Blocking Severity

No code changes detected at e710dbf. Prior analysis still applies.

Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more.

@github-actions

ghost commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 5.0 KiB — 6.8 KiB ✅
Codex Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Codex Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Codex Live turn WebSocket decoded — 21.5 KiB — 24.4 KiB ✅
Codex Live turn messages — 1 — 8 ✅
Claude Total thread wire — 5.0 KiB — 6.8 KiB ✅
Claude Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Claude Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Claude Live turn WebSocket decoded — 21.9 KiB — 24.4 KiB ✅
Claude Live turn messages — 1 — 8 ✅

Baseline: unavailable · PR result: e710dbf · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

ghost commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

We couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting @coderabbitai full review.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review

No actionable comments were generated in the recent review.

Walkthrough

The change resolves Bitbucket mention tokens into display fields while retaining raw text, carries those fields through pull-request details, and uses them in mobile and web discussion views. Web previews parse Markdown, and editing a comment clears its stale display fields.

Changes: Mention display text

Layer / File(s) Summary
Decode rendered mentions
packages/source-control-bitbucket/src/server/bitbucketPullRequestJson.ts, packages/source-control-bitbucket/src/server/bitbucketMentions.ts, packages/source-control-bitbucket/src/server/bitbucketPullRequestJson.test.ts, packages/source-control-bitbucket/package.json
Bitbucket decoding uses rendered HTML to resolve mention references into displayBody and displayText, while preserving raw bodies. Tests cover mention substitutions, protected Markdown content, and missing or malformed HTML.
Forward display fields
packages/source-control-bitbucket/src/server/BitbucketPullRequestProvider.ts, apps/server/src/pullRequest/PullRequestService.ts
The provider and service pass the decoded display body through pull-request details.
Render and edit display text
apps/mobile/src/features/pull-requests/*, apps/web/src/components/pullRequest/*, apps/web/package.json
Mobile and web views prefer display bodies when present. Web previews convert Markdown to compact text; editing a comment clears its display fields. Diff-comment previews use display text and skip threads without a diff anchor. The PullRequestCodeTab interpolation line is textually equivalent and shows no behavior change.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant BitbucketAPI
  participant bitbucketPullRequestJson
  participant bitbucketMentionDisplay
  participant BitbucketPullRequestProvider
  participant PullRequestService
  participant PullRequestClients
  BitbucketAPI->>bitbucketPullRequestJson: raw text and rendered HTML
  bitbucketPullRequestJson->>bitbucketMentionDisplay: body and HTML
  bitbucketMentionDisplay-->>bitbucketPullRequestJson: displayBody and displayText
  bitbucketPullRequestJson->>BitbucketPullRequestProvider: decoded display fields
  BitbucketPullRequestProvider->>PullRequestService: pull-request detail
  PullRequestService->>PullRequestClients: detail with displayBody
Loading

Possibly related PRs

  • pingdotgg/t3code#14787: Both changes resolve Bitbucket mention tokens for display while retaining raw Markdown, and pass display fields through decoding and pull-request rendering.

Suggested reviewers: maria-rcks

Merge Risk: Minimal · previous review c5a1f

Bitbucket mentions now show display names with a safe fallback to the original text. No merge-blocking risk was identified.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description explains the problem and change, and it provides detailed verification results, screenshots, and limitations. It does not meet the scope-and-approval requirement: it says maintainer ap… Add a link to the triaged issue or maintainer discussion and include the explicit maintainer approval of the change's direction and scope. If approval has not been granted, obtain it and update the description before merging.
Passed Passed checks: 3 passed

Check name Status Explanation
Title check Passed The title clearly identifies the Bitbucket mention fix and the preservation of editable source text. It is concise and directly matches the primary change.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the problem and change, and it provides detailed verification results, screenshots, and limitations. It does not meet the scope-and-approval requirement: it says maintainer approval is still required and does not provide an approval comment for this cross-layer change.

Resolution

Add a link to the triaged issue or maintainer discussion and include the explicit maintainer approval of the change's direction and scope. If approval has not been granted, obtain it and update the description before merging.

Finishing Touches

Fix failing CI checks

  • Commit to this branch
  • Create a new PR
Generate docstrings

  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
ℹ️ Recent review info

⚙️ Run configuration

  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 296ef142-806c-4d61-9f93-ceacbc0a1018
📥 Commits

Reviewing files that changed from the base of the PR and between 7b6ad67 and c5a1fa7.

⛔ Files ignored due to path filters: 1

  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing: 18

  • apps/mobile/src/features/pull-requests/PullRequestDiscussionScreen.tsx
  • apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx
  • apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx
  • apps/mobile/src/features/pull-requests/pullRequestDiffComments.test.ts
  • apps/mobile/src/features/pull-requests/pullRequestDiffComments.ts
  • apps/server/src/pullRequest/PullRequestService.ts
  • apps/web/package.json
  • apps/web/src/components/pullRequest/PullRequestCodeTab.tsx
  • apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx
  • apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx
  • apps/web/src/components/pullRequest/pullRequestDetail.logic.test.ts
  • apps/web/src/components/pullRequest/pullRequestDetail.logic.ts
  • apps/web/src/components/pullRequest/pullRequestMarkdown.logic.ts
  • packages/source-control-bitbucket/package.json
  • packages/source-control-bitbucket/src/server/BitbucketPullRequestProvider.ts
  • packages/source-control-bitbucket/src/server/bitbucketMentions.ts
  • packages/source-control-bitbucket/src/server/bitbucketPullRequestJson.test.ts
  • packages/source-control-bitbucket/src/server/bitbucketPullRequestJson.ts

Limit details: You’ve used all 10 included reviews currently available.

Vincent Guillebaud and others added 19 commits November 8, 2026 21:32
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: danddanddand <[email protected]>
Co-authored-by: whoisaldo <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: juliusmarminge <[email protected]>
Co-authored-by: Claudesaul <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: PR Batch Tester <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: PR Batch Tester <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: GPT-6.1 Sol <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
maria and others added 20 commits November 11, 2026 03:19
Toggle and copy icons swap instantly through lucide-react again. Drops the
MorphIcon wrapper plus the morphicons and vanilla lucide dependencies that
only it used.
## Problem

OpenCode shell tools can return when a background command launches. T3 now keeps that command in its existing background activity UI until it exits or is stopped, retains captured output, and preserves native completion notifications and continuation turns.

## Change

The adapter scopes tracking and Stop to the owning session and its descendants. Recovery uses the experimental shell-job inventory on OpenCode 2.2.6+, with shell-list fallback on supported older servers. After a cold resume, recovered output, terminal state, and idle roster snapshots persist through the existing session event pump before another turn starts. New session-scoped activity is restricted to attached threads and uses the persisted run identity when available so it stays in the current timeline. Polling reads run outside the adapter lock, with stale results discarded after Stop, exit, or another read. Recovery and Stop retain bounded I/O. Final reads retain the output tail, including diagnostics beyond the first four pages. The SDK remains pinned to 2.0.28, and main's native goals, todo checklists, and image jobs are preserved.

## Scope and approval

Maintainer-directed implementation of native OpenCode background shell tracking from the T3 Code handoff. Scope covers shell lifecycle, output retention, recovery, ownership, and Stop using existing background activity services and rendering. The session event pump extension is needed to persist recovered activity while no turn is active. No SDK upgrade, new UI, or provider-wide infrastructure is included. The author, Yash-Singh1, is explicitly listed in the repository's [contribution-triage exemptions](https://github.com/pingdotgg/t3code/blob/main/.github/TRIAGE_EXEMPTIONS.td), verified against upstream main.

## Verification

Validation: `vp run check:changed` passes. Focused regressions cover output paging, exit codes, idle recovery, persisted run anchors, ownership, cancellation failures, and a stalled poll that must not block turn completion or Stop. Real OpenCode UI turns used MiniMax M3.1 Flash Free against isolated development state and covered launch, Details and retained output, natural completion, continuation, and explicit Stop. Cold-idle persistence and remote-server paths use protocol fixtures; native mobile was not exercised.

GPT 6.1 Sol through the Codex harness.
…ound (#32151)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
… into its own folder (#32681)

Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: maria-rcks <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
…cket-mention-display

# Conflicts:
#	apps/mobile/src/features/pull-requests/PullRequestDiscussionScreen.tsx
#	apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx
#	apps/mobile/src/features/pull-requests/pullRequestDiffComments.test.ts
#	apps/mobile/src/features/pull-requests/pullRequestDiffComments.ts
#	apps/web/package.json
#	apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx
#	apps/web/src/components/pullRequest/pullRequestDetail.logic.test.ts
#	apps/web/src/components/pullRequest/pullRequestDetail.logic.ts
#	packages/source-control-bitbucket/src/server/bitbucketPullRequestJson.ts
#	pnpm-lock.yaml
…mes are shown

Map a checkbox in the displayed description back to the same task in the
raw source, and show display text only while no local draft is in force.

AI-assisted; verified with the tests and tools listed above.
…en it cannot be cloned (#33058)

Co-authored-by: Ajraba04 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
FINGERPRINT: ${{ steps.client.outputs.fingerprint }}
CLIENT: ${{ steps.client.outputs.link }}
GROUP: ${{ steps.update.outputs.group }}
run: node .trusted/.github/scripts/mobile-preview-comment.cjs

ghost Nov 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 High workflows/mobile-eas-preview-fork.yml:229

Fork-controlled scripts can replace .trusted/.github/scripts/mobile-preview-comment.cjs before this step executes it, so the replacement runs with GH_TOKEN and the job’s pull-requests: write permission. This lets the fork modify other PRs’ comments or labels; the Android build job repeats the same trust-boundary problem. Run commenting in a separate trusted job that never executes fork code.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/workflows/mobile-eas-preview-fork.yml around line 229:

Fork-controlled scripts can replace `.trusted/.github/scripts/mobile-preview-comment.cjs` before this step executes it, so the replacement runs with `GH_TOKEN` and the job’s `pull-requests: write` permission. This lets the fork modify other PRs’ comments or labels; the Android build job repeats the same trust-boundary problem. Run commenting in a separate trusted job that never executes fork code.

# Destroy also runs the preview tunnel sweep, which is part of the stack.
- name: Destroy preview stage
run: vp run --filter t3code-relay destroy --stage "$STAGE" --yes --no-input

ghost Nov 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium workflows/relay-preview-cleanup.yml:80

A delayed closed or unlabeled run can destroy the active pr-<n> stage after the PR has been reopened and redeployed, and a stale closed run can also remove its deployment label. The concurrency group prevents overlap but does not guarantee event ordering, and cleanup_pr never checks the PR’s current state or labels before destroying the stage; recheck eligibility after acquiring the lock and skip stale runs.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/workflows/relay-preview-cleanup.yml around line 80:

A delayed `closed` or `unlabeled` run can destroy the active `pr-<n>` stage after the PR has been reopened and redeployed, and a stale `closed` run can also remove its deployment label. The concurrency group prevents overlap but does not guarantee event ordering, and `cleanup_pr` never checks the PR’s current state or labels before destroying the stage; recheck eligibility after acquiring the lock and skip stale runs.

# GITHUB_TOKEN do not start new runs, so this does not redeploy.
- name: Restore the teardown marker after a failed destroy
if: failure() && github.event.action == 'unlabeled'
run: gh pr edit "${{ github.event.pull_request.number }}" --repo "$GITHUB_REPOSITORY" --add-label relay:preview

ghost Nov 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium workflows/relay-preview-cleanup.yml:99

When teardown fails after relay:preview is removed from an open PR, this step restores the deployment opt-in, so a later synchronize can redeploy the preview; the retry sweep then ignores that PR because it lists only closed PRs and skips open ones. Use a separate teardown marker and retry disabled previews without restoring relay:preview.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/workflows/relay-preview-cleanup.yml around line 99:

When teardown fails after `relay:preview` is removed from an open PR, this step restores the deployment opt-in, so a later `synchronize` can redeploy the preview; the retry sweep then ignores that PR because it lists only closed PRs and skips open ones. Use a separate teardown marker and retry disabled previews without restoring `relay:preview`.

});
const body = JSON.stringify({ body: render(state, runUrl) });
if (existing) {
await github(`/repos/${repository}/issues/comments/${existing.id}`, { method: "PATCH", body });

ghost Nov 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium scripts/mobile-preview-comment.cjs:113

Concurrent android-build and android jobs can overwrite each other's comment state: the older build can restore a stale fingerprint/group, or the update can erase the newly added install link. Each PATCH replaces the complete body using a state read before either write, so mergeState's fingerprint guard checks a stale snapshot; serialize both writers per PR across the read/merge/write transaction.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/scripts/mobile-preview-comment.cjs around line 113:

Concurrent `android-build` and `android` jobs can overwrite each other's comment state: the older build can restore a stale fingerprint/group, or the update can erase the newly added install link. Each PATCH replaces the complete body using a state read before either write, so `mergeState`'s fingerprint guard checks a stale snapshot; serialize both writers per PR across the read/merge/write transaction.

Comment on lines +15 to +24
concurrency:
group: relay-preview-${{ github.event.pull_request.number }}
cancel-in-progress: false

jobs:
deploy_preview:
name: Deploy relay preview
if: >-
github.event.pull_request.head.repo.full_name == github.repository &&
contains(github.event.pull_request.labels.*.name, 'relay:preview')

ghost Nov 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium workflows/relay-preview.yml:15

A labeled run after relay:preview is removed replaces the queued cleanup run for the same PR, leaving the preview resources running even though deploy_preview is skipped. Workflow-level concurrency applies before the job’s eligibility check; move the concurrency block onto deploy_preview after its if condition so skipped runs cannot replace cleanup.

- concurrency:
-   group: relay-preview-${{ github.event.pull_request.number }}
-   cancel-in-progress: false
-
 jobs:
   deploy_preview:
     name: Deploy relay preview
     if: >-
       github.event.pull_request.head.repo.full_name == github.repository &&
       contains(github.event.pull_request.labels.*.name, 'relay:preview')
+    concurrency:
+      group: relay-preview-${{ github.event.pull_request.number }}
+      cancel-in-progress: false
     runs-on: blacksmith-8vcpu-ubuntu-2404
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/workflows/relay-preview.yml around lines 15-24:

A `labeled` run after `relay:preview` is removed replaces the queued cleanup run for the same PR, leaving the preview resources running even though `deploy_preview` is skipped. Workflow-level concurrency applies before the job’s eligibility check; move the concurrency block onto `deploy_preview` after its `if` condition so skipped runs cannot replace cleanup.

@juliusmarminge

ghost commented Nov 11, 2026

Copy link
Copy Markdown
Member Author

The automated pipeline stopped on this pull request and will not merge it:

the proof has no capture anyone can open:

  • Readable mentions in Summary, Timeline, Code, inline comments, replies, and descriptions were not observed on either commit.
  • Preservation of account tokens in editors and outgoing writes, functional mentions after saving, literal code tokens, and missing or conflicting metadata were not verified.
  • Environment Bitbucket credential variables were absent; no authenticated Bitbucket repository was established. The scenario project/thread helpers do not directly create Bitbucket PR content. A synthetic Bitbucket API fixture was not implemented.

It stays open for a person to finish or close.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:L 100-499 changed lines (additions + deletions). vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Bitbucket PR comments show raw account IDs instead of mention names