Skip to content

feat(pull-requests): open native Gitea revert pull requests - #15

Merged
kalvenschraut merged 6 commits into
gitea/trackingfrom
gitea/revert
Sep 8, 2026
Merged

kalvenschraut merged 6 commits into
gitea/trackingfrom
gitea/revert

Conversation

@kalvenschraut

@kalvenschraut kalvenschraut commented Sep 5, 2026 •

Copy link
Copy Markdown
Member

Merged Gitea pull requests can open a native revert PR through T3’s existing action menu. The action is available only when the server advertises native revert support and the viewer can write to the repository. Stock servers omit it.

Uses the companion Gitea revert endpoint RTVision/gitea#12, which creates a new branch and PR while preserving the target branch. Focused cases cover feature discovery and native endpoint dispatch. Final integrated focused tests, server typecheck, and targeted lint pass.

Final stack validation at 256fd6fe5: 228 focused tests passed, followed by 61 API/workflow cases and the final team-recovery regression; server typecheck and targeted lint passed. The live settle-on-merge E2E previously passed with fixture cleanup. Companion Gitea backend and focused integration tests passed, including native revert across all five merge styles.

Model: GPT-6 Astra. Harness: Codex; reviewed with Fable 5.1.

Summary by CodeRabbit

  • New Features
    • Added support for reverting pull requests on Gitea instances that provide native revert functionality.
    • The Revert action is now shown only when the viewer has write access and the server supports the feature.
    • Unsupported revert attempts now display an explicit error.

@kalvenschraut

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 5c79d21c-3ea2-4832-9118-909249f849f5

📥 Commits

Reviewing files that changed from the base of the PR and between 60abc41e19da1c632461d68237e37968f7159aa6 and b70a0f92d28a98304f278e5f019755492fac6915.

📒 Files selected for processing (4)
  • apps/server/src/pullRequest/GiteaPullRequestApi.test.ts
  • apps/server/src/pullRequest/GiteaPullRequestApi.ts
  • apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts
  • apps/server/src/pullRequest/GiteaPullRequestProvider.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

Gitea now detects native pull-request revert support, exposes the revert action only to eligible viewers, and sends the native revert request when supported. Tests cover supported servers and stock Gitea behavior.

Changes

Gitea native revert support

Layer / File(s) Summary
Feature detection and revert permissions
apps/server/src/pullRequest/GiteaPullRequestProvider.ts, apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts
The provider fetches Gitea features and exposes revert only when pull-revert is supported and the viewer has write access.
Native revert execution
apps/server/src/pullRequest/GiteaPullRequestApi.ts, apps/server/src/pullRequest/GiteaPullRequestApi.test.ts
The revert action validates support, posts to the native revert endpoint, and reports an explicit error when unsupported. Tests cover both server capabilities.

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

Merge Risk: ⚪ Minimal · up to b70a0

Eligible Gitea users can now create native revert pull requests when their server supports the capability, while unsupported servers and users without write access do not receive the action. No current merge-blocking risk remains.

Sequence Diagram(s)

sequenceDiagram
  participant Viewer
  participant GiteaPullRequestProvider
  participant GiteaPullRequestApi
  participant GiteaServer
  Viewer->>GiteaPullRequestProvider: request pull-request permissions
  GiteaPullRequestProvider->>GiteaServer: fetch feature list
  GiteaServer-->>GiteaPullRequestProvider: return pull-revert support
  GiteaPullRequestProvider-->>Viewer: expose revert for eligible viewer
  Viewer->>GiteaPullRequestApi: request revert action
  GiteaPullRequestApi->>GiteaServer: POST pull request revert endpoint
  GiteaServer-->>Viewer: return created revert pull request
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly and concisely describes the main change: adding native Gitea revert pull requests.
Description check ✅ Passed The description clearly explains what changed, why it changed, the feature conditions, testing, and validation results. It does not use the template headings or include the checklist, but it provides …
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch gitea/revert

Comment @coderabbitai help to get the list of available commands.

@kalvenschraut
kalvenschraut marked this pull request as ready for review September 5, 2026 05:57
@kalvenschraut

Copy link
Copy Markdown
Member Author

@coderabbitai review

Please review this PR at its exact current head in stack pingdotgg#6. Verify correctness, regressions, security boundaries, and focused coverage against its current base, and report any actionable findings with file references.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Oops, something went wrong! Please try again later. 🐰 💔

@kalvenschraut

Copy link
Copy Markdown
Member Author

Merge verdict: NO-GO (review gates incomplete).

Head: 10005f87b25cedd28255c1751f396f6e8fd4f44e.

  • Codex: NO-GO for merging under the requested two-reviewer gate. Merge readiness and review history were checked; the full dual code review is incomplete, and this comment is not a code approval.
  • Fable 5.1 / Claude CLI: BLOCKED. The requested claude-fable-5-1 review was attempted, but the CLI reached its session limit before returning a completed verdict. Its reported reset is midnight America/Chicago. There is no fresh Fable GO from this pass.
  • CodeRabbit: No formal APPROVED review. The successful CodeRabbit status check does not satisfy the requested approval gate. This branch has not enabled reviews.request_changes_workflow; the existing CodeRabbit replies on this series identify that configuration as preventing formal approvals.
  • GitHub merge state: MERGEABLE / CLEAN against gitea/tracking.
  • Checks: the current rollup contains a successful CodeRabbit status only; it contains no build/test check result. No new tests or browser verification are claimed by this audit.

No merge performed. Resume the independent code reviews when Fable is available, obtain the missing/current CodeRabbit approval where applicable, and recheck the exact head and base before merging.

@kalvenschraut

Copy link
Copy Markdown
Member Author

@coderabbitai approve

The maintainer requests formal approval for the remaining PRs. Please assess the exact current head 10005f87b25cedd28255c1751f396f6e8fd4f44e and submit APPROVED only if your review has no remaining blockers. If there is a blocker, leave its concrete reason and the fix required instead. A successful status check alone does not meet this merge gate.

If branch configuration prevents formal approval, please state that explicitly. Independent Codex/Fable code verdicts are being refreshed separately; this request does not authorize merging or bypassing their findings.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Checked-out commit =='
git rev-parse HEAD
git status --short

echo '== PR metadata =='
gh pr view 15 --repo RTVision/t3code --json number,url,headRefName,headRefOid,baseRefName,baseRefOid,mergeable,state

echo '== Changed files against merge base =='
base="$(git merge-base HEAD "origin/$(gh pr view 15 --repo RTVision/t3code --json baseRefName --jq .baseRefName)")"
printf 'merge-base=%s\n' "$base"
git diff --name-status "$base"...HEAD
git diff --stat "$base"...HEAD

echo '== Changed source and test diff =='
git diff --unified=80 "$base"...HEAD -- \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Module outlines =='
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestApi.ts --items all
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestProvider.ts --items all

echo '== Related implementations and contracts =='
rg -n -C 5 -P '\b(revert|pull-revert|giteaViewerPermissions|viewerPermissions|feature[s]?)\b' \
  apps/server/src/pullRequest

Length of output: 1966


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Base-to-head comparison from GitHub =='
gh api 'repos/RTVision/t3code/compare/911169f7118984b739bfcf41bca680b64d954ceb...10005f87b25cedd28255c1751f396f6e8fd4f44e' \
  --jq '{status,merge_base_commit:.merge_base_commit.sha,files:[.files[]|{filename,status,additions,deletions,patch}]}'

echo '== Changed module contents =='
for f in \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts
do
  echo "===== $f ====="
  cat -n "$f"
done

echo '== Pull-request module map =='
ast-grep outline apps/server/src/pullRequest --items all \
  --type class,function \
  --match 'Gitea|Github|GitHub|PullRequest'

echo '== Revert, feature discovery, and permission call paths =='
rg -n -C 8 -P '\b(revert|pull-revert|getFeatures|features|ViewerPermissions|viewerPermissions)\b' \
  apps/server/src/pullRequest

Length of output: 157745


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Exact changed hunks from the local head commit =='
git show --format=fuller --find-renames --unified=30 HEAD -- \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== API helpers and revert implementation =='
sed -n '650,790p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '900,970p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '1400,1465p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '1615,1660p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '1815,1860p' apps/server/src/pullRequest/GiteaPullRequestApi.ts

echo '== Focused test setup and changed tests =='
sed -n '1,190p' apps/server/src/pullRequest/GiteaPullRequestApi.test.ts
sed -n '1,195p' apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== API request types and repository validation =='
rg -n -C 8 -P '\b(function|const)\s+(write|validateHost|basePath|encodeObject)\b|\bconst\s+gitea\b|\brequest:\s*\(' \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/gitea

Length of output: 56496


🤖 web_search executed:

Gitea OpenAPI POST /repos/{owner}/{repo}/pulls/{index}/revert RevertPullRequestOptions request body response official documentation

Length of output: 11478


@kalvenschraut Approved.

I reviewed head 10005f87b25cedd28255c1751f396f6e8fd4f44e against base gitea/tracking at 911169f7118984b739bfcf41bca680b64d954ceb.

I found no blocking correctness, regression, or security issue. The implementation gates the action on pull-revert and repository write access. It validates the host and repository path before the mutation. The focused tests cover the supported and unsupported server paths and the permission boundary.

I inspected the tests but did not execute them because the sandbox does not permit repository code execution.

[approve]

You are interacting with an AI system.

@kalvenschraut

Copy link
Copy Markdown
Member Author

Merge verdict: NO-GO. This supersedes the earlier quota-only readiness comment.

Reviewed head: 10005f87b25cedd28255c1751f396f6e8fd4f44e; declared destination: gitea/tracking.

  • Codex: NO-GO. GiteaPullRequestProvider.ts:148 forwards optional revertSupported directly, and the feature fallback at line 198 introduces a never[] union before includes("pull-revert"). Normalize the boolean and type the fallback as ReadonlyArray<string>, as fix(pull-requests): preserve Gitea schema inference #22 does. This is a static finding under the enabled compiler flags.
  • Fable 5.1 / Claude CLI: NO-GO, completed independent review of 10005f87b25c.
  • CodeRabbit: No formal GitHub APPROVED review on this head. Approval was requested. Some bot replies say “Approved” or contain [approve], but the GitHub review records do not contain an approval; this does not pass the requested gate. The original branch configuration does not enable reviews.request_changes_workflow.

No merge is authorized while any blocker or required approval is outstanding. Recheck the resulting head and current base after corrections or stack merges.

@kalvenschraut

Copy link
Copy Markdown
Member Author

NO-GO now — inherited type failures

Reviewed commit: 10005f87b25cedd28255c1751f396f6e8fd4f44e.

The revert gating is sound, but this head inherits the type failures fixed by #22. Fable gives conditional GO with #22; Codex holds the current merge candidate.

Include the downstream type fixes and rerun the scoped server typecheck. Clear the native-stack predecessors before merging.

Validation by Codex: the exact #36 integration head 6114cf39dac017bd665908effd538e5f4f8d5764 passed 1,002 tests across 39 affected files, scoped server/web/desktop typechecks, and targeted lint (warnings, no errors). These are integration results, not a claim that this standalone head passed those checks. Fable independently reviewed source and diffs via Claude CLI; it did not run the tests.

Reviewers: Codex and Claude Fable 5.1 (Claude CLI).

@kalvenschraut

Copy link
Copy Markdown
Member Author

@coderabbitai review

Please independently review the newly pushed fixes at 15392b5d95cdcc5dd411dff5ce31ca1165e19960 and submit a formal GitHub approval on this head only if no blockers remain. Otherwise report the remaining actionable findings. The maintainer requested fresh CodeRabbit approval before merging; an older approval or a green skipped-review status does not satisfy that gate. Codex and Claude Fable 5.1 are separately re-reviewing the changes, including the prior no-go findings in this PR.

@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="RTVision/t3code"
expected_head="15392b5d95cdcc5dd411dff5ce31ca1165e19960"

echo '== Current checkout and pull request metadata =='
git rev-parse HEAD
git status --short
gh pr view 15 --repo "$repo" \
  --json number,url,state,headRefName,headRefOid,baseRefName,baseRefOid,mergeable

echo '== Resolve merge base =='
base_ref="$(gh pr view 15 --repo "$repo" --json baseRefName --jq .baseRefName)"
git fetch origin "$base_ref" --quiet
base="$(git merge-base "$expected_head" "origin/$base_ref")"
printf 'expected_head=%s\nmerge_base=%s\n' "$expected_head" "$base"

echo '== Commits and changed files from merge base =='
git log --oneline "$base..$expected_head"
git diff --name-status "$base...$expected_head"
git diff --stat "$base...$expected_head"

echo '== Focused diff =='
git diff --find-renames --unified=60 "$base...$expected_head" -- \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Changed module outlines =='
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestApi.ts --items all
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestProvider.ts --items all

echo '== Prior finding and relevant contracts =='
rg -n -C 8 -P '\b(revertSupported|pull-revert|giteaViewerPermissions|viewerPermissions|getFeatures|features|revert)\b' \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Revert implementations in peer providers =='
rg -n -C 6 -P '\brevert\s*\(' apps/server/src/pullRequest

Length of output: 2596


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head="15392b5d95cdcc5dd411dff5ce31ca1165e19960"
base="ef87852cbe023439b3bb60eb59eb0ab0028135f1"

echo '== Verify commit objects =='
git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"
printf 'head=%s\nbase=%s\n' "$head" "$base"

echo '== Commits and changed files from current base =='
git log --oneline "${base}..${head}"
git diff --name-status "${base}...${head}"
git diff --stat "${base}...${head}"

echo '== Focused diff =='
git diff --find-renames --unified=60 "${base}...${head}" -- \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Changed module outlines =='
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestApi.ts --items all
ast-grep outline apps/server/src/pullRequest/GiteaPullRequestProvider.ts --items all

echo '== Feature, permission, and revert contracts =='
rg -n -C 10 -P '\b(revertSupported|pull-revert|giteaViewerPermissions|viewerPermissions|getFeatures|features|revert)\b' \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.ts \
  apps/server/src/pullRequest/GiteaPullRequestApi.test.ts \
  apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Revert implementations in peer providers =='
rg -n -C 6 -P '\brevert\s*\(' apps/server/src/pullRequest

Length of output: 122882


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Mutation and repository-path helpers =='
sed -n '360,420p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '1525,1580p' apps/server/src/pullRequest/GiteaPullRequestApi.ts
sed -n '1755,1785p' apps/server/src/pullRequest/GiteaPullRequestApi.ts

echo '== Capability filtering =='
ast-grep outline apps/server/src/pullRequest/GiteaForkCapabilities.ts --items all
cat -n apps/server/src/pullRequest/GiteaForkCapabilities.ts

echo '== Provider test integration setup =='
sed -n '1,155p' apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts
sed -n '145,195p' apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts
sed -n '260,285p' apps/server/src/pullRequest/GiteaPullRequestProvider.test.ts

echo '== Test and typecheck script definitions =='
fd -a '^package\.json$|^turbo\.json$' . -E node_modules -E dist -E build \
  -x sh -c 'echo "===== $1 ====="; jq "{name,scripts}" "$1"' sh {}

Length of output: 23841


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== basePath and request validation definitions =='
rg -n -C 12 -P '\b(const|function)\s+(basePath|validateHost|request)\b' \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts

echo '== All basePath mutation call sites =='
rg -n -C 4 -P '\b(basePath\(input\.repository\).*(POST|PATCH|PUT|DELETE)|method:\s*"(POST|PATCH|PUT|DELETE)")\b' \
  apps/server/src/pullRequest/GiteaPullRequestApi.ts

echo '== Revert change commits only =='
git show --format=fuller --find-renames --unified=40 a714159e
git show --format=fuller --find-renames --unified=40 7f8eff14

Length of output: 3850


🤖 web_search executed:

Official Gitea API documentation for POST /repos/{owner}/{repo}/pulls/{index}/revert: request body fields, whether an empty body is valid, response status, and required repository permissions.

Length of output: 15370


@kalvenschraut I reviewed commit 15392b5d95cdcc5dd411dff5ce31ca1165e19960 against the current gitea/tracking base.

I found no actionable blocker.

The prior type-safety issue is fixed. revertSupported is normalized to a boolean. Feature-discovery fallbacks use ReadonlyArray<string>.

The implementation removes revert when the server does not advertise pull-revert. It also requires repository write access before it exposes the action. The mutation validates the host and repository path before it sends POST /repos/{owner}/{repo}/pulls/{index}/revert.

Focused tests cover native-server dispatch, stock-server rejection without a mutation, and the write-access permission boundary.

I did not run tests or typecheck because this environment does not permit repository code execution.

A formal GitHub approval requires a separate top-level @coderabbitai approve command.

You are interacting with an AI system.

@kalvenschraut

Copy link
Copy Markdown
Member Author

Re-review: GO on the revert repair; NO-GO for merging now

Reviewed head: 15392b5d95cdcc5dd411dff5ce31ca1165e19960. This updates my earlier go/no-go comment for the newly pushed repairs.

Feature discovery and optional flags are typed correctly. Revert still requires the native feature and repository write access. CodeRabbit reports no remaining blocker in this incremental change.

Fable 5.1: GO on the individual change.

Clear the inherited #9/#10/#12 behavior defects and the #5 integration conflict before merging the native-stack prefix.

Validation by Codex: 308 focused tests across 9 files passed on integration head 73dd9c33ab15db71748beb6f0485ec212e6682f8; scoped server, web, and client-runtime typechecks passed, and targeted lint of 21 changed files passed with warnings. A separate single-worker reproduction exposed the native comment-reaction bug (100 reads and no reactions for a 50-reaction comment). These are integration results, not a claim that every standalone head passed the checks. Fable reviewed source and diffs through Claude CLI; it did not run tests.

The remaining native-stack merges must clear their predecessors and the actual target branch. CodeRabbit’s commit-specific comments are distinguished from formal GitHub review records; rate-limited requests are not approvals.

# Conflicts:
#	apps/server/src/pullRequest/GiteaPullRequestApi.test.ts
#	apps/server/src/pullRequest/GiteaPullRequestProvider.ts
@kalvenschraut

kalvenschraut commented Sep 8, 2026 •

Copy link
Copy Markdown
Member Author

GO — merged after Codex, Fable 5.1, and CodeRabbit review.

Reviewed head: 07e86e1e87203d66493a970b95e59bbe3b69a348. This supersedes my previous decision on the older head.

Revert behavior is retained; this head adds no new tree changes over its predecessor.

CodeRabbit reviewed every exact head and cleared the combined integration. Its commit-specific approval is recorded in that comment; this is not a claim of a new formal GitHub APPROVED review on each PR. All three reviewers require #26 to land with #27 or later; they merged together in the dependency batch.

Validation by Codex: 490 focused tests across 13 files passed on integration head 2e156ad621fb32b241abd4614a367aea7943d12e, including the previously failing native comment-reaction reproduction. Scoped server, web, and client-runtime typechecks passed; targeted lint of 24 changed files passed with warnings. Checks ran sequentially with one test worker. These validate the integration, not separate test runs on every component head. Fable independently reviewed source and diffs via Claude CLI.

Merged: f787a611cffccbdf0fd5e593bba8f615c607f532 at 2026-09-08T04:42:51Z. This PR merged in the 17-member Gitea batch into rtvision; the six dependency PRs followed as one reviewed batch. Final rtvision commit is 20926b20ed4ea72618f7608f70b1d4cea8e40053; its tree 9a0e0253b515456f6a117be5ebccf2cd8e911b01 exactly matches tested integration head #36.

@kalvenschraut
kalvenschraut merged commit f787a61 into rtvision Sep 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant