Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions devlog/_fin/261004_merge_record/000_scope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Merge record 2026-10-03 → 2026-10-04 — scope

Status: DONE — historical record of published work.

This continues [261002_release_merge_record](https://github.com/luvs01/opencodex/blob/567d414ddf1601bf3db175f1c34b4ddffd9cfb84/devlog/_fin/261002_release_merge_record/000_scope.md)
(`carry/pr699-release-merge-record` on luvs01/opencodex at
[`567d414ddf`](https://github.com/luvs01/opencodex/commit/567d414ddf1601bf3db175f1c34b4ddffd9cfb84),
recorded but not yet landed upstream) with the
same method and the same limits, checked against canonical upstream git history,
GitHub pull requests, release objects, tags and Actions runs.

## Fixed boundaries

- Landing window: first-parent range
`b4616be1e4db9e7178fd28cb19d4c2269abc2ba7..584b92a53`.
The left endpoint is excluded; it is the right endpoint of the previous record
([#6462](https://github.com/lidge-jun/opencodex/pull/6462), dev opened at 2.77.0).
The right endpoint is included and landed on 2026-10-04 at 14:32 UTC
([#6583](https://github.com/lidge-jun/opencodex/pull/6583)).
- Release publication in the window: stable 2.77.0 published 2026-10-04 02:40:47 UTC.
No preview tag was published for 2.77.0; the round went candidate → stable.
- [Releases](010_releases.md): one release object, one Release run, one dispatch
candidate CI; the round's full account already lives in the release-stabilization
unit and is only cross-referenced here.
- [Landings](020_landings.md): 47 first-parent commits, partitioned into
11 entries recorded here, 35 landings covered by existing documentation units,
and one release dev-open. These categories are disjoint.

## Method and limits

The landing PR is the final PR number in each upstream first-parent commit
subject, cross-checked against its merged PR's `merge_commit_sha` and `dev`
base. Earlier PR numbers in a subject can identify carried work rather than
another landing. Each row links both the canonical PR and its landing commit.
Descriptions summarize published commit subjects and PR titles; they are not
new audits of the underlying changes.

Counts are reproducible with `git rev-list --first-parent --count A..B`.
Release content ranges have separate boundaries from the landing inventory;
they must not be added to the 47-landings total. Publication times come from
GitHub release objects; release SHAs agree with the fetched tags and successful
workflow heads. A tag's date suffix is not its UTC publication date.

This is a closed historical record under [the devlog policy](../../README.md),
consistent with the merged records [#6250](https://github.com/lidge-jun/opencodex/pull/6250)
and [#6031](https://github.com/lidge-jun/opencodex/pull/6031). It does not close or move the other units
listed in the landing inventory, some of which still live under `_plan/`.

Per-PR head/author/CI scorecards, merge-time CI verdicts, coordinator or
administrator causality, and moving fork-tip comparisons are outside this
record. Later check results do not establish what was known at merge time.
Successful release or candidate CI is not proof of every individual PR's
merge-time checks. No npm registry state, dist-tag or npm `gitHead` claim is made.
42 changes: 42 additions & 0 deletions devlog/_fin/261004_merge_record/010_releases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# One release round

The row below identifies the GitHub release and its successful Release
workflow run. Time is the GitHub `published_at` value in UTC, not workflow
start or completion time. The release object is non-draft.

| Tag | Published (UTC) | Release/tag commit | Successful Release run |
| --- | --- | --- | --- |
| [v2.77.0](https://github.com/lidge-jun/opencodex/releases/tag/v2.77.0) | 2026-10-04 02:40:47 | [`06841165f8`](https://github.com/lidge-jun/opencodex/commit/06841165f884a9176d701310638b2112aca7a514) | [37170949169](https://github.com/lidge-jun/opencodex/actions/runs/37170949169) — success |

No preview tag exists for 2.77.0: the round ran candidate acceptance → stable
publication directly. The candidate acceptance evidence, the promotion PR #6550
(admin merge to `main` at `06841165f8`, tree identical to candidate `0818ea1812`),
the npm/GitHub-release asset inventory and the install smoke are already recorded
in [release stabilization](../../_plan/261003_release_stabilization/031_publication_outcome.md)
through [`#6561`](https://github.com/lidge-jun/opencodex/pull/6561); this file
cross-references rather than repeats them.

## Declared dev content range

Excludes the left endpoint and includes the candidate at the right. First-parent
commit count, not a count of all transitive commits or unique features.

| Round | Range | First-parent count |
| --- | --- | --- |
| 2.77.0 | [`e0af52c8a2`](https://github.com/lidge-jun/opencodex/commit/e0af52c8a2701dccd81fa5e672c92744e59d2e29)..[`0818ea181`](https://github.com/lidge-jun/opencodex/commit/0818ea1812a028e1c14cd0b0511b44863407bc52) | 32 |

The left endpoint is the 2.76.0 candidate from the previous record. The 2.77.0
dev-open [#6549](https://github.com/lidge-jun/opencodex/pull/6549) (open dev at
2.78.0 before releasing 2.77.0) precedes the release and sits inside the landing
inventory's dev-open category, not inside this content range.

## Dispatch candidate CI

The recovered train's final cross-platform gate: Cross-platform CI
[37110109894](https://github.com/lidge-jun/opencodex/actions/runs/37110109894),
`workflow_dispatch`, head [`7c59baf959`](https://github.com/lidge-jun/opencodex/commit/7c59baf9597fbad188c49bb562bdd4858275766d),
success on 2026-10-03 08:33 UTC — the first dispatch after the last
train-recovery landing ([#6495](https://github.com/lidge-jun/opencodex/pull/6495)).
This is the run the stabilization unit's starting state measured against; it is
candidate CI evidence, distinct from the Release run above and from per-PR
merge-time checks, which remain outside this record.
119 changes: 119 additions & 0 deletions devlog/_fin/261004_merge_record/020_landings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Landing inventory

The [fixed scope](000_scope.md) contains 47 first-parent landings:
**11 + 35 + 1**. Tables preserve first-parent landing order, oldest first.
The 11-entry inventory fills the coverage gap; "covered" refers to the
documentation units listed below, not an assertion that no other document
anywhere mentions these changes.

## 11 landings recorded here

| PR | Landing commit | Published change |
| --- | --- | --- |
| [#6494](https://github.com/lidge-jun/opencodex/pull/6494) | [`4b98328dc`](https://github.com/lidge-jun/opencodex/commit/4b98328dc) | fix(update): normalize short Windows home paths for Scoop npm |
| [#6495](https://github.com/lidge-jun/opencodex/pull/6495) | [`7c59baf95`](https://github.com/lidge-jun/opencodex/commit/7c59baf95) | test: drain Windows ACL work and startup child output |
| [#6540](https://github.com/lidge-jun/opencodex/pull/6540) | [`9f23b1fa9`](https://github.com/lidge-jun/opencodex/commit/9f23b1fa9) | fix(combo): preserve bounded nested HTTP refusal semantics |
| [#6551](https://github.com/lidge-jun/opencodex/pull/6551) | [`df3dd3f11`](https://github.com/lidge-jun/opencodex/commit/df3dd3f11) | fix(claude): preserve bounded large headers in picker relay |
| [#6565](https://github.com/lidge-jun/opencodex/pull/6565) | [`7edad584b`](https://github.com/lidge-jun/opencodex/commit/7edad584b) | fix(devin): qualify child trajectories by supplied parent |
| [#6553](https://github.com/lidge-jun/opencodex/pull/6553) | [`9289396e5`](https://github.com/lidge-jun/opencodex/commit/9289396e5) | fix(codex): require saved config authority for routed removal |
| [#6558](https://github.com/lidge-jun/opencodex/pull/6558) | [`f74a3db92`](https://github.com/lidge-jun/opencodex/commit/f74a3db92) | fix(codex): bind catalog writes to home ownership and intent |
| [#6560](https://github.com/lidge-jun/opencodex/pull/6560) | [`8aff79ed2`](https://github.com/lidge-jun/opencodex/commit/8aff79ed2) | feat(codex): audit catalog writes with bounded private records |
| [#6563](https://github.com/lidge-jun/opencodex/pull/6563) | [`33185c2cc`](https://github.com/lidge-jun/opencodex/commit/33185c2cc) | feat(codex): heal lost catalog rows only from the idle owner |
| [#6579](https://github.com/lidge-jun/opencodex/pull/6579) | [`a6bc60816`](https://github.com/lidge-jun/opencodex/commit/a6bc60816) | feat(gui): icon theme switch sharing a row with the zoom stepper |
| [#6583](https://github.com/lidge-jun/opencodex/pull/6583) | [`584b92a53`](https://github.com/lidge-jun/opencodex/commit/584b92a53) | test(layout): compact the test-layout fixture to restore ratchet headroom |

Batch context for these rows:

- #6494 and #6495 are the two Windows tail merges of the recovered
contributor train ([train recovery](../../_plan/261003_train_recovery/000_plan.md)):
Scoop home canonicalization plus test lifecycle drains. The dispatch
candidate CI that followed them is in [010_releases.md](010_releases.md).
- #6540 is the nested-HTTP refusal repair that
[012_integration_evidence](../../_plan/261003_release_stabilization/012_integration_evidence.md)
assigned as a follow-up after the #6527 post-merge review.
- #6551 and #6565 are unrecorded follow-ups to lanes that do have units:
picker-relay headers adjacent to Claude preservation, and parent-qualified
child trajectories extending [cache identity](../../_plan/261004_cache_identity/020_devin.md).
- #6553/#6558/#6560/#6563 are the four `next-release-261004-catalog-a*`
merges: saved-config/combo authority for routed catalog mutation, journal
writer entrypoint ownership, bounded private write-audit records (Windows
audit-stream coverage deferred per the a3 docs commit), and idle-owner-only
catalog heal with startup observation and path-alias fencing. No unit
covered this lane.
- #6579 and #6583 are standalone GUI/test landings.

## 35 landings covered by existing units

These are 35 landings across eleven documentation units, not 35 separate
units. The paths below reflect the fixed upstream snapshot; linking an open
unit does not mark its remaining work complete.

| PR | Landing commit | Published change |
| --- | --- | --- |
| [#6475](https://github.com/lidge-jun/opencodex/pull/6475) | [`4b7466833`](https://github.com/lidge-jun/opencodex/commit/4b7466833) | fix(gui): remove blank tail from account-page scrolling |
| [#6484](https://github.com/lidge-jun/opencodex/pull/6484) | [`8efd79ca5`](https://github.com/lidge-jun/opencodex/commit/8efd79ca5) | fix(claude): register subagents after first-party setup |
| [#6482](https://github.com/lidge-jun/opencodex/pull/6482) | [`762501439`](https://github.com/lidge-jun/opencodex/commit/762501439) | fix(grok): forward the Grok conversation as session_id so OpenAI prefixes stay warm |
| [#6474](https://github.com/lidge-jun/opencodex/pull/6474) | [`2e3acab46`](https://github.com/lidge-jun/opencodex/commit/2e3acab46) | docs(providers): update TokenLab docs links |
| [#6459](https://github.com/lidge-jun/opencodex/pull/6459) | [`ee2e15f86`](https://github.com/lidge-jun/opencodex/commit/ee2e15f86) | fix(cli): preserve JSON while escaping human output |
| [#6455](https://github.com/lidge-jun/opencodex/pull/6455) | [`115fa0322`](https://github.com/lidge-jun/opencodex/commit/115fa0322) | fix(service): keep backup names out of Windows cmd logging |
| [#6457](https://github.com/lidge-jun/opencodex/pull/6457) | [`9fb79230b`](https://github.com/lidge-jun/opencodex/commit/9fb79230b) | fix(claude): preserve legacy cleanup before startup prechecks |
| [#6487](https://github.com/lidge-jun/opencodex/pull/6487) | [`3ada270f3`](https://github.com/lidge-jun/opencodex/commit/3ada270f3) | fix: integrate reviewed provider, client, and desktop recovery trajectories |
| [#6489](https://github.com/lidge-jun/opencodex/pull/6489) | [`452f9a404`](https://github.com/lidge-jun/opencodex/commit/452f9a404) | feat: add Claude subagent force and Remote Link setup recovery |
| [#6490](https://github.com/lidge-jun/opencodex/pull/6490) | [`b254139e2`](https://github.com/lidge-jun/opencodex/commit/b254139e2) | fix: resolve late train review findings and regression gaps |
| [#6501](https://github.com/lidge-jun/opencodex/pull/6501) | [`3bae88cce`](https://github.com/lidge-jun/opencodex/commit/3bae88cce) | fix(antigravity): group discovered effort families across versions |
| [#6506](https://github.com/lidge-jun/opencodex/pull/6506) | [`67c4049ff`](https://github.com/lidge-jun/opencodex/commit/67c4049ff) | fix(cli): keep restart rechecks within their deadline |
| [#6498](https://github.com/lidge-jun/opencodex/pull/6498) | [`b82b39018`](https://github.com/lidge-jun/opencodex/commit/b82b39018) | feat(cli): add explicit help paths and complete reference |
| [#6500](https://github.com/lidge-jun/opencodex/pull/6500) | [`cb2d1736a`](https://github.com/lidge-jun/opencodex/commit/cb2d1736a) | feat(cli): organize help around common tasks |
| [#6503](https://github.com/lidge-jun/opencodex/pull/6503) | [`9f89b7265`](https://github.com/lidge-jun/opencodex/commit/9f89b7265) | feat(cli): guide recovery from command typos |
| [#6513](https://github.com/lidge-jun/opencodex/pull/6513) | [`e77bfb490`](https://github.com/lidge-jun/opencodex/commit/e77bfb490) | fix(responses): stabilize large native HTTP uploads (carry #6508) |
| [#6519](https://github.com/lidge-jun/opencodex/pull/6519) | [`a141b8362`](https://github.com/lidge-jun/opencodex/commit/a141b8362) | fix(ollama-native): retain tool batches across assistant commentary |
| [#6516](https://github.com/lidge-jun/opencodex/pull/6516) | [`36330ae2e`](https://github.com/lidge-jun/opencodex/commit/36330ae2e) | fix(claude): keep native context failures terminal in Messages |
| [#6514](https://github.com/lidge-jun/opencodex/pull/6514) | [`aa40fb415`](https://github.com/lidge-jun/opencodex/commit/aa40fb415) | fix(antigravity): group Claude 5.5 usage and derive reference prices |
| [#6515](https://github.com/lidge-jun/opencodex/pull/6515) | [`e601cefce`](https://github.com/lidge-jun/opencodex/commit/e601cefce) | fix(codex): classify revoked native sessions without stale attribution |
| [#6518](https://github.com/lidge-jun/opencodex/pull/6518) | [`358b8ffd4`](https://github.com/lidge-jun/opencodex/commit/358b8ffd4) | fix(oauth): preserve Claude identity across token rotation (carry #6378) |
| [#6517](https://github.com/lidge-jun/opencodex/pull/6517) | [`a99de42e7`](https://github.com/lidge-jun/opencodex/commit/a99de42e7) | fix(security): stabilize standalone pairing for Child enrollment |
| [#6523](https://github.com/lidge-jun/opencodex/pull/6523) | [`a41f67273`](https://github.com/lidge-jun/opencodex/commit/a41f67273) | fix(codex): preserve stored-main ownership and scoped refresh refusal |
| [#6527](https://github.com/lidge-jun/opencodex/pull/6527) | [`ab6853903`](https://github.com/lidge-jun/opencodex/commit/ab6853903) | fix(combos): preserve plan-model refusal evidence through error projection |
| [#6536](https://github.com/lidge-jun/opencodex/pull/6536) | [`dd9a980ec`](https://github.com/lidge-jun/opencodex/commit/dd9a980ec) | docs: record native account carry publication |
| [#6538](https://github.com/lidge-jun/opencodex/pull/6538) | [`efc20e700`](https://github.com/lidge-jun/opencodex/commit/efc20e700) | fix(spend): refuse unbooked dispatches under applicable ceilings |
| [#6541](https://github.com/lidge-jun/opencodex/pull/6541) | [`3541261ac`](https://github.com/lidge-jun/opencodex/commit/3541261ac) | docs: record scoped release stabilization and verification gates |
| [#6543](https://github.com/lidge-jun/opencodex/pull/6543) | [`0818ea181`](https://github.com/lidge-jun/opencodex/commit/0818ea181) | test: isolate release fixtures and release holder leases cooperatively |
| [#6561](https://github.com/lidge-jun/opencodex/pull/6561) | [`596525686`](https://github.com/lidge-jun/opencodex/commit/596525686) | docs: record 2.77.0 candidate acceptance and publication |
| [#6554](https://github.com/lidge-jun/opencodex/pull/6554) | [`f85925d87`](https://github.com/lidge-jun/opencodex/commit/f85925d87) | fix(server): promote scoped caller conversation headers |
| [#6557](https://github.com/lidge-jun/opencodex/pull/6557) | [`be297a52c`](https://github.com/lidge-jun/opencodex/commit/be297a52c) | fix(devin): retain bounded conversation trajectories |
| [#6555](https://github.com/lidge-jun/opencodex/pull/6555) | [`16d5daecd`](https://github.com/lidge-jun/opencodex/commit/16d5daecd) | fix(responses): share reset replay grants across translated sends |
| [#6552](https://github.com/lidge-jun/opencodex/pull/6552) | [`045584583`](https://github.com/lidge-jun/opencodex/commit/045584583) | fix(anthropic): preserve deferred and inline native tool names |
| [#6559](https://github.com/lidge-jun/opencodex/pull/6559) | [`26dd8cf65`](https://github.com/lidge-jun/opencodex/commit/26dd8cf65) | fix(anthropic): preserve native Claude requests across pooled dispatch |
| [#6562](https://github.com/lidge-jun/opencodex/pull/6562) | [`33125e62d`](https://github.com/lidge-jun/opencodex/commit/33125e62d) | feat(anthropic): add native pool preference with explicit opt-out precedence |

| Covered PRs | Existing record |
| --- | --- |
| #6475 | [dashboard scroll gap](../261003_dashboard_scroll_gap/000_plan.md) |
| #6484 | [Claude first-party agents](../261003_claude_1p_agents/000_plan.md) |
| #6474, #6482, #6459, #6455, #6457 | [train recovery carry ledger + baseline](../../_plan/261003_train_recovery/030_carry_ledger.md) |
| #6487 | [train recovery](../../_plan/261003_train_recovery/000_plan.md) + [lane A](../../_plan/261003_train_recovery_a/000_plan.md) + [lane D](../../_plan/261003_train_recovery_d/000_verification.md) |
| #6489 | [lane E recovery](../../_plan/261003_lane_e_recovery/090_summary.md) |
| #6490 | [lane D late review](../../_plan/261003_train_recovery_d/010_late_review.md) |
| #6506 | [CLI help UX deadline prerequisite](../261003_cli_help_ux/041_deadline_prerequisite.md) |
| #6498, #6500, #6503 | [CLI help UX](../261003_cli_help_ux/090_outcome.md) (closed, moved to `_fin` by #6503) |
| #6501 | [release lane C antigravity](../../_plan/261003_release_lane_c/010_antigravity.md) |
| #6513, #6516 | [release lane A](../../_plan/261003_release_lane_a/000_plan.md) + [integration evidence](../../_plan/261003_release_stabilization/012_integration_evidence.md) |
| #6514, #6519 | [release lane C](../../_plan/261003_release_lane_c/000_plan.md) + [ollama replay](../../_plan/261003_ollama_commentary_replay/000_plan.md) + integration evidence |
| #6515, #6517, #6518, #6523, #6527, #6538 | [integration evidence](../../_plan/261003_release_stabilization/012_integration_evidence.md) |
| #6536, #6541 | [release stabilization unit](../../_plan/261003_release_stabilization/000_plan.md) — self-recording documentation PRs |
| #6543 | [fixture isolation stabilization](../../_plan/261004_fixture_isolation_stabilization/000_plan.md) |
| #6561 | [2.77.0 acceptance + publication](../../_plan/261003_release_stabilization/031_publication_outcome.md) |
| #6554, #6557 | [cache identity](../../_plan/261004_cache_identity/000_plan.md) |
| #6555 | [translated reset retry](../../_plan/261004_translated_reset_retry/000_plan.md) |
| #6552, #6559, #6562 | [Claude request preservation](../../_plan/261004_claude_request_preservation/000_plan.md) |

## One release dev-open

| PR | Landing commit | Published change |
| --- | --- | --- |
| [#6549](https://github.com/lidge-jun/opencodex/pull/6549) | [`87e315633`](https://github.com/lidge-jun/opencodex/commit/87e3156339) | chore(release): open dev at 2.78.0 before releasing 2.77.0 |

The 2.78.0 dev-open precedes the 2.77.0 publication in
[010_releases.md](010_releases.md) and is recorded in the stabilization unit's
[candidate acceptance](../../_plan/261003_release_stabilization/022_candidate_acceptance.md).
Like the previous record, release dev-opens are their own disjoint category.
Loading