OXYGENHUB

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.