Viewing files at commit b76ab8b42dfdCommit detailsView latest

scenarios/mount.yaml 177 lines · 4.8 KB · yaml
1
version: 1
2
suite: oak_mount_lazy_hydration
3
description: Oak mount startup and lazy hydration benchmark lane.
4
5
# oak/oak-benchmarks-tmp is a DISPOSABLE benchmark repo (two .md files);
6
# the push lanes intentionally publish virtual branches to it. Never point
7
# this at a repo whose history matters.
8
remote:
9
  owner_repo: "oak/oak-benchmarks-tmp"
10
  owner_repo_env: OAK_BENCH_MOUNT_REPO
11
  safe_push: true
12
13
defaults:
14
  runs: 1
15
  timeout_seconds: 120
16
  retries: 0
17
  target_read: README.md
18
  target_read_bytes: 4096
19
  target_read_contains: "# oak-benchmarks-tmp"
20
  content_manifest: MANIFEST.sha256
21
  require_content_manifest: false
22
  edit_path: .oak-bench/mount-edit.txt
23
  huge_file_path: "assets/big.bin"
24
  huge_file_read_bytes: 4096
25
  parallelism: 4
26
  max_disk_entries: 100000
27
  loop_iterations: 3
28
  desc_message: "oak bench task lifecycle"
29
  sparse_paths:
30
    - README.md
31
    - AGENTS.md
32
    - docs
33
34
metrics:
35
  - elapsed_ms
36
  - since_scenario_start_ms
37
  - time_to_first_useful_work_ms
38
  - bytes_hydrated
39
  - bytes_downloaded
40
  - visible_tree_bytes
41
  - allocated_tree_bytes
42
  - disk_entry_count
43
  - command_returncode
44
  - retry_count
45
  - correctness_checks
46
47
scenarios:
48
  - name: capability_probe
49
    intent: Report oak binary version and whether oak mount is available.
50
    requires_remote: false
51
    cache_state: none
52
    operations:
53
      - oak.version
54
      - oak.mount.help
55
56
  - name: cold_mount_startup
57
    intent: Measure startup on the first mount in a fresh benchmark run.
58
    requires_remote: true
59
    cache_state: unknown
60
    cache_state_reason: oak_global_cache_not_purged
61
    operations:
62
      - mount.start
63
      - mount.teardown
64
65
  - name: warm_mount_startup
66
    intent: Repeat mount startup after the process has already touched the repo.
67
    requires_remote: true
68
    cache_state: warm
69
    operations:
70
      - mount.start
71
      - mount.teardown
72
73
  # oak mount end refuses dirty/unpushed mounts (verified live 2026-06-11),
74
  # so every scenario that edits must commit AND push before teardown.
75
  - name: first_use_read_edit
76
    intent: Measure first useful filesystem work inside the mount.
77
    requires_remote: true
78
    cache_state: warm
79
    operations:
80
      - mount.start
81
      - fs.first_ls
82
      - fs.targeted_read
83
      - fs.first_edit
84
      - disk.usage
85
      - oak.commit
86
      - oak.push
87
      - mount.teardown
88
89
  - name: status_diff_commit_inside_mount
90
    intent: Measure the agent edit loop on a virtual branch inside the mount.
91
    requires_remote: true
92
    cache_state: warm
93
    operations:
94
      - mount.start
95
      - fs.first_edit
96
      - oak.status
97
      - oak.diff
98
      - oak.commit
99
      - disk.usage
100
      - oak.push
101
      - mount.teardown
102
103
  - name: push_virtual_branch
104
    intent: Measure commit plus push of a mounted task branch.
105
    requires_remote: true
106
    requires_safe_push: true
107
    cache_state: warm
108
    operations:
109
      - mount.start
110
      - fs.first_edit
111
      - oak.commit
112
      - oak.push
113
      - mount.teardown
114
115
  - name: task_lifecycle_loop
116
    intent: "Steady-state task lifecycle: repeated edit/commit/desc/push iterations on one mount, then oak finish --desc-file, space clean of the finished mount, and explicit teardown of anything left."
117
    requires_remote: true
118
    cache_state: warm
119
    operations:
120
      - mount.start
121
      - oak.desc
122
      - loop.push_desc
123
      - oak.finish
124
      - space.clean
125
      - mount.teardown
126
127
  - name: teardown_cycle
128
    intent: Isolate mount teardown cost and verify the mount path is released.
129
    requires_remote: true
130
    cache_state: warm
131
    operations:
132
      - mount.start
133
      - mount.teardown
134
135
  - name: interrupted_recovery
136
    intent: Probe behavior when the destination contains a leftover partial directory.
137
    requires_remote: true
138
    cache_state: unknown
139
    cache_state_reason: oak_global_cache_not_purged
140
    operations:
141
      - recovery.existing_partial_dir
142
143
  - name: offline_after_partial_hydration
144
    intent: Dedicated-runner scenario for reading hydrated content after network isolation.
145
    requires_remote: true
146
    requires_external_offline_harness: true
147
    cache_state: partial
148
    operations:
149
      - offline.partial_hydration_check
150
151
  - name: parallel_mounts
152
    intent: Measure several independent task mounts starting at the same time.
153
    requires_remote: true
154
    cache_state: warm
155
    operations:
156
      - parallel.mounts
157
158
  - name: sparse_task_paths
159
    intent: Touch only a few task-relevant paths and check that broad hydration is avoided.
160
    requires_remote: true
161
    cache_state: warm
162
    operations:
163
      - mount.start
164
      - fs.sparse_paths
165
      - disk.usage
166
      - mount.teardown
167
168
  - name: huge_file_partial_read
169
    intent: Read only the first bytes of a configured huge file.
170
    requires_remote: true
171
    requires_huge_file_path: true
172
    cache_state: warm
173
    operations:
174
      - mount.start
175
      - fs.huge_partial_read
176
      - disk.usage
177
      - mount.teardown