Roadmap: phase A done 9d333fc9ca1b
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-27 18:05 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
9d333fc9ca1b89edf2f90547073937a96fad9f24f5dfb8326c24d9c1f0937f4a- Depends on
- 119bbf50cb86 982864068a59 b0e64e81e4fb ff0af1ee299d
- Depended on by
- aedfe465b611 be0161a88dd7
- 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
- 11 atoms, 0 tree operations, 4 files
Browse the tree at this change
modified crates/oxy-core/src/lanes.rs +21 −4
| … | 68 unchanged lines |
||
| 69 | 69 | .filter(|(l, a)| a.is_some() && *l != lane && !edges.iter().any(|e| e.1 == *l)) |
|
| 70 | 70 | .map(|(l, _)| l) |
|
| 71 | 71 | .collect(); |
|
| 72 | - | rows.push(Row { lane, edges, through }); |
|
| 72 | + | rows.push(Row { |
|
| 73 | + | lane, |
|
| 74 | + | edges, |
|
| 75 | + | through, |
|
| 76 | + | }); |
|
| 73 | 77 | while active.last().is_some_and(|a| a.is_none()) { |
|
| 74 | 78 | active.pop(); |
|
| 75 | 79 | } |
|
| … | 4 unchanged lines |
||
| 80 | 84 | /// The number of lanes the rows use. |
|
| 81 | 85 | pub fn width(rows: &[Row]) -> usize { |
|
| 82 | 86 | rows.iter() |
|
| 83 | - | .map(|r| r.lane.max(r.edges.iter().map(|e| e.1).max().unwrap_or(0)).max(r.through.iter().copied().max().unwrap_or(0))) |
|
| 87 | + | .map(|r| { |
|
| 88 | + | r.lane |
|
| 89 | + | .max(r.edges.iter().map(|e| e.1).max().unwrap_or(0)) |
|
| 90 | + | .max(r.through.iter().copied().max().unwrap_or(0)) |
|
| 91 | + | }) |
|
| 84 | 92 | .max() |
|
| 85 | 93 | .map(|m| m + 1) |
|
| 86 | 94 | .unwrap_or(1) |
|
| … | 18 unchanged lines |
||
| 105 | 113 | ||
| 106 | 114 | #[test] |
|
| 107 | 115 | fn a_diamond_takes_two_lanes_and_rejoins() { |
|
| 108 | - | let rows = layout(&[(h(4), vec![h(2), h(3)]), (h(2), vec![h(1)]), (h(3), vec![h(1)]), (h(1), vec![])]); |
|
| 116 | + | let rows = layout(&[ |
|
| 117 | + | (h(4), vec![h(2), h(3)]), |
|
| 118 | + | (h(2), vec![h(1)]), |
|
| 119 | + | (h(3), vec![h(1)]), |
|
| 120 | + | (h(1), vec![]), |
|
| 121 | + | ]); |
|
| 109 | 122 | assert_eq!(rows[0].edges, vec![(0, 0), (0, 1)]); |
|
| 110 | 123 | assert_eq!(rows[2].lane, 1); |
|
| 111 | - | assert_eq!(rows[2].edges, vec![(1, 0)], "the second branch joins the first lane"); |
|
| 124 | + | assert_eq!( |
|
| 125 | + | rows[2].edges, |
|
| 126 | + | vec![(1, 0)], |
|
| 127 | + | "the second branch joins the first lane" |
|
| 128 | + | ); |
|
| 112 | 129 | assert_eq!(width(&rows), 2); |
|
| 113 | 130 | } |
|
| 114 | 131 | } |
modified crates/oxy-core/src/repo/mod.rs +6 −1
| … | 1081 unchanged lines |
||
| 1082 | 1082 | ||
| 1083 | 1083 | /// A window of `log_state`: entries `offset..offset+limit` and the total |
|
| 1084 | 1084 | /// count, for paginated views. |
|
| 1085 | - | pub fn log_window(&self, heads: &[ChangeHash], offset: usize, limit: usize) -> Result<(Vec<LogEntry>, usize)> { |
|
| 1085 | + | pub fn log_window( |
|
| 1086 | + | &self, |
|
| 1087 | + | heads: &[ChangeHash], |
|
| 1088 | + | offset: usize, |
|
| 1089 | + | limit: usize, |
|
| 1090 | + | ) -> Result<(Vec<LogEntry>, usize)> { |
|
| 1086 | 1091 | let all = self.log_state(heads)?; |
|
| 1087 | 1092 | let total = all.len(); |
|
| 1088 | 1093 | Ok((all.into_iter().skip(offset).take(limit).collect(), total)) |
|
| … | 141 unchanged lines |
modified crates/oxy-core/src/state.rs +1 −1
| … | 9 unchanged lines |
||
| 10 | 10 | self as o, AtomRef, Change, ChangeKind, Edit, Hlc, Mode, NodeKind, ObjectError, TreeOp, |
|
| 11 | 11 | }; |
|
| 12 | 12 | use crate::tree::{TreeGraph, TreeView}; |
|
| 13 | + | use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; |
|
| 13 | 14 | use std::sync::{Arc, Mutex}; |
|
| 14 | - | use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; |
|
| 15 | 15 | ||
| 16 | 16 | #[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] |
|
| 17 | 17 | pub enum StateError { |
|
| … | 860 unchanged lines |
modified docs/roadmap.md +1 −1
| … | 44 unchanged lines |
||
| 45 | 45 | ||
| 46 | 46 | ## Progress |
|
| 47 | 47 | ||
| 48 | - | - 2026-09-27: roadmap written; phase A started. |
|
| 48 | + | - 2026-09-27: roadmap written; phase A done the same day (challenge signatures, push report, `Send` states with the hub's cache, shared lanes and `log_window`); phase B started. |