Backlog 3: C1 to C4 done 1681323d1dff
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-29 21:32 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
1681323d1dff8c96147afa6b611c3a0b6b4bedb46a2cbe0ef8021739153bfdb5- Depends on
- 33e77a5526fa b9c2d543933b
- Depended on by
- 75b6c8665219 f6451fbbae3f 2517abe64654 36695c5e02ef b493d993a9df a87c7b9d563a f59376ea413b 7757367bedcc
- In bookmarks
- agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
- In tags
- v0.1.0 v0.10.0 v0.11.0 v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
- Edits
- 3 atoms, 0 tree operations, 1 file
Browse the tree at this change
modified docs/backlog-overnight-3.md +11 −4
| … | 78 unchanged lines |
||
| 79 | 79 | A working copy that silently becomes the wrong tree is worse than any |
|
| 80 | 80 | slowness, so these come before everything else. |
|
| 81 | 81 | ||
| 82 | - | - [ ] C1 **Working-copy writes hold the workspace lock** (oxygen#36). Checkout, bookmark switch (with --carry), pull's checkout, undo, discard and commit hold the lock from reading the head until their operation is recorded. `merge_views` never lets a working-copy change based on a replaced one win. Test: a snapshot concurrent with a checkout never records the checkout's writes as edits. |
|
| 83 | - | - [ ] C2 **`bookmark create NAME CHANGE` refuses a partial state** (oxygen#37). When CHANGE is one of the current state's heads but not all of them, it refuses and explains, unless given --only. `bookmark switch` summarises a wide tree difference. The guide explains that bookmarks name states, not ancestry. |
|
| 84 | - | - [ ] C3 **A parent's switch never rolls a subrepo's bookmark back** (oxygen#38). |
|
| 85 | - | - [ ] C4 **`pull` says "Already up to date" while one behind** (oxygen#29). Reproduce it with a test, then fix it. |
|
| 82 | + | - [x] C1 **Working-copy writes hold the workspace lock** (oxygen#36). Checkout, bookmark switch (with --carry), pull's checkout, undo, discard and commit hold the lock from reading the head until their operation is recorded. `merge_views` never lets a working-copy change based on a replaced one win. Test: a snapshot concurrent with a checkout never records the checkout's writes as edits. |
|
| 83 | + | - [x] C2 **`bookmark create NAME CHANGE` refuses a partial state** (oxygen#37). When CHANGE is one of the current state's heads but not all of them, it refuses and explains, unless given --only. `bookmark switch` summarises a wide tree difference. The guide explains that bookmarks name states, not ancestry. |
|
| 84 | + | - [x] C3 **A parent's switch never rolls a subrepo's bookmark back** (oxygen#38). |
|
| 85 | + | - [x] C4 **`pull` says "Already up to date" while one behind** (oxygen#29). Reproduce it with a test, then fix it. |
|
| 86 | 86 | ||
| 87 | 87 | ## Memory |
|
| 88 | 88 | ||
| … | 69 unchanged lines |
||
| 158 | 158 | - 2026-09-29 Backlog written. Starting point: the Linux first commit |
|
| 159 | 159 | succeeds (55.3 s, 9.9 GB, 442 MB store) with change format 2 |
|
| 160 | 160 | (oxygen#34). A clean `status` is killed at 14 GB (oxygen#35). |
|
| 161 | + | - 2026-09-29 **C1 to C4 done** (the metalgear findings in ~/oxygen_feedback.md, items 22 and 25 to 26). The gate passes: 205 tests, clippy clean. |
|
| 162 | + | - **C1** (e8e51993, closes #36): the working-copy lock now covers checkout, switch (and --carry), merge, commit, amend and rewrites, discard and pull. It is re-entrant per thread, waits up to a minute, and a live process's lock is never taken over. A workspace changed by two concurrent operations is now an error. A race test runs twenty switches against a snapshot thread; without the lock it failed one run in three. |
|
| 163 | + | - **C2** (bf423e78, closes #37): `bookmark create NAME CHANGE` refuses when it would leave out earlier work, unless given --upto or --only. `bookmark switch` says how many changes the new state lacks. The guide explains states for people coming from Git. |
|
| 164 | + | - **C3** (6b582c4c, closes #38): a parent's checkout moves a subrepo's bookmark only forward, and the pin is read from the nested working copy. `--carry` leaves a subrepo whose pin is carried work as it is. |
|
| 165 | + | - **C4** (5dfea7b7, closes #29): not a sync bug. rstar-api's operation log shows each such pull ran on a feature bookmark, while main, which the fetch had just updated, was the one behind. pull now names the bookmark it pulled and the others left behind. |
|
| 166 | + | - **For Andy:** metalgear's working copy is sound, on develop and clean. `logo-25` holds just the logo change and its dependencies; delete it if it is not wanted. |
|
| 167 | + |