Triage and clean up an unreviewed automated commit stream on main#4418
Conversation
…xied CLI (bd-6dnrw.45)" This reverts commit 93b186d.
…only init ungate (bd-6dnrw.44)" This reverts commit 1425e73.
…ion commands; attribute sweeps distinctly (bd-578h9.7)" This reverts commit 81489b8.
…idWrite (bd-6dnrw.11)" This reverts commit d2b6cc5.
For kept fixes whose shipped tests were characterization-only or absent, add born-failing regression tests (verified RED when the defect is reintroduced, GREEN with the fix in place): - internal/lockfile: IsLocked must detect a *wrapped* ErrLocked — guards the errors.Is fix (was pointer-equality). (orig 1a83cb0) - internal/storage/domain/db: GetDescendants with a level filter across edge and dotted-ID branches — guards the dolt 2.1.6 named-CTE analyzer workaround; the pre-existing dotted-orphans test used an empty filter and never built the predicate. (orig 341c7a5) - cmd/bd: GOMODCACHE must be pinned outside the temp test HOME — guards the testMainInner module-cache fix. (orig bc90983) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The proxied / external-dolt-server subsystem (serverV2) is gated off and not running yet. This reverts the unreviewed changes to its schema-independent layers back to BASE 9a1c88b, while keeping the parts welded to the published schema. Reverted to BASE (26 files): - internal/storage/dbproxy/* (proxy/socket process mgmt: orphan-dolt reaping, pidfile discovery, endpoint/shutdown hardening) - internal/storage/uow/* (uow tx lifecycle, warmup-retry classification, provider changes) - cmd/bd proxied glue: proxied_server, init_proxied_server, list_proxied_server, uow_factory, store_factory(+nocgo), and main.go proxied-mode dispatch hunks Kept at HEAD (welded to the published migration 0051 / required by the data layer, consistent with the keep-the-schema-stack decision): - internal/storage/domain/db/* (mints app-side ids because 0051 dropped the DB default; queries the live migrated schema) -- left identical to HEAD - the issueops Runner/DBTX widening + scan changes that HEAD domain/db requires A strict serverV2->BASE revert is impossible without breaking main: domain/db is welded to the published 0051 (BASE domain/db inserts without an id and relies on the DEFAULT(UUID()) that 0051 removed). This reverts everything that is NOT so welded. Verified: full `make test` green (60 ok packages, 0 failures); domain/db, uow, and dbproxy all ok. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Removal Rationale — commit-by-commitPer-commit justification for the reverts on this branch, plus the maintainer-decision commits. Part 1 — The four reverts on this branch (no demonstrable defect)1. 2. 3. 4. Part 2 — Flagged maintainer decisions (all resolved: KEEP)
|
serverV2 reverted fixes — audit listThe serverV2 revert (
Recommendation: the |
Maintainer decisions — resolvedAll flagged decisions are KEEP (no further reverts):
|
|
We are soft reverting changes in the unreleased serverV2 feature in order to expedite development and reduce merge issues. All changes have been thoroughly documented in this PR for review and verification before serverv2 goes live. @coffeegoddd @timsehn |
|
Wow! 😳 What a major effort. Let me know if there's anything concrete I can do to assist in the follow up! |
Triage and clean up an unreviewed automated commit stream on main
Summary
Between
9a1c88b63(the reviewed dolt-2.1.4 bump, PR #4326) and the currentorigin/maintip
8e18581dc, an automated agent committed a large stream of changes directly onto theshared branch without going through PR review. A commit-by-commit triage found that the
cited issue references could not be located in the tracker, so each commit's stated
justification could not be independently verified.
This PR does not discard the stream. The triage found that roughly half of it is
genuine, diff-provable bug-fixing, and that several commits are load-bearing on an
already-published Dolt schema — reverting them would brick deployed clones. So this PR:
proxied / external-dolt-server layer) back to BASE — itemized in the serverV2 audit
comment for the subsystem owner to review.
truth — backs every kept real defect with a proven born-failing regression test.
keeping or reverting them.
Commits (6): 4 reverts of no-op commits + 1 commit adding proven regression tests + 1
serverV2 revert. Per-commit justification for the reverts and the flagged decisions is in the
Removal Rationale comment; the serverV2 fixes being removed are in the serverV2 audit
comment.
serverV2 revert (
8515879dc)The proxied / external-dolt-server subsystem is gated off and not running yet. This reverts
the unreviewed changes to its schema-independent layers —
internal/storage/dbproxy/*,internal/storage/uow/*, and thecmd/bdproxied glue — back to BASE (26 files, +107/-870).A strict serverV2→BASE revert is impossible without breaking main:
internal/storage/domain/dbis welded to published migration 0051 (BASE inserts without an
idand relies on theDEFAULT(UUID())that 0051 removed), so the data layer + the issueops widening it needs arekept at HEAD. The removed serverV2 fixes — most of them real, proven bugs in the gated
subsystem — are itemized for the owner to audit / re-apply.
The source-of-truth finding
All 66 cited issue IDs (
bd-6dnrw.*~47 items,bd-578h9.*~19, plusbd-2rd37,bd-pkim8,bd-hj85c,bd-4mpy7, …) are not present in the tracker. Verified: closed issues included(
bd listover all statuses); created-then-deleted ruled out (dolt_history_issueshas zerorows for any cited family across full history); not a parsing artifact (dotted epics like
bd-am3.1exist); not on any sibling federated DB or remotebeads-*branch; the IDs appearonly in commit messages.
Consequence: with no tracker entry to corroborate a commit's rationale, we treat the diff
and a born-failing test — never the cited reference — as the source of truth.
What this PR reverts (4 commits)
Non-schema, non-entangled, no demonstrated defect (reverted newest-first):
93b186dcf1425e733881489b8c1d2b6cc525Reclassified revert → keep (3 commits, entanglement discovered while reverting)
Originally slated to revert but entangled with commits we keep, so they cannot be cleanly
reverted and none is harmful — left in place:
1825cf357(tree-walk dotted orphans)341c7a5a4dolt-2.1.6 named-CTE workaround builds on it9187152cb(doctor rekey-repair)6a1e7af9bgate-hardening modifies itsdep_keys.gof97fd4a8b(merge-refusal messaging)d80ed8146no-remote fix shares thecmd/bd/dolt.goregionWhat this PR keeps (and why)
DEFAULT(UUID())) and the aux-row-id rekey have already executed on every published clone;0051.down.sqlis a no-op and re-adding the default is banned by migration-hygiene CI. Revertingtheir source does not un-run them — it bricks the write path (NOT NULL on every insert). Any
future change ships as a new forward migration.
auto-resolve / FK-repair on pull; the
is_blocked-stale-after-merge defect it fixes is real at BASE.(re-attributed through this review); only clear no-op commits are reverted.
Proven regression tests for every kept real defect
For all 45 kept real-defect commits, a regression test now lives in this PR and is proven
born-failing by mutation — reintroduce the specific defect into current code and the test goes
RED; restore the fix and it goes GREEN. 42 were verified against the tests the commits
already shipped; 3 were newly authored here because the shipped tests were characterization-only
or absent:
internal/lockfileTestIsLocked— detect a wrappedErrLocked(guards theerrors.Isfix; orig1a83cb08c)internal/storage/domain/dbTestGetDescendantsFilteredByStatus— level-filter across edge + dotted branches (guards the dolt-2.1.6 named-CTE workaround; orig341c7a5a4)cmd/bdTestGOMODCACHENotUnderTestHome—GOMODCACHEpinned outside the temp test HOME (origbc909834c)Full proof ledger (45 defects)
33e71d21e928f9ff2d03cdc6c860664ee7be1f8331d162d5f11e5a341c7a5a449a8030506a1e7af9b8095e4f4e9264f0ec2a768035afccadfce9fd80ed81461fe4993cf33bf6d0c01a83cb08c27bbecbd129df600aa439fb4eb14b0509c11794ff07908866e5b2b914ac3c1299c70904f9f531717db5cdb70abf1c72dbdef483ac2b4f880a985b12a47948c1be8989fe8ffcf698e969e27eade4f0407413f2b4e08d8a92dacf4f3d31e444001c6c25859ba57f027171f8f8e792260c0a99ed06b6fc708e00c3bc909834cMaintainer decisions (see the Removal Rationale comment for full per-commit analysis)
33bf6d0c0— equal-timestamp upsert keeps the local row; changes merge-idempotency behavior (has tests). Decided: keep.f1c72dbde— reads persisted remotes fromrepo_state.json; fixes a real gate weakness but rests on an unverified dolt-2.x format assumption. Decided: keep (verify the assumption as a follow-up).7ebf4df6a— reverses reviewed feature feat(linear): ambient staleness signal — bd prime auto-pull + --pull-if-stale #3669 (ambient Linear staleness). Decided: keep (loop in the feature owner).3fa29e325— removes aDOLT_GCcall added in reviewed PR fix(fetch): run GC after failed DOLT_FETCH to prevent tmp_pack_* accumulation #3326. Decided: keep (confirm with the PR owner).9a9da38c4— maintainer-policy docs. Decided: keep.Git mechanics
Cleanup is done as
git reverton this branch — no rewrite of published history. HEAD ispublished and clones have replayed migrations; a history rewrite cannot un-run them and would
create a worse source-vs-DB split-brain.
Verification
make build/go build -tags gms_pure_go ./...— greengo vetover touched packages — cleanmake teston the serverV2 revert — green (60 ok packages, 0 failures);domain/db,uow,dbproxyall ok.cmd/bdpackage-leveltest-isolation issue with
os.Setenv/os.Chdir) reproduces identically on untouchedorigin/mainand on the BASE before the stream, so this branch introduces no new failures.Real CI (
Main,Regression Tests) is green at the current tip.