From 0b921625713455df0310b1a640f0c4a758924d10 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 11:43:19 -0700 Subject: [PATCH 1/9] Restore nested-row performance and gate CI regressions --- .github/workflows/benchmark.yml | 27 +- docs/contributing/oracle-coverage.md | 149 ++- .../2026-11-05-boundary-only-metadata.md | 276 ++++++ .../2026-11-05-boundary-only-prep-review.md | 376 +++++++ ...2026-11-05-boundary-only-prep-sources.json | 915 ++++++++++++++++++ .../2026-11-05-metadata-policy-exploration.md | 199 ++++ .../2026-11-05-nested-row-performance.md | 184 ++++ .../oracle-reviews/callback-metadata.md | 14 + docs/guides/live-queries.md | 9 + docs/guides/migrate-to-1-0-rc.md | 10 +- packages/db/src/query/builder/group-keys.ts | 12 +- packages/db/src/query/builder/index.ts | 18 +- packages/db/src/query/builder/types.ts | 96 +- packages/db/src/query/compiler/group-by.ts | 2 +- packages/db/src/query/compiler/index.ts | 221 ++--- packages/db/src/query/compiler/joins.ts | 67 +- .../db/src/query/compiler/route-metadata.ts | 126 ++- packages/db/src/query/compiler/types.ts | 6 +- packages/db/src/query/live/ARCHITECTURE.md | 91 +- .../src/query/live/bucket-facade-adapter.ts | 28 +- .../query/live/collection-config-builder.ts | 10 +- .../src/query/live/materialized-pipeline.ts | 80 +- packages/db/src/virtual-props.ts | 3 +- packages/db/tests/oracle-config.ts | 1 + .../includes-context-transport-oracle.test.ts | 304 ++++++ .../includes-work-counter-oracle.test.ts | 347 ++++++- .../tests/query/public-container-copy.test.ts | 28 + .../query/virtual-row-fields-input-driver.ts | 53 +- .../virtual-row-fields-input-oracle.test.ts | 55 +- .../query/virtual-row-fields-input-oracle.ts | 39 +- .../query/virtual-row-fields-oracle.test.ts | 339 +++++++ .../virtual-row-fields-types-oracle.test.ts | 355 ++++++- scripts/bench/README.md | 95 ++ .../boundary-only-metadata-2026-11-05.csv | 37 + .../boundary-only-prep-bracket-2026-11-05.csv | 757 +++++++++++++++ .../bench/boundary-only-suite-2026-11-05.csv | 505 ++++++++++ scripts/bench/ci-variation-2026-11-05.csv | 101 ++ .../bench/compare-incremental-update.test.mjs | 190 ++++ scripts/bench/compare-incremental-update.ts | 167 +++- scripts/bench/incremental-update.ts | 192 +++- ...metadata-policy-exploration-2026-11-05.csv | 85 ++ .../bench/nested-row-repair-2026-11-05.csv | 37 + 42 files changed, 6216 insertions(+), 390 deletions(-) create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-metadata.md create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json create mode 100644 docs/contributing/oracle-reviews/2026-11-05-metadata-policy-exploration.md create mode 100644 docs/contributing/oracle-reviews/2026-11-05-nested-row-performance.md create mode 100644 scripts/bench/README.md create mode 100644 scripts/bench/boundary-only-metadata-2026-11-05.csv create mode 100644 scripts/bench/boundary-only-prep-bracket-2026-11-05.csv create mode 100644 scripts/bench/boundary-only-suite-2026-11-05.csv create mode 100644 scripts/bench/ci-variation-2026-11-05.csv create mode 100644 scripts/bench/compare-incremental-update.test.mjs create mode 100644 scripts/bench/metadata-policy-exploration-2026-11-05.csv create mode 100644 scripts/bench/nested-row-repair-2026-11-05.csv diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 26d5ae08ab..19bab01b7f 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -37,11 +37,13 @@ jobs: persist-credentials: false - name: Setup Tools uses: tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3 + - name: Test benchmark regression gate + run: node --test scripts/bench/compare-incremental-update.test.mjs - name: Run benchmark on PR run: | pnpm --filter @tanstack/db-ivm build pnpm exec tsx scripts/bench/incremental-update.ts \ - --iterations=100 --warmup=20 \ + --iterations=100 --warmup=20 --repetitions=3 \ --outFile="$RUNNER_TEMP/candidate.json" - name: Run benchmark on base env: @@ -56,16 +58,27 @@ jobs: pnpm install --frozen-lockfile pnpm --filter @tanstack/db-ivm build pnpm exec tsx scripts/bench/incremental-update.ts \ - --iterations=100 --warmup=20 \ + --iterations=100 --warmup=20 --repetitions=3 \ --outFile="$RUNNER_TEMP/base.json" - name: Compare results + id: comparison + continue-on-error: true run: | pnpm exec tsx scripts/bench/compare-incremental-update.ts \ --base="$RUNNER_TEMP/base.json" \ --candidate="$RUNNER_TEMP/candidate.json" \ - --outFile="$RUNNER_TEMP/comparison.md" - cat "$RUNNER_TEMP/comparison.md" >> "$GITHUB_STEP_SUMMARY" + --outFile="$RUNNER_TEMP/comparison.md" \ + --failOnRegression=true + - name: Publish summary + if: always() && steps.comparison.outcome != 'skipped' + run: | + if [ -f "$RUNNER_TEMP/comparison.md" ]; then + cat "$RUNNER_TEMP/comparison.md" >> "$GITHUB_STEP_SUMMARY" + else + echo 'Benchmark comparison failed before producing a report; see the comparison log.' >> "$GITHUB_STEP_SUMMARY" + fi - name: Upload reports + if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: benchmark-reports @@ -74,7 +87,7 @@ jobs: ${{ runner.temp }}/candidate.json ${{ runner.temp }}/comparison.md - name: Comment on PR - if: github.event_name == 'pull_request' + if: always() && github.event_name == 'pull_request' && steps.comparison.outcome != 'skipped' # PRs from forks get a read-only token; the job summary and artifacts # still carry the results. continue-on-error: true @@ -83,6 +96,7 @@ jobs: PR_NUMBER: ${{ github.event.pull_request.number }} REPO: ${{ github.repository }} run: | + if [ ! -f "$RUNNER_TEMP/comparison.md" ]; then exit 0; fi MARKER='' BODY_FILE="$RUNNER_TEMP/comment.md" { echo "$MARKER"; cat "$RUNNER_TEMP/comparison.md"; } > "$BODY_FILE" @@ -93,3 +107,6 @@ jobs: else gh api "repos/$REPO/issues/$PR_NUMBER/comments" -F body=@"$BODY_FILE" > /dev/null fi + - name: Enforce regression gate + if: always() && steps.comparison.outcome == 'failure' + run: exit 1 diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index fbea9cd98c..148a831f6a 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -760,6 +760,19 @@ RIGHT joins, facade projection metadata and inline values live in nested projection histories beyond these two QueryRef levels, every join kind under source changes, framework receiving paths or provider behavior. +The prep review adds 102 histories for implicit single-source/joined output and +functional direct-source returns after inherited inline materialization. +Direct/QueryRef receivers, each source's held write, every authored collision, +and absent/array/singleton input distinguish source attribution from output +attribution. All 72 path/source/checkpoint states reach their required minimum; +408 comparisons check complete row values and physical entry keys at preload, +held mutation, settlement without confirmation, and a later remote write. +The unchanged implementation fails 56 of the full owner's 1,706 tests while +all 1,604 prior tests pass. Restoring namespace-sidecar loss or implicit joined +source attribution fails the extended comparison. These eager-source histories +do not establish framework timing, rejected-write combinations or arbitrary +include depth. See the [prep-review evidence](oracle-reviews/2026-11-05-boundary-only-prep-review.md). + The attribution driver compares both authored rows, every ordinary field and all four virtual fields, then deletes the non-first row. Half its histories configure independent projected keys; default-key differential evidence remains @@ -798,8 +811,12 @@ and nonempty child receiving cuts. Six lifetime and four inline-value hostile controls reject wrong observations. See [chunk 5](oracle-reviews/2026-10-28-pr-2171-oracle-chunks.md). Functional callback-input observations have a separate receiving boundary in `virtual-row-fields-input-oracle.test.ts`, sharing the existing source metadata -judgment. The maintainer extended O12 on 2026-10-30 from fn.select to fn.where -and fn.having while preserving authored inline output. Thirty-three authoring +judgment. The maintainer's 2026-11-05 boundary-only decision supersedes O12's +October 28/30 callback-normalization policy. Intermediate callback inputs, +inline values and Effect outputs retain authored fields, including explicit +reserved-name overrides. Direct source rows retain genuine metadata. Published +Collection metadata attribution remains with the publication owner above. +Thirty-three authoring descriptions cross seven QueryRef/join/union paths, five callback forms (select, where, having, where-select, having-select), and root, wrapped child, direct child and real Effect receivers. Flat union children require a named @@ -828,16 +845,20 @@ The union optimizer clones branch IR: counters establish original-key reuse for FROM/JOIN, while union checks propagation/transparency without claiming that cache hit. This receiver supplies no Effect-root metadata attribution law. -The owner has 4,923 tests. Before callback production edits, it rejected 1,102 -metadata input comparisons on the reviewed implementation; 3,821 tests passed. -All 22,502 callback, inline and compiler states reached. The repaired owner -passes. Final mutants reject a WHERE-only repair (551 comparisons), enabling -normalization for every predicate pipeline (696 authored-output comparisons), -and dropping the selected-row cache mode (26 comparisons). Earlier path-specific -FROM/JOIN/union normalization mutants each failed 112 compiler comparisons. -The real Effect receiver additionally rejects 203 metadata comparisons on the -actual PR base. That receiving evidence does not retroactively supply the -historical selection repair's initial pre-edit gate. +The owner retains all 4,923 original tests and adds one symbol checker control, with 20,720 callback states, 594 inline/rejection +states and 1,188 compiler states. Before the boundary-only production edits, +the revised independent model rejected 4,106 comparisons on unchanged code; +all declared states reached once, including real Effect and Collection +receivers. Predicate membership follows the authored value. Complete nested +ordinary values remain strict, including nested reserved names. The only +root-metadata omission in the common input comparison is an actual published +flat-union Collection root; the publication owner judges that attribution. +See the [boundary-only implementation record](oracle-reviews/2026-11-05-boundary-only-metadata.md) +for GREEN, hostile mutants, source bindings and limits. The +[historical runtime repair record](oracle-reviews/callback-metadata.md) +preserves the earlier policy's evidence and lossless review audit; those +callback-normalization expectations are retired by the maintainer decision, +not inferred from production output. The ordered-work owner, `ordered-work-oracle.property.test.ts`, adds 144 finite histories through `ordered-compiler-cache-driver.ts`. Two compilation orders, @@ -947,6 +968,59 @@ nullability, one-branch readonly loss, nested any/metadata/modifiers and Date metadata any. Their rejection requires failed type-law constraints, not syntax or setup errors. The normal test:oracles command selects this owner. +The 2026-11-05 boundary-only implementation extends the primary owner above +with 48 authored collision/path/selection states and 18 grouping/collision +neighbors for every one of the 24 source descriptions. Actual contextual +where/having/select, inline and Collection types use one declared-shape law; +all new states reach 24 times. The extended owner rejects 24 consumers before +the type repair and passes all 33 checks afterward. Publication replaces +reserved names instead of intersecting authored collisions. Flat union HAVING +also retains its documented `$selected` context in the expected type. The +[implementation record](oracle-reviews/2026-11-05-boundary-only-metadata.md) +binds RED/GREEN, mutants and source evidence. This revises the primary owner's +ordinary projection policy; the chunk-24 account below remains historical and +does not imply that its companion files exist on this base revision. + +The prep review extends this same owner with 48 structured-reference states, +12 structured selected-context states, 48 grouping-boundary states and 12 +visible-aggregate depth/collision states. Structured WHERE/SELECT and grouped +HAVING judge authored reserved names and field values; direct-source controls +retain genuine metadata. Empty callbacks/helpers before/after selection, +accumulated grouping and an explicitly typed `groupKeys` context distinguish +empty grouping from erasing an existing group. Aggregate depths 0/7/8/9/10/16 +distinguish removal of the old depth-eight cutoff from moving it one level. +Intermediate QueryRef, inline and published result types use the shared shape +law. The repaired owner passes all 33 checks, and isolated context-enrichment, +selected-context-enrichment, unconditional-grouping and depth-cutoff mutants +fail only native type constraints. See the +[prep-review evidence](oracle-reviews/2026-11-05-boundary-only-prep-review.md) +for pre-edit RED, corrected carrier expectations, reach and source bindings. + +Grouping inference remains bounded by the declared key-list type. A callback +annotated as a broad array can return an empty list at runtime while the general +overload still promises a generated key. The concrete trace is +`const keys: Array['id']> = []`, followed by +`new Query().from({ source: rows }).groupBy(groupKeys(() => keys)).select(({ source }) => ({ id: source.id }))`, +consumed through QueryRef `fn.select(({ inner }) => inner.$key)`. +Here `PublicRef` names the public `Ref` export. An executed native/runtime probe +accepts `const key: string | number = inner.$key` with zero diagnostics but +observes `undefined` and no `$key` property before publication. This is a +pre-existing dynamic-emptiness inference limit, owned +by this public-type oracle; it needs a conditional/optional-key type law and +generated empty/nonempty runtime choices before a broader claim. The repair +above establishes statically empty lists, not arbitrary dynamic grouping. + +Static inference limit, owned by this primary public-type oracle: when an +aggregate is entirely inside an expression that erases aggregate provenance, +a missing generated `$key` is not inferred for its intermediate value. For +example, `select(({ row }) => ({ positive: gt(count(row.id), 0) }))` generates +one keyed group at runtime, while a QueryRef callback's `group.$key` is absent +from its inferred shape unless grouping is explicit. The existing inline type +path also had this omission. Closing that inference class needs expression +provenance and a wrapped-aggregate grammar dimension; the present authored-value +and publication-type claim does not establish complete group-key inference. +No runtime key loss is accepted by this change. + Chunk 24 extends this same owner with `virtual-row-fields-receiver-types-oracle.ts` and the native compiler support `virtual-row-fields-receiver-types-support.ts`. Its 34 context families cross the same 24 source descriptions: 14 recursive @@ -1101,6 +1175,40 @@ the parent's `orderBy` still leaves the parent's auto-index (owner: compiler tests), and needs a focused witness that the index does not outlive a failed compile. +The same owner checks ordinary nested source payload work. Its block-count +grammar (0–40, with fixed 0/1/20/40 cases) crosses fourteen paths: source, +join, QueryRef, union, implicit and functional selection, direct predicates, +projected QueryRef WHERE/HAVING, and correlated inline, callback, implicit, +Collection and grouped HAVING paths. Each checks the full selected document +and its identity at preload and two synced replacements. Both singular and +batch descriptor APIs count discovery inside source payload containers, which +must be zero. Each fixed/random campaign executes twelve inputs; all fourteen +states must be reached inside every input: 336 path histories and 1,008 public +checkpoints. This measures metadata discovery, not hashing, arbitrary user +callbacks, proxy traps or elapsed latency. + +The prep review separates expected payload content from the object supplied to +production. The shared checker independently reconstructs content from block +count and tick, and separately checks source reference identity. Mutating the +source's tick at the initial checkpoint falsely passed the earlier checker; +the revised checker rejects that mutation on all fourteen paths in each +campaign. The grammar, work budget, checkpoints and fixed/fresh run counts stay +the same. See the [prep-review evidence](oracle-reviews/2026-11-05-boundary-only-prep-review.md). + +The [initial repair](oracle-reviews/2026-11-05-nested-row-performance.md) +covered seven paths. The +[policy exploration](oracle-reviews/2026-11-05-metadata-policy-exploration.md) +exposed remaining QueryRef predicate and correlated scans. Those paths are now +in the owner's grammar. Their unchanged-production RED reached actual public +checkpoints before rejecting 2/2/6/12/6/6 scans even on empty documents. +A subsequent valid grouped HAVING fixture rejected two scans before that +production path changed. Compiler-owned metadata now travels outside alias +values, and materialization resolves only compiled include paths. Value laws +remain with the route-context, metadata-input and publication owners. Existing +budgets and unrelated semantic comparisons are preserved. See the +[implementation evidence](oracle-reviews/2026-11-05-boundary-only-metadata.md) +for mutants, measurements and remaining limits. + The ordered-lifecycle owner also crosses deletion and retargeting of the first window's join marker after that window is public but the live-query Collection is still `loading` on child demand. The next ordered page ends at null; a later @@ -5419,6 +5527,23 @@ establish elapsed-time performance. ## Compound joins +The route-context transport owner +(`packages/db/tests/query/includes-context-transport-oracle.test.ts`) also +crosses FROM/JOIN QueryRef placement, expression/direct functional return, and +array/materialized inherited inputs. Each of eight cells checks three parents +(disjoint and shared routes), all three outer materialization forms, and six +cuts: initial, parent move, child move, grandchild update, empty grandchild +result and reactivation. All 432 public comparison states reach once; the +eight functional callback-group states reach at least once. The independent +model recomputes child/grandchild membership from source arrays. Missing +grandchildren remain observable as `undefined`, rather than being normalized +to an empty array. Unchanged production fails six of 202 tests, with all 192 +prior tests passing. Namespace-sidecar and joined-include-descriptor mutants +fail the extended owner; repaired behavior also keeps callbacks free of private +symbols. This covers eager synchronous source writes, not async demand, +callback counts, ordering or metadata attribution. See the +[prep-review evidence](oracle-reviews/2026-11-05-boundary-only-prep-review.md). + [The replacement evidence record](oracle-reviews/2026-10-05-compound-joins.md) records RED admission on main, GREEN refinement, and hostile-mutant failures. The cold-join reconciliation owner now covers compound equality classes, diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-metadata.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-metadata.md new file mode 100644 index 0000000000..e7ddef4200 --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-metadata.md @@ -0,0 +1,276 @@ +# Boundary-only metadata and nested-query performance + +This implements the maintainer's 2026-11-05 choice: **intermediate callbacks +and inline results retain authored fields; published Collection rows retain +genuine computed metadata**. It supersedes the October 28/30 callback-view +normalization decisions. The [policy exploration](2026-11-05-metadata-policy-exploration.md) +records those decisions, the issue/PR history, rival predictions and prototype +measurements. This record describes the implementation on base +`8feab6ea3eaae4456f738da39fa93508ddd5cc01`, with the source binding below. +No commit or pull request has been published for this work. + +The subsequent [prep-review record](2026-11-05-boundary-only-prep-review.md) +records additional attribution, include-transport and public-type repairs. +Measurements, source hashes and verification below describe this earlier +implementation snapshot; the subsequent record binds the reviewed revision. + +## Law, experiment and inference + +For an authored intermediate `{ id: 1, $collectionId: 'application' }`, +`fn.select`, `fn.where`, `fn.having`, inline children and Effect output retain +`'application'`. An actual Collection publication supplies genuine row metadata. +Direct source rows already have genuine metadata. Structured source selections +and spreads preserve source attribution; functional selections preserve it +only by returning that source row directly. An explicit override is data before +publication and cannot forge publication attribution. Private compiler state +must remain absent from public callback values, including `$selected` context. +Authority: the explicit maintainer choice and the revised +[live-query architecture](../../../packages/db/src/query/live/ARCHITECTURE.md). + +The independent input model predicts values from source facts and authored +syntax. It does not read compiler provenance. The existing grammar retains +all projection/collision combinations, seven recursive/join/union placements, +select/where/having variants, four receivers, shared/separate cache orders and +four Collection timeline cuts. Real Effects additionally check every delivered +value/previousValue, exit/reentry and post-disposal silence. Both Collection +and Effect receivers ran before production edits. Predicate membership now +follows the authored value, so a publication-only repair cannot hide an earlier +wrong input. Nested values remain strict. + +The work owner independently expects the authored document and its identity +at preload and two synced replacements. Fourteen direct/correlated paths cross +0–40 blocks; fixed examples cover 0, 1, 20 and 40. Fixed seed 2355 and a fresh +random campaign each run four examples plus eight generated inputs: **336 path +histories and 1,008 public checkpoints**. Both singular and batch descriptor +APIs count visits inside known source payload containers. No comparison +excludes nested reserved application fields. This measures a specific compiler +work budget, not all possible traversals or elapsed latency. + +Before production changes, the revised input owner rejected **4,106 of 4,923 +checks**. All **20,720 callback**, **594 inline/rejection** and **1,188 compiler** +reach states executed once. Expanded work histories rejected all six initially +added paths, even with empty documents: 2/2/6/12/6/6 scans, expected zero. A +later valid grouped-HAVING witness rejected two scans before its repair. An +initial grouping fixture without `groupKeys()` was a setup failure, not RED. + +The implementation transports one authored value per occurrence. A small +namespace sidecar carries source attribution and include routing; source +payloads stay opaque. Materialization compiles resolvers for declared include +paths instead of discovering private state throughout documents. Changed-path +copies preserve descriptors, prototypes and user symbols. Generic manual +adapter callers keep the descriptor-preserving recursive walker. + +Compilation retains three cache roles: authored root, published Collection and +intermediate source. Sharing value semantics does not permit sharing movable +windows. Existing ordered-cache tests rejected that accidental sharing before +repair; aggregate QueryRef tests likewise rejected loss of the generated +missing group key. Both neighboring contracts remain enforced. + +## Type boundary + +The primary public type owner generates native TypeScript consumers from 24 +source descriptions. New dimensions cross six reserved-field collision forms, +four QueryRef/join/union paths and structured/functional authoring: **48 new +states**, each reached **24 times**. They judge actual contextual callback, +inline and published Collection types through one independently declared shape +law, including exact keys and readonly/optional modifiers. Eighteen generated +grouping/collision neighbors also reach 24 times each, preserving generated +missing keys while retaining explicit authored keys. Public construction runs +before the compiler comparison to reject illegal query syntax. + +The extended owner failed **24 consumers**, with nine passing controls, before +production type edits. The repair separates authored QueryRef/inline types from +published types and replaces reserved fields on publication instead of +intersecting incompatible authored types into `never`. Grouping context tracks +explicit groupBy and visible aggregate selections. The type changes erase to +identical JavaScript; they do not change the measured runtime. + +This is source-public inference evidence. Built declarations are also checked +by the normal package build; installed npm resolution and framework handler +inference are separate paths. Group-key inference from a fully wrapped +aggregate whose expression type erases aggregate provenance is outside this +finite type grammar; the coverage map retains that concrete inference limit. + +## Additional recorder gap + +A final public probe found `Symbol(rowMetadata)` under a flat union's HAVING +`$selected`. The recorder had ignored symbols and removed that documented +context field before judging source values. It now records symbols at both +known roots before the context omission. These fixtures author no symbols; +user-authored symbol fidelity remains covered by the container/context owners. +The unchanged implementation failed **198 checks**, with 4,725 passing. Cleaning +only the known `$selected` root makes the input/work run pass **4,970 checks**; +it adds no recursive payload discovery. A hostile symbol observation is rejected +by the shared comparison. This was an enforcement gap, not another law change. + +## Verification and calibration + +From the worktree root, the principal commands are: + +```sh +pnpm --dir packages/db exec vitest run --coverage.enabled=false \ + tests/query/virtual-row-fields-input-oracle.test.ts \ + tests/query/includes-work-counter-oracle.test.ts +pnpm --dir packages/db exec vitest run --coverage.enabled=false \ + tests/query/virtual-row-fields-types-oracle.test.ts +pnpm --filter @tanstack/db build +node --test scripts/bench/compare-incremental-update.test.mjs +pnpm lint:changed +``` + +The broader runtime run includes publication and Effect metadata, context +transport, functional projection/rejection, container copies, aliases, query +shapes, cross-formulation, space, facade publication/rollback, ordered work and +lifecycle, includes state/Collection/optimistic/temporal/publication, and +subquery/aggregate values. The final run passes **9,652 checks in 23 runtime files**, and the native +public-type owner passes **33 checks**. The normal declaration build and a +source-only TypeScript check pass. An extra whole-package `tsc --noEmit` attempt +exhausted Node’s default 4GB heap; it supplies no successful whole-test-tree +typecheck evidence. `pnpm lint:changed` passes, as do the 19 gate CLI checks. + +Hostile semantic normalization of intermediate results caused **4,222 assertion +failures / 4,923 checks**. Restoring recursive callback cleanup rejected seed +2355/path `0` on **all fourteen work paths**, with counts +2/2/4/2/2/4/6/6/6/8/10/8/8/10. These are assertion failures at the promised +checkpoints, not timeouts. Sources were restored byte-for-byte after each +mutant. Restoring type enrichment on intermediates fails the shared native shape +constraints on a generated consumer. Removing only the selected-context cleanup +fails **198 of 4,924 input checks**, with 4,726 passing. Both final mutants were +restored byte-for-byte and rejected by assertions, not setup failures. + +Scratch evidence is in `/tmp/db-boundary-only-implementation-2026-11-05`: +`red.log`, `work-red-all.log`, `group-red-valid.log`, `type-group-red-valid.log`, +`selected-symbol-red.log`, the GREEN logs and hostile-mutant logs. The earlier +lossless issue ledger and raw issue/proposed diff are in +`/tmp/tanstack-db-perf-2355-2026-11-05`. + +## Measurements + +The [whole-suite table](../../../scripts/bench/boundary-only-suite-2026-11-05.csv) +and [correlated probe table](../../../scripts/bench/boundary-only-metadata-2026-11-05.csv) +retain every repetition. Sequential runs use Node 24.19.0 on Apple M5 Max, +100 measured writes after 20 warmups, and three fresh fixtures. Pre-2312 DB +sources are `035a5260`, using the same current db-ivm and dependencies. This +isolates DB source behavior; it does not recreate a historical installation. +Final type edits have identical erased JavaScript. The later selected-context +cleanup changes only HAVING callback sanitation, which these timing scenarios +do not use; its work evidence is separate. + +Across the full suite, candidate/pre-2312 geometric means are **0.88× writes, +0.91× cold** and the comparator passes. Nested-document query means are +**0.913× writes, 1.019× cold**. At 10,000 documents without manual indexes: + +| Mode | Pre cold / write ms | Boundary-only cold / write ms | +| --- | ---: | ---: | +| Synced | 80.188 / 0.026125 | 87.299 / 0.024250 | +| Optimistic | 69.489 / 0.160791 | 65.747 / 0.145750 | + +Ten-child, 200-block correlated probes: + +| Path | Pre cold / write ms | Boundary-only cold / write ms | +| --- | ---: | ---: | +| QueryRef predicate | 0.335 / 0.03521 | 0.480 / 0.04088 | +| Correlated inline | 7.586 / 3.9598 | 0.889 / 0.7110 | +| Correlated QueryRef callback | 15.143 / 5.7103 | 5.246 / 1.5084 | + +Counting both descriptor APIs at 0/20/200 blocks, correlated inline changes +from **8/408/4008 to 0/0/0**; correlated callbacks from +**16/816/8016 to 0/0/0**. The ordinary QueryRef-predicate pre-2312 and repaired +paths both count zero. Some fixed timing costs remain. These measurements do +not establish that every query is faster or that metadata has zero latency. + +The [CI study and gate](../../../scripts/bench/README.md) compare candidate and +base with the exact same harness on one runner. Three repetitions support +per-query +30% write/+50% cold gates and a persistent localized regression gate. +All ten historical same-runtime paired jobs pass the new comparator; its +19 CLI controls pass. Actual remote runs of the new repetition policy remain +unobserved, so future noise calibration is still required. + +The final minified comparison against HEAD adds **426 gzip bytes / 384 brotli +bytes** to DB; the typical app adds **16 gzip bytes**, and the includes scenario +adds **361 gzip bytes**. These are shipped-byte comparisons; oracle and report +source growth does not enter the runtime bundle. + +## Oracle applicability and limits + +ORC-001–003: authority, independent models and literate responsibilities are +in each owner. ORC-004: collision names distinguish ordinary authored data from +genuine publication; path/kind/receiver ablation loses named boundaries; zero +and maximal block counts distinguish fixed work from payload scaling. Legal +examples reconstruct the issue and the newly found QueryRef/correlated paths; +compiled Collection-valued functional inputs remain rejected neighbors. +ORC-005/014: real Collection and Effect receivers supply their own observations; +no provider or framework schedule is inferred. ORC-006/013: hostile originals, +zero/nonempty documents, authored/no-collision and direct-source neighbors +calibrate the relevant comparisons. ORC-007: fixed/fresh campaigns share the +same work property and budget; direct seed/path replay is preserved. The type +and metadata matrices are exhaustive finite grammars. ORC-008/009: the input +model's snapshots abstract a value, not a published row; sidecars/cache roles +are production representation, not independent-model state. ORC-010: reports +accumulate comparisons before cleanup; existing cleanup preserves primary and +secondary failures. ORC-011: no additional shared-semantic-fault hypothesis +requires another model; literal authored expectations and independent native +shape judgments check different boundaries. ORC-012/015/016: this versioned +record binds sources, reach is mandatory and measured, and retained examples +use each owner's shared model/driver/check. Supplemental copy tests remain +ordinary tests. + +The bounded claim covers authored intermediate metadata, genuine publication +in the exercised histories, and zero compiler metadata descriptor visits inside +source payloads along fourteen paths. It does not bound hashing, user getters, +proxy traps, arbitrary callback work, provider delivery, framework scheduling, +unbounded recursive query shapes, or every possible traversal algorithm. +Generic/manual adapter traversal remains recursive. No universal throughput or +zero-latency proof follows from these instruments. + +## Loss audit and readiness + +The raw issue and proposed scan were re-read after implementation. R1–R5 from +the [original audit](2026-11-05-nested-row-performance.md) remain **5 fixed-now**; +their performance, missing benchmark and CI-noise destinations are retained. +The scan's getter/named-array-property defects remain rejected by supplemental +controls. Sibling cache-window, generated-key, static-boundary and +selected-context recorder defects are repaired as described above. The policy +change is **accepted-design**, authorized explicitly by the maintainer. +No issue finding was dropped or deferred. Reviewer assessment remains **hire: +yes** for accurate diagnosis/reproduction; the proposed scan was unsuitable +under the descriptor and payload-work contracts. + +Local verification supports review of this working change. Whole-PR readiness +and the unrelated #2312 ordered/replay/framework changes are separate verdicts; +this audit does not approve every law or implementation in that PR. No remote +CI run or merge readiness is claimed. + +## Source binding + +Base HEAD: `8feab6ea3eaae4456f738da39fa93508ddd5cc01`. The 22 changed +production/test/harness/workflow files below bind the final verification. +The SHA-256 of this sorted map, serialized as compact JSON, is +`529c1a9150e1749d6443f56f1aed02e7507236829c4ae012d530df8fb5955c18`. Documentation and measurement CSVs are versioned alongside it. + +```json +{ + ".github/workflows/benchmark.yml": "d2afcf4978c6207359330a8e415cacc283e73dab053eb4ed4128052f8bfe0cfe", + "packages/db/src/query/builder/index.ts": "2714cebb29ba8ef5539878f2af031d2b19e463beb1ed7e12ace0442f1c8592c8", + "packages/db/src/query/builder/types.ts": "5b3cb8e4a6ca8f62698ef9df02aab7f2edec791a3075961afae0a8be6656c422", + "packages/db/src/query/compiler/group-by.ts": "a0aa4b061811b1fbdbf7409b156869e987504814ddfa838c6537f513db94adcb", + "packages/db/src/query/compiler/index.ts": "b1365ff05f8db1702b4d9f1ca6f82aee9c3c85a5207dff5dbc9551c403f2e6d6", + "packages/db/src/query/compiler/joins.ts": "2b09980feb7f1ef6cbdcd85ed1fb0d618ec8a0120beffa86a2c636c516d8f252", + "packages/db/src/query/compiler/route-metadata.ts": "ff527255b91c1e2d4edcec3395170d728b6fd7ce8207175d472dd3668f32fec1", + "packages/db/src/query/compiler/types.ts": "922a89c5eba805130f2c082e934c0829593b31c335a4cb2a4983aa1559447ad5", + "packages/db/src/query/live/bucket-facade-adapter.ts": "fe1023e2558711161f4625d6e8b57f12419816f471b0c4e0b4c3cb6a6ae22c2d", + "packages/db/src/query/live/collection-config-builder.ts": "0f90dd5d33fa58a7aedd42e1e6e40427d8c22a614849cb8e6df05c3ef8b91cc2", + "packages/db/src/query/live/materialized-pipeline.ts": "d1f957fbd8c6a367eb885e3c1210b8ad700c24b5846be84550d0099009acdb84", + "packages/db/src/virtual-props.ts": "b06e07f9fe58b1ef94b4b02b4903562cd6cbb4798f1f0789c2ffe607fb501368", + "packages/db/tests/oracle-config.ts": "aaeb58ca13be9fb4a0797a3caacb8d79441b00fdd692f2993987d0a8770f9e9b", + "packages/db/tests/query/includes-work-counter-oracle.test.ts": "9f1315d81e6512c14e1dda80ae751e6f41fff33f0f86e053649de14388d6db1e", + "packages/db/tests/query/public-container-copy.test.ts": "71f24aeb92a8f7345e7be5d5989f55deccf8b07571eb71960709ee73e2210a8a", + "packages/db/tests/query/virtual-row-fields-input-driver.ts": "caac0baded4371fee584da840bc1fe29333df55676cd3cf5b0d431fe1e08b366", + "packages/db/tests/query/virtual-row-fields-input-oracle.test.ts": "a9afe03de7d604011ef29bbae8d54cceb8c0ae3f65a9ae5c1691beb914231603", + "packages/db/tests/query/virtual-row-fields-input-oracle.ts": "64c0e1c0746fd26fc546977bba86c0edc5321311d1be87c636beb5c038336604", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "5b5e275da1431c804347f42970bfafa7e4230c68d7294963b84953fecb1b7e1b", + "scripts/bench/compare-incremental-update.test.mjs": "87870408b5df7f822d93bfafe61b4e4aba54da53b1a86f5494c75b657c629e31", + "scripts/bench/compare-incremental-update.ts": "69b8a1515801bc99d13f5dfff9ac9f3569d4dda2b5678e57a787d703708320dd", + "scripts/bench/incremental-update.ts": "3f50520ad800f861b585175c32f04a267a875ff9ca71595af7d1ff863b74dad2" +} +``` diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md new file mode 100644 index 0000000000..800d7178c7 --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md @@ -0,0 +1,376 @@ +# Boundary-only metadata: prep review + +This record follows the [implementation snapshot](2026-11-05-boundary-only-metadata.md). +The review started with that uncommitted implementation on +`8feab6ea3eaae4456f738da39fa93508ddd5cc01`, also the fetched `origin/main`. +The maintainer's boundary-only decision remains the authority: intermediate +values retain authored fields; actual Collection publication supplies genuine +metadata. No further product-law change was needed for these repairs. + +## Publication attribution and nested propagation + +**Law.** Structured whole-source selections/spreads and functional direct-source +returns retain genuine source attribution. Authored overrides cannot forge it. +An implicit joined namespace combines sources and receives output Collection +metadata. Internal materialization must preserve parent correlation and complete +descendant values while callbacks remain free of private compiler state. +Authority: the maintainer decision and the live architecture's route-context, +nested-propagation and publication laws. + +**Gap and repair.** MAT-1 and MAT-2 shared a missing boundary: resolving inherited +inline inputs removed attribution and route sidecars from the internal +namespace. The compiler now retains that namespace bookkeeping while replacing +its aliases with resolved values. Callback sanitation remains at the public +input boundary. RUNTIME-1 assigned main-source metadata to an implicit joined +namespace; this output now retains output attribution. The extended route +grammar also exposed SIBLING-1: joined QueryRefs dropped inherited include +descriptors, so even expression selections lost grandchildren. The join compiler +now propagates those descriptors into the containing query. + +**Reach.** The publication owner adds 102 finite histories: implicit single/join +and functional direct-source returns after absent/array/singleton input, +direct/QueryRef receivers, each source's held write and every authored collision. +It compares physical entry keys and full readable rows at initial preload, +held mutation, settlement without confirmation and remote next use. Its 72 +declared path/source/cut states cover 408 comparisons: 24 implicit states each +reach once and 48 inline-return states each reach eight times. + +The route owner adds FROM/JOIN QueryRef × expression/functional return × +array/materialized inherited input. Three parents have disjoint and shared +routes. All three outer forms are observed at initial, parent move, child move, +grandchild update, empty result and reactivation. All 432 comparison states +and eight callback-group states each reach once. Independent +source-array recomputation supplies expected membership; missing grandchildren +remain `undefined` in observations, so omission cannot pass as an empty value. + +**RED.** Before any production repair in this review, the publication owner +failed 56 of 1,706 tests; all 1,604 prior tests passed. Four implicit joined +histories and 52 materialized direct-return histories failed. The route owner +failed six of 202 tests, with all 192 prior tests passing. FROM/functional +histories lost children; JOIN expression and functional histories lost +grandchildren. The publication command was: + +```sh +TANSTACK_DB_ORACLE_STATISTICS=1 pnpm --dir packages/db exec vitest run \ + --maxWorkers=2 --coverage.enabled=false --typecheck.enabled=false \ + tests/query/virtual-row-fields-oracle.test.ts +``` + +The route command substitutes +`tests/query/includes-context-transport-oracle.test.ts`. + +**GREEN.** The repaired four-owner run passes 6,883 tests: publication, +route-context transport, callback input and nested payload work. A broader run +passes 9,819 tests in 25 runtime files. The final four-owner rerun after the +minimal attribution branch adjustment also passes 6,883 tests. + +**Mutants.** Three separate semantic reversions fail assertions in the two +extended owners (1,908 tests): remove internal namespace-sidecar preservation, +56 failures; restore implicit main-source attribution, four failures; discard +joined include descriptors, four failures. Sources were restored byte-for-byte +after each. These were comparison failures, not setup errors or timeouts. +The attribution mutant preceded the final narrowing of that branch to the +witnessed `query.join` condition; the final owner rerun binds the narrowed code. + +**Limits.** These extensions cover eager synchronous sources, one QueryRef +receiving boundary, two child rows and one successful held mutation. They do +not establish arbitrary recursive depth, rejected-write combinations, provider +delivery, framework timing, callback counts or ordered-result guarantees. +Existing temporal/publication owners retain their separate claims. + +## Payload checker independence + +ORACLE-4 was an enforcement defect in the test, without a demonstrated +production mutation. Expected document content shared the object supplied to +production. A hostile `document.tick = -1` mutation falsely passed both prior +campaigns. Expected content now comes independently from block count and tick; +a separate assertion retains the source-reference identity law. The same +mutation then fails value assertions on all fourteen paths in both campaigns +(seed 2355, path `0`). Four retained wrong-observation calibrations exercise the +shared checker. The full work owner passes 51 tests. Its grammar, descriptor +budget, observation cuts and fixed/fresh run counts remain unchanged. Descriptor +counts still measure only metadata discovery through the two instrumented APIs. + +## Public types + +**Law.** Structured references preserve authored intermediate fields and their +types, without inventing metadata. Statically empty grouping contributes no +key; nonempty grouping or a visible aggregate contributes a missing intermediate +key. Publication still replaces reserved names. Authority: the maintainer's +boundary-only decision, the established grouping behavior and public-type owner. + +**Reach and repair.** The same 24 finite source descriptions add 48 structured +reference states, 12 selected-context states, 48 grouping-boundary states and +12 aggregate depth/collision states. Structured WHERE/SELECT and grouped HAVING +use authored fields; QueryRef values, inline results and Collection rows share +the independent declared-shape check. Empty callbacks/helpers before/after +selection, accumulated grouping and explicit-context helpers distinguish nearby +legal forms. Depths 0/7/8/9/10/16 distinguish removing the cutoff from moving it. +The compiler no longer enriches structured source/selected refs. An empty-list +overload retains the previous context; aggregate inspection stops at expressions, +wrappers and exact recursive ancestors instead of a numeric depth cap. + +**RED and chronology.** Legal public construction and source consumers rejected +TYPE-1, TYPE-2 and TYPE-3 before production edits. The initial decisive replay +reported 222 TS2344 constraints, and the full campaign failed 24 consumers with +nine passing controls. Ten pre-edit selected-context reserved-name constraints +also independently rejected TYPE-SIBLING-1. Sixteen additional scalar-carrier +constraints in that first replay had an invalid expected type and are **not +credited as product evidence**: public `Ref` is a recursive mapped Ref, +whereas a structured field uses the carrier +`PublicRef<{ value: declaredLiteral }>['value']`. + +After the first static repair, that expected carrier was corrected. All three +original builder files were restored and their hashes verified. The corrected +replay failed 214 TS2344 constraints only, including the same ten selected-name +failures and eight genuine selected-scalar mismatches. This scalar-value witness +is retrospective relative to the first edit; it is not a strict pre-edit +witness. The earlier legal name comparison already exposed the selected-root +enrichment defect. Syntax/admission fixture failures were separately corrected +before the review-wide production gate and are not counted as RED. + +**GREEN and mutants.** The final owner passes 33 checks; the existing strict/loose +grouping mode checks pass five. The final-checker original-all reversion rejects +214 native constraints. Isolated original context enrichment, selected-context +enrichment, unconditional grouping and depth-eight cutoff reject 164, 18, 32 and +eight constraints respectively. All are TS2344 comparison failures; no setup +error or timeout supplies rejection. Original sources were restored byte-for-byte +after each mutant. Source-only TypeScript has zero diagnostics, and the ESM/CJS +declaration build passes. The three builder files emit identical JavaScript +before/after these type repairs, with comments removed. + +**Limits.** This is source-public inference evidence. Installed-package resolution, +framework handler inference, broad dynamic key-list emptiness and aggregate +expressions that erase provenance remain separate limits in the coverage map. +The empty-list repair does not claim to infer arbitrary runtime array lengths. +The normal logger suppressed per-state counters. A diagnostic-only file writer +then captured the existing counters during the same full 33-check command: +all 256 declared states reached 24 times. By family: root 40, inline 26, +authored 48, structured refs 48, selected context 12, grouped 18, grouping +boundary 48, aggregate depth 12 and four remaining admission/reference states. +The owner was restored byte-for-byte after capture; its SHA-256 is +`945b3a87eef798d163f72211b5f9dda9b7f567ee9b3278643c087b85c2253b2c`. + +An additional public native/runtime probe executes the coverage map's broad +key-array trace. `Array['id']>` initialized to `[]` +selects the general grouping overload: TypeScript accepts the intermediate +`$key` assignment to `string | number` with zero diagnostics, while the callback +observes `undefined` and no `$key` property. Pre-2312 sources reproduce it. +This separately recorded dynamic-emptiness inference gap is outside the +statically empty-list repair; no runtime grouping behavior was changed. + +## Lossless review ledger + +Raw reports and exact logs are preserved under `/tmp/db-prep-pr-2026-11-05`. +The append-only scratch ledger records the review-wide oracle plan and global +RED gate before production changes. Invalid static fixtures were repaired +before that gate; their setup failures are not counted as product RED. + +| ID | Claim and technical verdict | Action and durable evidence | +| --- | --- | --- | +| S1 | P3: the join merge closure has one caller; inlining preserves statement order. | Approved and applied; preserves alias deletion/replacement order. See the S1 follow-up below; no latency claim. | +| S2 | P3: the retired inline-policy argument and pure flags are unused. | Approved and applied; existing input owner passes 4,924 checks. See S2 below. | +| MAT-1 | P1: inline input resolution erased genuine source attribution. | Fixed; publication grammar, RED56 and namespace mutant above. | +| MAT-2 | P1: the same boundary erased correlation and lost children. | Fixed; route grammar, RED6 and namespace mutant above. | +| RUNTIME-1 | P1: implicit joined outputs inherited repeated source keys/Collection ID. | Fixed; implicit output grammar and attribution mutant above. | +| TYPE-1 | P2: structured QueryRef refs fabricated metadata/corrupted authored types. | Fixed; type repair and generated receiving evidence above. | +| TYPE-2 | P2: statically empty grouping promised an absent key. Independently reproduced on base and candidate. | Retained for repair despite being pre-existing; static empty/nonempty/accumulation grammar. | +| TYPE-3 | P2: depth-eight aggregate cutoff lost the generated intermediate key. | Type repair with depth neighbors; distinct from wrapped-expression provenance limit. | +| BENCH-1 | P3: suite CSV omits scenario, yielding 72 duplicate identifiers across 504 observations. | Approved and repaired from original reports; all 504 timing rows remain unchanged. See BENCH-1 below. | +| BENCH-2 | New remote three-repetition calibration remains unobserved. | Accepted evidence limit, disclosed in benchmark README and final PR. | +| BENCH-3 | Legacy reports lack repeated-range gating. | Accepted design: documented single-run support; actual CI supplies three repetitions; 19 CLI controls pass. | +| BENCH-4 | Fabricated scalar/sample reports can disagree. | Harness derives both from the same observations; no actual workflow violation demonstrated. External input-integrity idea retained here. | +| BENCH-5 | Within-query geometric means permit offsets. | Accepted declared policy; independent localized gate covers persistent large case shifts. | +| BENCH-6 | Fixed candidate-before-base order can bias timing. | Accepted measurement limit; no demonstrated threshold violation or direction-bias claim. | +| BENCH-7 | Nested fixtures allocate even for flat queries. | Identical fixtures on both variants, outside timed sections; no invalid comparison demonstrated. GC independence is not claimed. | +| ORACLE-1 | Prior callback normalization was retired. | Accepted design under explicit maintainer decision; historical evidence retained. | +| ORACLE-2 | Descriptor counters miss other traversal algorithms. | Accepted bounded work law; elapsed measurements are separate evidence. | +| ORACLE-3 | Input owner omits actual flat-union root metadata. | Accepted observation split; publication owner judges genuine attribution. | +| ORACLE-4 | Shared expected payload could hide production mutation. | Fixed checker independence; hostile false-GREEN then RED, clean GREEN51 above. | +| ORACLE-5 | Omitting selected context could conceal private symbols. | Already fixed before review: symbols captured before omission; original RED198 and mutant in implementation record. | +| MAT-3 | Two compiled resolver calls could repeat work. | No measured regression or once-only contract; implementation freedom retained. Profiling idea preserved here. | +| TYPE-R1 | General intermediate type enrichment removed. | Duplicate of approved policy ORACLE-1; source ID retained. | +| TYPE-R2 | Wrapped aggregate expression erases type provenance. | Existing recorded inference limit, with concrete trace and public-type owner in coverage map. | +| TYPE-R3 | Dictionary publication intersections might conflict. | Original reviewer clarified this was only an unverified hypothesis, without a consumer or violated law. Refuted as a finding, not an executable refutation of dictionary behavior. | +| SIBLING-1 | Joined QueryRefs lost inherited grandchildren even in expression controls. | Fixed descriptor propagation; generated JOIN route cells and hostile mutant above. | +| TYPE-SIBLING-1 | Structured selected-context roots had the same enrichment as TYPE-1. | Fixed; added to static receiving grammar before repair; chronology above. | + +The raw inventory contains 24 items; the two sibling violations remain distinct. +Reviewer assessment: **hire: yes**. The team produced independent public +counterexamples, precise missing grammar dimensions and useful low-cost cleanup +suggestions. TYPE-2's initial introduced classification needed correction; +TYPE-R3 remained speculation. The simplifier correctly retained distinct cache +roles, sidecars, compiled resolution and generic adapter fallback. + +## Evidence locations and interpretation + +`publication-red-detail.log`, `publication-red-results.json` and +`publication-red-manifest.json` retain publication RED and pre-edit source +hashes. `mat-2-context-transport-red-refined.log` and +`mat-2-context-transport-full-red.log` retain route observations and reach. +`runtime-final-green.log` and `runtime-broad-green.log` retain GREEN; +`mutant-*.log` and `runtime-mutants.json` retain mutation/restoration evidence. +`oracle4-hostile-before.log`, `oracle4-hostile-after.log` and +`oracle4-green.log` retain the checker calibration. These local logs supplement +the versioned laws, counts and source bindings in this record. + +The source-public static owner and runtime Collection paths provide different +judgments. A source-only compiler check does not establish installed-package +resolution, and a successful core receiver does not establish provider or +framework scheduling. Whole-PR readiness requires the final pushed head and +remote CI; this record alone supplies neither. + +The [source and reach manifest](2026-11-05-boundary-only-prep-sources.json) +records every changed production/oracle/harness/workflow SHA-256, the three raw +benchmark report hashes and every measured state count. Diagnostic-only file +writers captured normal-run counters: 1,908 runtime tests pass, publication +counts are 24 states at one and 48 at eight, and all 440 route/callback states +reach once. Both runtime owners and the type owner were restored byte-for-byte. +The type reach command passes 33 checks in 84.39 seconds. Source-only TypeScript +and declaration builds pass; an earlier whole-test-tree TypeScript run exceeded +the default 4 GB heap and is not a passing check. + +## Final latency and shipped size + +The [bracketed measurements](../../../scripts/bench/boundary-only-prep-bracket-2026-11-05.csv) +retain all 756 observations, including scenario identity. The sequence is +pre-2312 sources, final reviewed candidate, then unchanged pre-2312 sources. +Each report covers 84 cases with three fresh fixtures, 100 measured writes and +20 warmups on Node 24.19.0 / Apple M5 Max. No agent test or build ran alongside +these measurements. Other machine activity was not measured. + +Both archived baselines contain DB sources from `035a5260`, the exact current +harness and current dependencies/built db-ivm. This isolates DB source versions; +it does not reconstruct the historical dependency installation. The reports' +automatic git SHA names the containing checkout (`8feab6ea3`); the CSV records +the actual source variant. The final source manifest linked below binds the +candidate, harness and raw reports. CI instead compares the PR's merge base. + +| Comparison | Overall writes | Overall cold | Nested writes | Nested cold | Gate | +| --- | ---: | ---: | ---: | ---: | --- | +| Candidate / first baseline | 1.138× | 1.354× | 1.114× | 1.396× | FAIL: issue-detail cold mean 1.568× | +| Candidate / second baseline | 1.038× | 1.051× | 1.038× | 1.157× | PASS | +| Second / first unchanged baseline | 1.096× | 1.288× | 1.074× | 1.207× | PASS | + +The baseline drift explains why the first pair cannot establish a source-only +regression. The later PASS cannot erase that failure either. The earlier +0.88×/0.91× figures describe a different implementation snapshot and run. These +finite observations establish neither identical latency nor universal zero +overhead. The new gate's thresholds were not changed after the failing result. + +For the reported 10,000-issue case with no manual indexes, synced cold times +are 63.124 / 67.367 / 65.224 ms, and optimistic cold times are +50.606 / 86.135 / 80.985 ms, in sequence. Candidate write medians are +0.023375 ms synced and 0.159042 ms optimistic. Historical regressed main took +about 2,090 ms cold in this case; that earlier separate run establishes the +large regression's scale, not a controlled ratio against these final samples. +Deterministic zero payload-descriptor work and the original-implementation +mutants supply the algorithmic repair evidence independently of timing drift. + +`pnpm size:compare --files` completes successfully against the merge base. +DB grows 480 gzip / 391 brotli bytes; the typical app grows 74 gzip bytes and +shrinks 10 brotli bytes; the includes app grows 403 gzip / 347 brotli bytes. +Removing the dual callback views and their recursive substitutions simplifies +the compiler. The compiled include-path resolver adds code to avoid payload +traversal while retaining materialized children and public-container semantics. +Removing namespace attribution or inherited descriptors is smaller but fails +the review mutants; removing distinct cache roles couples independent windows. +The retained generic adapter walker serves callers without compiled paths. +These obligations account for the remaining byte growth. Oracle, CSV and +documentation growth is separate from shipped production bytes. + +## Oracle conformance for the prep repairs + +| Requirement | Evidence or applicability | +| --- | --- | +| ORC-001–003 | Each owner states authority and limits beside its independent model, grammar, real driver and comparison. The policy authority is the maintainer decision, not observed output. | +| ORC-004 | The grammar reconstructs each review trace. Removing FROM/JOIN, expression/functional, inline form, source attribution or collision axes loses distinct REDs. Empty/nonempty and accumulated groups, aggregate depths 7/8/9 and depth 16 provide adjacent bounds. Collection-valued functional inputs, opaque facades and optionless indexes remain rejected neighbors. | +| ORC-005 | Public Collection entries and readable rows at four publication cuts, all nested values at six route cuts, and native contextual/inline/publication types reach their comparisons. Eager sources provide the required facts before comparison; no further missing-input hypothesis was identified. | +| ORC-006 | Original namespace/attribution/descriptor mutants and isolated type mutants fail the intended comparisons. ORACLE-4's driver mutation exposes the old false GREEN and fails the repaired checker. No setup error or timeout is counted as a kill. | +| ORC-007 | New publication, route and type dimensions are bounded finite enumerations. The unchanged work property retains equal fixed/fresh budgets and direct seed/path replay; its hostile replay uses seed 2355/path 0. | +| ORC-008 | No stateful reference-model state is added or merged in these repairs. Expected payload content is stateless recomputation; publication and route models retain their existing lifecycle distinctions. | +| ORC-009 | Collection publication, route, source attribution and checkpoint names use the glossary. Declared type-shape and payload abstractions are distinct from runtime classifier state. | +| ORC-010 | Existing failure-preserving cleanup remains in use. Aggregate route mismatches retain every cut; native diagnostics preserve file/span/code. No shrinking or cleanup waiver was added. | +| ORC-011 | The named shared-mutation fault is addressed by independently reconstructed document values plus a separate identity check. No additional shared-semantic-fault hypothesis needing a second formulation was identified. | +| ORC-012 | This versioned record binds the reviewed sources and records bug-class boundaries, original/neighboring witnesses, mutant results and limits. | +| ORC-013 | Authored/no-collision, implicit single/joined, expression/functional, empty/nonempty grouping and depth 7/8/9/16 witnesses distinguish nearby wrong rules. The hostile mutants reject those wrong consequences. | +| ORC-014 | Claims stop at real core Collection and native source-TypeScript boundaries. No controlled fixture is promoted to provider, installed-package or framework scheduling evidence. | +| ORC-015 | Publication: 72 states, 408 comparisons. Route transport: 432 comparison states plus eight callback-group states. Public types: all 256 declared states reach 24 times. Counts and diagnostic restoration are retained with source bindings. | +| ORC-016 | Finite histories and generated native consumers share independent models and comparisons; wrong-observation controls calibrate those same checks. Supplemental descriptor examples stay in an ordinary test file. | + +## Loss audit and readiness + +The final audit returned to both raw reports, including their rejected +candidates, validation appendices and uncapped observations. All 24 original +IDs and both sibling violations appear above: + +**26 = 9 fixed-now + 3 confirmed-open optional suggestions + 10 accepted-design +or evidence-limit entries + 1 already-fixed + 1 stale + 1 duplicate + 1 refuted +as a review finding.** There are no deferred repairs or unresolved product-law +decisions in this inventory. The three optional suggestions are S1, S2 and +BENCH-1; they await the prep-pr walkthrough. The recorded dynamic-emptiness and +wrapped-expression inference gaps remain separate, pre-existing type-owner +work and prevent any claim of complete grouping inference. + +The bounded attribution, route and authored-type classes above have generated +receiving witnesses and hostile rejection evidence. This does not prove every +query shape or zero elapsed overhead. Whole-PR readiness is **unproven** until +the approved final head is pushed and remote checks run. In particular, the +new remote three-repetition policy has no observed CI history yet. + +Final `pnpm lint:changed`, changed-file Prettier checks and `git diff --check` +pass. The source/reach manifest matches all 26 recorded code files. No oracle +run budget was lowered or removed during the prep-review repairs. + +## Approved follow-up: S1 + +The maintainer approved inlining the single-use join merge helper. The same +object spread, missing-main alias deletions, joined-alias replacement/deletion +and source-context merge retain their evaluation order. This refactor changes +no promised behavior; existing input, join-shape, route-context and join-key +owners pass all 5,148 tests. Formatting and whitespace checks pass. + +The source manifest preserves the measured/reviewed implementation hashes and +adds the successor join-source hash under `approvedFollowups`. Timing samples +above precede this cleanup; no elapsed-time improvement is claimed. +`pnpm size:compare --files` after S1 passes: DB +480 gzip / +370 brotli bytes, +typical app +45 gzip / −95 brotli bytes, includes app +385 gzip / +301 brotli +bytes against the merge base. These supersede the earlier size figures for the +current source. The ledger now has ten fixed items and two optional choices +pending (S2 and BENCH-1); all other dispositions are unchanged. + +## Approved follow-up: S2 + +The maintainer approved removing the unused `_inline` formal parameter, five +pure argument flags and the dead calibration local. The independent model body +and history grammar remain byte-for-byte identical after removing that formal +parameter. No receiver, observation cut, comparison, reach declaration or run +budget changes. The same boundary-only law and its recorded RED/mutant evidence +continue to apply; this cleanup adds no product behavior requiring a new RED. + +The callback-input owner passes all 4,924 tests, including its existing hostile +observation controls. Formatting and whitespace checks pass. The source manifest +adds the three successor test/driver hashes under `approvedFollowups`. Production +sources and timing/size measurements are unaffected. Eleven review items are now +fixed; BENCH-1 is the only optional choice still pending. + +## Approved follow-up: BENCH-1 and final accounting + +The maintainer approved restoring the `scenario` column in the historical +whole-suite CSV. Each of 504 rows was matched to the original JSON report by +its existing identity, repetition and exact numeric samples. Every pre-existing +column, timing string and row position is preserved. Including scenario makes +all 504 identifiers unique. The source manifest retains both original report +hashes and the CSV's before/after hashes. No benchmark was rerun for this +label repair, and no timing conclusion changed. + +All three optional suggestions are approved and complete. The final loss audit +is **26 = 12 fixed-now + 10 accepted-design/evidence-limit entries + 1 already-fixed ++ 1 stale + 1 duplicate + 1 refuted as a review finding**. No review item is +unaccounted for, deferred, or waiting on a product-law decision. Historical +stage totals above remain the record of their respective checkpoints. +The separately recorded inference and measurement limits still apply. + +This completes the optional walkthrough. Changeset/PR preparation awaits the +prep-pr workflow's final maintainer confirmation. No commit, push or PR has +been created in this worktree yet; remote CI readiness remains unproven. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json new file mode 100644 index 0000000000..8fafe7c21d --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json @@ -0,0 +1,915 @@ +{ + "head": "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "sourceSha256": { + ".github/workflows/benchmark.yml": "d2afcf4978c6207359330a8e415cacc283e73dab053eb4ed4128052f8bfe0cfe", + "packages/db/src/query/builder/group-keys.ts": "10b139f652d68ab30817c5f4a08cc8363d868b0162f28a256e56170bb9a3112d", + "packages/db/src/query/builder/index.ts": "775e9c891adcb69ea4839dff104f59e8f5faae29b4a927c7b5f9dc48b74f071b", + "packages/db/src/query/builder/types.ts": "1a0c95fef7fa96281fadbf8b45e4360e773a89b9a0be7a0614240dcc6ae4ffb5", + "packages/db/src/query/compiler/group-by.ts": "a0aa4b061811b1fbdbf7409b156869e987504814ddfa838c6537f513db94adcb", + "packages/db/src/query/compiler/index.ts": "0e859ca809c13e7efbac41261fdb5b67beaa6da02119dc538a26b2c3f6146f40", + "packages/db/src/query/compiler/joins.ts": "53b668301284d89627b20e788746fce429a1f67895c4630b2038e6f354a783f2", + "packages/db/src/query/compiler/route-metadata.ts": "ff527255b91c1e2d4edcec3395170d728b6fd7ce8207175d472dd3668f32fec1", + "packages/db/src/query/compiler/types.ts": "922a89c5eba805130f2c082e934c0829593b31c335a4cb2a4983aa1559447ad5", + "packages/db/src/query/live/ARCHITECTURE.md": "e7a9cf6e487a67342cd038608e83baeffee944edd1b0245e217b0786442b1b47", + "packages/db/src/query/live/bucket-facade-adapter.ts": "fe1023e2558711161f4625d6e8b57f12419816f471b0c4e0b4c3cb6a6ae22c2d", + "packages/db/src/query/live/collection-config-builder.ts": "0f90dd5d33fa58a7aedd42e1e6e40427d8c22a614849cb8e6df05c3ef8b91cc2", + "packages/db/src/query/live/materialized-pipeline.ts": "d1f957fbd8c6a367eb885e3c1210b8ad700c24b5846be84550d0099009acdb84", + "packages/db/src/virtual-props.ts": "b06e07f9fe58b1ef94b4b02b4903562cd6cbb4798f1f0789c2ffe607fb501368", + "packages/db/tests/oracle-config.ts": "aaeb58ca13be9fb4a0797a3caacb8d79441b00fdd692f2993987d0a8770f9e9b", + "packages/db/tests/query/includes-context-transport-oracle.test.ts": "515279922fa95e17076e5ac29b1dd3e778ed8383952689d337e164293f828c36", + "packages/db/tests/query/includes-work-counter-oracle.test.ts": "b5efa9741db62b0346700799029b1bf2a259e782a967caea402502788a5d442e", + "packages/db/tests/query/public-container-copy.test.ts": "71f24aeb92a8f7345e7be5d5989f55deccf8b07571eb71960709ee73e2210a8a", + "packages/db/tests/query/virtual-row-fields-input-driver.ts": "caac0baded4371fee584da840bc1fe29333df55676cd3cf5b0d431fe1e08b366", + "packages/db/tests/query/virtual-row-fields-input-oracle.test.ts": "a9afe03de7d604011ef29bbae8d54cceb8c0ae3f65a9ae5c1691beb914231603", + "packages/db/tests/query/virtual-row-fields-input-oracle.ts": "64c0e1c0746fd26fc546977bba86c0edc5321311d1be87c636beb5c038336604", + "packages/db/tests/query/virtual-row-fields-oracle.test.ts": "bb305b2b9fa692382e4327a5ce7b34ea1fb3bb3f16a1bf1968d8419cdc54be64", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "945b3a87eef798d163f72211b5f9dda9b7f567ee9b3278643c087b85c2253b2c", + "scripts/bench/compare-incremental-update.ts": "69b8a1515801bc99d13f5dfff9ac9f3569d4dda2b5678e57a787d703708320dd", + "scripts/bench/incremental-update.ts": "3f50520ad800f861b585175c32f04a267a875ff9ca71595af7d1ff863b74dad2", + "scripts/bench/compare-incremental-update.test.mjs": "87870408b5df7f822d93bfafe61b4e4aba54da53b1a86f5494c75b657c629e31" + }, + "rawBenchmarkSha256": { + "final-pre-2312.json": "409b6c607974159225304250572a8af7806a33c7a6373ca4822d24db54fec999", + "final-candidate.json": "da8b68cc16f6b3c13b3f46b3fe636a586864dabae4b816e1013c56b6a3207fe3", + "final-pre-2312-after.json": "79ce2a7e7a7f5db365e8f0b3109c14b8b25bef5900cca220867083b9a6357a03" + }, + "reach": { + "publication": { + "implicit-single/none/direct/child/initial": 1, + "implicit-single/none/direct/child/held": 1, + "implicit-single/none/direct/child/settled": 1, + "implicit-single/none/direct/child/remote": 1, + "implicit-single/none/query-ref/child/initial": 1, + "implicit-single/none/query-ref/child/held": 1, + "implicit-single/none/query-ref/child/settled": 1, + "implicit-single/none/query-ref/child/remote": 1, + "implicit-join/none/direct/parent/initial": 1, + "implicit-join/none/direct/parent/held": 1, + "implicit-join/none/direct/parent/settled": 1, + "implicit-join/none/direct/parent/remote": 1, + "implicit-join/none/direct/child/initial": 1, + "implicit-join/none/direct/child/held": 1, + "implicit-join/none/direct/child/settled": 1, + "implicit-join/none/direct/child/remote": 1, + "implicit-join/none/query-ref/parent/initial": 1, + "implicit-join/none/query-ref/parent/held": 1, + "implicit-join/none/query-ref/parent/settled": 1, + "implicit-join/none/query-ref/parent/remote": 1, + "implicit-join/none/query-ref/child/initial": 1, + "implicit-join/none/query-ref/child/held": 1, + "implicit-join/none/query-ref/child/settled": 1, + "implicit-join/none/query-ref/child/remote": 1, + "inline-return/none/direct/parent/initial": 8, + "inline-return/none/direct/parent/held": 8, + "inline-return/none/direct/parent/settled": 8, + "inline-return/none/direct/parent/remote": 8, + "inline-return/none/direct/child/initial": 8, + "inline-return/none/direct/child/held": 8, + "inline-return/none/direct/child/settled": 8, + "inline-return/none/direct/child/remote": 8, + "inline-return/none/query-ref/parent/initial": 8, + "inline-return/none/query-ref/parent/held": 8, + "inline-return/none/query-ref/parent/settled": 8, + "inline-return/none/query-ref/parent/remote": 8, + "inline-return/none/query-ref/child/initial": 8, + "inline-return/none/query-ref/child/held": 8, + "inline-return/none/query-ref/child/settled": 8, + "inline-return/none/query-ref/child/remote": 8, + "inline-return/array/direct/parent/initial": 8, + "inline-return/array/direct/parent/held": 8, + "inline-return/array/direct/parent/settled": 8, + "inline-return/array/direct/parent/remote": 8, + "inline-return/array/direct/child/initial": 8, + "inline-return/array/direct/child/held": 8, + "inline-return/array/direct/child/settled": 8, + "inline-return/array/direct/child/remote": 8, + "inline-return/array/query-ref/parent/initial": 8, + "inline-return/array/query-ref/parent/held": 8, + "inline-return/array/query-ref/parent/settled": 8, + "inline-return/array/query-ref/parent/remote": 8, + "inline-return/array/query-ref/child/initial": 8, + "inline-return/array/query-ref/child/held": 8, + "inline-return/array/query-ref/child/settled": 8, + "inline-return/array/query-ref/child/remote": 8, + "inline-return/singleton/direct/parent/initial": 8, + "inline-return/singleton/direct/parent/held": 8, + "inline-return/singleton/direct/parent/settled": 8, + "inline-return/singleton/direct/parent/remote": 8, + "inline-return/singleton/direct/child/initial": 8, + "inline-return/singleton/direct/child/held": 8, + "inline-return/singleton/direct/child/settled": 8, + "inline-return/singleton/direct/child/remote": 8, + "inline-return/singleton/query-ref/parent/initial": 8, + "inline-return/singleton/query-ref/parent/held": 8, + "inline-return/singleton/query-ref/parent/settled": 8, + "inline-return/singleton/query-ref/parent/remote": 8, + "inline-return/singleton/query-ref/child/initial": 8, + "inline-return/singleton/query-ref/child/held": 8, + "inline-return/singleton/query-ref/child/settled": 8, + "inline-return/singleton/query-ref/child/remote": 8 + }, + "route": { + "route-final-reach-joined-query-ref_expression_array": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1 + }, + "route-final-reach-from-query-ref_functional_array": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1, + "callback-group-1": 1, + "callback-group-2": 1 + }, + "route-final-reach-joined-query-ref_functional_materialized": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1, + "callback-group-1": 1, + "callback-group-2": 1 + }, + "route-final-reach-from-query-ref_expression_materialized": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1 + }, + "route-final-reach-joined-query-ref_functional_array": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1, + "callback-group-1": 1, + "callback-group-2": 1 + }, + "route-final-reach-from-query-ref_functional_materialized": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1, + "callback-group-1": 1, + "callback-group-2": 1 + }, + "route-final-reach-joined-query-ref_expression_materialized": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1 + }, + "route-final-reach-from-query-ref_expression_array": { + "initial/collection/parent-1": 1, + "initial/collection/parent-2": 1, + "initial/collection/parent-3": 1, + "initial/array/parent-1": 1, + "initial/array/parent-2": 1, + "initial/array/parent-3": 1, + "initial/materialized/parent-1": 1, + "initial/materialized/parent-2": 1, + "initial/materialized/parent-3": 1, + "parent-move/collection/parent-1": 1, + "parent-move/collection/parent-2": 1, + "parent-move/collection/parent-3": 1, + "parent-move/array/parent-1": 1, + "parent-move/array/parent-2": 1, + "parent-move/array/parent-3": 1, + "parent-move/materialized/parent-1": 1, + "parent-move/materialized/parent-2": 1, + "parent-move/materialized/parent-3": 1, + "child-move/collection/parent-1": 1, + "child-move/collection/parent-2": 1, + "child-move/collection/parent-3": 1, + "child-move/array/parent-1": 1, + "child-move/array/parent-2": 1, + "child-move/array/parent-3": 1, + "child-move/materialized/parent-1": 1, + "child-move/materialized/parent-2": 1, + "child-move/materialized/parent-3": 1, + "grandchild-update/collection/parent-1": 1, + "grandchild-update/collection/parent-2": 1, + "grandchild-update/collection/parent-3": 1, + "grandchild-update/array/parent-1": 1, + "grandchild-update/array/parent-2": 1, + "grandchild-update/array/parent-3": 1, + "grandchild-update/materialized/parent-1": 1, + "grandchild-update/materialized/parent-2": 1, + "grandchild-update/materialized/parent-3": 1, + "grandchild-empty/collection/parent-1": 1, + "grandchild-empty/collection/parent-2": 1, + "grandchild-empty/collection/parent-3": 1, + "grandchild-empty/array/parent-1": 1, + "grandchild-empty/array/parent-2": 1, + "grandchild-empty/array/parent-3": 1, + "grandchild-empty/materialized/parent-1": 1, + "grandchild-empty/materialized/parent-2": 1, + "grandchild-empty/materialized/parent-3": 1, + "grandchild-reactivation/collection/parent-1": 1, + "grandchild-reactivation/collection/parent-2": 1, + "grandchild-reactivation/collection/parent-3": 1, + "grandchild-reactivation/array/parent-1": 1, + "grandchild-reactivation/array/parent-2": 1, + "grandchild-reactivation/array/parent-3": 1, + "grandchild-reactivation/materialized/parent-1": 1, + "grandchild-reactivation/materialized/parent-2": 1, + "grandchild-reactivation/materialized/parent-3": 1 + } + }, + "types": { + "authored/none/query-ref/structured": 24, + "authored/none/query-ref/functional": 24, + "authored/none/nested-query-ref/structured": 24, + "authored/none/nested-query-ref/functional": 24, + "authored/none/join/structured": 24, + "authored/none/join/functional": 24, + "authored/none/union/structured": 24, + "authored/none/union/functional": 24, + "authored/key/query-ref/structured": 24, + "authored/key/query-ref/functional": 24, + "authored/key/nested-query-ref/structured": 24, + "authored/key/nested-query-ref/functional": 24, + "authored/key/join/structured": 24, + "authored/key/join/functional": 24, + "authored/key/union/structured": 24, + "authored/key/union/functional": 24, + "authored/collection/query-ref/structured": 24, + "authored/collection/query-ref/functional": 24, + "authored/collection/nested-query-ref/structured": 24, + "authored/collection/nested-query-ref/functional": 24, + "authored/collection/join/structured": 24, + "authored/collection/join/functional": 24, + "authored/collection/union/structured": 24, + "authored/collection/union/functional": 24, + "authored/origin/query-ref/structured": 24, + "authored/origin/query-ref/functional": 24, + "authored/origin/nested-query-ref/structured": 24, + "authored/origin/nested-query-ref/functional": 24, + "authored/origin/join/structured": 24, + "authored/origin/join/functional": 24, + "authored/origin/union/structured": 24, + "authored/origin/union/functional": 24, + "authored/pending/query-ref/structured": 24, + "authored/pending/query-ref/functional": 24, + "authored/pending/nested-query-ref/structured": 24, + "authored/pending/nested-query-ref/functional": 24, + "authored/pending/join/structured": 24, + "authored/pending/join/functional": 24, + "authored/pending/union/structured": 24, + "authored/pending/union/functional": 24, + "authored/all/query-ref/structured": 24, + "authored/all/query-ref/functional": 24, + "authored/all/nested-query-ref/structured": 24, + "authored/all/nested-query-ref/functional": 24, + "authored/all/join/structured": 24, + "authored/all/join/functional": 24, + "authored/all/union/structured": 24, + "authored/all/union/functional": 24, + "structured-refs/authored/none/query-ref/structured": 24, + "structured-refs/authored/none/query-ref/functional": 24, + "structured-refs/authored/none/nested-query-ref/structured": 24, + "structured-refs/authored/none/nested-query-ref/functional": 24, + "structured-refs/authored/none/join/structured": 24, + "structured-refs/authored/none/join/functional": 24, + "structured-refs/authored/none/union/structured": 24, + "structured-refs/authored/none/union/functional": 24, + "structured-refs/authored/key/query-ref/structured": 24, + "structured-refs/authored/key/query-ref/functional": 24, + "structured-refs/authored/key/nested-query-ref/structured": 24, + "structured-refs/authored/key/nested-query-ref/functional": 24, + "structured-refs/authored/key/join/structured": 24, + "structured-refs/authored/key/join/functional": 24, + "structured-refs/authored/key/union/structured": 24, + "structured-refs/authored/key/union/functional": 24, + "structured-refs/authored/collection/query-ref/structured": 24, + "structured-refs/authored/collection/query-ref/functional": 24, + "structured-refs/authored/collection/nested-query-ref/structured": 24, + "structured-refs/authored/collection/nested-query-ref/functional": 24, + "structured-refs/authored/collection/join/structured": 24, + "structured-refs/authored/collection/join/functional": 24, + "structured-refs/authored/collection/union/structured": 24, + "structured-refs/authored/collection/union/functional": 24, + "structured-refs/authored/origin/query-ref/structured": 24, + "structured-refs/authored/origin/query-ref/functional": 24, + "structured-refs/authored/origin/nested-query-ref/structured": 24, + "structured-refs/authored/origin/nested-query-ref/functional": 24, + "structured-refs/authored/origin/join/structured": 24, + "structured-refs/authored/origin/join/functional": 24, + "structured-refs/authored/origin/union/structured": 24, + "structured-refs/authored/origin/union/functional": 24, + "structured-refs/authored/pending/query-ref/structured": 24, + "structured-refs/authored/pending/query-ref/functional": 24, + "structured-refs/authored/pending/nested-query-ref/structured": 24, + "structured-refs/authored/pending/nested-query-ref/functional": 24, + "structured-refs/authored/pending/join/structured": 24, + "structured-refs/authored/pending/join/functional": 24, + "structured-refs/authored/pending/union/structured": 24, + "structured-refs/authored/pending/union/functional": 24, + "structured-refs/authored/all/query-ref/structured": 24, + "structured-refs/authored/all/query-ref/functional": 24, + "structured-refs/authored/all/nested-query-ref/structured": 24, + "structured-refs/authored/all/nested-query-ref/functional": 24, + "structured-refs/authored/all/join/structured": 24, + "structured-refs/authored/all/join/functional": 24, + "structured-refs/authored/all/union/structured": 24, + "structured-refs/authored/all/union/functional": 24, + "selected-context/none/structured": 24, + "selected-context/none/functional": 24, + "selected-context/key/structured": 24, + "selected-context/key/functional": 24, + "selected-context/collection/structured": 24, + "selected-context/collection/functional": 24, + "selected-context/origin/structured": 24, + "selected-context/origin/functional": 24, + "selected-context/pending/structured": 24, + "selected-context/pending/functional": 24, + "selected-context/all/structured": 24, + "selected-context/all/functional": 24, + "grouped/keys-first/none": 24, + "grouped/keys-first/key": 24, + "grouped/keys-first/collection": 24, + "grouped/keys-first/origin": 24, + "grouped/keys-first/pending": 24, + "grouped/keys-first/all": 24, + "grouped/keys-last/none": 24, + "grouped/keys-last/key": 24, + "grouped/keys-last/collection": 24, + "grouped/keys-last/origin": 24, + "grouped/keys-last/pending": 24, + "grouped/keys-last/all": 24, + "grouped/aggregate/none": 24, + "grouped/aggregate/key": 24, + "grouped/aggregate/collection": 24, + "grouped/aggregate/origin": 24, + "grouped/aggregate/pending": 24, + "grouped/aggregate/all": 24, + "grouping-boundary/empty-callback-first/none": 24, + "grouping-boundary/empty-callback-first/key": 24, + "grouping-boundary/empty-callback-first/collection": 24, + "grouping-boundary/empty-callback-first/origin": 24, + "grouping-boundary/empty-callback-first/pending": 24, + "grouping-boundary/empty-callback-first/all": 24, + "grouping-boundary/empty-callback-last/none": 24, + "grouping-boundary/empty-callback-last/key": 24, + "grouping-boundary/empty-callback-last/collection": 24, + "grouping-boundary/empty-callback-last/origin": 24, + "grouping-boundary/empty-callback-last/pending": 24, + "grouping-boundary/empty-callback-last/all": 24, + "grouping-boundary/empty-wrapper-first/none": 24, + "grouping-boundary/empty-wrapper-first/key": 24, + "grouping-boundary/empty-wrapper-first/collection": 24, + "grouping-boundary/empty-wrapper-first/origin": 24, + "grouping-boundary/empty-wrapper-first/pending": 24, + "grouping-boundary/empty-wrapper-first/all": 24, + "grouping-boundary/empty-wrapper-last/none": 24, + "grouping-boundary/empty-wrapper-last/key": 24, + "grouping-boundary/empty-wrapper-last/collection": 24, + "grouping-boundary/empty-wrapper-last/origin": 24, + "grouping-boundary/empty-wrapper-last/pending": 24, + "grouping-boundary/empty-wrapper-last/all": 24, + "grouping-boundary/one-then-empty/none": 24, + "grouping-boundary/one-then-empty/key": 24, + "grouping-boundary/one-then-empty/collection": 24, + "grouping-boundary/one-then-empty/origin": 24, + "grouping-boundary/one-then-empty/pending": 24, + "grouping-boundary/one-then-empty/all": 24, + "grouping-boundary/empty-then-one/none": 24, + "grouping-boundary/empty-then-one/key": 24, + "grouping-boundary/empty-then-one/collection": 24, + "grouping-boundary/empty-then-one/origin": 24, + "grouping-boundary/empty-then-one/pending": 24, + "grouping-boundary/empty-then-one/all": 24, + "grouping-boundary/callback-one/none": 24, + "grouping-boundary/callback-one/key": 24, + "grouping-boundary/callback-one/collection": 24, + "grouping-boundary/callback-one/origin": 24, + "grouping-boundary/callback-one/pending": 24, + "grouping-boundary/callback-one/all": 24, + "grouping-boundary/explicit-context-key/none": 24, + "grouping-boundary/explicit-context-key/key": 24, + "grouping-boundary/explicit-context-key/collection": 24, + "grouping-boundary/explicit-context-key/origin": 24, + "grouping-boundary/explicit-context-key/pending": 24, + "grouping-boundary/explicit-context-key/all": 24, + "aggregate-depth/0/none": 24, + "aggregate-depth/0/key": 24, + "aggregate-depth/7/none": 24, + "aggregate-depth/7/key": 24, + "aggregate-depth/8/none": 24, + "aggregate-depth/8/key": 24, + "aggregate-depth/9/none": 24, + "aggregate-depth/9/key": 24, + "aggregate-depth/10/none": 24, + "aggregate-depth/10/key": 24, + "aggregate-depth/16/none": 24, + "aggregate-depth/16/key": 24, + "root/structured-projection/direct": 24, + "root/structured-projection/query-ref": 24, + "root/structured-projection/nested-query-ref": 24, + "root/structured-projection/joined-query-ref": 24, + "root/structured-projection/functional-query-ref": 24, + "root/structured-projection/union": 24, + "root/structured-projection/union-last": 24, + "root/structured-projection/union-query-ref": 24, + "root/structured-spread/direct": 24, + "root/structured-spread/query-ref": 24, + "root/structured-spread/nested-query-ref": 24, + "root/structured-spread/joined-query-ref": 24, + "root/structured-spread/functional-query-ref": 24, + "root/structured-spread/union": 24, + "root/structured-spread/union-last": 24, + "root/structured-spread/union-query-ref": 24, + "root/functional-projection/direct": 24, + "root/functional-projection/query-ref": 24, + "root/functional-projection/nested-query-ref": 24, + "root/functional-projection/joined-query-ref": 24, + "root/functional-projection/functional-query-ref": 24, + "root/functional-projection/union": 24, + "root/functional-projection/union-last": 24, + "root/functional-projection/union-query-ref": 24, + "root/functional-spread/direct": 24, + "root/functional-spread/query-ref": 24, + "root/functional-spread/nested-query-ref": 24, + "root/functional-spread/joined-query-ref": 24, + "root/functional-spread/functional-query-ref": 24, + "root/functional-spread/union": 24, + "root/functional-spread/union-last": 24, + "root/functional-spread/union-query-ref": 24, + "root/functional-direct/direct": 24, + "root/functional-direct/query-ref": 24, + "root/functional-direct/nested-query-ref": 24, + "root/functional-direct/joined-query-ref": 24, + "root/functional-direct/functional-query-ref": 24, + "root/functional-direct/union": 24, + "root/functional-direct/union-last": 24, + "root/functional-direct/union-query-ref": 24, + "inline/whole/facade": 24, + "inline/whole/toArray": 24, + "inline/whole/materialize": 24, + "inline/whole/findOne": 24, + "inline/selected-whole/facade": 24, + "inline/selected-whole/toArray": 24, + "inline/selected-whole/materialize": 24, + "inline/selected-whole/findOne": 24, + "inline/nullable-whole/facade": 24, + "inline/nullable-whole/toArray": 24, + "inline/nullable-whole/materialize": 24, + "inline/nullable-whole/findOne": 24, + "inline/object/facade": 24, + "inline/object/toArray": 24, + "inline/object/materialize": 24, + "inline/object/findOne": 24, + "inline/nested-object/facade": 24, + "inline/nested-object/toArray": 24, + "inline/nested-object/materialize": 24, + "inline/nested-object/findOne": 24, + "inline/array/toArray": 24, + "inline/array/materialize": 24, + "inline/array/findOne": 24, + "inline/date/toArray": 24, + "inline/date/materialize": 24, + "inline/date/findOne": 24, + "nested-query-ref": 24, + "nested-index-ref": 24, + "union-removal": 24, + "construction-admitted": 24 + } + }, + "diagnosticRestoration": { + "runtime": { + "packages/db/tests/query/virtual-row-fields-oracle.test.ts": { + "before": "bb305b2b9fa692382e4327a5ce7b34ea1fb3bb3f16a1bf1968d8419cdc54be64", + "diagnostic": "04ae1d05283390b0c58a9bde4f87bd4d62ffaafad442ce9553ab0f42c94f959f", + "restored": "bb305b2b9fa692382e4327a5ce7b34ea1fb3bb3f16a1bf1968d8419cdc54be64" + }, + "packages/db/tests/query/includes-context-transport-oracle.test.ts": { + "before": "515279922fa95e17076e5ac29b1dd3e778ed8383952689d337e164293f828c36", + "diagnostic": "a08608d850cec758224be6edf1abacd05a499c529fb4a0565a91e14907a63c34", + "restored": "515279922fa95e17076e5ac29b1dd3e778ed8383952689d337e164293f828c36" + } + }, + "types": { + "original": "945b3a87eef798d163f72211b5f9dda9b7f567ee9b3278643c087b85c2253b2c", + "diagnostic": "7b776fb38c5caa81af531f3435b26db648a0a08801074be1ff47f6687c373526", + "restored": "945b3a87eef798d163f72211b5f9dda9b7f567ee9b3278643c087b85c2253b2c" + } + }, + "approvedFollowups": [ + { + "id": "S1", + "sourceSha256": { + "packages/db/src/query/compiler/joins.ts": "1859d8ed735a22510aace4376608b4d69902375cc4b83e84761d0518de683296" + }, + "priorSha256": { + "packages/db/src/query/compiler/joins.ts": "53b668301284d89627b20e788746fce429a1f67895c4630b2038e6f354a783f2" + }, + "validation": { + "runtimeTestsPassed": 5148, + "runtimeLog": "s1-green.log", + "sizeLog": "size-after-s1.log" + }, + "timingRerun": false + }, + { + "id": "S2", + "sourceSha256": { + "packages/db/tests/query/virtual-row-fields-input-oracle.ts": "31079b47c12f2da647520f78912f00ba24be7848f848acc5a954715587b8e361", + "packages/db/tests/query/virtual-row-fields-input-driver.ts": "c49c705eb927da225fccc06debfb2e06c54428855eecf32f5dcfa5e375e86086", + "packages/db/tests/query/virtual-row-fields-input-oracle.test.ts": "717089000203d3f11e65ff12c8a86a61cdcd9db207163f34bffd3e2028cec897" + }, + "priorSha256": { + "packages/db/tests/query/virtual-row-fields-input-oracle.ts": "64c0e1c0746fd26fc546977bba86c0edc5321311d1be87c636beb5c038336604", + "packages/db/tests/query/virtual-row-fields-input-driver.ts": "caac0baded4371fee584da840bc1fe29333df55676cd3cf5b0d431fe1e08b366", + "packages/db/tests/query/virtual-row-fields-input-oracle.test.ts": "a9afe03de7d604011ef29bbae8d54cceb8c0ae3f65a9ae5c1691beb914231603" + }, + "validation": { + "runtimeTestsPassed": 4924, + "runtimeLog": "s2-green.log", + "scope": "Unused model parameter, pure flags and dead calibration local only; model body and grammar unchanged." + } + }, + { + "id": "BENCH-1", + "artifactSha256": { + "scripts/bench/boundary-only-suite-2026-11-05.csv": "7434d70623adf0de9b1db52df6187b53cff0c1935aad7e9e232cc364e0be4e02" + }, + "priorArtifactSha256": { + "scripts/bench/boundary-only-suite-2026-11-05.csv": "89bcc37a4c0e7c9ce836affb03ce44c2b26539a680af56749bd537c8155de761" + }, + "validation": { + "rows": 504, + "uniqueIdentifiers": 504, + "originalColumnsPreservedExactly": true, + "sourceReports": { + "/tmp/db-boundary-only-implementation-2026-11-05/whole-pre-2312.json": "ba3f6ee14409a873a9b05bc2c2d553782ccae5f539eadb2b24d541b7e8fbfd23", + "/tmp/db-boundary-only-implementation-2026-11-05/whole-boundary-implementation.json": "387a9cf6213163c321ee677084e618a36c4bb76e098970e8c6056580f126f5d6" + }, + "beforeSha256": "89bcc37a4c0e7c9ce836affb03ce44c2b26539a680af56749bd537c8155de761", + "afterSha256": "7434d70623adf0de9b1db52df6187b53cff0c1935aad7e9e232cc364e0be4e02" + } + } + ], + "finalLossAudit": { + "rawItems": 24, + "siblings": 2, + "fixedNow": 12, + "acceptedDesignOrEvidenceLimit": 10, + "alreadyFixed": 1, + "stale": 1, + "duplicate": 1, + "refutedAsFinding": 1, + "confirmedOpen": 0, + "deferred": 0, + "designDecision": 0 + } +} diff --git a/docs/contributing/oracle-reviews/2026-11-05-metadata-policy-exploration.md b/docs/contributing/oracle-reviews/2026-11-05-metadata-policy-exploration.md new file mode 100644 index 0000000000..e00bf9b198 --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-metadata-policy-exploration.md @@ -0,0 +1,199 @@ +# Metadata policy and latency exploration + +The maintainer asked whether #2312's metadata guarantees justify their latency +cost, and requested weaker or alternate rules. This is a product-contract +exploration at `8feab6ea3eaae4456f738da39fa93508ddd5cc01` plus the existing +nested-row repair. At the time of these experiments no proposed law had been adopted. The experiments modify +copied sources, not the branch's production code or accepted oracles. + +## Recommendation and rival rules + +Prefer **protection at published Collection boundaries**. Actual Collection +rows expose computed `$key`, `$collectionId`, `$origin` and +`$hasPendingWrites`, with the existing source-attribution rules. Intermediate +projections and inline results expose the values the query authored. A direct +source row already comes from a Collection, so its genuine metadata remains. +Authored fields on intermediate projections are application data, and cannot +override the metadata of an eventual published Collection row. + +This removes the promise that callbacks receive a different interpretation of +an intermediate value from the interpretation exported by an inline include. +It also removes intermediate structured-spread override normalization: an +explicit authored override remains data until publication. Publication still +uses the selected source's genuine metadata where the source-attribution law +requires it. Reading metadata before projection, or reading a published +Collection row, remains unambiguous. + +For an intermediate projection `{ id: 1, $collectionId: 'application-value' }`: + +| Policy | Downstream functional callback reads | Inline result retains | Published Collection root | +| --- | --- | --- | --- | +| Current accepted law | Field absent | `'application-value'` | Genuine computed metadata | +| Boundary-only protection, recommended | `'application-value'` | `'application-value'` | Genuine computed metadata | +| Uniform reservation at query row roots | Field absent | Field absent | Genuine computed metadata | + +Uniform reservation is the other coherent single-representation policy. New +projected row roots lose reserved fields everywhere, including inline results. +Direct source rows and structured source-preserving selections retain genuine +source metadata. Nested application objects are unaffected. This gives up the +existing authored-inline-shape promise, and would require affected applications +to rename those fields. Boundary-only protection instead changes callbacks +that currently rely on reserved fields being absent or source-normalized after +an intermediate projection. Neither proposal is a compatibility-free patch. + +Keeping the current law with a different representation remains possible in +principle. Carry private route state beside values, and produce callback views +at compiler-known projection paths only when a consumer needs them. Treat source +payloads as opaque. This design has not been implemented or timed here; it must +not duplicate user expression or getter evaluation. The current law does not +logically require recursively discovering private state in application data. + +Dropping only the predicate extension is a weak alternative: `fn.select` and +`fn.where` would interpret the same input differently, and the remaining +callback/inline distinction would still require separate views. Rejecting +reserved projections outright would also reject useful inline application +data and would need runtime checks for arbitrary functional results. + +## What the issue and PR history establish + +1. [PR 2171](https://github.com/TanStack/db/pull/2171) describes reserved fields + on **published Collection rows**, while inline values keep selected shape. + The [migration guide](../../guides/migrate-to-1-0-rc.md#keep-virtual-field-names-for-row-metadata) + states this boundary explicitly. +2. The October 28 O12 decision added removal of reserved fields from new + projected subquery objects before downstream `fn.select`. A subsequent + decision retained genuine metadata for structured whole-source spreads. + The [decision record](2026-10-28-pr-2171-oracle-chunks.md#subsequent-authority-for-o12) + is the authority, rather than an inference from implementation behavior. +3. The initial #2312 repair propagated existing normalization modes at two + callsites. Unconditional propagation broke authored inline results. The + [repair record](callback-metadata.md#repair-and-discriminators) preserves + both failures and the narrower correction. +4. The October 30 decision extended the input rule to `fn.where` and + `fn.having`, while retaining authored inline output. #2312 then carried a + normalized view beside each authored row occurrence. See its + [law and experiment record](callback-metadata.md#law-experiment-and-inference). + This is an explicit extension of the promise. +5. A CodeRabbit review on October 30 at 20:39:51 UTC warned: “Avoid building + callback-only views for ordinary root output.” It identified `finalizeRow`'s + per-row transformation and stripping, but classified it as trivial. The + [PR's existing benchmark comment](https://github.com/TanStack/db/pull/2312#issuecomment-6527837501) + already reported 1.19× writes and 1.26× cold overall, using flat workloads. +6. [Issue 2355](https://github.com/TanStack/db/issues/2355) supplied the missing + whole-document workload and identified repeated deep discovery. Its proposed + preliminary scan still visits every nested object; it does not remove that + scaling term. + +The GitHub discussion contains no further substantive human product rationale +for the callback rule. The repository records explicit earlier maintainer +decisions; those decisions remain accepted until revised. Their practical +benefit is predictable metadata interpretation across callback placement. They +do not supply a security boundary against authored queries. + +Pre-#2312 public probes reproduce placement dependence: a new projection's +reserved fields are absent at a root callback but present at a correlated +callback. Boundary-only protection would preserve authored fields in both. +It is a deliberate policy revision, not an exact restoration of all old behavior. +The PR also includes independent ordered-loading, replay and Solid repairs. +A metadata policy revision does not justify reverting those repairs. + +## Experiments and limits + +Three isolated source copies use the repaired current implementation, a +boundary-only prototype, and a uniform-reservation prototype. Both prototypes +replace the final callback view with the final authored value. Boundary-only +disables source normalization propagation; uniform reservation enables selected +normalization everywhere. These small flag experiments test the policy +distinction, not a finished implementation or a minimal shipped-code result. + +Public probes exercise structured and functional projections, all four reserved +collisions, select/where/having callbacks, direct source returns, structured +spreads with and without overrides, functional spreads, published collision +protection, inline values and a correlated callback through a QueryRef. +Observed values match the three policy predictions. Checked published rows +retain genuine metadata. Documents retain reference identity and nested +application `$key` data through preload and 120 synced replacements. + +At one child and 0/20/200 blocks, the batch-descriptor counter observes: + +| Receiving path | Repaired current | Boundary-only | Uniform reservation | +| --- | --- | --- | --- | +| Ordinary structured document projection | 0 / 0 / 0 | 0 / 0 / 0 | 0 / 0 / 0 | +| QueryRef → fn.where → structured projection | 2 / 102 / 1002 | 0 / 0 / 0 | 0 / 0 / 0 | +| Correlated plain inline document | 6 / 306 / 3006 | 4 / 204 / 2004 | 4 / 204 / 2004 | +| Correlated QueryRef → fn.select → inline output | 12 / 612 / 6012 | 8 / 408 / 4008 | 8 / 408 / 4008 | + +The predicate substitution path remains expensive in the current repair. The +existing payload grammar checks predicates on direct sources, so it does not +reach this QueryRef-plus-predicate composition. This is additional open work +under the broader latency objective. Correlated private-state cleanup remains +proportional to payload size under both prototypes. Weaker public metadata laws +alone do not eliminate it. + +The counter measures `Object.getOwnPropertyDescriptors` on known payload +containers. It does not detect every traversal. In particular, the pre-#2312 +walker uses singular `Object.getOwnPropertyDescriptor`; its batch count of zero +cannot establish zero traversal. No baseline work-count comparison is claimed. + +Separate elapsed runs use 10 children with 200-block documents, three fresh +fixtures, 20 warmup writes and 100 timed synced replacements. All variants run +sequentially with instrumentation disabled, using the same current db-ivm and +dependencies on Node 24.19.0 / Apple M5 Max. Numbers are medians across fixtures: + +| Receiving path and measurement | Pre-2312 DB sources | Repaired current | Boundary-only | Uniform reservation | +| --- | ---: | ---: | ---: | ---: | +| QueryRef + predicate, cold ms | 0.386 | 6.853 | 0.350 | 0.356 | +| QueryRef + predicate, median write ms | 0.0409 | 1.1112 | 0.0356 | 0.0339 | +| Correlated inline, cold ms | 6.704 | 19.221 | 22.095 | 22.733 | +| Correlated inline, median write ms | 3.3529 | 8.4695 | 7.4231 | 7.4503 | + +The [measurement table](../../../scripts/bench/metadata-policy-exploration-2026-11-05.csv) +also retains zero-block runs and every repetition. Neither single-view prototype +restores the correlated case to its prior latency. Its smaller scan count is +not proof of smaller elapsed cold time. Small flat timings also cannot prove +zero fixed overhead. These are public-API experiments, not a standalone copy +microbenchmark or a reconstruction of every historical dependency. + +Scratch sources, the executable probe, independent predictions, raw JSON, +source hashes and append-only history ledger are retained in +`/tmp/db-metadata-law-exploration-2026-11-05`. An earlier 100-child timing series +overlapped late control probes and is excluded from this controlled table. +An initial correlated fixture failed admission and is setup evidence only. + +## Decision and remaining implementation work + +Choose the metadata policy before changing semantic expectations. The +recommendation is boundary-only protection, with genuine published attribution +retained. Uniform reservation and the current dual interpretation are its +concrete rivals. No semantic oracle has been weakened for these experiments. + +After a decision, extend the metadata-input and publication owners across their +Collection, inline and Effect receivers before changing production. Reach both +authored and source-owned collisions through QueryRef, join and union placement, +including shared-cache reuse, held mutations, settlement and later source use. +The revised contract must fail current production where its promised outputs +change, then pass the implementation and reject the old-policy mutant. + +Independently, extend the work owner to reach the predicate composition and +correlated paths above, and replace payload discovery with compiler-known +transport or construction. Require zero metadata work that grows with ordinary +source payload size at the named checkpoints. The instrument must catch both +singular and batch descriptor discovery, alongside elapsed benchmarks; a new +unobserved scan must not earn a false GREEN. Preserve descriptors, getters, +cycles, symbols, opaque values, reference equality and existing route laws. + +The original repair and CI gate remain locally implemented and uncommitted. +This exploration establishes the policy differences and a remaining performance +gap. It does not establish universal zero latency impact, closure of the broader +performance objective, or whole-PR readiness. + + +## Subsequent maintainer decision + +On 2026-11-05 the maintainer selected **boundary-only protection**: intermediate +callbacks and inline results keep authored fields; actual published Collection +rows retain genuine computed metadata. That decision supersedes the October +28/30 callback-normalization rules. The prototype measurements above remain +historical. The [implementation record](2026-11-05-boundary-only-metadata.md) +records the revised oracle, pre-production RED gates, implementation, +verification and new measurements. diff --git a/docs/contributing/oracle-reviews/2026-11-05-nested-row-performance.md b/docs/contributing/oracle-reviews/2026-11-05-nested-row-performance.md new file mode 100644 index 0000000000..2484c7e6cf --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-nested-row-performance.md @@ -0,0 +1,184 @@ +# Nested-row performance repair + +Evaluated on 2026-11-05 at `8feab6ea3eaae4456f738da39fa93508ddd5cc01`, +plus this working diff. Sources: [issue 2355](https://github.com/TanStack/db/issues/2355), +the benchmark patch in its body, [PR 2312](https://github.com/TanStack/db/pull/2312), +and the [proposed scan](https://github.com/nathan-muir/tanstack-db/pull/1). +This evaluates and repairs the performance report. It does not establish that +every law or implementation choice in PR 2312 is ready for approval. + +## Law and experiment + +The maintainer requested restored performance without discarding the callback +metadata boundaries. The accepted value laws remain those in +`packages/db/src/query/live/ARCHITECTURE.md`: callbacks see no compiler state; +projected source views hide reserved row fields; authored inline values retain +their shape; boundary copies preserve descriptors, clean references, symbols +and opaque leaves, without invoking getters during discovery. + +The new deterministic work instrument belongs to +`includes-work-counter-oracle.test.ts`. Its independent truth is the authored +document at each tick, with no compiler classification in the expected value. +It requires complete public values, document identity, and zero metadata +descriptor scans of ordinary source payload containers. The grammar varies +0–40 blocks through source, join, QueryRef, union, implicit selection, functional +selection, and functional where/having paths. It observes preload and two +synced replacements. Each input must reach all seven paths; the fixed and +random campaigns each run four examples plus eight generated inputs: 168 path +histories and 504 public checkpoints in total. The examples pin 0, 1, 20 and 40 +blocks and use the same driver and comparison as generated inputs. + +This is a resource budget for the reported allocation defect, not a universal +latency bound or a complete counter for every way to traverse an object. +Correlated sanitation and nonempty callback-view substitution retain recursive +walks. Their semantics remain under the route-context and virtual-row-input +owners; their work is outside this payload grammar. Hashing, proxy traps, +arbitrary callbacks, provider delivery and framework scheduling are not measured. +The separate elapsed-time benchmark is necessary to detect other expensive +implementations, including a descriptor-free preliminary scan. + +Before production edits, the extended property failed at preload with **6 source +payload descriptor scans, expected 0**, shrinking to an empty document +(fixed seed 2355, path `0`; random seed 198567259, path `0:0`). The neighboring +four-file baseline passed 5,258 checks. Thus correct values and the existing +metadata laws had allowed this work regression: the old work owner counted +source rows, not nested payload discovery, and the timing benchmark selected +flat scalar fields under a limit. + +The repair uses compilation provenance to choose recursive or root-only +sanitation. Clean roots need no descriptor copy. Roots with occurrence metadata +still get sanitized; recursive paths keep the original descriptor-preserving +walker. Callback substitution does no work when its override list is empty. +Both strip functions share the scope check; no new per-row cache or state is +introduced. An initial shallow-only repair still cost about twice the old cold +time, which motivated removing its clean-root allocation as well. + +## Enforcement evidence + +From `packages/db`, run: + +```sh +pnpm exec vitest run --coverage.enabled=false \ + tests/query/includes-work-counter-oracle.test.ts -t 'nested source payloads' +``` + +The fixed and random campaigns pass. A direct replay with +`TANSTACK_DB_ORACLE_SEED=2355`, `TANSTACK_DB_ORACLE_PATH=0`, and +`TANSTACK_DB_ORACLE_PROPERTY=includes-work.projection-payload` runs one history +and passes. Replacing only the two changed compiler modules with their HEAD +versions makes that same replay fail with the six-scan assertion; restoring the +repair makes it pass again. + +The final neighboring run passes **7,463 checks in seven files**: +`includes-context-transport-oracle`, `virtual-row-fields-input-oracle`, +`includes-functional-projection-oracle`, `public-container-copy`, +`includes-work-counter-oracle`, `virtual-row-fields-oracle`, and +`ordered-work-oracle.property`. These preserve the existing metadata, route, +descriptor, reference-identity and ordered-work comparisons. No budget was +lowered and no semantic comparison was relaxed. + +Two added ordinary copy controls reject the proposed scan: a clean enumerable +getter is invoked once, and private state below an enumerable named array +property survives. Both pass with the retained walker. These supplement the +existing descriptor matrix; they do not replace the generated work owner. + +## Timing and CI policy + +The [36-row measurement table](../../../scripts/bench/nested-row-repair-2026-11-05.csv) +retains all three cold observations and write medians for each nested case and +source variant. All three variants ran the same updated harness, sequentially +without concurrent tests, on an Apple M5 Max with Node 24.19.0, 100 measured +writes and 20 warmups. The archived DB sources are pre-2312 `035a5260` and +current main `8feab6ea3`; all variants use the same current built db-ivm and +installed dependencies. This isolates the DB source change, rather than +reconstructing an entire historical release. Archived runs' raw git metadata +names the containing checkout; the table records the actual source variant. + +| 10,000 issues, no manual index | Pre-2312 | Main | Repaired | +| --- | ---: | ---: | ---: | +| Synced cold hydrate | 67.630 ms | 2,097.377 ms | 74.896 ms | +| Synced median write | 0.023375 ms | 0.565792 ms | 0.023083 ms | +| Optimistic cold hydrate | 66.202 ms | 2,090.143 ms | 74.574 ms | +| Optimistic median write | 0.160459 ms | 0.717125 ms | 0.153791 ms | + +Across all 12 nested configurations, repaired/main geometric-mean ratios are +0.0397 cold and 0.0951 writes (about 25× and 10.5× faster). Repaired/pre-2312 +ratios are 1.228 cold and 1.002 writes. Individual cold ratios against the old +source range from 0.771 to 3.002, so this evidence establishes substantial +restoration, not identical cold timing in every small configuration. The +10,000-row cold case remains about 11–13% above the old source. + +The benchmark now checks nested result cardinality and the visible document +after preload, writes and rollback, outside the measured intervals. It runs +the nested case without a limit at every scale, index and mutation mode. + +[CI measurements and policy](../../../scripts/bench/README.md) record ten +runtime-identical paired jobs. Same-job query rollups vary by up to +10.0% for +writes and +20.3% cold; isolated cold cases exceed 7×. Every historical pair +passes the actual new comparator. Cross-job identical-base timings differ by +up to 2.76× writes and 1.88× cold overall, so the gate compares within one job. + +CI takes three fresh-fixture repetitions on each side and fails a query +geometric mean above +30% writes or +50% cold. It also fails a persistent +single-configuration increase: the fastest candidate exceeds the slowest base +by more than 50% and 0.05 ms writes or 5 ms cold. Other queries cannot cancel +a regression. Missing cases, invalid timings and missing declared repetitions +fail. Artifacts and the summary survive a failed comparison. The 19 CLI +controls pass, and presenting measured main as a regression from the repair +exits 1. Actual CI history with the new repetitions remains unobserved; the +historical reports cannot calibrate the repeated-range policy's false positives. + +The minified production comparison adds 58 gzip bytes to DB and 51 gzip bytes +to the typical app. Sharing strip logic removed duplication; dropping root +sanitation would violate occurrence isolation, while retaining the shallow +descriptor allocation left measured cold time around 2× the old source. The +small scope check pays for that allocation removal. Tests and evidence grow +separately from shipped code. + +## Loss audit and reviewer assessment + +The raw issue and full proposed diff were revisited after the final repair. +The task-local append-only ledger preserves the original claims and proposed +fixes. These are their final independent judgments: + +| ID | Technical validity | Action | Durable value and destination | +| --- | --- | --- | --- | +| R1: large regression since 2312 | Confirmed independently; exact external timing ratios are machine-specific. | fixed-now | Generated payload work owner and three-source timing table. | +| R2: up to three recursive walks per output | Confirmed by source and six-scan RED even for zero blocks. | fixed-now | Scope-based sanitation, original-implementation mutant. | +| R3: flat benchmark misses nested whole documents | Confirmed. The supplied fixture/query/update patch is useful. | fixed-now | Nested case, visible-write/rollback validation, repetitions. | +| R4: nested regressions are consistent, other cases noisy | Independently confirmed; external 163→5,535 ms figures are retained as reported evidence, not repeated claims about this machine. | fixed-now | Nested CSV plus historical CI variation CSV and calibrated gate. | +| R5: preliminary scan helps partially; avoid payload traversal for restoration | Direction confirmed. Scan remains proportional to payload and fails descriptor guarantees, so its proposed implementation is unsuitable. | fixed-now with a different repair | Clean-root scope check, empty-override skip, descriptor controls and explicit work limits. | + +Raw accounting: **5 items = 5 fixed-now**. Two separately discovered proposal +defects (getter evaluation and named-array-property omission) are addressed by +rejecting the scan and retaining executable controls. No raw item was dropped, +deferred, or treated as authority to narrow the metadata laws. Remaining evidence +limits are named above; whole-PR readiness is not established by this audit. + +Reviewer assessment: **hire recommendation: yes**, especially for diagnosis, +reproduction quality, and identifying the missing benchmark dimension. The +report accurately prioritizes a severe and consistent regression. The proposed +scan needs stronger descriptor-contract review and work calibration before it +could be accepted; its own report correctly identifies incomplete restoration. + +## Subsequent product-policy exploration + +The maintainer then challenged the callback-input guarantee itself, making +latency the priority. The [policy exploration](2026-11-05-metadata-policy-exploration.md) +records the history, rival rules and isolated prototype measurements. It also +reaches a remaining QueryRef-plus-predicate substitution cost and measures +correlated payload work. The scoped repair results above remain valid; they do +not close that broader performance objective. No new metadata law was adopted +and no accepted semantic comparison was changed during the exploration. + +## Approved boundary-only implementation + +The maintainer subsequently approved boundary-only protection. The +[implementation record](2026-11-05-boundary-only-metadata.md) supersedes this +report's callback-policy and correlated-work limits. The production design +removes dual callback views and uses compiler-known materialization paths. +The fourteen-path work owner now checks both descriptor APIs, including +projected QueryRef predicates and correlated receivers. New whole-suite and +correlated measurements, type contracts, neighboring-regression repairs, +mutants and source bindings are in that record. Earlier measurements and +review judgments above remain historical evidence. diff --git a/docs/contributing/oracle-reviews/callback-metadata.md b/docs/contributing/oracle-reviews/callback-metadata.md index 31195cfb37..223cb120ac 100644 --- a/docs/contributing/oracle-reviews/callback-metadata.md +++ b/docs/contributing/oracle-reviews/callback-metadata.md @@ -1133,3 +1133,17 @@ decreases by 59 gzip bytes and 38 Brotli bytes. Its typical app decreases by 75 gzip bytes and increases by 26 Brotli bytes. Earlier source fingerprints and size figures remain historical. No oracle law, comparison, grammar or budget changes. Fresh CI must check this pushed head before merge. + + +## Boundary-only policy revision, 2026-11-05 + +The maintainer chose to preserve authored values in intermediate callbacks, +inline results and Effect outputs. Published Collection row roots retain their +computed metadata and existing source-attribution rules. This supersedes the +October 28/30 callback-normalization policy described above; the historical +findings and experiments remain intact. The +[policy exploration](2026-11-05-metadata-policy-exploration.md) distinguishes +the choices and source history. The +[implementation evidence](2026-11-05-boundary-only-metadata.md) records the +revised law, original-production RED, GREEN, mutants and limits. Independent +ordered-loading, replay and framework repairs in #2312 remain in force. diff --git a/docs/guides/live-queries.md b/docs/guides/live-queries.md index e8e48a9ba0..5a2037b21d 100644 --- a/docs/guides/live-queries.md +++ b/docs/guides/live-queries.md @@ -39,6 +39,15 @@ Live query results include computed, read-only virtual properties on every row: These props can be used in `where`, `select`, and `orderBy` clauses. They are added to query outputs automatically and should not be persisted back to storage. +These metadata rules apply to published Collection row roots, including +Collection-valued includes. Intermediate subquery projections, `.fn.select()`, +`.fn.where()` and `.fn.having()` inputs, inline includes and Effect outputs keep +their authored fields. For example, an intermediate projection with +`$collectionId: 'application'` exposes that string to a downstream callback. +Publishing that value as a Collection row supplies genuine computed metadata. +Read source metadata before projection when you need the source's attribution. + + ## Table of Contents - [Creating Live Query Collections](#creating-live-query-collections) diff --git a/docs/guides/migrate-to-1-0-rc.md b/docs/guides/migrate-to-1-0-rc.md index 7272617885..360c99524f 100644 --- a/docs/guides/migrate-to-1-0-rc.md +++ b/docs/guides/migrate-to-1-0-rc.md @@ -63,8 +63,14 @@ source row directly, such as `({ user }) => user`. A new object, including `({ user }) => ({ ...user })`, receives the live-query Collection's metadata. Identical field values do not establish which source authored that object. These rules also apply to Collection-valued include rows. Inline `toArray()` -and `materialize()` results keep their selected shape. Rename application data fields that collide with these names before -selecting them as row roots. +and `materialize()` results keep their selected shape. + +Intermediate subquery projections and downstream functional callback inputs +also keep authored fields. An explicit `$collectionId: 'application'` override +remains that string through `.fn.select()`, `.fn.where()` and `.fn.having()`. +The same applies to Effect outputs. Only publication as an actual Collection +row supplies computed metadata. Rename colliding application fields when you +need to preserve them on a published row root. ## Wait for transaction settlement diff --git a/packages/db/src/query/builder/group-keys.ts b/packages/db/src/query/builder/group-keys.ts index f45df0b983..3e553274b0 100644 --- a/packages/db/src/query/builder/group-keys.ts +++ b/packages/db/src/query/builder/group-keys.ts @@ -6,13 +6,15 @@ import type { Context, GroupByCallback, OperatorCallback } from './types.js' * Group keys for `query.groupBy(...)` when the query has no aggregate. * Aggregates such as `count` bring the grouping compiler themselves. */ -export interface GroupKeys { - callback: GroupByCallback +export interface GroupKeys { + callback: GroupByCallback grouping: Grouping } -export function groupKeys( - callback: OperatorCallback>, -): GroupKeys { +export function groupKeys( + callback: ( + refs: Parameters>>[0], + ) => TKeys, +): GroupKeys { return { callback, grouping } } diff --git a/packages/db/src/query/builder/index.ts b/packages/db/src/query/builder/index.ts index ae1aaafbb9..c8dab03894 100644 --- a/packages/db/src/query/builder/index.ts +++ b/packages/db/src/query/builder/index.ts @@ -587,12 +587,16 @@ export class BaseQueryBuilder { callback: ( refs: RefsForContext, ) => NonScalarSelectObject, - ): QueryBuilder>> + ): QueryBuilder< + WithResult, TSelectObject> + > select( callback: ( refs: RefsForContext, ) => WithoutBareSubquery, - ): QueryBuilder>> + ): QueryBuilder< + WithResult, TSelectValue> + > select( callback: ( refs: RefsForContext, @@ -742,9 +746,17 @@ export class BaseQueryBuilder { * .select(({orders}) => ({ status: orders.status })) * ``` */ + groupBy( + keys: + | GroupByCallback> + | GroupKeys>, + ): QueryBuilder groupBy( keys: GroupByCallback | GroupKeys, - ): QueryBuilder { + ): QueryBuilder + groupBy( + keys: GroupByCallback | GroupKeys, + ): QueryBuilder | QueryBuilder { const callback = typeof keys === `function` ? keys : keys.callback const aliases = this._getCurrentAliases() const refProxy = createRefProxy( diff --git a/packages/db/src/query/builder/types.ts b/packages/db/src/query/builder/types.ts index c142082386..b730960aab 100644 --- a/packages/db/src/query/builder/types.ts +++ b/packages/db/src/query/builder/types.ts @@ -66,6 +66,9 @@ export interface Context { result?: any // Whether select/fn.select has been called hasResult?: true + // Grouping generates a missing intermediate $key before publication. + hasGrouping?: true + hasAggregate?: boolean // Single result only (if findOne has been called) singleResult?: boolean } @@ -646,9 +649,9 @@ export type CompareOptions = StringCollationConfig & { * * Example: `(refs) => refs.orders.status` */ -export type GroupByCallback = ( +export type GroupByCallback = ( refs: RefsForContext, -) => any +) => TKeys /** * A callback that an operator value receives before the query supplies its @@ -721,7 +724,7 @@ type ValueOfUnion = T extends unknown : never type RefForContextValue = T extends unknown ? IsPlainObject extends true - ? Ref + ? Ref : RefLeaf : never type RefsSchemaForContext = @@ -805,7 +808,7 @@ export type RefsForContext = { IsNullableContextKey > } & (TContext[`hasResult`] extends true - ? { $selected: Ref } + ? { $selected: Ref } : {}) & BranchUnionResultRefs & JoinedRefsForContext @@ -1107,16 +1110,13 @@ type WithVirtualPropsIfAttachable = TResult extends unknown : TResult : never -// An unmatched whole-row selection has optional, absent virtual fields. -// Publication supplies metadata on that empty row instead of intersecting -// required metadata with those absent fields and losing the empty alternative. -type WithRequiredVirtualProps = - Extract, keyof VirtualRowProps> extends never - ? WithVirtualProps - : WithVirtualProps< - Omit, keyof VirtualRowProps>>, - string | number - > +// Publication replaces every reserved field, including authored collisions and +// absent fields from unmatched whole-row selections. Intersecting would turn +// an authored incompatible field into never instead of publishing metadata. +type WithRequiredVirtualProps = WithVirtualProps< + Omit, + string | number +> type OptionalKeys = { [K in keyof T]-?: {} extends Pick ? K : never @@ -1204,14 +1204,27 @@ type ResultValue = TContext[`hasResult`] extends true * The `Prettify` wrapper ensures clean type display in IDEs by flattening * complex intersection types into readable object types. */ -export type GetRawResult = ResultValue +// QueryRef sources and inline materialization expose the authored selection. +// Grouping alone contributes a missing public key; it supplies no Collection +// attribution and never replaces an explicitly authored field. +type WithGroupKey = T extends object + ? `$key` extends keyof T + ? T + : T & { readonly $key: string | number } + : T + +export type GetRawResult = + TContext[`hasResult`] extends true + ? TContext[`hasGrouping`] extends true + ? WithGroupKey + : TContext[`hasAggregate`] extends true + ? WithGroupKey + : TContext[`result`] + : ResultValue // Inline materialization bypasses a child Collection, so selected child values // do not pass through Collection enrichment and must keep their runtime shape. -export type GetInlineResult = - TContext[`hasResult`] extends true - ? TContext[`result`] - : GetRawResult +export type GetInlineResult = GetRawResult export type GetResult = Prettify< ResultValue @@ -1401,11 +1414,52 @@ export type MergeContextForJoinCallback< * The double `Prettify` ensures both the overall context and the nested * result type display cleanly in IDEs. */ -export type WithResult = Prettify< - Omit & +// Stop at query helpers and expressions: their internals are not fields of +// this selection. Aggregates in nested structured projections belong to it. +type SameAggregateAncestor> = { + [K in keyof TAncestors]: (() => U extends T ? 1 : 2) extends < + U, + >() => U extends TAncestors[K] ? 1 : 2 + ? true + : false +}[number] + +type ContainsAggregate = []> = + IsAny extends true + ? false + : T extends Aggregate + ? true + : T extends BasicExpression + ? false + : typeof RefBrand extends keyof T + ? false + : T extends { + readonly __brand: + | `IncludeWrapper` + | `ToArrayWrapper` + | `ConcatToArrayWrapper` + | `MaterializeWrapper` + | `CaseWhenWrapper` + } + ? false + : true extends SameAggregateAncestor + ? false + : IsPlainObject extends true + ? true extends ContainsAggregate + ? true + : false + : false + +export type WithResult< + TContext extends Context, + TResult, + TSelection = unknown, +> = Prettify< + Omit & Pick & { result: PrettifyIfPlainObject hasResult: true + hasAggregate: ContainsAggregate } > diff --git a/packages/db/src/query/compiler/group-by.ts b/packages/db/src/query/compiler/group-by.ts index 7d8f976339..46d5af4740 100644 --- a/packages/db/src/query/compiler/group-by.ts +++ b/packages/db/src/query/compiler/group-by.ts @@ -590,7 +590,7 @@ export function processGroupBy( filter(([, row]) => { const namespacedRow = getGroupEvaluationRow(row, fields) const callbackRow = sanitizeCallbackRows - ? stripInternalCallbackMetadata(namespacedRow) + ? stripInternalCallbackMetadata(namespacedRow, false) : namespacedRow return toBooleanPredicate(fnHaving(callbackRow)) }), diff --git a/packages/db/src/query/compiler/index.ts b/packages/db/src/query/compiler/index.ts index 150a8c0e20..74c80e6a8e 100644 --- a/packages/db/src/query/compiler/index.ts +++ b/packages/db/src/query/compiler/index.ts @@ -72,23 +72,23 @@ import { getLazyLoadTargets } from './lazy-targets.js' import { processOrderBy } from './order-by.js' import { crossJoinParentRoutes } from './parent-routes.js' import { - CALLBACK_INPUT, - CALLBACK_SELECTED, INCLUDES_PUBLIC_KEY, INCLUDES_ROUTING, + ROW_METADATA, attachRouteMetadata, attachRouteMetadataToResult, - getCallbackInput, getNamespacedRouteMetadata, getRouteMetadata, getRoutedScalarMetadata, + getSourceMetadata, + getSourceRouting, isPublicContainer, stripInternalCallbackMetadata, stripInternalRouteMetadata, - transformPublicContainers, wrapInputRow, } from './route-metadata.js' import { processSelect } from './select.js' +import type { RowMetadata } from './route-metadata.js' import type { ValueIdentity } from '../equality-value-identity.js' import type { IncludesRuntime } from '../live/includes-runtime.js' import type { CollectionSubscription } from '../../collection/subscription.js' @@ -166,7 +166,7 @@ type ConditionalSelectGuard = { expected: boolean } -type SourceInclude = { +export type SourceInclude = { sourceAlias: string include: IncludesCompilationResult } @@ -248,7 +248,6 @@ function projectParentContext( function parameterizeByParentRoutes( pipeline: NamespacedAndKeyedStream, parentKeyStream: KeyedStream, - mainSource: string, valueIdentity: ValueIdentity, ): NamespacedAndKeyedStream { return crossJoinParentRoutes( @@ -258,12 +257,9 @@ function parameterizeByParentRoutes( const namespaced = { ...getParentContextValue(parentContext), ...(row as Record), - } as Record - namespaced[mainSource] = { - ...namespaced[mainSource], - [INCLUDES_PUBLIC_KEY]: - namespaced[mainSource]?.[INCLUDES_PUBLIC_KEY] ?? rowKey, - } + } as Record + namespaced[INCLUDES_PUBLIC_KEY] = + namespaced[INCLUDES_PUBLIC_KEY] ?? rowKey attachRouteMetadata(namespaced, correlationKey, parentContext) return [ serializeValue([ @@ -357,8 +353,6 @@ export interface CompilationResult { includes?: Array } -const NO_OMITTED_KEYS: ReadonlySet = new Set() - const valueIdentitiesByCache = new WeakMap() function getCompilationValueIdentity(cache: QueryCache): ValueIdentity { @@ -422,14 +416,13 @@ function compileQueryInternal( ancestorHasTopK = false, ]: CompileQueryArgs, scopeValidated: boolean, - sanitizeSelectedMetadata = false, + isCollectionRoot = false, ): CompilationResult { - // Authored and source views have different selected-row metadata. Reuse a raw - // query's compilation only within the same mode. + // Publication changes metadata. A separately compiled authored root also + // owns its movable top-K; reusing it as a source would couple the windows. + const cacheSlot = isCollectionRoot ? 1 : scopeValidated ? 2 : 0 const cachedResult = - parentKeyStream === undefined - ? cache.get(rawQuery)?.[sanitizeSelectedMetadata ? 1 : 0] - : undefined + parentKeyStream === undefined ? cache.get(rawQuery)?.[cacheSlot] : undefined if (cachedResult) { return cachedResult } @@ -450,8 +443,6 @@ function compileQueryInternal( ) // Use a mutable binding so we can shallow-clone select before includes mutation let query = optimizedQuery - const sanitizeSourceMetadata = - sanitizeSelectedMetadata || query.fnSelect !== undefined // Create mapping from optimized query to original for caching queryMapping.set(query, rawQuery) @@ -501,9 +492,6 @@ function compileQueryInternal( aliasRemapping, sourceWhereClauses, parentKeyStream, - // Sanitize source rows before a callback consumes them. Inline values - // without a callback keep their authored selected shape. - sanitizeSourceMetadata, ) Object.assign(sources, fromSources) const sourceCarriesInternalRouteState = @@ -530,11 +518,11 @@ function compileQueryInternal( // child value beside the row so result routing can still expose it. const childFieldPath = childCorrelationField.path.slice(1) // remove alias prefix const childRekeyed = mainInput.pipe( - map(([key, row, callbackValue]: [...InputRow, unknown?]) => { + map(([key, row, metadata]: [...InputRow, unknown?]) => { const correlationValue = getNestedValue(row, childFieldPath) return [ valueIdentity.serializeEquality(correlationValue), - [key, row, correlationValue, callbackValue], + [key, row, correlationValue, metadata], ] as [unknown, [unknown, any, unknown, unknown?]] }), ) @@ -562,7 +550,7 @@ function compileQueryInternal( return childSide != null }), map(([_correlationIdentity, [childSide, parentSide]]: any) => { - const [childKey, childRow, correlationValue, callbackValue] = childSide + const [childKey, childRow, correlationValue, metadata] = childSide const tagged: any = attachRouteMetadata( { ...childRow, @@ -578,7 +566,7 @@ function compileQueryInternal( getParentContextIdentity(parentSide), ]) : childKey - return [effectiveKey, tagged, callbackValue] as unknown as InputRow + return [effectiveKey, tagged, metadata] as unknown as InputRow }), ) @@ -592,7 +580,6 @@ function compileQueryInternal( pipeline = parameterizeByParentRoutes( initialPipeline, parentKeyStream, - mainSource, valueIdentity, ) } @@ -628,13 +615,14 @@ function compileQueryInternal( parentRoutes, ], true, - sanitizeSourceMetadata, + false, ), aliasToCollectionId, aliasRemapping, sourceWhereClauses, joinsParentDirectly, valueIdentity, + sourceIncludes, parentKeyStream, ) } @@ -681,7 +669,8 @@ function compileQueryInternal( pipeline = pipeline.pipe( filter(([_key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( - getCallbackInput(namespacedRow), + namespacedRow, + false, ) as NamespacedRow return toBooleanPredicate(fnWhere(callbackRow)) }), @@ -720,7 +709,10 @@ function compileQueryInternal( ? [] : [{ path: [sourceAlias, ...include.resultPath], guards: [] }], route: (nsRow: NamespacedRow) => - readRouteTag(nsRow[sourceAlias], include.fieldName), + ( + getSourceRouting(nsRow, sourceAlias) as + Record | undefined + )?.[include.fieldName], })), ...(query.select ? directIncludes : []).map((include) => ({ include, @@ -1032,9 +1024,17 @@ function compileQueryInternal( aliasToCollectionId, aliasRemapping, }) + const resolveInput = materializedInput.resolve pipeline = materializedInput.pipeline.pipe( map(([key, [value]]) => { - const row = { ...value } + // Resolution cleans public values, while this internal namespace must + // keep its route and genuine source attribution through the callback. + const row: NamespacedRow & Record = { + ...value, + ...((resolveInput + ? resolveInput(value, (leaf) => leaf) + : value) as NamespacedRow), + } delete row[INCLUDES_ROUTING] return [key, row] }), @@ -1046,40 +1046,31 @@ function compileQueryInternal( const sourceBindings = new Map( getAllSources(query).map((source) => [source.alias, source.bindingId]), ) + const sourceAliases = [...sourceBindings.keys()] const unionRows = query.from.type === `unionAll` // Process the SELECT clause early - always create $selected // This eliminates duplication and allows for DISTINCT implementation if (query.fnSelect) { - const sourceAliases = [...sourceBindings.keys()] // Handle functional select - apply the function to transform the row pipeline = pipeline.pipe( map(([key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( - getCallbackInput(namespacedRow), + namespacedRow, + false, ) as NamespacedRow const selectResults = query.fnSelect!(callbackRow) validateFnSelectResult(selectResults) let selected = selectResults - if (isPublicContainer(selectResults)) { + const routing = (namespacedRow as any)[INCLUDES_ROUTING] + if (routing && isPublicContainer(selectResults)) { selected = copySelectedRow(selectResults) - const routing = (namespacedRow as any)[INCLUDES_ROUTING] - if (routing) selected[INCLUDES_ROUTING] = routing + selected[INCLUDES_ROUTING] = routing } - // A returned source row keeps its genuine metadata. A new functional - // projection has no source owner; use the same copy-on-write metadata - // normalization as structured selections for its callback view. - const callbackSelected = sourceAliases.some( - (alias) => selectResults === callbackRow[alias], - ) - ? selected - : attachVirtualPropsToSelected(selected, {}, true, []) - if (sanitizeSelectedMetadata) selected = callbackSelected return [ key, { ...namespacedRow, $selected: selected, - [CALLBACK_SELECTED]: callbackSelected, }, ] }), @@ -1189,9 +1180,21 @@ function compileQueryInternal( pipeline = pipeline.pipe( filter(([_key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( - getCallbackInput(namespacedRow), + namespacedRow, + false, ) as NamespacedRow - return fnHaving(callbackRow) + // $selected is compiler-created context at this stage. A flat + // union's implicit selection can still hold namespace sidecars at + // its root; remove them without visiting authored payloads. + const selected = stripInternalCallbackMetadata( + callbackRow.$selected, + false, + ) as Record + return fnHaving( + selected === callbackRow.$selected + ? callbackRow + : { ...callbackRow, $selected: selected }, + ) }), ) } @@ -1222,45 +1225,49 @@ function compileQueryInternal( ? getWholeRowSourceAliases(query.select) : query.from.type === `unionAll` ? undefined - : [mainSource] + : query.join + ? [] + : [mainSource] const finalizeRow = ( key: unknown, row: Record, orderByIndex: string | undefined, ) => { - const selectedValue = unwrapValue(row.$selected) - const authoredResults = - query.fnSelect && sanitizeSelectedMetadata - ? selectedValue - : attachVirtualPropsToSelected( + const selected = unwrapValue(row.$selected) + // Grouping supplies a public key even before Collection publication. + // Authored fields still win at intermediate boundaries, including null. + const selectedValue = + (grouped || selectAggregate) && + isPublicContainer(selected) && + !(`$key` in selected) + ? Object.assign(copySelectedRow(selected), { $key: row.$key }) + : selected + let metadata: RowMetadata | null = null + if (query.fnSelect) { + const alias = sourceAliases.find( + (source) => selectedValue === row[source], + ) + if (alias !== undefined) metadata = getSourceMetadata(row, alias) + } else if (metadataSource === undefined) { + metadata = row[ROW_METADATA] ?? null + } else { + for (const alias of metadataSource) + if (row[alias] != null) metadata = getSourceMetadata(row, alias) + } + const finalResults = stripInternalRouteMetadata( + isCollectionRoot + ? attachVirtualPropsToSelected( selectedValue, - row, - sanitizeSelectedMetadata, - metadataSource, + metadata ?? {}, + true, + undefined, ) - const finalResults = stripInternalRouteMetadata(authoredResults) - const callbackRow = getCallbackInput(row) - const sourceViews = Object.entries(callbackRow).filter( - ([alias, value]) => alias !== `$selected` && value !== row[alias], + : selectedValue, + false, ) - const callbackSelected = query.fnSelect - ? (row as { [CALLBACK_SELECTED]?: unknown })[CALLBACK_SELECTED] - : attachVirtualPropsToSelected( - transformPublicContainers( - selectedValue, - (value) => - sourceViews.find(([alias]) => value === row[alias])?.[1] ?? value, - NO_OMITTED_KEYS, - ), - callbackRow, - true, - metadataSource, - ) const route = parentKeyStream ? getNamespacedRouteMetadata(row, mainSource) : undefined - // Carry both views with the occurrence. A downstream source adapter selects - // the callback view without rewriting the authored inline result. return [ key, [ @@ -1268,12 +1275,8 @@ function compileQueryInternal( orderByIndex, route?.correlationKey, parentKeyStream ? (route?.parentContext ?? null) : undefined, - parentKeyStream - ? (row[mainSource]?.[INCLUDES_PUBLIC_KEY] ?? - row[INCLUDES_PUBLIC_KEY] ?? - key) - : undefined, - stripInternalRouteMetadata(callbackSelected), + parentKeyStream ? (row[INCLUDES_PUBLIC_KEY] ?? key) : undefined, + metadata, ], ] as unknown as [unknown, [any, string | undefined]] } @@ -1337,7 +1340,7 @@ function compileQueryInternal( ) as ResultStream } - // Cache the result by the original query and selected-row metadata mode. + // Cache by original query and compilation role, preserving independent roots. const compilationResult: CompilationResult = { collectionId: mainCollectionId, pipeline: resultPipeline, @@ -1351,8 +1354,8 @@ function compileQueryInternal( getOrCreate( cache, rawQuery, - (): [CompilationResult?, CompilationResult?] => [], - )[sanitizeSelectedMetadata ? 1 : 0] = compilationResult + (): [CompilationResult?, CompilationResult?, CompilationResult?] => [], + )[cacheSlot] = compilationResult } return compilationResult @@ -1620,7 +1623,6 @@ function processFromClause( aliasRemapping: Record, sourceWhereClauses: Map>, parentKeyStream?: KeyedStream, - sanitizeSelectedMetadata = false, ): { alias: string pipeline: NamespacedAndKeyedStream @@ -1648,7 +1650,6 @@ function processFromClause( aliasRemapping, sourceWhereClauses, parentKeyStream, - sanitizeSelectedMetadata, ) } @@ -1673,7 +1674,6 @@ function processFromClause( parentRoutes, ], true, - sanitizeSelectedMetadata, ), aliasToCollectionId, aliasRemapping, @@ -1741,24 +1741,19 @@ function processFromClause( ? parameterizeByParentRoutes( wrapInputWithAlias(input, alias), parentKeyStream, - alias, valueIdentity, ) : wrapInputWithAlias(input, alias) const branch = routedBranch.pipe( map(([key, row]) => { const branchKey = `${alias}:${encodeKeyForUnionBranch(key)}` - const aliasRow = row[alias] as Record | undefined - const publicKey = aliasRow?.[INCLUDES_PUBLIC_KEY] ?? key + const publicKey = + (row as Record)[INCLUDES_PUBLIC_KEY] ?? key const branchPublicKey = `${alias}:${encodeKeyForUnionBranch(publicKey)}` const branchRow = parentKeyStream ? { ...row, [INCLUDES_PUBLIC_KEY]: branchPublicKey, - [alias]: { - ...row[alias], - [INCLUDES_PUBLIC_KEY]: branchPublicKey, - }, } : row return [branchKey, branchRow] as [string, typeof row] @@ -1795,7 +1790,6 @@ function processUnionAll( aliasRemapping: Record, sourceWhereClauses: Map>, parentKeyStream?: KeyedStream, - sanitizeSelectedMetadata = false, ): { alias: string pipeline: NamespacedAndKeyedStream @@ -1846,7 +1840,6 @@ function processUnionAll( undefined, ], true, - sanitizeSelectedMetadata, ) if (!mainCollectionId) { @@ -1864,14 +1857,7 @@ function processUnionAll( map((data: any) => { const [ key, - [ - row, - _order, - correlationKey, - parentContext, - publicKey, - callbackValue, - ], + [row, _order, correlationKey, parentContext, publicKey, metadata], ] = data const branchKey = `${index}:${encodeKeyForUnionBranch(key)}` const branchPublicKey = `${index}:${encodeKeyForUnionBranch( @@ -1885,13 +1871,14 @@ function processUnionAll( branchPublicKey, ) : row - const namespaced = - callbackValue !== undefined && - callbackValue !== row && - isPlainObject(routedRow) - ? { ...routedRow, [CALLBACK_INPUT]: [callbackValue] } - : routedRow - return [branchKey, namespaced] as [string, Record] + return [ + branchKey, + isPublicContainer(routedRow) + ? Object.assign(copySelectedRow(routedRow), { + [ROW_METADATA]: metadata ?? null, + }) + : routedRow, + ] as [string, Record] }), ) @@ -1917,9 +1904,9 @@ function wrapInputWithAlias( alias: string, ): NamespacedAndKeyedStream { return input.pipe( - map(([key, row, callbackValue]: [...InputRow, unknown?]) => [ + map(([key, row, metadata]: [...InputRow, unknown?]) => [ key, - wrapInputRow(alias, row, callbackValue), + wrapInputRow(alias, row, metadata as RowMetadata | null | undefined), ]), ) } diff --git a/packages/db/src/query/compiler/joins.ts b/packages/db/src/query/compiler/joins.ts index 494ab28604..ef9046c38d 100644 --- a/packages/db/src/query/compiler/joins.ts +++ b/packages/db/src/query/compiler/joins.ts @@ -31,15 +31,19 @@ import { getLazyLoadTargets } from './lazy-targets.js' import { crossJoinParentRoutes } from './parent-routes.js' import { queriesMatchForCaching } from './query-equivalence.js' import { - CALLBACK_INPUT, attachRouteMetadata, attachRouteMetadataToResult, - getCallbackInput, getNamespacedRouteMetadata, + mergeSourceContext, wrapInputRow, } from './route-metadata.js' +import type { RowMetadata } from './route-metadata.js' import type { ValueIdentity } from '../equality-value-identity.js' -import type { CompilationResult, IncludesCompilationResult } from './index.js' +import type { + CompilationResult, + IncludesCompilationResult, + SourceInclude, +} from './index.js' import type { BasicExpression, CollectionSourceRef, @@ -93,7 +97,7 @@ function parameterizeJoinInputByParentRoutes( return crossJoinParentRoutes( input, parentKeyStream, - (rowKey, row, correlationKey, parentContext, callbackValue) => { + (rowKey, row, correlationKey, parentContext, metadata) => { return [ serializeValue([ valueIdentity.equality(rowKey), @@ -107,7 +111,7 @@ function parameterizeJoinInputByParentRoutes( correlationKey, parentContext, ), - callbackValue, + metadata, ] as unknown as [unknown, unknown] }, ) @@ -202,6 +206,7 @@ export function processJoins( sourceWhereClauses: Map>, mainSourceIsParentFiltered: boolean, valueIdentity: ValueIdentity, + sourceIncludes: Array, parentKeyStream?: KeyedStream, ): NamespacedAndKeyedStream { const localBindings = new Set( @@ -254,6 +259,7 @@ export function processJoins( alias: processedJoinedSource, input: joinedInput, collectionId: joinedCollectionId, + includes, } = processSource( joinClause.from, allInputs, @@ -273,6 +279,10 @@ export function processJoins( // Add the joined source to the sources map sources[joinedSource] = joinedInput + if (includes) + sourceIncludes.push( + ...includes.map((include) => ({ sourceAlias: joinedSource, include })), + ) const mainCollection = collections[mainCollectionId] const joinedCollection = collections[joinedCollectionId] @@ -320,10 +330,14 @@ export function processJoins( ) let joinedPipeline = joinedInput.pipe( - map(([currentKey, row, callbackValue]: [...InputRow, unknown?]) => + map(([currentKey, row, metadata]: [...InputRow, unknown?]) => keyJoinInput( currentKey, - wrapInputRow(joinedSource, row, callbackValue), + wrapInputRow( + joinedSource, + row, + metadata as RowMetadata | null | undefined, + ), joinedSource, `joined`, compiledJoinedExpressions, @@ -617,11 +631,11 @@ export function processSource( correlationKey, parentContext, publicKey, - callbackValue, + metadata, ], ] = data if (sourceKind === `join` && !parentKeyStream) { - return [key, value, callbackValue] as unknown as InputRow + return [key, value, metadata] as unknown as InputRow } return [ key, @@ -633,7 +647,7 @@ export function processSource( parentContext, publicKey, ), - callbackValue, + metadata, ] as unknown as InputRow }), ) @@ -679,32 +693,19 @@ function processJoinResults( // The main side owns inherited parent aliases. Missing local sides // must not expose an ancestor with the same alias. - const mergeRows = ( - mainRow: NamespacedRow | undefined, - joinedRow: NamespacedRow | undefined, - ): NamespacedRow => { - const row = { ...(mainRow ?? joinedRow) } as NamespacedRow - if (main == null) for (const alias of mainAliases) delete row[alias] - if (joinedRow) row[joinedSource] = joinedRow[joinedSource]! - else delete row[joinedSource] - return row - } - const mergedNamespacedRow = mergeRows( + const mergedNamespacedRow = { + ...(mainNamespacedRow ?? joinedNamespacedRow), + } as NamespacedRow + if (main == null) + for (const alias of mainAliases) delete mergedNamespacedRow[alias] + if (joinedNamespacedRow) + mergedNamespacedRow[joinedSource] = joinedNamespacedRow[joinedSource]! + else delete mergedNamespacedRow[joinedSource] + mergeSourceContext( + mergedNamespacedRow, mainNamespacedRow, joinedNamespacedRow, ) - const mainView = - mainNamespacedRow && getCallbackInput(mainNamespacedRow) - const joinedView = - joinedNamespacedRow && getCallbackInput(joinedNamespacedRow) - if ( - mainView !== mainNamespacedRow || - joinedView !== joinedNamespacedRow - ) { - Object.assign(mergedNamespacedRow, { - [CALLBACK_INPUT]: mergeRows(mainView, joinedView), - }) - } // Combine the main and joined keys without ambiguity: keys may contain // delimiters, numbers and strings may print alike, and a missing outer diff --git a/packages/db/src/query/compiler/route-metadata.ts b/packages/db/src/query/compiler/route-metadata.ts index 25a9f0a710..31ea6f153c 100644 --- a/packages/db/src/query/compiler/route-metadata.ts +++ b/packages/db/src/query/compiler/route-metadata.ts @@ -1,18 +1,25 @@ +import { VIRTUAL_PROP_NAMES } from '../../virtual-props.js' import { isPlainObject } from '../../utils/type-guards.js' import { getParentContextValue } from '../equality-value-identity.js' import type { NamespacedRow } from '../../types.js' const ROUTED_SCALAR_VALUE = Symbol(`tanstack_db_routed_scalar_value`) -export const CALLBACK_INPUT = Symbol(`tanstack_db_callback_input`) -export const CALLBACK_SELECTED = Symbol(`tanstack_db_callback_selected`) const ROUTE_METADATA = Symbol(`tanstack_db_route_metadata`) export const INCLUDES_PUBLIC_KEY = Symbol(`includesPublicKey`) +export const SOURCE_METADATA = Symbol(`sourceMetadata`) +const SOURCE_ROUTING = Symbol(`sourceRouting`) +export const ROW_METADATA = Symbol(`rowMetadata`) +export type RowMetadata = Partial< + Record<(typeof VIRTUAL_PROP_NAMES)[number], unknown> +> + export const INCLUDES_ROUTING = Symbol(`includesRouting`) const INTERNAL_ROUTE_KEYS = new Set([ ROUTE_METADATA, INCLUDES_PUBLIC_KEY, - CALLBACK_INPUT, - CALLBACK_SELECTED, + SOURCE_METADATA, + ROW_METADATA, + SOURCE_ROUTING, ]) const INTERNAL_CALLBACK_KEYS = new Set([ ...INTERNAL_ROUTE_KEYS, @@ -133,53 +140,97 @@ export function getRoutedScalarMetadata( export function wrapInputRow( alias: string, row: unknown, - callbackValue?: unknown, + metadata?: RowMetadata | null, ): NamespacedRow { const scalar = getRoutedScalarMetadata(row) const route = scalar ?? getRouteMetadata(row) const namespaced = { ...getParentContextValue(route?.parentContext), - [alias]: scalar - ? scalar.value - : route - ? stripRouteMetadata(row as Record) - : row, + [alias]: scalar ? scalar.value : stripInternalCallbackMetadata(row, false), } as NamespacedRow if (route) attachRouteMetadata(namespaced, route.correlationKey, route.parentContext) - if (scalar) - Object.assign(namespaced, { [INCLUDES_PUBLIC_KEY]: scalar.publicKey }) - if (callbackValue !== undefined && callbackValue !== row) - Object.assign(namespaced, { [CALLBACK_INPUT]: { [alias]: callbackValue } }) + if (route) + Object.assign(namespaced, { + [INCLUDES_PUBLIC_KEY]: + scalar?.publicKey ?? + (row as Record)[INCLUDES_PUBLIC_KEY], + }) + if (metadata !== undefined) + Object.assign(namespaced, { [SOURCE_METADATA]: { [alias]: metadata } }) + if (row !== null && typeof row === `object` && INCLUDES_ROUTING in row) + Object.assign(namespaced, { + [SOURCE_ROUTING]: { + [alias]: (row as Record)[INCLUDES_ROUTING], + }, + }) return namespaced } -/** A namespace keeps authored values beside its callback source overrides. - * A one-element tuple denotes a flat union view: absent fields must disappear, - * whereas named overrides replace only their own source aliases. - */ -export function getCallbackInput(row: T): T { - const view = (row as Record)[CALLBACK_INPUT] - if (Array.isArray(view)) { - const result = { ...view[0] } - if (`$selected` in row) result.$selected = row.$selected - return result as T - } - return view && typeof view === `object` ? { ...row, ...view } : row +/** Attribution and include routing belong to the namespace, never source data. */ +export function getSourceMetadata( + row: Record, + alias: string, +): RowMetadata | null { + const metadata = row[SOURCE_METADATA] as + Record | undefined + if (metadata && Object.hasOwn(metadata, alias)) return metadata[alias]! + const source = row[alias] + if (source == null || typeof source !== `object`) return null + const result: RowMetadata = {} + for (const name of VIRTUAL_PROP_NAMES) + if (name in source) result[name] = (source as Record)[name] + return result } -/** Copy public containers while removing private route state at every depth. */ -export function stripInternalRouteMetadata(value: unknown): unknown { - return transformPublicContainers(value, (leaf) => leaf, INTERNAL_ROUTE_KEYS) +export function getSourceRouting( + row: Record, + alias: string, +): unknown { + return (row[SOURCE_ROUTING] as Record | undefined)?.[alias] } -/** Remove every compiler-owned key before invoking user code. */ -export function stripInternalCallbackMetadata(value: unknown): unknown { - return transformPublicContainers( - value, - (leaf) => leaf, - INTERNAL_CALLBACK_KEYS, - ) +export function mergeSourceContext( + target: Record, + left: Record | undefined, + right: Record | undefined, +): void { + for (const field of [SOURCE_METADATA, SOURCE_ROUTING]) + if (left?.[field] || right?.[field]) + target[field] = { + ...(left?.[field] as object | undefined), + ...(right?.[field] as object | undefined), + } +} + +/** Remove private route state, descending only when the compilation can nest it. */ +export function stripInternalRouteMetadata( + value: unknown, + recursive = true, +): unknown { + return stripInternalMetadata(value, INTERNAL_ROUTE_KEYS, recursive) +} + +/** Remove compiler-owned keys before invoking user code, at the known scope. */ +export function stripInternalCallbackMetadata( + value: unknown, + recursive = true, +): unknown { + return stripInternalMetadata(value, INTERNAL_CALLBACK_KEYS, recursive) +} + +function stripInternalMetadata( + value: unknown, + keys: ReadonlySet, + recursive: boolean, +): unknown { + if (!recursive) { + if (!isPublicContainer(value)) return value + let hasMetadata = false + for (const key of keys) hasMetadata ||= Object.hasOwn(value, key) + if (!hasMetadata) return value + } + return transformPublicContainers(value, (leaf) => leaf, keys, recursive) } /** Copy only paths changed by a leaf transform or an omitted private key. */ @@ -187,6 +238,7 @@ export function transformPublicContainers( value: unknown, transformLeaf: (value: unknown) => unknown, omittedKeys: ReadonlySet, + recursive = true, ): unknown { const rootReplacement = transformLeaf(value) if (!Object.is(rootReplacement, value)) return rootReplacement @@ -219,7 +271,7 @@ export function transformPublicContainers( const child = descriptor.value descriptor.value = transformLeaf(child) if (!Object.is(descriptor.value, child)) markDirty(container) - else if (isPublicContainer(child)) { + else if (recursive && isPublicContainer(child)) { descriptor.child = visit(child) descriptor.child.parents.push(container) } diff --git a/packages/db/src/query/compiler/types.ts b/packages/db/src/query/compiler/types.ts index f20a089bef..5f4d45460b 100644 --- a/packages/db/src/query/compiler/types.ts +++ b/packages/db/src/query/compiler/types.ts @@ -6,7 +6,11 @@ import type { CompilationResult } from './index.js' */ export type QueryCache = WeakMap< QueryIR, - [authored?: CompilationResult, source?: CompilationResult] + [ + authoredRoot?: CompilationResult, + published?: CompilationResult, + source?: CompilationResult, + ] > /** diff --git a/packages/db/src/query/live/ARCHITECTURE.md b/packages/db/src/query/live/ARCHITECTURE.md index 58f4864ecf..47bcfd383b 100644 --- a/packages/db/src/query/live/ARCHITECTURE.md +++ b/packages/db/src/query/live/ARCHITECTURE.md @@ -366,49 +366,54 @@ have proxy semantics. Plain record results carry route metadata under a private symbol while the compiler moves them through recursive sources. Primitives and opaque objects, -such as `Date`, use an internal envelope at those same edges. Namespacing and -join adapters unwrap the value and keep its route beside it. Every functional -callback whose source can carry route state receives a clean copy of only the -paths that contain private state; this includes recursive and union sources, -not only directly correlated child queries. The callback boundary removes all -compiler-owned fields before invoking user code. The publication boundary -applies the same copy-on-write walk while resolving facade references. Both -paths preserve property descriptors, clean nested references, cycles, -adversarial keys, and user-owned symbols. Discovery reads data descriptors -directly and never invokes an accessor merely to find private state. - -This walker also strips metadata from a correlated subquery's output before -its parent query consumes it. Clean object and array references at that internal -boundary are equality operands, not just render identities. Eagerly cloning -them can make a later `eq(projected.key, parent.key)` lose a matching row. -Relaxing cross-publication reference stability does not permit changing these -internal matches. The public-container copy matrix crosses reference-key type, -ordered and unordered subqueries, materialization form, and parent/child updates. - -Reserved public row fields have a separate callback-input law (maintainer -decisions, 2026-10-28 and 2026-10-30). Direct source rows and structured whole-row source -spreads expose genuine source `$key`, `$origin`, `$hasPendingWrites`, and -`$collectionId`, including when a spread selects conflicting reserved names. -A subquery projection that creates its own row shape, including a new -functional object or functional spread, exposes none of those reserved fields -before downstream `fn.select()`, `fn.where()`, or `fn.having()` code runs. -The October 30 decision extends the original selection-only promise to both -functional predicates. An inline include value keeps its -authored selected shape. Sanitizing only the eventual Collection publication -cannot satisfy this law, because user code may already have derived an -ordinary field from a spoofed input. - -The compiler carries a callback view beside each authored selected-row -occurrence. FROM, joined-source and union adapters transport that view. -Functional callbacks read it without rewriting the query's authored row. -Private callback state never crosses the callback or result boundary. -An inline-only QueryRef and an inline child's final authored value retain -that authored shape, including when a predicate runs without a selection. -The selected-row normalization flag describes the output metadata view and -is independent of callback-view transport. A two-slot cache retains authored -and normalized compilations separately. Each ordered top-K retains its own -window; the source loader's registered plan covers every window that shares -that source, including subsequent moves. +such as `Date`, use an internal envelope at those edges. FROM and JOIN adapters +extract the route before exposing a source value. Route context, include +routing and source metadata attribution live beside the aliases on the namespace. +Source values exposed to callbacks therefore contain no compiler-owned state. + +Callbacks and result finalization strip private keys at the known row root. +Materialization compiles a resolver for its declared include paths. It resolves +facade references and cleans nested materialized rows along those paths only. +Ordinary source payloads remain opaque, including in correlated queries and +grouped HAVING. Clean values retain their references. Copies preserve property +descriptors, prototypes and user symbols; discovering private state does not +invoke accessors. Generic adapter callers without a compiled resolver retain +the descriptor-preserving public-container walker. + +Internal clean references can be equality operands, not just render identities. +A cleanup copy must not change a later `eq(projected.key, parent.key)` match. +The public-container copy matrix checks reference keys through ordered and +unordered subqueries, materialization forms, and parent/child updates. +The includes-work owner checks zero metadata descriptor scans inside source +payload containers through fourteen direct and correlated receiving paths. +This work law does not bound hashing, user code or elapsed latency. + +Reserved public row fields obey the boundary-only metadata rule (maintainer +decision, 2026-11-05, superseding the October 28/30 callback-normalization +rules). Actual Collection row roots expose genuine computed `$key`, `$origin`, +`$hasPendingWrites` and `$collectionId`. Structured whole-source selections and +spreads retain source attribution; functional selections retain it only when +returning the source row directly. Other published projections receive their +output Collection's metadata. An authored reserved field cannot override that +attribution. + +Intermediate QueryRef projections, functional callback inputs, inline includes +and Effect outputs keep their authored values. For example, an intermediate +`{ id: 1, $collectionId: 'application' }` exposes `'application'` to downstream +`fn.select`, `fn.where` and `fn.having`, and to inline consumers. Direct source +rows already carry genuine metadata; copying them copies those fields, while +an explicit override remains application data until Collection publication. +Reading a projected field is not evidence of Collection attribution. + +The compiler transports one authored value per occurrence and a separate record +of at most four source metadata facts. The record permits genuine publication +attribution after an authored spread override, without keeping a second full +callback view. Cache slots distinguish authored roots, actual Collection publication, and +intermediate sources. An authored root owns its movable top-K independently of +a consumer of the same QueryIR. Grouped intermediate results inherit a missing +generated `$key`; an explicitly authored field still wins until publication. Each ordered top-K retains its own window; the source +loader's registered plan covers every window sharing that source, including +subsequent moves. Ordered plan aggregation also retains every joined source whose pending demand gates a retained plan. An outer ordered QueryRef without a join cannot erase diff --git a/packages/db/src/query/live/bucket-facade-adapter.ts b/packages/db/src/query/live/bucket-facade-adapter.ts index 24720ed922..c92ff915a0 100644 --- a/packages/db/src/query/live/bucket-facade-adapter.ts +++ b/packages/db/src/query/live/bucket-facade-adapter.ts @@ -15,6 +15,7 @@ import type { BucketFacadeCompilation, BucketFacadeRef, BucketRow, + ValueResolver, } from './materialized-pipeline.js' const PRIVATE_RESULT_KEYS = new Set([INCLUDES_ROUTING]) @@ -79,6 +80,7 @@ export class BucketFacadeAdapter { private readonly parentId: string, private readonly compilations: Array, onMessages: (count: number) => void, + private readonly resolveRoot?: ValueResolver, ) { for (const compilation of compilations) { compilation.rows.pipe( @@ -134,7 +136,7 @@ export class BucketFacadeAdapter { if (!sync || changes.size === 0) continue for (const change of changes.values()) { - this.prepareChange(entry, change) + this.prepareChange(entry, change, compilation.resolve) } this.beginWrite( entry, @@ -146,7 +148,13 @@ export class BucketFacadeAdapter { ), ) for (const change of changes.values()) { - this.applyChange(entry, sync, change, compilation.hasOrderBy) + this.applyChange( + entry, + sync, + change, + compilation.hasOrderBy, + compilation.resolve, + ) } sync.commit() } @@ -215,7 +223,7 @@ export class BucketFacadeAdapter { } resolve(value: T): T { - return this.resolveValue(value) as T + return this.resolveValue(value, this.resolveRoot) as T } cleanup(): void { @@ -482,6 +490,7 @@ export class BucketFacadeAdapter { sync: FacadeSync, change: PendingRow, hasOrderBy: boolean, + resolve?: ValueResolver, ): void { const [publicKey, value, nextOrder] = change.value const key = publicKey as string | number @@ -494,20 +503,25 @@ export class BucketFacadeAdapter { // A key that nets to no change while absent gets no write. if (change.inserts === change.deletes && !present) return const orderChanged = present && entry.order.get(accepted) !== nextOrder - const row = { ...this.resolve(value), $key: key } + const row = { ...(this.resolveValue(value, resolve) as object), $key: key } if (nextOrder !== undefined) entry.order.set(row, nextOrder) sync.write({ type: present ? `update` : `insert`, value: row }) if (hasOrderBy && orderChanged) sync.collection._markLayoutChange() } /** Resolve and validate every public key before opening a sync transaction. */ - private prepareChange(entry: FacadeEntry, change: PendingRow): void { + private prepareChange( + entry: FacadeEntry, + change: PendingRow, + resolve?: ValueResolver, + ): void { const [publicKey, value] = change.value - this.resolve(value) + this.resolveValue(value, resolve) entry.collection.getKeyFromItem({ $key: publicKey }) } - private resolveValue(value: unknown): unknown { + private resolveValue(value: unknown, resolve?: ValueResolver): unknown { + if (resolve) return resolve(value, (leaf) => this.resolveValue(leaf)) if (value === null || typeof value !== `object`) return value const cached = this.resolvedValues.get(value) if (cached !== undefined) return cached diff --git a/packages/db/src/query/live/collection-config-builder.ts b/packages/db/src/query/live/collection-config-builder.ts index fd040af61f..6e940c21ea 100644 --- a/packages/db/src/query/live/collection-config-builder.ts +++ b/packages/db/src/query/live/collection-config-builder.ts @@ -34,7 +34,10 @@ import { import type { LiveQueryInternalUtils } from './internal.js' import type { IncludesRuntime } from './includes-runtime.js' import type { BucketFacadeAdapter } from './bucket-facade-adapter.js' -import type { materializeCompilation } from './materialized-pipeline.js' +import type { + ValueResolver, + materializeCompilation, +} from './materialized-pipeline.js' import type { WindowOptions } from '../compiler/index.js' import type { SchedulerContextId } from '../../scheduler.js' import type { CollectionSubscription } from '../../collection/subscription.js' @@ -218,6 +221,7 @@ export class CollectionConfigBuilder< private pipelineCache: ResultStream | undefined public sourceWhereClausesCache: Map> | undefined + private valueResolverCache: ValueResolver | undefined private includesRuntimeCache: IncludesRuntime | undefined private bucketFacadesCache: ReturnType[`facades`] | undefined @@ -1068,6 +1072,7 @@ export class CollectionConfigBuilder< this.inputsCache = undefined this.pipelineCache = undefined this.sourceWhereClausesCache = undefined + this.valueResolverCache = undefined this.bucketFacadesCache = undefined this.includesRuntimeCache = undefined @@ -1131,6 +1136,8 @@ export class CollectionConfigBuilder< : { pipeline: compilation.pipeline, facades: undefined } this.pipelineCache = materialized.pipeline this.sourceWhereClausesCache = compilation.sourceWhereClauses + this.valueResolverCache = + `resolve` in materialized ? materialized.resolve : undefined this.bucketFacadesCache = materialized.facades this.includesRuntimeCache = includesRuntime @@ -1191,6 +1198,7 @@ export class CollectionConfigBuilder< (count) => { syncState.messagesCount += count }, + this.valueResolverCache, ) : undefined if (bucketFacades) { diff --git a/packages/db/src/query/live/materialized-pipeline.ts b/packages/db/src/query/live/materialized-pipeline.ts index c9d3345d44..449fe04393 100644 --- a/packages/db/src/query/live/materialized-pipeline.ts +++ b/packages/db/src/query/live/materialized-pipeline.ts @@ -7,6 +7,7 @@ import { reduce, serializeValue, } from '@tanstack/db-ivm' +import { stripInternalCallbackMetadata } from '../compiler/route-metadata.js' import { codedMessage, devBuild } from '../../error-message.js' import { canonicalizeByPublicKey, @@ -38,11 +39,18 @@ export type BucketRow = readonly [ order: string | undefined, ] +/** Resolves only compiler-authored include paths; source payloads are opaque. */ +export type ValueResolver = ( + value: unknown, + resolveFacade: (value: unknown) => unknown, +) => unknown + export type BucketFacadeCompilation = { edgeId: string rows: IStreamBuilder<[string, BucketRow]> activeBuckets: IStreamBuilder<[string, true]> hasOrderBy: boolean + resolve?: ValueResolver } export const BUCKET_FACADE_REF = Symbol(`bucketFacadeRef`) @@ -57,6 +65,7 @@ export type BucketFacadeRef = { export type MaterializedCompilation = { pipeline: ResultStream facades: Array + resolve: ValueResolver } export type MaterializedRootCompilation = { @@ -66,6 +75,7 @@ export type MaterializedRootCompilation = { * then carry no facade references or private route state to resolve. */ facades: Array | undefined + resolve?: ValueResolver } type BuiltRelations = WeakMap< @@ -147,6 +157,7 @@ function materializeRelation( rows: activeBucketRows, activeBuckets, hasOrderBy: include.hasOrderBy, + resolve: child.resolve, }) pipeline = attachCollectionInclude( pipeline, @@ -166,7 +177,11 @@ function materializeRelation( } } - const result = { pipeline, facades } + const result = { + pipeline, + facades, + resolve: compileValueResolver(compilation.includes ?? []), + } built.set(compilation, { ...built.get(compilation), [scope]: result }) return result } @@ -421,3 +436,66 @@ function setNestedValue( target[path[path.length - 1]!] = value return root } + +// Materialization introduces references only at statically known include paths. +// Walking an application document to rediscover those paths adds work unrelated +// to the query. Build one resolver per relation and touch those paths only. +function compileValueResolver( + includes: ReadonlyArray, + scalarField?: string, +): ValueResolver { + const fields = includes.flatMap((include) => { + if (scalarField !== undefined && include.resultPath[0] !== scalarField) + return [] + const path = + scalarField === undefined + ? include.resultPath + : include.resultPath.slice(1) + const child = compileValueResolver( + include.childCompilationResult.includes ?? [], + include.scalarField, + ) + return [{ path, include, child }] + }) + return (value, resolveFacade) => { + let result = stripInternalCallbackMetadata(value, false) + for (const { path, include, child } of fields) { + result = replaceIncludePath(result, path, 0, (included) => { + if (include.materialization === `collection`) + return resolveFacade(included) + if (include.materialization === `concat`) return included + if (include.materialization === `singleton`) + return child(included, resolveFacade) + if (!Array.isArray(included)) return included + const values = included.map((row) => child(row, resolveFacade)) + return values.some((row, index) => row !== included[index]) + ? values + : included + }) + } + return result + } +} + +function replaceIncludePath( + value: unknown, + path: ReadonlyArray, + index: number, + replace: (value: unknown) => unknown, +): unknown { + if (index === path.length) return replace(value) + if (value === null || typeof value !== `object`) return value + const key = path[index]! + const descriptor = Object.getOwnPropertyDescriptor(value, key) + if (!descriptor || !(`value` in descriptor)) return value + const next = replaceIncludePath(descriptor.value, path, index + 1, replace) + if (Object.is(next, descriptor.value)) return value + const descriptors = Object.getOwnPropertyDescriptors(value) + descriptors[key] = { ...descriptor, value: next } + const copy = Array.isArray(value) + ? [] + : Object.create(Object.getPrototypeOf(value)) + if (Array.isArray(value)) + Object.setPrototypeOf(copy, Object.getPrototypeOf(value)) + return Object.defineProperties(copy, descriptors) +} diff --git a/packages/db/src/virtual-props.ts b/packages/db/src/virtual-props.ts index a566439add..36ad74c530 100644 --- a/packages/db/src/virtual-props.ts +++ b/packages/db/src/virtual-props.ts @@ -5,7 +5,8 @@ * (sync status, source, selection state) without being part of the persisted data model. * * Virtual properties are prefixed with `$` to distinguish them from user data fields. - * User schemas should not include `$`-prefixed fields as they are reserved. + * The four virtual field names are reserved at published Collection row roots. + * Intermediate projections, callback inputs and inline values keep authored fields. */ /** diff --git a/packages/db/tests/oracle-config.ts b/packages/db/tests/oracle-config.ts index 635bfa2149..d70bef8a5e 100644 --- a/packages/db/tests/oracle-config.ts +++ b/packages/db/tests/oracle-config.ts @@ -398,6 +398,7 @@ const staticOracleProperties = [ `includes-query-shape.correlation`, `includes-query-shape.multiplicity`, `includes-query-shape.nullable`, + `includes-work.projection-payload`, `includes-work.correlated-links`, `includes-work.join-free`, `includes-work.join-targets`, diff --git a/packages/db/tests/query/includes-context-transport-oracle.test.ts b/packages/db/tests/query/includes-context-transport-oracle.test.ts index 7e3f7f6424..ab109e27c2 100644 --- a/packages/db/tests/query/includes-context-transport-oracle.test.ts +++ b/packages/db/tests/query/includes-context-transport-oracle.test.ts @@ -29,8 +29,10 @@ import { gt, lt, lte, + materialize, multiply, sum, + toArray, } from '../../src/query/index.js' import { createControlledCollection } from './includes-oracle-helpers.js' import { @@ -2671,3 +2673,305 @@ describe(`compound join parent context`, () => { } } }) + +/** + * A functional projection consumes inherited inline includes before returning + * its source row. That input materialization cannot end the surrounding parent + * route. ARCHITECTURE.md's route-context transport and nested-propagation laws + * require the selected child and grandchildren to reach the same parent bucket. + * Callback inputs must still contain no compiler-owned symbols. + * + * This finite grammar crosses FROM/JOIN QueryRef placement, expression/direct + * functional return, and toArray/materialize input. Every case reads all three + * outer forms. Two disjoint buckets and a shared route distinguish lost context + * from context reused for every parent. Parent moves, child moves, grandchild + * updates, empty values and reactivation distinguish an initial-only repair. + * A compiled Collection-valued callback input remains outside this legal + * grammar. The checks cover synchronous eager-source writes, not async demand, + * callback publication counts, ordering guarantees or metadata attribution. + */ +const materializedInputGrammar = { + boundaries: [`from-query-ref`, `joined-query-ref`] as const, + selections: [`expression`, `functional`] as const, + inputs: [`array`, `materialized`] as const, + checkpoints: [ + `initial`, + `parent-move`, + `child-move`, + `grandchild-update`, + `grandchild-empty`, + `grandchild-reactivation`, + ] as const, +} + +type MaterializedInputCell = { + boundary: (typeof materializedInputGrammar.boundaries)[number] + selection: (typeof materializedInputGrammar.selections)[number] + input: (typeof materializedInputGrammar.inputs)[number] +} +type MaterializedInputChild = { id: number; parentGroup: number } +type MaterializedInputGrandchild = { + id: number + childId: number + label: string +} +type MaterializedInputRow = MaterializedInputChild & { + grandchildren: Array<{ id: number; label: string }> +} + +const materializedInputCells = materializedInputGrammar.boundaries.flatMap( + (boundary) => + materializedInputGrammar.selections.flatMap((selection) => + materializedInputGrammar.inputs.map((input) => ({ + boundary, + selection, + input, + })), + ), +) + +// The model enumerates the current source rows from independently retained +// facts. A child's membership depends only on its parent's group. Its nested +// array contains exactly the grandchildren naming that child, even when empty. +function expectedMaterializedInputRows( + parent: { group: number }, + children: ReadonlyArray, + grandchildren: ReadonlyArray, +): Array { + return children + .filter((child) => child.parentGroup === parent.group) + .map((child) => ({ + ...child, + grandchildren: grandchildren + .filter((grandchild) => grandchild.childId === child.id) + .map(({ id, label }) => ({ id, label })) + .sort((left, right) => left.id - right.id), + })) + .sort((left, right) => left.id - right.id) +} + +function checkMaterializedInputRows( + actual: unknown, + expected: ReadonlyArray, + checkpoint: string, +): void { + expect(actual, checkpoint).toEqual(expected) +} + +async function runMaterializedInputCell({ + boundary, + selection, + input, +}: MaterializedInputCell): Promise { + const name = `${boundary}/${selection}/${input}` + const modelParents = [ + { id: 1, group: 1 }, + { id: 2, group: 2 }, + { id: 3, group: 1 }, + ] + const modelChildren: Array = [ + { id: 10, parentGroup: 1 }, + { id: 11, parentGroup: 1 }, + { id: 20, parentGroup: 2 }, + { id: 30, parentGroup: 3 }, + ] + const modelGrandchildren: Array = [ + { id: 100, childId: 10, label: `ten` }, + { id: 110, childId: 11, label: `eleven` }, + { id: 200, childId: 20, label: `twenty` }, + { id: 300, childId: 30, label: `unrouted` }, + ] + const states = materializedInputGrammar.checkpoints.flatMap((checkpoint) => + materializationForms.flatMap((form) => + modelParents.map(({ id }) => `${checkpoint}/${form}/parent-${id}`), + ), + ) + if (selection === `functional`) + states.push(`callback-group-1`, `callback-group-2`) + const reach = createOracleReach(`materialized-input/${name}`, states) + reach.beginHistory() + const parents = createGrammarCollection( + `materialized-input-${name}-parents`, + modelParents, + ) + const children = createGrammarCollection( + `materialized-input-${name}-children`, + modelChildren, + ) + const grandchildren = createGrammarCollection( + `materialized-input-${name}-grandchildren`, + modelGrandchildren, + ) + const callbackInputs: Array = [] + const recordInput = (row: T): T => { + callbackInputs.push(row) + if (row.parentGroup === 1 || row.parentGroup === 2) + reach.reach(`callback-group-${row.parentGroup}`) + return row + } + const live = createLiveQueryCollection((q) => + q.from({ parent: parents.collection }).select(({ parent }) => { + const projected = q + .from({ child: children.collection }) + .select(({ child }) => { + const nested = q + .from({ grandchild: grandchildren.collection }) + .where(({ grandchild }) => eq(grandchild.childId, child.id)) + .select(({ grandchild }) => ({ + id: grandchild.id, + label: grandchild.label, + })) + return { + id: child.id, + parentGroup: child.parentGroup, + grandchildren: + input === `array` ? toArray(nested) : materialize(nested), + } + }) + const correlated = + boundary === `from-query-ref` + ? q + .from({ result: projected }) + .where(({ result }) => eq(result.parentGroup, parent.group)) + : q + .from({ anchor: children.collection }) + .innerJoin({ result: projected }, ({ anchor, result }) => + eq(anchor.id, result.id), + ) + .where(({ anchor }) => eq(anchor.parentGroup, parent.group)) + const selected = + selection === `functional` + ? correlated.fn.select((row) => { + callbackInputs.push(row) + return recordInput(row.result) + }) + : correlated.select(({ result }) => result) + return { id: parent.id, ...includeInEveryForm(selected) } + }), + ) + const failures: Array = [] + // Record every route/form checkpoint before reporting failures. A missing + // first bucket cannot prevent the disjoint and shared routes from being read. + const compare = ( + checkpoint: (typeof materializedInputGrammar.checkpoints)[number], + ) => { + for (const parent of modelParents) { + const forms = live.get(parent.id) + const expected = expectedMaterializedInputRows( + parent, + modelChildren, + modelGrandchildren, + ) + for (const form of materializationForms) { + const state = `${checkpoint}/${form}/parent-${parent.id}` + reach.reach(state) + try { + const actual = forms + ? [...forms[form].values()] + .map(({ id, parentGroup, grandchildren: nested }) => ({ + id, + parentGroup, + grandchildren: Array.isArray(nested) + ? [...nested].sort((left, right) => left.id - right.id) + : nested, + })) + .sort((left, right) => left.id - right.id) + : undefined + checkMaterializedInputRows(actual, expected, state) + } catch (cause) { + failures.push(new Error(`${name}/${state}`, { cause })) + } + } + } + for (const row of callbackInputs) { + try { + expectNoPrivateSymbolsDeep(row, new Set()) + } catch (cause) { + failures.push(new Error(`${name}/${checkpoint}/callback`, { cause })) + } + } + } + await runWithCleanup(live, [parents, children, grandchildren], async () => { + await live.preload() + compare(`initial`) + modelParents[0] = { id: 1, group: 2 } + parents.write(`update`, modelParents[0]) + compare(`parent-move`) + modelChildren[0] = { id: 10, parentGroup: 2 } + children.write(`update`, modelChildren[0]) + compare(`child-move`) + modelGrandchildren[0] = { id: 100, childId: 10, label: `updated` } + grandchildren.write(`update`, modelGrandchildren[0]) + compare(`grandchild-update`) + const removed = modelGrandchildren.splice(1, 1)[0]! + grandchildren.write(`delete`, removed) + compare(`grandchild-empty`) + const inserted = { id: 111, childId: 11, label: `readmitted` } + modelGrandchildren.push(inserted) + grandchildren.write(`insert`, inserted) + compare(`grandchild-reactivation`) + reach.assertReached() + if (process.env.TANSTACK_DB_ORACLE_STATISTICS === `1`) + console.log( + `materialized-input reach ${name}: ${JSON.stringify([...reach.counts()])}`, + ) + if (failures.length) + throw new AggregateError( + failures, + `Materialized input lost parent routes`, + ) + }) +} + +declareOracle({ + check: [runMaterializedInputCell, checkMaterializedInputRows], + model: [expectedMaterializedInputRows], + grammar: [materializedInputCells], +}) + +describe(`parent route after inherited inline input materialization`, () => { + test(`expands every declared input boundary without duplicates`, () => { + const expected = + materializedInputGrammar.boundaries.length * + materializedInputGrammar.selections.length * + materializedInputGrammar.inputs.length + expect(materializedInputCells).toHaveLength(expected) + expect( + new Set( + materializedInputCells.map( + ({ boundary, selection, input }) => + `${boundary}/${selection}/${input}`, + ), + ), + ).toHaveLength(expected) + }) + + test(`rejects lost children and cross-parent reuse at the public checkpoint`, () => { + const children = [ + { id: 10, parentGroup: 1 }, + { id: 20, parentGroup: 2 }, + ] + const grandchildren = [{ id: 100, childId: 10, label: `ten` }] + const expected = expectedMaterializedInputRows( + { group: 1 }, + children, + grandchildren, + ) + const wrongRoute = expectedMaterializedInputRows( + { group: 2 }, + children, + grandchildren, + ) + checkMaterializedInputRows(expected, expected, `allowed`) + for (const wrong of [[], wrongRoute]) { + expect(() => + checkMaterializedInputRows(wrong, expected, `calibration`), + ).toThrow() + } + }) + + for (const cell of materializedInputCells) { + test(`${cell.boundary} / ${cell.selection} / ${cell.input}`, () => + runMaterializedInputCell(cell)) + } +}) diff --git a/packages/db/tests/query/includes-work-counter-oracle.test.ts b/packages/db/tests/query/includes-work-counter-oracle.test.ts index 0219ff873c..d353719d1f 100644 --- a/packages/db/tests/query/includes-work-counter-oracle.test.ts +++ b/packages/db/tests/query/includes-work-counter-oracle.test.ts @@ -1,18 +1,30 @@ import { fc, test as fcTest } from '@fast-check/vitest' -import { beforeAll, describe, expect, it } from 'vitest' -import { oraclePropertyOptions, oracleRuns } from '../oracle-config.js' +import { beforeAll, describe, expect, it, vi } from 'vitest' +import { + oraclePropertyOptions, + oracleReplayTest, + oracleRuns, +} from '../oracle-config.js' +import { createOracleReach } from '../oracle-reach.js' import { declareOracle } from '../oracle-declaration.js' import { createCollection } from '../../src/collection/index.js' import { BTreeIndex } from '../../src/indexes/btree-index.js' import { + Query, createLiveQueryCollection, eq, + groupKeys, inArray, include, materialize, toArray, } from '../../src/query/index.js' import { evaluateReferenceExpression } from '../reference-expression-oracle.js' +import { createControlledCollection } from './includes-oracle-helpers.js' +import { + cleanupAfterOracle, + noPrimaryFailure, +} from './includes-functional-projection-support.js' import { countSourceWork, createSourceCollection, @@ -24,6 +36,7 @@ import { } from './includes-work-counter-support.js' import type { Collection } from '../../src/collection/index.js' import type { LoadSubsetOptions } from '../../src/types.js' +import type { Context, QueryBuilder } from '../../src/query/index.js' import type { SourceWork, WorkObservation, @@ -1400,3 +1413,333 @@ describe(`includes work under an ordered parent window`, () => { ) } }) + +/** + * # Can an ordinary projection carry a large source payload without scanning it? + * + * Maintainer request (2026-11-05, issue 2355): restore nested-row performance + * and the boundary-only metadata decision: ordinary source payload containers + * stay opaque to compiler metadata discovery, including correlated queries. + * Result finalization and callback sanitation therefore owe zero descriptor + * scans of those containers. This is a work budget, not a latency guarantee. + * The neighboring route-context and virtual-row-input owners retain the laws + * for private routes, authored values and published metadata attribution. + * + * The grammar crosses source, join, QueryRef and union boundaries with explicit, + * implicit and functional selections, and zero through forty document blocks. + * Every history checks initial hydration and two full synced replacements. A + * model reconstructs the expected document from block count and tick, without + * retaining the document passed to production. A shared checker compares that + * value and the separate promise that the source document keeps its identity. + * Descriptor observations count only source payloads, excluding authored output + * wrappers. They do not measure hashing, user callbacks or adapter work. + */ +const payloadBoundaries = [ + `source`, + `join`, + `query-ref`, + `union`, + `implicit`, + `functional`, + `predicate`, + `query-ref-where`, + `query-ref-having`, + `correlated-inline`, + `correlated-callback`, + `correlated-implicit`, + `correlated-collection`, + `correlated-group`, +] as const + +declareOracle({ + check: [expectPayloadWork, expectPayloadValue], + model: [expectedPayloadDocument], + grammar: [payloadBoundaries], +}) + +// The source payload must still contain its authored fields at publication. +// Reconstructing them from the history inputs prevents an in-place production +// mutation from changing the expected value along with the observation. +function expectedPayloadDocument(blockCount: number, tick: number) { + return { + blocks: Array.from({ length: blockCount }, (_, id) => ({ + id, + text: `block ${id} at ${tick}`, + attrs: { indent: id % 3, tick }, + })), + tick, + } +} + +function expectPayloadValue( + observed: ReadonlyArray<{ id: number; document: unknown }>, + sourceDocument: unknown, + blockCount: number, + tick: number, +): void { + expect(observed.map(({ id, document }) => ({ id, document }))).toEqual([ + { id: 1, document: expectedPayloadDocument(blockCount, tick) }, + ]) + expect(observed[0]!.document).toBe(sourceDocument) +} + +async function expectPayloadWork(blockCount: number): Promise { + const reach = createOracleReach(`projection-payload`, payloadBoundaries) + const failures: Array = [] + for (const boundary of payloadBoundaries) { + reach.beginHistory() + const payloads = new WeakSet() + const makeDocument = (tick: number) => { + const blocks = Array.from({ length: blockCount }, (_, id) => { + const attrs = { indent: id % 3, tick } + const block = { id, text: `block ${id} at ${tick}`, attrs } + payloads.add(attrs) + payloads.add(block) + return block + }) + const document = { blocks, tick } + payloads.add(blocks) + payloads.add(document) + return document + } + let document = makeDocument(0) + const source = createControlledCollection(`payload-source`, [ + { id: 1, document }, + ]) + const joined = createControlledCollection(`payload-peer`, [{ id: 1 }]) + const live = createLiveQueryCollection((q) => { + const rows = q.from({ row: source.collection }) + const childValue = ( + query: QueryBuilder, + ) => + boundary === `correlated-collection` ? include(query) : toArray(query) + switch (boundary) { + case `source`: + return rows.select(({ row }) => ({ + id: row.id, + document: row.document, + })) + case `join`: + return rows + .join({ peer: joined.collection }, ({ row, peer }) => + eq(row.id, peer.id), + ) + .select(({ row }) => ({ id: row.id, document: row.document })) + case `query-ref`: + return q + .from({ + projected: rows.select(({ row }) => ({ + id: row.id, + document: row.document, + })), + }) + .select(({ projected }) => ({ + id: projected.id, + document: projected.document, + })) + case `union`: + return q.unionAll( + rows.select(({ row }) => ({ id: row.id, document: row.document })), + q + .from({ other: source.collection }) + .where(({ other }) => eq(other.id, 0)) + .select(({ other }) => ({ + id: other.id, + document: other.document, + })), + ) + case `implicit`: + return rows + case `functional`: + return rows.fn.select(({ row }) => ({ + id: row.id, + document: row.document, + })) + case `query-ref-where`: + case `query-ref-having`: { + const projected = rows.select(({ row }) => ({ + id: row.id, + document: row.document, + $collectionId: `application`, + })) + const outer = q.from({ item: projected }) + const filtered = + boundary === `query-ref-where` + ? outer.fn.where(({ item }) => item.id === 1) + : outer.fn.having(({ item }) => item.id === 1) + return filtered.select(({ item }) => ({ + id: item.id, + document: item.document, + })) + } + case `correlated-inline`: + case `correlated-callback`: + case `correlated-implicit`: + case `correlated-collection`: + case `correlated-group`: + return q.from({ parent: joined.collection }).select(({ parent }) => { + const children = new Query() + .from({ child: source.collection }) + .where(({ child }) => eq(child.id, parent.id)) + const selected = + boundary === `correlated-group` + ? childValue( + children + .groupBy( + groupKeys(({ child }) => [child.id, child.document]), + ) + .fn.having(() => true) + .select(({ child }) => ({ + id: child.id, + document: child.document, + })), + ) + : boundary === `correlated-implicit` + ? childValue(children) + : boundary === `correlated-callback` + ? childValue( + new Query() + .from({ + item: new Query() + .from({ raw: source.collection }) + .select(({ raw }) => ({ + id: raw.id, + document: raw.document, + $collectionId: `application`, + })), + }) + .where(({ item }) => eq(item.id, parent.id)) + .fn.select(({ item }) => ({ + id: item.id, + document: item.document, + })), + ) + : childValue( + children.select(({ child }) => ({ + id: child.id, + document: child.document, + })), + ) + return { + id: parent.id, + kids: selected, + } + }) + case `predicate`: + return rows.fn + .where(({ row }) => row.id === 1) + .fn.having(({ row }) => row.id === 1) + .select(({ row }) => ({ id: row.id, document: row.document })) + } + }) + let scans = 0 + const getDescriptor = Object.getOwnPropertyDescriptor + const singularSpy = vi + .spyOn(Object, `getOwnPropertyDescriptor`) + .mockImplementation((value, key) => { + if (typeof value === `object` && value !== null && payloads.has(value)) + scans++ + return getDescriptor(value, key) + }) + const getDescriptors = Object.getOwnPropertyDescriptors + const spy = vi + .spyOn(Object, `getOwnPropertyDescriptors`) + .mockImplementation((value) => { + if (typeof value === `object` && value !== null && payloads.has(value)) + scans++ + return getDescriptors(value) + }) + let primaryFailure: unknown = noPrimaryFailure + try { + await live.preload() + for (const tick of [0, 1, 2]) { + if (tick > 0) { + document = makeDocument(tick) + source.write(`update`, { id: 1, document }) + } + // The document has no compiler-owned state. Whole-value equality and + // reference identity remain meaningful at the public Collection cut. + const observed = ( + boundary.startsWith(`correlated`) + ? live.toArray.flatMap((row) => { + const kids = ( + row as unknown as { + kids: + | Array<{ id: number; document: unknown }> + | { toArray: Array<{ id: number; document: unknown }> } + } + ).kids + return Array.isArray(kids) ? kids : kids.toArray + }) + : live.toArray + ) as ReadonlyArray<{ id: number; document: unknown }> + if (tick === 0 && observed.length === 1) reach.reach(boundary) + expectPayloadValue(observed, document, blockCount, tick) + expect( + scans, + `${boundary}: source payload descriptor scans at tick ${tick}`, + ).toBe(0) + } + } catch (error) { + primaryFailure = error + failures.push(error) + } finally { + spy.mockRestore() + singularSpy.mockRestore() + await cleanupAfterOracle(primaryFailure, [ + () => live.cleanup(), + () => source.collection.cleanup(), + () => joined.collection.cleanup(), + ]) + } + } + reach.assertReached() + if (failures.length) + throw new AggregateError( + failures, + `payload work: ${failures.map(String).join(`; `)}`, + ) +} + +const payloadProperty = `includes-work.projection-payload` +const payloadExamples: Array<[number]> = [[0], [1], [20], [40]] + +// This wrong observation preserves source identity while corrupting content. +// The same comparison used at every public checkpoint must reject it, including +// an empty payload whose only changed field is its root tick. +it.each(payloadExamples)( + `rejects a source payload mutated in place (%i blocks)`, + (blockCount) => { + const document = expectedPayloadDocument(blockCount, 0) + document.tick = -1 + expect(() => + expectPayloadValue([{ id: 1, document }], document, blockCount, 0), + ).toThrow(/to deeply equal/) + }, +) + +for (const campaign of [ + { + name: `fixed`, + options: { + numRuns: oracleRuns(8) + payloadExamples.length, + seed: 2355, + examples: payloadExamples, + }, + }, + { + name: `random or replayed`, + options: oraclePropertyOptions(8, payloadProperty, { + examples: payloadExamples, + }), + }, +]) { + const register = + campaign.name === `fixed` + ? oracleReplayTest(fcTest) + : oracleReplayTest(fcTest, payloadProperty) + register.prop([fc.integer({ min: 0, max: 40 })], campaign.options)( + `nested source payloads need no metadata descriptor scans (${campaign.name})`, + expectPayloadWork, + ) +} diff --git a/packages/db/tests/query/public-container-copy.test.ts b/packages/db/tests/query/public-container-copy.test.ts index c4d75776e9..617f82069d 100644 --- a/packages/db/tests/query/public-container-copy.test.ts +++ b/packages/db/tests/query/public-container-copy.test.ts @@ -194,3 +194,31 @@ it(`preserves sparse arrays and locked lengths while removing private keys`, () ) expect(input[2][privateKey]).toBe(true) }) + +it(`does not read accessors when a public container needs no copy`, () => { + let reads = 0 + const input = { + get value() { + reads++ + return { nested: true } + }, + } + expect(transformPublicContainers(input, (value) => value, new Set())).toBe( + input, + ) + expect(reads).toBe(0) +}) + +it(`sanitizes private state below enumerable named array properties`, () => { + const privateKey = Symbol(`private`) + const child = { value: 1, [privateKey]: true } + const input = Object.assign([], { detail: child }) + const result = transformPublicContainers( + input, + (value) => value, + new Set([privateKey]), + ) as typeof input + expect(Array.isArray(result)).toBe(true) + expect(result.detail).toEqual({ value: 1 }) + expect(child[privateKey]).toBe(true) +}) diff --git a/packages/db/tests/query/virtual-row-fields-input-driver.ts b/packages/db/tests/query/virtual-row-fields-input-driver.ts index 6f15a64e81..bc132a51ce 100644 --- a/packages/db/tests/query/virtual-row-fields-input-driver.ts +++ b/packages/db/tests/query/virtual-row-fields-input-driver.ts @@ -128,6 +128,7 @@ export function captureMetadataInput(value: unknown): MetadataInputSnapshot { ? (value as Record) : undefined return { + symbols: Object.getOwnPropertySymbols(record ?? {}), present: record !== undefined, ordinary: Object.fromEntries( Object.getOwnPropertyNames(record ?? {}) @@ -256,8 +257,15 @@ export async function runMetadataCallbackHistory( // context. It is not an ordinary field of the source value being judged. // Capture reserved fields before removing that known context from ordinary // fields; spreading first could hide inherited or nonenumerable metadata. - if (union && enteredCallback === `having`) + if (union && enteredCallback === `having`) { + // $selected is a documented context field, but its value is public too. + // Preserve private-symbol evidence before omitting that context from the + // authored source comparison. The fixture authors no user symbols. + const selected = (row as Record).$selected + if (selected !== null && typeof selected === `object`) + observed.symbols.push(...Object.getOwnPropertySymbols(selected)) delete observed.ordinary.$selected + } captures.push({ cut, callback: enteredCallback, input: observed }) return { id, observed } } @@ -368,6 +376,10 @@ export async function runMetadataCallbackHistory( // not the receiver's production path or expected source facts. return authored } + // Only a flat union at the root Collection boundary replaces its own + // reserved fields. A nested `value` remains authored data even in a root row. + // Effects expose query values without creating a Collection row boundary. + const publishedUnion = union && receiver === `root` && !selects const observeRows = (rows: ReadonlyArray): Array => selects ? outputRows(rows) @@ -376,21 +388,20 @@ export async function runMetadataCallbackHistory( const observed = captureMetadataInput(union ? row : record.value) return { id: record.id as string | number, - observed: receiver.startsWith(`inline-child`) - ? observed - : expectedMetadataRecord( - observed.present ? observed.ordinary : undefined, - ), + observed: publishedUnion + ? expectedMetadataRecord(observed.ordinary) + : observed, } }) - const expectedOutput = (fact: MetadataSourceFact) => - selects - ? expectedMetadataInput(fact, description) - : receiver.startsWith(`inline-child`) - ? expectedMetadataInput(fact, description, true) - : expectedMetadataRecord( - expectedMetadataInput(fact, description, true).ordinary, - ) + const expectedOutput = (fact: MetadataSourceFact) => { + const input = expectedMetadataInput(fact, description) + return publishedUnion ? expectedMetadataRecord(input.ordinary) : input + } + // The fixture's predicate rejects an authored key collision. Determine + // membership from independent authored facts, not the observed callback. + const accepts = (fact: MetadataSourceFact) => + callbackKind === `select` || + expectedMetadataInput(fact, description).fields.$key?.value !== `spoof-$key` const query = receiver === `root` || receiver === `effect` ? makeQuery() @@ -525,7 +536,9 @@ export async function runMetadataCallbackHistory( : `select` const callbacksEntered = current.some((capture) => capture.callback === requiredCallback) && - (!selects || current.some((capture) => capture.callback === `select`)) + (!selects || + !facts.some(accepts) || + current.some((capture) => capture.callback === `select`)) if (!callbacksEntered) report.violations.push({ cut, @@ -546,7 +559,7 @@ export async function runMetadataCallbackHistory( expected: permitted, }) } - const expected = facts.map((fact) => ({ + const expected = facts.filter(accepts).map((fact) => ({ id: fact.row.id, observed: expectedOutput(fact), })) @@ -569,11 +582,7 @@ export async function runMetadataCallbackHistory( const permitted = allowed.flatMap((observed) => [ { id: observed.ordinary.id, - observed: selects - ? observed - : expectedMetadataRecord( - observed.present ? observed.ordinary : undefined, - ), + observed, }, ]) if (path === `joined-source`) @@ -795,7 +804,7 @@ export async function runInlineMetadataCallbackHistory( children: rowsFromSnapshots( facts .filter((fact) => path === `direct` || fact.row.id === parent.id) - .map((fact) => expectedMetadataInput(fact, description, true)), + .map((fact) => expectedMetadataInput(fact, description)), ), }), ) diff --git a/packages/db/tests/query/virtual-row-fields-input-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-input-oracle.test.ts index 06358ec70e..940bbc282a 100644 --- a/packages/db/tests/query/virtual-row-fields-input-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-input-oracle.test.ts @@ -1,5 +1,5 @@ /** - * # Reserved fields must be correct before user JavaScript consumes them. + * # Intermediate values keep authored fields until Collection publication. * * The shared input oracle states the maintainer's source/projection/inline law. * This finite receiver exhausts 1,155 root histories, 1,155 wrapped child @@ -18,7 +18,7 @@ * * Reconstruction retains every single-field collision and both populated union * branches with numeric/string keys. Removing path, shape, collision, boolean - * or checkpoint loses a distinct sanitizer shortcut; the calibrated attacks + * or checkpoint loses a distinct authored-value or boundary shortcut; the calibrated attacks * below exhibit those consequences. Legal direct source returns cannot carry * authored overrides. Compiled Collection-valued inputs are the nearby rejected * form. Recursion is bounded at two QueryRefs, one LEFT join and flat child @@ -268,11 +268,12 @@ const sourceFact: MetadataSourceFact = { test.each([ `source-spoof`, `source-stripped`, - `projection-leak`, + `projection-stripped`, `inline-stripped`, `own-undefined-lost`, `mixed-before-after`, `late-capture-rewrite`, + `compiler-symbol`, ] as const)(`rejects a hostile callback-input observation: %s`, (fault) => { const description = { shape: `structured-spread`, @@ -280,15 +281,26 @@ test.each([ authoredPending: true, } as const const projected = { ...description, shape: `functional-spread` } as const - const use = fault === `projection-leak` ? projected : description - const inline = fault === `inline-stripped` - const expected = expectedMetadataInput(sourceFact, use, inline) + const direct = { + ...description, + shape: `functional-direct`, + collision: `none`, + } as const + const use = + fault === `projection-stripped` + ? projected + : fault.startsWith(`source-`) || fault === `mixed-before-after` + ? direct + : description + const expected = expectedMetadataInput(sourceFact, use) const hostile = structuredClone(expected) + if (fault === `compiler-symbol`) + hostile.symbols.push(Symbol(`compiler-state`)) if (fault === `source-spoof`) hostile.fields.$collectionId!.value = `spoof` if (fault === `source-stripped` || fault === `inline-stripped`) hostile.fields.$key = { present: false, own: false, value: undefined } - if (fault === `projection-leak`) - hostile.fields.$key = { present: true, own: true, value: `spoof` } + if (fault === `projection-stripped`) + hostile.fields.$key = { present: false, own: false, value: undefined } if (fault === `own-undefined-lost`) delete hostile.ordinary.optional const next = expectedMetadataInput( { @@ -297,7 +309,6 @@ test.each([ pending: true, }, use, - inline, ) if (fault === `mixed-before-after`) hostile.fields = next.fields if (fault === `late-capture-rewrite`) hostile.ordinary.label = `later` @@ -310,7 +321,7 @@ test.each([ `omitted-peer`, `duplicate-peer`, `wrong-key-kind`, - `publication-only-sanitizer`, + `intermediate-sanitizer`, `missing-derived-field`, ] as const)(`rejects a hostile derived ordinary output: %s`, (fault) => { const description = { @@ -329,11 +340,11 @@ test.each([ if (fault === `omitted-peer`) hostile.pop() if (fault === `duplicate-peer`) hostile.push(structuredClone(hostile[1]!)) if (fault === `wrong-key-kind`) hostile[1]!.id = 1 - if (fault === `publication-only-sanitizer`) + if (fault === `intermediate-sanitizer`) hostile[0]!.observed.fields.$collectionId = { - present: true, - own: true, - value: `spoof`, + present: false, + own: false, + value: undefined, } if (fault === `missing-derived-field`) Reflect.deleteProperty(hostile[0]!, `observed`) @@ -401,7 +412,7 @@ test.each([`selected-virtual`, `own-undefined`] as const)( collision: `$collectionId`, authoredPending: false, } as const - const selected = expectedMetadataInput(sourceFact, description, true) + const selected = expectedMetadataInput(sourceFact, description) const child: Record = { ...selected.ordinary, ...Object.fromEntries( @@ -440,15 +451,11 @@ test.each([`selected-virtual`, `own-undefined`] as const)( test.each([`unexpected`, `$collectionId`] as const)( `rejects an extra own field on an inline array: %s`, (field) => { - const child = expectedMetadataInput( - sourceFact, - { - shape: `functional-projection`, - collision: `none`, - authoredPending: false, - }, - true, - ).ordinary + const child = expectedMetadataInput(sourceFact, { + shape: `functional-projection`, + collision: `none`, + authoredPending: false, + }).ordinary const authored = { id: `parent`, children: [child] } const expected = expectedMetadataRecord(authored) const value = structuredClone(authored) diff --git a/packages/db/tests/query/virtual-row-fields-input-oracle.ts b/packages/db/tests/query/virtual-row-fields-input-oracle.ts index f64b6916be..1fef7bc0c1 100644 --- a/packages/db/tests/query/virtual-row-fields-input-oracle.ts +++ b/packages/db/tests/query/virtual-row-fields-input-oracle.ts @@ -1,13 +1,13 @@ /** * # What may user JavaScript learn from a query input? * - * Authority: the maintainer's O12 decision, recorded in the RC challenge on - * 2026-10-28, extended by the maintainer on 2026-10-30 to fn.select, fn.where - * and fn.having, and ARCHITECTURE.md's functional-input boundary. Direct source - * returns and structured source spreads expose genuine source metadata. - * Own-shape projections (including functional spreads) expose no reserved - * fields before a downstream callback. Inline include values keep authored - * shape. Collection-valued compiled inputs remain inadmissible. + * Authority: the maintainer's 2026-11-05 boundary-only decision supersedes + * the October 28/30 callback-normalization rules. Reserved fields are computed + * at published Collection row roots. Intermediate projections, functional + * callback inputs and inline include values all keep their authored shape. + * Direct source rows already come from a Collection and carry genuine metadata; + * copying them copies those fields, and an explicit projection override is data. + * Collection-valued compiled inputs remain inadmissible. * * This small model uses authored source facts and syntax descriptions, not * compiler provenance or observed values. Callback input is a model observation @@ -124,6 +124,8 @@ export const metadataCompilerCacheHistories = metadataInputDescriptions.flatMap( ), ) export type MetadataInputSnapshot = { + // These fixtures author no symbols; any observed symbol is leaked state. + symbols: Array present: boolean ordinary: Record fields: Record @@ -178,22 +180,16 @@ function ordinaryProjection( export function expectedMetadataInput( fact: MetadataSourceFact, description: MetadataInputDescription, - inline = false, ): MetadataInputSnapshot { const ordinary = ordinaryProjection(fact, description.shape) - const sourceOwned = - description.shape === `structured-spread` || - description.shape === `functional-direct` - const fields = inline - ? { - ...(description.shape.endsWith(`projection`) - ? {} - : expectedSourceVirtualFields(fact)), - ...authoredMetadataCollision(description), - } - : sourceOwned - ? expectedSourceVirtualFields(fact) - : {} + // There is one authored value before publication. A spread copies source + // fields, then authored overrides win, just as they do for ordinary fields. + const fields = { + ...(description.shape.endsWith(`projection`) + ? {} + : expectedSourceVirtualFields(fact)), + ...authoredMetadataCollision(description), + } return expectedMetadataRecord({ ...ordinary, ...fields }) } // A record snapshot is also the common judgment for inline parents. It keeps @@ -202,6 +198,7 @@ export function expectedMetadataRecord( record: Record | undefined, ): MetadataInputSnapshot { return { + symbols: [], present: record !== undefined, ordinary: Object.fromEntries( Object.entries(record ?? {}).filter( diff --git a/packages/db/tests/query/virtual-row-fields-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-oracle.test.ts index 1e694938c2..18094858b2 100644 --- a/packages/db/tests/query/virtual-row-fields-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-oracle.test.ts @@ -273,6 +273,345 @@ afterAll(() => { // pending source-owned row. Use a legal local origin to challenge remote roots. const collisionCases = metadataCollisionCases +/** + * Publication distinguishes an implicit source row from an implicit joined + * namespace. The former retains its source attribution; the latter is a new + * output row, with its own key even when several children share one parent. + * The November 5 boundary-only decision and ARCHITECTURE's metadata rule also + * require a functional callback returning its actual input row to retain the + * structured spread's genuine attribution after inline input materialization. + * Authored reserved fields remain data until that Collection publication. + * + * This finite grammar crosses direct and QueryRef receivers, a one-to-many + * join, each source's held write, every reserved-name collision, and absent, + * array and singleton inline inputs. The model recomputes from authored source + * arrays. Inline projections contain only their selected ordinary fields. + * Reads and exact Collection entry keys are compared at preload, held mutation, + * settlement without confirmation, and a later remote source update. It does + * not claim framework timing, rejected writes, or arbitrary include depth. + */ +type BoundaryPublicationHistory = { + kind: `implicit-single` | `implicit-join` | `inline-return` + composition: `direct` | `query-ref` + pendingSource: `parent` | `child` + inline: `none` | `array` | `singleton` + collision: string + authoredPending: boolean +} +const boundaryPublicationHistories: Array = [ + ...([`implicit-single`, `implicit-join`] as const).flatMap((kind) => + ([`direct`, `query-ref`] as const).flatMap((composition) => + (kind === `implicit-single` + ? ([`child`] as const) + : ([`parent`, `child`] as const) + ).map((pendingSource) => ({ + kind, + composition, + pendingSource, + inline: `none` as const, + collision: `none`, + authoredPending: false, + })), + ), + ), + ...([`none`, `array`, `singleton`] as const).flatMap((inline) => + collisionCases.flatMap(({ collision, authoredPending }) => + ([`direct`, `query-ref`] as const).flatMap((composition) => + ([`parent`, `child`] as const).map((pendingSource) => ({ + kind: `inline-return` as const, + inline, + collision, + authoredPending, + composition, + pendingSource, + })), + ), + ), + ), +] +type BoundaryPublishedRow = AttributionRow & { children?: unknown } +type BoundaryJoinedRow = { + parent: AttributionRow + chosen: AttributionRow +} +type BoundaryPublicationContext = Omit & { + result: BoundaryPublishedRow | BoundaryJoinedRow +} + +// A namespace combines two source values rather than selecting either one. +// Returning an actual source input, including a spread projected upstream, +// retains that input's source owner. No selected metadata values choose it. +function expectedBoundaryPublication( + history: BoundaryPublicationHistory, + parent: AttributionRow, + children: ReadonlyArray, + pending: ReadonlySet, + parentId: string, + childId: string, + outputId: string, +): Array { + if (history.kind === `implicit-single`) + return expectedAttributedRows( + children, + `functional-direct`, + pending, + childId, + outputId, + (id) => id, + ) + if (history.kind === `implicit-join`) + return children + .filter((child) => child.parentId === parent.id) + .map((child) => ({ + ordinary: { + parent: { + ...parent, + ...expectedSourceMetadata( + parent.id, + parentId, + pending.has(parent.id), + ), + }, + chosen: { + ...child, + ...expectedSourceMetadata(child.id, childId, pending.has(child.id)), + }, + }, + metadata: expectedSourceMetadata(`result-${child.id}`, outputId, false), + })) + const selected = expectedAttributedRows( + [parent], + `functional-direct`, + pending, + parentId, + outputId, + (id) => id, + )[0]! + if (history.inline !== `none`) { + const values = children + .filter((child) => child.parentId === parent.id) + .map(({ id, label }) => ({ id, label })) + selected.ordinary = { + ...selected.ordinary, + children: history.inline === `singleton` ? values[0] : values, + } + } + return [selected] +} + +// Compare physical membership keys and every readable row field together. +// Sorting by the entry key permits unspecified delivery order, while retaining +// duplicate rows and mismatches between a public row's key and its entry key. +function checkBoundaryPublication( + actual: ReadonlyArray, + expected: ReadonlyArray, +): void { + const order = ( + a: readonly [AttributionKey, object], + b: readonly [AttributionKey, object], + ) => `${typeof a[0]}:${a[0]}`.localeCompare(`${typeof b[0]}:${b[0]}`) + expect( + actual.map(([key, row]) => [key, { ...row }] as const).sort(order), + ).toEqual( + expected + .map( + ({ ordinary, metadata }) => + [ + metadata.$key as AttributionKey, + { ...ordinary, ...metadata }, + ] as const, + ) + .sort(order), + ) +} +const boundaryPublicationCuts = [ + `initial`, + `held`, + `settled`, + `remote`, +] as const +const boundaryPublicationState = ( + history: BoundaryPublicationHistory, + cut: string, +) => + `${history.kind}/${history.inline}/${history.composition}/${history.pendingSource}/${cut}` +const boundaryPublicationReach = createOracleReach( + `implicit and materialized-input publication`, + [ + ...new Set( + boundaryPublicationHistories.flatMap((history) => + boundaryPublicationCuts.map((cut) => + boundaryPublicationState(history, cut), + ), + ), + ), + ], +) +afterAll(() => { + boundaryPublicationReach.assertReached() + if (process.env.TANSTACK_DB_ORACLE_STATISTICS === `1`) + console.info( + `boundary publication reach`, + Object.fromEntries(boundaryPublicationReach.counts()), + ) +}) +declareOracle({ + model: [expectedBoundaryPublication], + check: [checkBoundaryPublication], + grammar: [boundaryPublicationHistories], +}) +test.each(boundaryPublicationHistories)( + `publishes implicit and materialized-input metadata: %j`, + async (history) => { + boundaryPublicationReach.beginHistory() + let parent: AttributionRow = { + id: `parent`, + parentId: `root`, + label: `parent-before`, + } + let children: Array = [ + { id: `child`, parentId: `parent`, label: `before` }, + { id: `peer`, parentId: `parent`, label: `untouched` }, + ] + const parents = createCollection( + mockSyncCollectionOptions({ + id: `boundary-parent`, + getKey: (row) => row.id, + initialData: [{ ...parent }], + }), + ) + const rows = createCollection( + mockSyncCollectionOptions({ + id: `boundary-child`, + getKey: (row) => row.id, + initialData: children.map((row) => ({ ...row })), + }), + ) + rows.createIndex((row) => row.parentId, { indexType: BTreeIndex }) + const overrides: Record = {} + for (const field of virtualFieldNames) + if (history.collision === field || history.collision === `all`) + overrides[field] = + field === `$hasPendingWrites` + ? history.authoredPending + : field === `$origin` + ? `local` + : `authored` + const selected = (() => { + if (history.kind === `implicit-single`) + return new Query().from({ chosen: rows }) + if (history.kind === `implicit-join`) + return new Query() + .from({ parent: parents }) + .innerJoin({ chosen: rows }, ({ parent: p, chosen }) => + eq(p.id, chosen.parentId), + ) + const projected = new Query() + .from({ parent: parents }) + .select(({ parent: p }) => { + const child = new Query() + .from({ child: rows }) + .where(({ child: c }) => eq(c.parentId, p.id)) + .select(({ child: c }) => ({ id: c.id, label: c.label })) + return { + ...p, + ...overrides, + ...(history.inline === `none` + ? {} + : { + children: + history.inline === `singleton` + ? materialize(child.findOne()) + : toArray(child), + }), + } + }) + return new Query().from({ sub: projected }).fn.select(({ sub }) => sub) + })() + const live = createLiveQueryCollection({ + query: () => + (history.composition === `direct` + ? selected + : new Query().from({ + outer: selected, + })) as unknown as QueryBuilder, + getKey: (row) => (`chosen` in row ? `result-${row.chosen.id}` : row.id), + }) + const pending = new Set() + const failures: Array = [] + const check = (cut: (typeof boundaryPublicationCuts)[number]) => { + boundaryPublicationReach.reach(boundaryPublicationState(history, cut)) + try { + checkBoundaryPublication( + [...live.entries()], + expectedBoundaryPublication( + history, + parent, + children, + pending, + parents.id, + rows.id, + live.id, + ), + ) + } catch (error) { + failures.push( + new Error(`boundary publication ${cut}`, { cause: error }), + ) + } + } + let finishMutation = async () => {} + await checkWithCleanup(async () => { + await live.preload() + check(`initial`) + const source = history.pendingSource === `parent` ? parents : rows + const key = history.pendingSource === `parent` ? `parent` : `child` + const before = + history.pendingSource === `parent` ? { ...parent } : { ...children[0]! } + if (history.pendingSource === `parent`) + parent = { ...parent, label: `pending` } + else + children = children.map((row) => + row.id === key ? { ...row, label: `pending` } : row, + ) + pending.add(key) + const mutation = source.update(key, (row) => { + row.label = `pending` + }) + finishMutation = async () => { + source.utils.resolveSync() + finishMutation = async () => {} + await mutation.when(`settled`) + } + expect(source.get(key)!.$hasPendingWrites).toBe(true) + check(`held`) + await finishMutation() + pending.clear() + if (history.pendingSource === `parent`) parent = before + else children = children.map((row) => (row.id === key ? before : row)) + check(`settled`) + const remote = { ...before, label: `remote-next-use` } + source.utils.begin() + source.utils.write({ type: `update`, value: remote }) + source.utils.commit() + if (history.pendingSource === `parent`) parent = remote + else children = children.map((row) => (row.id === key ? remote : row)) + check(`remote`) + if (failures.length) + throw new AggregateError( + failures, + `Boundary publication comparisons failed`, + { cause: failures[0] }, + ) + }, [ + () => finishMutation(), + () => live.cleanup(), + () => rows.cleanup(), + () => parents.cleanup(), + ]) + }, +) + /** * Projection shape controls attribution, not the spelling of selected fields. * An authored new object has its own live-query metadata; a direct source or diff --git a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts index c045229eec..6ab69b6c72 100644 --- a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts @@ -4,7 +4,11 @@ * Authority: VirtualRowProps and ARCHITECTURE.md, Nested materialization. * Published Collection roots and whole source rows carry four readonly virtual * fields. Inline projected objects, nested objects, arrays and opaque values - * retain their authored shape. Nullable whole-row selections are absent or + * retain their authored shape. The maintainer’s 2026-11-05 boundary-only + * decision also preserves authored collisions in QueryRef callback inputs and + * structured refs. Empty grouping contributes no key; a nonempty grouping or + * visible aggregate contributes a missing key, including nested aggregates. + * Nullable whole-row selections are absent or * complete; facade rows always receive required metadata. WithoutVirtualProps * distributes over discriminated row unions. * @@ -55,7 +59,110 @@ const inlineShapes = [ `date`, ] as const const inlineForms = [`facade`, `toArray`, `materialize`, `findOne`] as const +// Authored fields are data before publication. A single-field collision must +// remain visible even when it does not resemble a complete metadata record. +const authoredCollisions = [ + { name: `none`, fields: `` }, + { name: `key`, fields: `, $key: 'authored-key' as const` }, + { + name: `collection`, + fields: `, $collectionId: 'authored-collection' as const`, + }, + { name: `origin`, fields: `, $origin: 'authored-origin' as const` }, + { + name: `pending`, + fields: `, $hasPendingWrites: 'authored-pending' as const`, + }, + { + name: `all`, + fields: `, $key: 'authored-key' as const, $collectionId: 'authored-collection' as const, $origin: 'authored-origin' as const, $hasPendingWrites: 'authored-pending' as const`, + }, +] as const +const authoredPaths = [ + `query-ref`, + `nested-query-ref`, + `join`, + `union`, +] as const +const authoredKinds = [`structured`, `functional`] as const +const groupedForms = [`keys-first`, `keys-last`, `aggregate`] as const +// Empty callbacks are legal no-ops. Accumulation distinguishes an empty final +// call from erasing real grouping that an earlier call established. +const groupingBoundaries = [ + { + name: `empty-callback-first`, + expressions: `.groupBy(() => [])`, + before: true, + keyed: false, + }, + { + name: `empty-callback-last`, + expressions: `.groupBy(() => [])`, + before: false, + keyed: false, + }, + { + name: `empty-wrapper-first`, + expressions: `.groupBy(groupKeys(() => []))`, + before: true, + keyed: false, + }, + { + name: `empty-wrapper-last`, + expressions: `.groupBy(groupKeys(() => []))`, + before: false, + keyed: false, + }, + { + name: `one-then-empty`, + expressions: `.groupBy(groupKeys(({ groupSource }) => groupSource.id)).groupBy(() => [])`, + before: true, + keyed: true, + }, + { + name: `empty-then-one`, + expressions: `.groupBy(() => []).groupBy(groupKeys(({ groupSource }) => groupSource.id))`, + before: true, + keyed: true, + }, + { + name: `callback-one`, + expressions: `.groupBy(groupKeys(() => [])).groupBy(({ groupSource }) => [groupSource.id])`, + before: true, + keyed: true, + }, + { + name: `explicit-context-key`, + expressions: `.groupBy(groupKeys>(({ groupSource }) => groupSource.id))`, + before: true, + keyed: true, + }, +] as const +// Seven through nine are neighboring depths around the former cutoff. Sixteen +// distinguishes supporting that one boundary from merely moving it one level. +const aggregateDepths = [0, 7, 8, 9, 10, 16] as const +const authoredStates = authoredCollisions.flatMap(({ name }) => + authoredPaths.flatMap((path) => + authoredKinds.map((kind) => `authored/${name}/${path}/${kind}`), + ), +) const states = [ + ...authoredStates, + ...authoredStates.map((state) => `structured-refs/${state}`), + ...authoredCollisions.flatMap(({ name }) => + authoredKinds.map((kind) => `selected-context/${name}/${kind}`), + ), + ...groupedForms.flatMap((form) => + authoredCollisions.map(({ name }) => `grouped/${form}/${name}`), + ), + ...groupingBoundaries.flatMap(({ name }) => + authoredCollisions.map( + (collision) => `grouping-boundary/${name}/${collision.name}`, + ), + ), + ...aggregateDepths.flatMap((depth) => + [`none`, `key`].map((collision) => `aggregate-depth/${depth}/${collision}`), + ), ...projections.flatMap((shape) => compositions.map((composition) => `root/${shape}/${composition}`), ), @@ -110,6 +217,13 @@ function composeQuery(query: string, peer: string, composition: string) { return query } +function nestedRecord(depth: number, value: string): string { + let result = `{ total: ${value} }` + for (let index = depth - 1; index >= 0; index--) + result = `{ n${index}: ${result} }` + return result +} + /** * The independent type law is textual because TypeScript checks generated * consumers. Normalize distributes only the outer record; nested values retain @@ -127,7 +241,7 @@ function consumerSource( const observed: Array = [] const addWitness = (state: string, source: string) => { if (!only || only.has(state)) { - witnesses.push(source) + witnesses.push(`// Oracle state: ${state}\n${source}`) observed.push(state) } } @@ -212,14 +326,231 @@ function consumerSource( ) } } + // Each legal syntax uses the same independent declared-shape judgment. + // Check callback inputs and inline values before checking publication's + // replacement of reserved names. Compiler acceptance is observed separately. + for (const collision of authoredCollisions) { + for (const path of authoredPaths) { + for (const kind of authoredKinds) { + const state = `authored/${collision.name}/${path}/${kind}` + const expected = `{ id: ${shape.key}; payload: Profile${shape.optional ? ` | undefined` : ``}${collision.fields.replaceAll(` as const`, ``).replaceAll(`, $`, `; $`)} }` + const base = `new Query().from({ authoredSource: rows }).${kind === `functional` ? `fn.select` : `select`}(({ authoredSource }) => ({ id: authoredSource.id, payload: authoredSource.profile${collision.fields} }))` + const query = + path === `query-ref` + ? `new Query().from({ value: ${base} })` + : path === `nested-query-ref` + ? `new Query().from({ value: new Query().from({ intermediate: ${base} }).select(({ intermediate }) => intermediate) })` + : path === `join` + ? `new Query().from({ anchor: rows }).innerJoin({ value: ${base} }, ({ anchor, value }) => eq(anchor.id, value.id))` + : `new Query().unionAll(${base})` + const callback = path === `union` ? `input` : `input.value` + const havingExpected = + path === `union` + ? `${expected} & { $selected: ${expected} }` + : expected + addWitness( + state, + `{ + const query = ${query}; + const checked = query.fn.where(input => { + type Observed = Assert, Normalize<${expected}>>>; + return true; + }).fn.having(input => { + type Observed = Assert, Normalize<${havingExpected}>>>; + return true; + }).fn.select(input => { + type Observed = Assert, Normalize<${expected}>>>; + return ${callback}; + }); + const published = createLiveQueryCollection({ query: checked }); + type PublishedObservation = Assert, Normalize>>>; + const inline = createLiveQueryCollection({ query: new Query().from({ parent: rows }).select(({ parent }) => ({ id: parent.id, children: toArray(new Query().from({ typedChild: checked }).where(({ typedChild }) => eq(typedChild.id, parent.id))) })) }); + type InlineObservation = Assert, Normalize<${expected}>>>; + }`, + ) + // A whole Ref can unwrap its original value while individual fields + // still have wrong types. Read each authored reserved field into an + // ordinary output and separately check that absent names stay absent. + const names = [...collision.fields.matchAll(/(\$\w+):/g)].map( + (match) => match[1]!, + ) + const expectedNames = names.length + ? names.map((name) => `'${name}'`).join(` | `) + : `never` + const selectedFields = names + .map((name) => `read_${name.slice(1)}: ${callback}.${name}`) + .join(`, `) + const expectedFields = collision.fields + .replaceAll(` as const`, ``) + .replaceAll(`, $`, `; read_`) + const reservedCheck = `type ReservedNames = Assert, ${expectedNames}>>;` + const selectBody = `${reservedCheck} + return { id: ${callback}.id, payload: ${callback}.payload${selectedFields ? `, ${selectedFields}` : ``} };` + const groupFields = [ + `${callback}.id`, + `${callback}.payload`, + ...names.map((name) => `${callback}.${name}`), + ].join(`, `) + addWitness( + `structured-refs/${state}`, + `{ + const query = ${query}; + const filtered = query.where(input => { + ${reservedCheck} + return eq(1, 1); + }); + const checked = filtered.select(input => { ${selectBody} }); + const havingChecked = filtered.groupBy(groupKeys(input => [${groupFields}])).having(input => { + ${reservedCheck} + return eq(1, 1); + }).select(input => { ${selectBody} }); + const published = createLiveQueryCollection({ query: checked }); + const publishedHaving = createLiveQueryCollection({ query: havingChecked }); + type Observed = Assert, Normalize>>>; + type HavingObserved = Assert, Normalize>>>; + }`, + ) + } + } + } + // $selected is the other structured ref root for an authored value. Its + // public Ref field carrier must retain each declared literal and no new names. + for (const collision of authoredCollisions) { + for (const kind of authoredKinds) { + const names = [...collision.fields.matchAll(/(\$\w+):\s*('.*?')/g)] + const expectedNames = names.length + ? names.map((match) => `'${match[1]}'`).join(` | `) + : `never` + const checks = names + .map( + (match) => + `type Read_${match[1]!.slice(1)} = Assert['value']>>;`, + ) + .join(`\n`) + const fields = names + .map((match) => `${match[1]}: prepared.${match[1]}`) + .join(`, `) + const groupFields = [ + `prepared.id`, + `prepared.payload`, + ...names.map((match) => `prepared.${match[1]}`), + ].join(`, `) + addWitness( + `selected-context/${collision.name}/${kind}`, + `{ + const authored = new Query().from({ authoredSource: rows }).${kind === `functional` ? `fn.select` : `select`}(({ authoredSource }) => ({ id: authoredSource.id, payload: authoredSource.profile${collision.fields} })); + const query = new Query().from({ prepared: authored }) + .groupBy(groupKeys(({ prepared }) => [${groupFields}])) + .select(({ prepared }) => ({ id: prepared.id, payload: prepared.payload${fields ? `, ${fields}` : ``} })) + .having(({ $selected }) => { + type ReservedNames = Assert, ${expectedNames}>>; + ${checks} + return eq(1, 1); + }); + const published = createLiveQueryCollection({ query }); + type Observed = Assert, Normalize>>>; + }`, + ) + } + } + // Grouping generates a missing key independently of Collection enrichment. + // An explicitly authored key still wins before publication. These neighbors + // prevent the intermediate-value fix from removing aggregate QueryRef keys. + for (const form of groupedForms) { + for (const collision of authoredCollisions) { + const fields = collision.fields + const selected = + form === `aggregate` + ? `total: count(groupSource.id)` + : `id: groupSource.id` + const value = form === `aggregate` ? `total: number` : `id: ${shape.key}` + const expected = `{ ${value}${fields.replaceAll(` as const`, ``).replaceAll(`, $`, `; $`)} }${collision.name === `key` || collision.name === `all` ? `` : ` & { readonly $key: string | number }`}` + const base = `new Query().from({ groupSource: rows })` + const query = + form === `keys-first` + ? `${base}.groupBy(groupKeys(({ groupSource }) => groupSource.id)).select(({ groupSource }) => ({ ${selected}${fields} }))` + : `${base}.select(({ groupSource }) => ({ ${selected}${fields} }))${form === `keys-last` ? `.groupBy(groupKeys(({ groupSource }) => groupSource.id))` : ``}` + addWitness( + `grouped/${form}/${collision.name}`, + `{ + const query = new Query().from({ grouped: ${query} }).fn.select(({ grouped }) => { + type Observed = Assert, Normalize<${expected}>>>; + return grouped; + }); + const published = createLiveQueryCollection({ query }); + type Observed = Assert, Normalize>>>; + }`, + ) + } + } + // The model uses declared key-list emptiness, not the query's inferred + // grouping marker. Every receiver applies the same declared-shape law. + for (const grouping of groupingBoundaries) { + for (const collision of authoredCollisions) { + const base = `new Query().from({ groupSource: rows })` + const selection = `.select(({ groupSource }) => ({ id: groupSource.id${collision.fields} }))` + const query = grouping.before + ? `${base}${grouping.expressions}${selection}` + : `${base}${selection}${grouping.expressions}` + const declared = `{ id: ${shape.key}${collision.fields.replaceAll(` as const`, ``).replaceAll(`, $`, `; $`)} }` + const expected = `${declared}${grouping.keyed && collision.name !== `key` && collision.name !== `all` ? ` & { readonly $key: string | number }` : ``}` + addWitness( + `grouping-boundary/${grouping.name}/${collision.name}`, + `{ + const inner = ${query}; + const checked = new Query().from({ grouped: inner }).fn.select(({ grouped }) => { + type Observed = Assert, Normalize<${expected}>>>; + return grouped; + }); + const published = createLiveQueryCollection({ query: checked }); + type PublishedObservation = Assert, Normalize>>>; + const inline = createLiveQueryCollection({ query: new Query().from({ parent: rows }).select(({ parent }) => ({ id: parent.id, children: toArray(new Query().from({ typedChild: inner }).where(({ typedChild }) => eq(typedChild.id, parent.id))) })) }); + type InlineObservation = Assert, Normalize<${expected}>>>; + }`, + ) + } + } + // A count directly present under ordinary records is still an aggregate of + // this selection. Query helpers and wrapped expressions remain other laws. + for (const depth of aggregateDepths) { + for (const collision of authoredCollisions.filter( + ({ name }) => name === `none` || name === `key`, + )) { + const selection = nestedRecord(depth, `count(aggregateSource.id)`) + const declared = nestedRecord(depth, `number`) + const totalPath = [ + ...Array.from({ length: depth }, (_, index) => `n${index}`), + `total`, + ].join(`.`) + const expected = + collision.name === `key` + ? `${declared} & { $key: 'authored-key' }` + : `${declared} & { readonly $key: string | number }` + addWitness( + `aggregate-depth/${depth}/${collision.name}`, + `{ + const inner = new Query().from({ aggregateSource: rows }).select(({ aggregateSource }) => ({ ...${selection}${collision.fields} })); + const checked = new Query().from({ grouped: inner }).fn.select(({ grouped }) => { + type Observed = Assert, Normalize<${expected}>>>; + return grouped; + }); + const published = createLiveQueryCollection({ query: checked }); + type PublishedObservation = Assert, Normalize>>>; + const numericParents = new Query().from({ numericParent: rows }).select(() => ({ id: 1 })); + const inline = createLiveQueryCollection({ query: new Query().from({ parent: numericParents }).select(({ parent }) => ({ id: parent.id, children: toArray(new Query().from({ typedChild: inner }).where(({ typedChild }) => eq(typedChild.${totalPath}, parent.id))) })) }); + type InlineObservation = Assert, Normalize<${expected}>>>; + }`, + ) + } + } return { source: ` - import { BTreeIndex, Query, createCollection, createLiveQueryCollection, eq, include, materialize, toArray } from '@tanstack/db'; - import type { WithoutVirtualProps } from '@tanstack/db'; + import { BTreeIndex, Query, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } from '@tanstack/db'; + import type { ContextFromSource, Ref as PublicRef, WithoutVirtualProps } from '@tanstack/db'; type Equal = (() => T extends A ? 1 : 2) extends (() => T extends B ? 1 : 2) ? true : false; type Assert = T; type Normalize = T extends unknown ? { [K in keyof T]: T[K] } : never; - type Published = T extends unknown ? T & { readonly $key: string | number; readonly $collectionId: string; readonly $origin: 'local' | 'remote'; readonly $hasPendingWrites: boolean } : never; + type Published = T extends unknown ? Omit & { readonly $key: string | number; readonly $collectionId: string; readonly $origin: 'local' | 'remote'; readonly $hasPendingWrites: boolean } : never; type Missing = T extends unknown ? { [K in keyof T]?: undefined } : never; type IsAny = 0 extends (1 & T) ? true : false; type HasAny = IsAny extends true ? true : T extends Date ? true extends { [K in Exclude]-?: HasAny }[Exclude] ? true : false : T extends ReadonlyArray ? HasAny : T extends object ? true extends { [K in keyof T]-?: HasAny }[keyof T] ? true : false : false; @@ -326,7 +657,7 @@ async function checkConsumerConstruction(source: string): Promise { cleanups.unshift(() => collection.cleanup({ dependents: true })) return collection } - await checkWithCleanup(async () => { + await checkWithCleanup(() => { const parsedConsumer = ts.createSourceFile( filename, source, @@ -365,7 +696,7 @@ async function checkConsumerConstruction(source: string): Promise { const construct = new Function( `api`, `exports`, - `const { BTreeIndex, Query, createCollection, createLiveQueryCollection, eq, include, materialize, toArray } = api;\n${outputText}`, + `const { BTreeIndex, Query, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } = api;\n${outputText}`, ) construct(api, {}) }, cleanups) @@ -380,7 +711,15 @@ function checkConsumer(diagnostics: ReadonlyArray): void { ).toBe(``) } declareOracle({ - grammar: [typeShapes], + grammar: [ + typeShapes, + authoredCollisions, + authoredPaths, + authoredKinds, + groupedForms, + groupingBoundaries, + aggregateDepths, + ], model: [consumerSource], check: [checkConsumer, checkConsumerConstruction], }) diff --git a/scripts/bench/README.md b/scripts/bench/README.md new file mode 100644 index 0000000000..8502a7e31b --- /dev/null +++ b/scripts/bench/README.md @@ -0,0 +1,95 @@ +# Incremental query benchmark + +Run `pnpm --filter @tanstack/db-ivm build`, then: + +```sh +node --import tsx scripts/bench/incremental-update.ts \ + --iterations=100 --warmup=20 --repetitions=3 --outFile=candidate.json +node --import tsx scripts/bench/compare-incremental-update.ts \ + --base=base.json --candidate=candidate.json --failOnRegression=true +node --test scripts/bench/compare-incremental-update.test.mjs +``` + +Each repetition creates fresh fixtures and queries, times their first preload, +and measures writes after warmup. Reports retain all cold-load times and +per-repetition write medians; displayed statistics are medians across repetitions. +The nested-document case joins all open issues to 20-block documents and selects +whole documents without a limit. Synced updates and optimistic updates with +rollback run at all scales and index modes, like the existing flat cases. + +CI runs the same benchmark code on the candidate and merge base on one runner. +It fails for either of these conditions: + +- A query's geometric mean across its configurations increases by more than + 30% for writes, or 50% for cold hydration. Improvements in another query or + metric cannot cancel a regression. +- One configuration's fastest candidate repetition exceeds its slowest base + repetition by more than 50%, and by more than 0.05ms for writes or 5ms for + hydration. Both sides must have at least three repetitions. This catches + persistent localized regressions without failing for one isolated outlier. + +The existing red/green per-case flags remain diagnostic: they have lower +thresholds and do not by themselves fail CI. `--threshold` can raise the gate's +relative thresholds. Missing cases, duplicate cases, invalid timings, or missing +CI hydration observations fail instead of silently reducing the comparison. +Reports and the job summary remain available when the gate fails. + +The [nested-row repair measurements](nested-row-repair-2026-11-05.csv) retain +three repetitions for the pre-regression, regressed and repaired DB source. +See the [repair evidence](../../docs/contributing/oracle-reviews/2026-11-05-nested-row-performance.md) +for source controls, validation and limits. + +## CI variation measured on 2026-11-05 + +The [measurement table](ci-variation-2026-11-05.csv) contains query rollups from +ten paired runs with no changes to `packages/db/src` or `packages/db-ivm/src`. +GitHub's compare API verified that premise (each response had fewer than its +300-file limit). Download each `benchmark-reports` artifact with +`gh run download RUN --repo TanStack/db --name benchmark-reports`; the table +records the run, both exact reported SHAs, CPU and query. A run's page is +`https://github.com/TanStack/db/actions/runs/RUN`. + +Each original report contains 72 cases, 100 writes and 20 warmups, using Node +24.8.0. Within-job query geometric means span 0.895–1.100 for writes and +0.851–1.203 for cold hydration. Individual case ratios are much noisier: cold +outliers exceed 7x even without a runtime change. These ten pairs produced +legacy per-case red flags in eight runs, although every query rollup stayed +below the new gate. This is evidence for pooling and repetition, not a universal +false-positive bound. + +Nine of those runs benchmark the identical base `8feab6ea3` on five CPU models. +Across their 36 cross-job pairs, absolute-direction overall ratios reach 2.76x +for writes and 1.88x for hydration. Individual-case ratios reach 5.67x and +4.87x, respectively. Never gate against absolute timings from a different job. + +The new three-repetition workflow still needs observed CI history. The initial +30%/50% query margins exceed every query shift in this sample; repeated ranges +supply a stricter consistency check for localized regressions. Revisit these +margins with additional same-code paired runs, particularly after runner or Node +changes. This finite historical sample does not prove a future noise ceiling. + +## Approved boundary-only implementation + +The [initial suite measurements](boundary-only-suite-2026-11-05.csv) and +[correlated probes](boundary-only-metadata-2026-11-05.csv) measure the approved +policy implementation against pre-2312 DB sources with current dependencies. +The full-suite geometric means are 0.88× writes and 0.91× cold; the nested +query's are 0.913× writes and 1.019× cold. The +[implementation record](../../docs/contributing/oracle-reviews/2026-11-05-boundary-only-metadata.md) +explains source controls, descriptor-work evidence and remaining fixed costs. +These are measurements of the implementation before the prep-review repairs. +They do not establish zero overhead for every query. + +The [final bracketed measurements](boundary-only-prep-bracket-2026-11-05.csv) +retain a pre-2312 run, the reviewed candidate, and another unchanged pre-2312 +run, in that order. All use the same current harness and dependencies, 100 +writes, 20 warmups and three repetitions across 84 cases. Candidate/base +geometric means are 1.138× writes and 1.354× cold against the first baseline, +then 1.038× and 1.051× against the second. The first comparison fails the +issue-detail cold gate; the second passes. The unchanged baseline itself +shifts by 1.096× writes and 1.288× cold. The nested query's candidate/base cold +ratios are 1.396× and 1.157×. This exposes substantial run drift and leaves +small overhead unresolved; neither comparison is discarded. These diagnostic +baselines use pre-2312 DB sources, whereas CI compares the PR's merge base. +See the [prep-review record](../../docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md) +for the final source binding, gate outcomes and measurement limits. diff --git a/scripts/bench/boundary-only-metadata-2026-11-05.csv b/scripts/bench/boundary-only-metadata-2026-11-05.csv new file mode 100644 index 0000000000..2a7182332e --- /dev/null +++ b/scripts/bench/boundary-only-metadata-2026-11-05.csv @@ -0,0 +1,37 @@ +variant,scenario,mode,blocks,rowCount,repetition,coldMs,writeMedianMs +pre-2312,callback-where,timing,0,10,0,1.9180829999999673,0.03404199999999946 +pre-2312,callback-where,timing,0,10,1,0.281833000000006,0.025166999999953532 +pre-2312,callback-where,timing,0,10,2,0.2150829999999928,0.028082999999980984 +pre-2312,callback-where,timing,200,10,0,2.5564999999999998,0.04087499999999977 +pre-2312,callback-where,timing,200,10,1,0.335125000000005,0.03520800000001145 +pre-2312,callback-where,timing,200,10,2,0.25166699999999764,0.03104200000001356 +pre-2312,inline-plain,timing,0,10,0,5.553915999999958,0.12554199999999582 +pre-2312,inline-plain,timing,0,10,1,0.9894590000000107,0.09275000000002365 +pre-2312,inline-plain,timing,0,10,2,0.885832999999991,0.07016699999996945 +pre-2312,inline-plain,timing,200,10,0,18.993416000000025,3.9598330000000033 +pre-2312,inline-plain,timing,200,10,1,7.586374999999975,4.136166000000003 +pre-2312,inline-plain,timing,200,10,2,5.9552920000000995,3.5162500000001273 +pre-2312,correlated-callback,timing,0,10,0,4.193666000000007,0.14958299999997848 +pre-2312,correlated-callback,timing,0,10,1,0.7137910000000147,0.10108400000001438 +pre-2312,correlated-callback,timing,0,10,2,0.6895830000000274,0.08470800000003464 +pre-2312,correlated-callback,timing,200,10,0,30.052583000000027,5.772832999999991 +pre-2312,correlated-callback,timing,200,10,1,15.14325000000008,5.710332999999991 +pre-2312,correlated-callback,timing,200,10,2,12.985290999999961,5.018708000000061 +boundary-implementation,callback-where,timing,0,10,0,3.717583999999988,0.053916000000015174 +boundary-implementation,callback-where,timing,0,10,1,0.6025829999999814,0.04062499999997726 +boundary-implementation,callback-where,timing,0,10,2,0.3558750000000259,0.02608399999996891 +boundary-implementation,callback-where,timing,200,10,0,2.597000000000037,0.07958300000001373 +boundary-implementation,callback-where,timing,200,10,1,0.4571669999999699,0.04087499999997135 +boundary-implementation,callback-where,timing,200,10,2,0.4804159999999911,0.034874999999999545 +boundary-implementation,inline-plain,timing,0,10,0,4.881458000000009,0.15412500000002183 +boundary-implementation,inline-plain,timing,0,10,1,1.117541000000017,0.08079200000003084 +boundary-implementation,inline-plain,timing,0,10,2,0.8235000000000241,0.06954200000001265 +boundary-implementation,inline-plain,timing,200,10,0,4.52675000000005,0.7666249999999764 +boundary-implementation,inline-plain,timing,200,10,1,0.8887920000000236,0.7110420000000204 +boundary-implementation,inline-plain,timing,200,10,2,0.5392079999999169,0.6446670000000267 +boundary-implementation,correlated-callback,timing,0,10,0,3.4152919999999938,0.12133299999999281 +boundary-implementation,correlated-callback,timing,0,10,1,0.6040419999999926,0.08712499999998613 +boundary-implementation,correlated-callback,timing,0,10,2,0.47512499999999136,0.08095800000000963 +boundary-implementation,correlated-callback,timing,200,10,0,11.889415999999983,1.4417499999999563 +boundary-implementation,correlated-callback,timing,200,10,1,5.246457999999961,1.6139579999999683 +boundary-implementation,correlated-callback,timing,200,10,2,5.192458999999985,1.508375000000001 diff --git a/scripts/bench/boundary-only-prep-bracket-2026-11-05.csv b/scripts/bench/boundary-only-prep-bracket-2026-11-05.csv new file mode 100644 index 0000000000..462cbb7fcf --- /dev/null +++ b/scripts/bench/boundary-only-prep-bracket-2026-11-05.csv @@ -0,0 +1,757 @@ +run,db_source,query,scenario,scale,source_index_mode,mutation_mode,repetition,cold_hydrate_ms,median_write_ms +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,synced,0,4.712416999999988,0.047916999999984 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,synced,1,0.8652079999999955,0.03674999999998363 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,synced,2,0.6273750000000007,0.029124999999993406 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,synced,0,0.538125000000008,0.09254199999998036 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,synced,1,0.3930000000000291,0.07262499999995953 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,synced,2,0.34483299999999417,0.0635000000000332 +pre-2312-before,035a5260,list + author,visible author update,100,none,synced,0,3.4855839999999603,0.038584000000014385 +pre-2312-before,035a5260,list + author,visible author update,100,none,synced,1,1.6215839999999844,0.035625000000038654 +pre-2312-before,035a5260,list + author,visible author update,100,none,synced,2,1.1589999999999918,0.028250000000014097 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,synced,0,3.229458999999963,0.06408400000003667 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,synced,1,1.31170800000001,0.053832999999997355 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,synced,2,1.065499999999986,0.04737499999998818 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,0,2.3007089999999835,0.040374999999983174 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,1,3.0397500000000264,0.035583000000031006 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,2,1.6385839999999803,0.034166999999968084 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,0,0.3120829999999728,0.028458999999998014 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,1,0.2183750000000373,0.02816699999999628 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,2,0.20416700000004084,0.026749999999992724 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,synced,0,0.8696669999999926,0.02658400000001393 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,synced,1,0.7494159999999965,0.023583999999971184 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,synced,2,0.8093749999999886,0.028290999999967426 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,0,0.48420899999996436,0.02904200000000401 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,1,0.36358300000000554,0.021875000000022737 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,2,0.3103330000000142,0.025500000000022283 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.35899999999998045,0.01999999999998181 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.41262499999999136,0.015249999999980446 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.3460420000000113,0.015083000000004176 +pre-2312-before,035a5260,list + author,visible author update,100,none,optimistic,0,0.9167499999999791,0.02600000000001046 +pre-2312-before,035a5260,list + author,visible author update,100,none,optimistic,1,0.9288329999999974,0.026167000000043572 +pre-2312-before,035a5260,list + author,visible author update,100,none,optimistic,2,0.8431249999999864,0.025207999999963704 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,0,0.9400830000000155,0.03862499999996771 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,1,0.9823330000000396,0.03866600000003473 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,2,0.8404170000000022,0.0386670000000322 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,1.4322499999999536,0.02412499999991269 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,1.487166000000002,0.02345900000000256 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,1.3700840000000198,0.02266599999995833 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.18870899999990343,0.02029200000004039 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.17795799999998962,0.020208000000025095 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.17279199999995853,0.02037499999994452 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,optimistic,0,0.6499579999999696,0.14741699999990487 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,optimistic,1,0.7647080000000415,0.14191599999992377 +pre-2312-before,035a5260,open issues + documents,visible document update,100,none,optimistic,2,0.6493749999999636,0.14587500000004638 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,synced,0,0.8752500000000509,0.023291999999969448 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,synced,1,0.4432080000000269,0.021457999999938693 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,synced,2,0.33433400000001257,0.019708000000036918 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,0,0.33691699999997127,0.07979199999999764 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,1,0.2786670000000413,0.06550000000004275 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,2,0.34504100000003746,0.0652500000001055 +pre-2312-before,035a5260,list + author,visible author update,100,manual,synced,0,0.8017089999999598,0.026292000000012195 +pre-2312-before,035a5260,list + author,visible author update,100,manual,synced,1,0.7164999999999964,0.025500000000079126 +pre-2312-before,035a5260,list + author,visible author update,100,manual,synced,2,0.6458340000000362,0.0244590000000926 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,synced,0,0.7590830000000324,0.04362500000002001 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,synced,1,0.7337080000000924,0.04241700000000037 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,synced,2,0.7191660000000866,0.04291599999999107 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,1.167709000000059,0.030750000000011823 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.210790999999972,0.031041999999956715 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.1283329999999978,0.031167000000095868 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.12345800000002782,0.027165999999965607 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.13524999999992815,0.02474999999992633 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.09895800000003874,0.02320899999995163 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,synced,0,0.6346670000000358,0.022084000000063497 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,synced,1,0.6111250000000155,0.021583999999961634 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,synced,2,0.5588330000000497,0.021040999999968335 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.29033300000003237,0.020125000000007276 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.25508399999989706,0.019957999999974163 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.26337499999999636,0.0196250000000191 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.27729199999998855,0.01645799999994324 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.2522920000000113,0.016334000000028936 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.2788749999999709,0.015874999999937245 +pre-2312-before,035a5260,list + author,visible author update,100,manual,optimistic,0,0.6724590000000035,0.024666000000024724 +pre-2312-before,035a5260,list + author,visible author update,100,manual,optimistic,1,0.6833749999999554,0.025832999999920503 +pre-2312-before,035a5260,list + author,visible author update,100,manual,optimistic,2,0.6905420000000504,0.02508299999999508 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,0,0.7458749999999554,0.035750000000007276 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,1,0.7523340000000189,0.03566699999998946 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,2,0.7076250000000073,0.03508399999998346 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.1667919999999867,0.02320800000006784 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,2.73920899999996,0.023458000000005086 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.1867500000000746,0.023291999999969448 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.1078340000000253,0.019000000000005457 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.11008300000003146,0.019125000000030923 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.11683300000004238,0.020584000000098968 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,optimistic,0,0.6527090000000726,0.14279199999998582 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,optimistic,1,0.729665999999952,0.14583299999992505 +pre-2312-before,035a5260,open issues + documents,visible document update,100,manual,optimistic,2,2.3782920000001013,0.14216699999997218 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,synced,0,2.1513749999999163,0.016833000000133325 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,synced,1,3.4014579999998205,0.022415999999793712 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,synced,2,2.76629099999991,0.019334000000071683 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,0,2.2666249999999764,0.3772919999998976 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,1,1.985541000000012,0.36933299999986957 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,2,2.099124999999958,0.35845900000003894 +pre-2312-before,035a5260,list + author,visible author update,1000,none,synced,0,7.868291999999883,0.023957999999993262 +pre-2312-before,035a5260,list + author,visible author update,1000,none,synced,1,8.696042000000034,0.024040999999897394 +pre-2312-before,035a5260,list + author,visible author update,1000,none,synced,2,10.096750000000156,0.024208999999927983 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,synced,0,2.8159160000000156,0.044833000000153334 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,synced,1,2.739084000000048,0.04458299999987503 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,synced,2,2.7491670000001704,0.043166999999812106 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,3.1749170000000504,0.028207999999949607 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,7.932999999999993,0.04229200000008859 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,3.2537499999998545,0.028207999999949607 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.4154999999998381,0.023332999999865933 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.3630409999998392,0.023791999999957625 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.38320900000007896,0.02320800000006784 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,synced,0,8.182457999999997,0.021332999999913227 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,synced,1,8.562167000000045,0.02108300000008967 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,synced,2,4.902624999999944,0.02095899999994799 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,0,1.8640000000000327,0.019583000000011452 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,1,1.8949580000000878,0.01950000000010732 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,2,5.282666999999947,0.019457999999985987 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,0,1.856166999999914,0.014042000000017651 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,1,1.9175000000000182,0.014208000000053289 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,2,5.4642089999999826,0.014208000000053289 +pre-2312-before,035a5260,list + author,visible author update,1000,none,optimistic,0,10.821374999999989,0.03670800000008967 +pre-2312-before,035a5260,list + author,visible author update,1000,none,optimistic,1,8.792624999999816,0.026416999999810287 +pre-2312-before,035a5260,list + author,visible author update,1000,none,optimistic,2,6.569375000000036,0.026041000000077474 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,0,2.9532500000000255,0.036750000000211 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,1,2.8395419999999376,0.03600000000005821 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,2,2.8612909999999374,0.03637499999990723 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,3.2190409999998337,0.02179200000000492 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,3.1079580000000533,0.021666999999979453 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,3.0275000000001455,0.021500000000060027 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.36491700000010496,0.01887499999997999 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.3425830000001042,0.019208999999818843 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.3450000000000273,0.018915999999990163 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,optimistic,0,4.7764159999999265,0.14179199999989578 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,optimistic,1,10.266791999999896,0.14087499999982356 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,none,optimistic,2,4.78345800000011,0.13995900000008987 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,0,0.4089999999998781,0.018915999999990163 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,1,0.3305410000000393,0.01887499999997999 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,2,0.3047079999998914,0.0187500000001819 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.3175410000001193,0.08758299999999508 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.27787499999999454,0.08258300000011332 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.283916999999974,0.08079100000009021 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,synced,0,2.790083000000095,0.023333999999977095 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,synced,1,0.6516659999999774,0.02341599999999744 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,synced,2,0.6786669999999049,0.02358299999968949 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,0,0.9919160000004013,0.04529100000036124 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,1,1.0025000000000546,0.045208999999886146 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,2,0.8459579999998823,0.04500000000007276 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,1.5506249999998545,0.032541999999921245 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.3725829999998496,0.031042000000070402 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,1.2725000000000364,0.031582999999955064 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.1388329999999769,0.02454200000011042 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.1327089999999771,0.024625000000014552 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.13658299999997325,0.02412499999991269 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,synced,0,4.8998750000000655,0.021291000000019267 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,synced,1,4.824125000000095,0.021208999999998923 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,synced,2,4.581165999999939,0.021332999999685853 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.326958999999988,0.020500000000083674 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.32770799999980227,0.020166999999673862 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.3103329999999005,0.019624999999905413 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.3310839999999189,0.01662499999974898 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.4396670000000995,0.01795899999979156 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.322791000000052,0.01704199999994671 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,optimistic,0,0.8364169999999831,0.026957999999922322 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,optimistic,1,0.8097500000003492,0.026374999999916326 +pre-2312-before,035a5260,list + author,visible author update,1000,manual,optimistic,2,0.7685409999999138,0.026041999999961263 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,0,0.956000000000131,0.03970899999967514 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,1,0.8973329999998896,0.03841600000032486 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,2,0.8697080000001733,0.039042000000335975 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,1.3197079999999914,0.02474999999958527 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.284708000000137,0.024583000000347965 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,1.2367080000003625,0.024583999999777006 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.1485000000002401,0.02033300000039162 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.15241699999978664,0.021000000000185537 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.10816599999998289,0.02116699999987759 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,optimistic,0,5.474499999999807,0.14266600000019025 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,optimistic,1,4.835959000000003,0.14395799999965675 +pre-2312-before,035a5260,open issues + documents,visible document update,1000,manual,optimistic,2,5.0509579999998095,0.1492500000003929 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,synced,0,37.81604200000038,0.030749999999898137 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,synced,1,29.145833999999923,0.028624999999919964 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,synced,2,29.69591700000001,0.024667000000135886 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,0,30.473707999999988,3.5427920000001905 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,1,33.29270799999995,3.633042000000387 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,2,25.71637499999997,3.5150830000002316 +pre-2312-before,035a5260,list + author,visible author update,10000,none,synced,0,87.78479199999947,0.04500000000007276 +pre-2312-before,035a5260,list + author,visible author update,10000,none,synced,1,102.36712499999976,0.03233300000010786 +pre-2312-before,035a5260,list + author,visible author update,10000,none,synced,2,87.25320900000042,0.031124999999519787 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,synced,0,27.43254100000013,0.058999999999286956 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,synced,1,39.52404200000001,0.07504100000005565 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,synced,2,36.36933299999964,0.06883300000026793 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,33.00220799999988,0.05283300000064628 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,39.51533399999971,0.043500000000676664 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,29.504667000000154,0.03808300000036979 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,0,1.9335000000000946,0.02962500000012369 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.9627919999993537,0.03341699999964476 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,2,2.2988750000004075,0.03099999999994907 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,synced,0,63.124165999999605,0.02454100000068138 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,synced,1,64.12333399999989,0.025166999999783002 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,synced,2,53.071499999999105,0.023917000000437838 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,0,27.694375000000036,0.02529199999935372 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,1,30.864833000000544,0.025582999999642198 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,2,25.908000000000357,0.02479200000016135 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,0,23.573333000000275,0.019083000000136963 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,1,28.035875000000487,0.019707999999809545 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,2,22.83587500000067,0.01912499999980355 +pre-2312-before,035a5260,list + author,visible author update,10000,none,optimistic,0,82.41158300000006,0.031582999999955064 +pre-2312-before,035a5260,list + author,visible author update,10000,none,optimistic,1,77.34379199999967,0.030958000000282482 +pre-2312-before,035a5260,list + author,visible author update,10000,none,optimistic,2,84.75933299999997,0.030499999999847205 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,0,26.633832999999868,0.05375000000003638 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,1,35.218833000000814,0.05304199999955017 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,2,27.744042000000263,0.049417000000175904 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,26.622957999999926,0.025165999999444466 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,31.827917000000525,0.026249999998981366 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,28.43512499999997,0.025750000000698492 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,1.806416999999783,0.023708000000624452 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,2.8664580000004207,0.024333999999726075 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.199749999999767,0.023916000000099302 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,optimistic,0,57.06975000000057,0.14645799999925657 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,optimistic,1,50.008208999999624,0.14633300000059535 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,none,optimistic,2,50.605875000001106,0.14500000000043656 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,0,0.8844999999982974,0.024916999998822575 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,1,0.6714169999995647,0.023709000000962988 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,2,0.6433329999999842,0.022041000000172062 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.796583000001192,0.34233299999868905 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.8834999999999127,0.3105830000004062 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,2,0.7584999999999127,0.304958999999144 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,synced,0,1.2466670000012527,0.02579200000036508 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,synced,1,1.4443750000009459,0.03508299999884912 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,synced,2,1.17766599999959,0.025708999999551452 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,0,1.3757920000007289,0.049250000000029104 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,1,1.3081659999988915,0.048875000000407454 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,2,1.409165999999459,0.049709000000802916 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,1.9198750000014115,0.03416600000127801 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,1.8030830000006972,0.033083000000260654 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,2.692708999999013,0.05512499999895226 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.3730830000004062,0.03312499999992724 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.2522919999992155,0.03300000000126602 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.29800000000068394,0.033833000001322944 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,synced,0,70.07891600000039,0.027041999999710242 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,synced,1,61.45945799999936,0.025207999999111053 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,synced,2,52.55266700000175,0.024333999999726075 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,0,0.9215420000000449,0.025708999999551452 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.9697500000002037,0.033250000000407454 +pre-2312-before,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.7951670000002196,0.024374999999054126 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.7350829999995767,0.021291999999448308 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.7195000000010623,0.02108300000145391 +pre-2312-before,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.7085830000014539,0.021166000000448548 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,optimistic,0,1.7974169999997684,0.030249999999796273 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,optimistic,1,1.6767500000005384,0.03225000000020373 +pre-2312-before,035a5260,list + author,visible author update,10000,manual,optimistic,2,1.2441250000010768,0.030957999999372987 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.5030000000006112,0.05400000000008731 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.7223330000015267,0.053750000000945874 +pre-2312-before,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,2,1.3534159999999247,0.053957999998601736 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.4066250000014406,0.029416999999739346 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,6.589750000001004,0.030666000000564964 +pre-2312-before,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.0567920000012236,0.030542000000423286 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.36191599999983737,0.024917000000641565 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.27837499999986903,0.02487500000097498 +pre-2312-before,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.26512499999989814,0.025124999998297426 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,optimistic,0,56.83333300000049,0.14654200000040873 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,optimistic,1,50.85400000000118,0.1498330000013084 +pre-2312-before,035a5260,open issues + documents,visible document update,10000,manual,optimistic,2,50.604959000000235,0.14808399999856192 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,synced,0,6.207375000000013,0.05500000000000682 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,synced,1,1.063916000000006,0.044291999999984455 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,synced,2,0.7440000000000282,0.03237500000000182 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,synced,0,0.9756249999999795,0.11187499999999773 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,synced,1,0.5810419999999681,0.08933400000000802 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,synced,2,0.4481249999999477,0.0691669999999931 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,synced,0,5.072625000000016,0.04558300000002191 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,synced,1,2.03125,0.049374999999997726 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,synced,2,2.505209000000036,0.029208000000039647 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,synced,0,5.1573340000000485,0.08629200000001447 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,synced,1,2.1089170000000195,0.07637499999998454 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,synced,2,2.0252909999999815,0.061958000000004176 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,synced,0,2.887166000000036,0.04599999999999227 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,synced,1,2.6953750000000127,0.0428749999999809 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,synced,2,3.5978329999999232,0.03929100000004837 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,synced,0,0.47216600000001563,0.03562499999998181 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,synced,1,0.46862499999997453,0.03191700000002129 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,synced,2,0.33329200000002857,0.0320840000000544 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,synced,0,1.0764169999999922,0.02945799999997689 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,synced,1,1.0248330000000578,0.038250000000061846 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,synced,2,1.6720000000000255,0.03162499999996271 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,optimistic,0,0.8247079999999869,0.03358300000002146 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,optimistic,1,0.7076250000000073,0.023833999999965272 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,none,optimistic,2,0.445583000000056,0.028207999999949607 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.46500000000003183,0.021834000000012566 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.4696249999999509,0.021542000000067674 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.3886249999999336,0.01845900000000711 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,optimistic,0,1.2097909999999956,0.028874999999970896 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,optimistic,1,1.3113749999999982,0.03612499999996999 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,none,optimistic,2,1.3912920000000213,0.03516700000000128 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,optimistic,0,1.7124999999999773,0.05779199999994944 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,optimistic,1,1.3297919999999976,0.057084000000031665 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,none,optimistic,2,1.5824159999999665,0.053084000000012566 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.0086670000000595,0.03141700000003311 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,2.0329999999999018,0.030000000000086402 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,1.8322500000000446,0.02791700000000219 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.44833300000004783,0.02520799999990686 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.35450000000003,0.024957999999969616 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.29804200000000947,0.025374999999939973 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,optimistic,0,1.172458000000006,0.18745799999999235 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,optimistic,1,1.0302090000000135,0.16729099999997743 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,none,optimistic,2,0.8710829999999987,0.1677079999999478 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,synced,0,1.1278750000000173,0.027958000000012362 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,synced,1,0.5870409999999993,0.02575000000001637 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,synced,2,0.6305830000000014,0.023041999999918517 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,synced,0,0.4540829999999687,0.09333400000002712 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,synced,1,0.37999999999999545,0.07312500000000455 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,synced,2,0.5167079999999942,0.0701249999999618 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,synced,0,1.053625000000011,0.028208000000063294 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,synced,1,1.1057909999999538,0.029125000000021828 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,synced,2,0.8624999999999545,0.02658299999995961 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,synced,0,1.4417080000000624,0.05279200000018136 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,synced,1,1.1676669999999376,0.052458000000115135 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,synced,2,0.9992919999999685,0.05520899999987705 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,1.8783750000000055,0.04041600000005019 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,2.140041999999994,0.03720799999996416 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.8186249999998836,0.03808300000014242 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.1932080000001406,0.032000000000152795 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.25495900000009897,0.030375000000049113 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.26916700000015226,0.027749999999969077 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,synced,0,0.8945830000000115,0.024666000000024724 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,synced,1,0.8292080000001079,0.031416999999919426 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,synced,2,1.0579170000000886,0.023708000000169704 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.3869999999999436,0.021666999999979453 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.43212500000004184,0.022083000000066022 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.34112499999991996,0.021374999999807187 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.3744580000000042,0.018124999999827196 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.4094589999999698,0.018791999999848485 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.5158329999999296,0.018499999999903594 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,optimistic,0,1.1578329999999823,0.028832999999849562 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,optimistic,1,0.9252080000001115,0.028249999999843567 +candidate,8feab6ea3+working-diff,list + author,visible author update,100,manual,optimistic,2,0.7980419999998958,0.028374999999869033 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.0576670000000377,0.044375000000172804 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.0967909999999392,0.04550000000017462 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.1113749999999527,0.04545800000005329 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.8700840000001335,0.02733299999999872 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,1.60487500000022,0.029624999999896318 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,2.128417000000127,0.03858300000001691 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.34524999999985084,0.02370799999994233 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.2026250000001255,0.022875000000112777 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.15895799999998417,0.02366699999993216 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,optimistic,0,0.9201250000000982,0.1586250000000291 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,optimistic,1,0.7837079999999332,0.15991600000006656 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,100,manual,optimistic,2,0.7391250000000582,0.19858399999998255 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,synced,0,2.3616250000000036,0.018540999999913765 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,synced,1,2.724958000000015,0.018790999999964697 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,synced,2,4.073458999999957,0.02116699999987759 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,synced,0,3.1180420000000595,0.43058300000006966 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,synced,1,2.2139170000000377,0.4300419999999576 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,synced,2,2.2330830000000788,0.41545799999994415 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,synced,0,9.145291999999927,0.026209000000108063 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,synced,1,11.769666000000143,0.026000000000067303 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,synced,2,12.845416999999998,0.026041000000077474 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,synced,0,3.7047919999999976,0.05233300000008967 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,synced,1,3.6177500000001146,0.05162500000005821 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,synced,2,4.1496669999999085,0.051750000000083674 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,4.485999999999876,0.03370800000016061 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,4.644457999999986,0.03300000000012915 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.025041999999985,0.045583000000078755 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.6906670000000759,0.02920799999992596 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.5190829999999096,0.028542000000015832 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.4760830000000169,0.029750000000149157 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,synced,0,6.921083000000181,0.022875000000112777 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,synced,1,6.75566700000013,0.022625000000061846 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,synced,2,7.562125000000151,0.021958000000040556 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,optimistic,0,2.317209000000048,0.02116699999987759 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,optimistic,1,2.1138340000002245,0.022207999999864114 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,none,optimistic,2,2.09112499999992,0.020833000000038737 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.8493750000002365,0.015208999999686057 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,optimistic,1,2.706250000000182,0.015082999999776803 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,none,optimistic,2,2.1050419999996848,0.016415999999935593 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,optimistic,0,12.156540999999834,0.02741599999990285 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,optimistic,1,21.93741699999964,0.028874999999970896 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,none,optimistic,2,8.080207999999857,0.02775000000019645 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,optimistic,0,3.2491250000002765,0.04545899999993708 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,optimistic,1,3.240082999999686,0.04204200000003766 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,none,optimistic,2,3.1312090000001263,0.04179199999998673 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,3.4505420000000413,0.025499999999738066 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,3.5886669999999867,0.025042000000212283 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,3.36783400000013,0.025750000000243745 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.39637500000026193,0.022875000000112777 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.4445840000003045,0.022375000000010914 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.38720899999998437,0.022709000000304513 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,optimistic,0,10.101874999999836,0.14712499999995998 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,optimistic,1,5.655500000000302,0.14695799999981318 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,none,optimistic,2,19.045500000000175,0.15383299999984956 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,synced,0,0.49099999999998545,0.019332999999733147 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,synced,1,0.39520800000036616,0.01929199999995035 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,synced,2,0.36124999999992724,0.01883399999996982 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.4480830000002243,0.09091600000010658 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.34658300000000963,0.08550000000013824 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.5409999999997126,0.0945409999999356 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,synced,0,1.009457999999995,0.025499999999738066 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,synced,1,0.9324999999998909,0.02583299999969313 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,synced,2,0.8815829999998641,0.025416999999833934 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,synced,0,1.3775839999998425,0.05425000000013824 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,synced,1,1.2235840000003009,0.052458000000115135 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,synced,2,1.293500000000222,0.05250000000023647 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.525833000000148,0.07308299999976953 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.7860829999999623,0.03524999999990541 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,1.927541999999903,0.03487500000028376 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.28470800000013696,0.0284999999998945 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.20866700000033234,0.02874999999994543 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.2237079999999878,0.029416000000310305 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,synced,0,6.642624999999953,0.022625000000061846 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,synced,1,6.7140840000001845,0.02349999999978536 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,synced,2,7.557291999999961,0.030415999999604537 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.5419580000002497,0.02133400000002439 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.5590839999999844,0.02079199999980119 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.4337919999998121,0.021125000000211003 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.6120420000002014,0.018083999999817024 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.4270000000001346,0.030375000000276486 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.4432499999998072,0.017542000000048574 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,optimistic,0,1.0248749999996107,0.028999999999996362 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,optimistic,1,1.3233749999999418,0.028457999999773165 +candidate,8feab6ea3+working-diff,list + author,visible author update,1000,manual,optimistic,2,0.9683340000001408,0.02787499999976717 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.3862500000000182,0.049042000000099506 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.2001249999998436,0.046542000000044936 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.510457999999744,0.05541700000003402 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,1.7645419999998921,0.03000000000020009 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.776332999999795,0.02954200000021956 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,1.7860829999999623,0.02904199999966295 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.25266700000020137,0.023958000000220636 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.25287500000013097,0.03179199999976845 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.23516699999981938,0.02437499999996362 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,optimistic,0,10.299417000000176,0.15358300000025338 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,optimistic,1,7.649832999999944,0.1634169999997539 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,1000,manual,optimistic,2,6.911624999999731,0.15891600000031758 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,synced,0,89.91370800000004,0.04345800000010058 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,synced,1,32.24695800000018,0.029250000000047294 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,synced,2,31.105583000000024,0.02304199999980483 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,synced,0,27.04666700000007,4.766458999999486 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,synced,1,33.971958000000086,4.127790999999888 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,synced,2,26.03216699999939,4.579749999999876 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,synced,0,110.77375000000029,0.03799999999955617 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,synced,1,106.27800000000025,0.027541000000383065 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,synced,2,123.93733299999985,0.03016699999989214 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,synced,0,34.03741700000046,0.05087499999990541 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,synced,1,36.569375000000036,0.05266699999992852 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,synced,2,79.11000000000058,0.05850000000009459 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,31.915375000000495,0.03583299999991141 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,35.094750000000204,0.04412499999943975 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,35.984040999999706,0.03516700000000128 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,synced,0,4.28112499999952,0.05379099999936443 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.8857499999994616,0.02974999999969441 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,synced,2,2.308915999999954,0.0281249999998181 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,synced,0,67.36733399999957,0.024166999999579275 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,synced,1,70.40841700000055,0.023375000000669388 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,synced,2,66.18783299999996,0.023250000000189175 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,optimistic,0,28.95495799999844,0.023333999999522348 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,optimistic,1,30.9207920000008,0.026291000000128406 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,none,optimistic,2,26.069666999999754,0.023250000000189175 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,optimistic,0,31.186540999999124,0.01691700000083074 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,optimistic,1,26.388709000000745,0.017791000000215718 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,none,optimistic,2,30.657791999999972,0.020375000000058208 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,optimistic,0,112.33354199999849,0.031208000000333413 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,optimistic,1,161.8108749999992,0.046167000000423286 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,none,optimistic,2,106.16412500000115,0.029875000000174623 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,optimistic,0,34.54704099999981,0.05916599999909522 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,optimistic,1,36.494416999999885,0.06120799999916926 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,none,optimistic,2,32.93979099999888,0.05270800000107556 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,36.60933300000033,0.029082999999445747 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,30.230458,0.027083000000857282 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,33.50145799999882,0.026250000000800355 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,3.0360409999993863,0.025208000000930042 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,2.3168750000004366,0.02487500000097498 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.150666999999885,0.025125000000116415 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,optimistic,0,86.13487499999974,0.15812499999992724 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,optimistic,1,70.02924999999959,0.1647499999999127 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,none,optimistic,2,88.8485410000012,0.15904199999931734 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,synced,0,0.9158750000005966,0.027000000000043656 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,synced,1,0.9037920000009763,0.021166999998968095 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,synced,2,1.01995800000077,0.023417000000335975 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.8864590000011958,0.3696670000008453 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,synced,1,1.105916000000434,0.4212500000012369 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.0654589999994641,0.4000839999989694 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,synced,0,1.5117079999999987,0.02766700000029232 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,synced,1,1.7290840000005119,0.036583999999493244 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,synced,2,1.5807500000009895,0.02845799999886367 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,synced,0,1.5627499999991414,0.053208000001177425 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,synced,1,1.549165999998877,0.054874999999810825 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,synced,2,2.2692080000015267,0.07558300000164309 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,2.071665999999823,0.03574999999909778 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,1.9894590000003518,0.037000000000261934 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,2.0923750000001746,0.03670899999997346 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.3512080000000424,0.030249999999796273 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,synced,1,1.0361250000005384,0.06537500000013097 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.42829100000017206,0.04399999999986903 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,synced,0,90.02783400000044,0.048124999999345164 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,synced,1,88.52858299999934,0.033082999998441665 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,synced,2,76.74841699999888,0.03183300000091549 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.3087500000001455,0.04175000000032014 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.33941699999923,0.049457999999503954 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.9511669999992591,0.02824999999938882 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.8559589999986201,0.024457999999867752 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.8196669999997539,0.030708999998751096 +candidate,8feab6ea3+working-diff,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.8297910000001139,0.02199999999902502 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,optimistic,0,1.4658330000020214,0.040582999998150626 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,optimistic,1,2.034749999998894,0.03283300000111922 +candidate,8feab6ea3+working-diff,list + author,visible author update,10000,manual,optimistic,2,1.3951669999987644,0.03250000000116415 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.9514579999995476,0.06395799999882001 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,optimistic,1,2.744124999997439,0.11141700000007404 +candidate,8feab6ea3+working-diff,list + comment count,visible issue comment insert,10000,manual,optimistic,2,1.948999999996886,0.06504200000199489 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.4113330000000133,0.03537499999947613 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,2.383332999997947,0.034917000000859844 +candidate,8feab6ea3+working-diff,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.5643750000017462,0.035540999997465406 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.4583749999983411,0.030999999999039574 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.3459999999977299,0.030624999999417923 +candidate,8feab6ea3+working-diff,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.47416599999996834,0.03208299999823794 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,optimistic,0,85.50475000000006,0.168958999998722 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,optimistic,1,76.88679200000115,0.166957999997976 +candidate,8feab6ea3+working-diff,open issues + documents,visible document update,10000,manual,optimistic,2,88.95737499999814,0.16404200000033597 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,synced,0,6.267583000000002,0.05583400000000438 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,synced,1,1.2944579999999632,0.04083300000002055 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,synced,2,0.745207999999991,0.031041999999956715 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,synced,0,0.674541999999974,0.10274999999995771 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,synced,1,0.45375000000001364,0.08466699999996763 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,synced,2,0.40362500000003365,0.07295899999996891 +pre-2312-after,035a5260,list + author,visible author update,100,none,synced,0,4.413250000000005,0.04291699999998855 +pre-2312-after,035a5260,list + author,visible author update,100,none,synced,1,4.067999999999984,0.032708000000013726 +pre-2312-after,035a5260,list + author,visible author update,100,none,synced,2,1.5375000000000227,0.037166000000013355 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,synced,0,3.98195800000002,0.08470899999997528 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,synced,1,3.0882500000000164,0.05824999999998681 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,synced,2,1.319166999999993,0.05116600000002336 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,0,2.9092919999999935,0.042541999999968994 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,1,2.0724589999999807,0.03912500000001273 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,synced,2,1.8489589999999794,0.03837500000003047 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,0,0.4752920000000245,0.033124999999984084 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,1,0.3047080000000051,0.03012499999999818 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,synced,2,0.38195799999999736,0.028915999999981068 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,synced,0,0.9909579999999778,0.02745900000002166 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,synced,1,0.9413749999999936,0.024833000000057837 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,synced,2,1.0468339999999898,0.03291699999999764 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,0,0.66112499999997,0.031334000000015294 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,1,0.5291670000000295,0.02800000000002001 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,none,optimistic,2,0.39829199999996945,0.023791999999957625 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.4640839999999571,0.028541999999902146 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.457540999999992,0.020624999999995453 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.5407920000000104,0.016874999999913598 +pre-2312-after,035a5260,list + author,visible author update,100,none,optimistic,0,1.0896249999999554,0.027417000000014013 +pre-2312-after,035a5260,list + author,visible author update,100,none,optimistic,1,1.2517500000000155,0.030209000000013475 +pre-2312-after,035a5260,list + author,visible author update,100,none,optimistic,2,1.2522920000000113,0.027749999999969077 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,0,1.2700419999999895,0.05808300000001054 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,1,1.5009169999999585,0.05091600000002927 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,none,optimistic,2,2.7964999999999236,0.05254200000001674 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.7059169999999995,0.03708299999993869 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,2.0061249999999973,0.025666999999998552 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,1.6596250000000055,0.025249999999914507 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.46658400000001166,0.0217089999999871 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.3235419999999749,0.023624999999924512 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.32104100000003655,0.022084000000063497 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,optimistic,0,3.5987910000000056,0.18975000000000364 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,optimistic,1,0.9107500000000073,0.1609160000000429 +pre-2312-after,035a5260,open issues + documents,visible document update,100,none,optimistic,2,0.9031250000000455,0.1658749999999145 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,synced,0,1.0936249999999745,0.024125000000026375 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,synced,1,0.4617080000000442,0.023125000000050022 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,synced,2,0.6229170000000295,0.02512500000000273 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,0,0.447208000000046,0.09887500000002092 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,1,0.3634589999999207,0.07150000000001455 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,synced,2,0.3641250000000582,0.06845799999996416 +pre-2312-after,035a5260,list + author,visible author update,100,manual,synced,0,1.011209000000008,0.03499999999996817 +pre-2312-after,035a5260,list + author,visible author update,100,manual,synced,1,0.9867090000000189,0.0286670000000413 +pre-2312-after,035a5260,list + author,visible author update,100,manual,synced,2,0.8007499999999936,0.026250000000004547 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,synced,0,0.991292000000044,0.04891599999996288 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,synced,1,0.9081249999999272,0.049500000000080036 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,synced,2,0.9204999999999472,0.04762499999992542 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,1.399208999999928,0.0337090000000444 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.2985419999999976,0.03258299999993142 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.209791999999993,0.03241600000001199 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.2507909999999356,0.028666000000043823 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.1652080000000069,0.030749999999898137 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.1795830000000933,0.025374999999939973 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,synced,0,0.9276250000000346,0.02254199999993034 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,synced,1,2.232040999999981,0.02200000000016189 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,synced,2,0.630292000000054,0.021708999999873413 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.31708400000002257,0.0206670000000031 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.29008299999986775,0.02041700000017954 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.2752909999999247,0.023000000000138243 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.4343340000000353,0.017457999999805907 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.34091699999999037,0.017125000000078217 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.3930410000000393,0.016624999999976353 +pre-2312-after,035a5260,list + author,visible author update,100,manual,optimistic,0,2.706416999999874,0.02612500000009277 +pre-2312-after,035a5260,list + author,visible author update,100,manual,optimistic,1,0.7352499999999509,0.026499999999941792 +pre-2312-after,035a5260,list + author,visible author update,100,manual,optimistic,2,0.6767079999999623,0.026082999999971435 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,0,0.8759170000000722,0.03858300000001691 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,1,0.7974590000001172,0.03791699999987941 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,100,manual,optimistic,2,0.7907090000001062,0.03724999999985812 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.2089999999998327,0.02433300000006966 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,1.2707920000000286,0.02508299999999508 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.2621659999999792,0.024499999999989086 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.19908399999985704,0.019874999999956344 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.13179100000002109,0.019915999999966516 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.12858400000004622,0.019207999999935055 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,optimistic,0,0.6236250000001746,0.15029200000003584 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,optimistic,1,0.6871669999998176,0.15066700000011224 +pre-2312-after,035a5260,open issues + documents,visible document update,100,manual,optimistic,2,0.6109590000000935,0.1522500000000946 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,synced,0,2.129124999999931,0.01791600000001381 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,synced,1,3.6300830000000133,0.022208000000091488 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,synced,2,2.931874999999991,0.019708000000036918 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,0,2.7120420000001104,0.4440420000000813 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,1,2.671583000000055,0.38124999999990905 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,synced,2,2.0682910000000447,0.37466700000004494 +pre-2312-after,035a5260,list + author,visible author update,1000,none,synced,0,8.473792000000003,0.025374999999939973 +pre-2312-after,035a5260,list + author,visible author update,1000,none,synced,1,10.008957999999893,0.024625000000014552 +pre-2312-after,035a5260,list + author,visible author update,1000,none,synced,2,11.453750000000127,0.026458000000047832 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,synced,0,3.2047909999998865,0.04720800000018244 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,synced,1,3.131125000000111,0.047458000000005995 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,synced,2,3.696374999999989,0.049749999999903594 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,3.723792000000003,0.030958000000055108 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,6.824917000000141,0.03879200000005767 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,4.245582999999897,0.03187500000012733 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.5063749999999345,0.027082999999947788 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.6032500000001164,0.029624999999896318 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.4645419999999376,0.024458999999978914 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,synced,0,10.029667000000018,0.022874999999885404 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,synced,1,11.498125000000073,0.022791000000097483 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,synced,2,6.918250000000171,0.022249999999985448 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,0,2.456957999999986,0.020790999999917403 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,1,2.2648340000000644,0.02108300000008967 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,none,optimistic,2,6.198165999999901,0.02029099999981554 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,0,2.0570000000000164,0.01516700000001947 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,1,2.4609170000001086,0.01466700000014498 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,none,optimistic,2,2.150875000000042,0.01512500000012551 +pre-2312-after,035a5260,list + author,visible author update,1000,none,optimistic,0,15.349541000000045,0.030957999999827734 +pre-2312-after,035a5260,list + author,visible author update,1000,none,optimistic,1,7.5682919999999285,0.02891700000009223 +pre-2312-after,035a5260,list + author,visible author update,1000,none,optimistic,2,7.143082999999933,0.03199999999992542 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,0,3.665207999999893,0.041417000000137705 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,1,3.525709000000006,0.04212499999994179 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,none,optimistic,2,3.472125000000233,0.041040999999950145 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,3.9741250000001855,0.023916000000099302 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,3.819749999999658,0.025208000000020547 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,4.152000000000044,0.024541999999655673 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.572791000000052,0.027625000000170985 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.5530840000001263,0.021207999999660387 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.4614169999999831,0.020750000000134605 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,optimistic,0,5.525084000000334,0.1580420000000231 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,optimistic,1,6.142334000000119,0.19987499999979264 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,none,optimistic,2,5.636207999999897,0.16941600000018298 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,0,0.5123749999997926,0.019332999999733147 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,1,0.40695899999991525,0.019499999999879947 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,synced,2,0.38541699999996126,0.019457999999758613 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.437083000000257,0.09274999999979627 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.3845000000001164,0.09091699999999037 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.3956670000002305,0.0878339999999298 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,synced,0,0.8919169999999212,0.026125000000320142 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,synced,1,0.864875000000211,0.025166999999783002 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,synced,2,0.8749160000002121,0.024957999999969616 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,0,1.5787500000001273,0.049583999999867956 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,1,1.1721660000002885,0.04937500000005457 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,synced,2,4.961874999999964,0.0837920000003578 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,1.941707999999835,0.032541999999921245 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.6142079999999623,0.03374999999959982 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,1.5548749999998108,0.032625000000280124 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.2498329999998532,0.03300000000035652 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.33904100000017934,0.026749999999992724 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.21320799999966766,0.02712500000006912 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,synced,0,5.466625000000022,0.023999999999887223 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,synced,1,5.432458000000224,0.02275000000008731 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,synced,2,8.362749999999778,0.02187499999990905 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.4454999999998108,0.02108300000008967 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.5434159999999792,0.022124999999959982 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.40687500000012733,0.020917000000281405 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.46366699999998673,0.017000000000280124 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,1.2393749999996544,0.03512499999987995 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.59375,0.032875000000331056 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,optimistic,0,1.6413339999999152,0.06791699999985212 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,optimistic,1,1.3377500000001419,0.03770799999983865 +pre-2312-after,035a5260,list + author,visible author update,1000,manual,optimistic,2,1.103125000000091,0.03537499999993088 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.7982500000002801,0.05904199999986304 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.3402500000001965,0.08045799999990777 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.2210000000000036,0.05520799999976589 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,2.348500000000058,0.03412500000013097 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.9034159999996518,0.03379099999983737 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,2.0966659999999138,0.03274999999985084 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.2672499999998763,0.05695800000012241 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.2620830000000751,0.02654199999960838 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.2371250000001055,0.028542000000015832 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,optimistic,0,6.616999999999734,0.16499999999996362 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,optimistic,1,9.489042000000154,0.15783300000020972 +pre-2312-after,035a5260,open issues + documents,visible document update,1000,manual,optimistic,2,6.203958000000057,0.16820899999993344 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,synced,0,45.41341599999987,0.026499999999941792 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,synced,1,34.141875000000255,0.022792000000208645 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,synced,2,28.813582999999653,0.0225839999998243 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,0,29.70108399999981,4.32141700000011 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,1,34.11554200000046,4.707625000000007 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,synced,2,32.39604200000031,4.655416000000514 +pre-2312-after,035a5260,list + author,visible author update,10000,none,synced,0,147.62812500000018,0.029833000000508036 +pre-2312-after,035a5260,list + author,visible author update,10000,none,synced,1,96.5956670000005,0.030332999999700405 +pre-2312-after,035a5260,list + author,visible author update,10000,none,synced,2,87.76174999999967,0.029499999999643478 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,synced,0,31.095874999999978,0.04904100000021572 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,synced,1,34.64100000000053,0.049332999999933236 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,synced,2,40.9930830000003,0.05116600000019389 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,36.14441699999952,0.036084000000300875 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,43.84020799999962,0.037916000000222994 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,43.92183300000033,0.03491699999995035 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,0,3.6069580000003043,0.06787500000064028 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.918374999999287,0.02937500000007276 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,synced,2,2.8590000000003783,0.027875000000676664 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,synced,0,74.05416700000023,0.024833000000398897 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,synced,1,65.22358299999996,0.023917000000437838 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,synced,2,64.60079200000109,0.025165999999444466 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,0,34.10933400000067,0.02487500000097498 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,1,27.42687500000102,0.02637500000128057 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,none,optimistic,2,37.11579199999869,0.02479200000016135 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,0,33.47754200000054,0.018583000000944594 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,1,36.38195799999994,0.018582999999125605 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,none,optimistic,2,29.079625000000306,0.017334000000118976 +pre-2312-after,035a5260,list + author,visible author update,10000,none,optimistic,0,93.76533399999971,0.03241600000001199 +pre-2312-after,035a5260,list + author,visible author update,10000,none,optimistic,1,97.7008339999993,0.030416999999943073 +pre-2312-after,035a5260,list + author,visible author update,10000,none,optimistic,2,95.02454100000068,0.0305000000007567 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,0,35.93299999999908,0.05195900000035181 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,1,31.936249999998836,0.05799999999908323 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,none,optimistic,2,39.45600000000013,0.055082999999285676 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,49.24124999999913,0.030917000000044936 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,38.08833300000151,0.02899999999863212 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,41.691375000000335,0.028790999998818734 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.902541999999812,0.040750000000116415 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,4.042625000000044,0.033792000000175904 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.963541000000987,0.0398750000003929 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,optimistic,0,86.69787499999984,0.1751670000012382 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,optimistic,1,80.98495899999944,0.16695900000013353 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,none,optimistic,2,63.49804100000074,0.18291599999975006 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,0,0.9743749999997817,0.025207999999111053 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,1,0.9774170000000595,0.03370899999936228 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,synced,2,0.8675419999999576,0.023457999999664025 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.8343329999988782,0.36041600000135077 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.753499999998894,0.312208000001192 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,synced,2,0.9378339999984746,0.3123750000013388 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,synced,0,1.4554170000010345,0.028540999999677297 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,synced,1,1.8751659999998083,0.04200000000128057 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,synced,2,1.4137919999993755,0.02820900000006077 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,0,1.596333000001323,0.05570799999986775 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,1,5.409125000000131,0.05408299999908195 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,synced,2,1.5139160000017,0.051332999999431195 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,2.6427909999983967,0.039082999999664025 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,2.0643749999999272,0.039249999999810825 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,2.1946250000000873,0.040750000000116415 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.4773329999989073,0.041291999999884865 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.30379199999879347,0.03049999999893771 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.32691699999850243,0.03183300000091549 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,synced,0,71.6039579999997,0.023624999999810825 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,synced,1,58.343166000000565,0.02270899999894027 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,synced,2,54.88862500000141,0.02308400000038091 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,0,0.936333999999988,0.026499999999941792 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.8098330000011629,0.02608400000099209 +pre-2312-after,035a5260,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.7763749999994616,0.0253339999999298 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.8299580000002607,0.021875000000363798 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.9759589999994205,0.022874999998748535 +pre-2312-after,035a5260,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.9740830000009737,0.023042000000714324 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,optimistic,0,1.5565000000005966,0.03387500000098953 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,optimistic,1,1.3915830000005371,0.03187499999876309 +pre-2312-after,035a5260,list + author,visible author update,10000,manual,optimistic,2,1.4995829999988928,0.02991699999984121 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,0,2.337916000000405,0.06062500000189175 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.6282500000015716,0.06145800000012969 +pre-2312-after,035a5260,list + comment count,visible issue comment insert,10000,manual,optimistic,2,2.387249999999767,0.06308300000091549 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.3025410000009288,0.0334999999977299 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,2.5689170000005106,0.040000000000873115 +pre-2312-after,035a5260,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.979624999999942,0.03416600000127801 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.33900000000357977,0.028667000002315035 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.30975000000034925,0.027207999999518506 +pre-2312-after,035a5260,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.3681250000008731,0.027666000001772773 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,optimistic,0,65.05645899999945,0.1607910000020638 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,optimistic,1,56.8448750000025,0.14637500000026193 +pre-2312-after,035a5260,open issues + documents,visible document update,10000,manual,optimistic,2,117.44829100000061,0.15587500000037835 diff --git a/scripts/bench/boundary-only-suite-2026-11-05.csv b/scripts/bench/boundary-only-suite-2026-11-05.csv new file mode 100644 index 0000000000..f923fbcf82 --- /dev/null +++ b/scripts/bench/boundary-only-suite-2026-11-05.csv @@ -0,0 +1,505 @@ +variant,query,scenario,scale,index,mutation,repetition,coldMs,writeMedianMs +pre-2312,list: newest 50 open,visible issue update,100,none,synced,0,6.437833000000012,0.07100000000002638 +pre-2312,list: newest 50 open,visible issue update,100,none,synced,1,1.2859589999999912,0.045166999999992186 +pre-2312,list: newest 50 open,visible issue update,100,none,synced,2,0.9726670000000013,0.04604100000000244 +pre-2312,list: newest 50 open,visible issue delete,100,none,synced,0,0.7400420000000167,0.12479100000001608 +pre-2312,list: newest 50 open,visible issue delete,100,none,synced,1,0.7056249999999977,0.09508399999998574 +pre-2312,list: newest 50 open,visible issue delete,100,none,synced,2,0.43745799999999235,0.07325000000003001 +pre-2312,list + author,visible author update,100,none,synced,0,5.266290999999967,0.04662500000000591 +pre-2312,list + author,visible author update,100,none,synced,1,2.3541250000000105,0.04120900000003758 +pre-2312,list + author,visible author update,100,none,synced,2,1.3983749999999873,0.0338329999999587 +pre-2312,list + comment count,visible issue comment insert,100,none,synced,0,5.218249999999955,0.11283300000002328 +pre-2312,list + comment count,visible issue comment insert,100,none,synced,1,2.3127079999999864,0.06808300000000145 +pre-2312,list + comment count,visible issue comment insert,100,none,synced,2,1.9172080000000165,0.0620829999999728 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,synced,0,3.002666999999974,0.060291000000006534 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,synced,1,2.71779099999992,0.04574999999999818 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,synced,2,2.831833000000074,0.05174999999996999 +pre-2312,issue detail + comments,selected issue comment insert,100,none,synced,0,0.7960420000000568,0.03270800000007057 +pre-2312,issue detail + comments,selected issue comment insert,100,none,synced,1,0.3541250000000673,0.03170799999998053 +pre-2312,issue detail + comments,selected issue comment insert,100,none,synced,2,0.5447080000000142,0.034333000000060565 +pre-2312,open issues + documents,visible document update,100,none,synced,0,1.298249999999939,0.033167000000048574 +pre-2312,open issues + documents,visible document update,100,none,synced,1,1.1456249999999955,0.02575000000001637 +pre-2312,open issues + documents,visible document update,100,none,synced,2,0.9572079999999232,0.03108400000007805 +pre-2312,list: newest 50 open,visible issue update,100,none,optimistic,0,0.6108749999999645,0.03495799999996052 +pre-2312,list: newest 50 open,visible issue update,100,none,optimistic,1,0.7168750000000728,0.02549999999996544 +pre-2312,list: newest 50 open,visible issue update,100,none,optimistic,2,0.5157500000000255,0.02862500000003365 +pre-2312,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.515790999999922,0.02379200000007131 +pre-2312,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.6230839999999489,0.026167000000100415 +pre-2312,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.5862920000000713,0.02295800000001691 +pre-2312,list + author,visible author update,100,none,optimistic,0,1.5357919999999012,0.03799999999989723 +pre-2312,list + author,visible author update,100,none,optimistic,1,1.613917000000015,0.03704100000004473 +pre-2312,list + author,visible author update,100,none,optimistic,2,1.6091669999999567,0.029250000000047294 +pre-2312,list + comment count,visible issue comment insert,100,none,optimistic,0,1.7852079999998978,0.05920800000001236 +pre-2312,list + comment count,visible issue comment insert,100,none,optimistic,1,1.4777500000000146,0.05245899999999892 +pre-2312,list + comment count,visible issue comment insert,100,none,optimistic,2,1.369666000000052,0.0728750000000673 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.705416000000014,0.035041000000092026 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,2.61745899999994,0.03566599999999198 +pre-2312,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,1.727166000000011,0.031708000000094216 +pre-2312,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.47787499999992633,0.036291000000005624 +pre-2312,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.3492919999999913,0.028958000000102402 +pre-2312,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.34400000000005093,0.02400000000000091 +pre-2312,open issues + documents,visible document update,100,none,optimistic,0,1.193125000000009,0.21466699999996308 +pre-2312,open issues + documents,visible document update,100,none,optimistic,1,1.3091670000000022,0.21316600000000108 +pre-2312,open issues + documents,visible document update,100,none,optimistic,2,1.001374999999939,0.2458329999999478 +pre-2312,list: newest 50 open,visible issue update,100,manual,synced,0,1.7681659999998374,0.032999999999901775 +pre-2312,list: newest 50 open,visible issue update,100,manual,synced,1,0.565166999999974,0.028332999999975073 +pre-2312,list: newest 50 open,visible issue update,100,manual,synced,2,0.5115829999999733,0.021915999999919222 +pre-2312,list: newest 50 open,visible issue delete,100,manual,synced,0,0.5880409999999756,0.13229199999977936 +pre-2312,list: newest 50 open,visible issue delete,100,manual,synced,1,0.38608399999998255,0.0959170000000995 +pre-2312,list: newest 50 open,visible issue delete,100,manual,synced,2,0.47408400000017537,0.0722089999999298 +pre-2312,list + author,visible author update,100,manual,synced,0,1.0125829999999496,0.033958999999867956 +pre-2312,list + author,visible author update,100,manual,synced,1,1.0103750000000673,0.028958000000102402 +pre-2312,list + author,visible author update,100,manual,synced,2,0.9044159999998556,0.027874999999994543 +pre-2312,list + comment count,visible issue comment insert,100,manual,synced,0,1.083708999999999,0.049916000000166605 +pre-2312,list + comment count,visible issue comment insert,100,manual,synced,1,0.954082999999855,0.050917000000026746 +pre-2312,list + comment count,visible issue comment insert,100,manual,synced,2,1.1794159999999465,0.04741599999988466 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,1.7142499999999927,0.044666000000006534 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.7382090000000971,0.04283300000020063 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.6105420000001232,0.03424999999992906 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.2619159999999283,0.028999999999996362 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.22233299999993505,0.02795800000012605 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.22641599999997197,0.03279199999997218 +pre-2312,open issues + documents,visible document update,100,manual,synced,0,0.8715829999998732,0.02966700000001765 +pre-2312,open issues + documents,visible document update,100,manual,synced,1,0.7698330000000624,0.023292000000083135 +pre-2312,open issues + documents,visible document update,100,manual,synced,2,0.9320419999999103,0.022832999999991443 +pre-2312,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.3903330000000551,0.022832999999991443 +pre-2312,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.5321249999999509,0.0282919999999649 +pre-2312,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.3900830000000042,0.02158299999996416 +pre-2312,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.3660419999998794,0.017832999999882304 +pre-2312,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.5590839999999844,0.01741700000002311 +pre-2312,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.38274999999998727,0.01941700000020319 +pre-2312,list + author,visible author update,100,manual,optimistic,0,0.9036669999998139,0.02970899999991161 +pre-2312,list + author,visible author update,100,manual,optimistic,1,0.8136669999998958,0.02816700000016681 +pre-2312,list + author,visible author update,100,manual,optimistic,2,0.8304590000000189,0.028583000000026004 +pre-2312,list + comment count,visible issue comment insert,100,manual,optimistic,0,0.9933330000001206,0.041999999999916326 +pre-2312,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.0699999999999363,0.044499999999970896 +pre-2312,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.043583000000126,0.043292000000064945 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.946957999999995,0.029041999999890322 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,1.9580000000000837,0.03416700000002493 +pre-2312,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.7155829999999241,0.027791999999863037 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.3862500000000182,0.021749999999883585 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.19299999999998363,0.022459000000026208 +pre-2312,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.19545799999991686,0.022915999999895575 +pre-2312,open issues + documents,visible document update,100,manual,optimistic,0,0.7149590000001353,0.15637500000002547 +pre-2312,open issues + documents,visible document update,100,manual,optimistic,1,0.7264999999999873,0.15412500000002183 +pre-2312,open issues + documents,visible document update,100,manual,optimistic,2,0.6269159999999374,0.15383399999996072 +pre-2312,list: newest 50 open,visible issue update,1000,none,synced,0,2.224666999999954,0.018041999999923064 +pre-2312,list: newest 50 open,visible issue update,1000,none,synced,1,2.899499999999989,0.018542000000024927 +pre-2312,list: newest 50 open,visible issue update,1000,none,synced,2,3.760667000000012,0.021958000000040556 +pre-2312,list: newest 50 open,visible issue delete,1000,none,synced,0,2.8583749999997963,0.40245900000013535 +pre-2312,list: newest 50 open,visible issue delete,1000,none,synced,1,3.5424580000001242,0.514417000000094 +pre-2312,list: newest 50 open,visible issue delete,1000,none,synced,2,2.9318329999998696,0.4328330000000733 +pre-2312,list + author,visible author update,1000,none,synced,0,8.336707999999817,0.025417000000061307 +pre-2312,list + author,visible author update,1000,none,synced,1,8.10850000000005,0.024625000000014552 +pre-2312,list + author,visible author update,1000,none,synced,2,7.7929589999998825,0.025417000000061307 +pre-2312,list + comment count,visible issue comment insert,1000,none,synced,0,6.986875000000055,0.04874999999992724 +pre-2312,list + comment count,visible issue comment insert,1000,none,synced,1,3.280332999999928,0.047000000000025466 +pre-2312,list + comment count,visible issue comment insert,1000,none,synced,2,4.126166999999896,0.048125000000027285 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,5.450041999999939,0.04141600000002654 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,4.976791999999932,0.03483400000004622 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,7.416125000000193,0.06100000000014916 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.6738749999999527,0.03579199999967386 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.7684580000000096,0.03641699999980119 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.5666250000003856,0.03604200000017954 +pre-2312,open issues + documents,visible document update,1000,none,synced,0,11.165500000000065,0.0314170000001468 +pre-2312,open issues + documents,visible document update,1000,none,synced,1,6.452624999999898,0.030499999999847205 +pre-2312,open issues + documents,visible document update,1000,none,synced,2,7.263832999999977,0.02858299999979863 +pre-2312,list: newest 50 open,visible issue update,1000,none,optimistic,0,3.120292000000063,0.027041999999710242 +pre-2312,list: newest 50 open,visible issue update,1000,none,optimistic,1,3.16137499999968,0.0253749999997126 +pre-2312,list: newest 50 open,visible issue update,1000,none,optimistic,2,6.557166999999936,0.024249999999938154 +pre-2312,list: newest 50 open,visible issue delete,1000,none,optimistic,0,2.6525830000000497,0.0183750000001055 +pre-2312,list: newest 50 open,visible issue delete,1000,none,optimistic,1,2.897041000000172,0.01783300000033705 +pre-2312,list: newest 50 open,visible issue delete,1000,none,optimistic,2,3.3582079999996495,0.022875000000112777 +pre-2312,list + author,visible author update,1000,none,optimistic,0,13.444666000000325,0.03391600000031758 +pre-2312,list + author,visible author update,1000,none,optimistic,1,11.292791999999736,0.04366600000003018 +pre-2312,list + author,visible author update,1000,none,optimistic,2,11.275749999999789,0.033625000000029104 +pre-2312,list + comment count,visible issue comment insert,1000,none,optimistic,0,4.217499999999745,0.050917000000026746 +pre-2312,list + comment count,visible issue comment insert,1000,none,optimistic,1,3.459707999999864,0.04845800000020972 +pre-2312,list + comment count,visible issue comment insert,1000,none,optimistic,2,4.606249999999818,0.06079200000021956 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,4.386790999999903,0.032000000000152795 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,4.6262499999998,0.02974999999969441 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,4.435667000000194,0.03000000000020009 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.5077500000002146,0.030125000000225555 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.5762920000001941,0.03037499999982174 +pre-2312,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.5349160000000666,0.024333999999726075 +pre-2312,open issues + documents,visible document update,1000,none,optimistic,0,6.553750000000036,0.2515830000002097 +pre-2312,open issues + documents,visible document update,1000,none,optimistic,1,7.088416000000052,0.18616700000029596 +pre-2312,open issues + documents,visible document update,1000,none,optimistic,2,7.256167000000005,0.18150000000014188 +pre-2312,list: newest 50 open,visible issue update,1000,manual,synced,0,0.5846670000000813,0.02525000000014188 +pre-2312,list: newest 50 open,visible issue update,1000,manual,synced,1,0.547458000000006,0.02820800000017698 +pre-2312,list: newest 50 open,visible issue update,1000,manual,synced,2,0.5022500000000036,0.02250000000003638 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.5820829999997841,0.16133300000001327 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.4702919999999722,0.10304199999973207 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.4663330000003043,0.10224999999991269 +pre-2312,list + author,visible author update,1000,manual,synced,0,1.0003330000004098,0.027791000000433996 +pre-2312,list + author,visible author update,1000,manual,synced,1,1.0249589999998534,0.030625000000327418 +pre-2312,list + author,visible author update,1000,manual,synced,2,1.3715839999999844,0.02866600000015751 +pre-2312,list + comment count,visible issue comment insert,1000,manual,synced,0,1.7352920000002996,0.06304100000033941 +pre-2312,list + comment count,visible issue comment insert,1000,manual,synced,1,11.979667000000063,0.05712500000026921 +pre-2312,list + comment count,visible issue comment insert,1000,manual,synced,2,1.7575000000001637,0.06666600000016842 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,2.3748749999999745,0.04854099999965911 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,2.3764580000001843,0.03658399999994799 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,2.1169159999999465,0.03875000000016371 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.5991250000001855,0.037458000000242464 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.36570800000026793,0.02991599999995742 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.2674579999998059,0.027458000000024185 +pre-2312,open issues + documents,visible document update,1000,manual,synced,0,7.088000000000193,0.02954100000033577 +pre-2312,open issues + documents,visible document update,1000,manual,synced,1,6.509167000000161,0.026209000000108063 +pre-2312,open issues + documents,visible document update,1000,manual,synced,2,9.397750000000087,0.026583999999729713 +pre-2312,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.5747919999998885,0.024499999999989086 +pre-2312,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.454834000000119,0.023874999999861757 +pre-2312,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.4578750000000582,0.023333000000093307 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.660291000000143,0.02345900000000256 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.47616699999980483,0.02212500000041473 +pre-2312,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.4418749999999818,0.022707999999965978 +pre-2312,list + author,visible author update,1000,manual,optimistic,0,1.0764580000000024,0.03220800000008239 +pre-2312,list + author,visible author update,1000,manual,optimistic,1,0.9890840000002754,0.030124999999770807 +pre-2312,list + author,visible author update,1000,manual,optimistic,2,1.0328339999996388,0.03300000000035652 +pre-2312,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.6312079999997877,0.045415999999931955 +pre-2312,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.2329999999997199,0.04783399999996618 +pre-2312,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.484791000000314,0.052124999999705324 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,2.15099999999984,0.040124999999989086 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.7216670000002523,0.0314170000001468 +pre-2312,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,5.544916999999714,0.038584000000355445 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.321042000000034,0.03158399999983885 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.28437499999972715,0.02841599999965183 +pre-2312,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.35408300000017334,0.028540999999677297 +pre-2312,open issues + documents,visible document update,1000,manual,optimistic,0,7.21716699999979,0.18804199999976845 +pre-2312,open issues + documents,visible document update,1000,manual,optimistic,1,7.476791000000048,0.1878330000004098 +pre-2312,open issues + documents,visible document update,1000,manual,optimistic,2,11.24854200000027,0.19612499999993815 +pre-2312,list: newest 50 open,visible issue update,10000,none,synced,0,37.64170800000011,0.025958000000173342 +pre-2312,list: newest 50 open,visible issue update,10000,none,synced,1,37.37566699999934,0.03262499999982538 +pre-2312,list: newest 50 open,visible issue update,10000,none,synced,2,31.876624999999876,0.02400000000034197 +pre-2312,list: newest 50 open,visible issue delete,10000,none,synced,0,99.79429100000016,4.4435419999999795 +pre-2312,list: newest 50 open,visible issue delete,10000,none,synced,1,29.442291999999725,4.649250000000393 +pre-2312,list: newest 50 open,visible issue delete,10000,none,synced,2,26.390167000000474,4.726666999999907 +pre-2312,list + author,visible author update,10000,none,synced,0,104.03862500000014,0.028792000000066764 +pre-2312,list + author,visible author update,10000,none,synced,1,121.71470800000043,0.03899999999975989 +pre-2312,list + author,visible author update,10000,none,synced,2,87.94133300000067,0.035582999999860476 +pre-2312,list + comment count,visible issue comment insert,10000,none,synced,0,32.07275000000027,0.06191599999965547 +pre-2312,list + comment count,visible issue comment insert,10000,none,synced,1,32.55249999999978,0.05766700000003766 +pre-2312,list + comment count,visible issue comment insert,10000,none,synced,2,45.722375000000284,0.061582999999700405 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,39.172332999999526,0.050041999999848485 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,42.76637500000015,0.03712500000074215 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,45.77037500000006,0.04195799999979499 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,synced,0,3.123207999999977,0.04037499999958527 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,synced,1,3.893500000000131,0.03487499999937427 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,synced,2,3.120208000000275,0.04058400000030815 +pre-2312,open issues + documents,visible document update,10000,none,synced,0,80.18833300000006,0.026125000000320142 +pre-2312,open issues + documents,visible document update,10000,none,synced,1,64.8276249999999,0.02449999999953434 +pre-2312,open issues + documents,visible document update,10000,none,synced,2,93.69466699999975,0.04658399999971152 +pre-2312,list: newest 50 open,visible issue update,10000,none,optimistic,0,45.7529169999998,0.03133399999933317 +pre-2312,list: newest 50 open,visible issue update,10000,none,optimistic,1,38.13666699999885,0.028874999999970896 +pre-2312,list: newest 50 open,visible issue update,10000,none,optimistic,2,31.4443339999998,0.02645900000061374 +pre-2312,list: newest 50 open,visible issue delete,10000,none,optimistic,0,29.0573749999985,0.020791000000826898 +pre-2312,list: newest 50 open,visible issue delete,10000,none,optimistic,1,26.01783400000022,0.019083000001046457 +pre-2312,list: newest 50 open,visible issue delete,10000,none,optimistic,2,33.8849999999984,0.019666999998662504 +pre-2312,list + author,visible author update,10000,none,optimistic,0,104.0812079999996,0.036625000000640284 +pre-2312,list + author,visible author update,10000,none,optimistic,1,99.43716700000004,0.03695800000059535 +pre-2312,list + author,visible author update,10000,none,optimistic,2,99.01345799999945,0.03670799999963492 +pre-2312,list + comment count,visible issue comment insert,10000,none,optimistic,0,44.339459000000716,0.0694999999996071 +pre-2312,list + comment count,visible issue comment insert,10000,none,optimistic,1,35.650040999998964,0.06029099999977916 +pre-2312,list + comment count,visible issue comment insert,10000,none,optimistic,2,33.893958000000566,0.05754200000046694 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,42.66108399999939,0.034166999999797554 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,34.286707999999635,0.030208000000129687 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,37.79620800000157,0.029209000000264496 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,10.585583000000042,0.03829099999893515 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,3.318041999998968,0.03262499999982538 +pre-2312,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.074458000000959,0.02937500000007276 +pre-2312,open issues + documents,visible document update,10000,none,optimistic,0,73.01395799999955,0.16575000000011642 +pre-2312,open issues + documents,visible document update,10000,none,optimistic,1,69.48858300000029,0.15583299999889277 +pre-2312,open issues + documents,visible document update,10000,none,optimistic,2,59.107208999999784,0.16079100000024482 +pre-2312,list: newest 50 open,visible issue update,10000,manual,synced,0,1.29741599999943,0.03741699999955017 +pre-2312,list: newest 50 open,visible issue update,10000,manual,synced,1,0.8663749999996071,0.02691699999923003 +pre-2312,list: newest 50 open,visible issue update,10000,manual,synced,2,0.8599579999990965,0.024625000000014552 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.9140000000006694,0.4102500000008149 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.8409579999988637,0.39458299999932933 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,synced,2,0.7732909999995172,0.36645899999894027 +pre-2312,list + author,visible author update,10000,manual,synced,0,1.4752499999995052,0.029124999999112333 +pre-2312,list + author,visible author update,10000,manual,synced,1,2.390957999999955,0.04983400000128313 +pre-2312,list + author,visible author update,10000,manual,synced,2,2.316624999999476,0.047582999999576714 +pre-2312,list + comment count,visible issue comment insert,10000,manual,synced,0,2.5915420000001177,0.07625000000007276 +pre-2312,list + comment count,visible issue comment insert,10000,manual,synced,1,2.556666000000405,0.10266699999920093 +pre-2312,list + comment count,visible issue comment insert,10000,manual,synced,2,1.9720420000012382,0.06508299999950395 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,2.34900000000016,0.04408300000068266 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,2.3036250000004657,0.04404100000101607 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,2.220083000000159,0.04291699999885168 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.4035830000011629,0.03783300000031886 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.3545830000002752,0.038291999999273685 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.42804199999955017,0.03795899999931862 +pre-2312,open issues + documents,visible document update,10000,manual,synced,0,78.09741700000086,0.026125000000320142 +pre-2312,open issues + documents,visible document update,10000,manual,synced,1,67.4552079999994,0.02637499999946158 +pre-2312,open issues + documents,visible document update,10000,manual,synced,2,66.4067500000001,0.025584000000890228 +pre-2312,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.4539589999985765,0.02862499999901047 +pre-2312,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.8290000000015425,0.02712500000052387 +pre-2312,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.9782080000004498,0.027750000001105946 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.1284169999998994,0.03429200000027777 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.9064169999983278,0.02283299999908195 +pre-2312,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.7435000000004948,0.021292000001267297 +pre-2312,list + author,visible author update,10000,manual,optimistic,0,1.3801249999996799,0.03133299999899464 +pre-2312,list + author,visible author update,10000,manual,optimistic,1,1.2142079999975977,0.03033300000242889 +pre-2312,list + author,visible author update,10000,manual,optimistic,2,1.334541000000172,0.03108300000167219 +pre-2312,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.8516249999993306,0.05774999999994179 +pre-2312,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.5667089999988093,0.05941700000039418 +pre-2312,list + comment count,visible issue comment insert,10000,manual,optimistic,2,2.0553749999999127,0.06020799999896553 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.2786249999990105,0.03462500000023283 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,11.491250000002765,0.03341599999839673 +pre-2312,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.193457999997918,0.03341700000237324 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.401332999997976,0.037582999997539446 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.34391600000162725,0.030167000000801636 +pre-2312,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.33537499999874854,0.02895899999930407 +pre-2312,open issues + documents,visible document update,10000,manual,optimistic,0,76.58079199999702,0.16916700000001583 +pre-2312,open issues + documents,visible document update,10000,manual,optimistic,1,129.4310000000005,0.1610000000000582 +pre-2312,open issues + documents,visible document update,10000,manual,optimistic,2,53.110625000001164,0.14749999999912689 +boundary-implementation,list: newest 50 open,visible issue update,100,none,synced,0,5.322458000000012,0.052500000000009095 +boundary-implementation,list: newest 50 open,visible issue update,100,none,synced,1,0.9723749999999995,0.04095800000004601 +boundary-implementation,list: newest 50 open,visible issue update,100,none,synced,2,0.6993340000000217,0.033415999999988344 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,synced,0,0.6526250000000005,0.09774999999996226 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,synced,1,0.46204199999999673,0.07983400000000529 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,synced,2,0.4692919999999958,0.06824999999997772 +boundary-implementation,list + author,visible author update,100,none,synced,0,5.38070799999997,0.04266699999999446 +boundary-implementation,list + author,visible author update,100,none,synced,1,2.1527079999999614,0.040792000000010376 +boundary-implementation,list + author,visible author update,100,none,synced,2,1.3006670000000327,0.030208000000016 +boundary-implementation,list + comment count,visible issue comment insert,100,none,synced,0,4.351499999999987,0.08145799999999781 +boundary-implementation,list + comment count,visible issue comment insert,100,none,synced,1,1.7961669999999685,0.07162499999998317 +boundary-implementation,list + comment count,visible issue comment insert,100,none,synced,2,1.5097499999999968,0.06029099999994969 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,synced,0,3.342375000000004,0.04737499999998818 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,synced,1,2.665999999999997,0.04195799999996552 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,synced,2,3.4672500000000355,0.04129199999999855 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,synced,0,0.5346249999999486,0.03458299999999781 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,synced,1,0.32704200000000583,0.03325000000000955 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,synced,2,0.3965840000000185,0.0327909999999747 +boundary-implementation,open issues + documents,visible document update,100,none,synced,0,1.0900829999999928,0.03033400000003894 +boundary-implementation,open issues + documents,visible document update,100,none,synced,1,1.0952500000000214,0.033749999999997726 +boundary-implementation,open issues + documents,visible document update,100,none,synced,2,1.0629169999999704,0.038625000000024556 +boundary-implementation,list: newest 50 open,visible issue update,100,none,optimistic,0,0.5774169999999685,0.03170800000003737 +boundary-implementation,list: newest 50 open,visible issue update,100,none,optimistic,1,0.524167000000034,0.024416999999971267 +boundary-implementation,list: newest 50 open,visible issue update,100,none,optimistic,2,0.4888339999999971,0.028833999999960724 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.4957089999999198,0.022917000000006738 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.4588330000000269,0.01758299999994506 +boundary-implementation,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.48116700000002766,0.018291999999973996 +boundary-implementation,list + author,visible author update,100,none,optimistic,0,1.2541250000000446,0.031041000000072927 +boundary-implementation,list + author,visible author update,100,none,optimistic,1,1.252375000000029,0.03899999999998727 +boundary-implementation,list + author,visible author update,100,none,optimistic,2,1.2084580000000642,0.02937500000007276 +boundary-implementation,list + comment count,visible issue comment insert,100,none,optimistic,0,1.6881669999999076,0.05441599999994651 +boundary-implementation,list + comment count,visible issue comment insert,100,none,optimistic,1,1.3337080000000014,0.04558400000007623 +boundary-implementation,list + comment count,visible issue comment insert,100,none,optimistic,2,1.313541999999984,0.051124999999956344 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.38579100000004,0.029374999999959073 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,1.9835000000000491,0.028333999999972548 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,1.7882080000000542,0.02791700000000219 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.2941250000000082,0.025541999999973086 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.3600829999999178,0.02437499999996362 +boundary-implementation,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.3374579999999696,0.024375000000077307 +boundary-implementation,open issues + documents,visible document update,100,none,optimistic,0,0.9475830000000087,0.1784579999999778 +boundary-implementation,open issues + documents,visible document update,100,none,optimistic,1,1.1091669999999567,0.1662499999999909 +boundary-implementation,open issues + documents,visible document update,100,none,optimistic,2,0.8306670000000622,0.17362500000001546 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,synced,0,1.3084160000000793,0.024707999999918684 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,synced,1,0.704291000000012,0.023083999999926164 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,synced,2,0.4110410000000684,0.020999999999958163 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,synced,0,0.4403340000000071,0.09287500000004911 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,synced,1,0.345957999999996,0.08191599999997834 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,synced,2,0.35045800000000327,0.07741699999996854 +boundary-implementation,list + author,visible author update,100,manual,synced,0,1.031458999999927,0.02837499999998272 +boundary-implementation,list + author,visible author update,100,manual,synced,1,1.0265419999999494,0.029208000000039647 +boundary-implementation,list + author,visible author update,100,manual,synced,2,0.8801660000000311,0.029041000000006534 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,synced,0,1.362916000000041,0.06583299999999781 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,synced,1,1.3746660000000475,0.06579099999999016 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,synced,2,1.0771250000000236,0.05262500000003456 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,3.6857089999999744,0.03612499999996999 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.6497089999999162,0.035750000000007276 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.6019589999999653,0.036042000000065855 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.33024999999997817,0.03070900000000165 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.19495800000004238,0.03099999999994907 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.19866700000000037,0.031791999999995824 +boundary-implementation,open issues + documents,visible document update,100,manual,synced,0,0.9282499999999345,0.025167000000010376 +boundary-implementation,open issues + documents,visible document update,100,manual,synced,1,0.8815420000000813,0.024125000000140062 +boundary-implementation,open issues + documents,visible document update,100,manual,synced,2,0.9781669999999849,0.0232499999999618 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.3715420000000904,0.021666999999979453 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.46287499999994,0.021666999999979453 +boundary-implementation,list: newest 50 open,visible issue update,100,manual,optimistic,2,2.9365000000000236,0.02254199999993034 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.3376660000001266,0.01741600000013932 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.4198750000000473,0.018000000000029104 +boundary-implementation,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.5309590000001663,0.01741700000002311 +boundary-implementation,list + author,visible author update,100,manual,optimistic,0,3.223208999999997,0.028166999999939435 +boundary-implementation,list + author,visible author update,100,manual,optimistic,1,1.0649999999998272,0.029500000000098225 +boundary-implementation,list + author,visible author update,100,manual,optimistic,2,0.9004999999999654,0.028291000000081112 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.1051669999999376,0.04587500000002365 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.3205830000001697,0.046832999999878666 +boundary-implementation,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.0849169999999049,0.04645899999991343 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.5831250000001091,0.029709000000138985 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,1.5879999999999654,0.0286670000000413 +boundary-implementation,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.6858340000001135,0.028166999999939435 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.19920799999999872,0.023541000000022905 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.18412499999999454,0.023709000000053493 +boundary-implementation,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.19791699999996126,0.023833999999851585 +boundary-implementation,open issues + documents,visible document update,100,manual,optimistic,0,0.8872080000001006,0.16333299999996598 +boundary-implementation,open issues + documents,visible document update,100,manual,optimistic,1,0.9161249999999654,0.16945799999984956 +boundary-implementation,open issues + documents,visible document update,100,manual,optimistic,2,0.7325419999999667,0.16604100000017752 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,synced,0,5.294791000000032,0.02945799999997689 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,synced,1,2.704542000000174,0.018957999999884123 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,synced,2,2.5356669999998758,0.019166999999924883 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,synced,0,2.3507079999999405,0.42570900000009715 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,synced,1,2.815042000000176,0.4085410000000138 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,synced,2,2.064416999999821,0.42004100000008293 +boundary-implementation,list + author,visible author update,1000,none,synced,0,8.795666999999867,0.0264159999999265 +boundary-implementation,list + author,visible author update,1000,none,synced,1,11.199082999999973,0.02612500000009277 +boundary-implementation,list + author,visible author update,1000,none,synced,2,15.860333999999966,0.033208000000058746 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,synced,0,4.129959000000099,0.05124999999998181 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,synced,1,3.6998329999998987,0.05429199999980483 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,synced,2,3.451917000000094,0.049500000000080036 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,4.194459000000052,0.03249999999979991 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,7.854667000000063,0.0335419999998976 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,5.420832999999902,0.03583299999991141 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.6556250000001,0.030749999999898137 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.6501660000001266,0.029167000000143162 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.6396249999997963,0.029291000000057466 +boundary-implementation,open issues + documents,visible document update,1000,none,synced,0,7.493791999999985,0.023750000000063665 +boundary-implementation,open issues + documents,visible document update,1000,none,synced,1,7.223833000000013,0.023541999999906693 +boundary-implementation,open issues + documents,visible document update,1000,none,synced,2,7.417416000000003,0.023709000000053493 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,optimistic,0,2.4287500000000364,0.0211659999999938 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,optimistic,1,7.392458000000033,0.02158400000007532 +boundary-implementation,list: newest 50 open,visible issue update,1000,none,optimistic,2,2.2259170000002086,0.021041999999852123 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,optimistic,0,2.2470840000000862,0.01566699999989396 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,optimistic,1,6.453083000000106,0.015208000000029642 +boundary-implementation,list: newest 50 open,visible issue delete,1000,none,optimistic,2,2.3951250000000073,0.01608299999998053 +boundary-implementation,list + author,visible author update,1000,none,optimistic,0,10.708291000000372,0.030957999999827734 +boundary-implementation,list + author,visible author update,1000,none,optimistic,1,11.064875000000029,0.030416999999943073 +boundary-implementation,list + author,visible author update,1000,none,optimistic,2,11.627833999999893,0.028333000000202446 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,optimistic,0,8.188207999999577,0.04491599999983009 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,optimistic,1,3.606832999999824,0.04599999999982174 +boundary-implementation,list + comment count,visible issue comment insert,1000,none,optimistic,2,3.2349160000003394,0.04341599999997925 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,3.673041999999896,0.02658400000018446 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,3.58920900000021,0.026374999999916326 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,3.3640000000000327,0.024957999999969616 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,3.311000000000149,0.023541000000022905 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.4165419999999358,0.02250000000003638 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.40262499999971624,0.022375000000010914 +boundary-implementation,open issues + documents,visible document update,1000,none,optimistic,0,5.884165999999823,0.14554199999975026 +boundary-implementation,open issues + documents,visible document update,1000,none,optimistic,1,5.932166999999936,0.1493329999998423 +boundary-implementation,open issues + documents,visible document update,1000,none,optimistic,2,6.0218339999996715,0.14974999999958527 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,synced,0,0.47058300000026065,0.019041999999899417 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,synced,1,0.5670420000001286,0.027250000000094587 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,synced,2,4.208208000000013,0.019667000000026746 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.38258300000006784,0.0869580000003225 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.36120900000014444,0.08374999999978172 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,synced,2,2.661290999999892,0.08525000000008731 +boundary-implementation,list + author,visible author update,1000,manual,synced,0,0.8263750000000982,0.024708999999802472 +boundary-implementation,list + author,visible author update,1000,manual,synced,1,0.7644579999996495,0.02408400000012989 +boundary-implementation,list + author,visible author update,1000,manual,synced,2,0.8875419999999394,0.024582999999893218 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,synced,0,1.2842920000002778,0.051916999999775726 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,synced,1,5.969458999999915,0.0761250000000473 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,synced,2,1.2570000000000618,0.050834000000122614 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,2.2550830000000133,0.035667000000103144 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.6627919999996266,0.03454199999987395 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,1.7327919999997903,0.03345899999976609 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.20858399999997346,0.027208999999857042 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.22083399999974063,0.0283329999997477 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.2583749999998872,0.027624999999716238 +boundary-implementation,open issues + documents,visible document update,1000,manual,synced,0,9.859541000000263,0.022875000000112777 +boundary-implementation,open issues + documents,visible document update,1000,manual,synced,1,9.508499999999913,0.022707999999965978 +boundary-implementation,open issues + documents,visible document update,1000,manual,synced,2,8.553583000000344,0.0226249999996071 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.4922500000002401,0.020709000000351807 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.4850419999997939,0.021041999999852123 +boundary-implementation,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.41249999999990905,0.02045799999996234 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.44516699999985576,0.024875000000065484 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.4762500000001637,0.017000000000280124 +boundary-implementation,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.43499999999994543,0.017707999999856838 +boundary-implementation,list + author,visible author update,1000,manual,optimistic,0,1.0819579999997586,0.027875000000221917 +boundary-implementation,list + author,visible author update,1000,manual,optimistic,1,0.9651249999997162,0.028333000000202446 +boundary-implementation,list + author,visible author update,1000,manual,optimistic,2,0.9308340000002318,0.027458000000024185 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.288416999999754,0.047458000000005995 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,optimistic,1,4.809832999999799,0.049790999999913765 +boundary-implementation,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.287166999999954,0.04641699999956472 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,1.9292079999995622,0.029416999999739346 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.668749999999818,0.029459000000315427 +boundary-implementation,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,1.655250000000251,0.030500000000301952 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.2777080000000751,0.024166000000150234 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.22091600000021572,0.024833999999827938 +boundary-implementation,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.21795799999972587,0.024875000000065484 +boundary-implementation,open issues + documents,visible document update,1000,manual,optimistic,0,7.269291000000067,0.15891699999974662 +boundary-implementation,open issues + documents,visible document update,1000,manual,optimistic,1,6.619375000000218,0.16108299999996234 +boundary-implementation,open issues + documents,visible document update,1000,manual,optimistic,2,7.575917000000118,0.16312500000003638 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,synced,0,33.61374999999998,0.021832999999787717 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,synced,1,32.412874999999985,0.02304199999980483 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,synced,2,34.99887499999977,0.022709000000304513 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,synced,0,32.38108300000022,4.74054199999955 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,synced,1,24.714833,4.032457999999679 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,synced,2,25.763958000000457,4.6339590000006865 +boundary-implementation,list + author,visible author update,10000,none,synced,0,110.72525000000041,0.029790999999931955 +boundary-implementation,list + author,visible author update,10000,none,synced,1,108.38783299999977,0.029416999999739346 +boundary-implementation,list + author,visible author update,10000,none,synced,2,101.4605419999998,0.030624999999417923 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,synced,0,36.86162500000046,0.054500000000189175 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,synced,1,35.42604200000005,0.052290999999968335 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,synced,2,28.531750000000102,0.05337500000041473 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,80.78712500000074,0.03579199999967386 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,30.347791000000143,0.03320799999983137 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,29.90216700000019,0.033707999999933236 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,synced,0,7.280917000000045,0.03083299999980227 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.1152499999998327,0.028374999999869033 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,synced,2,3.1011249999992287,0.03487500000028376 +boundary-implementation,open issues + documents,visible document update,10000,none,synced,0,87.2987920000005,0.02400000000034197 +boundary-implementation,open issues + documents,visible document update,10000,none,synced,1,90.38908399999946,0.025125000000116415 +boundary-implementation,open issues + documents,visible document update,10000,none,synced,2,81.82754099999966,0.0242500000003929 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,optimistic,0,31.5590830000001,0.022500000000945874 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,optimistic,1,33.03087500000038,0.022499999999126885 +boundary-implementation,list: newest 50 open,visible issue update,10000,none,optimistic,2,37.938624999998865,0.02449999999953434 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,optimistic,0,28.032249999998385,0.017208000001119217 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,optimistic,1,37.35308400000031,0.017625000000407454 +boundary-implementation,list: newest 50 open,visible issue delete,10000,none,optimistic,2,31.56708299999991,0.018167000000175904 +boundary-implementation,list + author,visible author update,10000,none,optimistic,0,113.07758400000057,0.03137500000048021 +boundary-implementation,list + author,visible author update,10000,none,optimistic,1,95.39029200000004,0.031000000000858563 +boundary-implementation,list + author,visible author update,10000,none,optimistic,2,85.43629200000032,0.029166000000259373 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,optimistic,0,28.806749999999738,0.05162500000005821 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,optimistic,1,33.51500000000124,0.0608330000013666 +boundary-implementation,list + comment count,visible issue comment insert,10000,none,optimistic,2,33.773457999999664,0.05087500000081491 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,28.422458000000915,0.026417000000947155 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,29.85479200000009,0.02641600000060862 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,35.1359999999986,0.02645900000061374 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,2.143292000000656,0.024625000000014552 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,6.519209000000046,0.024166999999579275 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.1676659999993717,0.023665999999138876 +boundary-implementation,open issues + documents,visible document update,10000,none,optimistic,0,79.66420900000048,0.1560829999998532 +boundary-implementation,open issues + documents,visible document update,10000,none,optimistic,1,65.74704199999906,0.14404099999956088 +boundary-implementation,open issues + documents,visible document update,10000,none,optimistic,2,63.82250000000022,0.14574999999967986 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,synced,0,0.9992500000007567,0.021333000000595348 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,synced,1,0.8537919999998849,0.021708000000216998 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,synced,2,0.7862079999995331,0.020624999999199645 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.934333000001061,0.4130829999994603 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.7416250000005675,0.3118749999994179 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,synced,2,0.7522910000006959,0.3045409999995172 +boundary-implementation,list + author,visible author update,10000,manual,synced,0,1.3401670000002923,0.02675000000090222 +boundary-implementation,list + author,visible author update,10000,manual,synced,1,5.508291999998619,0.025875000001178705 +boundary-implementation,list + author,visible author update,10000,manual,synced,2,1.5566250000010768,0.02695800000037707 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,synced,0,1.6070419999996375,0.0532920000005106 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,synced,1,1.5525420000012673,0.05145799999991141 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,synced,2,4.791417000000365,0.052665999999589985 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,2.179208000001381,0.036458000000493485 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,2.6166249999987485,0.03779199999917182 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,1.9468329999999696,0.03637500000149885 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.5533749999995052,0.06183400000008987 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.3522499999999127,0.03387500000098953 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.4258750000008149,0.033625000000029104 +boundary-implementation,open issues + documents,visible document update,10000,manual,synced,0,94.73408300000119,0.03375000000050932 +boundary-implementation,open issues + documents,visible document update,10000,manual,synced,1,71.49741600000016,0.024541999999200925 +boundary-implementation,open issues + documents,visible document update,10000,manual,synced,2,78.40245800000048,0.024541999999200925 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.217666000000463,0.021040999999968335 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.7398749999993015,0.02162499999940337 +boundary-implementation,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.0157919999983278,0.02308400000038091 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.7625829999997222,0.018707999999605818 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.7731669999993755,0.017625000000407454 +boundary-implementation,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.8899579999997513,0.01862499999879219 +boundary-implementation,list + author,visible author update,10000,manual,optimistic,0,1.3953340000007302,0.027000000000043656 +boundary-implementation,list + author,visible author update,10000,manual,optimistic,1,1.3034580000003189,0.028291999999055406 +boundary-implementation,list + author,visible author update,10000,manual,optimistic,2,1.2272079999984271,0.027749999999286956 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.9098750000011933,0.058666000000812346 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.919832999999926,0.05762499999946158 +boundary-implementation,list + comment count,visible issue comment insert,10000,manual,optimistic,2,1.58391599999959,0.058791999999812106 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.4344160000000556,0.03108300000167219 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,7.278249999999389,0.030415999997785548 +boundary-implementation,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.23149999999805,0.030750000001717126 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.354458000001614,0.028166000000055647 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.3273750000007567,0.041540999998687766 +boundary-implementation,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.3440000000009604,0.02674999999726424 +boundary-implementation,open issues + documents,visible document update,10000,manual,optimistic,0,77.06208300000071,0.15795900000011898 +boundary-implementation,open issues + documents,visible document update,10000,manual,optimistic,1,72.29575000000114,0.15375000000130967 +boundary-implementation,open issues + documents,visible document update,10000,manual,optimistic,2,66.85316700000112,0.1442079999978887 diff --git a/scripts/bench/ci-variation-2026-11-05.csv b/scripts/bench/ci-variation-2026-11-05.csv new file mode 100644 index 0000000000..6b4c27bf98 --- /dev/null +++ b/scripts/bench/ci-variation-2026-11-05.csv @@ -0,0 +1,101 @@ +run,base_sha,candidate_sha,cpu,metric,query,geomean_ratio,min_ratio,max_ratio +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,write,list: newest 50 open,0.9967542114107258,0.5988449577960846,1.7252833373513021 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,write,list + author,0.9250230981277567,0.5908342164075835,1.0994638278030118 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,write,list + comment count,0.8945243836063341,0.5953219390016173,1.5908399043224695 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,write,list + 3 recent comments,1.0581387583737896,0.589554241587178,1.8180714452679183 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,write,issue detail + comments,0.9452208571835268,0.5044284421530245,1.0863006785183644 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,cold,list: newest 50 open,0.9270644340233967,0.22998346808173484,1.5893575220299236 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,cold,list + author,1.0678250847779525,0.8603272473397692,1.525215683799086 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,cold,list + comment count,1.1906435766945196,0.8264966831949343,2.3533835761656365 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,cold,list + 3 recent comments,0.9851631066514575,0.3346285452217284,1.6569099660398354 +41733970688,70a744b3a,0c13df291,AMD EPYC 9V45 96-Core Processor,cold,issue detail + comments,1.0447517918278142,0.8113891396877897,1.3511770920812634 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,write,list: newest 50 open,0.9787287333836974,0.613780137307772,1.2680197532118838 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,write,list + author,1.0147006897931063,0.9309990215420938,1.1293996187052244 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,write,list + comment count,1.069699343290528,0.8898286903453337,1.272697077061633 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,write,list + 3 recent comments,1.0832866702125643,0.9388529013163207,2.0179008441715247 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,write,issue detail + comments,1.0769625977690898,0.9297018120811392,1.4266187512067015 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,cold,list: newest 50 open,1.0155594338573746,0.6682599797768296,1.9571531112720197 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,cold,list + author,1.0628241948065875,0.861713854350394,1.3480614109873073 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,cold,list + comment count,0.9253089362578574,0.5618661702733296,1.2446632870674021 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,cold,list + 3 recent comments,0.9303305287514274,0.703541298142838,1.2763793087806126 +41834285738,8feab6ea3,98af069c0,AMD EPYC 9V74 80-Core Processor,cold,issue detail + comments,1.06064770867442,0.8316201270064997,1.2390202076610717 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,write,list: newest 50 open,0.9778065859687338,0.8813284969088437,1.0387901349458193 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,write,list + author,0.9915214267639865,0.76191964440793,1.386765405512799 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,write,list + comment count,0.9414759713619728,0.807805056797052,1.0603857167439936 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,write,list + 3 recent comments,0.9752266027154953,0.6155121381327728,1.8432568467663697 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,write,issue detail + comments,0.9447116646331741,0.6639944526192759,1.09496910003852 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,cold,list: newest 50 open,0.9432890390394945,0.5878880136201523,1.518517280383605 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,cold,list + author,0.9384363606382823,0.6429230630060829,1.1860542986812461 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,cold,list + comment count,1.083885508117564,0.7552146984387128,3.042094754761168 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,cold,list + 3 recent comments,0.9364558714842632,0.3705409568319263,1.4579166550177356 +41835647431,8feab6ea3,8ab671ea0,AMD EPYC 7763 64-Core Processor,cold,issue detail + comments,0.9198856604799062,0.7082358284303322,1.726012319293218 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,write,list: newest 50 open,0.9581185152398907,0.5949359135456896,1.1014967616913394 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,write,list + author,0.9956870919953319,0.8027115406843474,1.1025836417746162 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,write,list + comment count,1.0123438608947548,0.9340807251320821,1.1298114030675883 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,write,list + 3 recent comments,1.0148870816519522,0.8813495351149179,1.2426871926590253 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,write,issue detail + comments,1.0053207469148624,0.9222167426993242,1.2076948366251243 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,cold,list: newest 50 open,0.9679418329386089,0.416482246217911,1.3680878796314777 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,cold,list + author,0.9175564659996241,0.48698581892259174,1.2433857238403303 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,cold,list + comment count,0.9739676225962235,0.7460326937830161,1.4281913121159522 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,cold,list + 3 recent comments,0.9952667851353472,0.8316867027309733,1.4308817412632222 +41859405196,8feab6ea3,1c7ad21f0,AMD EPYC 9V74 80-Core Processor,cold,issue detail + comments,1.0350231253824804,0.5886603640929554,1.4584793467584891 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,write,list: newest 50 open,0.9751076559843876,0.8236317243300686,1.1536439847708364 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,write,list + author,1.0046202160451236,0.7214503474653889,1.7316360129264938 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,write,list + comment count,1.0023411708934604,0.8802278663104474,1.3580427023069228 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,write,list + 3 recent comments,1.0181238999988604,0.7624350928306541,1.5404718819597636 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,write,issue detail + comments,1.0290306157241162,0.9227792636446926,1.5139031629773565 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,cold,list: newest 50 open,0.9941858126634356,0.5895916839795564,1.773074152708623 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,cold,list + author,1.055130338292773,0.7785155234227705,1.980127622119808 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,cold,list + comment count,0.9592455702497737,0.535450887170766,1.7613080329143562 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,cold,list + 3 recent comments,1.0082385268535792,0.8396408839436549,1.2881285343327629 +41860456469,8feab6ea3,54470bca7,AMD EPYC 7763 64-Core Processor,cold,issue detail + comments,1.002467386566335,0.8704915623284517,1.5305290433346523 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,write,list: newest 50 open,1.0277120070639723,0.7180858367783624,1.6789162869480971 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,write,list + author,0.9759308245115625,0.33754516347981156,1.6278622661487263 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,write,list + comment count,1.0303491822566184,0.7556098899195604,1.44398325220595 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,write,list + 3 recent comments,1.0873248180983144,0.9843829157082277,1.5500824735613015 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,write,issue detail + comments,1.1003836179261093,0.9881434186111436,1.5938015899957825 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,cold,list: newest 50 open,1.1176916260845549,0.7483917872511086,2.0330227262255773 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,cold,list + author,1.2030798447581257,0.8155714723053847,3.5206807383158423 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,cold,list + comment count,1.0174282154498604,0.5732781001537335,1.4490857403880075 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,cold,list + 3 recent comments,0.878407671545354,0.31962097679154994,1.6688639007366721 +41869187814,8feab6ea3,392b96172,AMD EPYC 9V74 80-Core Processor,cold,issue detail + comments,1.0532492744066264,0.8247220852026605,1.2957480513927226 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,write,list: newest 50 open,0.9728598351706256,0.5987255974363018,1.4686608049352838 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,write,list + author,0.9841401307776664,0.7729938526039898,1.4122397585930049 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,write,list + comment count,0.9513096586883928,0.7434056065357824,1.0372076350442632 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,write,list + 3 recent comments,1.0002601405249998,0.9215320110560609,1.2994571949222333 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,write,issue detail + comments,0.9459970919208207,0.7239895856126072,1.0597899535990383 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,cold,list: newest 50 open,1.0577587597883635,0.5817134260135451,7.187935165653656 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,cold,list + author,0.8843098174671965,0.6127699190072693,1.1093782745638878 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,cold,list + comment count,0.9664396530027132,0.6932467054036519,1.0959820483883624 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,cold,list + 3 recent comments,1.0175072606911388,0.7865996875038831,1.3984126398998915 +41869970473,8feab6ea3,10c609ad6,AMD EPYC 7763 64-Core Processor,cold,issue detail + comments,1.0269892263819458,0.700659614484825,1.275680164359756 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,write,list: newest 50 open,1.003723974662812,0.48030172147726086,1.612226301126662 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,write,list + author,1.0040367370214942,0.7753872319744781,1.4551137387030426 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,write,list + comment count,1.0502567667070508,0.9126749884908414,1.9852302130655395 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,write,list + 3 recent comments,0.9275608526261577,0.48864182839484743,1.1532138322822134 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,write,issue detail + comments,0.9949408665056879,0.9080740757836402,1.1405085336073681 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,cold,list: newest 50 open,1.0610883117294476,0.6560780293270281,2.687397545457947 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,cold,list + author,1.0190779571421733,0.8210035031722412,1.2810322956381754 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,cold,list + comment count,0.8506866509021331,0.28584333299567616,1.150916249747865 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,cold,list + 3 recent comments,1.0286529403190838,0.6224097334573729,1.5628234597746524 +41931113982,8feab6ea3,c0ba11601,AMD EPYC 9V45 96-Core Processor,cold,issue detail + comments,1.0788473247201817,0.7869557776635019,1.453216465418906 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,write,list: newest 50 open,0.9584660513223295,0.5771881259663041,1.2404737369863956 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,write,list + author,0.9772596203520164,0.8205674268869403,1.056305016816256 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,write,list + comment count,0.9508565101009216,0.7370912246786601,1.088956799011952 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,write,list + 3 recent comments,0.9668719223600837,0.4500137107330461,1.8371305679380692 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,write,issue detail + comments,0.9873047168871855,0.7448962655604251,1.252591715283033 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,cold,list: newest 50 open,0.9534297842036759,0.5481559759107805,1.6259455587783649 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,cold,list + author,1.0303002625743423,0.5432910450644934,2.5924021120256486 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,cold,list + comment count,0.9400635743991955,0.4711944356896964,1.1827056497853838 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,cold,list + 3 recent comments,0.9763035383576575,0.7677500788279166,1.459089768443156 +41932035972,8feab6ea3,52b5e0695,Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz,cold,issue detail + comments,0.9705166030732498,0.7925488246244079,1.281860094484782 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,write,list: newest 50 open,0.9748070670073687,0.6287668385976743,1.5915074090353534 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,write,list + author,0.9951641828274975,0.9071159174920653,1.152314674733648 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,write,list + comment count,0.9616613291698778,0.6717791959387671,1.3308269831686648 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,write,list + 3 recent comments,0.9595724994557062,0.41649028956936746,1.4760002863085284 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,write,issue detail + comments,0.9656027633329428,0.6404988181990806,1.6385753080293728 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,cold,list: newest 50 open,1.102821106116012,0.49544315778935755,5.778907352764282 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,cold,list + author,0.973523738089418,0.3129380426121494,1.6989649281181614 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,cold,list + comment count,0.9555943911159811,0.26079455392601475,1.770612430455543 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,cold,list + 3 recent comments,0.9961314158627798,0.8715399635244612,1.3008264696740213 +41935508145,8feab6ea3,23c03b011,AMD EPYC 9V45 96-Core Processor,cold,issue detail + comments,1.0488072847259502,0.7708398441177395,1.4730426193911277 diff --git a/scripts/bench/compare-incremental-update.test.mjs b/scripts/bench/compare-incremental-update.test.mjs new file mode 100644 index 0000000000..26c2c399bd --- /dev/null +++ b/scripts/bench/compare-incremental-update.test.mjs @@ -0,0 +1,190 @@ +import assert from 'node:assert/strict' +import { spawnSync } from 'node:child_process' +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { test } from 'node:test' + +// Exercise the actual CI command and its report artifact. These controls make +// report corruption and cold-only regressions visible independently of writes. +function result(query = 'documents', scale = 100) { + return { + query, + scenario: 'update', + scale: { + label: String(scale), + issueCount: scale, + userCount: scale, + commentCount: scale, + }, + sourceIndexMode: 'none', + mutationMode: 'synced', + coldHydrateMs: 100, + coldHydrateSamplesMs: [99, 100, 101], + writeMedianSamplesMs: [0.099, 0.1, 0.101], + writeSummary: { + iterations: 100, + medianMs: 0.1, + p75Ms: 0.1, + p95Ms: 0.1, + minMs: 0.1, + maxMs: 0.1, + stddevMs: 0, + }, + } +} +function report(results = [result()]) { + return { + metadata: { + gitSha: 'fixture', + node: 'test', + platform: 'test', + cpu: 'test', + iterations: 100, + warmup: 20, + repetitions: 3, + }, + results, + } +} +function compare(base, candidate) { + const dir = mkdtempSync(join(tmpdir(), 'benchmark-gate-')) + try { + writeFileSync(join(dir, 'base.json'), JSON.stringify(base)) + writeFileSync(join(dir, 'candidate.json'), JSON.stringify(candidate)) + const outFile = join(dir, 'comparison.md') + const run = spawnSync( + process.execPath, + [ + '--import', + 'tsx', + 'scripts/bench/compare-incremental-update.ts', + `--base=${dir}/base.json`, + `--candidate=${dir}/candidate.json`, + `--outFile=${outFile}`, + '--failOnRegression=true', + ], + { encoding: 'utf8' }, + ) + return { + ...run, + markdown: run.stdout.includes('## Incremental') + ? readFileSync(outFile, 'utf8') + : '', + } + } finally { + rmSync(dir, { recursive: true, force: true }) + } +} +function scaleMetric(row, metric, factor) { + if (metric === 'write') { + row.writeSummary.medianMs *= factor + row.writeMedianSamplesMs = row.writeMedianSamplesMs.map( + (value) => value * factor, + ) + } else { + row.coldHydrateMs *= factor + row.coldHydrateSamplesMs = row.coldHydrateSamplesMs.map( + (value) => value * factor, + ) + } +} + +test('unchanged results and one transient spike pass', () => { + const base = report(), + candidate = structuredClone(base) + candidate.results[0].coldHydrateSamplesMs[2] = 1000 + candidate.results[0].writeMedianSamplesMs[2] = 10 + const run = compare(base, candidate) + assert.equal(run.status, 0, run.stderr) + assert.match(run.markdown, /CI regression gate: \*\*PASS\*\*/) +}) +for (const [metric, threshold] of [ + ['write', 0.3], + ['cold', 0.5], +]) { + for (const delta of [-0.001, 0.001]) { + test(`${metric} query gate distinguishes the threshold ${delta > 0 ? 'above' : 'below'}`, () => { + const base = report(), + candidate = structuredClone(base) + scaleMetric(candidate.results[0], metric, 1 + threshold + delta) + const run = compare(base, candidate) + assert.equal(run.status, delta > 0 ? 1 : 0, run.stderr) + if (delta > 0) + assert.match(run.markdown, /CI regression gate: \*\*FAIL\*\*/) + }) + } + test(`${metric} query regression cannot be cancelled by another query's improvement`, () => { + const base = report([result(), result('flat')]), + candidate = structuredClone(base) + scaleMetric(candidate.results[0], metric, 2) + scaleMetric(candidate.results[1], metric, 0.1) + assert.equal(compare(base, candidate).status, 1) + }) + test(`${metric} sustained isolated regression fails when query geomean is small`, () => { + const base = report( + Array.from({ length: 12 }, (_, i) => result('documents', i + 1)), + ), + candidate = structuredClone(base) + scaleMetric(candidate.results[0], metric, 2) + const run = compare(base, candidate) + assert.equal(run.status, 1, run.stderr) + assert.match(run.stderr, /every .* repetition/) + }) +} +for (const corruption of [ + 'empty', + 'missing-case', + 'new-case', + 'duplicate', + 'invalid-write', + 'invalid-cold', + 'missing-cold', + 'missing-repetitions', + 'invalid-repetitions', +]) { + test(`invalid ${corruption} reports cannot produce a green gate`, () => { + const base = report(), + candidate = structuredClone(base) + switch (corruption) { + case 'empty': + candidate.results = [] + break + case 'missing-case': + base.results.push(result('omitted')) + break + case 'new-case': + candidate.results.push(result('added')) + break + case 'duplicate': + candidate.results.push(candidate.results[0]) + break + case 'invalid-write': + candidate.results[0].writeSummary.medianMs = null + break + case 'invalid-cold': + candidate.results[0].coldHydrateSamplesMs[0] = -1 + break + case 'missing-cold': + delete base.results[0].coldHydrateMs + delete candidate.results[0].coldHydrateMs + break + case 'missing-repetitions': + delete candidate.results[0].writeMedianSamplesMs + break + case 'invalid-repetitions': + candidate.metadata.repetitions = 0 + break + } + assert.equal(compare(base, candidate).status, 1) + }) +} + +test('a regression from zero cannot disappear from the geometric mean', () => { + const base = report([result(), result('flat')]), + candidate = structuredClone(base) + base.results[0].writeSummary.medianMs = 0 + base.results[0].writeMedianSamplesMs = [0, 0, 0] + scaleMetric(candidate.results[1], 'write', 0.1) + assert.equal(compare(base, candidate).status, 1) +}) diff --git a/scripts/bench/compare-incremental-update.ts b/scripts/bench/compare-incremental-update.ts index 9a924d1016..c7a213416c 100644 --- a/scripts/bench/compare-incremental-update.ts +++ b/scripts/bench/compare-incremental-update.ts @@ -37,6 +37,8 @@ type RunResult = { mutationMode: string // Older reports may lack cold hydrate data. coldHydrateMs?: number + coldHydrateSamplesMs?: Array + writeMedianSamplesMs?: Array writeSummary: Summary } @@ -48,6 +50,7 @@ type Report = { gitSha: string iterations: number warmup: number + repetitions?: number } results: Array } @@ -67,15 +70,15 @@ type Comparison = { /** * A per-case timing that the report compares. Writes use the per-write median - * of many samples. Cold hydrate is one sample per case, so same-code runs vary - * by up to about ±50% on small cases; its flags need a larger relative change - * and a larger absolute floor. + * of many samples. Cold hydrate is noisier on shared runners; its diagnostic + * flags need a larger relative change and a larger absolute floor. */ type Metric = { label: string floorMs: number minRelativeThreshold: number value: (result: RunResult) => number | undefined + samples: (result: RunResult) => Array | undefined } // Relative change below which a result is considered noise, and an absolute @@ -90,12 +93,14 @@ const writeMetric: Metric = { floorMs: absoluteFloorMs, minRelativeThreshold: 0, value: (result) => result.writeSummary.medianMs, + samples: (result) => result.writeMedianSamplesMs, } const coldMetric: Metric = { label: `cold hydrate time`, floorMs: coldAbsoluteFloorMs, minRelativeThreshold: coldRelativeThreshold, value: (result) => result.coldHydrateMs, + samples: (result) => result.coldHydrateSamplesMs, } const args = parseArgs(process.argv.slice(2)) @@ -103,24 +108,74 @@ const args = parseArgs(process.argv.slice(2)) const base = readReport(args.base) const candidate = readReport(args.candidate) -const comparisons = compareReports(base, candidate) -const markdown = formatMarkdown(base, candidate, comparisons, args.threshold) +const matchedComparisons = compareReports(base, candidate) +if ( + args.failOnRegression && + matchedComparisons.some( + ({ base: baseResult, candidate: candidateResult }) => + baseResult.coldHydrateMs === undefined || + candidateResult.coldHydrateMs === undefined, + ) +) + throw new Error(`CI requires cold hydrate timings for every benchmark case`) +const markdown = formatMarkdown( + base, + candidate, + matchedComparisons, + args.threshold, +) if (args.outFile) { writeFileSync(args.outFile, markdown) } console.log(markdown) -const regressions = comparisons.filter((comparison) => - isRegression(comparison, args.threshold), -) +const regressions = regressionFailures(matchedComparisons, args.threshold) if (args.failOnRegression && regressions.length > 0) { - console.error(`\n${regressions.length} benchmark regression(s) found`) + console.error( + `\nBenchmark regression gate failed:\n${regressions.join(`\n`)}`, + ) process.exit(1) } function readReport(path: string): Report { - return JSON.parse(readFileSync(path, `utf8`)) as Report + const report = JSON.parse(readFileSync(path, `utf8`)) as Report + if (!Array.isArray(report.results) || report.results.length === 0) + throw new Error(`${path}: report has no benchmark results`) + const repetitions = report.metadata.repetitions + if ( + repetitions !== undefined && + (!Number.isInteger(repetitions) || repetitions < 1) + ) + throw new Error(`${path}: invalid repetition count`) + const seen = new Set() + for (const result of report.results) { + const key = resultKey(result) + if (seen.has(key)) throw new Error(`${path}: duplicate case ${key}`) + seen.add(key) + for (const metric of [writeMetric, coldMetric]) { + const value = metric.value(result) + const samples = metric.samples(result) + if ( + (value !== undefined && (!Number.isFinite(value) || value < 0)) || + (samples !== undefined && + (samples.length === 0 || + samples.some((sample) => !Number.isFinite(sample) || sample < 0))) + ) + throw new Error(`${path}: invalid ${metric.label} for ${key}`) + if (metric === writeMetric && value === undefined) + throw new Error(`${path}: missing write timing for ${key}`) + if ( + repetitions !== undefined && + value !== undefined && + samples?.length !== repetitions + ) + throw new Error( + `${path}: missing ${metric.label} repetitions for ${key}`, + ) + } + } + return report } function resultKey(result: RunResult): string { @@ -148,7 +203,7 @@ function compareReports( for (const result of candidateReport.results) { const key = resultKey(result) const baseResult = baseByKey.get(key) - if (!baseResult) continue + if (!baseResult) throw new Error(`Candidate case missing from base: ${key}`) matched.push({ key, @@ -167,6 +222,17 @@ function compareReports( }) } + if (matched.length !== baseByKey.size) + throw new Error(`Candidate report omits base benchmark cases`) + for (const comparison of matched) { + if ( + (comparison.base.coldHydrateMs === undefined) !== + (comparison.candidate.coldHydrateMs === undefined) + ) + throw new Error( + `Cold hydrate timing missing on one side: ${comparison.key}`, + ) + } return matched } @@ -243,18 +309,69 @@ function geomeanRatio( group: Array, metric: Metric = writeMetric, ): number { - const finite = group + const ratios = group .map((comparison) => metricRatio(comparison, metric)) - .filter( - (value): value is number => - value !== undefined && Number.isFinite(value) && value > 0, - ) - if (finite.length === 0) return 1 + .filter((value): value is number => value !== undefined && value >= 0) + if (ratios.length === 0) return 1 + if (ratios.includes(Number.POSITIVE_INFINITY)) return Number.POSITIVE_INFINITY + if (ratios.includes(0)) return 0 return Math.exp( - finite.reduce((sum, value) => sum + Math.log(value), 0) / finite.length, + ratios.reduce((sum, value) => sum + Math.log(value), 0) / ratios.length, ) } +/** CI policy calibrated against paired CI runs; see scripts/bench/README.md. + * Query geomeans catch distributed shifts without allowing improvements in + * another query or metric to hide them. Case ranges catch localized regressions. + * Single-run reports retain rollup gating but cannot claim repeat consistency. + */ +function regressionFailures( + comparisons: Array, + threshold: number, +): Array { + const failures: Array = [] + const byQuery = new Map>() + for (const comparison of comparisons) { + const group = byQuery.get(comparison.query) ?? [] + group.push(comparison) + byQuery.set(comparison.query, group) + } + for (const metric of [writeMetric, coldMetric]) { + const queryThreshold = Math.max( + threshold, + metric === coldMetric ? 0.5 : 0.3, + ) + for (const [query, group] of byQuery) { + if (geomeanRatio(group, metric) > 1 + queryThreshold) + failures.push( + `${query}: ${metric.label} geomean exceeds +${queryThreshold * 100}%`, + ) + } + for (const comparison of comparisons) { + const baseSamples = metric.samples(comparison.base) + const candidateSamples = metric.samples(comparison.candidate) + if ( + !baseSamples || + !candidateSamples || + baseSamples.length < 3 || + candidateSamples.length < 3 + ) + continue + const bestCandidate = Math.min(...candidateSamples) + const worstBase = Math.max(...baseSamples) + const caseThreshold = Math.max(queryThreshold, 0.5) + if ( + bestCandidate > worstBase && + isSignificant(worstBase, bestCandidate, caseThreshold, metric.floorMs) + ) + failures.push( + `${comparison.key}: every ${metric.label} repetition exceeds the base range by +${caseThreshold * 100}% and ${metric.floorMs}ms`, + ) + } + } + return failures +} + function formatRatio(value: number): string { return `${value.toFixed(2)}×` } @@ -275,7 +392,7 @@ function formatMarkdown( lines.push( `Comparing \`${candidateReport.metadata.gitSha}\` (this PR) against \`${baseReport.metadata.gitSha}\` (base). ` + `Write times are per-write medians over ${candidateReport.metadata.iterations} iterations ` + - `(${candidateReport.metadata.warmup} warmup writes). Cold hydrate is one timed first load of each query.`, + `(${candidateReport.metadata.warmup} warmup writes). Timings use the median of ${candidateReport.metadata.repetitions ?? 1} fresh fixture repetition(s).`, ) lines.push(``) const coldSummary = @@ -300,6 +417,13 @@ function formatMarkdown( ) } lines.push(``) + const gateFailures = regressionFailures(allComparisons, threshold) + lines.push( + `CI regression gate: **${gateFailures.length === 0 ? `PASS` : `FAIL`}**. Query geometric means: >+${Math.max(30, threshold * 100)}% writes or >+${Math.max(50, threshold * 100)}% cold. A case also fails when all three repetitions exceed the entire base range by >+${Math.max(50, threshold * 100)}% and the metric's absolute floor.`, + ) + if (gateFailures.length > 0) + lines.push(``, ...gateFailures.map((failure) => `- ${failure}`)) + lines.push(``) lines.push( `Per-case flags are noisy on shared runners. Read the geometric means first.`, ) @@ -323,9 +447,8 @@ function formatMarkdown( lines.push(``) } lines.push( - `Each row aggregates the ${allComparisons.length / byQuery.size || 0} ` + - `scale/index/write-mode configurations of that query; per-configuration ` + - `tables below.`, + `Each row aggregates that query's scale/index/write-mode configurations; ` + + `per-configuration tables below.`, ) lines.push(``) diff --git a/scripts/bench/incremental-update.ts b/scripts/bench/incremental-update.ts index 9d146db630..2614547ac2 100644 --- a/scripts/bench/incremental-update.ts +++ b/scripts/bench/incremental-update.ts @@ -1,3 +1,4 @@ +import assert from 'node:assert/strict' import { execSync } from 'node:child_process' import { mkdirSync, writeFileSync } from 'node:fs' import { cpus, platform, release } from 'node:os' @@ -49,6 +50,27 @@ type Comment = { updateTick: number } +// A rich-text body: a row whose value is a deep tree rather than a few scalars. +type IssueDocument = { + id: number + issueId: number + blocks: Array + updateTick: number +} + +type DocumentBlock = { + id: string + kind: `paragraph` | `heading` | `list` + text: string + marks: Array<{ + type: `bold` | `link` + from: number + to: number + attrs: { href?: string } + }> + attrs: { indent: number; align: `left` | `center` } +} + type ManualSyncUtils = { begin: Parameters[`sync`]>[0][`begin`] write: (message: ChangeMessageOrDeleteKeyMessage) => void @@ -67,9 +89,11 @@ type Fixture = { issues: ManualCollection users: ManualCollection comments: ManualCollection + documents: ManualCollection issueById: Map userById: Map commentById: Map + documentById: Map visibleIssueId: number selectedIssueId: number nextCommentId: number @@ -85,6 +109,7 @@ type BenchmarkOptions = { commentCount?: number warmup: number iterations: number + repetitions: number outDir: string outFile?: string } @@ -124,6 +149,8 @@ type RunResult = { sourceIndexMode: SourceIndexMode mutationMode: MutationMode coldHydrateMs: number + coldHydrateSamplesMs: Array + writeMedianSamplesMs: Array writeSummary: Summary } @@ -143,6 +170,7 @@ type QueryCase = { iteration: number, mutationMode: MutationMode, ) => WriteResult + verify?: (fixture: Fixture, query: BenchmarkCollection) => void } const defaultOptions: BenchmarkOptions = { @@ -152,6 +180,7 @@ const defaultOptions: BenchmarkOptions = { mutationModes: [`synced`, `optimistic`], warmup: 10, iterations: 50, + repetitions: 1, outDir: `.tmp/perf`, } @@ -164,6 +193,9 @@ const defaultCustomScale: FixtureScale = { const options = parseArgs(process.argv.slice(2), defaultOptions) +const BLOCKS_PER_DOCUMENT = 20 +const BLOCK_KINDS = [`heading`, `paragraph`, `paragraph`, `list`] as const + const queryCases: Array = [ { name: `list: newest 50 open`, @@ -303,6 +335,41 @@ const queryCases: Array = [ ) as unknown as BenchmarkCollection, write: insertSelectedIssueComment, }, + { + name: `open issues + documents`, + scenario: `visible document update`, + // Every open issue with its whole document and no limit, so each output row + // carries a nested tree into result finalization. + createQuery: ({ issues, documents }) => + createLiveQueryCollection((q) => + q + .from({ issue: issues }) + .where(({ issue }) => eq(issue.status, `open`)) + .join({ document: documents }, ({ issue, document }) => + eq(issue.id, document.issueId), + ) + .select(({ issue, document }) => ({ + id: issue.id, + title: issue.title, + document, + })), + ) as unknown as BenchmarkCollection, + write: updateVisibleDocument, + verify: (fixture, query) => { + assert.equal( + query.size, + [...fixture.issueById.values()].filter( + (issue) => issue.status === `open`, + ).length, + ) + const row = query.toArray.find(({ id }) => id === fixture.visibleIssueId) + assert.ok(row, `the updated document must be visible`) + assert.deepEqual( + row.document, + fixture.documents.get(fixture.visibleIssueId), + ) + }, + }, ] const scales = resolveScales(options) @@ -312,7 +379,39 @@ for (const scale of scales) { const runOptions = createRunOptions(options, scale, sourceIndexMode) for (const mutationMode of options.mutationModes) { for (const queryCase of queryCases) { - results.push(await runCase(queryCase, mutationMode, runOptions)) + const samples: Array = [] + for (let repeat = 0; repeat < options.repetitions; repeat++) { + samples.push(await runCase(queryCase, mutationMode, runOptions)) + } + results.push({ + ...samples[0]!, + coldHydrateMs: summarize( + samples.map((sample) => sample.coldHydrateMs), + ).medianMs, + coldHydrateSamplesMs: samples.map((sample) => sample.coldHydrateMs), + writeMedianSamplesMs: samples.map( + (sample) => sample.writeSummary.medianMs, + ), + writeSummary: { + ...samples[0]!.writeSummary, + ...Object.fromEntries( + ( + [ + `medianMs`, + `p75Ms`, + `p95Ms`, + `minMs`, + `maxMs`, + `stddevMs`, + ] as const + ).map((metric) => [ + metric, + summarize(samples.map((sample) => sample.writeSummary[metric])) + .medianMs, + ]), + ), + }, + }) } } } @@ -343,10 +442,12 @@ async function runCase( await query.preload() await flushMicrotasks() const coldHydrateMs = performance.now() - coldStart + queryCase.verify?.(fixture, query) for (let i = 0; i < options.warmup; i++) { const writeResult = queryCase.write(fixture, i, mutationMode) await flushMicrotasks() + if (i === options.warmup - 1) queryCase.verify?.(fixture, query) await cleanupWrite(writeResult) } @@ -360,8 +461,10 @@ async function runCase( ) await flushMicrotasks() samples.push(performance.now() - start) + if (i === options.iterations - 1) queryCase.verify?.(fixture, query) await cleanupWrite(writeResult) } + queryCase.verify?.(fixture, query) await cleanupFixture(fixture, query) @@ -372,6 +475,8 @@ async function runCase( sourceIndexMode: options.sourceIndexMode, mutationMode, coldHydrateMs, + coldHydrateSamplesMs: [coldHydrateMs], + writeMedianSamplesMs: [summarize(samples).medianMs], writeSummary: summarize(samples), } } @@ -468,6 +573,13 @@ function createFixture(options: BenchmarkRunOptions): Fixture { }) } + const documentsData: Array = issuesData.map((issue) => ({ + id: issue.id, + issueId: issue.id, + blocks: createDocumentBlocks(issue.id, random), + updateTick: 0, + })) + const fixture = { seed: options.seed, issues: createManualCollection( @@ -491,6 +603,15 @@ function createFixture(options: BenchmarkRunOptions): Fixture { issueById: new Map(issuesData.map((issue) => [issue.id, issue])), userById: new Map(usersData.map((user) => [user.id, user])), commentById: new Map(commentsData.map((comment) => [comment.id, comment])), + documents: createManualCollection( + `bench-documents`, + documentsData, + (document) => document.id, + options.sourceIndexMode, + ), + documentById: new Map( + documentsData.map((document) => [document.id, document]), + ), visibleIssueId, selectedIssueId, nextCommentId: options.commentCount + 1, @@ -514,6 +635,70 @@ function applySourceIndexes( fixture.users.createIndex((user) => user.id) fixture.comments.createIndex((comment) => comment.issueId) fixture.comments.createIndex((comment) => comment.createdAt) + fixture.documents.createIndex((document) => document.issueId) +} + +function createDocumentBlocks( + issueId: number, + random: () => number, +): Array { + const blocks: Array = [] + for (let index = 0; index < BLOCKS_PER_DOCUMENT; index++) { + const length = 40 + Math.floor(random() * 80) + blocks.push({ + id: `${issueId}-${index}`, + kind: BLOCK_KINDS[index % BLOCK_KINDS.length]!, + text: `Block ${index} of issue ${issueId}`.padEnd(length, `.`), + marks: [ + { type: `bold`, from: 0, to: 5, attrs: {} }, + { + type: `link`, + from: 6, + to: 12, + attrs: { href: `https://example.com/${issueId}/${index}` }, + }, + ], + attrs: { indent: index % 3, align: index === 0 ? `center` : `left` }, + }) + } + return blocks +} + +function updateVisibleDocument( + fixture: Fixture, + iteration: number, + mutationMode: MutationMode, +): WriteResult { + const document = fixture.documentById.get(fixture.visibleIssueId)! + const [first, ...rest] = document.blocks + const next = { + ...document, + blocks: [{ ...first!, text: `Edited at tick ${iteration}` }, ...rest], + updateTick: iteration, + } + fixture.documentById.set(document.id, next) + + if (mutationMode === `synced`) { + writeSync(fixture.documents, { + type: `update`, + value: next, + }) + return + } + + const transaction = writeOptimistic(() => { + fixture.documents.update(document.id, (draft) => { + draft.blocks = next.blocks + draft.updateTick = next.updateTick + }) + }) + + return { + cleanup: () => { + transaction.rollback() + fixture.documentById.set(document.id, document) + }, + } } function updateVisibleIssue( @@ -706,6 +891,7 @@ async function cleanupFixture( fixture.issues.cleanup(), fixture.users.cleanup(), fixture.comments.cleanup(), + fixture.documents.cleanup(), ]) } @@ -744,6 +930,7 @@ function runtimeMetadata( mutationModes: options.mutationModes, warmup: options.warmup, iterations: options.iterations, + repetitions: options.repetitions, node: process.version, platform: `${platform()} ${release()}`, cpu: cpus()[0]?.model ?? `unknown`, @@ -926,6 +1113,9 @@ function parseArgs( case `iterations`: parsed.iterations = parsePositiveInteger(value, name) break + case `repetitions`: + parsed.repetitions = parsePositiveInteger(value, name) + break case `outDir`: parsed.outDir = value break diff --git a/scripts/bench/metadata-policy-exploration-2026-11-05.csv b/scripts/bench/metadata-policy-exploration-2026-11-05.csv new file mode 100644 index 0000000000..e5e6ab959d --- /dev/null +++ b/scripts/bench/metadata-policy-exploration-2026-11-05.csv @@ -0,0 +1,85 @@ +variant,scenario,mode,blocks,rowCount,repetition,coldMs,writeMedianMs,initialScans +current,plain,counts,0,1,0,2.063333,0.029291999999998097,0 +current,plain,counts,20,1,0,2.8962080000000014,0.04112500000002228,0 +current,plain,counts,200,1,0,1.9391660000000002,0.03483399999998937,0 +current,callback-where,counts,0,1,0,3.9805829999999958,0.05258299999999849,2 +current,callback-where,counts,20,1,0,4.070082999999983,0.1941669999999931,102 +current,callback-where,counts,200,1,0,4.908249999999981,1.4457079999999962,1002 +current,inline-plain,counts,0,1,0,6.103708000000012,0.11012500000001069,6 +current,inline-plain,counts,20,1,0,6.481166999999999,0.5154580000000237,306 +current,inline-plain,counts,200,1,0,6.822209000000015,3.910542000000021,3006 +current,correlated-callback,counts,0,1,0,5.153874999999999,0.17837500000001683,12 +current,correlated-callback,counts,20,1,0,6.580500000000001,1.0594580000000065,612 +current,correlated-callback,counts,200,1,0,11.219334000000003,8.588540999999964,6012 +published-only,plain,counts,0,1,0,2.78287499999999,0.029625000000010004,0 +published-only,plain,counts,20,1,0,2.2595409999999845,0.03233299999999417,0 +published-only,plain,counts,200,1,0,2.530666999999994,0.03387499999999477,0 +published-only,callback-where,counts,0,1,0,1.9546670000000006,0.04316700000001106,0 +published-only,callback-where,counts,20,1,0,2.1232080000000053,0.04312500000000341,0 +published-only,callback-where,counts,200,1,0,2.919042000000019,0.04395900000000097,0 +published-only,inline-plain,counts,0,1,0,4.067875000000015,0.11508399999999597,4 +published-only,inline-plain,counts,20,1,0,6.799582999999984,0.35037499999998545,204 +published-only,inline-plain,counts,200,1,0,6.029541999999992,2.765375000000006,2004 +published-only,correlated-callback,counts,0,1,0,5.84212500000001,0.13624999999998977,8 +published-only,correlated-callback,counts,20,1,0,6.066041999999982,0.7751670000000104,408 +published-only,correlated-callback,counts,200,1,0,7.520582999999988,6.077874999999949,4008 +single-view,plain,counts,0,1,0,2.0393749999999784,0.02841599999999289,0 +single-view,plain,counts,20,1,0,1.8341250000000002,0.0313329999999894,0 +single-view,plain,counts,200,1,0,2.1403330000000267,0.03408300000000963,0 +single-view,callback-where,counts,0,1,0,4.009958000000012,0.042666000000025406,0 +single-view,callback-where,counts,20,1,0,2.1446669999999983,0.04054099999999039,0 +single-view,callback-where,counts,200,1,0,2.505875000000003,0.050083000000000766,0 +single-view,inline-plain,counts,0,1,0,6.391832999999991,0.10916699999998514,4 +single-view,inline-plain,counts,20,1,0,6.53887499999999,0.3966250000000002,204 +single-view,inline-plain,counts,200,1,0,8.749541999999991,2.715249999999969,2004 +single-view,correlated-callback,counts,0,1,0,3.454207999999994,0.22033299999998235,8 +single-view,correlated-callback,counts,20,1,0,4.176041999999995,0.7732090000000085,408 +single-view,correlated-callback,counts,200,1,0,7.971374999999995,5.915624999999977,4008 +pre-2312,callback-where,timing,0,10,0,4.042292000000003,0.03608300000001918,0 +pre-2312,callback-where,timing,0,10,1,0.29383300000000645,0.03237500000000182,0 +pre-2312,callback-where,timing,0,10,2,0.20616599999999607,0.027208000000001675,0 +current,callback-where,timing,0,10,0,4.341207999999995,0.04920800000002146,0 +current,callback-where,timing,0,10,1,0.46162499999999795,0.04537499999997863,0 +current,callback-where,timing,0,10,2,0.3665420000000097,0.038375000000002046,0 +published-only,callback-where,timing,0,10,0,3.6595000000000084,0.038334000000020296,0 +published-only,callback-where,timing,0,10,1,0.3177919999999972,0.03450000000000841,0 +published-only,callback-where,timing,0,10,2,0.22604200000000674,0.027999999999991587,0 +single-view,callback-where,timing,0,10,0,4.158332999999999,0.03883400000000847,0 +single-view,callback-where,timing,0,10,1,0.3347080000000062,0.03395800000001259,0 +single-view,callback-where,timing,0,10,2,0.26141699999999446,0.027958999999981415,0 +pre-2312,callback-where,timing,200,10,0,2.395167000000015,0.043082999999995764,0 +pre-2312,callback-where,timing,200,10,1,0.3862919999999974,0.04091700000000742,0 +pre-2312,callback-where,timing,200,10,2,0.2931250000000034,0.02995800000002191,0 +current,callback-where,timing,200,10,0,12.423874999999981,1.2705000000000268,0 +current,callback-where,timing,200,10,1,6.853290999999956,1.1111659999999688,0 +current,callback-where,timing,200,10,2,5.582416999999964,1.111167000000023,0 +published-only,callback-where,timing,200,10,0,2.502666000000005,0.04954200000000242,0 +published-only,callback-where,timing,200,10,1,0.35008300000001213,0.03558400000002848,0 +published-only,callback-where,timing,200,10,2,0.2627909999999929,0.030583999999976186,0 +single-view,callback-where,timing,200,10,0,4.049417000000005,0.04758300000000304,0 +single-view,callback-where,timing,200,10,1,0.355542000000014,0.03387499999999477,0 +single-view,callback-where,timing,200,10,2,0.2143750000000182,0.03100000000000591,0 +pre-2312,inline-plain,timing,0,10,0,4.451041000000004,0.10516699999999446,0 +pre-2312,inline-plain,timing,0,10,1,1.5784579999999835,0.08029199999998582,0 +pre-2312,inline-plain,timing,0,10,2,0.7168329999999798,0.06116699999998332,0 +current,inline-plain,timing,0,10,0,5.716499999999996,0.13787500000000819,0 +current,inline-plain,timing,0,10,1,1.2324580000000083,0.10237500000002342,0 +current,inline-plain,timing,0,10,2,0.7656660000000102,0.08141699999998764,0 +published-only,inline-plain,timing,0,10,0,6.4443749999999795,0.13387499999998909,0 +published-only,inline-plain,timing,0,10,1,0.6387499999999875,0.09000000000000341,0 +published-only,inline-plain,timing,0,10,2,0.4684159999999906,0.07937499999999886,0 +single-view,inline-plain,timing,0,10,0,6.3764170000000036,0.12154099999997925,0 +single-view,inline-plain,timing,0,10,1,0.6392500000000041,0.08912499999999568,0 +single-view,inline-plain,timing,0,10,2,0.46787499999999227,0.07749999999998636,0 +pre-2312,inline-plain,timing,200,10,0,16.03687500000001,3.5502089999999953,0 +pre-2312,inline-plain,timing,200,10,1,6.094582999999943,3.352915999999823,0 +pre-2312,inline-plain,timing,200,10,2,6.704375000000027,3.3494170000001304,0 +current,inline-plain,timing,200,10,0,28.746291999999983,8.493667000000073,0 +current,inline-plain,timing,200,10,1,18.939832999999908,8.469500000000153,0 +current,inline-plain,timing,200,10,2,19.220874999999978,8.438000000000102,0 +published-only,inline-plain,timing,200,10,0,22.09491700000001,7.645249999999919,0 +published-only,inline-plain,timing,200,10,1,12.235666999999921,7.423082999999906,0 +published-only,inline-plain,timing,200,10,2,33.55379099999982,7.206666999999925,0 +single-view,inline-plain,timing,200,10,0,22.732833999999997,7.538457999999991,0 +single-view,inline-plain,timing,200,10,1,36.293042000000014,7.36304199999995,0 +single-view,inline-plain,timing,200,10,2,14.827874999999949,7.450291000000107,0 diff --git a/scripts/bench/nested-row-repair-2026-11-05.csv b/scripts/bench/nested-row-repair-2026-11-05.csv new file mode 100644 index 0000000000..f59352ab86 --- /dev/null +++ b/scripts/bench/nested-row-repair-2026-11-05.csv @@ -0,0 +1,37 @@ +variant,db_source,cpu,node,scale,source_index_mode,mutation_mode,cold_median_ms,write_median_ms,cold_samples_ms,write_median_samples_ms +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,100,none,synced,0.8252920000000472,0.024167000000034022,"[0.8700000000000045, 0.8252920000000472, 0.7418749999999932]","[0.02508299999999508, 0.024167000000034022, 0.023541999999963537]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,100,none,optimistic,0.8307499999999663,0.15429200000005494,"[0.8307499999999663, 0.9560000000000173, 0.7147499999999809]","[0.17062499999997272, 0.15429200000005494, 0.15429100000005747]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,100,manual,synced,0.6398749999999609,0.022375000000010914,"[0.6904580000000351, 0.6082079999999905, 0.6398749999999609]","[0.022375000000010914, 0.022416999999904874, 0.02183300000001509]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,100,manual,optimistic,0.7217080000000351,0.19299999999998363,"[0.6255000000001019, 0.7217080000000351, 0.8296250000000782]","[0.16499999999996362, 0.19299999999998363, 0.23283299999980045]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,1000,none,synced,5.730207999999948,0.022249999999985448,"[9.291707999999971, 5.730207999999948, 5.062708000000157]","[0.022249999999985448, 0.023166999999830296, 0.021250000000009095]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,1000,none,optimistic,5.661207999999988,0.1572080000000824,"[6.91924999999992, 5.661207999999988, 5.486124999999902]","[0.1637500000001637, 0.1572080000000824, 0.15324999999984357]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,1000,manual,synced,8.469000000000051,0.02366600000004837,"[5.701458999999886, 8.469000000000051, 8.873415999999906]","[0.02366600000004837, 0.0225839999998243, 0.024750000000040018]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,1000,manual,optimistic,5.576332999999977,0.15670899999986432,"[5.23720800000001, 8.69179099999974, 5.576332999999977]","[0.15670899999986432, 0.16266700000005585, 0.15633400000024267]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,10000,none,synced,67.62950000000001,0.023374999999759893,"[67.6312080000007, 67.62950000000001, 55.62183300000015]","[0.023374999999759893, 0.02516600000035396, 0.022708999999849766]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,10000,none,optimistic,66.20237499999894,0.1604590000006283,"[73.4407910000009, 66.20237499999894, 60.4749580000007]","[0.1702079999995476, 0.15570800000023155, 0.1604590000006283]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,10000,manual,synced,65.0208330000005,0.023166999999375548,"[73.55474999999933, 65.0208330000005, 57.72475000000122]","[0.023166999999375548, 0.02404200000091805, 0.023041999998895335]" +pre-final,035a5260ef994ce3aabed77a3f09b35c71482a9a,Apple M5 Max,v24.19.0,10000,manual,optimistic,76.65541699999812,0.16162500000064028,"[76.65541699999812, 80.19833300000028, 63.16187499999796]","[0.17254199999661068, 0.16162500000064028, 0.15791600000011385]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,100,none,synced,21.124541000000022,0.5725419999999986,"[23.568083, 21.124541000000022, 21.07258300000001]","[0.6358749999999418, 0.5725419999999986, 0.5447920000000295]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,100,none,optimistic,21.585667000000058,0.7949160000000575,"[21.482874999999922, 21.585667000000058, 21.58783399999993]","[0.805042000000185, 0.7949160000000575, 0.7357499999998254]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,100,manual,synced,22.25108299999988,0.5580419999998867,"[29.240707999999813, 22.25108299999988, 19.411541999999827]","[0.5580419999998867, 0.5585419999997612, 0.5499170000002778]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,100,manual,optimistic,21.462542000000212,0.7748339999998279,"[21.92574999999988, 21.462542000000212, 21.28754200000003]","[0.7764170000000377, 0.754041999999572, 0.7748339999998279]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,1000,none,synced,219.06912499999999,0.5766250000006039,"[219.06912499999999, 222.8672919999999, 212.3221249999997]","[0.6395000000002256, 0.5729590000000826, 0.5766250000006039]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,1000,none,optimistic,210.18070799999987,0.7294160000001284,"[223.31179100000008, 207.38174999999956, 210.18070799999987]","[0.726542000000336, 0.7294160000001284, 0.7328750000006039]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,1000,manual,synced,211.796875,0.5812500000001819,"[208.4368340000001, 216.80391700000018, 211.796875]","[0.5583750000005239, 0.5812500000001819, 0.5955420000000231]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,1000,manual,optimistic,215.79716700000063,0.7446250000011787,"[223.86491699999988, 208.9620419999992, 215.79716700000063]","[0.710957999999664, 0.7446250000011787, 0.7525830000013229]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,10000,none,synced,2097.3767499999994,0.5657920000012382,"[2088.925958, 2101.995834000001, 2097.3767499999994]","[0.5657920000012382, 0.6084170000031008, 0.5516660000030242]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,10000,none,optimistic,2090.142832999998,0.7171249999992142,"[2070.417042000001, 2090.142832999998, 2172.0864589999983]","[0.7292919999999867, 0.7171249999992142, 0.7070840000014869]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,10000,manual,synced,2119.1904170000053,0.5675829999963753,"[2125.0118749999965, 2119.1904170000053, 2114.118709000002]","[0.5675829999963753, 0.6620830000028946, 0.5180830000026617]" +main-final,8feab6ea3eaae4456f738da39fa93508ddd5cc01,Apple M5 Max,v24.19.0,10000,manual,optimistic,1941.8843330000018,0.6630839999997988,"[1932.421749999994, 1961.8390830000062, 1941.8843330000018]","[0.6561249999940628, 0.666665999997349, 0.6630839999997988]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,100,none,synced,1.103040999999962,0.02858400000002348,"[1.0617090000000076, 1.2298749999999927, 1.103040999999962]","[0.02858400000002348, 0.02658299999995961, 0.03266699999994671]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,100,none,optimistic,2.494083000000046,0.15387500000008458,"[0.7784580000000005, 3.240707999999927, 2.494083000000046]","[0.15387500000008458, 0.15095900000005713, 0.15533400000003894]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,100,manual,synced,0.7017090000000508,0.02320899999995163,"[0.6831250000000182, 2.4919590000000653, 0.7017090000000508]","[0.02320899999995163, 0.025834000000031665, 0.02229099999999562]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,100,manual,optimistic,0.7144590000000335,0.1512920000000122,"[0.7144590000000335, 0.7307909999999538, 0.6841249999999945]","[0.15229199999998855, 0.1512920000000122, 0.14908300000001873]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,1000,none,synced,10.013459000000012,0.027375000000120053,"[11.182625000000144, 10.013459000000012, 6.441749999999956]","[0.03012499999999818, 0.027375000000120053, 0.027250000000094587]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,1000,none,optimistic,6.529832999999826,0.1540829999999005,"[6.529832999999826, 9.919582999999875, 6.280166000000008]","[0.20733399999994617, 0.1540829999999005, 0.15374999999994543]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,1000,manual,synced,6.531875000000127,0.023374999999759893,"[6.531875000000127, 6.847584000000097, 6.133708999999726]","[0.023541000000022905, 0.023374999999759893, 0.022375000000010914]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,1000,manual,optimistic,6.2941249999998945,0.14870799999971496,"[6.484915999999885, 6.2941249999998945, 5.847874999999931]","[0.14870799999971496, 0.14983299999994415, 0.14541700000017954]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,10000,none,synced,74.89604099999997,0.023083000000042375,"[77.31174999999985, 72.92412500000046, 74.89604099999997]","[0.023083999999471416, 0.02291700000023411, 0.023083000000042375]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,10000,none,optimistic,74.57383300000038,0.15379100000063772,"[74.57383300000038, 76.65250000000015, 70.28800000000047]","[0.15204199999971024, 0.15458399999988615, 0.15379100000063772]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,10000,manual,synced,78.624917000001,0.024292000000059488,"[79.47995900000024, 67.68304100000023, 78.624917000001]","[0.02449999999953434, 0.023708000000624452, 0.024292000000059488]" +repaired-final,working-tree-on-8feab6ea3,Apple M5 Max,v24.19.0,10000,manual,optimistic,78.23858300000029,0.15350000000034925,"[78.23858300000029, 70.25924999999916, 132.76741700000275]","[0.15350000000034925, 0.15175000000090222, 0.17520799999692827]" From 066d0dd26d9cf7829c986b5d3af1d76c1634e8a5 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 11:43:59 -0700 Subject: [PATCH 2/9] Add release note for nested-row performance repair --- .changeset/quiet-documents-return.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quiet-documents-return.md diff --git a/.changeset/quiet-documents-return.md b/.changeset/quiet-documents-return.md new file mode 100644 index 0000000000..cfea5903cf --- /dev/null +++ b/.changeset/quiet-documents-return.md @@ -0,0 +1,5 @@ +--- +'@tanstack/db': patch +--- + +Restore nested-row query performance by keeping source payloads opaque during metadata cleanup and resolving includes along compiled paths. Intermediate projections, functional callback inputs, inline results and Effect outputs retain authored fields. Published Collection rows continue to receive genuine computed metadata. From 708a580980b9c7859a66700360b832eaaff046b5 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 12:08:27 -0700 Subject: [PATCH 3/9] Fix CI type inference and replay registration Law: Inline wrappers expose materialized values under the accepted nested materialization contract. Collection projections receive output metadata. Reach: 259 native states x24 consumers; publication88 states/424comparisons. RED: Extended native owner rejects24unchanged consumers with TS2344 only. GREEN: Native33checks, wholeDB tsc zero diagnostics, runtime owners and replay controls pass. ESM/CJS declarations build. Mutant: Restored original wrapper mapping fails the same shape constraints; separate wrong-source metadata observations fail every grouped field check. Limits: Source exports/eager core, bounded wrapper and publication grammar; no arbitrary wrapper unions, provider scheduling or universal latency claim. See docs/contributing/oracle-reviews/2026-11-05-boundary-only-ci-review.md and its source manifest for exact commands, chronology and remote benchmark. --- docs/contributing/oracle-coverage.md | 14 + .../2026-11-05-boundary-only-ci-review.md | 169 ++++++ ...2026-11-05-boundary-only-prep-sources.json | 68 ++- packages/db/src/query/builder/types.ts | 119 ++--- .../collection-subscribe-changes.test.ts | 9 +- packages/db/tests/oracle-replay-manifest.ts | 6 +- .../query/query-api-type-algebra.test-d.ts | 2 +- .../tests/query/subquery-user-value.test.ts | 5 +- packages/db/tests/query/union-all.test-d.ts | 4 +- .../query/virtual-row-fields-oracle.test.ts | 150 +++++- ...rtual-row-fields-reference-types.test-d.ts | 2 +- .../tests/query/virtual-row-fields-support.ts | 2 +- .../virtual-row-fields-types-oracle.test.ts | 40 ++ scripts/bench/boundary-only-ci-2026-11-05.csv | 505 ++++++++++++++++++ scripts/bench/compare-incremental-update.ts | 2 +- 15 files changed, 1001 insertions(+), 96 deletions(-) create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-ci-review.md create mode 100644 scripts/bench/boundary-only-ci-2026-11-05.csv diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index 148a831f6a..10949e589e 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -996,6 +996,20 @@ fail only native type constraints. See the [prep-review evidence](oracle-reviews/2026-11-05-boundary-only-prep-review.md) for pre-edit RED, corrected carrier expectations, reach and source bindings. +The CI follow-up adds three conditional inline-wrapper choices to all 24 +source descriptions: array/array, array/materialized array, and array/singleton. +Each legal consumer runs public construction before native type comparison at +the QueryRef functional input and Collection result. Wrapper choice must expose +materialized values, with singleton absence preserved. The unchanged mapping +fails 24 consumers with TS2344 only; the distributing mapping passes all 33 +checks. A restored-mapping mutant rejects the same shape assertions. This +owner does not yet judge arbitrary unions of opaque, scalar and include wrappers. +The publication owner also adds grouped and ungrouped aggregates through direct +and QueryRef receivers, with held inserts, settlement and later remote inserts. +Counts change while projection metadata belongs to the output Collection. +Single-field wrong-source observations calibrate every metadata assertion. +See the [CI evidence](oracle-reviews/2026-11-05-boundary-only-ci-review.md). + Grouping inference remains bounded by the declared key-list type. A callback annotated as a broad array can return an empty list at runtime while the general overload still promises a generated key. The concrete trace is diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-ci-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-ci-review.md new file mode 100644 index 0000000000..91d5d437c3 --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-ci-review.md @@ -0,0 +1,169 @@ +# CI follow-up: boundary-only metadata + +This append-only successor records work after reviewed/pushed head +`066d0dd26d9cf7829c986b5d3af1d76c1634e8a5`. The companion source manifest's +`ciFollowups` entry binds the repaired files. Earlier evidence and verdicts +remain historical and unchanged. + +## Law, experiment, inference and limits + +Inline wrapper choice changes construction syntax, not the materialized value +shape. Array wrappers expose arrays; a singleton also permits absence. +Authority: the live-query architecture's Nested materialization contract and +November 5 boundary-only decision. The public-type oracle now crosses three +conditional choices with all 24 independently declared row descriptions: +array/array control, array/materialized array, and array/singleton. Each source +runs actual public construction before native compilation. The same independent +shape law judges QueryRef functional inputs and published Collection results. + +The first fixture lacked required correlation and failed admission. It receives +no product RED credit. After adding a parent/child equality, unchanged production +fails all 24 consumers with TS2344 shape constraints only. Every one of the +259 declared states reaches 24 times, including the three new states and legal +construction. The repair routes the wrapper union through the existing generic +value extractor, which distributes over each alternative. The full owner passes +33 checks. Restoring the original mapping on the repaired tree fails the first +row description at those same constraints; restoring the repair passes it. +The type module's emitted JavaScript is identical (11 bytes, SHA256 +`8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881`). + +The earlier owner generated each wrapper separately. It could not distinguish +a non-distributing indexed conditional from correct value extraction. The new +grammar supplies that missing dimension, without changing the reference type +law. It excludes uncorrelated includes at admission, keeps array/array as an +identity control, and distinguishes singleton absence from arrays. Arbitrary +unions of scalar, opaque and Collection-valued wrappers remain outside this +bounded claim. This is native source-export evidence; installed-package and +framework types are separate receiving paths. + +CI also exposed a grouped-row example asserting the retired source attribution. +A grouped object projection receives output Collection metadata under the +approved rule. Its count still includes a held source insert. The publication +owner now recomputes grouped and ungrouped aggregate counts from authored rows, +through direct and QueryRef receivers, at initial, held insert, settlement +without confirmation, and remote insert cuts. These four histories add sixteen +declared states/comparisons to the previous 72 states and 408 comparisons. +Each metadata field is separately corrupted with the former source observation; +the shared comparison rejects all sixteen wrong observations. This is +retrospective coverage for the already approved runtime change, with no new +runtime production edit and no claim of pre-edit product RED for this addition. +The old unit expectation is revised with the same authority. Existing +source-return controls still require genuine source attribution. + +The other CI repairs register the payload property and exact replay selector, +update supplemental Ref/QueryRef type expectations, preserve the runtime +absent-key case with an explicit negative type assertion, and widen only model +carrier annotations. Exact model contents and comparisons remain intact. +The cleanup helper's parameter now permits synchronous checks, matching its +existing awaited body and preserving error/cleanup semantics. Comparator text +now says every repetition; thresholds and decision logic are unchanged. + +Validation on the repaired tree: + +- Full DB source/test/config TypeScript: zero diagnostics with a 12 GB heap. + The earlier default-heap OOM remains recorded and is not passing evidence. +- Public-type owner: 33 checks pass; original mapping mutant fails with TS2344; + repaired single-shape replay passes. +- Publication plus subscription examples: 1,758 tests pass. The final publication + owner with four calibration histories passes 1,714 tests. +- Route-context and callback-input owners: 5,126 tests pass. +- Replay-manifest controls: 117 pass. Direct payload replay at property + `includes-work.projection-payload`, seed 42, path `0` passes one selected test. +- Comparator CLI controls: all 19 pass. ESM and CJS declaration builds pass. + +Commands use `pnpm --dir packages/db exec vitest run --maxWorkers=2 +--coverage.enabled=false --typecheck.enabled=false` with the named owner files. +Native mutant/repaired replay selects the first generated row description. +TypeScript uses `NODE_OPTIONS=--max-old-space-size=12288 pnpm --dir packages/db +exec tsc --noEmit --pretty false`. The full repository test command remains +unrun locally; CI is the separate receiving witness. + +ORC audit: authority and limits (001), independent declared shape/count models +(002), local prose and distinct model/grammar/driver/check (003), finite +reconstruction/ablation/range and admission exclusion (004), real native/public +construction and Collection reads at named cuts (005), original/reverted mapping +and single-field wrong observations (006), unchanged exhaustive finite campaigns +with direct selected replay (007), no new model state (008), canonical terms +(009), existing failure-preserving cleanup (010), no new named shared-semantic +fault requiring another formulation (011), this source-bound evidence (012), +array identity and singleton neighbors (013), bounded native/core claims with no +provider handoff (014), measured required reach (015), and shared type/count laws +without independent example expectations (016). No run budget is reduced. + +## First remote paired benchmark + +[Run 42087213348](https://github.com/TanStack/db/actions/runs/42087213348) passed. +The candidate artifact names merge commit `88544ac64ba66e66407f7aac7473221ab5ed266b`, +with base parent `8feab6ea3eaae4456f738da39fa93508ddd5cc01` and PR parent +`066d0dd26d9cf7829c986b5d3af1d76c1634e8a5`. Both sides used Node 24.8.0 on the +same Linux AMD EPYC runner, one harness, 84 cases, three fresh-fixture repetitions, +100 measured writes and 20 warmups. Downloaded artifact hashes are bound in the +source manifest. The original comparator also passes when replayed locally. + +Overall candidate/base ratios are 0.65× writes and 0.51× cold. Across all nested +query cases they are 0.096× writes and 0.031× cold. At 10,000 issues specifically, +these are ratios of each configuration's three-repetition medians: + +| Indexes | Writes | Base cold ms | PR cold ms | Cold ratio | Write ratio | +| --- | --- | ---: | ---: | ---: | ---: | +| none | synced | 4617.718 | 162.347 | 0.0352× | 0.0406× | +| none | optimistic | 4621.722 | 132.707 | 0.0287× | 0.2100× | +| manual | synced | 4621.407 | 124.650 | 0.0270× | 0.0400× | +| manual | optimistic | 4628.366 | 112.942 | 0.0244× | 0.2122× | + +The same-harness local pre-2312 bracket already recorded the following 10,000 +issue configurations, also with three fresh fixtures per side: + +| Indexes | Writes | First base cold ms | PR cold ms | Second base cold ms | Cold ratio first / second | Write ratio first / second | +| --- | --- | ---: | ---: | ---: | ---: | ---: | +| none | synced | 63.124 | 67.367 | 65.224 | 1.067× / 1.033× | 0.952× / 0.941× | +| none | optimistic | 50.606 | 86.135 | 80.985 | 1.702× / 1.064× | 1.087× / 0.908× | +| manual | synced | 61.459 | 88.529 | 58.343 | 1.440× / 1.517× | 1.312× / 1.433× | +| manual | optimistic | 50.854 | 85.505 | 65.056 | 1.681× / 1.314× | 1.127× / 1.071× | + +These local observations preserve visible variation and some residual cold +increases. They do not establish zero overhead or a noise ceiling. The earlier +whole-suite first comparison fails and the second passes; neither is discarded. +CI uses merge-base sources, while the diagnostic bracket uses pre-2312 sources. +All 504 remote repetition observations are retained in +`../../../scripts/bench/boundary-only-ci-2026-11-05.csv`; the local 756 observations +remain in the existing prep-bracket CSV. The remote run demonstrates execution +of the hard gate once, not its long-term false-positive rate. + +## CodeRabbit 5790313417 evaluation + +Reviewed commit: `066d0dd26`. The raw review and append-only lossless ledger remain +in task-local scratch evidence. Twenty source occurrences account for inline, +additional, pre-merge, repeated and optional suggestions. + +The two concrete findings are correct: the cleanup callback's type is wrong, +and all-three wording disagrees with the >=3 gate. Both are repaired and checked. +The generic report-only suggestion conflicts with the user's explicit hard-fail +policy; keep enforcement and the documented noise limit. The scope comment needs +a clearer causal explanation: empty grouping must not invent a QueryRef key, +and visible aggregates must retain generated keys when ordinary intermediate +fields stop receiving automatic row metadata. The depth cutoff was introduced +by the new aggregate inference; the empty-grouping issue was a reachable neighbor +that repository policy requires fixing or bringing to the maintainer. Both have +existing independent native RED/GREEN and hostile-mutant evidence. They remain +in this approved change, with this rationale added to the PR. + +The generic docstring threshold comes from an unconfigured bot default and names +no deficient function. Source and literate oracle/architecture prose already +explain the laws and boundaries. No boilerplate is added to satisfy that metric. +The useful request for explicit same-harness 10k and remote evidence is completed +above. Optional CLI, blanket unit-test generation and autofix prompts add no +specific enforcement gap beyond the findings already addressed. + +Loss audit: 20 = 4 fixed-now (CR07/08/10/12) + 3 accepted-design +(CR01/06/14) + 11 duplicates (CR02/03/04/05/13/15/16/17/18/19/20) + 2 refuted +requirements/readiness claims (CR09/11). No finding is deferred or left confirmed-open. This is accounting and +bounded repair evidence, not whole-PR readiness. The initial reviewed head has +failed DB checks, which the successor CI run must verify. + +Reviewer assessment: useful supplemental review, with accurate local typing and +wording findings. It did not identify the replay registration, conditional-wrapper +type gap or grouped contract mismatch. Its CSV filters and unavailable source +tools weakened the performance/scope assessment. I would not use it as the sole +reviewer for this change; its two precise repairs and request for explicit remote +measurements are valuable. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json index 8fafe7c21d..9af526b64a 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-sources.json @@ -911,5 +911,71 @@ "confirmedOpen": 0, "deferred": 0, "designDecision": 0 - } + }, + "ciFollowups": [ + { + "parentHead": "066d0dd26d9cf7829c986b5d3af1d76c1634e8a5", + "sourceSha256": { + "packages/db/src/query/builder/types.ts": "257bae3fa76e433522c73091d84a500b3385c21fec98a0da3614174c4abb765d", + "packages/db/tests/collection-subscribe-changes.test.ts": "36e591f83aa5e65bd750382ae123dd17f70e7c0342dd1faeafb5c5993b2437bd", + "packages/db/tests/oracle-replay-manifest.ts": "25e28284ae94003131225dc57e08099247311c64ab7ee15c626c25da35023850", + "packages/db/tests/query/query-api-type-algebra.test-d.ts": "7590489bc629e193f1a5af708ea6fa4e8185713291a3d6d87280b0e7ab79f3b9", + "packages/db/tests/query/subquery-user-value.test.ts": "ce961739148e3e3c89191384c96c10894f6f57fc7c486a9d1994991d9719d7ec", + "packages/db/tests/query/union-all.test-d.ts": "b2751a1ba9b2ad16f4645bae9b081d2539377bfe55019e074c73c2ab3c5414f8", + "packages/db/tests/query/virtual-row-fields-oracle.test.ts": "28a5d98fe5bf57c6f53ada82bd4b0d51e8efe67b21e2bd83b996f2a1ad06620f", + "packages/db/tests/query/virtual-row-fields-reference-types.test-d.ts": "80dbbecc682bf757cf4e465471604f8793ee8b82bd679488c4ab1fbf9f41ea4d", + "packages/db/tests/query/virtual-row-fields-support.ts": "813980031f16171af5669c2d1b533b7fa383987950c8673e7ce208bcf1db03e1", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "b4b8d6792b4b37f3ec2ec30e71dbca37f1781aa5c0de7e25d0dfbd9814fd28c3", + "scripts/bench/compare-incremental-update.ts": "d2f5b4dbc79500906fa1930ab4c630297015c649ebcb6e174c0020b8788662ce" + }, + "originalTypeRedSources": { + "packages/db/src/query/builder/types.ts": "1a0c95fef7fa96281fadbf8b45e4360e773a89b9a0be7a0614240dcc6ae4ffb5", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "26e714284028f7c197ef45e928d509d61ec715acebda232f6090cbd439eb322c" + }, + "logSha256": { + "ci-inline-choice-red2.log": "979cbb24fc034581774d70635315878da72f9cfa8fdd2e86cbcadfe718b8cc00", + "ci-inline-choice-final-green.log": "68bbdad535fa546f85153513fc1938a3b31c539500bd43e6a86125a6e6af6f3c", + "ci-inline-choice-mutant.log": "8d5e326df63e2df83cc38c5d0fdf7cc7fbfe0a5708baa94df8c7370f57a0b541", + "ci-inline-choice-restored-green.log": "1fb210ebb1e8a86842c858a45811188449238d24b11c7a083e42e3c733b4af19", + "ci-whole-db-tsc-green2.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "ci-group-publication-reach-direct-green.log": "776cd2d1899e57ef817fd03a96ef810506869a2fc7ffb2e6da66a02b9d12cdd8", + "ci-route-input-green.log": "47f3e5934566f7fe3c2f12c15db140af2c29a0de7de3015ef5b8fc7660a9b5e2", + "ci-replay-manifest-green.log": "591c9a9b96a59a8e6531725f2f18ca34a5ac728e7357af1becaedf4c050f4d86", + "ci-payload-direct-replay-green.log": "1168474b6e575b876cb0137294f756b39ed35169b0c22f0add1ef3ebd2fa33a3", + "ci-supplemental-types-green.log": "1f0ea2dad72cb94cad76063c1f0c346144d49fe8a6dc5f91f9e96dbaf18cfd98", + "ci-comparator-controls.log": "bfbec45206ba2f49cb0197c4a5eed6f64ca31dc45f86a1456684d36b177ca0fe" + }, + "reach": { + "typeStates": 259, + "typeHistoriesPerState": 24, + "publicationStates": 88, + "publicationComparisons": 424, + "newGroupStates": 16, + "newGroupHistoriesPerState": 1 + }, + "ciBenchmark": { + "runId": 42087213348, + "candidateMerge": "88544ac64ba66e66407f7aac7473221ab5ed266b", + "base": "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "prHead": "066d0dd26d9cf7829c986b5d3af1d76c1634e8a5", + "baseJsonSha256": "e731391677c640a12d62103d394f8e7f168ef491f78ddaa6cd938cf058e02a75", + "candidateJsonSha256": "43f6de95b83b574f6be171e57f1f4aacea876f26ec7592269bc6dc3a1a1a32c9", + "artifactSha256": { + "scripts/bench/boundary-only-ci-2026-11-05.csv": "5655cdd8a6fd26d3a46befeb82a326f13c4039e0412c4ee483e42da023490179" + }, + "casesPerSide": 84, + "repetitionsPerCase": 3, + "retainedObservations": 504 + }, + "reviewAudit": { + "reviewId": 5790313417, + "items": 20, + "fixedNow": 4, + "acceptedDesign": 3, + "duplicates": 11, + "refuted": 2, + "confirmedOpen": 0 + } + } + ] } diff --git a/packages/db/src/query/builder/types.ts b/packages/db/src/query/builder/types.ts index b730960aab..322220461f 100644 --- a/packages/db/src/query/builder/types.ts +++ b/packages/db/src/query/builder/types.ts @@ -448,75 +448,66 @@ export type ResultTypeFromSelect = TSelectObject[K] > extends true ? ExtractExpressionType - : TSelectObject[K] extends ToArrayWrapper - ? Array + : TSelectObject[K] extends + | ToArrayWrapper + | MaterializeWrapper + ? ResultTypeFromSelectValue : TSelectObject[K] extends ConcatToArrayWrapper ? string - : // materialize() — Array for multi-row, T | undefined for findOne() - TSelectObject[K] extends MaterializeWrapper< - infer T, - infer IsSingle - > - ? IsSingle extends true - ? T | undefined - : Array - : TSelectObject[K] extends { - readonly __brand: `CaseWhenWrapper` - readonly _result?: infer T - } - ? ResultTypeFromCaseWhen - : // include() subquery — produces a child Collection - TSelectObject[K] extends IncludeWrapper< - infer TChildContext - > - ? Collection> - : // Ref (full object ref or spread with RefBrand) - recursively process properties - TSelectObject[K] extends AnyRef - ? ExtractRef - : // RefLeaf (simple property ref like user.name) - TSelectObject[K] extends RefLeaf - ? IsNullableRef extends true - ? T | undefined - : T - : // RefLeaf | undefined (schema-optional field) - TSelectObject[K] extends - RefLeaf | undefined - ? T | undefined - : // RefLeaf | null (schema-nullable field) - TSelectObject[K] extends RefLeaf | null - ? IsNullableRef< - Exclude - > extends true - ? T | null | undefined - : T | null - : // Nullable and/or optional object-type schema field - TSelectObject[K] extends - AnyRef | null | undefined - ? | ExtractRef< - Exclude< - TSelectObject[K], - null | undefined - > - > - | Extract< + : TSelectObject[K] extends { + readonly __brand: `CaseWhenWrapper` + readonly _result?: infer T + } + ? ResultTypeFromCaseWhen + : // include() subquery — produces a child Collection + TSelectObject[K] extends IncludeWrapper< + infer TChildContext + > + ? Collection> + : // Ref (full object ref or spread with RefBrand) - recursively process properties + TSelectObject[K] extends AnyRef + ? ExtractRef + : // RefLeaf (simple property ref like user.name) + TSelectObject[K] extends RefLeaf + ? IsNullableRef extends true + ? T | undefined + : T + : // RefLeaf | undefined (schema-optional field) + TSelectObject[K] extends + RefLeaf | undefined + ? T | undefined + : // RefLeaf | null (schema-nullable field) + TSelectObject[K] extends RefLeaf | null + ? IsNullableRef< + Exclude + > extends true + ? T | null | undefined + : T | null + : // Nullable and/or optional object-type schema field + TSelectObject[K] extends + AnyRef | null | undefined + ? | ExtractRef< + Exclude< TSelectObject[K], null | undefined > - : TSelectObject[K] extends Aggregate - ? T - : TSelectObject[K] extends - | string - | number - | boolean - | null - | undefined - ? TSelectObject[K] - : TSelectObject[K] extends Record< - string, - any - > - ? ResultTypeFromSelect - : never + > + | Extract + : TSelectObject[K] extends Aggregate + ? T + : TSelectObject[K] extends + | string + | number + | boolean + | null + | undefined + ? TSelectObject[K] + : TSelectObject[K] extends Record< + string, + any + > + ? ResultTypeFromSelect + : never }> > diff --git a/packages/db/tests/collection-subscribe-changes.test.ts b/packages/db/tests/collection-subscribe-changes.test.ts index 050fc07340..ac4addd8ea 100644 --- a/packages/db/tests/collection-subscribe-changes.test.ts +++ b/packages/db/tests/collection-subscribe-changes.test.ts @@ -2994,7 +2994,7 @@ describe(`Virtual properties`, () => { await syncedOnly.cleanup() }) - it(`should aggregate pending writes and origin for grouped rows`, async () => { + it(`publishes grouped projections with the output Collection metadata`, async () => { let persistInsert!: () => void const insertPersisted = new Promise((resolve) => { persistInsert = resolve @@ -3056,9 +3056,10 @@ describe(`Virtual properties`, () => { const groupRow = grouped.toArray.find((row) => row.group === `g1`) expect(groupRow).toBeDefined() - expect(groupRow!.$hasPendingWrites).toBe(true) - expect(groupRow!.$origin).toBe(`local`) - expect(groupRow!.$collectionId).toBe(`virtual-props-aggregate-source`) + expect(groupRow!.total).toBe(2) + expect(groupRow!.$hasPendingWrites).toBe(false) + expect(groupRow!.$origin).toBe(`remote`) + expect(groupRow!.$collectionId).toBe(grouped.id) persistInsert() await source.cleanup({ dependents: true }) diff --git a/packages/db/tests/oracle-replay-manifest.ts b/packages/db/tests/oracle-replay-manifest.ts index 927d86081d..81e1fa383f 100644 --- a/packages/db/tests/oracle-replay-manifest.ts +++ b/packages/db/tests/oracle-replay-manifest.ts @@ -380,7 +380,7 @@ const ownerGroups: ReadonlyArray< [ `db/tests/query/includes-work-counter-oracle.test.ts`, `includes-work`, - `correlated-links join-free join-targets`, + `correlated-links join-free join-targets projection-payload`, ], [ `db/tests/query/includes-publication-oracle.test.ts`, @@ -904,6 +904,10 @@ export type OracleReplayManifestEntry = { // Pagination cells carry their property name in the test title so the guard // can select one cell without running the rest of the matrix. const replayTestNames = new Map([ + [ + `includes-work.projection-payload`, + `nested source payloads need no metadata descriptor scans \\(random or replayed\\)`, + ], ...[ `reference`, `neon-realtime`, diff --git a/packages/db/tests/query/query-api-type-algebra.test-d.ts b/packages/db/tests/query/query-api-type-algebra.test-d.ts index 1eb7fe9212..9d5f3826f8 100644 --- a/packages/db/tests/query/query-api-type-algebra.test-d.ts +++ b/packages/db/tests/query/query-api-type-algebra.test-d.ts @@ -516,7 +516,7 @@ describe(`query API type algebra`, () => { expectTypeOf(nullableObject).toEqualTypeOf | null>() return { nullableNumber, nullableText, nullableObject } }, diff --git a/packages/db/tests/query/subquery-user-value.test.ts b/packages/db/tests/query/subquery-user-value.test.ts index 77bf5d9dd5..a72b812660 100644 --- a/packages/db/tests/query/subquery-user-value.test.ts +++ b/packages/db/tests/query/subquery-user-value.test.ts @@ -186,7 +186,10 @@ describe('subquery boundaries preserve operators and user rows', () => { .innerJoin({ group: groups }, ({ person, group }) => eq(person.groupId, group.groupId), ) - .where(({ group }) => eq(group.$key, 2)) + .where(({ group }) => { + // @ts-expect-error A projected QueryRef has no generated row key. + return eq(group.$key, 2) + }) .select(({ group }) => ({ groupId: group.groupId })) }, getKey: () => 1, diff --git a/packages/db/tests/query/union-all.test-d.ts b/packages/db/tests/query/union-all.test-d.ts index 903b0d7480..539d1ca89d 100644 --- a/packages/db/tests/query/union-all.test-d.ts +++ b/packages/db/tests/query/union-all.test-d.ts @@ -422,11 +422,11 @@ describe(`unionAll types`, () => { Array< OutputWithVirtual< | { - message: OutputWithVirtual<{ + message: { id: number timestamp: number userName: string - }> + } toolCall?: undefined } | { diff --git a/packages/db/tests/query/virtual-row-fields-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-oracle.test.ts index 18094858b2..9b83e04364 100644 --- a/packages/db/tests/query/virtual-row-fields-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-oracle.test.ts @@ -64,6 +64,7 @@ import { afterAll, describe, expect, test, vi } from 'vitest' import { Query, + count, createLiveQueryCollection, eq, include, @@ -284,14 +285,21 @@ const collisionCases = metadataCollisionCases * * This finite grammar crosses direct and QueryRef receivers, a one-to-many * join, each source's held write, every reserved-name collision, and absent, - * array and singleton inline inputs. The model recomputes from authored source + * array and singleton inline inputs. Grouped and aggregate projections also + * insert a held source row: their counts change while their output metadata + * remains owned by the output Collection. The model recomputes from authored source * arrays. Inline projections contain only their selected ordinary fields. * Reads and exact Collection entry keys are compared at preload, held mutation, * settlement without confirmation, and a later remote source update. It does * not claim framework timing, rejected writes, or arbitrary include depth. */ type BoundaryPublicationHistory = { - kind: `implicit-single` | `implicit-join` | `inline-return` + kind: + | `implicit-single` + | `implicit-join` + | `inline-return` + | `grouped` + | `aggregate` composition: `direct` | `query-ref` pendingSource: `parent` | `child` inline: `none` | `array` | `singleton` @@ -299,6 +307,16 @@ type BoundaryPublicationHistory = { authoredPending: boolean } const boundaryPublicationHistories: Array = [ + ...([`grouped`, `aggregate`] as const).flatMap((kind) => + ([`direct`, `query-ref`] as const).map((composition) => ({ + kind, + composition, + pendingSource: `child` as const, + inline: `none` as const, + collision: `none`, + authoredPending: false, + })), + ), ...([`implicit-single`, `implicit-join`] as const).flatMap((kind) => ([`direct`, `query-ref`] as const).flatMap((composition) => (kind === `implicit-single` @@ -335,7 +353,16 @@ type BoundaryJoinedRow = { chosen: AttributionRow } type BoundaryPublicationContext = Omit & { - result: BoundaryPublishedRow | BoundaryJoinedRow + result: + | BoundaryPublishedRow + | BoundaryJoinedRow + | { id: AttributionKey; total: number } +} +// This grammar also models joined namespaces and inline children. Keep its +// carrier open to those shapes; exact fields still come from the model below. +type BoundaryMetadataResult = { + ordinary: object + metadata: ReturnType[number][`metadata`] } // A namespace combines two source values rather than selecting either one. @@ -349,7 +376,20 @@ function expectedBoundaryPublication( parentId: string, childId: string, outputId: string, -): Array { +): Array { + if (history.kind === `grouped` || history.kind === `aggregate`) { + // Group membership and counts follow authored rows, independent of their + // metadata. No source row is selected whole, so publication owns metadata. + const counts = new Map() + for (const child of children) { + const id = history.kind === `aggregate` ? `all` : child.parentId + counts.set(id, (counts.get(id) ?? 0) + 1) + } + return [...counts].map(([id, total]) => ({ + ordinary: { id, total }, + metadata: expectedSourceMetadata(`output-${id}`, outputId, false), + })) + } if (history.kind === `implicit-single`) return expectedAttributedRows( children, @@ -391,10 +431,15 @@ function expectedBoundaryPublication( const values = children .filter((child) => child.parentId === parent.id) .map(({ id, label }) => ({ id, label })) - selected.ordinary = { - ...selected.ordinary, - children: history.inline === `singleton` ? values[0] : values, - } + return [ + { + ...selected, + ordinary: { + ...selected.ordinary, + children: history.inline === `singleton` ? values[0] : values, + }, + }, + ] } return [selected] } @@ -404,7 +449,7 @@ function expectedBoundaryPublication( // duplicate rows and mismatches between a public row's key and its entry key. function checkBoundaryPublication( actual: ReadonlyArray, - expected: ReadonlyArray, + expected: ReadonlyArray, ): void { const order = ( a: readonly [AttributionKey, object], @@ -498,6 +543,19 @@ test.each(boundaryPublicationHistories)( ? `local` : `authored` const selected = (() => { + if (history.kind === `grouped`) + return new Query() + .from({ chosen: rows }) + .groupBy(({ chosen }) => chosen.parentId) + .select(({ chosen }) => ({ + id: chosen.parentId, + total: count(chosen.id), + })) + if (history.kind === `aggregate`) + return new Query().from({ chosen: rows }).select(({ chosen }) => ({ + id: `all`, + total: count(chosen.id), + })) if (history.kind === `implicit-single`) return new Query().from({ chosen: rows }) if (history.kind === `implicit-join`) @@ -535,7 +593,12 @@ test.each(boundaryPublicationHistories)( : new Query().from({ outer: selected, })) as unknown as QueryBuilder, - getKey: (row) => (`chosen` in row ? `result-${row.chosen.id}` : row.id), + getKey: (row) => + `total` in row + ? `output-${row.id}` + : `chosen` in row + ? `result-${row.chosen.id}` + : row.id, }) const pending = new Set() const failures: Array = [] @@ -564,20 +627,33 @@ test.each(boundaryPublicationHistories)( await checkWithCleanup(async () => { await live.preload() check(`initial`) + const inserting = + history.kind === `grouped` || history.kind === `aggregate` const source = history.pendingSource === `parent` ? parents : rows - const key = history.pendingSource === `parent` ? `parent` : `child` + const key = inserting + ? `inserted` + : history.pendingSource === `parent` + ? `parent` + : `child` const before = history.pendingSource === `parent` ? { ...parent } : { ...children[0]! } - if (history.pendingSource === `parent`) + if (inserting) + children = [ + ...children, + { id: key, parentId: `parent`, label: `pending` }, + ] + else if (history.pendingSource === `parent`) parent = { ...parent, label: `pending` } else children = children.map((row) => row.id === key ? { ...row, label: `pending` } : row, ) pending.add(key) - const mutation = source.update(key, (row) => { - row.label = `pending` - }) + const mutation = inserting + ? source.insert({ id: key, parentId: `parent`, label: `pending` }) + : source.update(key, (row) => { + row.label = `pending` + }) finishMutation = async () => { source.utils.resolveSync() finishMutation = async () => {} @@ -587,14 +663,19 @@ test.each(boundaryPublicationHistories)( check(`held`) await finishMutation() pending.clear() - if (history.pendingSource === `parent`) parent = before + if (inserting) children = children.filter((row) => row.id !== key) + else if (history.pendingSource === `parent`) parent = before else children = children.map((row) => (row.id === key ? before : row)) check(`settled`) - const remote = { ...before, label: `remote-next-use` } + const remote = { ...before, id: key, label: `remote-next-use` } source.utils.begin() - source.utils.write({ type: `update`, value: remote }) + source.utils.write({ + type: inserting ? `insert` : `update`, + value: remote, + }) source.utils.commit() - if (history.pendingSource === `parent`) parent = remote + if (inserting) children = [...children, remote] + else if (history.pendingSource === `parent`) parent = remote else children = children.map((row) => (row.id === key ? remote : row)) check(`remote`) if (failures.length) @@ -612,6 +693,37 @@ test.each(boundaryPublicationHistories)( }, ) +// Calibrate the same comparison against the former source-attribution rule. +// Mutate one metadata observation at a time; ordinary group values stay valid. +test.each( + boundaryPublicationHistories.filter( + ({ kind }) => kind === `grouped` || kind === `aggregate`, + ), +)(`rejects source metadata on a grouped output: %j`, (history) => { + const parent = { id: `parent`, parentId: `root`, label: `parent` } + const child = { id: `child`, parentId: `parent`, label: `held` } + const expected = expectedBoundaryPublication( + history, + parent, + [child], + new Set([child.id]), + `parent-source`, + `child-source`, + `output`, + ) + const sourceMetadata = expectedSourceMetadata(child.id, `child-source`, true) + for (const field of virtualFieldNames) { + const wrong = expected.map( + ({ ordinary, metadata }) => + [ + metadata.$key as AttributionKey, + { ...ordinary, ...metadata, [field]: sourceMetadata[field] }, + ] as const, + ) + expect(() => checkBoundaryPublication(wrong, expected), field).toThrow() + } +}) + /** * Projection shape controls attribution, not the spelling of selected fields. * An authored new object has its own live-query metadata; a direct source or diff --git a/packages/db/tests/query/virtual-row-fields-reference-types.test-d.ts b/packages/db/tests/query/virtual-row-fields-reference-types.test-d.ts index 18599d98d3..01d929df12 100644 --- a/packages/db/tests/query/virtual-row-fields-reference-types.test-d.ts +++ b/packages/db/tests/query/virtual-row-fields-reference-types.test-d.ts @@ -175,7 +175,7 @@ describe(`virtual row field type boundary`, () => { .where(({ child }) => eq(child.id, row.id)) .select(({ child }) => { expectTypeOf(child).toEqualTypeOf< - Ref, false, true> + Ref, false, false> >() return child }), diff --git a/packages/db/tests/query/virtual-row-fields-support.ts b/packages/db/tests/query/virtual-row-fields-support.ts index 1ddf0308a2..2ac610d66c 100644 --- a/packages/db/tests/query/virtual-row-fields-support.ts +++ b/packages/db/tests/query/virtual-row-fields-support.ts @@ -1,7 +1,7 @@ // Shared cleanup harness for the virtual row field tests. It runs a check, // then every cleanup, and reports the check's failure as the cause. export async function checkWithCleanup( - check: () => Promise, + check: () => void | Promise, cleanups: ReadonlyArray<() => Promise>, ): Promise { let primaryFailure: unknown diff --git a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts index 6ab69b6c72..312b078859 100644 --- a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts @@ -141,12 +141,20 @@ const groupingBoundaries = [ // Seven through nine are neighboring depths around the former cutoff. Sixteen // distinguishes supporting that one boundary from merely moving it one level. const aggregateDepths = [0, 7, 8, 9, 10, 16] as const +// Conditional inline fields are legal authoring choices. Array/array forms +// distinguish wrapper identity from value shape; singleton forms retain absence. +const inlineChoices = [ + `array-array`, + `array-materialized`, + `array-single`, +] as const const authoredStates = authoredCollisions.flatMap(({ name }) => authoredPaths.flatMap((path) => authoredKinds.map((kind) => `authored/${name}/${path}/${kind}`), ), ) const states = [ + ...inlineChoices.map((choice) => `inline-choice/${choice}`), ...authoredStates, ...authoredStates.map((state) => `structured-refs/${state}`), ...authoredCollisions.flatMap(({ name }) => @@ -543,6 +551,37 @@ function consumerSource( ) } } + // The expected child shape comes from its declared selection. Choosing a + // wrapper at construction cannot expose that wrapper in a callback's values. + for (const choice of inlineChoices) { + const right = + choice === `array-array` + ? `toArray(leaves)` + : choice === `array-materialized` + ? `materialize(leaves)` + : `materialize(leaves.findOne())` + const child = `{ label: ${shape.value} }` + const children = + choice === `array-single` + ? `Array<${child}> | ${child} | undefined` + : `Array<${child}>` + addWitness( + `inline-choice/${choice}`, + `{ + const chooseArray = rows.size === 0; + const inner = new Query().from({ item: rows }).select(({ item }) => { + const leaves = new Query().from({ leaf: rows }).where(({ leaf }) => eq(leaf.id, item.id)).select(({ leaf }) => ({ label: leaf.value })); + return { id: item.id, children: chooseArray ? toArray(leaves) : ${right} }; + }); + const query = new Query().from({ result: inner }).fn.select(({ result }) => { + type Observed = Assert, Normalize<{ id: ${shape.key}; children: ${children} }>>>; + return result; + }); + const published = createLiveQueryCollection({ query }); + type PublishedObservation = Assert, Normalize>>>; + }`, + ) + } return { source: ` import { BTreeIndex, Query, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } from '@tanstack/db'; @@ -719,6 +758,7 @@ declareOracle({ groupedForms, groupingBoundaries, aggregateDepths, + inlineChoices, ], model: [consumerSource], check: [checkConsumer, checkConsumerConstruction], diff --git a/scripts/bench/boundary-only-ci-2026-11-05.csv b/scripts/bench/boundary-only-ci-2026-11-05.csv new file mode 100644 index 0000000000..4911688008 --- /dev/null +++ b/scripts/bench/boundary-only-ci-2026-11-05.csv @@ -0,0 +1,505 @@ +run,db_source,query,scenario,scale,source_index_mode,mutation_mode,repetition,cold_hydrate_ms,median_write_ms +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,10.928822000000025,0.1935659999999757 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,3.227841000000012,0.1680780000000368 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,1.7807670000000257,0.08245099999999184 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,1.8190329999999904,0.28697299999998904 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.2726469999998926,0.20652400000005855 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.4365099999999984,0.18117700000004788 +base,8feab6ea3,list + author,visible author update,100,none,synced,0,14.57971699999996,0.14882000000000062 +base,8feab6ea3,list + author,visible author update,100,none,synced,1,9.638667999999939,0.1676279999999224 +base,8feab6ea3,list + author,visible author update,100,none,synced,2,5.684134999999969,0.1459459999999808 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,11.040405999999962,0.2528230000000349 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,6.841672000000017,0.21078099999999722 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,6.75852000000009,0.18522399999994832 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,10.890375000000063,0.1747779999999466 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,6.505036000000018,0.16060700000002726 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,5.676983999999948,0.12764800000002197 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,1.0091879999999946,0.09004300000003695 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.5951679999999442,0.10737800000003972 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.7322500000000218,0.09016299999996136 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,64.12017100000003,1.3554289999999583 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,45.172025000000076,1.35044199999993 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,50.52614399999993,1.3311740000001464 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,2.4124089999997977,0.11426899999992202 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.782369000000017,0.08567700000003242 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.1169769999999062,0.08072900000001937 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.0909489999999096,0.064775999999938 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.1173180000000684,0.05653299999994488 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.0914299999999457,0.055292000000008557 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,5.101705999999922,0.10284099999989849 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,5.226761000000124,0.10195100000009916 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,5.011432000000013,0.09886499999993248 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.5735809999998764,0.1633809999998448 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,12.59706200000005,0.1528350000003229 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.18525899999986,0.15275500000007014 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.5058970000000045,0.09558100000003833 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.749892000000273,0.09156500000017331 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.936633000000256,0.08791999999994005 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6260940000001938,0.08129000000008091 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5951679999998305,0.08301200000005338 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5961600000000544,0.08078900000009526 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,50.22532900000033,1.6201999999998407 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,44.046024000000216,1.6429229999998824 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,47.7172599999999,1.593159999999898 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,3.1286850000001323,0.07755399999996371 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,2.2794519999997647,0.07360900000003312 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,1.261812000000191,0.06395500000007814 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.2947100000001228,0.24712499999986903 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,1.0415859999998247,0.192323999999644 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,1.1236479999997755,0.17546900000024834 +base,8feab6ea3,list + author,visible author update,100,manual,synced,0,4.862203000000136,0.1471070000002328 +base,8feab6ea3,list + author,visible author update,100,manual,synced,1,4.346782000000076,0.1450039999999717 +base,8feab6ea3,list + author,visible author update,100,manual,synced,2,8.070334999999886,0.07757500000025175 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,2.978904000000057,0.16915999999991982 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,2.8442159999999603,0.16942000000017288 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,2.8968540000000758,0.1711219999997411 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,4.1662350000001425,0.11117400000011912 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,9.717854999999872,0.1109230000001844 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,4.097173999999995,0.1152910000000702 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5222509999998692,0.07267700000011246 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.610660999999709,0.0727670000001126 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3544729999998708,0.07128499999998894 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,47.63907400000062,1.3291509999999107 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,45.27053999999953,1.2926969999998619 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,47.646254999999655,1.2819909999998345 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,1.8094989999999598,0.07365799999934097 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.9678380000004836,0.07346899999993184 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0942740000000413,0.0684609999998429 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.9500320000006468,0.0594280000004801 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.901810000000296,0.0555819999999585 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.930623000000196,0.05383900000015274 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.6302150000001348,0.09583199999997305 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,3.0257440000004863,0.09551999999985128 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,3.235893999999462,0.09486900000047171 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,4.521780000000035,0.15243499999996857 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,3.1951429999999164,0.14999100000022736 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.724323999999797,0.14908999999988737 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.9190609999996013,0.09370899999976245 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,11.30393500000082,0.09032399999978225 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.270128999999542,0.0906539999996312 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.4184269999996104,0.07746399999996356 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.31990200000018376,0.07796499999949447 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.3474319999995714,0.07755400000041845 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,47.741024999999354,1.603476000000228 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,43.435553999999684,1.6000510000003487 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,43.12706799999978,1.5814829999999347 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,7.00714699999935,0.05213699999967503 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,16.799791999999798,0.05060400000002119 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,9.37215600000036,0.06514600000082282 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,7.497440000000097,0.7430359999998473 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,6.3041889999994964,0.7217250000003332 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,8.714594000000034,0.7124709999998231 +base,8feab6ea3,list + author,visible author update,1000,none,synced,0,24.671072000000095,0.07653300000038143 +base,8feab6ea3,list + author,visible author update,1000,none,synced,1,24.228339000000233,0.07473000000027241 +base,8feab6ea3,list + author,visible author update,1000,none,synced,2,29.02353200000016,0.07440000000042346 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,9.358675000000403,0.15663099999983388 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,8.231182000000445,0.15720200000032492 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,7.256774999999834,0.15859400000044843 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,8.82968399999936,0.10086900000078458 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,30.55337899999995,0.10441399999945133 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.139030999999704,0.1005379999996876 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.2834830000001602,0.06766900000002352 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.08084400000007,0.06782000000021071 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.1588489999994636,0.06666899999981979 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,457.93855299999996,1.2759519999999611 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,484.7303119999997,1.2694630000005418 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,454.95258300000023,1.274821000000884 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,5.183925999999701,0.06760899999972025 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,13.91463499999918,0.06669900000088091 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.644470999999612,0.15154400000028545 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.005654000000504,0.050394000001688255 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,14.063724999999977,0.04730000000017753 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.665783000000374,0.04842099999950733 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,22.63133200000084,0.09214600000086648 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,32.09347099999832,0.09047300000020186 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,30.906789000000572,0.09104399999887391 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,7.499241999999867,0.14112800000111747 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.433665000000474,0.1404770000008284 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,7.409359000001132,0.14520400000037625 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,8.290388999999777,0.08068900000034773 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,8.559215999999651,0.0793870000015886 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,12.457596000000194,0.08735900000101537 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.1358849999996892,0.0968830000001617 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.3260260000006383,0.07526099999995495 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.2379359999995359,0.07495999999991909 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,461.3720570000005,1.611667999999554 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,476.9030469999998,1.5957939999989321 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,457.46535399999993,1.6006909999996424 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.4451509999998962,0.05393000000003667 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,1.0116219999999885,0.054269999998723506 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,1.0256230000013602,0.054040000000895816 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,1.0621759999994538,0.21943300000020827 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.9581729999990785,0.20169799999894167 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.9458159999994677,0.20345999999881315 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,3.1396009999989474,0.07658300000002782 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,3.2429039999988163,0.07596200000079989 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,3.388227999999799,0.07373800000095798 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,3.3013499999997293,0.16487299999971583 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,5.1282740000006015,0.1722939999999653 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,3.288501000000906,0.16856800000095973 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,4.563190999999279,0.10742899999968358 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,4.371439000000464,0.10884099999930186 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,4.7026069999992615,0.1094119999997929 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.43720500000017637,0.0699640000002546 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.48682799999915005,0.07072499999958382 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.47502999999960593,0.07047400000010384 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,478.81909300000007,1.2786759999999049 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,455.35170800000014,1.2792969999991328 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,473.25575500000014,1.2824319999999716 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.1731820000004518,0.07682299999942188 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,1.103519000000233,0.07234699999935401 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,1.0374210000009043,0.06893200000013167 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.1948639999991428,0.05630300000120769 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,1.0402149999990797,0.05786600000101316 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,1.0244209999982559,0.057383999999728985 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,3.9663839999993797,0.09686300000066694 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.23578500000076,0.0970629999992525 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,3.231920000000173,0.09279699999933655 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,6.2817809999996825,0.15112300000146206 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,3.1191130000006524,0.1476780000011786 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.9785959999990155,0.14747799999895506 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,14.053128999999899,0.08801999999923282 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,14.002964999999676,0.08727899999939837 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.9362179999989166,0.08887099999992643 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.5013699999981327,0.0779949999996461 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.3760550000006333,0.10752900000079535 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.3830659999985073,0.07504100000005565 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,476.36525900000197,1.5970170000000508 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,451.8797999999988,1.5953850000005332 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,476.8800029999984,1.5925900000002002 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,72.94599900000321,0.060319000000163214 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,45.92291000000114,0.06291300000157207 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,61.906677999999374,0.05893699999796809 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,60.62749099999928,7.219224000000395 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,61.30925800000114,7.32526499999949 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,58.06513300000006,7.2255999999979394 +base,8feab6ea3,list + author,visible author update,10000,none,synced,0,266.0298609999991,0.0838339999972959 +base,8feab6ea3,list + author,visible author update,10000,none,synced,1,240.64750899999854,0.08141099999920698 +base,8feab6ea3,list + author,visible author update,10000,none,synced,2,242.1538299999993,0.1423800000011397 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,67.23586600000272,0.16406199999983073 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,68.52803300000232,0.15896400000201538 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,60.46113100000002,0.15810400000191294 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,72.289041,0.10716799999863724 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,60.607638000001316,0.10574600000109058 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,72.97703700000056,0.11100400000213995 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.260501000000659,0.07631300000139163 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,8.237193000000843,0.07944700000007288 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,5.471072000000277,0.07476999999926193 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,4524.934381000003,1.757513000000472 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,4633.0669199999975,1.2676700000010896 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,4617.718115999996,1.263304000000062 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,63.79095199999574,0.06925200000114273 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,44.24848100000236,0.06844100000307662 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,47.07335800000146,0.07026399999449495 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,68.79279099999985,0.057585000002291054 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.14989899999637,0.05761500000517117 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,53.55735399999685,0.054460999999719206 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,296.77505799999926,0.10108000000036554 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,241.23524899999757,0.09677200000442099 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,236.8691070000059,0.09551099999953294 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,73.67528499999753,0.18187799999577692 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,66.5427819999968,0.17624000000068918 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,56.869721000002755,0.17457699999795295 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,66.20736699999543,0.08734899999399204 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,67.9502680000005,0.08912099999724887 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,58.51307999999699,0.08628699999826495 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,7.562479000000167,0.08616800000163494 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,4.568051000002015,0.08581599999888567 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,5.108927999994194,0.08370300000387942 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,4618.897368000005,1.5900959999999031 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,4624.132275999997,1.5910369999983232 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,4621.722263999996,1.5994100000025355 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.271190999999817,0.057815000000118744 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,1.719397000000754,0.05729499999870313 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,3.226950999996916,0.06489600000350038 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,4.726814000001468,0.7852180000045337 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,3.138330000001588,1.13242000000173 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.7209489999950165,0.7562049999978626 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,5.755871000001207,0.08501500000420492 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,3.932031000003917,0.0828719999990426 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,7.043541000006371,0.08349400000588503 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,5.747149000002537,0.17802200000733137 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,3.915126000007149,0.1784029999980703 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,5.936247999998159,0.18142799999623094 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,5.084891999998945,0.11972699999751057 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,4.8275529999955324,0.11849500000244007 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.728485999992699,0.11722299999382813 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.6137149999995017,0.0784049999929266 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5732150000112597,0.0782749999925727 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.5683380000118632,0.07815600000321865 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,4621.406743,1.2768440000072587 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,4637.115011000002,1.2690329999895766 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,4611.230287999992,1.2724279999965802 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.1409500000008848,0.06818099999509286 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.6595190000080038,0.06970300000102725 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,2.628458999999566,0.07502999999269377 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.789401000001817,0.06253300000389572 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,9.708582999999635,0.06302299999515526 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,3.068556999991415,0.06200199999148026 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.905352000001585,0.09796400000050198 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,3.999280000003637,0.09879600000567734 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,6.848593000002438,0.09912600000097882 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,5.682803999996395,0.19434699999692384 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,4.3795610000088345,0.19211299999733455 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.809269999997923,0.1967200000071898 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,13.999582999997074,0.0979150000057416 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,4.881371000010404,0.09861500000988599 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,4.771869999996852,0.09811500000068918 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.7222559999936493,0.09081400001014117 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.6507699999929173,0.09109500001068227 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.5735659999918425,0.09014300000853837 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,4668.696383999995,1.5924600000143982 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,4625.575171999997,1.5999200000078417 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,4628.366093000004,1.6053390000015497 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,0,9.858115999999995,0.18257900000003247 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,1,3.1331930000000057,0.13741300000003775 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,2,1.7444840000000568,0.07204699999999775 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,0,3.163438000000042,0.273262999999929 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,1,1.853433999999993,0.1927739999999858 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,2,0.9630909999999631,0.1578230000000076 +candidate,88544ac64,list + author,visible author update,100,none,synced,0,7.631290000000035,0.17761200000006738 +candidate,88544ac64,list + author,visible author update,100,none,synced,1,6.471869999999967,0.09025300000007519 +candidate,88544ac64,list + author,visible author update,100,none,synced,2,2.7752249999999776,0.13078299999995124 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,0,13.711482000000046,0.23887200000001485 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,1,4.01551500000005,0.2130539999999428 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,2,3.6269509999999627,0.17540900000005877 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.503926999999976,0.15460800000005293 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.727971000000025,0.14222000000006574 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,2,6.333746000000019,0.11105399999996735 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,0,0.8589169999997921,0.08749899999997979 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,1,0.6434790000000703,0.0845640000000003 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,2,0.5689189999998234,0.08509600000002138 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,0,2.0671599999998307,0.06621700000005148 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,1,2.0288030000001527,0.10009800000011637 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,2,2.631362999999965,0.0990159999998923 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,0,1.3914240000001428,0.1352999999999156 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,1,1.0728630000000976,0.07074499999998807 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,2,1.3064280000000963,0.10473499999989144 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.2825930000001335,0.08033799999998337 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.7868610000000444,0.04171100000007755 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.055276000000049,0.04267299999992247 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,0,2.675907000000052,0.08590599999979531 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,1,3.300617999999986,0.08242100000006758 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,2,2.054941000000099,0.07934700000009798 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,0,3.3183239999998477,0.16402199999993172 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,1,4.028021000000081,0.1633710000000974 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,2,2.38078100000007,0.1440020000000004 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.816412999999784,0.09274600000003375 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.300387999999884,0.08512500000006185 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.164897999999994,0.07950699999992139 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6302490000000489,0.07949699999994664 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5744070000000647,0.07366899999988163 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5552190000000792,0.07327799999984563 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,0,2.5542069999999057,0.378097999999909 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,1,2.1142979999999625,0.3471420000000762 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,2,1.6323370000000068,0.35603500000001986 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,0,2.159074000000146,0.059718000000202665 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,1,1.6332239999999274,0.05286799999998948 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,2,0.8482409999999163,0.04764000000000124 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,0,0.9619179999999687,0.23530700000014804 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,1,0.8134900000000016,0.18245900000010806 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,2,0.7216240000002472,0.16439199999967968 +candidate,88544ac64,list + author,visible author update,100,manual,synced,0,1.9992379999998775,0.07253700000001118 +candidate,88544ac64,list + author,visible author update,100,manual,synced,1,1.7289800000003197,0.06888100000014674 +candidate,88544ac64,list + author,visible author update,100,manual,synced,2,1.574141999999938,0.07275799999979427 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,0,2.8124980000002324,0.2294080000001486 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,1,2.7915070000003652,0.16605500000014217 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,2,2.4184869999999137,0.17295500000000175 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,8.794940999999653,0.10465500000009342 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,4.749714999999924,0.10442399999965346 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,3.2767329999996946,0.10539599999992788 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5113440000000082,0.0726169999998092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.46193099999982223,0.0721760000001268 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3189310000002479,0.07150499999988824 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,0,2.1370419999998376,0.05095600000004197 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,1,1.4980089999999109,0.049923000000035245 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,2,2.343757000000096,0.08724899999970148 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.6267850000003818,0.05528099999992264 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.6139960000000428,0.05430999999998676 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0284770000002936,0.05374900000015259 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.6464339999997719,0.04220200000008845 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.6434290000001965,0.04154100000005201 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.6324829999998656,0.04065000000036889 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,0,1.9360249999999724,0.07691299999987677 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,1,1.5014740000001439,0.07779500000015105 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,2,1.5390299999999115,0.07824500000015178 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,0,3.6293730000002142,0.14450299999998606 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,1,2.511974999999893,0.14475399999992078 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,2,2.245002000000113,0.14580500000010943 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.1341529999999693,0.08990300000004936 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.7564299999999093,0.09084400000028836 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.504178000000138,0.08460500000001048 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.41735499999958847,0.0742099999997663 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.3006540000001223,0.07575199999973847 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.37137799999982235,0.07434899999998379 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,0,1.3597459999996317,0.3338130000001911 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,1,1.9465399999999136,0.3265310000001591 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,2,1.2751610000000255,0.32546999999976833 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,0,5.495094999999765,0.03794599999991988 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,1,4.986002999999982,0.03811600000017279 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,2,4.777626000000055,0.03786499999978332 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,0,8.555577999999969,0.7557950000000346 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,1,6.222408000000087,0.7081450000000586 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,2,4.158813000000009,0.7031569999999192 +candidate,88544ac64,list + author,visible author update,1000,none,synced,0,16.074898999999732,0.05941800000027797 +candidate,88544ac64,list + author,visible author update,1000,none,synced,1,15.836436999999933,0.057405000000017026 +candidate,88544ac64,list + author,visible author update,1000,none,synced,2,17.434915000000274,0.05793600000015431 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,0,6.739651000000322,0.14848899999969944 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,1,15.20997299999999,0.14941999999973632 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,2,6.547086000000036,0.1507219999998597 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,7.707779000000301,0.09879600000022037 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,16.010623000000123,0.1054959999996754 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.696096000000125,0.09216599999990649 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.5453189999998358,0.14231999999992695 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.040614000000005,0.06851099999994403 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.9029910000003838,0.06591699999989942 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,0,11.976563999999598,0.04918299999917508 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,1,16.394068999999945,0.04803100000026461 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,2,10.743525999999292,0.046828999999888765 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,0,4.685720000000401,0.050204000000121596 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.426958999999442,0.05095500000061293 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.514998999999989,0.05139499999950203 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,0,4.63155099999949,0.035412999999607564 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,1,17.170763999999508,0.03354899999976624 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.520357000000331,0.033660000000054424 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,0,14.780359999999746,0.07303700000011304 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,1,20.445354000000407,0.07978800000000774 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,2,20.66944500000045,0.07743399999981193 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,0,16.442520999999942,0.14258999999947264 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.206629000000248,0.1446330000007947 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,2,6.875971000000391,0.1444129999999859 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,7.903336999999738,0.08293200000025536 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,9.180850000000646,0.08044900000004418 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,7.3091999999996915,0.08114999999997963 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.0042610000000423,0.07468000000062602 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.8880300000000716,0.07304700000076991 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.014165999999932,0.07085499999993772 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,0,15.409796999999344,0.3367469999993773 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,1,12.603107999999338,0.32808400000067195 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,2,13.227799000000232,0.3334610000001703 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,0,1.132900999999947,0.04190199999993638 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,1,0.7854079999997339,0.04212199999983568 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,2,14.476571000000149,0.04125099999964732 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.7013340000003154,0.20777599999928498 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.67599699999937,0.1873359999999593 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.6554059999998572,0.18597399999998743 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,0,1.9762449999998353,0.10354300000017247 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,1,1.7249949999995806,0.06289300000025833 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,2,1.6311960000002728,0.06013900000016292 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,0,4.38738099999955,0.17058099999940168 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,1,2.4884500000007392,0.16244000000006054 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,2,2.641335000000254,0.163220999999794 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.84915699999965,0.10336300000017218 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.3359510000000228,0.10802899999998772 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.5819830000000366,0.10080800000014278 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.4881199999999808,0.07010300000001735 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.3565859999998793,0.06877200000053563 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.3914970000005269,0.07007300000077521 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,0,11.585137000000032,0.05157599999984086 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,1,12.43050299999959,0.051314999999704014 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,2,19.119128000000273,0.053598999999849184 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.0101599999998143,0.060548999999809894 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.7692749999996522,0.05794599999990169 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.7658999999994194,0.05660299999999552 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.8269700000000739,0.043373999999857915 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.7370160000000396,0.04297300000052928 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7493150000000242,0.043805000000247674 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,0,1.822508000000198,0.07798499999989872 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,1,1.5344640000002983,0.07748400000036781 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,2,1.5632459999997081,0.07571099999950093 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.555287999999564,0.14807899999959773 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.3951519999991433,0.14871899999980087 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.367812000000413,0.17478699999992386 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.5499159999999392,0.08692800000062562 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.3810770000000048,0.08607699999993201 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.3420500000001994,0.08579600000030041 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.4349709999996776,0.07531100000051083 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4000799999994342,0.07449999999971624 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.6065140000000611,0.0739690000000337 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,0,20.443201000000045,0.334023000000343 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,1,11.346284999999625,0.32344699999976 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,2,10.258228999999119,0.329515999999785 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,0,62.441343999999845,0.04810100000031525 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,1,55.11252499999955,0.04859200000009878 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,2,124.19730699999946,0.04825100000016391 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,0,51.64546100000007,7.153169999999591 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,1,53.469646999999895,7.2199820000005275 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,2,54.313482000001386,7.141787000000477 +candidate,88544ac64,list + author,visible author update,10000,none,synced,0,302.38135599999987,0.06555699999989884 +candidate,88544ac64,list + author,visible author update,10000,none,synced,1,173.2878720000008,0.06475499999942258 +candidate,88544ac64,list + author,visible author update,10000,none,synced,2,162.76685999999972,0.10078900000007707 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,0,54.17598899999939,0.15315599999848928 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,1,75.81132900000011,0.15674199999921257 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,2,58.62085699999989,0.15428800000154297 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,66.9599100000014,0.09743400000115798 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,63.098103000000265,0.09626199999911478 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,84.45169700000042,0.1083199999993667 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.380178000001251,0.0726169999998092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,1,5.976478000000498,0.07303799999863259 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,2,7.494918000000325,0.09658300000046438 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,0,162.3468099999991,0.05143600000155857 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,1,122.039041,0.05008399999860558 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,2,165.96462800000154,0.05429000000003725 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,0,60.75531499999852,0.0578349999996135 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,1,53.43638799999826,0.057645000000775326 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,2,70.03007400000206,0.06034899999940535 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,0,59.01503799999773,0.04122099999949569 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.919566000000486,0.04073000000062166 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,2,58.96925099999862,0.04076999999961117 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,0,170.9088899999988,0.08076900000014575 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,1,167.29200199999832,0.07847499999843421 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,2,325.1053979999997,0.08057900000130758 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,0,62.653363000001264,0.16743700000006356 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,1,58.31050799999866,0.16703699999925448 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,2,65.07070499999827,0.16313099999752012 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,70.05843499999901,0.08767899999656947 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,60.79862099999809,0.08796000000074855 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,64.51413400000092,0.08579599999939092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.564735999996628,0.08073900000090362 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,6.883999000001495,0.08500500000081956 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,6.216143000001466,0.08205100000122911 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,0,132.70738599999822,0.33328199999959907 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,1,120.50242499999877,0.33414300000004005 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,2,161.0908870000021,0.35326100000020233 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,0,2.5305439999974624,0.04574700000011944 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,1,1.5166779999999562,0.08248199999798089 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,2,1.7239939999999478,0.045927999999548774 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,0,2.850246000001789,0.7814939999989292 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,1,2.601737000000867,0.7648179999996501 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.382539000001998,0.74752300000182 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,0,3.855688999999984,0.0661870000003546 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,1,4.520678999997472,0.0712149999999383 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,2,4.669067999999243,0.07420900000215624 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,0,13.411325999997644,0.16427200000180164 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,1,4.164724999998725,0.16817799999989802 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,2,5.613472000000911,0.16807799999878625 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,14.06852599999911,0.10964199999943958 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,6.086559999999736,0.11214500000278349 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.081672000000253,0.11161400000128197 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.657138999999006,0.08227099999930942 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5440429999980552,0.08111900000221794 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.6267450000013923,0.07959699999992154 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,0,139.32408399999986,0.05284800000299583 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,1,112.05037699999957,0.05038499999864143 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,2,124.64969999999812,0.05094499999904656 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.8489279999994324,0.05501100000037695 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,1,2.559295999999449,0.06127999999807798 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.3990540000013425,0.06071000000156346 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,10.782136999998329,0.04771000000255299 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,2.263528999999835,0.04814099999930477 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.4010770000022603,0.047350000000733417 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,0,4.177913999999873,0.08118000000104075 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,1,4.559847000000445,0.08128000000215252 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,2,4.624421999993501,0.08216199999878881 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.239558000001125,0.1805270000040764 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,1,3.283634000006714,0.17965499999991152 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.530588000001444,0.18280999999842606 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.9643579999974463,0.09516099999746075 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,3.937397999994573,0.09578200000396464 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,3.9324710000000778,0.09300700000312645 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6621269999959623,0.08928200000082143 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5510530000028666,0.09108399999968242 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6592830000008689,0.09029299999383511 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,0,146.1472930000018,0.33950999999797205 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,1,112.94211500000529,0.7060209999981453 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,2,112.52661100000114,0.3370169999980135 diff --git a/scripts/bench/compare-incremental-update.ts b/scripts/bench/compare-incremental-update.ts index c7a213416c..732e59518d 100644 --- a/scripts/bench/compare-incremental-update.ts +++ b/scripts/bench/compare-incremental-update.ts @@ -419,7 +419,7 @@ function formatMarkdown( lines.push(``) const gateFailures = regressionFailures(allComparisons, threshold) lines.push( - `CI regression gate: **${gateFailures.length === 0 ? `PASS` : `FAIL`}**. Query geometric means: >+${Math.max(30, threshold * 100)}% writes or >+${Math.max(50, threshold * 100)}% cold. A case also fails when all three repetitions exceed the entire base range by >+${Math.max(50, threshold * 100)}% and the metric's absolute floor.`, + `CI regression gate: **${gateFailures.length === 0 ? `PASS` : `FAIL`}**. Query geometric means: >+${Math.max(30, threshold * 100)}% writes or >+${Math.max(50, threshold * 100)}% cold. A case also fails when every repetition exceeds the entire base range by >+${Math.max(50, threshold * 100)}% and the metric's absolute floor.`, ) if (gateFailures.length > 0) lines.push(``, ...gateFailures.map((failure) => `- ${failure}`)) From bd3f574eca1c2fda72ed64aab561643f02613fe2 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 12:39:28 -0700 Subject: [PATCH 4/9] Fix join identities and wrapped aggregate inference Remove discarded metadata work and redundant per-row copies. Preserve source-attributed keys at facade publication and cache compiled resolution. Law: conserve include contributions and published source attribution; inferred wrapped aggregates expose their implicit-group keys and scalar types. Authority: live-query architecture and approved boundary-only metadata rule. Reach: 48 finite join programs, 576 required states, 1,728 comparisons; 313 native type states each reached across 24 source descriptions. RED: expanded join grammar fails all 48 predecessor programs; wrapped aggregate consumer rejects 35 native law constraints. GREEN: 7,416 runtime tests, 33 native type checks, 32 supplemental checks, full DB tsc, and ESM/CJS declaration builds pass. Mutant: unmatched-only join repair fails 48 cases; ignoring aggregate provenance fails native constraints. Publication owner rejects key overwrite. Limits: eager controlled core histories, inferred expression types and named public cuts. Provider/framework timing and explicit type erasure are separate. See the versioned high-review report and source/evidence manifest. --- .changeset/quiet-documents-return.md | 4 +- docs/contributing/oracle-coverage.md | 39 +- .../2026-11-05-boundary-only-high-review.md | 215 +++++++++++ ...2026-11-05-boundary-only-high-sources.json | 78 ++++ packages/db/src/query/builder/functions.ts | 154 ++++++-- packages/db/src/query/builder/types.ts | 24 +- packages/db/src/query/compiler/group-by.ts | 70 +--- packages/db/src/query/compiler/index.ts | 91 ++--- packages/db/src/query/compiler/joins.ts | 29 +- .../db/src/query/compiler/route-metadata.ts | 49 ++- .../src/query/live/bucket-facade-adapter.ts | 21 +- .../src/query/live/materialized-pipeline.ts | 2 +- .../query/builder/callback-types.test-d.ts | 10 +- .../includes-context-transport-oracle.test.ts | 210 +++++++++++ .../query/includes-context-transport.test.ts | 8 +- .../db/tests/query/includes-oracle-helpers.ts | 7 +- .../virtual-row-fields-types-oracle.test.ts | 116 +++++- scripts/bench/high-review-2026-11-05.csv | 337 ++++++++++++++++++ 18 files changed, 1245 insertions(+), 219 deletions(-) create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md create mode 100644 docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json create mode 100644 scripts/bench/high-review-2026-11-05.csv diff --git a/.changeset/quiet-documents-return.md b/.changeset/quiet-documents-return.md index cfea5903cf..6b02f3433b 100644 --- a/.changeset/quiet-documents-return.md +++ b/.changeset/quiet-documents-return.md @@ -2,4 +2,6 @@ '@tanstack/db': patch --- -Restore nested-row query performance by keeping source payloads opaque during metadata cleanup and resolving includes along compiled paths. Intermediate projections, functional callback inputs, inline results and Effect outputs retain authored fields. Published Collection rows continue to receive genuine computed metadata. +Restore nested-row query performance by keeping source payloads opaque during metadata cleanup and resolving includes along compiled paths. Intermediate projections, functional callback inputs, inline results and Effect outputs retain authored fields, while published Collection rows receive genuine computed metadata. + +Preserve child identities through outer joins and fan-out, and retain aggregate result types through expression wrappers. diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index 10949e589e..5484d81926 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -1024,16 +1024,21 @@ by this public-type oracle; it needs a conditional/optional-key type law and generated empty/nonempty runtime choices before a broader claim. The repair above establishes statically empty lists, not arbitrary dynamic grouping. -Static inference limit, owned by this primary public-type oracle: when an -aggregate is entirely inside an expression that erases aggregate provenance, -a missing generated `$key` is not inferred for its intermediate value. For -example, `select(({ row }) => ({ positive: gt(count(row.id), 0) }))` generates -one keyed group at runtime, while a QueryRef callback's `group.$key` is absent -from its inferred shape unless grouping is explicit. The existing inline type -path also had this omission. Closing that inference class needs expression -provenance and a wrapped-aggregate grammar dimension; the present authored-value -and publication-type claim does not establish complete group-key inference. -No runtime key loss is accepted by this change. +The high review adds 27 function/conditional forms with aggregate and ordinary +controls to this same public-type owner, for all 24 source descriptions. +Inferred expressions now retain type-only aggregate provenance through function +arguments and conditional conditions, branches and defaults. Ten nested coalesce +wrappers distinguish propagation from a shallow repair. The shared shape/value +law checks generated intermediate keys and scalar values. Unchanged production +rejects 35 native constraints on the selected source description; the repair +passes all 33 owner checks, with all 313 declared states reached 24 times. +Ignoring provenance restores the native constraint failures. Transpiled builder +JavaScript is unchanged. This repairs `gt(count(row.id), 0)`, wrapped coalesce +and the other admitted inferred forms. Explicit widening to `BasicExpression` +and the existing six-or-more-pair `caseWhen` any fallback erase input facts and +remain outside this inference claim. The owner needs generated explicit-erasure +contracts before promising recovery of those facts. No runtime key loss is +accepted. See the [high-review evidence](oracle-reviews/2026-11-05-boundary-only-high-review.md). Chunk 24 extends this same owner with `virtual-row-fields-receiver-types-oracle.ts` and the native compiler support `virtual-row-fields-receiver-types-support.ts`. @@ -5541,6 +5546,20 @@ establish elapsed-time performance. ## Compound joins +The high review extends the route-context owner with independent join source +keys and matched fan-out: four join kinds, plain/QueryRef inputs on either side, +and numeric/string/mixed keys (48 finite programs). Three parents share or +separate routes. Initial rows, main departure/reentry and child departure use an +independent flat join at all three include forms. All 576 declared path/cut +states reach once, with 1,728 parent/form/cut comparisons. Original production +and an unmatched-only key repair both fail in public-key reduction after legal +admission. Pair identities repair projected join rows; the publication owner +also preserves source keys for whole-source selections at matched/unmatched +cuts. This extension uses eager synchronous sources and filters child-absent +rows. It does not prove arbitrary full-join absence shapes, async loading, +provider/framework timing or exact key serialization. See the +[high-review evidence](oracle-reviews/2026-11-05-boundary-only-high-review.md). + The route-context transport owner (`packages/db/tests/query/includes-context-transport-oracle.test.ts`) also crosses FROM/JOIN QueryRef placement, expression/direct functional return, and diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md new file mode 100644 index 0000000000..b5f0dc0d9d --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -0,0 +1,215 @@ +# High review: boundary-only metadata and hot paths + +This record evaluates the ten findings supplied for PR #2356 at +`066d0dd26d9cf7829c986b5d3af1d76c1634e8a5`. Experiments start from pushed +predecessor `708a580980b9c7859a66700360b832eaaff046b5`. Intervening CI fixes do +not change the inspected hot paths. The companion +[manifest](2026-11-05-boundary-only-high-sources.json) identifies the repaired +source by SHA256 and retains the experiment log hashes. Earlier records remain +historical. Raw review and append-only scratch accounting are in +`/tmp/db-prep-pr-2026-11-05/review-high-10-ledger.md` on the authoring host. + +## Laws, experiments and inferences + +No new product decision is needed. The November 5 maintainer decision requires +authored intermediate fields and genuine metadata at Collection publication. +Whole-source selections retain source attribution. Other grouped projections +receive their output Collection's attribution. Architecture laws 2, 4, 8 and 9 +also require contribution conservation, route correctness, descendants and +coherent publication. Cleanup optimizations cannot weaken these guarantees. + +| Law and authority | Prior gap | Decisive experiment | Repair and scope | +| --- | --- | --- | --- | +| Distinguishable projected join contributions retain distinct public identities. Architecture contribution conservation. | The route owner did not cross independent source keys with matched fan-out and absent main sides. | All 48 expanded legal programs fail on predecessor production. An unmatched-only key repair still fails all 48. These are graph invariant failures after admission, before snapshot comparison. | Include joins use source-key pairs. The independent flat join compares Collection, array and materialized results at four cuts. Source-attributed whole-row selections retain the source key. | +| Inferred wrapped aggregates have the same implicit-group key and scalar value types as visible aggregates. Public query result contract. | The native owner varied visible aggregate depth, but not expression wrappers. | A legal generated consumer gives 35 TS2344 constraints: 27 missing-key and eight scalar-type failures. Ignoring provenance restores native constraint failures. | Type-only provenance crosses functions and conditionals. Aggregate value extraction unwraps the result. Ordinary expressions are controls. | +| Whole-source selections preserve source metadata at actual Collection publication. Approved boundary-only decision. | A first pair-key repair replaced the source key on matched nullable facade rows. | The unchanged publication owner rejects both initial-match histories, with source key `child` replaced by the pair serialization. | Finalization prefers genuine source identity for source-attributed join selections. The same owner then passes matched/unmatched departure and reentry. | +| Source payloads stay opaque during metadata cleanup. Architecture work contract. | The reviewed paths still copied roots, folded discarded group metadata and bypassed the compiled resolver cache. | Diagnostic counters measure the same five-row preload/update programs before and after repair. Existing value, attribution, route and lifecycle owners compare public results. | Remove discarded work and reuse cleaned roots/cache results. These counts establish work removal, not an elapsed-time promise. | + +The join reference recomputes matches from ordinary source arrays. It does not +import production key serialization, route helpers or join operators. Its +recorder preserves missing and repeated contributions. Sorting uses projected +child IDs only, since this grammar does not promise an order. A wrong-result +calibration rejects omitted and duplicated contributions using the same checker. +Three parents exercise shared and disjoint routes. All source facts are present +before each eager synchronous observation. No missing-input hypothesis remains +at those cuts. + +The finite join grammar has four join kinds, two source kinds per side, and +numeric/string/mixed source key domains: 48 programs. Each checks initial rows, +main departure, main reentry and child departure through three public include +forms. It reaches all 576 declared program/path/cut states once, with 1,728 +parent/form/cut comparisons. Its fan-out defeats the narrow unmatched-only fix. +Removing either QueryRef axis loses a transport boundary. Removing mixed keys +loses independent typed domains. Removing reentry loses cancellation history. +It admits only supported equality joins and unique source keys. It filters +child-absent rows, so it does not claim every arbitrary FULL-join shape. + +The native type grammar adds 27 wrapper forms and their ordinary controls to +all 24 row descriptions. It includes comparisons, boolean/unary functions, +strings, numeric functions, coalesce and conditional conditions/branches/defaults. +Ten nested coalesce wrappers reject a shallow repair. The model computes exact +keys and scalar shape from the authored source description, independently of +production expression classification. Actual public construction precedes +native compilation. The repaired owner passes 33 checks, with every one of 313 +states reached 24 times. Explicit BasicExpression widening and the existing +six-or-more-pair caseWhen any overload erase input information and remain +outside the inferred-expression claim. Dynamic empty grouping remains the +separate, previously recorded type limitation. No runtime key loss is accepted. + +Early type experiments contained TS2615/TS2769 setup failures and two illegal +string-expression arguments (TS2345). They receive no RED credit. The valid RED +contains only 35 TS2344 law-constraint diagnostics. Likewise, the first join +fixture omitted a required readEveryForm projection. Only corrected, admitted +runs supply the RED evidence. + +## Lossless finding ledger + +Each raw ID retains its original file/line reference. The review labels all ten +as high. Severity here follows demonstrated impact. A mixed finding can have a +repaired work claim and a rejected correctness explanation. + +| ID | Original claim | Technical verdict and PR action | Durable value | +| --- | --- | --- | --- | +| NR01 | compiler/index.ts:1257 loses grouped pending/origin/Collection metadata, while group-by.ts:530-537 still reduces it. | Correctness is accepted-design under the approved output-Collection rule. Discarded reduction is confirmed and fixed-now. | Publication owner retains held-insert/settlement attribution. Remove unused group metadata computation. | +| NR02 | compiler/index.ts:1871 copies every union public container and adds ROW_METADATA even for null metadata. | Confirmed, fixed-now. Copy only non-null attribution. Missing/null both mean no attribution in this flat union namespace. | Union value, attribution and route owners preserve controls. | +| NR03 | compiler/index.ts:1239 copies grouped roots to add a key that publication immediately deletes. | Confirmed, fixed-now. Supply a missing generated key only at intermediate boundaries. | Native type owner protects intermediate keys. Publication owner protects output metadata. | +| NR04 | compiler/index.ts:1950 has dead metadataSources, root ternaries and non-reset inheritance. | Confirmed, fixed-now. Publication helper takes only selected value and metadata. | Simpler publication boundary, checked by the same attribution owners. | +| NR05 | compiler/index.ts:1032 double-spreads materialized namespaces and reintroduces stripped root state. | Redundant copies confirmed, fixed-now. Resolver output is reused. Restoring compiler namespace facts is necessary for transport, not a cleanup defect. | Restore only known namespace keys. Keep callback purity and materialized route witnesses. | +| NR06 | compiler/joins.ts:696 lets unmatched RIGHT/FULL joined QueryRefs donate keys and collide. | Confirmed correctness defect, fixed-now. Pair identities cover absent sides and matched fan-out. | Extended context-transport owner, all 48 legal programs. | +| NR07 | builder/types.ts:275 treats wrapped aggregates as ordinary expressions, omitting generated keys. | Confirmed type defect, fixed-now. Preserve inferred aggregate provenance and unwrap scalar aggregate results. | Extended native public-type owner and explicit-erasure limits. | +| NR08 | bucket-facade-adapter.ts:524 bypasses the resolution cache, repeating prepare/apply/previous-value resolution. | Confirmed, fixed-now. Cache by resolver and immutable row identity. Rollback clears both caches. | Facade lifecycle and rollback owners retain publication/next-use checks. | +| NR09 | route-metadata.ts:207/91 has unused recursive wrapper parameters and an unused stripRouteMetadata export. | Confirmed production cleanup, fixed-now. Wrappers are shallow-only and the unused export is removed. The generic recursive walker remains useful. | Cycle/descriptor coverage invokes that generic walker directly. | +| NR10 | route-metadata.ts:149 cleans plain Collection inputs and performs all six hasOwn probes after a hit. | Plain-source overhead confirmed, fixed-now through compile-time source classification. The after-hit allegation is refuted: ||= already short-circuited calls. | Keep parameterized Collection and QueryRef cleanup. New stripper returns at the first hit. | +| NR11 | Summary repeats grouped metadata qualification and wasted work. | Duplicate NR01. | Preserve both correctness qualification and work claim. | +| NR12 | Summary repeats unmatched joined-subquery collisions. | Duplicate NR06. | Preserve public include collision consequence. | +| NR13 | Summary names coalesce(sum(...)) and caseWhen inference. | Duplicate NR07. | Preserve those concrete forms in the wrapper grammar. | +| NR14 | Summary repeats dead parameters and exports. | Duplicate NR04/NR09. | Same source inventories and cleanup. | +| NR15 | Summary says extra copies matter in a performance PR. | Duplicate NR02/03/05/08/10. | Keep work counts separate from elapsed measurements. | +| NR16 | New sibling: matched fan-out collides for every join kind when one source key names several projected rows. | Confirmed, fixed-now with NR06. | Defeats an unmatched-only repair. | +| NR17 | New sibling: coalesce(count(...)) and scalar caseWhen expose Aggregate instead of number. | Confirmed, fixed-now with NR07. | Eight generated scalar-type constraints on the selected description. | +| NR18 | Repair interaction: pair keys replace source metadata keys on whole-source facade selections. | Confirmed by the existing publication owner, fixed-now. | Retain matched/unmatched whole-source attribution as a neighboring-law control. | + +The original review ran no tests or full tsc because its checkout lacked +node_modules. It ran one small type probe. This limits the original evidence, +without erasing any claim. All ten source findings have an action. At the +item level there are thirteen fixed-now items and five duplicates, including +three discovered siblings. NR01 separately accepts its correctness half and +NR10 refutes its short-circuit half. No finding is deferred or confirmed-open. +No raw footnote or summary claim remains unaccounted for. + +## Work and latency evidence + +Five reversible five-row diagnostics run preload and one source update, with +cardinality controls. Temporary counters were removed after both observations. +They are diagnostic instruments, not a new implementation-specific work budget. + +| Work | Predecessor | Repair | +| --- | ---: | ---: | +| Group input metadata folds / group reductions | 7 / 2 | 0 / 0 | +| No-attribution union selected-row copies | 12 | 0 | +| Aggregate temporary selected-row copies | 6 | 0 | +| Compiled facade resolver executions | 17 | 11 | +| Root private probes: source / union / aggregate | 77 / 180 / 57 | 35 / 120 / 15 | +| Root private probes: inline / facade | 264 / 239 | 192 / 131 | + +Five materialized callback input occurrences previously took two extra spreads +each. The repaired path reuses the fresh resolved namespace and restores only +compiler-owned namespace facts. An unchanged resolver result still receives one +fresh namespace before internal modification. + +The local paired benchmark retains all case timings and three-repetition +samples in the [review measurement table](../../../scripts/bench/high-review-2026-11-05.csv). +It uses 100/1,000/10,000 levels, no/manual indexes, synced/optimistic writes, +100 iterations, 20 warmup writes and three fresh fixtures. The archived baseline +contains predecessor 708a58098 source. Candidate metadata reports the Git HEAD +beneath its working tree, so the manifest, not that field alone, identifies the +candidate source. The comparator uses the unchanged CI gate. No elapsed result +is inferred from the work counts. These runs do not establish zero overhead or +a universal noise ceiling. + +All observed local comparisons remain recorded: + +| Comparison | Overall writes | Overall cold | Gate | +| --- | ---: | ---: | --- | +| Initial repair / first predecessor baseline | 0.92x | 0.94x | PASS | +| Final repair / first predecessor baseline | 1.11x | 1.20x | PASS | +| Unchanged second / first predecessor baseline | 1.10x | 1.18x | PASS | +| Final repair / second predecessor baseline | 1.01x | 1.01x | PASS | + +The final comparison against the first baseline has four diagnostic write +regression flags. None meets the CI failure rules. The unchanged baseline +also drifts, so elapsed evidence does not isolate a source-caused regression +or establish a speedup from this cleanup. The final source-key amendment ran +after the initial candidate, and both candidate observations remain available. +Thresholds did not change. Final shipped-size comparison against the PR merge +base adds 337 gzip bytes and 353 brotli bytes for DB. The typical app adds +89 gzip bytes and 54 brotli bytes. Group-by app gzip decreases by 99 bytes. + +## Verification and calibration + +- Runtime final: ten files, 7,416 tests pass. Context transport, publication, + callback inputs, Effects, payload work, facade rollback/lifecycle, query shape + and join-result keys all run at max two workers. +- Native public types: 33 checks pass. All 313 declared states reach 24 times. +- Full DB source/test tsc: zero diagnostics with a 12 GB heap. +- DB ESM/CJS and declaration builds pass. Supplemental callback/public type + checks pass separately. +- Removing wrapper provenance fails native law constraints. Clearing only an + unmatched join key fails all 48 fan-out programs during public-key reduction + after admission. Missing/duplicate result controls fail the shared comparison. +- The first full runtime run fails two source-key publication assertions, then + the final repair passes all 7,416. The RED remains in the manifest. +- functions.ts and types.ts transpile to identical JavaScript to predecessor + 708a58098 when comments are removed. The provenance repair adds no runtime + marker or traversal. + +Reproduce runtime checks with `pnpm --dir packages/db exec vitest run +--coverage.enabled=false --maxWorkers=2` and the ten files named in the manifest's +runtime command. Reproduce native type evidence with the same command and +`tests/query/virtual-row-fields-types-oracle.test.ts`. The first runtime command +mistakenly named a nonexistent collection-facade-lifecycle file. It receives no +coverage credit. Final verification uses the actual includes-collection owner. + +## Oracle rubric self-review + +| Requirement | Evidence or applicability | +| --- | --- | +| ORC-001 | Architecture conservation/publication and approved metadata policy authorize the laws. Limits stay explicit above. | +| ORC-002 | Flat joins and authored-shape native types do not reuse production classifiers. | +| ORC-003 | Changed owners retain opening contracts and prose beside models, grammars, drivers and comparisons. | +| ORC-004 | Finite products reconstruct unmatched collisions, matched fan-out and wrapped aggregates. Axes, ablation, admitted bounds and illegal inputs are described above. | +| ORC-005 | Real core Collection/include and native compiler entry points run. Required states count only admitted histories. All public include forms compare after each synchronous action. | +| ORC-006 | Original, narrow join mutant, provenance mutant, omission/duplication calibration and source-key publication RED are distinguished above. Graph failures are not comparison assertions. | +| ORC-007 | New dimensions are exhaustive finite enumerations, not random-property claims. Existing fixed/random campaigns and their budgets remain intact. | +| ORC-008 | New judgments recompute joins/types without a new state machine. Departures/reentry are explicit source-array histories. | +| ORC-009 | Model arrays represent source Collections. Public forms/cuts use glossary terms. No new subsystem state terminology. | +| ORC-010 | Existing cleanup helpers retain primary failures and run all cleanup. No new shrinking or capture mechanism. | +| ORC-011 | No specific shared semantic fault remains that needs a second model. Flat source-array join is independent of graph identity. | +| ORC-012 | This versioned record and companion manifest bind evidence and all dispositions. | +| ORC-013 | Matched/unmatched, fan-out, plain/QueryRef, typed keys and ordinary/wrapped expressions distinguish neighboring rules. | +| ORC-014 | Claims stop at eager controlled core sources and actual native TypeScript. Provider and framework timing are not inferred. | +| ORC-015 | Required join and native states fail the owners if not reached. Counts are above. | +| ORC-016 | Finite histories use shared model/driver/comparison. Wrong-result controls calibrate that comparison. Supplemental exact-expression checks stay outside oracle files. | + +The declared bug classes are closed for these finite histories, production +paths and observation cuts. No known reachable violation remains inside those +claims. Async demand, arbitrary nesting, child-absent full joins, explicit type +erasure, installed-package types and framework/provider integration need their +own receiving evidence. The coverage map retains those boundaries. This record +does not turn a sampled or finite result into a universal proof. + +## Reviewer assessment and readiness + +Hire recommendation: yes. The reviewer identifies two consequential correctness/ +type gaps and several real hot-path costs. Signal is high and locations are +precise. Static inspection also catches dead machinery missed by the earlier +passes. The reviewer qualifies the grouped-metadata design concern, which is +useful. The short-circuit allegation is wrong, the unmatched-only explanation +misses matched fan-out, and no runtime experiment supports the original report. +Require contract checks and executable validation before accepting severity or +a proposed cure. All confirmed work above is repaired and independently checked. + +Review accounting and local implementation verification are complete. Remote CI +and the final pushed head require separate verification before a ready verdict. +The full repository pnpm test command was not run. Earlier branch-wide review +records and their accepted limits remain relevant. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json new file mode 100644 index 0000000000..b81e6e4974 --- /dev/null +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -0,0 +1,78 @@ +{ + "reviewedHead": "066d0dd26d9cf7829c986b5d3af1d76c1634e8a5", + "predecessor": "708a580980b9c7859a66700360b832eaaff046b5", + "repairBinding": "The commit containing this manifest has the repaired sources below. SHA256 binds tested sources independently of the self-referential commit ID.", + "sourceSha256": { + "docs/contributing/glossary.md": "11acae37780c0dfa9aa1108539a4a2be98df2b15ecdf05ddd76c678f126db459", + "packages/db/src/query/builder/functions.ts": "13e57a3cc17a86c2a5c14c6de4312ef111bc3d842ead263a60bb3e269a1e9411", + "packages/db/src/query/builder/types.ts": "13c41e78fc39e8c3f5a731853f2fa8c721a0e4418f7c57dea525695317d74d68", + "packages/db/src/query/compiler/group-by.ts": "9c5575797cdd8308abd72932bcb9f5d3c82493d8542bd47da11d9bc67e789554", + "packages/db/src/query/compiler/index.ts": "a970848eb543b99dfefd69dbe6f3bea8738684348e050c7686f484e4ae684c0c", + "packages/db/src/query/compiler/joins.ts": "970ef8fd17c56bb41ed2e38abab08cd4127f22a8be79c2c58c621782a2d5f7ec", + "packages/db/src/query/compiler/route-metadata.ts": "fa19d41ec7e1ff895f27b690457510729be1dabbc5e14bdd1ef1fe2007d84695", + "packages/db/src/query/live/ARCHITECTURE.md": "e7a9cf6e487a67342cd038608e83baeffee944edd1b0245e217b0786442b1b47", + "packages/db/src/query/live/bucket-facade-adapter.ts": "17bf34bb9efb5a0e81110a2a10b708b7c4b43fbaa7361ffaa8f4401ae31508a0", + "packages/db/src/query/live/collection-config-builder.ts": "0f90dd5d33fa58a7aedd42e1e6e40427d8c22a614849cb8e6df05c3ef8b91cc2", + "packages/db/src/query/live/materialized-pipeline.ts": "c72c7db23888b2ced5aba5ba6772d7fb84ab5cfa69d966b80ee30f493b780315", + "packages/db/src/query/live/public-key-reduction.ts": "6bba0de854b7ddd1417696409c28c92d94f65366ca4e3f26ceb6a46111ea7b83", + "packages/db/src/virtual-props.ts": "b06e07f9fe58b1ef94b4b02b4903562cd6cbb4798f1f0789c2ffe607fb501368", + "packages/db/tests/query/bucket-facade-rollback-oracle.property.test.ts": "5074cae2a0124e3873a1228be09b8e4207ea43b53b20b605612b71674f190518", + "packages/db/tests/query/builder/callback-types.test-d.ts": "6f10930b79354eeb4199c93cba5e986fae2ebff46b2cd0e70c67649d9bd3f586", + "packages/db/tests/query/includes-collection-oracle.property.test.ts": "6db17f820d2f279c67a5a0b386ceebadc233b0dc953b1777406c3fa540dce975", + "packages/db/tests/query/includes-context-transport-helpers.ts": "ad37d17551a9086036fe493b09d4349a463f689a8dc039ae93068b062662b0c7", + "packages/db/tests/query/includes-context-transport-oracle.test.ts": "1979a19855ea61e77a7e89b1de2239e24dfc54f602ef19232d8eb6c3ae941ea6", + "packages/db/tests/query/includes-context-transport.test.ts": "74b183dba8f54e84b89220d8b4c86a29a4fd39ef3fc3986138c10f4a23d18123", + "packages/db/tests/query/includes-oracle-helpers.ts": "5cea944a8d4244aed592c988378cd2da601c4a312220cdcd69badbc6d31dd26c", + "packages/db/tests/query/includes-work-counter-oracle.test.ts": "b5efa9741db62b0346700799029b1bf2a259e782a967caea402502788a5d442e", + "packages/db/tests/query/virtual-row-fields-effect-oracle.test.ts": "2da36df395896f9c25afa08e95fbf7fbddf200236e196f4f14f94f0d15627c2b", + "packages/db/tests/query/virtual-row-fields-input-oracle.test.ts": "717089000203d3f11e65ff12c8a86a61cdcd9db207163f34bffd3e2028cec897", + "packages/db/tests/query/virtual-row-fields-oracle.test.ts": "28a5d98fe5bf57c6f53ada82bd4b0d51e8efe67b21e2bd83b996f2a1ad06620f", + "packages/db/tests/query/virtual-row-fields-type-fixture.ts": "bfdafc7f1e491b4eda722bf7f25755d50a278586002b8fd13766d66b89e52aba", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "f56a76e5517ccc60a8c83740cd939eeea73469f9d9788f421b824ccacecb5f95" + }, + "measurementSha256": { + "scripts/bench/high-review-2026-11-05.csv": "259b188224e6d9505f7e220322b80473d3134ba52993078efc02c6ddba530607" + }, + "hostEvidenceRoot": "/tmp/db-prep-pr-2026-11-05", + "evidenceSha256": { + "review-wrapped-aggregate-red.log": "1c6d97af1c3419ca3590f913889ef17f8eac5727f013209e0f76c8ad9de66dc2", + "review-wrapped-aggregate-red2.log": "0060e74295c101c9a744e76fcc9a0d3d1494fb6ecc0d9b5e4a9d73c8f9fb0e38", + "review-wrapped-aggregate-red3.log": "bbcadf64ca4e742b46ec8344d37f6d4808439e24d60a82a9f114dd2d0c0c61d1", + "review-wrapped-aggregate-red4.log": "ae8d7897ba94e98ce50addde1f10ba287498c5dba3ba42efc0e70fb631f1739e", + "review-outer-keys-red2.log": "ff267eab77667e73396ecf2106f2676c1095104761e9e614382894542a0b65c9", + "review-join-fanout-red.log": "0a1df73bc2792e8dad7b9d9d7858a2d7f084103bf9a5df7989a8ac06f293178e", + "review-runtime-final.log": "678d4b028ba0ed2f51ce8d6ef8b9efee8cfb86fd55407ce13e6e243dc5910590", + "review-runtime-final2.log": "2fd6ff07b51e875ba72cd665f3e3e99b57608d526696fbbf4116b666e1afd083", + "review-types-final.log": "bd6c65e33aa2feffaf23d90253dfcc14402a9a3cd79818b152d27213e6f7e176", + "review-types-restored-green.log": "1a7c70c4ec74aa5f39f3f6cf7a512e319cca608d1a9445694b1286b70e90ef11", + "review-source-tsc-final.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "review-declaration-build-final.log": "5bd87564a15b78c6f4b5cc9ffb4bd159e0223e01f3b2b662936211e154bb54ba", + "review-type-emission.json": "9372f68188af50f3fc29166440e88e81b87848c1459fb18e5d75147e9c263c32", + "review-supplemental-types-final.log": "e321f2c5d1a41275939a7191682059a61439260570eaff822f0bbacb2e684483", + "review-join-narrow-mutant.log": "6efc55e927566f7290ae536dc9ace65acbc3a8108069f826230f3544fec3c2fe", + "review-types-no-provenance-mutant.log": "9fe6d8782d2f63fa5b6fba332234590f6b4e7b214e980b545ea818993fac5902", + "review-mutants.json": "7fc2f677bb614c9fcafd3cf1fa929b89dbfdd279376f50f63a47b21ca480d491", + "review-work-before.log": "bd7497e08f62825ed89ffac9b1e2697ea43714aa5aac79f0553f20dc6234f95e", + "review-work-after1.log": "212d012be9caa07267062af9dd044cc8ed3c0fab0b5e1bef63a80610b27ea22a", + "instrument-review-work.py": "daf44ce7cd3a53a270aa7528cc19d53ca39be0c069830fc1635c2fc578e3c96c", + "run-review-mutants.py": "c77f1533234d1053be4373d0593cb6d2dbf2d1b920a3652477c9876ef4856cca", + "review-size-final.log": "509494f39d19cbb4153943b6b8646297eaa11a7425bf0692cb3451aba9ead516", + "review-benchmark-base.json": "a725922130f163f3b82a872f23fe31797379396e0fa0381f1b53f5c6ffe82b54", + "review-benchmark-candidate-before-source-key.json": "a48be854ee9d92c4735c3b7efa1456755b89ef78c2aa0fb4591451a66e7380b7", + "review-benchmark-candidate.json": "ed3ac24ecc95e6ffbf6a1cbb1847b78a4cb714d4ecd038f89ae4d27c7784be41", + "review-benchmark-base-after.json": "96fd7ec8e24d7a1f202bf9c0b195ebc4f00cd528304d4ae2010232249c4b06ac", + "review-benchmark-final-compare.log": "a8f233a4ef9110e3bb404c179acab3c2effe2b6cefe298f574827c0370865e54", + "review-benchmark-final-bracket.log": "3f5e343c9fe2cd96171d9cd13203ad155943ee6f20bb69af5c4354fc51dbaa89", + "review-benchmark-baseline-drift.log": "ac9b115b45919df30b4499586f65dcd56a80c8b1d4a9d9593102d68970a686e6" + }, + "commands": { + "runtime": "pnpm --dir packages/db exec vitest run --coverage.enabled=false --maxWorkers=2 tests/query/includes-context-transport-oracle.test.ts tests/query/includes-context-transport.test.ts tests/query/includes-work-counter-oracle.test.ts tests/query/bucket-facade-rollback-oracle.property.test.ts tests/query/includes-collection-oracle.property.test.ts tests/query/virtual-row-fields-input-oracle.test.ts tests/query/virtual-row-fields-oracle.test.ts tests/query/virtual-row-fields-effect-oracle.test.ts tests/query/includes-query-shape-oracle.test.ts tests/query/join-result-key-oracle.property.test.ts", + "types": "pnpm --dir packages/db exec vitest run --coverage.enabled=false --maxWorkers=2 tests/query/virtual-row-fields-types-oracle.test.ts", + "tsc": "NODE_OPTIONS=--max-old-space-size=12288 pnpm --dir packages/db exec tsc --noEmit", + "build": "pnpm --dir packages/db build", + "benchmark": "node --import tsx scripts/bench/incremental-update.ts --levels=100,1000,10000 --sourceIndexes=none,manual --mutationModes=synced,optimistic --iterations=100 --warmup=20 --repetitions=3 --outFile=REPORT.json", + "comparator": "node --import tsx scripts/bench/compare-incremental-update.ts --base=BASE.json --candidate=CANDIDATE.json --failOnRegression=true", + "work": "Temporary instrumentation recorded in instrument-review-work.py, executed on predecessor and repaired source; restored afterward.", + "mutants": "python3 /tmp/db-prep-pr-2026-11-05/run-review-mutants.py" + } +} diff --git a/packages/db/src/query/builder/functions.ts b/packages/db/src/query/builder/functions.ts index ab24ebc89e..ff7fc5de0e 100644 --- a/packages/db/src/query/builder/functions.ts +++ b/packages/db/src/query/builder/functions.ts @@ -6,9 +6,21 @@ import { registerWrapper } from './wrapper-identity.js' import type { BasicExpression } from '../ir' import type { IncludesRuntime } from '../live/includes-runtime.js' import type { RefProxy } from './ref-proxy.js' -import type { Context, RefLeaf, StringifiableScalar } from './types.js' +import type { + ContainsAggregate, + Context, + RefLeaf, + StringifiableScalar, +} from './types.js' import type { BaseQueryBuilder, QueryBuilder } from './index.js' +// Aggregate provenance is a type-only fact. Wrapping an expression must not +// hide the implicit group from a downstream QueryRef's result type. +type WithAggregate = + true extends ContainsAggregate + ? TResult & { readonly __hasAggregate: true } + : TResult + type StringRef = RefLeaf | RefLeaf | RefLeaf type StringRefProxy = @@ -54,14 +66,18 @@ type ExtractCaseWhenValue = type CaseWhenResult< TValues extends Array, THasDefault extends boolean, -> = TValues[number] extends ExpressionLike - ? BasicExpression< - ExtractType | (THasDefault extends true ? never : null) - > - : CaseWhenWrapper< - | ExtractCaseWhenValue - | (THasDefault extends true ? never : undefined) - > + TConditions = never, +> = WithAggregate< + TValues[number] extends ExpressionLike + ? BasicExpression< + ExtractType | (THasDefault extends true ? never : null) + > + : CaseWhenWrapper< + | ExtractCaseWhenValue + | (THasDefault extends true ? never : undefined) + >, + [TValues, TConditions] +> // Helper type to extract the underlying type from various expression types type ExtractType = @@ -69,7 +85,7 @@ type ExtractType = ? U : T extends RefLeaf ? U - : T extends BasicExpression + : T extends BasicExpression | Aggregate ? U : T @@ -138,6 +154,10 @@ type DivideReturnType = BasicExpression // Operators +export function eq( + left: L & (true extends ContainsAggregate<[L, R]> ? unknown : never), + right: R, +): WithAggregate, [L, R]> export function eq( left: ComparisonOperand, right: ComparisonOperand, @@ -151,6 +171,10 @@ export function eq(left: any, right: any): BasicExpression { return new Func(`eq`, [toExpression(left), toExpression(right)]) } +export function gt( + left: L & (true extends ContainsAggregate<[L, R]> ? unknown : never), + right: R, +): WithAggregate, [L, R]> export function gt( left: ComparisonOperand, right: ComparisonOperand, @@ -164,6 +188,10 @@ export function gt(left: any, right: any): BasicExpression { return new Func(`gt`, [toExpression(left), toExpression(right)]) } +export function gte( + left: L & (true extends ContainsAggregate<[L, R]> ? unknown : never), + right: R, +): WithAggregate, [L, R]> export function gte( left: ComparisonOperand, right: ComparisonOperand, @@ -177,6 +205,10 @@ export function gte(left: any, right: any): BasicExpression { return new Func(`gte`, [toExpression(left), toExpression(right)]) } +export function lt( + left: L & (true extends ContainsAggregate<[L, R]> ? unknown : never), + right: R, +): WithAggregate, [L, R]> export function lt( left: ComparisonOperand, right: ComparisonOperand, @@ -190,6 +222,10 @@ export function lt(left: any, right: any): BasicExpression { return new Func(`lt`, [toExpression(left), toExpression(right)]) } +export function lte( + left: L & (true extends ContainsAggregate<[L, R]> ? unknown : never), + right: R, +): WithAggregate, [L, R]> export function lte( left: ComparisonOperand, right: ComparisonOperand, @@ -204,6 +240,9 @@ export function lte(left: any, right: any): BasicExpression { } // Overloads for and() - support 2 or more arguments +export function and< + T extends [ExpressionLike, ExpressionLike, ...Array], +>(...args: T): WithAggregate, T> export function and( left: ExpressionLike, right: ExpressionLike, @@ -226,6 +265,9 @@ export function and( } // Overloads for or() - support 2 or more arguments +export function or< + T extends [ExpressionLike, ExpressionLike, ...Array], +>(...args: T): WithAggregate, T> export function or( left: ExpressionLike, right: ExpressionLike, @@ -247,19 +289,32 @@ export function or( ) } +export function not( + value: T, +): WithAggregate, T> export function not(value: ExpressionLike): BasicExpression { return new Func(`not`, [toExpression(value)]) } // Null/undefined checking functions +export function isUndefined( + value: T, +): WithAggregate, T> export function isUndefined(value: ExpressionLike): BasicExpression { return new Func(`isUndefined`, [toExpression(value)]) } +export function isNull( + value: T, +): WithAggregate, T> export function isNull(value: ExpressionLike): BasicExpression { return new Func(`isNull`, [toExpression(value)]) } +export function inArray( + left: L, + right: R, +): WithAggregate, [L, R]> export function inArray( value: ExpressionLike, array: ExpressionLike, @@ -267,6 +322,10 @@ export function inArray( return new Func(`in`, [toExpression(value), toExpression(array)]) } +export function like( + left: L, + right: R, +): WithAggregate, [L, R]> export function like( left: StringLike, right: StringLike, @@ -275,6 +334,10 @@ export function like(left: any, right: any): BasicExpression { return new Func(`like`, [toExpression(left), toExpression(right)]) } +export function ilike( + left: L, + right: R, +): WithAggregate, [L, R]> export function ilike( left: StringLike, right: StringLike, @@ -286,26 +349,37 @@ export function ilike( export function upper( arg: T, -): StringFunctionReturnType { - return new Func(`upper`, [toExpression(arg)]) as StringFunctionReturnType +): WithAggregate, T> { + return new Func(`upper`, [toExpression(arg)]) as WithAggregate< + StringFunctionReturnType, + T + > } export function lower( arg: T, -): StringFunctionReturnType { - return new Func(`lower`, [toExpression(arg)]) as StringFunctionReturnType +): WithAggregate, T> { + return new Func(`lower`, [toExpression(arg)]) as WithAggregate< + StringFunctionReturnType, + T + > } export function length( arg: T, -): NumericFunctionReturnType { - return new Func(`length`, [toExpression(arg)]) as NumericFunctionReturnType +): WithAggregate, T> { + return new Func(`length`, [toExpression(arg)]) as WithAggregate< + NumericFunctionReturnType, + T + > } export function concat( arg: ToArrayWrapper, ): ConcatToArrayWrapper -export function concat(...args: Array): BasicExpression +export function concat>( + ...args: T +): WithAggregate, T> export function concat( ...args: Array> ): BasicExpression | ConcatToArrayWrapper { @@ -347,10 +421,12 @@ type HasGuaranteedNonNull> = { : true // coalesce() return type: union of all non-null arg types; null included unless a guaranteed non-null arg exists -type CoalesceReturnType> = +type CoalesceReturnType> = WithAggregate< HasGuaranteedNonNull extends true ? BasicExpression> - : BasicExpression | null> + : BasicExpression | null>, + T +> export function coalesce]>( ...args: T @@ -407,12 +483,16 @@ export function coalesce]>( export function caseWhen( condition1: C1, value1: V1, -): CaseWhenResult<[V1], false> +): CaseWhenResult<[V1], false, [C1]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, D extends CaseWhenValue, ->(condition1: C1, value1: V1, defaultValue: D): CaseWhenResult<[V1, D], true> +>( + condition1: C1, + value1: V1, + defaultValue: D, +): CaseWhenResult<[V1, D], true, [C1]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -423,7 +503,7 @@ export function caseWhen< value1: V1, condition2: C2, value2: V2, -): CaseWhenResult<[V1, V2], false> +): CaseWhenResult<[V1, V2], false, [C1, C2]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -436,7 +516,7 @@ export function caseWhen< condition2: C2, value2: V2, defaultValue: D, -): CaseWhenResult<[V1, V2, D], true> +): CaseWhenResult<[V1, V2, D], true, [C1, C2]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -451,7 +531,7 @@ export function caseWhen< value2: V2, condition3: C3, value3: V3, -): CaseWhenResult<[V1, V2, V3], false> +): CaseWhenResult<[V1, V2, V3], false, [C1, C2, C3]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -468,7 +548,7 @@ export function caseWhen< condition3: C3, value3: V3, defaultValue: D, -): CaseWhenResult<[V1, V2, V3, D], true> +): CaseWhenResult<[V1, V2, V3, D], true, [C1, C2, C3]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -487,7 +567,7 @@ export function caseWhen< value3: V3, condition4: C4, value4: V4, -): CaseWhenResult<[V1, V2, V3, V4], false> +): CaseWhenResult<[V1, V2, V3, V4], false, [C1, C2, C3, C4]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -508,7 +588,7 @@ export function caseWhen< condition4: C4, value4: V4, defaultValue: D, -): CaseWhenResult<[V1, V2, V3, V4, D], true> +): CaseWhenResult<[V1, V2, V3, V4, D], true, [C1, C2, C3, C4]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -531,7 +611,7 @@ export function caseWhen< value4: V4, condition5: C5, value5: V5, -): CaseWhenResult<[V1, V2, V3, V4, V5], false> +): CaseWhenResult<[V1, V2, V3, V4, V5], false, [C1, C2, C3, C4, C5]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -556,7 +636,7 @@ export function caseWhen< condition5: C5, value5: V5, defaultValue: D, -): CaseWhenResult<[V1, V2, V3, V4, V5, D], true> +): CaseWhenResult<[V1, V2, V3, V4, V5, D], true, [C1, C2, C3, C4, C5]> export function caseWhen< C1 extends ExpressionLike, V1 extends CaseWhenValue, @@ -617,41 +697,41 @@ export function caseWhen(...args: Array): any { export function add( left: T1, right: T2, -): BinaryNumericReturnType { +): WithAggregate { return new Func(`add`, [ toExpression(left), toExpression(right), - ]) as BinaryNumericReturnType + ]) as WithAggregate } export function subtract( left: T1, right: T2, -): BinaryNumericReturnType { +): WithAggregate { return new Func(`subtract`, [ toExpression(left), toExpression(right), - ]) as BinaryNumericReturnType + ]) as WithAggregate } export function multiply( left: T1, right: T2, -): BinaryNumericReturnType { +): WithAggregate { return new Func(`multiply`, [ toExpression(left), toExpression(right), - ]) as BinaryNumericReturnType + ]) as WithAggregate } export function divide( left: T1, right: T2, -): DivideReturnType { +): WithAggregate { return new Func(`divide`, [ toExpression(left), toExpression(right), - ]) as DivideReturnType + ]) as WithAggregate } // Aggregates diff --git a/packages/db/src/query/builder/types.ts b/packages/db/src/query/builder/types.ts index 322220461f..8d1b88abb4 100644 --- a/packages/db/src/query/builder/types.ts +++ b/packages/db/src/query/builder/types.ts @@ -1415,13 +1415,18 @@ type SameAggregateAncestor> = { : false }[number] -type ContainsAggregate = []> = +export type ContainsAggregate< + T, + TAncestors extends ReadonlyArray = [], +> = IsAny extends true ? false : T extends Aggregate ? true - : T extends BasicExpression - ? false + : T extends BasicExpression | CaseWhenWrapper + ? T extends { readonly __hasAggregate: true } + ? true + : false : typeof RefBrand extends keyof T ? false : T extends { @@ -1435,11 +1440,16 @@ type ContainsAggregate = []> = ? false : true extends SameAggregateAncestor ? false - : IsPlainObject extends true - ? true extends ContainsAggregate - ? true + : T extends ReadonlyArray + ? ContainsAggregate + : IsPlainObject extends true + ? true extends ContainsAggregate< + T[keyof T], + [...TAncestors, T] + > + ? true + : false : false - : false export type WithResult< TContext extends Context, diff --git a/packages/db/src/query/compiler/group-by.ts b/packages/db/src/query/compiler/group-by.ts index 46d5af4740..0024c1823c 100644 --- a/packages/db/src/query/compiler/group-by.ts +++ b/packages/db/src/query/compiler/group-by.ts @@ -48,7 +48,6 @@ import type { SelectValueExpression, } from '../ir.js' import type { NamespacedAndKeyedStream, NamespacedRow } from '../../types.js' -import type { VirtualOrigin } from '../../virtual-props.js' const RAW_REPRESENTATIVE = Symbol(`raw_group_representative`) @@ -60,7 +59,6 @@ function createInternalGroupFields(groupCount: number, selectClause?: Select) { while (aliases.some((alias) => alias.startsWith(prefix))) prefix += `_` return { - virtual: `${prefix}virtual`, route: `${prefix}route`, exactInputs: `${prefix}exact_inputs`, correlationIdentity: `${prefix}correlation_identity`, @@ -82,11 +80,6 @@ function createInternalGroupFields(groupCount: number, selectClause?: Select) { } } -type RowVirtualMetadata = { - hasPendingWrites: boolean - hasLocal: boolean -} - type Representative = { key: string [RAW_REPRESENTATIVE]: T @@ -261,33 +254,6 @@ function getGroupEvaluationRow( } } -function getRowVirtualMetadata(row: NamespacedRow): RowVirtualMetadata { - let hasPendingWrites = false - let hasLocal = false - - for (const [alias, value] of Object.entries(row as Record)) { - if (alias === `$selected`) continue - if (value === null || typeof value !== `object`) continue - const asRecord = value as Record - const hasPendingWritesProp = `$hasPendingWrites` in asRecord - const hasOriginProp = `$origin` in asRecord - if (!hasPendingWritesProp && !hasOriginProp) { - continue - } - if (asRecord.$hasPendingWrites === true) { - hasPendingWrites = true - } - if (asRecord.$origin === `local`) { - hasLocal = true - } - } - - return { - hasPendingWrites, - hasLocal, - } -} - /** * Processes the GROUP BY clause with optional HAVING and SELECT * Works with the new $selected structure from early SELECT processing @@ -301,36 +267,14 @@ export function processGroupBy( havingClauses?: Array, selectClause?: Select, fnHavingClauses?: Array<(row: any) => any>, - aggregateCollectionId?: string, mainSource?: string, sanitizeCallbackRows = false, ): NamespacedAndKeyedStream { const fields = createInternalGroupFields(groupByClause.length, selectClause) - const virtualAggregates: Record = { - [fields.virtual]: { - preMap: ([, row]: [string, NamespacedRow]) => getRowVirtualMetadata(row), - reduce: (values: Array<[RowVirtualMetadata, number]>) => { - const group: RowVirtualMetadata = { - hasPendingWrites: false, - hasLocal: false, - } - for (const [metadata, multiplicity] of values) { - if (multiplicity <= 0) continue - if (metadata.hasPendingWrites) group.hasPendingWrites = true - if (metadata.hasLocal) group.hasLocal = true - } - return group - }, - }, - } + const aggregates: Record = {} if (mainSource) { - addCorrelationRouteAggregate( - virtualAggregates, - mainSource, - fields, - valueIdentity, - ) + addCorrelationRouteAggregate(aggregates, mainSource, fields, valueIdentity) } const singleGroup = groupByClause.length === 0 @@ -388,7 +332,6 @@ export function processGroupBy( } // Create aggregate functions for any aggregated columns in the SELECT clause - const aggregates: Record = virtualAggregates const wrappedAggExprs: Record any> = {} const aggCounter = { value: 0 } @@ -527,14 +470,7 @@ export function processGroupBy( ...(aggregatedRow as Record), $selected: finalResults, } - const virtual = (aggregatedRow as Record)[fields.virtual] as - RowVirtualMetadata | undefined - resultRow.$hasPendingWrites = virtual?.hasPendingWrites ?? false - resultRow.$origin = ( - virtual?.hasLocal ? `local` : `remote` - ) satisfies VirtualOrigin resultRow.$key = publicKey - resultRow.$collectionId = aggregateCollectionId ?? resultRow.$collectionId if (mainSource && correlationKey !== undefined) { attachPublicGroupKey(resultRow, publicKey) attachRouteMetadata( @@ -590,7 +526,7 @@ export function processGroupBy( filter(([, row]) => { const namespacedRow = getGroupEvaluationRow(row, fields) const callbackRow = sanitizeCallbackRows - ? stripInternalCallbackMetadata(namespacedRow, false) + ? stripInternalCallbackMetadata(namespacedRow) : namespacedRow return toBooleanPredicate(fnHaving(callbackRow)) }), diff --git a/packages/db/src/query/compiler/index.ts b/packages/db/src/query/compiler/index.ts index 74c80e6a8e..e723ea6f4f 100644 --- a/packages/db/src/query/compiler/index.ts +++ b/packages/db/src/query/compiler/index.ts @@ -83,6 +83,7 @@ import { getSourceMetadata, getSourceRouting, isPublicContainer, + restoreInternalRouteMetadata, stripInternalCallbackMetadata, stripInternalRouteMetadata, wrapInputRow, @@ -670,7 +671,6 @@ function compileQueryInternal( filter(([_key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( namespacedRow, - false, ) as NamespacedRow return toBooleanPredicate(fnWhere(callbackRow)) }), @@ -1029,12 +1029,13 @@ function compileQueryInternal( map(([key, [value]]) => { // Resolution cleans public values, while this internal namespace must // keep its route and genuine source attribution through the callback. - const row: NamespacedRow & Record = { - ...value, - ...((resolveInput - ? resolveInput(value, (leaf) => leaf) - : value) as NamespacedRow), - } + const resolved = resolveInput + ? resolveInput(value, (leaf) => leaf) + : value + const row = ( + resolved === value ? { ...value } : resolved + ) as NamespacedRow & Record + restoreInternalRouteMetadata(row, value) delete row[INCLUDES_ROUTING] return [key, row] }), @@ -1056,7 +1057,6 @@ function compileQueryInternal( map(([key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( namespacedRow, - false, ) as NamespacedRow const selectResults = query.fnSelect!(callbackRow) validateFnSelectResult(selectResults) @@ -1153,7 +1153,6 @@ function compileQueryInternal( query.having, query.select, query.fnHaving, - mainCollectionId, groupByMainSource, sourceCarriesInternalRouteState || includesRoutingFns.length > 0, ) @@ -1181,14 +1180,12 @@ function compileQueryInternal( filter(([_key, namespacedRow]) => { const callbackRow = stripInternalCallbackMetadata( namespacedRow, - false, ) as NamespacedRow // $selected is compiler-created context at this stage. A flat // union's implicit selection can still hold namespace sidecars at // its root; remove them without visiting authored payloads. const selected = stripInternalCallbackMetadata( callbackRow.$selected, - false, ) as Record return fnHaving( selected === callbackRow.$selected @@ -1237,6 +1234,7 @@ function compileQueryInternal( // Grouping supplies a public key even before Collection publication. // Authored fields still win at intermediate boundaries, including null. const selectedValue = + !isCollectionRoot && (grouped || selectAggregate) && isPublicContainer(selected) && !(`$key` in selected) @@ -1256,14 +1254,8 @@ function compileQueryInternal( } const finalResults = stripInternalRouteMetadata( isCollectionRoot - ? attachVirtualPropsToSelected( - selectedValue, - metadata ?? {}, - true, - undefined, - ) + ? attachVirtualPropsToSelected(selectedValue, metadata) : selectedValue, - false, ) const route = parentKeyStream ? getNamespacedRouteMetadata(row, mainSource) @@ -1275,7 +1267,11 @@ function compileQueryInternal( orderByIndex, route?.correlationKey, parentKeyStream ? (route?.parentContext ?? null) : undefined, - parentKeyStream ? (row[INCLUDES_PUBLIC_KEY] ?? key) : undefined, + // Source-attributed join selections keep their source key. Other + // projections need the pair identity to distinguish fan-out rows. + parentKeyStream + ? ((query.join && metadata?.$key) ?? row[INCLUDES_PUBLIC_KEY] ?? key) + : undefined, metadata, ], ] as unknown as [unknown, [any, string | undefined]] @@ -1700,7 +1696,7 @@ function processFromClause( return { alias, - pipeline: wrapInputWithAlias(input, alias), + pipeline: wrapInputWithAlias(input, alias, from.type === `queryRef`), collectionId, sources: { [alias]: input }, sourceIncludes, @@ -1739,11 +1735,11 @@ function processFromClause( const routedBranch = parentKeyStream && !isParentRouted ? parameterizeByParentRoutes( - wrapInputWithAlias(input, alias), + wrapInputWithAlias(input, alias, source.type === `queryRef`), parentKeyStream, valueIdentity, ) - : wrapInputWithAlias(input, alias) + : wrapInputWithAlias(input, alias, source.type === `queryRef`) const branch = routedBranch.pipe( map(([key, row]) => { const branchKey = `${alias}:${encodeKeyForUnionBranch(key)}` @@ -1873,7 +1869,7 @@ function processUnionAll( : row return [ branchKey, - isPublicContainer(routedRow) + metadata != null && isPublicContainer(routedRow) ? Object.assign(copySelectedRow(routedRow), { [ROW_METADATA]: metadata ?? null, }) @@ -1902,11 +1898,17 @@ function processUnionAll( function wrapInputWithAlias( input: KeyedStream, alias: string, + hasInternalState = true, ): NamespacedAndKeyedStream { return input.pipe( map(([key, row, metadata]: [...InputRow, unknown?]) => [ key, - wrapInputRow(alias, row, metadata as RowMetadata | null | undefined), + wrapInputRow( + alias, + row, + metadata as RowMetadata | null | undefined, + hasInternalState, + ), ]), ) } @@ -1948,41 +1950,24 @@ function copySelectedRow( } function attachVirtualPropsToSelected( - selected: any, - row: Record, - isCollectionRoot: boolean, - metadataSources: ReadonlyArray | undefined, -): any { + selected: unknown, + metadata: RowMetadata | null, +): unknown { if (!isPublicContainer(selected)) return selected - - const selectedRecord = selected as Record - // Union output is already a branch row, rather than an aliased source. - const source = - metadataSources === undefined - ? row - : metadataSources.reduce( - (prior, alias) => row[alias] ?? prior, - undefined, - ) - const sourceRecord = - isCollectionRoot && source !== null && typeof source === `object` - ? (source as Record) - : undefined + const selectedRecord = selected as Record let result = selectedRecord for (const prop of VIRTUAL_PROP_NAMES) { - // A root projection cannot replace source metadata. Other projections - // only inherit a missing virtual property from their namespace. - const reset = isCollectionRoot && prop in selectedRecord - if (!reset && (selectedRecord[prop] != null || !(prop in row))) continue - const owner = reset ? sourceRecord : row - const present = owner !== undefined && prop in owner - const value = present ? owner[prop] : undefined - if (reset && present && selectedRecord[prop] === value) continue + const present = metadata !== null && prop in metadata + if ( + present + ? prop in selectedRecord && selectedRecord[prop] === metadata[prop] + : !(prop in selectedRecord) + ) + continue if (result === selectedRecord) result = copySelectedRow(selectedRecord) - if (present) result[prop] = value + if (present) result[prop] = metadata[prop] else delete result[prop] } - return result } diff --git a/packages/db/src/query/compiler/joins.ts b/packages/db/src/query/compiler/joins.ts index ef9046c38d..9b82b68035 100644 --- a/packages/db/src/query/compiler/joins.ts +++ b/packages/db/src/query/compiler/joins.ts @@ -31,6 +31,7 @@ import { getLazyLoadTargets } from './lazy-targets.js' import { crossJoinParentRoutes } from './parent-routes.js' import { queriesMatchForCaching } from './query-equivalence.js' import { + INCLUDES_PUBLIC_KEY, attachRouteMetadata, attachRouteMetadataToResult, getNamespacedRouteMetadata, @@ -337,6 +338,7 @@ export function processJoins( joinedSource, row, metadata as RowMetadata | null | undefined, + routeJoinedSource || joinClause.from.type === `queryRef`, ), joinedSource, `joined`, @@ -455,7 +457,11 @@ export function processJoins( return mainPipeline.pipe( joinOperator(joinedPipeline, joinClause.type as JoinType), - processJoinResults(joinedSource, mainAliases), + processJoinResults( + joinedSource, + mainAliases, + parentKeyStream !== undefined, + ), ) } @@ -677,6 +683,7 @@ function encodeNonFiniteKey(_: string, value: unknown): unknown { function processJoinResults( joinedSource: string, mainAliases: ReadonlyArray, + parentRouted: boolean, ): ( pipeline: IStreamBuilder< [key: string, [JoinInputValue | undefined, JoinInputValue | undefined]] @@ -695,7 +702,7 @@ function processJoinResults( // must not expose an ancestor with the same alias. const mergedNamespacedRow = { ...(mainNamespacedRow ?? joinedNamespacedRow), - } as NamespacedRow + } as NamespacedRow & Record if (main == null) for (const alias of mainAliases) delete mergedNamespacedRow[alias] if (joinedNamespacedRow) @@ -715,6 +722,24 @@ function processJoinResults( encodeNonFiniteKey, ) + // A join contributes one row per pair, including an absent outer side. + // Inherited source keys name only one member of that pair. + if (parentRouted) + mergedNamespacedRow[INCLUDES_PUBLIC_KEY] = JSON.stringify( + [ + (mainNamespacedRow as Record | undefined)?.[ + INCLUDES_PUBLIC_KEY + ] ?? + mainKey ?? + null, + ( + joinedNamespacedRow as Record | undefined + )?.[INCLUDES_PUBLIC_KEY] ?? + joinedKey ?? + null, + ], + encodeNonFiniteKey, + ) return [resultKey, mergedNamespacedRow] as [string, NamespacedRow] }), ) diff --git a/packages/db/src/query/compiler/route-metadata.ts b/packages/db/src/query/compiler/route-metadata.ts index 31ea6f153c..5aba9d34d7 100644 --- a/packages/db/src/query/compiler/route-metadata.ts +++ b/packages/db/src/query/compiler/route-metadata.ts @@ -88,12 +88,6 @@ export function getNamespacedRouteMetadata( ) } -export function stripRouteMetadata(value: T): T { - const result = { ...value } as T & Record - delete result[ROUTE_METADATA] - return result -} - export function attachRouteMetadataToResult( value: unknown, correlationKey: unknown, @@ -141,12 +135,14 @@ export function wrapInputRow( alias: string, row: unknown, metadata?: RowMetadata | null, + hasInternalState = true, ): NamespacedRow { + if (!hasInternalState) return { [alias]: row } as NamespacedRow const scalar = getRoutedScalarMetadata(row) const route = scalar ?? getRouteMetadata(row) const namespaced = { ...getParentContextValue(route?.parentContext), - [alias]: scalar ? scalar.value : stripInternalCallbackMetadata(row, false), + [alias]: scalar ? scalar.value : stripInternalCallbackMetadata(row), } as NamespacedRow if (route) attachRouteMetadata(namespaced, route.correlationKey, route.parentContext) @@ -203,34 +199,35 @@ export function mergeSourceContext( } } -/** Remove private route state, descending only when the compilation can nest it. */ -export function stripInternalRouteMetadata( - value: unknown, - recursive = true, -): unknown { - return stripInternalMetadata(value, INTERNAL_ROUTE_KEYS, recursive) +/** Restore namespace state after resolving its public include paths. */ +export function restoreInternalRouteMetadata( + target: Record, + source: object, +): void { + for (const key of INTERNAL_ROUTE_KEYS) + if (Object.hasOwn(source, key)) + target[key] = (source as Record)[key] +} + +/** Remove private route state from a known result root. */ +export function stripInternalRouteMetadata(value: unknown): unknown { + return stripInternalMetadata(value, INTERNAL_ROUTE_KEYS) } /** Remove compiler-owned keys before invoking user code, at the known scope. */ -export function stripInternalCallbackMetadata( - value: unknown, - recursive = true, -): unknown { - return stripInternalMetadata(value, INTERNAL_CALLBACK_KEYS, recursive) +export function stripInternalCallbackMetadata(value: unknown): unknown { + return stripInternalMetadata(value, INTERNAL_CALLBACK_KEYS) } function stripInternalMetadata( value: unknown, keys: ReadonlySet, - recursive: boolean, ): unknown { - if (!recursive) { - if (!isPublicContainer(value)) return value - let hasMetadata = false - for (const key of keys) hasMetadata ||= Object.hasOwn(value, key) - if (!hasMetadata) return value - } - return transformPublicContainers(value, (leaf) => leaf, keys, recursive) + if (!isPublicContainer(value)) return value + for (const key of keys) + if (Object.hasOwn(value, key)) + return transformPublicContainers(value, (leaf) => leaf, keys, false) + return value } /** Copy only paths changed by a leaf transform or an omitted private key. */ diff --git a/packages/db/src/query/live/bucket-facade-adapter.ts b/packages/db/src/query/live/bucket-facade-adapter.ts index c92ff915a0..b6888e5569 100644 --- a/packages/db/src/query/live/bucket-facade-adapter.ts +++ b/packages/db/src/query/live/bucket-facade-adapter.ts @@ -74,6 +74,10 @@ export class BucketFacadeAdapter { private readonly entries = new Map>() private readonly retiredEntries = new Map>() private resolvedValues = new WeakMap() + private compiledResolvedValues = new WeakMap< + ValueResolver, + WeakMap + >() private cleanedUp = false constructor( @@ -355,6 +359,7 @@ export class BucketFacadeAdapter { this.activeBuckets.set(edgeId, new Set(buckets)) } this.resolvedValues = new WeakMap() + this.compiledResolvedValues = new WeakMap() for (const entry of currentEntries) { if (!previousEntries.has(entry)) void entry.dispose() @@ -521,7 +526,21 @@ export class BucketFacadeAdapter { } private resolveValue(value: unknown, resolve?: ValueResolver): unknown { - if (resolve) return resolve(value, (leaf) => this.resolveValue(leaf)) + if (resolve) { + if (value === null || typeof value !== `object`) + return resolve(value, (leaf) => this.resolveValue(leaf)) + // The same relation value is validated, written, and compared as a prior + // snapshot. Resolver identity keeps different include paths independent. + const cache = getOrCreate( + this.compiledResolvedValues, + resolve, + () => new WeakMap(), + ) + if (cache.has(value)) return cache.get(value) + const result = resolve(value, (leaf) => this.resolveValue(leaf)) + cache.set(value, result) + return result + } if (value === null || typeof value !== `object`) return value const cached = this.resolvedValues.get(value) if (cached !== undefined) return cached diff --git a/packages/db/src/query/live/materialized-pipeline.ts b/packages/db/src/query/live/materialized-pipeline.ts index 449fe04393..762baf9817 100644 --- a/packages/db/src/query/live/materialized-pipeline.ts +++ b/packages/db/src/query/live/materialized-pipeline.ts @@ -458,7 +458,7 @@ function compileValueResolver( return [{ path, include, child }] }) return (value, resolveFacade) => { - let result = stripInternalCallbackMetadata(value, false) + let result = stripInternalCallbackMetadata(value) for (const { path, include, child } of fields) { result = replaceIncludePath(result, path, 0, (included) => { if (include.materialization === `collection`) diff --git a/packages/db/tests/query/builder/callback-types.test-d.ts b/packages/db/tests/query/builder/callback-types.test-d.ts index a26972b290..4fc6772784 100644 --- a/packages/db/tests/query/builder/callback-types.test-d.ts +++ b/packages/db/tests/query/builder/callback-types.test-d.ts @@ -459,19 +459,19 @@ describe(`Query Builder Callback Types`, () => { .groupBy(({ user }) => user.department_id) .having(({ user }) => { // Test comparison operators with aggregates - expectTypeOf(gt(count(user.id), 10)).toEqualTypeOf< + expectTypeOf(gt(count(user.id), 10)).toMatchTypeOf< BasicExpression >() - expectTypeOf(gte(avg(user.salary), 75000)).toEqualTypeOf< + expectTypeOf(gte(avg(user.salary), 75000)).toMatchTypeOf< BasicExpression >() - expectTypeOf(lt(max(user.age), 60)).toEqualTypeOf< + expectTypeOf(lt(max(user.age), 60)).toMatchTypeOf< BasicExpression >() - expectTypeOf(lte(min(user.age), 25)).toEqualTypeOf< + expectTypeOf(lte(min(user.age), 25)).toMatchTypeOf< BasicExpression >() - expectTypeOf(eq(sum(user.salary), 500000)).toEqualTypeOf< + expectTypeOf(eq(sum(user.salary), 500000)).toMatchTypeOf< BasicExpression >() diff --git a/packages/db/tests/query/includes-context-transport-oracle.test.ts b/packages/db/tests/query/includes-context-transport-oracle.test.ts index ab109e27c2..a2fac6890d 100644 --- a/packages/db/tests/query/includes-context-transport-oracle.test.ts +++ b/packages/db/tests/query/includes-context-transport-oracle.test.ts @@ -2975,3 +2975,213 @@ describe(`parent route after inherited inline input materialization`, () => { runMaterializedInputCell(cell)) } }) + +/** + * An unmatched RIGHT/FULL joined QueryRef must not donate its source key to + * the whole joined result. Contribution conservation owes one public child + * per distinct projected contribution, including multiple matches on one side. Source key domains are independent: + * a joined key may equal the key of a different, matched main row. + * + * This finite grammar crosses inner/left/right/full joins with plain and QueryRef inputs. + * Three parents supply shared and disjoint routes. Initial collision, main + * departure/reentry, and joined departure compare every public form against a + * flat independent join. It judges rows and stable distinct membership, without + * prescribing generated key serialization or callback timing. + */ +const outerJoinKeyGrammar = ( + [`inner`, `left`, `right`, `full`] as const +).flatMap((join) => + [false, true].flatMap((mainRef) => + [false, true].flatMap((joinedRef) => + ([`numbers`, `strings`, `mixed`] as const).map((keys) => ({ + join, + mainRef, + joinedRef, + keys, + })), + ), + ), +) +type OuterKeyRow = { id: number; link: number; parentGroup: number } +function expectedOuterJoinKeyRows( + mains: ReadonlyArray, + children: ReadonlyArray, + group: number, + join: (typeof outerJoinKeyGrammar)[number][`join`], +) { + return children + .filter((child) => child.parentGroup === group) + .flatMap((child) => { + const matched = mains.filter((main) => main.link === child.link) + return ( + matched.length + ? matched + : join === `right` || join === `full` + ? [undefined] + : [] + ).map((main) => ({ + id: child.id, + mainId: main?.id, + })) + }) + .sort((a, b) => a.id - b.id) +} +function checkOuterJoinKeyRows( + observed: Iterable<{ id: unknown; mainId: unknown }>, + expected: ReturnType, +) { + expect( + [...observed] + .map(({ id, mainId }) => ({ id, mainId })) + .sort((a, b) => Number(a.id) - Number(b.id)), + ).toEqual(expected) +} +declareOracle({ + grammar: [outerJoinKeyGrammar], + model: [expectedOuterJoinKeyRows], + check: [checkOuterJoinKeyRows], +}) +test(`rejects missing and duplicated joined contributions`, () => { + const mains = [{ id: 10, link: 10, parentGroup: 1 }] + const children = [ + { id: 20, link: 10, parentGroup: 1 }, + { id: 21, link: 10, parentGroup: 1 }, + { id: 10, link: 30, parentGroup: 1 }, + ] + for (const join of [`inner`, `left`, `right`, `full`] as const) { + const expected = expectedOuterJoinKeyRows(mains, children, 1, join) + checkOuterJoinKeyRows(expected, expected) + for (const wrong of [expected.slice(1), [...expected, expected[0]!]]) + expect(() => checkOuterJoinKeyRows(wrong, expected)).toThrow() + } +}) +test.each(outerJoinKeyGrammar)( + `preserves outer-join child identities across independent source keys: %j`, + async ({ join, mainRef, joinedRef, keys }) => { + const cuts = [`initial`, `main-departed`, `main-returned`, `child-departed`] + const reach = createOracleReach( + `outer join independent source keys`, + cuts.flatMap((cut) => + materializationForms.map((form) => `${cut}/${form}`), + ), + ) + reach.beginHistory() + const parents = createGrammarCollection(`outer-key-parents`, [ + { id: 1, group: 1 }, + { id: 2, group: 2 }, + { id: 3, group: 1 }, + ]) + let modelMains: Array = [{ id: 10, link: 10, parentGroup: 1 }] + let modelChildren: Array = [ + { id: 20, link: 10, parentGroup: 1 }, + { id: 21, link: 10, parentGroup: 1 }, + { id: 10, link: 30, parentGroup: 1 }, + { id: 30, link: 50, parentGroup: 2 }, + ] + const mains = createControlledCollection(`outer-key-mains`, modelMains, { + autoIndex: `eager`, + getKey: (row) => (keys === `strings` ? String(row.id) : row.id), + }) + const children = createControlledCollection( + `outer-key-children`, + modelChildren, + { + autoIndex: `eager`, + getKey: (row) => (keys === `numbers` ? row.id : String(row.id)), + }, + ) + const live = createLiveQueryCollection({ + query: (q) => + q.from({ parent: parents.collection }).select(({ parent }) => { + const mainQuery = q + .from({ main: mains.collection }) + .select(({ main }) => ({ + id: main.id, + link: main.link, + parentGroup: main.parentGroup, + })) + const joinedQuery = q + .from({ child: children.collection }) + .select(({ child }) => ({ + id: child.id, + link: child.link, + parentGroup: child.parentGroup, + })) + // Runtime source kinds vary independently. This driver uses only their + // shared ordinary fields; the native type owner checks inference. + const base = q.from({ + main: (mainRef + ? mainQuery + : mains.collection) as unknown as typeof mains.collection, + }) + const source = { + child: (joinedRef + ? joinedQuery + : children.collection) as unknown as typeof children.collection, + } + const joined = + join === `inner` + ? base.innerJoin(source, ({ main, child }) => + eq(main.link, child.link), + ) + : join === `left` + ? base.leftJoin(source, ({ main, child }) => + eq(main.link, child.link), + ) + : join === `right` + ? base.rightJoin(source, ({ main, child }) => + eq(main.link, child.link), + ) + : base.fullJoin(source, ({ main, child }) => + eq(main.link, child.link), + ) + // Full-join optionality is a conservative shared carrier for the + // runtime grammar; the model still checks actual absence and values. + const typedJoin = joined as ReturnType< + typeof base.fullJoin + > + const selected = typedJoin + .where(({ child }) => eq(child.parentGroup, parent.group)) + .select(({ main, child }) => ({ id: child.id, mainId: main.id })) + return { id: parent.id, ...includeInEveryForm(selected) } + }), + }) + const compare = (cut: string) => { + for (const parent of parents.collection.toArray) { + const expected = expectedOuterJoinKeyRows( + modelMains, + modelChildren, + parent.group, + join, + ) + const forms = live.get(parent.id)! + const values = readEveryForm(forms, (rows) => [...rows]) + for (const form of materializationForms) { + checkOuterJoinKeyRows(values[form], expected) + reach.reach(`${cut}/${form}`) + } + } + } + await runWithCleanup(live, [parents, mains, children], async () => { + await live.preload() + compare(`initial`) + const original = modelMains[0]! + modelMains = [] + mains.write(`delete`, original) + compare(`main-departed`) + modelMains = [original] + mains.write(`insert`, original) + compare(`main-returned`) + const removed = modelChildren.find(({ id }) => id === 10)! + modelChildren = modelChildren.filter(({ id }) => id !== 10) + children.write(`delete`, removed) + compare(`child-departed`) + reach.assertReached() + if (process.env.TANSTACK_DB_ORACLE_STATISTICS === `1`) + console.log( + `outer-key reach ${JSON.stringify({ join, mainRef, joinedRef, keys })}`, + Object.fromEntries(reach.counts()), + ) + }) + }, +) diff --git a/packages/db/tests/query/includes-context-transport.test.ts b/packages/db/tests/query/includes-context-transport.test.ts index e6b9e835da..d08f70a949 100644 --- a/packages/db/tests/query/includes-context-transport.test.ts +++ b/packages/db/tests/query/includes-context-transport.test.ts @@ -16,7 +16,7 @@ import { } from '../../src/query/index.js' import { attachRouteMetadata, - stripInternalRouteMetadata, + transformPublicContainers, } from '../../src/query/compiler/route-metadata.js' import { createGrammarCollection, @@ -465,7 +465,11 @@ describe(`correlated include route-context transport grammar`, () => { const value: Record = { routed } value.self = value - const cleaned = stripInternalRouteMetadata(value) as typeof value + const cleaned = transformPublicContainers( + value, + (leaf) => leaf, + new Set(Object.getOwnPropertySymbols(routed)), + ) as typeof value expect(cleaned).not.toBe(value) expect(cleaned.self).toBe(cleaned) diff --git a/packages/db/tests/query/includes-oracle-helpers.ts b/packages/db/tests/query/includes-oracle-helpers.ts index d2fd9a642b..e3aee2f121 100644 --- a/packages/db/tests/query/includes-oracle-helpers.ts +++ b/packages/db/tests/query/includes-oracle-helpers.ts @@ -31,9 +31,10 @@ export type ControlledCollection = { rejectSync: (error: Error) => void } -type ControlledCollectionOptions = { +type ControlledCollectionOptions = { autoIndex?: `off` | `eager` rowUpdateMode?: `partial` | `full` + getKey?: (row: T) => string | number } let nextControlledCollectionId = 0 @@ -41,11 +42,11 @@ let nextControlledCollectionId = 0 export function createControlledCollection( name: string, initialData: ReadonlyArray = [], - options: ControlledCollectionOptions = {}, + options: ControlledCollectionOptions = {}, ): ControlledCollection { const collectionOptions = mockSyncCollectionOptions({ id: `${name}-${nextControlledCollectionId++}`, - getKey: (row) => row.id, + getKey: options.getKey ?? ((row) => row.id), initialData: initialData.map((row) => ({ ...row })), ...(options.autoIndex ? { autoIndex: options.autoIndex } : {}), }) diff --git a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts index 312b078859..ca9aefb87c 100644 --- a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts @@ -7,7 +7,7 @@ * retain their authored shape. The maintainer’s 2026-11-05 boundary-only * decision also preserves authored collisions in QueryRef callback inputs and * structured refs. Empty grouping contributes no key; a nonempty grouping or - * visible aggregate contributes a missing key, including nested aggregates. + * aggregate contributes a missing key, including nested and wrapped aggregates. * Nullable whole-row selections are absent or * complete; facade rows always receive required metadata. WithoutVirtualProps * distributes over discriminated row unions. @@ -143,6 +143,36 @@ const groupingBoundaries = [ const aggregateDepths = [0, 7, 8, 9, 10, 16] as const // Conditional inline fields are legal authoring choices. Array/array forms // distinguish wrapper identity from value shape; singleton forms retain absence. +const wrappedAggregateForms = [ + `coalesce`, + `case-scalar`, + `case-object`, + `case-default`, + `case-condition`, + `eq`, + `gt`, + `gte`, + `lt`, + `lte`, + `and`, + `or`, + `not`, + `isNull`, + `isUndefined`, + `inArray`, + `like`, + `ilike`, + `upper`, + `lower`, + `length`, + `concat`, + `add`, + `subtract`, + `multiply`, + `divide`, + `nested`, +] as const +const wrappedAggregateKinds = [`aggregate`, `ordinary`] as const const inlineChoices = [ `array-array`, `array-materialized`, @@ -154,6 +184,9 @@ const authoredStates = authoredCollisions.flatMap(({ name }) => ), ) const states = [ + ...wrappedAggregateForms.flatMap((form) => + wrappedAggregateKinds.map((kind) => `wrapped-aggregate/${form}/${kind}`), + ), ...inlineChoices.map((choice) => `inline-choice/${choice}`), ...authoredStates, ...authoredStates.map((state) => `structured-refs/${state}`), @@ -519,7 +552,7 @@ function consumerSource( } } // A count directly present under ordinary records is still an aggregate of - // this selection. Query helpers and wrapped expressions remain other laws. + // this selection. Query helpers stop traversal into a separate query scope. for (const depth of aggregateDepths) { for (const collision of authoredCollisions.filter( ({ name }) => name === `none` || name === `key`, @@ -582,9 +615,82 @@ function consumerSource( }`, ) } + // The current grouped-intermediate contract supplies a missing generated + // key for visible and wrapped aggregates alike. Ordinary controls retain + // their authored shape. The expression's value does not choose key ownership. + for (const form of wrappedAggregateForms) { + for (const kind of wrappedAggregateKinds) { + const aggregate = kind === `aggregate` + const argument = aggregate ? `count(item.id)` : `rows.size` + const text = `concat(${argument})` + let expression: string + let value: string + if (form === `coalesce` || form === `nested`) { + expression = `coalesce(${argument}, 0)` + if (form === `nested`) + for (let i = 0; i < 10; i++) expression = `coalesce(${expression}, 0)` + value = `number` + } else if (form === `case-scalar` || form === `case-default`) { + expression = + form === `case-default` + ? `caseWhen(false, 0, ${argument})` + : `caseWhen(true, ${argument}, 0)` + value = `number` + } else if (form === `case-object`) { + expression = `caseWhen(true, { n: ${argument} }, { n: 0 })` + value = `{ n: number }` + } else if (form === `case-condition`) { + expression = `caseWhen(gt(${argument}, 0), { n: 1 }, { n: 0 })` + value = `{ n: number }` + } else if ([`eq`, `gt`, `gte`, `lt`, `lte`].includes(form)) { + expression = `${form}(${argument}, 0)` + value = `boolean` + } else if (form === `and` || form === `or`) { + expression = `${form}(true, gt(${argument}, 0), true)` + value = `boolean` + } else if ( + form === `not` || + form === `isNull` || + form === `isUndefined` + ) { + expression = `${form}(${argument})` + value = `boolean` + } else if (form === `inArray`) { + expression = `inArray(${argument}, [0, 1])` + value = `boolean` + } else if (form === `like` || form === `ilike`) { + expression = `${form}(${text}, 'a')` + value = `boolean` + } else if (form === `upper` || form === `lower` || form === `length`) { + expression = `${form}(${text})` + value = form === `length` ? `number` : `string` + } else if (form === `concat`) { + expression = `concat(${text}, 'b')` + value = `string` + } else { + expression = `${form}(${argument}, 1)` + value = form === `divide` ? `number | null` : `number` + } + const expected = `{ value: ${value}${aggregate ? `; readonly $key: string | number` : ``} }` + addWitness( + `wrapped-aggregate/${form}/${kind}`, + `{ + const inner = new Query().from({ item: rows }).select(({ item }) => ({ value: ${expression} })); + const query = new Query().from({ wrapped: inner }).fn.select(({ wrapped }) => { + type WrappedObservation = Assert>, Normalize>>>; + type WrappedValue = Assert<${value.startsWith(`{`) ? `SameShape` : `Equal`}>; + return { checked: true }; + }); + const published = createLiveQueryCollection({ query: inner }); + type WrappedPublication = Assert>, Normalize, 'value'>>>>; + type PublishedValue = Assert<${value.startsWith(`{`) ? `SameShape` : `Equal`}>; + }`, + ) + } + } return { source: ` - import { BTreeIndex, Query, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } from '@tanstack/db'; + import { BTreeIndex, Query, caseWhen, coalesce, max, gt, gte, lt, lte, and, or, not, isNull, isUndefined, inArray, like, ilike, upper, lower, length, concat, add, subtract, multiply, divide, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } from '@tanstack/db'; import type { ContextFromSource, Ref as PublicRef, WithoutVirtualProps } from '@tanstack/db'; type Equal = (() => T extends A ? 1 : 2) extends (() => T extends B ? 1 : 2) ? true : false; type Assert = T; @@ -735,7 +841,7 @@ async function checkConsumerConstruction(source: string): Promise { const construct = new Function( `api`, `exports`, - `const { BTreeIndex, Query, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } = api;\n${outputText}`, + `const { BTreeIndex, Query, caseWhen, coalesce, max, gt, gte, lt, lte, and, or, not, isNull, isUndefined, inArray, like, ilike, upper, lower, length, concat, add, subtract, multiply, divide, count, createCollection, createLiveQueryCollection, eq, groupKeys, include, materialize, toArray } = api;\n${outputText}`, ) construct(api, {}) }, cleanups) @@ -759,6 +865,8 @@ declareOracle({ groupingBoundaries, aggregateDepths, inlineChoices, + wrappedAggregateForms, + wrappedAggregateKinds, ], model: [consumerSource], check: [checkConsumer, checkConsumerConstruction], diff --git a/scripts/bench/high-review-2026-11-05.csv b/scripts/bench/high-review-2026-11-05.csv new file mode 100644 index 0000000000..48394a83fb --- /dev/null +++ b/scripts/bench/high-review-2026-11-05.csv @@ -0,0 +1,337 @@ +source,reportedSha,cpu,node,query,scenario,level,indexes,mutationMode,coldHydrateMs,writeMedianMs,coldSamplesMs,writeMedianSamplesMs +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0351249999999936,0.04108300000007148,"[5.72462500000006, 1.0351249999999936, 0.7784159999999929]","[0.05391600000007202, 0.04108300000007148, 0.03333300000008421]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6002500000000737,0.08370800000000145,"[0.6846249999999827, 0.6002500000000737, 0.5535830000000033]","[0.10508400000003348, 0.08370800000000145, 0.07229199999994762]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.3602500000000646,0.044792000000029475,"[4.9382080000000315, 2.3602500000000646, 1.4050829999999905]","[0.044792000000029475, 0.04575000000011187, 0.03054199999996854]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.7007079999999632,0.06499999999994088,"[4.827915999999959, 1.7007079999999632, 1.4844160000000102]","[0.07645800000000236, 0.06499999999994088, 0.06379200000003493]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.5674589999999853,0.04224999999996726,"[3.9017500000001064, 2.389499999999998, 3.5674589999999853]","[0.05254200000001674, 0.04224999999996726, 0.042167000000063126]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.35950000000002547,0.03441699999996217,"[0.48491599999999835, 0.3439170000000331, 0.35950000000002547]","[0.035916000000042914, 0.03424999999992906, 0.03441699999996217]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0181670000000622,0.029625000000010004,"[1.0672499999999445, 0.9009999999999536, 1.0181670000000622]","[0.02937500000007276, 0.029625000000010004, 0.03174999999998818]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.47316699999998946,0.028957999999988715,"[0.488790999999992, 0.47316699999998946, 0.4216660000000729]","[0.030624999999986358, 0.026624999999967258, 0.028957999999988715]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.453583999999978,0.018374999999991815,"[0.453583999999978, 0.45899999999994634, 0.43591700000001765]","[0.02400000000000091, 0.018374999999991815, 0.017291999999997643]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.17512499999998,0.029708000000027823,"[1.17512499999998, 1.1563750000000255, 1.2182500000000118]","[0.030167000000005828, 0.029708000000027823, 0.02845800000000054]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.354541999999924,0.0484159999999747,"[1.354541999999924, 1.2639580000000024, 1.3803749999999582]","[0.0484159999999747, 0.04650000000003729, 0.04958299999998417]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.361666000000014,0.030250000000023647,"[2.36424999999997, 2.361666000000014, 2.1252080000000433]","[0.03058299999997871, 0.030250000000023647, 0.027958000000012362]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.3018329999999878,0.02529200000003584,"[0.30504099999996015, 0.27504099999998743, 0.3018329999999878]","[0.02529200000003584, 0.02495899999996709, 0.02641700000003766]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.9264579999999114,0.17141700000001947,"[5.687125000000151, 0.9264579999999114, 0.8464999999998781]","[0.20145800000000236, 0.17141700000001947, 0.16179200000010496]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.5806250000000546,0.023374999999987267,"[4.35345899999993, 0.5806250000000546, 0.5676670000000286]","[0.02529099999992468, 0.023374999999987267, 0.021915999999919222]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.3533749999999145,0.07458299999984774,"[0.4469579999999951, 0.3501669999998285, 0.3533749999999145]","[0.09224999999992178, 0.07458299999984774, 0.07395899999983158]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.101709000000028,0.028125000000045475,"[1.0293329999999514, 1.101709000000028, 1.1210829999999987]","[0.02795800000012605, 0.029125000000021828, 0.028125000000045475]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.1549999999999727,0.05466699999988123,"[1.6447499999999309, 1.1549999999999727, 1.1247500000001764]","[0.05349999999998545, 0.054791000000022905, 0.05466699999988123]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.501709000000119,0.035499999999956344,"[3.5965419999999995, 1.501709000000119, 1.497041999999965]","[0.035499999999956344, 0.036166999999977634, 0.03483399999981884]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.21199999999998909,0.03079200000001947,"[0.23629100000016479, 0.21199999999998909, 0.20666699999992488]","[0.03224999999997635, 0.03079200000001947, 0.02920799999992596]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.8607079999999314,0.024208000000044194,"[0.8607079999999314, 2.6989169999999376, 0.7336669999999685]","[0.024791999999933978, 0.024208000000044194, 0.023374999999987267]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.3577500000001237,0.022249999999985448,"[0.3836659999999483, 0.3577500000001237, 0.35412499999983993]","[0.02295800000001691, 0.022208000000091488, 0.022249999999985448]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.35858299999995324,0.0182079999999587,"[0.35858299999995324, 0.36170799999990777, 0.35437500000011823]","[0.018625000000156433, 0.0182079999999587, 0.017708000000084212]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8285419999999704,0.028999999999996362,"[0.8597079999999551, 0.8285419999999704, 0.7832500000001801]","[0.028999999999996362, 0.02941600000008293, 0.027917000000115877]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2205000000001291,0.04620799999997871,"[3.3417919999999413, 1.2205000000001291, 1.068667000000005]","[0.04587500000002365, 0.04737499999987449, 0.04620799999997871]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.702874999999949,0.02945799999997689,"[1.702874999999949, 1.7706250000001091, 1.4607080000000678]","[0.028625000000147338, 0.03008300000010422, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.17570899999986977,0.0236250000000382,"[0.19266700000002857, 0.17570899999986977, 0.16241700000000492]","[0.023959000000104425, 0.0236250000000382, 0.022707999999965978]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6994160000001557,0.1590840000001208,"[0.6681659999999283, 0.7194579999998041, 0.6994160000001557]","[0.1590840000001208, 0.1566250000000764, 0.16454099999987193]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.55212500000016,0.019833000000062384,"[3.4158749999999145, 2.55212500000016, 2.29362500000002]","[0.020584000000098968, 0.019833000000062384, 0.01974999999993088]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9890829999999369,0.3662500000000364,"[6.2929169999999885, 1.9890829999999369, 1.8942910000000666]","[0.3662500000000364, 0.3607080000001588, 0.36875000000009095]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,6.962999999999965,0.02416699999980665,"[6.962999999999965, 6.937249999999949, 7.288833000000068]","[0.023959000000104425, 0.02416699999980665, 0.024833000000171523]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.0281250000000455,0.04920799999990777,"[6.501875000000155, 3.0281250000000455, 3.022042000000056]","[0.05037500000003092, 0.0487919999998212, 0.04920799999990777]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.077332999999953,0.032916000000113854,"[3.4896249999999327, 4.493457999999919, 4.077332999999953]","[0.03291599999988648, 0.03304200000002311, 0.032916000000113854]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.42866700000013225,0.028083000000151515,"[0.49329099999999926, 0.42866700000013225, 0.42183299999987867]","[0.027874999999994543, 0.028083000000151515, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,6.256209000000126,0.022540999999819178,"[6.362749999999778, 6.009209000000283, 6.256209000000126]","[0.022375000000010914, 0.023000000000138243, 0.022540999999819178]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.504334000000199,0.02233299999988958,"[5.4195419999996375, 2.102708000000348, 2.504334000000199]","[0.02233299999988958, 0.020874999999705324, 0.02275000000008731]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.2310410000000047,0.01670800000010786,"[2.2310410000000047, 2.1028329999999187, 2.3689580000000205]","[0.0157920000001468, 0.02412499999991269, 0.01670800000010786]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.594000000000051,0.029624999999668944,"[8.779041999999663, 8.072791999999936, 8.594000000000051]","[0.029624999999668944, 0.030124999999770807, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.54037500000004,0.04624999999987267,"[3.55600000000004, 3.54037500000004, 3.499500000000353]","[0.04624999999987267, 0.04587499999979627, 0.0466670000000704]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.14954200000011,0.02837500000032378,"[4.14954200000011, 4.155166999999892, 3.8135419999998703]","[0.029125000000021828, 0.027584000000388187, 0.02837500000032378]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.4853750000002037,0.024125000000367436,"[0.49099999999998545, 0.4549170000000231, 0.4853750000002037]","[0.025874999999814463, 0.024125000000367436, 0.02412499999991269]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,10.318250000000262,0.1623340000001008,"[10.318250000000262, 6.048457999999755, 10.341667000000143]","[0.1558749999999236, 0.1623340000001008, 0.18962499999997817]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.40116699999998673,0.020125000000007276,"[0.6117079999999078, 0.40104199999996126, 0.40116699999998673]","[0.020125000000007276, 0.020082999999885942, 0.02079199999980119]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.41000000000030923,0.09499999999979991,"[0.41791600000033213, 0.41000000000030923, 0.39274999999997817]","[0.10166700000036144, 0.09499999999979991, 0.09087500000032378]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9364160000000084,0.026917000000139524,"[0.9364160000000084, 0.9122079999997368, 0.9407909999999902]","[0.026917000000139524, 0.026292000000012195, 0.028374999999869033]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3859170000000631,0.05508300000019517,"[1.3859170000000631, 1.4595000000003893, 1.3534169999998085]","[0.05437500000016371, 0.05508300000019517, 0.057207999999718595]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.867291000000023,0.03829200000018318,"[2.6180420000000595, 1.867291000000023, 1.784208000000035]","[0.03837500000008731, 0.03829200000018318, 0.037792000000081316]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23879200000010314,0.030499999999847205,"[0.2610840000002099, 0.23879200000010314, 0.20104099999980463]","[0.03237500000022919, 0.030375000000276486, 0.030499999999847205]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.543916000000081,0.024167000000034022,"[6.630167000000256, 6.543916000000081, 6.258834000000206]","[0.02516700000023775, 0.024167000000034022, 0.023875000000316504]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4359580000000278,0.02233399999977337,"[0.46545900000000984, 0.41191600000001927, 0.4359580000000278]","[0.02233399999977337, 0.02187499999990905, 0.03945799999974042]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.4656249999998181,0.018667000000277767,"[0.8788330000002134, 0.4656249999998181, 0.4446250000000873]","[0.0187500000001819, 0.018667000000277767, 0.01741700000002311]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.9770830000002206,0.02758300000004965,"[1.033792000000176, 0.8886249999995925, 0.9770830000002206]","[0.027166999999735708, 0.02758300000004965, 0.029125000000021828]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.413583000000017,0.04975000000013097,"[1.4256670000004306, 1.413583000000017, 1.3247920000003433]","[0.04975000000013097, 0.04870799999980591, 0.0595419999999649]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.1568340000003445,0.030707999999776803,"[2.1568340000003445, 1.8261250000000473, 5.24066700000003]","[0.03116699999964112, 0.030707999999776803, 0.030500000000301952]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.2199999999997999,0.02570800000012241,"[0.2497920000000704, 0.2199999999997999, 0.21291599999995015]","[0.025040999999873748, 0.02570800000012241, 0.02616699999998673]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.665584000000308,0.15912500000013097,"[7.967874999999822, 6.619083000000046, 6.665584000000308]","[0.15912500000013097, 0.15949999999975262, 0.15812499999992724]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,31.33266700000013,0.023290999999971973,"[33.85387499999979, 30.411999999999807, 31.33266700000013]","[0.027290999999877386, 0.023290999999971973, 0.022083000000293396]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,32.94712499999969,4.570459000000483,"[32.341583000000355, 38.54725000000053, 32.94712499999969]","[4.5763749999996435, 4.186542000000372, 4.570459000000483]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,116.63533300000017,0.04199999999946158,"[116.63533300000017, 182.58820800000012, 96.3628749999998]","[0.04975000000013097, 0.04199999999946158, 0.03462500000023283]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,31.36491599999954,0.06604200000037963,"[30.216875000000073, 31.366417000000183, 31.36491599999954]","[0.07708300000012969, 0.06604199999947014, 0.06604200000037963]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,38.68462499999987,0.04241699999965931,"[38.68462499999987, 39.699916999999914, 29.501250000000255]","[0.04241699999965931, 0.046542000000044936, 0.04116700000031415]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.349875000000793,0.033083999999689695,"[2.33020900000065, 5.962333999999828, 3.349875000000793]","[0.033083999999689695, 0.030584000000089873, 0.03429200000027777]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,82.11424999999963,0.02695799999855808,"[82.11424999999963, 85.74275000000125, 72.24908300000061]","[0.02695799999855808, 0.027416999999331892, 0.025750000000698492]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,32.82341699999961,0.02754099999947357,"[33.420625000000655, 32.71441699999923, 32.82341699999961]","[0.02766700000029232, 0.02754099999947357, 0.02716599999985192]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,31.31633299999885,0.020833000000493485,"[30.61858299999949, 35.6038750000007, 31.31633299999885]","[0.021124999999301508, 0.020833000000493485, 0.019458999999187654]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.4436250000017,0.03412500000013097,"[100.0102079999997, 139.7112500000003, 105.4436250000017]","[0.033625000000029104, 0.034583000000566244, 0.03412500000013097]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.07537500000035,0.05991600000015751,"[32.07537500000035, 34.37654100000145, 28.356207999999242]","[0.061417000000801636, 0.05991600000015751, 0.058042000000568805]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,43.75299999999879,0.038708000000042375,"[47.976707999998325, 34.332249999999476, 43.75299999999879]","[0.038708000000042375, 0.036792000000787084, 0.03904099999999744]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.4630420000012236,0.03479200000037963,"[2.4630420000012236, 2.268500000000131, 3.432333999999173]","[0.03479200000037963, 0.03391699999883713, 0.03600000000005821]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,79.04391600000054,0.16750000000138243,"[89.01912500000071, 72.07933299999968, 79.04391600000054]","[0.16912499999853026, 0.16750000000138243, 0.16629199999988487]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9618749999990541,0.02633400000013353,"[1.196125000000393, 0.9618749999990541, 0.9210409999996045]","[0.034958000000187894, 0.02633400000013353, 0.024917000000641565]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.1346670000002632,0.37745799999902374,"[1.3257080000003043, 0.7652920000000449, 1.1346670000002632]","[0.4010840000009921, 0.3772079999998823, 0.37745799999902374]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.598041999999623,0.03175000000010186,"[1.5960830000003625, 1.6378329999988637, 1.598041999999623]","[0.03175000000010186, 0.032165999999051564, 0.029666000000361237]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.6873329999998532,0.059708999999202206,"[1.6873329999998532, 1.6451670000005834, 2.483125000000655]","[0.059708999999202206, 0.05762499999946158, 0.06354199999987031]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.4320000000006985,0.044874999999592546,"[2.4320000000006985, 2.6288750000003347, 2.3661250000004657]","[0.04408299999886367, 0.04641699999956472, 0.044874999999592546]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.4530419999991864,0.04341700000077253,"[0.4817910000001575, 0.4530419999991864, 0.3427499999997963]","[0.04341700000077253, 0.04445800000030431, 0.03875000000152795]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,71.70058299999982,0.027957999998761807,"[121.07949999999983, 71.70058299999982, 67.1005409999998]","[0.028542000000015832, 0.027957999998761807, 0.02599999999983993]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.2011669999992591,0.03149999999914144,"[1.5001659999998083, 1.2011669999992591, 0.8739590000004682]","[0.03149999999914144, 0.04029199999968114, 0.02525000000059663]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.923291999999492,0.024084000000584638,"[1.059291999999914, 0.923291999999492, 0.8243330000004789]","[0.02487500000097498, 0.024084000000584638, 0.021832999998878222]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.3909589999966556,0.02937500000189175,"[1.3909589999966556, 1.186375000001135, 1.8107920000002196]","[0.02937500000189175, 0.02937500000189175, 0.0332090000010794]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.7724170000001322,0.06183400000008987,"[1.7724170000001322, 1.7996670000029553, 1.6806250000008731]","[0.06112500000017462, 0.06183400000008987, 0.06529200000295532]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,4.107792000002519,0.03800000000046566,"[4.107792000002519, 6.186833000003389, 2.397625000001426]","[0.048666999999113614, 0.03800000000046566, 0.037166999998589745]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.42879200000243145,0.031791000001248904,"[0.4422500000000582, 0.345500000003085, 0.42879200000243145]","[0.031791000001248904, 0.03141699999832781, 0.0322089999972377]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,83.22537499999817,0.16970800000126474,"[83.22537499999817, 75.0867909999979, 95.38483300000007]","[0.16658400000233087, 0.16970800000126474, 0.1898750000000291]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0743340000000217,0.04087499999997135,"[5.657375000000002, 1.0743340000000217, 0.6812919999999849]","[0.051167000000020835, 0.04087499999997135, 0.0322500000000332]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.4832499999999982,0.08395799999999554,"[1.1152500000000032, 0.4832499999999982, 0.39520799999996825]","[0.10466700000000628, 0.08395799999999554, 0.06762500000002092]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.034750000000031,0.03995899999995345,"[4.705249999999978, 2.034750000000031, 1.326166999999998]","[0.04399999999998272, 0.03995899999995345, 0.02954099999999471]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.0534999999999854,0.06787499999995816,"[4.548750000000041, 2.0534999999999854, 1.3879999999999768]","[0.06991599999997788, 0.06787499999995816, 0.05320899999998119]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.358249999999998,0.041333999999949356,"[3.358249999999998, 3.928625000000011, 2.1645829999999933]","[0.04533300000002782, 0.041042000000004464, 0.041333999999949356]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.3153750000000173,0.033041999999966265,"[0.4369580000000042, 0.3137500000000273, 0.3153750000000173]","[0.033041999999966265, 0.03225000000009004, 0.03429100000005292]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0077079999999796,0.0286670000000413,"[1.0077079999999796, 1.062791999999945, 0.9847499999999627]","[0.0286670000000413, 0.025167000000010376, 0.030750000000011823]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5239170000000968,0.028500000000008185,"[0.5607919999999922, 0.5239170000000968, 0.3907920000000331]","[0.03224999999997635, 0.028500000000008185, 0.027082999999947788]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.4177079999999478,0.018625000000042746,"[0.4355409999999438, 0.41012499999999363, 0.4177079999999478]","[0.021332999999913227, 0.018625000000042746, 0.016124999999988177]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.1582909999999629,0.028999999999996362,"[1.1092919999999822, 1.1582909999999629, 1.1777080000000524]","[0.028999999999996362, 0.029583000000002357, 0.027749999999969077]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.4522080000000415,0.04837500000007822,"[1.3318749999999682, 1.4800839999999198, 1.4522080000000415]","[0.04837500000007822, 0.057624999999916326, 0.04491700000005494]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.113375000000019,0.030375000000049113,"[2.113375000000019, 2.2245000000000346, 1.8023749999999836]","[0.03045800000006693, 0.030375000000049113, 0.027625000000057298]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.30054100000006656,0.024290999999948326,"[0.30054100000006656, 0.2664999999999509, 0.30425000000002456]","[0.024791999999933978, 0.024290999999948326, 0.024125000000026375]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.81837500000006,0.1664580000000342,"[0.8158750000000055, 0.9402499999999918, 0.81837500000006]","[0.18991699999992306, 0.1664580000000342, 0.15841699999998582]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.6629169999999931,0.023207999999954154,"[1.2451660000000402, 0.6629169999999931, 0.42533400000002075]","[0.03304200000002311, 0.023207999999954154, 0.0211659999999938]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.34445800000003146,0.07304099999998925,"[0.7740420000000086, 0.34445800000003146, 0.32645800000000236]","[0.08941700000002584, 0.07304099999998925, 0.06866700000000492]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.9312080000000833,0.027416000000016538,"[0.9312080000000833, 1.068416999999954, 0.8297090000000935]","[0.028874999999970896, 0.02704099999994014, 0.027416000000016538]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.2730000000000246,0.04870800000003328,"[1.5162910000000238, 0.9947499999999536, 1.2730000000000246]","[0.04870800000003328, 0.04800000000000182, 0.050707999999985987]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.3564999999999827,0.03633399999989706,"[2.3564999999999827, 4.545125000000098, 1.5941669999999704]","[0.03691599999990558, 0.03633399999989706, 0.034583999999995285]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.20341599999994742,0.029291000000057466,"[0.2294170000000122, 0.20341599999994742, 0.20287499999994907]","[0.033999999999991815, 0.029291000000057466, 0.029083000000127868]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.7443340000002081,0.022832999999991443,"[0.9646669999999631, 0.7443340000002081, 0.7106670000000577]","[0.023500000000012733, 0.02245800000014242, 0.022832999999991443]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.38637500000004366,0.021332999999913227,"[0.39629200000013043, 0.38637500000004366, 0.30187500000010914]","[0.02112499999998363, 0.021332999999913227, 0.02175000000011096]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.3633749999999054,0.017584000000169908,"[0.3633749999999054, 0.32791699999984303, 0.39845900000000256]","[0.0183750000001055, 0.017584000000169908, 0.01741700000002311]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8120000000001255,0.026541999999835753,"[0.8120000000001255, 2.530124999999998, 0.7705000000000837]","[0.027499999999918145, 0.0263750000001437, 0.026541999999835753]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.9015839999999571,0.04025000000001455,"[0.9848340000000917, 0.9015839999999571, 0.8611250000001291]","[0.04037500000004002, 0.03904099999999744, 0.04025000000001455]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.4326670000000377,0.026624999999967258,"[1.3684589999998025, 1.4326670000000377, 1.457332999999835]","[0.026624999999967258, 0.027166999999963082, 0.02575000000001637]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.127666999999974,0.021500000000060027,"[0.127666999999974, 0.12533400000006623, 0.13883399999986068]","[0.02141699999992852, 0.021500000000060027, 0.021666999999979453]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6321659999998701,0.1436670000000504,"[0.6305839999999989, 0.6321659999998701, 0.6330000000000382]","[0.1424579999998059, 0.14833299999986593, 0.1436670000000504]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.491375000000062,0.018958999999995285,"[2.1017080000001442, 3.011167000000114, 2.491375000000062]","[0.017542000000048574, 0.019625000000132786, 0.018958999999995285]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9824590000000626,0.3718750000000455,"[2.1454590000000735, 1.9824590000000626, 1.8542909999998756]","[0.3718750000000455, 0.37333300000000236, 0.37095799999997325]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,8.37541699999997,0.02408300000001873,"[8.37541699999997, 9.376833000000033, 6.800500000000056]","[0.024499999999989086, 0.02408300000001873, 0.023542000000134067]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.013125000000173,0.04529199999979028,"[2.9597499999999854, 3.0655830000000606, 3.013125000000173]","[0.04525000000012369, 0.0470829999999296, 0.04529199999979028]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.082374999999956,0.03262500000005275,"[6.939208000000008, 3.3059579999999187, 4.082374999999956]","[0.031208999999989828, 0.035667000000103144, 0.03262500000005275]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.4704580000000078,0.02750000000014552,"[0.4968750000000455, 0.4704580000000078, 0.3903330000000551]","[0.02800000000002001, 0.027082999999947788, 0.02750000000014552]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,5.61462500000016,0.02179200000000492,"[5.61462500000016, 6.133499999999913, 5.483625000000075]","[0.02179200000000492, 0.023750000000063665, 0.021457999999938693]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.0269579999999223,0.019708999999920707,"[2.0269579999999223, 2.092290999999932, 1.969957999999906]","[0.019874999999956344, 0.019667000000026746, 0.019708999999920707]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.018624999999929,0.014625000000023647,"[2.018624999999929, 1.9684159999999338, 2.037708000000066]","[0.014625000000023647, 0.01445800000010422, 0.014750000000049113]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.103791999999885,0.027291999999988548,"[7.451041999999916, 8.592624999999998, 8.103791999999885]","[0.026749999999992724, 0.028958000000102402, 0.027291999999988548]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.377542000000176,0.041291999999884865,"[6.620374999999967, 3.377542000000176, 3.3273329999999532]","[0.041707999999971435, 0.040541999999959444, 0.041291999999884865]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,3.950000000000273,0.025916999999935797,"[3.5790830000000824, 4.199166999999761, 3.950000000000273]","[0.027250000000094587, 0.025916999999935797, 0.025749999999788997]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.46566699999993943,0.023457999999664025,"[0.4351249999999709, 0.5332499999999527, 0.46566699999993943]","[0.02437499999996362, 0.02320800000006784, 0.023457999999664025]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,9.30099999999993,0.15637500000002547,"[9.30099999999993, 6.032249999999749, 9.930499999999938]","[0.15637500000002547, 0.15504200000032142, 0.15829200000007404]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.48587499999985084,0.01970900000014808,"[0.48587499999985084, 0.4137090000003809, 0.5827079999999114]","[0.01970900000014808, 0.018958000000111497, 0.02162499999985812]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4345419999999649,0.09891700000025594,"[0.41804199999978664, 0.4345419999999649, 0.4533329999999296]","[0.09891700000025594, 0.11458399999992253, 0.08645900000010442]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9308750000000146,0.02687500000001819,"[0.9308750000000146, 0.8725420000000668, 1.2563749999999345]","[0.02687500000001819, 0.026291000000128406, 0.02979200000027049]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3446670000002996,0.04841600000008839,"[1.3446670000002996, 4.869666999999936, 1.1443329999997331]","[0.051084000000173546, 0.04775000000017826, 0.04841600000008839]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.7211669999996957,0.03533400000014808,"[1.7282500000001164, 1.7211669999996957, 1.691957999999886]","[0.03500000000030923, 0.037250000000312866, 0.03533400000014808]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2174169999998412,0.029250000000047294,"[0.38475000000016735, 0.2174169999998412, 0.21070800000006784]","[0.028999999999996362, 0.029250000000047294, 0.030583999999635125]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.952291999999943,0.02349999999978536,"[6.952291999999943, 6.852917000000161, 8.674457999999959]","[0.02349999999978536, 0.02295800000001691, 0.02420799999981682]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4858329999997295,0.02179200000000492,"[0.6482080000000678, 0.4858329999997295, 0.4005409999999756]","[0.022375000000010914, 0.02179200000000492, 0.021750000000338332]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.42699999999967986,0.01779099999976097,"[0.4492079999999987, 0.42699999999967986, 0.4018750000000182]","[0.01866599999993923, 0.01779099999976097, 0.01749999999992724]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.2259170000002086,0.02820900000006077,"[0.8468330000000606, 1.2259170000002086, 1.6071249999999964]","[0.026542000000063126, 0.02858299999979863, 0.02820900000006077]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.3388330000002497,0.04650000000037835,"[1.4552499999999782, 1.3388330000002497, 1.2582910000000993]","[0.04516700000021956, 0.04650000000037835, 0.04658300000028248]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.6952500000002146,0.030125000000225555,"[1.6952500000002146, 1.6755419999999503, 1.7101250000000618]","[0.030249999999796273, 0.02999999999974534, 0.030125000000225555]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.20983400000022812,0.025292000000263215,"[0.3148750000000291, 0.20716700000002675, 0.20983400000022812]","[0.024999999999636202, 0.025667000000339613, 0.025292000000263215]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.253165999999965,0.15695899999991525,"[6.252875000000131, 7.303917000000183, 6.253165999999965]","[0.15833400000019537, 0.15641699999969205, 0.15695899999991525]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,28.28441699999985,0.021459000000049855,"[72.82716699999992, 27.782208000000082, 28.28441699999985]","[0.0213330000001406, 0.021459000000049855, 0.022000000000389264]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,26.774457999999868,4.22545799999989,"[24.225333999999748, 26.774457999999868, 28.82300000000032]","[4.3191249999999854, 4.095000000000255, 4.22545799999989]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,99.0488749999995,0.02916700000059791,"[99.0488749999995, 87.82850000000053, 105.18233400000008]","[0.02916700000059791, 0.0282919999999649, 0.029583000000457105]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,34.2567910000007,0.04841599999963364,"[30.381416000000172, 34.2567910000007, 35.58508299999994]","[0.04841599999963364, 0.046833000000333413, 0.05070799999975861]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,36.11608299999989,0.04287500000009459,"[36.11608299999989, 29.285916000000725, 39.676124999999956]","[0.035375000000385626, 0.04287500000009459, 0.042916999999761174]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,2.3780410000008487,0.028832999999394815,"[3.551042000000052, 2.3780410000008487, 2.2408750000004147]","[0.0301660000004631, 0.028166999999484688, 0.028832999999394815]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,65.81054200000017,0.023709000000053493,"[68.83245799999986, 65.81054200000017, 63.107208999999784]","[0.023709000000053493, 0.023500000000240107, 0.024083000000246102]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,26.232874999999694,0.02695799999855808,"[40.144874999999956, 26.232874999999694, 26.11804200000006]","[0.054874999999810825, 0.02695799999855808, 0.022916999998415122]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,28.824375000000146,0.016916000000492204,"[25.789999999999054, 32.500332999999955, 28.824375000000146]","[0.016916000000492204, 0.017207999999300228, 0.016332999999576714]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,99.88737500000025,0.03183300000091549,"[98.77108299999963, 99.88737500000025, 105.21399999999994]","[0.03045899999960966, 0.03879199999937555, 0.03183300000091549]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.10933399999885,0.05095900000014808,"[31.123915999998644, 32.10933399999885, 34.52970799999821]","[0.049665999998978805, 0.05095900000014808, 0.0520410000008269]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,30.102249999999913,0.026125000000320142,"[34.505708999999115, 30.102249999999913, 30.034499999999753]","[0.02808299999924202, 0.026125000000320142, 0.025875000001178705]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.252375000000029,0.025292000000263215,"[3.252375000000029, 6.702041999998983, 2.4032920000008744]","[0.02529099999992468, 0.025582999998732703, 0.025292000000263215]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,66.76525000000038,0.16254200000003038,"[106.34183299999859, 66.33179199999904, 66.76525000000038]","[0.16254200000003038, 0.162333000000217, 0.16366700000071432]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9269999999996799,0.021000000000640284,"[0.9269999999996799, 0.7842080000009446, 0.939249999999447]","[0.021000000000640284, 0.020207999999911408, 0.02125000000160071]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,0.8918749999993452,0.345500000001266,"[0.8918749999993452, 1.09375, 0.801499999999578]","[0.345500000001266, 0.3409589999992022, 0.40845900000022084]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.4081249999999272,0.027000000000043656,"[1.4081249999999272, 1.4138750000001892, 1.2567909999997937]","[0.027000000000043656, 0.027000000000043656, 0.026499999999941792]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.550374999998894,0.05008300000008603,"[1.4640410000010888, 1.7112919999999576, 1.550374999998894]","[0.05008300000008603, 0.04862499999944703, 0.05500000000029104]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.706416999999419,0.038291999999273685,"[2.1125410000004194, 6.588042000001224, 2.706416999999419]","[0.038291999999273685, 0.037916999999652035, 0.038875000000189175]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.2971659999984695,0.0328750000007858,"[0.34516699999949196, 0.2971659999984695, 0.28058299999975134]","[0.03600000000005821, 0.0328750000007858, 0.031667000001107226]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,62.85924999999952,0.02375000000029104,"[62.85924999999952, 67.28525000000081, 58.87962499999958]","[0.023499999999330612, 0.02404200000091805, 0.02375000000029104]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.8166249999994761,0.021291999999448308,"[0.8054170000013983, 0.8166249999994761, 1.1918340000011085]","[0.02104200000030687, 0.021291999999448308, 0.02320800000052259]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.7165000000004511,0.01787500000136788,"[0.7324170000010781, 0.7165000000004511, 0.7141670000000886]","[0.019249999999374268, 0.01787500000136788, 0.01770799999940209]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.485208000000057,0.028333000000202446,"[1.485208000000057, 1.5661250000011933, 1.405624999999418]","[0.027542000001631095, 0.02883299999848532, 0.028333000000202446]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.8564580000002024,0.058999999999286956,"[2.147500000000946, 2.8564580000002024, 6.7239580000004935]","[0.058999999999286956, 0.10512500000004366, 0.058832999999140156]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.0395410000000993,0.030791999999564723,"[2.0516659999993863, 2.0395410000000993, 1.8730829999985872]","[0.0310829999998532, 0.030791999999564723, 0.028874999999970896]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.3088750000024447,0.02604100000098697,"[0.30958299999838346, 0.3088750000024447, 0.2982090000004973]","[0.03445800000190502, 0.025417000000743428, 0.02604100000098697]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,63.637291999999434,0.16087500000139698,"[73.30774999999994, 63.637291999999434, 60.51420899999721]","[0.15112500000032014, 0.16087500000139698, 0.16279199999917182]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5422909999999774,0.04795899999999165,"[7.019457999999986, 1.5422909999999774, 0.9168750000000045]","[0.06820800000002691, 0.04795899999999165, 0.03312499999992724]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.5774169999999685,0.10358399999995527,"[0.7287910000000011, 0.5774169999999685, 0.4724580000000742]","[0.13591699999994944, 0.10358399999995527, 0.08729199999993398]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.9348329999999123,0.04145800000003419,"[5.982833999999912, 2.5005840000000035, 2.9348329999999123]","[0.055124999999975444, 0.04145800000003419, 0.038584000000014385]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.8547079999999596,0.07545900000002348,"[5.317833000000064, 1.8547079999999596, 1.4118330000000014]","[0.09258299999999053, 0.07545900000002348, 0.07120799999995597]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,4.96449999999993,0.05312500000002274,"[4.96449999999993, 5.277500000000032, 2.237292000000025]","[0.05870900000002166, 0.05312500000002274, 0.04479199999991579]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5534160000000838,0.04108300000007148,"[0.5534160000000838, 0.47545800000000327, 0.5939589999999271]","[0.04108300000007148, 0.03512500000010732, 0.04391600000008111]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.3738749999999982,0.03712499999994634,"[1.4862079999999196, 1.3738749999999982, 1.2398750000000973]","[0.03712499999994634, 0.03329099999996288, 0.039083000000005086]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.6330420000000458,0.02966700000001765,"[0.6330420000000458, 2.25324999999998, 0.5249170000000731]","[0.04120899999998073, 0.02954099999999471, 0.02966700000001765]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5068750000000364,0.02400000000000091,"[0.6517090000000962, 0.48587499999996453, 0.5068750000000364]","[0.02400000000000091, 0.02575000000001637, 0.022165999999970154]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.4399159999999256,0.033542000000011285,"[1.602624999999989, 1.362292000000025, 1.4399159999999256]","[0.03712499999994634, 0.033542000000011285, 0.030416999999943073]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.5653330000000096,0.06200000000001182,"[1.8200829999999542, 1.5653330000000096, 1.3817090000000007]","[0.06200000000001182, 0.05275000000006003, 0.06212500000003729]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,3.1960840000000417,0.04029199999990851,"[3.1960840000000417, 3.439624999999978, 3.079917000000023]","[0.04066600000010112, 0.04029199999990851, 0.038417000000208645]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4436249999998836,0.033666000000039276,"[0.4221669999999449, 0.4436249999998836, 0.46212500000001455]","[0.033666000000039276, 0.0336659999998119, 0.0345830000001115]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.1865000000000236,0.2319169999998394,"[1.1865000000000236, 1.2047079999999823, 1.140250000000151]","[0.23608400000011898, 0.21875, 0.2319169999998394]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,1.6170419999998558,0.0314579999999296,"[1.6170419999998558, 3.813957999999957, 0.7646660000000338]","[0.03325000000018008, 0.0314579999999296, 0.02945799999997689]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6826670000000377,0.1246249999999236,"[0.6826670000000377, 0.7273330000000442, 0.4453330000001188]","[0.12995900000009897, 0.09499999999979991, 0.1246249999999236]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.3549580000001242,0.035959000000048036,"[1.3642500000000837, 1.3549580000001242, 1.1908330000001115]","[0.03737500000011096, 0.03583299999991141, 0.035959000000048036]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.7329169999998157,0.06558300000006057,"[2.1952909999999974, 1.7329169999998157, 1.4867499999998017]","[0.07095800000001873, 0.06558300000006057, 0.06445800000005875]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.1144580000000133,0.048665999999911946,"[2.1144580000000133, 2.269207999999935, 1.761792000000014]","[0.048665999999911946, 0.04808400000001711, 0.05020799999988412]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.2940000000000964,0.038290999999844644,"[0.2940000000000964, 0.3019170000000031, 0.2725420000001577]","[0.04329099999995378, 0.038290999999844644, 0.035540999999966516]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1429169999998976,0.030167000000119515,"[1.0290840000000117, 1.1429169999998976, 3.2424590000000535]","[0.03045800000018062, 0.029167000000143162, 0.030167000000119515]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.40741700000012315,0.028916999999864856,"[0.45129099999985556, 0.40741700000012315, 0.38391599999999926]","[0.028999999999996362, 0.028916999999864856, 0.0262079999999969]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.4859169999999722,0.02458400000000438,"[0.4867500000000291, 0.4859169999999722, 0.39783399999987523]","[0.02504199999998491, 0.02458400000000438, 0.019833999999946172]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.9199160000000575,0.02970899999991161,"[1.0534170000000813, 0.9199160000000575, 0.9095420000001013]","[0.0286670000000413, 0.02970899999991161, 0.030250000000023647]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.3675000000000637,0.0544999999999618,"[1.399208999999928, 1.3675000000000637, 1.1519590000000335]","[0.0544999999999618, 0.05475000000001273, 0.04633400000011534]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.8333749999999327,0.02970799999980045,"[1.7404579999999896, 5.489708000000064, 1.8333749999999327]","[0.029167000000143162, 0.03674999999998363, 0.02970799999980045]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.3076249999999163,0.026957999999922322,"[0.25833299999999326, 0.3076249999999163, 0.3160000000000309]","[0.026957999999922322, 0.030167000000119515, 0.025874999999814463]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.9558340000000953,0.1848339999999098,"[0.9558340000000953, 0.7612910000000284, 0.976207999999815]","[0.20079200000009223, 0.18012500000008913, 0.1848339999999098]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.39058399999999,0.02204200000005585,"[2.623542000000043, 4.846749999999929, 3.39058399999999]","[0.019665999999915584, 0.02204200000005585, 0.02620899999988069]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.859375,0.4612090000000535,"[2.6590839999998934, 2.9102920000000267, 2.859375]","[0.4904579999999896, 0.4612090000000535, 0.44804100000010294]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,11.543499999999767,0.03300000000035652,"[11.543499999999767, 12.79358400000001, 10.818582999999762]","[0.034166999999797554, 0.02979200000027049, 0.03300000000035652]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.8336249999997563,0.05804200000011406,"[3.6626250000003893, 3.8336249999997563, 4.012083000000075]","[0.05695799999966766, 0.06037500000002183, 0.05804200000011406]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.260792000000038,0.03687500000023647,"[8.50220900000022, 4.681958000000122, 5.260792000000038]","[0.03687500000023647, 0.06633300000021336, 0.03445899999996982]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6912499999998545,0.03179199999976845,"[0.6912499999998545, 0.7299170000001141, 0.6294590000002245]","[0.03233300000010786, 0.03179199999976845, 0.029290999999830092]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.222458000000188,0.02437499999996362,"[7.40383299999985, 7.0982090000002245, 7.222458000000188]","[0.028416000000106578, 0.02437499999996362, 0.02437499999996362]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.8296250000003056,0.023875000000316504,"[3.054916999999932, 2.8296250000003056, 2.369499999999789]","[0.02679199999965931, 0.023875000000316504, 0.021749999999883585]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.6068749999999454,0.017124999999850843,"[2.6068749999999454, 7.326249999999618, 2.556333999999879]","[0.017124999999850843, 0.01650000000017826, 0.019874999999956344]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,10.141875000000255,0.030790999999680935,"[10.333333000000039, 8.285542000000078, 10.141875000000255]","[0.030790999999680935, 0.03641699999980119, 0.0282919999999649]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,5.328665999999885,0.05670899999995527,"[5.328665999999885, 8.567417000000205, 5.279875000000175]","[0.05670899999995527, 0.052083999999922526, 0.061666000000059285]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,5.347917000000052,0.036291999999775726,"[5.900083999999879, 4.571292000000085, 5.347917000000052]","[0.03716699999995399, 0.03616700000020501, 0.036291999999775726]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.7923749999999927,0.027625000000170985,"[4.494167000000289, 0.5749999999998181, 0.7923749999999927]","[0.027625000000170985, 0.025500000000192813, 0.03195800000003146]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,7.811791000000085,0.1947920000002341,"[7.811791000000085, 10.947500000000218, 7.434625000000324]","[0.20424999999977445, 0.18520800000032978, 0.1947920000002341]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.44849999999996726,0.02233299999988958,"[0.696875000000091, 0.44849999999996726, 0.44795799999974406]","[0.02233299999988958, 0.02304199999980483, 0.021708000000216998]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4286250000000109,0.09083399999963149,"[0.4286250000000109, 0.4139170000003105, 0.4967910000000302]","[0.09891700000025594, 0.09045800000012605, 0.09083399999963149]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9157500000001164,0.02641700000003766,"[0.9996670000000449, 0.9157500000001164, 0.9122910000000957]","[0.027458000000024185, 0.02641700000003766, 0.02545800000007148]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.5414580000001479,0.04929200000015044,"[1.2579170000003614, 1.5414580000001479, 4.885792000000038]","[0.04912500000000364, 0.04991599999993923, 0.04929200000015044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.871625000000222,0.036207999999987805,"[1.871625000000222, 2.133166000000074, 1.70049999999992]","[0.036207999999987805, 0.035292000000026746, 0.036375000000134605]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23800000000028376,0.02908400000023903,"[0.24116700000013225, 0.2371250000001055, 0.23800000000028376]","[0.029583000000002357, 0.02908400000023903, 0.028541000000132044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,9.034708000000137,0.023333999999977095,"[10.201250000000073, 8.769874999999956, 9.034708000000137]","[0.023374999999759893, 0.022291999999652035, 0.023333999999977095]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5265000000003965,0.022542000000157714,"[0.42791699999997945, 0.6268329999998059, 0.5265000000003965]","[0.022457999999915046, 0.022542000000157714, 0.023417000000335975]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.6854589999998097,0.01974999999993088,"[0.6945409999998446, 0.4412080000001879, 0.6854589999998097]","[0.01974999999993088, 0.018708000000060565, 0.019834000000173546]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.103458000000046,0.029042000000117696,"[1.103458000000046, 1.0183329999999842, 1.2177910000000338]","[0.029042000000117696, 0.028416999999990367, 0.038374999999632564]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.5117079999999987,0.047374999999647116,"[1.5117079999999987, 1.2567909999997937, 1.5515419999996993]","[0.047374999999647116, 0.04645799999980227, 0.05670899999995527]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.120249999999942,0.03175000000010186,"[2.012832999999773, 2.183209000000261, 2.120249999999942]","[0.03170799999998053, 0.03175000000010186, 0.03279100000008839]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.27854200000001583,0.028249999999843567,"[0.2758750000002692, 0.27854200000001583, 0.35350000000016735]","[0.028249999999843567, 0.03225000000020373, 0.027791999999863037]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,8.088999999999942,0.19012500000008004,"[9.316209000000072, 8.088999999999942, 7.026208000000224]","[0.19145900000012261, 0.1812910000003285, 0.19012500000008004]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,33.07875000000058,0.02916700000059791,"[42.767249999999876, 33.07875000000058, 31.42674999999963]","[0.029666000000361237, 0.02916700000059791, 0.023791999999957625]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,33.32012500000019,5.407125000000633,"[33.32012500000019, 41.19837499999994, 30.584749999999985]","[5.407125000000633, 5.45470800000021, 4.67870800000037]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,110.33737500000007,0.030666999999994005,"[110.33737500000007, 106.26508300000023, 125.6349169999994]","[0.03720900000007532, 0.030666999999994005, 0.02991699999984121]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,38.04541599999993,0.05270899999959511,"[43.24687499999982, 37.244666999999936, 38.04541599999993]","[0.05120900000019901, 0.06199999999989814, 0.05270899999959511]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,41.277665999999954,0.04254100000071048,"[34.12587500000154, 44.11937500000022, 41.277665999999954]","[0.04254100000071048, 0.04591699999946286, 0.03816700000061246]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.481792000000496,0.03320799999892188,"[4.512749999999869, 3.481792000000496, 2.7888330000005226]","[0.035875000001396984, 0.03320799999892188, 0.031791000001248904]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,85.55687500000022,0.02758400000129768,"[85.55687500000022, 93.15350000000035, 70.22054199999911]","[0.02479200000016135, 0.02758400000129768, 0.029666999998880783]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,34.411957999998776,0.02520899999944959,"[34.79312499999833, 34.411957999998776, 26.065624999999272]","[0.027541999999812106, 0.02520899999944959, 0.02275000000008731]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,26.11395900000025,0.017249999998966814,"[25.214208999999755, 26.11395900000025, 32.55570799999987]","[0.01654200000120909, 0.017249999998966814, 0.017749999999068677]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,110.47316599999976,0.03579200000058336,"[110.47316599999976, 125.38516700000037, 109.32775000000038]","[0.03166699999928824, 0.03879199999937555, 0.03579200000058336]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,37.779458000000886,0.0647079999998823,"[34.400290999999925, 37.779458000000886, 40.832540999999765]","[0.0540419999997539, 0.06612500000119326, 0.0647079999998823]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,41.72241699999904,0.031166999999186373,"[109.0418750000008, 36.521749999999884, 41.72241699999904]","[0.031166999999186373, 0.030957999999372987, 0.033999999999650754]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.9486660000002303,0.03120899999885296,"[2.9486660000002303, 2.4476660000000265, 3.6760839999988093]","[0.03120899999885296, 0.051708000000871834, 0.027374999999665306]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,78.94058399999994,0.20570799999950395,"[84.93924999999945, 78.94058399999994, 76.07504100000006]","[0.18499999999949068, 0.20570799999950395, 0.2061249999987922]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9064159999998083,0.02029200000106357,"[0.9064159999998083, 0.729457999999795, 1.553875000001426]","[0.02029200000106357, 0.019874999999956344, 0.03612500000053842]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.018792000000758,0.47566700000061246,"[1.018792000000758, 0.8673330000001442, 1.1205840000002354]","[0.516208999999435, 0.41433300000062445, 0.47566700000061246]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.012333000000581,0.04458300000078452,"[2.6537920000009763, 2.012333000000581, 1.5971250000002328]","[0.0555000000003929, 0.04458300000078452, 0.03591700000106357]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,2.1954590000004828,0.08558399999856192,"[2.1954590000004828, 3.2372079999986454, 2.134750000001077]","[0.08558399999856192, 0.12591600000087055, 0.07983299999978044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.950166000000536,0.05158399999891117,"[2.950166000000536, 2.406750000000102, 3.0508329999993293]","[0.06783299999915471, 0.05158399999891117, 0.045499999998355634]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.42654200000106357,0.03862500000104774,"[0.42654200000106357, 0.4214170000013837, 0.7119170000005397]","[0.03862500000104774, 0.037166999998589745, 0.04679200000100536]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,77.71420800000124,0.027375000001484295,"[92.06066600000122, 77.71420800000124, 75.4162499999984]","[0.027375000001484295, 0.0328750000007858, 0.024917000002460554]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.9677919999994629,0.025625000002037268,"[0.9677919999994629, 0.7877919999991718, 11.199749999999767]","[0.025499999999738066, 0.02679100000023027, 0.025625000002037268]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,1.041916999998648,0.02166600000055041,"[1.3040839999994205, 1.041916999998648, 0.9912919999987935]","[0.021375000000261934, 0.02166600000055041, 0.022500000002764864]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,2.170916999999463,0.0384169999997539,"[1.7232089999997697, 2.170916999999463, 2.2698750000017753]","[0.0384169999997539, 0.04233300000123563, 0.03679099999862956]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.436291000001802,0.07504100000005565,"[2.4444580000017595, 2.436291000001802, 1.685124999999971]","[0.08204199999818229, 0.07504100000005565, 0.0727500000029977]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.0354580000021087,0.04529199999888078,"[2.7467500000020664, 3.0354580000021087, 3.7460839999985183]","[0.035500000001775334, 0.0498749999969732, 0.04529199999888078]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.46329100000002654,0.038499999998748535,"[0.4377090000016324, 0.5460830000010901, 0.46329100000002654]","[0.04016599999886239, 0.0331659999974363, 0.038499999998748535]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,77.257708000001,0.1781249999985448,"[77.257708000001, 76.3961249999993, 94.35529200000019]","[0.17212500000096043, 0.1781249999985448, 0.2510000000002037]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5344159999999647,0.043541000000004715,"[6.563333, 1.5344159999999647, 0.8222079999999892]","[0.05062500000002501, 0.043541000000004715, 0.03358300000002146]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6504590000000121,0.09804199999996399,"[0.6504590000000121, 0.7806659999999965, 0.5115410000000224]","[0.11595900000003212, 0.09804199999996399, 0.07154100000002472]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.8634999999999877,0.04337499999996908,"[8.225250000000017, 2.8634999999999877, 2.0628750000000196]","[0.05358300000000327, 0.04337499999996908, 0.03866699999997536]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.6306670000000167,0.07008299999995415,"[5.6329580000000306, 2.6306670000000167, 2.118333000000007]","[0.11508300000002691, 0.07008299999995415, 0.060875000000010004]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.93425000000002,0.054625000000100954,"[4.008750000000077, 3.011792000000014, 3.93425000000002]","[0.06137499999999818, 0.054625000000100954, 0.04733299999998053]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5240000000000009,0.043457999999986896,"[0.8331249999999955, 0.5060419999999795, 0.5240000000000009]","[0.043457999999986896, 0.04466700000000401, 0.03554199999996399]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.2246659999999565,0.038708000000042375,"[1.331833999999958, 1.2246659999999565, 1.094665999999961]","[0.038708000000042375, 0.03545900000005986, 0.04279199999996308]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5836249999999836,0.02904200000000401,"[0.5836249999999836, 0.4933330000000069, 0.6701669999999922]","[0.032083999999940715, 0.02612499999997908, 0.02904200000000401]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5704170000000204,0.01783299999999599,"[0.5704170000000204, 2.4076670000000604, 0.5225829999999405]","[0.023416999999994914, 0.01691599999992377, 0.01783299999999599]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.459333000000015,0.030167000000005828,"[1.459333000000015, 1.6622500000000855, 1.380708000000027]","[0.030167000000005828, 0.03666600000008202, 0.02874999999994543]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.7483330000000024,0.058625000000006366,"[1.7483330000000024, 1.8982079999999542, 1.4034169999999904]","[0.058625000000006366, 0.05029100000001563, 0.0650829999999587]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.328166999999894,0.02949999999998454,"[2.4617079999999305, 2.328166999999894, 2.1100000000000136]","[0.032166999999958534, 0.02949999999998454, 0.028791999999953077]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4054169999999431,0.026292000000012195,"[0.5019170000000486, 0.2963750000000118, 0.4054169999999431]","[0.027375000000006366, 0.024916999999959444, 0.026292000000012195]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.0157090000000153,0.1825420000000122,"[1.0812499999999545, 1.0157090000000153, 0.9902080000000524]","[0.1825420000000122, 0.1811249999999518, 0.20991699999990487]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.786209000000099,0.023750000000063665,"[6.189916000000039, 0.786209000000099, 0.5050000000001091]","[0.02566700000011224, 0.023750000000063665, 0.02108300000008967]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6037499999999909,0.10279100000002472,"[0.6833750000000691, 0.6037499999999909, 0.49854199999981574]","[0.13587500000016917, 0.10279100000002472, 0.09179100000005747]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.2402090000000499,0.037084000000049855,"[1.5882910000000265, 1.2332910000000084, 1.2402090000000499]","[0.037084000000049855, 0.03779100000019753, 0.03650000000016007]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.4418339999999716,0.06804200000010496,"[1.6318750000000364, 1.333750000000009, 1.4418339999999716]","[0.0778339999999389, 0.06804200000010496, 0.06720799999993687]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.4227079999998296,0.04712500000005093,"[3.9609159999999974, 2.4227079999998296, 2.02866599999993]","[0.03883300000006784, 0.04970800000000963, 0.04712500000005093]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.30729199999996126,0.03816699999993034,"[0.30729199999996126, 0.33333300000003874, 0.26233300000012605]","[0.03816699999993034, 0.03995800000006966, 0.035750000000007276]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1454590000000735,0.03125,"[1.1784170000000813, 0.8328329999999369, 1.1454590000000735]","[0.03125, 0.031292000000121334, 0.030625000000100044]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.44662500000004,0.029082999999900494,"[0.3642499999998563, 0.519083000000137, 0.44662500000004]","[0.02391699999998309, 0.03154099999983373, 0.029082999999900494]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.48441699999989396,0.022874999999885404,"[0.48233300000015333, 0.5694999999998345, 0.48441699999989396]","[0.025417000000061307, 0.01912499999980355, 0.022874999999885404]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,1.0217090000001008,0.030666000000110216,"[3.759416999999985, 0.9066669999999704, 1.0217090000001008]","[0.030666000000110216, 0.030250000000023647, 0.03099999999994907]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2948750000000473,0.04866700000002311,"[1.5880419999998594, 1.2948750000000473, 1.1407500000000255]","[0.047708999999940715, 0.04866700000002311, 0.05070900000009715]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2.3149579999999332,0.04083300000002055,"[1.5907499999998436, 2.4610000000000127, 2.3149579999999332]","[0.03258299999993142, 0.04112499999996544, 0.04083300000002055]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.2890829999998914,0.03274999999985084,"[0.2890829999998914, 0.2777080000000751, 0.5974170000001777]","[0.030625000000100044, 0.03274999999985084, 0.035290999999915584]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,1.329584000000068,0.2423750000000382,"[1.329584000000068, 1.0712499999999636, 1.338707999999997]","[0.21820800000000418, 0.2423750000000382, 0.26358300000015333]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.4017079999998714,0.027250000000094587,"[4.838833000000022, 3.4017079999998714, 3.3654579999999896]","[0.028416999999990367, 0.027250000000094587, 0.026499999999941792]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.9527499999999236,0.5208749999999327,"[9.157457999999906, 2.667666000000054, 2.9527499999999236]","[0.5361250000000837, 0.5107090000001335, 0.5208749999999327]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,9.285041999999976,0.02616699999998673,"[9.165749999999662, 9.285041999999976, 10.246167000000241]","[0.02562499999976353, 0.02616699999998673, 0.03366699999969569]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,4.8744580000002316,0.06816699999990306,"[3.63470899999993, 8.540084000000206, 4.8744580000002316]","[0.05412500000011278, 0.06845900000007532, 0.06816699999990306]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.238708000000315,0.043791999999939435,"[5.051292000000103, 5.585750000000189, 5.238708000000315]","[0.043791999999939435, 0.04891600000019025, 0.03837500000008731]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6033750000001419,0.03712499999983265,"[0.5664160000001175, 0.7549589999998716, 0.6033750000001419]","[0.03812500000003638, 0.03195800000003146, 0.03712499999983265]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.169374999999945,0.025166999999783002,"[8.512500000000273, 7.169374999999945, 6.990542000000005]","[0.025166999999783002, 0.028999999999996362, 0.02337500000021464]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.5609589999999116,0.022166000000197528,"[2.5609589999999116, 3.1698750000000473, 2.491291000000274]","[0.021208000000115135, 0.02874999999994543, 0.022166000000197528]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.258332999999766,0.015665999999782798,"[6.5900000000001455, 2.258332999999766, 2.144665999999688]","[0.015374999999949068, 0.015665999999782798, 0.016750000000229193]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,12.77041700000018,0.028957999999875028,"[12.77041700000018, 10.08645800000022, 23.346291000000292]","[0.03220800000008239, 0.028583000000253378, 0.028957999999875028]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,4.0562919999997575,0.04912500000000364,"[4.0562919999997575, 3.6531660000000556, 4.206750000000284]","[0.058624999999665306, 0.04912500000000364, 0.04758300000003146]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.2154169999998885,0.028832999999849562,"[4.2154169999998885, 4.185125000000426, 4.5479999999997744]","[0.0283329999997477, 0.029584000000340893, 0.028832999999849562]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.5291669999996884,0.023500000000240107,"[0.5006250000001273, 0.5291669999996884, 0.64712499999996]","[0.025125000000116415, 0.02349999999978536, 0.023500000000240107]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,6.066458000000239,0.16404199999988123,"[10.254500000000007, 6.066458000000239, 5.62441600000011]","[0.1659999999997126, 0.16404199999988123, 0.15299999999979264]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4059589999997115,0.020542000000205007,"[0.6055409999999029, 0.3978750000001128, 0.4059589999997115]","[0.02145799999971132, 0.020542000000205007, 0.02045799999996234]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.39966599999979735,0.08550000000013824,"[0.44587500000034197, 0.39966599999979735, 0.37541600000031394]","[0.09300000000030195, 0.08550000000013824, 0.08333399999992253]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9258749999999054,0.024957999999969616,"[0.9258749999999054, 0.9443750000000364, 0.8483750000000327]","[0.024957999999969616, 0.02858399999968242, 0.024791000000277563]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.302708999999595,0.05208300000003874,"[1.3086659999999029, 1.1549589999999625, 1.302708999999595]","[0.05254100000001927, 0.05195800000001327, 0.05208300000003874]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2.6095000000000255,0.058250000000043656,"[3.4216660000001866, 2.5326669999999467, 2.6095000000000255]","[0.07491699999991397, 0.058250000000043656, 0.05345800000031886]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2756250000002183,0.038875000000189175,"[0.43229199999996126, 0.2756250000002183, 0.27224999999998545]","[0.0470420000001468, 0.038875000000189175, 0.035459000000173546]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,7.370457999999871,0.029250000000047294,"[7.370457999999871, 7.404416999999739, 6.678792000000158]","[0.032541999999921245, 0.029250000000047294, 0.0281249999998181]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5701670000003105,0.02766699999983757,"[0.7561670000000049, 0.5701670000003105, 0.5289170000000922]","[0.03016699999989214, 0.02766699999983757, 0.027124999999614374]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.669582999999875,0.024209000000155356,"[0.47787500000004, 0.7147920000002159, 0.669582999999875]","[0.024209000000155356, 0.02329199999985576, 0.024334000000180822]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.148916999999983,0.03433299999960582,"[1.6542500000000473, 1.139875000000302, 1.148916999999983]","[0.034874999999829015, 0.03433299999960582, 0.032625000000280124]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.4984159999999065,0.05804200000011406,"[1.4984159999999065, 1.6113329999998314, 1.3976250000000618]","[0.06091599999990649, 0.05470900000000256, 0.05804200000011406]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.355040999999801,0.035667000000103144,"[3.209415999999692, 2.355040999999801, 2.063499999999749]","[0.035667000000103144, 0.038250000000061846, 0.03479199999992488]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.257959000000028,0.029834000000391825,"[0.2982919999999467, 0.24258300000019517, 0.257959000000028]","[0.029834000000391825, 0.029250000000047294, 0.031292000000121334]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.990542000000005,0.18495800000027884,"[11.674666999999772, 6.990542000000005, 6.425915999999688]","[0.18866699999989578, 0.16758299999992232, 0.18495800000027884]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,41.054167000000234,0.0281249999998181,"[47.181000000000495, 29.789416999999958, 41.054167000000234]","[0.031167000000095868, 0.023624999999810825, 0.0281249999998181]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,34.41470799999934,5.100749999999607,"[31.10608300000058, 34.41470799999934, 96.21075000000019]","[5.298125000000255, 4.809624999999869, 5.100749999999607]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,118.74591700000019,0.030457999999271124,"[118.74591700000019, 119.2065419999999, 103.6192089999995]","[0.03879099999994651, 0.030457999999271124, 0.02979200000027049]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,39.71058300000004,0.06750000000010914,"[42.114582999999584, 39.71058300000004, 35.71050000000014]","[0.06812499999978172, 0.06750000000010914, 0.059500000000298314]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,51.09108300000116,0.04637499999989814,"[40.201082999999926, 52.628584000000046, 51.09108300000116]","[0.0364160000008269, 0.046833000000333413, 0.04637499999989814]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.4574999999986176,0.034582999998747255,"[3.4574999999986176, 4.334666999999172, 2.6714169999995647]","[0.034582999998747255, 0.038708000000042375, 0.029875000000174623]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,76.0720420000016,0.0235419999989972,"[76.0720420000016, 66.99337500000001, 83.81079200000022]","[0.02312499999970896, 0.0235419999989972, 0.0244170000005397]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,44.62579199999891,0.026583999999274965,"[103.45820800000001, 44.62579199999891, 32.26775000000089]","[0.04050000000097498, 0.026583999999274965, 0.02562500000021828]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,33.4434999999994,0.018957999998747255,"[31.11974999999984, 38.46404100000109, 33.4434999999994]","[0.018957999998747255, 0.01937499999985448, 0.01808300000084273]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.66029200000048,0.03299999999944703,"[105.66029200000048, 103.23208299999897, 136.3638749999991]","[0.03299999999944703, 0.03162499999962165, 0.034333999999944353]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,36.48520800000006,0.05779200000142737,"[36.08812500000022, 36.48520800000006, 40.66387500000019]","[0.05779200000142737, 0.07262500000069849, 0.05724999999983993]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,36.47808399999849,0.031500000000960426,"[36.3310419999998, 36.47808399999849, 44.08587500000067]","[0.029875000000174623, 0.031500000000960426, 0.03745800000069721]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.4306670000005397,0.028874999999970896,"[3.914291000000958, 3.4306670000005397, 3.298292000001311]","[0.028874999999970896, 0.02900000000045111, 0.027749999999286956]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,82.89329200000066,0.17508300000008603,"[141.479292, 82.89329200000066, 79.61354100000062]","[0.1711250000007567, 0.17508300000008603, 0.20025000000168802]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,1.0167079999991984,0.02191599999969185,"[1.2470000000012078, 0.874707999999373, 1.0167079999991984]","[0.027792000000772532, 0.020583999999871594, 0.02191599999969185]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.0299579999991693,0.4234169999999722,"[0.8125829999989946, 1.5661659999987023, 1.0299579999991693]","[0.40437500000007276, 0.4648329999999987, 0.4234169999999722]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.3317500000011933,0.0467079999998532,"[1.7770409999993717, 2.3317500000011933, 2.441957999999431]","[0.06099999999969441, 0.0467079999998532, 0.045041999999739346]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.8403330000001006,0.06474999999954889,"[2.27758299999914, 1.8403330000001006, 1.6624579999988782]","[0.0787079999990965, 0.06474999999954889, 0.059750000000349246]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.6857920000002196,0.04683400000067195,"[3.6303329999991547, 2.6857920000002196, 2.467333000000508]","[0.08612499999981083, 0.04683400000067195, 0.04637499999989814]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.5100409999995463,0.0382499999996071,"[0.6345839999994496, 0.5100409999995463, 0.3733329999995476]","[0.03795899999931862, 0.0382499999996071, 0.039999999999054126]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,88.93804199999795,0.027290999998513144,"[83.76887499999793, 88.93804199999795, 115.31616599999688]","[0.025417000000743428, 0.030542000000423286, 0.027290999998513144]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.0368750000016007,0.028041000001394423,"[1.478917000000365, 1.0368750000016007, 0.9763329999987036]","[0.028041000001394423, 0.029625000002852175, 0.026125000000320142]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.9066249999996217,0.02354100000229664,"[0.7760000000016589, 1.1929170000003069, 0.9066249999996217]","[0.02354100000229664, 0.02479200000016135, 0.02275000000008731]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.796542000000045,0.03250000000116415,"[13.777709000001778, 1.796542000000045, 1.3725000000013097]","[0.033082999998441665, 0.03250000000116415, 0.030749999998079147]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.830416000000696,0.06424999999944703,"[1.7672920000004524, 2.175250000000233, 1.830416000000696]","[0.06341700000120909, 0.06424999999944703, 0.0932909999974072]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.067749999998341,0.03620900000169058,"[3.4395409999997355, 2.690374999998312, 3.067749999998341]","[0.039291000000957865, 0.03533400000014808, 0.03620900000169058]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.4852500000015425,0.03187500000058208,"[0.37700000000040745, 0.5528340000018943, 0.4852500000015425]","[0.03183299999727751, 0.032332999999198364, 0.03187500000058208]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,89.42433299999902,0.16837500000110595,"[91.1384999999973, 71.79000000000087, 89.42433299999902]","[0.16837500000110595, 0.16704099999697064, 0.18462500000168802]" From 1498a8101934558a3ce3832b9854a800f9cc0c81 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 13:39:34 -0700 Subject: [PATCH 5/9] Reduce shipped query code and preserve joined occurrences Make the internal facade resolver explicit so unused generic copying can leave public bundles. Simplify resolver caching, descriptor copying and rollback without weakening existing publication or payload-work comparisons. Law: approved joined pair identity preserves multiplicity and source non-key attribution; cleanup preserves array prototypes and descriptors. Reach: 4,608 joined receiving states; 192 finite plus 160 campaign histories, six cuts and four receivers. Copy owner reaches 24 structural states. RED: join/metadata owners reject 219/1,914 before pair-key amendment; copy owner rejects six derived/null prototype cells before the shell repair. GREEN: join/metadata 1,914/1,914; DB shard 16,367; affected runtime 7,802; native types 33 plus 85 supplemental; source/test tsc and minified API pass. Mutant: routed and published source-key preference each fail 130/200 join checks; direct seed -540621864 path 0:0:0:0:0 fails and restored source passes. Ordinary-array shells fail eight copy states. Limits: bounded eager core sources, two joined sources and resolver-return copy observations; no provider/framework or universal latency claim. Full public bundle shrinks 155 minified JS bytes; all ESM JS shrinks 1,667. Includes fixture still adds 479 JS / 73 gzip bytes. Final local benchmark passes unchanged gates at 0.91x writes / 0.80x cold versus predecessor control. Keep all seven observations and source bindings. See the versioned high-review record for chronology, full commands, retired expectations and the separate NaN optimistic-admission witness outside this repair. --- docs/contributing/oracle-coverage.md | 74 +- .../2026-11-05-boundary-only-high-review.md | 323 +++++- ...2026-11-05-boundary-only-high-sources.json | 230 +++++ docs/guides/live-queries.md | 4 +- packages/db/mangle-cache.json | 11 +- packages/db/package.json | 2 +- packages/db/src/query/builder/functions.ts | 231 +---- packages/db/src/query/compiler/index.ts | 12 +- .../db/src/query/compiler/route-metadata.ts | 44 +- packages/db/src/query/live/ARCHITECTURE.md | 15 +- .../src/query/live/bucket-facade-adapter.ts | 165 ++-- .../query/live/collection-config-builder.ts | 2 +- .../src/query/live/materialized-pipeline.ts | 12 +- packages/db/tests/facade-retention.probe.ts | 6 +- packages/db/tests/oracle-config.ts | 2 + .../tests/query/bucket-facade-adapter.test.ts | 11 +- .../query/bucket-facade-rollback-support.ts | 6 +- .../query/bucket-facade-rollback.test.ts | 6 +- .../compiler/group-by-pipeline-oracle.test.ts | 239 +++++ .../query/compiler/group-by-pipeline.test.ts | 256 +---- .../join-result-key-oracle.property.test.ts | 513 +++++++++- .../public-container-copy-oracle.test.ts | 228 +++++ .../query/virtual-row-fields-oracle.test.ts | 26 +- .../db/tests/query/virtual-row-fields.test.ts | 34 +- scripts/bench/README.md | 19 +- scripts/bench/high-review-2026-11-05.csv | 926 +++++++++++------- 26 files changed, 2467 insertions(+), 930 deletions(-) create mode 100644 packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts create mode 100644 packages/db/tests/query/public-container-copy-oracle.test.ts diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index 5484d81926..dc3a52a298 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -572,7 +572,7 @@ that test identifiers must copy production's private data structures. | Indexed predicate filtering | Complete for bounded dotted-path collision | An independent row filter checks direct predicates and public callback predicates for a dotted scalar field beside a nested path, with and without an index. Selected-field ordering checks the same distinction through `$selected`. | | WHERE predicate publication | Complete for bounded predicate and sync-transaction grammar | The contract, Kleene reference evaluator, snapshot and change-history grammar, three subscriber consumers plus direct snapshot, and per-commit key-set refinement check are literate. A fixed same-key update checks live-row and direct-subscriber payloads; a focused descriptor boundary checks stored-row prefilter safety. Generated cleanup and restart histories for filtered subscribers remain open. | -| Joined result keys | Complete for bounded two-source key grammar | The contract, nested-loop pair model, delimiter-, number-like, infinite, and `NaN` key grammar, public join driver, and per-checkpoint pair and key-count check are literate. Joins over subqueries, more than two sources, custom `getKey`, and optimistic mutations remain outside this owner. | +| Joined result keys | Complete for bounded two-source key and whole-source receiving grammars | The nested-loop pair model retains delimiter-, typed, infinite and `NaN` keys. The November 5 extension crosses whole-source selection and spreads, direct/QueryRef receivers, all four join kinds, either selected side and authored collisions. Each of 192 finite histories and fixed/random 80-history campaigns compares root Collections, include facades, toArray and materialize at six cuts. Published `$key` equals the actual default pair or explicit custom key; the other three fields retain source attribution. Inline authored fields and multiplicity remain unchanged. Value-only updates and rejoining preserve key sets. The 4,608 declared receiving states must each reach once. More than two sources, arbitrary nested projection/QueryRef depth, custom-key functions outside the generated key grammar, arbitrary optimistic overlap, frameworks and real providers remain outside this owner. | | Grouped result keys | [Grouped result key oracle](https://github.com/TanStack/db/blob/main/packages/db/tests/query/group-result-key-oracle.property.test.ts) | A grouped live-query Collection gives each group one key of the Collection key type, a string or a number, whatever the group value. Maintainer decision (2026-10-27): grouped keys match the declared key type rather than widening it to nullish keys. Group values come from strings, numbers, `NaN`, `null`, `undefined`, booleans, a bigint, strings that print like those values, and strings in the reserved `\u0000tanstack-db:` namespace; histories move, delete, and insert rows. After preload and each synced change, the (group value, count) pairs equal an independent partition by type and value, every key is a string or number, no two groups share a key, and a group that survives a change keeps its key. Reach (minimum 5, per campaign of 80): a nullish group published (32 to 38), a group value published beside a string that prints like it (18 to 21), and a key kept across a change (49 to 53). RED on the parent commit: keys `undefined`, `null`, `false`, and `10n`. Mutants that encode with `String(value)` (lookalike keys collide) or that encode only nullish values (boolean keys) fail. Encoding only the internal D2 key is equivalent in this domain, because the Collection keys rows by the public group key. A focused witness in `collection.test.ts` checks that `sync.write` rejects `undefined`, `null`, boolean, and bigint keys before staging them, and that a later valid write commits alone. A sync adapter that writes such a key breaks its contract, so this is a fail-fast invariant witness under AGENTS.md ("Separate Valid Edge Cases from Contract Contradictions"), not a generated owner; SortedMap never receives these keys. Not covered: Dates, `-0`, objects, and multi-field groups, whose values the aggregate select oracle owns; real sync adapters, since the source is a controlled mock. | | D2 Index storage | Complete for bounded prefix grammar | The contract, plain-`Map` multiset model, prefixed and unprefixed value grammar, `Index` driver, and per-addition `get`/`has` check are literate. Compaction, presence tracking, and structural payloads remain outside this owner. | | Pooled live queries | Complete for bounded eq-filter grammar | The contract, independent `eq` model, live-query Collection second formulation, sync/optimistic/mount/cleanup-restart grammar, observer driver, and per-step refinement check are literate. On-demand and persisted sources, `DbClient`, Suspense, and every clause beyond `eq` conjuncts keep the live-query Collection. | @@ -760,6 +760,26 @@ RIGHT joins, facade projection metadata and inline values live in nested projection histories beyond these two QueryRef levels, every join kind under source changes, framework receiving paths or provider behavior. +The whole-source receiving grammar keeps `NaN` source keys on sync paths +but does not target them with ordinary optimistic updates. A setup probe with +left keys `[NaN, "b]", "a"]`, right keys `["a", 1, NaN]`, two matching +rows per side, and `left.update(NaN, row => { row.label = "held" })` throws +`KeyUpdateNotAllowedError` although its key did not change: mutation admission +compares keys with `!==`. This separate Collection mutation-admission gap +belongs to the **Collection lifecycle / mutation startup** entry +(`packages/db/tests/collection-mutation-startup.test.ts`; fixed tests with no +independent admission oracle, tracked in #2264). It needs a SameValueZero key +witness across unchanged-key optimistic updates. The failure occurs during +admission before the joined update checkpoint, outside this repair claim. + +The November 5 pair-identity decision separates joined `$key` from source +attribution. The selected source retains `$origin`, `$hasPendingWrites` and +`$collectionId`; the result owns its actual pair or explicit custom key. The +join-result-key owner now checks fanout, source attribution and authored inline +values together through root, QueryRef and materialized receivers. This owner +retains its custom-key, nullable facade and source-spread controls under that +approved rule. Inline `$key` remains authored. + The prep review adds 102 histories for implicit single-source/joined output and functional direct-source returns after inherited inline materialization. Direct/QueryRef receivers, each source's held write, every authored collision, @@ -4272,6 +4292,17 @@ boundary. Track the generalized repairs here instead of accumulating isolated regressions. Completion requires an executable owner, a production-path witness, a hostile wrong-answer control, and an explicit statement of remaining limits. +- [ ] **Unchanged `NaN` keys at optimistic mutation admission.** With an eager + Collection keyed by `row.id`, preload a row whose `id` is `NaN`, then + call `update(NaN, row => { row.label = "held" })`. Admission throws + `KeyUpdateNotAllowedError` because it compares the unchanged keys with + `!==`. The November 5 joined-source grammar found the witness before its + joined update checkpoint and retains `NaN` sync-key coverage separately. + Owner: Collection lifecycle / mutation startup + (`packages/db/tests/collection-mutation-startup.test.ts`; no independent + admission oracle, tracked in #2264). Needed witness: unchanged-key + mutation admission across numeric/string keys and SameValueZero `NaN`. + This sibling remains open outside the joined-result identity repair. - [ ] **Offset-only providers under a joined ordered window.** A provider that honors `offset` and ignores `cursor` gets a wrong window at preload under a LEFT-joined filter: the ordered loader repeats a continuation `offset` @@ -5544,6 +5575,24 @@ failed-write histories still check restoration of prior intent. This bound does not remove the existing linear merge traversal for each real write or establish elapsed-time performance. +## Public-container cleanup copies + +`packages/db/tests/query/public-container-copy-oracle.test.ts` owns array copy +shape at resolver return, under the architecture's descriptor/prototype +preservation law. Each fixed/fresh input exhausts 24 structural programs: +shallow root cleanup, generic nested cleanup, compiled root cleanup and compiled +include-path replacement; native, derived and null array prototypes; changed +and unchanged values. Sparse sizes zero through eight, locked lengths, +accessors, hidden properties and user symbols vary without weakening identity +or descriptor comparisons. The original code loses derived/null prototypes in +six changed cells; a shared-shell prototype mutant fails all eight changed +derived/null cells. Every state reaches once per generated input. The ordinary +`public-container-copy.test.ts` remains supplemental reference-key, cycle, +sharing and record-descriptor coverage. This component owner does not establish +framework/provider receiving behavior, arbitrary graph topology, or Collection +publication descriptor policy. Opaque-payload scan work remains with the +includes-work owner; Collection attribution remains with virtual-row-fields. + ## Compound joins The high review extends the route-context owner with independent join source @@ -7631,3 +7680,26 @@ requests while joined work defers a reentrant pass, then check the real subscription receiving path. This remains separate from PR #2346's observer metadata-sharing and discarded-publication scope. The test, grammar and run budget remain unchanged; a green later random campaign does not close it. + +## Compiler group reduction boundary + +`packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts` retains the +independent batch model formerly embedded in the ordinary +`group-by-pipeline.test.ts`. Thirty finite histories cross explicit/implicit +groups, no/plain/wrapped selection and five HAVING forms. Each compares keyed +selected values after empty startup, population, a member move/value change, +emptying and reentry: 150 comparison checkpoints, with each checkpoint declared +and reached in every history. Checker calibrations reject a lost group, wrong +key, wrong value and duplicate weight. Supplemental pending-state and admission +examples remain in the ordinary file. + +Authority: the existing aggregate/group laws and the maintainer's 2026-11-05 +boundary-only metadata decision. Group reduction has no source Collection +attribution; Collection publication supplies that metadata. The retired reducer +pending/origin/Collection-ID expectations are therefore removed from this +component judgment. The primary `virtual-row-fields-oracle.test.ts` continues +to own genuine published metadata; no public comparison is weakened. The +component covers numeric keys/sums and synchronous D2 graph drains, without +correlated routes, public events, provider schedules or general aggregate shapes. +The public aggregate-select and grouped-result-key owners retain those wider +value/key contracts and their stated limits. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md index b5f0dc0d9d..b0c78ed3ff 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -9,6 +9,9 @@ source by SHA256 and retains the experiment log hashes. Earlier records remain historical. Raw review and append-only scratch accounting are in `/tmp/db-prep-pr-2026-11-05/review-high-10-ledger.md` on the authoring host. +The final amendment below supersedes historical source-key policy, size figures +and readiness statements. Earlier experiment entries remain unchanged. + ## Laws, experiments and inferences No new product decision is needed. The November 5 maintainer decision requires @@ -79,7 +82,7 @@ repaired work claim and a rejected correctness explanation. | NR07 | builder/types.ts:275 treats wrapped aggregates as ordinary expressions, omitting generated keys. | Confirmed type defect, fixed-now. Preserve inferred aggregate provenance and unwrap scalar aggregate results. | Extended native public-type owner and explicit-erasure limits. | | NR08 | bucket-facade-adapter.ts:524 bypasses the resolution cache, repeating prepare/apply/previous-value resolution. | Confirmed, fixed-now. Cache by resolver and immutable row identity. Rollback clears both caches. | Facade lifecycle and rollback owners retain publication/next-use checks. | | NR09 | route-metadata.ts:207/91 has unused recursive wrapper parameters and an unused stripRouteMetadata export. | Confirmed production cleanup, fixed-now. Wrappers are shallow-only and the unused export is removed. The generic recursive walker remains useful. | Cycle/descriptor coverage invokes that generic walker directly. | -| NR10 | route-metadata.ts:149 cleans plain Collection inputs and performs all six hasOwn probes after a hit. | Plain-source overhead confirmed, fixed-now through compile-time source classification. The after-hit allegation is refuted: ||= already short-circuited calls. | Keep parameterized Collection and QueryRef cleanup. New stripper returns at the first hit. | +| NR10 | route-metadata.ts:149 cleans plain Collection inputs and performs all six hasOwn probes after a hit. | Plain-source overhead confirmed, fixed-now through compile-time source classification. The after-hit allegation is refuted: `\|\|=` already short-circuited calls. | Keep parameterized Collection and QueryRef cleanup. New stripper returns at the first hit. | | NR11 | Summary repeats grouped metadata qualification and wasted work. | Duplicate NR01. | Preserve both correctness qualification and work claim. | | NR12 | Summary repeats unmatched joined-subquery collisions. | Duplicate NR06. | Preserve public include collision consequence. | | NR13 | Summary names coalesce(sum(...)) and caseWhen inference. | Duplicate NR07. | Preserve those concrete forms in the wrapper grammar. | @@ -213,3 +216,321 @@ Review accounting and local implementation verification are complete. Remote CI and the final pushed head require separate verification before a ready verdict. The full repository pnpm test command was not run. Earlier branch-wide review records and their accepted limits remain relevant. + + +## Follow-up on bd3f574ec: shipped size and additional CI review + +This append-only amendment qualifies the earlier closure and size statements. +The maintainer requires a net decrease in shipped JavaScript, rather than a +net decrease in production source lines. The prior +337 gzip/+353 brotli DB +measurement does not meet that requirement. Subsequent intermediate size +measurements are experiments, not the final acceptance result. + +CodeRabbit review 5791093838 covers bd3f574ec. Every new occurrence is retained +in the scratch ledger, including the full inline bodies. Its dispositions are: + +| Occurrence | Verdict and action | Surviving value | +| --- | --- | --- | +| 4485255659, NR10 table pipes split cells | Confirmed, fixed-now. Escape both pipes in the operator. | Readable lossless finding table. | +| 4485255663, whole-source join fan-out collapses under source keys | Confirmed. The initial disposition was design-decision because the accepted source-key rule conflicted with contribution conservation. | Cross whole-source selections with one-to-many joins and observe every public include form. | +| Mutable summary: 39.58% documentation versus 80%, 48 functions, four unsupported | Refuted as a repository requirement. No maintainer or repository rule establishes this threshold. | Add explanatory prose where a specific ambiguity warrants it. | +| Mutable summary: aggregate-operator type provenance scope | Already evaluated with NR07. Generated native consumers require provenance and it emits no JavaScript. | Retain ordinary expression controls and explicit-erasure limits. | +| Older mutable 4484649660: make cleanup callback async | Refuted on current source. checkWithCleanup accepts a synchronous callback or Promise. Native type owner passes 33 checks. | Keep async cleanup support without unnecessary Promise creation. | + +The public probe for 4485255663 joins one child to two matches, selecting the +whole child. Both toArray() and include() return one row with source key 10. +This is executable evidence of lost join multiplicity, rather than a proposed +implementation preference. The maintainer then approved pair keys for joined +results, while retaining the source's origin, pending-write and Collection-ID +attribution. This revises the source-key portion of the earlier decision and +NR18's neighboring-law control. A joined row's identity represents the pair. +The remaining source fields continue to describe attribution. The historical +source-key RED above remains valid evidence of that earlier contract, but is +not an obligation under the revised contract. The pair-key experiment and +current readiness verdict are recorded below after enforcement is complete. + +### Copy-law sibling and independent evidence + +A new sibling defect loses an array's derived or null prototype during shallow +cleanup and generic graph copying. Architecture's cleanup contract promises +preserved prototypes, descriptors and user symbols without accessor execution. +Existing ordinary tests varied null record prototypes but only native arrays. +The metadata and payload-work owners judge different boundaries, so the new +public-container-copy owner independently judges this copy relation. + +- **Law:** A necessary cleanup copy changes only the private keys or declared + include leaves, retaining prototype, descriptors, user symbols and source + immutability. An unchanged value retains identity. +- **Reach:** Each generated input executes 24 programs: four resolver paths, + three array prototypes and changed/unchanged controls. Sizes range from zero + to eight, scalar values from -1 to 1, with sparse slots and locked-length + variation. Fixed seed 2355 and fresh seed 937318538 each reach every state + eight times, giving 384 comparisons in the combined run. +- **RED:** Before the prototype production edit, the new owner rejects six + changed derived/null cells on shallow, generic and compiled-root paths. + Compiled declared-path controls already preserve prototypes. Direct replay + at seed 937318538, path 0 rejects the same six cells. +- **GREEN:** The shared shell allocator preserves array prototypes. Focused + oracle, ordinary copy and facade checks pass 37/37, and direct replay passes. +- **Mutant:** Replacing the shared array shell with [] fails all eight changed + derived/null cells, including the compiled include path, at prototype checks. +- **Limits:** The observation is resolver return. This does not claim arbitrary + graph topology, cross-realm hosts, exotic built-ins, framework/provider + behavior or descriptor preservation at Collection publication. + +The model captures descriptors/prototypes before invoking production. It does +not import production classification or copying helpers. The compiled path +obtains its resolver through the real Query builder and materialization plan. +Sparse slots, readonly named data, an accessor, hidden fields and a hidden user +symbol distinguish tempting spread-based copies. Existing cycle/sharing tests +remain supplemental. No test or run budget was removed. The first supplemental +type attempt used an unavailable fast-check type and receives no type-GREEN +credit. The corrected final native check passes all 85 checks with no errors. + +### Group-stage CI calibration + +Local execution reproduces the remote DB shard's 21 stale metadata expectations +out of 35 component tests. Boundary-only publication retires that component's +source-derived pending/origin/Collection-ID expectations. The old argument also +occupied a different parameter after the reducer signature changed. This is an +expectation/owner repair with unchanged production, not production-bug evidence. + +The renamed group-by-pipeline oracle retains all 30 explicit/implicit grouping, +none/plain/wrapped selection and five-HAVING programs. Each compares empty, +populated, member-move/value-change, empty-after-delete and reentry snapshots +against the independent partition/sum model: 150 checked component snapshots. +Four incorrect observations exercise the same checker: missing group, wrong +key, wrong value and duplicate weight. All are rejected. Five ordinary source +state/admission controls remain in the ordinary test file. Final component +checks pass 39/39, and the unchanged public metadata owner passes 1,714/1,714. +This does not relax any actual Collection metadata comparison or remove a +random run budget. Limits remain numeric grouping/sums and synchronous D2 +drains, with public attribution and routes owned by their existing instruments. + +### Size experiments and latency observations + +The type-only caseWhen tuple signature removes the overload ladder while +preserving the existing six-or-more-pair fallback. Removing redundant and/or +overloads also emits identical JavaScript to bd3f574ec. A const-tuple inference +experiment narrowed object branch fields, failed 24 native histories, and was +rejected. The nonconst form passes the native owner. It is not a runtime size +reduction by itself. + +Shallow cleanup no longer enters the generic graph walker. Generic graph copy +allocates every dirty shell before descriptor replacement, retaining cycles +and shared references. Facade resolution uses one resolver-indexed cache and +a stable callback. Merging source metadata and routing into one alias-entry +map was rejected because it adds allocation and lookup work to metadata-only +QueryRefs without a measured benefit. Source-line savings do not justify that +latency tradeoff. + +The measurement table now retains six runs, 504 rows, including the simplified +working tree before the pair-key amendment and a third unchanged predecessor +control. That candidate versus the third control measures 1.00x overall writes +and 0.96x cold, with one diagnostic write flag and no gate failure. Every query +geometric mean passes the unchanged gate. These observations do not establish +zero overhead or a source-caused speedup. The candidate's reported Git SHA is +bd3f574ec beneath uncommitted source; the companion manifest binds that source +separately. Later semantic edits require their own verification. + +The current remote checks still cover bd3f574ec: 23 pass, while Minified DB +public API, Test (db-1) and composite Test fail. The local mangle-cache and +group-stage repairs address diagnosed causes, but do not establish remote +success until the final changes are pushed and rerun. + +### Shipped JavaScript acceptance experiment + +Production callers always provide the compiled include resolver when creating +facades. The internal BucketFacadeAdapter and generic resolver are absent from +the public package exports. Requiring that existing dependency explicitly lets +the generic recursive walker leave public-index bundles. Direct component +receivers still pass the same helper explicitly. Its copy, cycle and reference +checks remain intact. This is an internal dependency change, not a weakened +public cleanup law. + +Before requiring the dependency, the modified direct receivers pass 58/58 on +unchanged production defaults. Afterward, seven focused files pass 234/234, +including real compiled callbacks and the fourteen-path opaque-payload work +owner. Rollback retains outer Map identities, adopts already-isolated inner +snapshot Maps/Sets once, and records written keys directly without temporary +key arrays. A rejected outer-Map replacement failed the nested rollback +receiver; the corrected implementation preserves that comparison. No oracle +model, grammar, assertion or run budget is relaxed by these refactors. + +A generic copy's allocated shell now doubles as its dirty marker. Every dirty +shell exists before descriptor links are filled, preserving shared references +and cycles without a separate flag/allocation pass. Mangle-cache validation +accepts 434 safe private names. The earlier source-only overload reduction is +not counted as shipped-code removal. + +Immediately before the pair-key amendment, exact merge-base 8feab6ea3 versus +working source measures: + +| Fixture | Base minified JS | Working JS | JS delta | Gzip delta | Brotli delta | +| --- | ---: | ---: | ---: | ---: | ---: | +| Full public export bundle | 363,269 | 363,084 | -185 | -108 | -184 | +| Ordinary app | 316,001 | 315,702 | -299 | -185 | -147 | +| App with includes | 324,489 | 324,935 | +446 | +57 | -38 | + +The full bundle and ordinary app meet the shipped-size requirement in this +experiment. The includes fixture remains larger in raw JavaScript and gzip. +All eight app scenarios were measured; the other seven shrink in gzip. The sum +of all minified ESM JavaScript modules, including development branches, +decreases from 728,187 to 726,627 bytes (-1,560). That distribution measure is +distinct from an app's tree-shaken production bundle. + +Commands: `pnpm size:compare --packages db --base 8feab6ea3 --exact-base +--rebuild`, plus the manifest-bound measure-shipped-js.mjs probe. Its production +bundling premises and gzip/brotli values match the repository size script. +The final pair-key source requires a final measurement below. + +The size-continuation ledger also preserves rejected ideas: const-tuple type +inference, direct adoption of outer rollback Maps, a merged source-context map, +and a proposed compiled-resolver representation rewrite. The first three have +counterevidence above. The resolver rewrite was unnecessary after the explicit +internal dependency removed the generic walker from shipped public bundles, +and was not implemented. Accepted changes preserve existing public histories, +comparisons and budgets. Type-only source deletion receives no shipped-size +credit. + + +## Final pair-key and shipped-size amendment + +The maintainer requires negative shipped JavaScript overall and explicitly +chooses pair keys for joined results. The November 5 decision supersedes NR18's +historical source-key requirement. Structured whole-source selections and direct +functional source returns keep source origin, pending-write state and Collection +ID; their published key identifies the joined result. Inline authored fields +remain intact. Explicit custom keys retain congruent contributor reduction. + +### Joined occurrence evidence + +- **Law and authority:** Each default-key joined occurrence remains separately + observable. A published row's $key equals its actual Collection entry key. + Source attribution's other three fields remain genuine. Authority: the + maintainer's pair-key decision and architecture contribution conservation. +- **Reach:** The primary join-result-key owner crosses all four join kinds, + selected side, direct/QueryRef composition, four projection forms, authored + collisions where applicable, and default/custom keys: 192 finite programs. + Each checks initial publication, held selected-source mutation, peer departure, + rejoin, settlement and remote update through root Collection, Collection + facade, toArray and materialize receivers. All 4,608 declared receiving states + reach at least once. Two 80-history campaigns add random and fixed inputs: + 352 histories and 8,448 new comparisons in the normal run. +- **RED:** Before the production amendment, the extended join and metadata + owners fail 219 of 1,914 tests. Missing required source IDs, invalid QueryRef + correlation and NaN admission setup failures receive no RED credit. +- **GREEN:** The same two owners pass 1,914/1,914 on final production. The + generated public metadata judgment retains non-key attribution and authored + inline values. Custom keys intentionally differ from source IDs. Temporal + key-set checks preserve identity across value changes and departure/rejoin. +- **Mutants:** Separately restoring source-key preference in routing and in + published metadata rejects 130/200 join tests each at the shared comparisons. + A direct replay of property join-result-key.whole-source, seed -540621864, + path 0:0:0:0:0 rejects restored source-key behavior and passes after byte-exact + source restoration. The captured trace selects the left whole row in a direct + inner join, with string and infinite source keys. Replay runs one selected + property and intentionally skips the other campaign and reach requirements. +- **Limits:** Eager core/mock sources, two joined sources and bounded updates; + no provider-delivery or framework-scheduling claim. Arbitrary overlapping + writes, larger join chains and unbounded query shapes are not established. + The detailed reach log was truncated, so it is not a parseable exact-count + artifact. Finite enumeration and enforced reach assertions establish >=1 for + each declared state; no larger per-state count is claimed. + +Commands (from the worktree, each with at most two workers): + +```sh +pnpm --dir packages/db exec vitest run tests/query/join-result-key-oracle.property.test.ts tests/query/virtual-row-fields-oracle.test.ts --maxWorkers=2 --coverage.enabled=false +TANSTACK_DB_ORACLE_SEED=-540621864 TANSTACK_DB_ORACLE_PATH=0:0:0:0:0 TANSTACK_DB_ORACLE_PROPERTY=join-result-key.whole-source pnpm --dir packages/db exec vitest run tests/query/join-result-key-oracle.property.test.ts --maxWorkers=2 --coverage.enabled=false +``` + +The source-key preference is removed from the small metadata sidecar for joined +rows. Publication supplies the actual result key; routed rows use their computed +pair identity. This adds no recursive payload traversal. + +### Final source measurements and checks + +Exact merge-base 8feab6ea3 versus final working source: + +| Fixture | Base minified JS | Final JS | JS delta | Gzip delta | Brotli delta | +| --- | ---: | ---: | ---: | ---: | ---: | +| Full public export bundle | 363,269 | 363,114 | -155 | -94 | -85 | +| Ordinary app | 316,001 | 315,735 | -266 | -170 | -158 | +| App with includes | 324,489 | 324,968 | +479 | +73 | -18 | + +All emitted minified ESM JavaScript modules, with development branches retained, +shrink from 728,187 to 726,520 bytes (-1,667). The shipped-size requirement is +met overall. The includes fixture still grows in raw JS and gzip. Source-line +negativity is not required and is not claimed. The size command remains +`pnpm size:compare --packages db --base 8feab6ea3 --exact-base --rebuild`. + +The seventh retained local benchmark uses final production and identical +candidate/predecessor harnesses: 84 cases, three fresh-fixture repetitions, +100 writes and 20 warmups. Its 130-file source binding matches before and after +execution. Against the third unchanged 708a58098 predecessor control, it measures +0.91x overall writes and 0.80x cold, with no diagnostic flags and a PASS from the +unchanged CI gate. The CSV now preserves seven runs / 588 cases. Earlier noisy +and failed observations remain. This is evidence against a large regression +in these cases, not a zero-overhead or precise speedup claim. + +Final local verification on the same production source: + +- DB shard 1: 198 files / 16,367 tests pass, with no type errors. +- Affected runtime run: 16 files / 7,802 tests pass. +- Full DB source/test tsc: zero diagnostics (12 GB heap). +- Minified public API: 113 error names, index metadata, query rows and live + updates pass. Mangle-cache validation accepts 434 safe names. +- Native type owner: 33 checks; supplemental type checks: 85. Builder functions + emit identical JavaScript to bd3f574ec. +- Source size/build, scoped lint and direct replay pass. Final repository + lint/diff checks and remote CI are recorded after commit below. + +The complete repository pnpm test command was not run. A nonexistent optional +changeset-checker script and an earlier tsc setup failure receive no check credit. + +### Final loss accounting + +NR01–NR15 preserve every raw finding and summary claim. Ten primary findings +are fixed, with NR01's attribution half accepted-design and NR10's after-hit +probe allegation refuted. NR16/17 siblings are fixed. NR18's historical source +key law is superseded by the explicit pair-key decision; the replacement law is +enforced above. Item accounting: 18 = 12 fixed-now + 5 duplicates + 1 +accepted-design. No original item is deferred or confirmed-open. + +CodeRabbit occurrences from review 5791093838/bd3f574ec: table pipes and whole +source fan-out are fixed-now; the unconfigured docstring threshold and async +callback requirement are refuted; aggregate provenance scope is already +addressed. Five occurrences = 2 fixed-now + 2 refuted + 1 already-fixed. + +The size-continuation ledger preserves all simplifications: SS01 tuple types, +SS02 shallow descriptors, SS03 all-shells-before-links, SS05 unified resolver +cache, SS07 isolated inner rollback snapshots, SS08 inlined write setup, SS09 +shared cleanup loop, SS10 shell-as-dirty-marker and SS11 explicit resolver are +accepted internal refactors. SS04 array prototypes and SS13 mangle-cache safety +are fixed-now. SS06 outer Map replacement and SS12 merged source-context maps +are rejected with counterevidence. SS14 is approved group-stage test calibration. +SS15 remains an open Collection admission sibling outside the joined-result +repair. SS16, an unneeded compiled-resolver representation rewrite, is rejected +without implementation. Accounting: 16 = 9 internal refactors + 2 fixed-now + 3 +rejected proposals + 1 accepted-design + 1 confirmed-open outside this claim. +No oracle run budget was deliberately lowered or removed. + +SS15's exact public witness is recorded in the coverage map under the Collection +mutation-startup owner: an unchanged NaN key fails ordinary optimistic update +admission before the joined observation cut. Sync NaN join histories remain. +The update grammar uses a different matched row for optimistic mutation. This +PR does not fix optimistic NaN admission or claim closure for it; that owner +retains the trace and issue #2264 as its durable destination. + +Reviewer recommendation remains hire: high useful signal on types, keys and +work, with source-only evidence and two partially incorrect explanations. +All raw occurrences and rejected ideas have durable destinations. The bounded +join/copy/type laws above have RED/GREEN and calibration evidence. PR readiness +still requires the final pushed head's remote checks and new-review accounting; +the old bd3f574ec check failures do not describe final-source CI. + +Final precommit checks: pnpm lint:changed, Prettier on all changed TS/JSON/MD, +and git diff --check pass. PR prose has zero hard STE violations; the two +advisories are the required checklist wording. No lowered/removed oracle +budget report was emitted. Remote checks are still pending the new push. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json index b81e6e4974..23f0d6c78d 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -74,5 +74,235 @@ "comparator": "node --import tsx scripts/bench/compare-incremental-update.ts --base=BASE.json --candidate=CANDIDATE.json --failOnRegression=true", "work": "Temporary instrumentation recorded in instrument-review-work.py, executed on predecessor and repaired source; restored afterward.", "mutants": "python3 /tmp/db-prep-pr-2026-11-05/run-review-mutants.py" + }, + "postCommitNormalization": { + "commit": "bd3f574eca1c2fda72ed64aab561643f02613fe2", + "file": "packages/db/src/query/compiler/index.ts", + "testedSha256": "a970848eb543b99dfefd69dbe6f3bea8738684348e050c7686f484e4ae684c0c", + "committedSha256": "47a9bdc1fd8492d9e8224190365a856623516b57020e04bd83b18a651760adc3", + "change": "The pre-commit hook sorted one named import. Reversing only that order recreates the tested hash. No executable statement changed." + }, + "finalShippedRefinement": { + "parentHead": "bd3f574eca1c2fda72ed64aab561643f02613fe2", + "base": "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "binding": "Uncommitted final working source before commit; prior evidence remains historical. Git SHA in benchmark metadata identifies underlying HEAD, not this source snapshot.", + "sourceSha256": { + "packages/db/mangle-cache.json": "0532cd42275259579c740168c04e6e0d29d8b15a655a2b149b4b7afdf0129899", + "packages/db/package.json": "478a80e589d615db699a59f106fd7f363ae9f821e4c07cb0b2a99b692698b925", + "packages/db/src/query/builder/functions.ts": "fb76f64caeac3377f82c345edd6cff312b2e32eba3c5c9a50e2da18a916fdef3", + "packages/db/src/query/compiler/index.ts": "076aadefe2309f14f085ad1ff1cf71c983fd0ebd41ca6baad28695f5ffe18aeb", + "packages/db/src/query/compiler/route-metadata.ts": "94d62c75c71dbb277a28db48ee9ac11bac7e2771035bea46a67c183d69a4400a", + "packages/db/src/query/live/ARCHITECTURE.md": "5e2765dd330707978920da2e7717dad1864cad07a1331574130342d22949bc30", + "packages/db/src/query/live/bucket-facade-adapter.ts": "e5489b4cb836f2755a60e25a82a85d9686c401b23d70fcfe175fc718421da0f7", + "packages/db/src/query/live/collection-config-builder.ts": "551069155332561a8cc523cc2aaa8f6f8787bdc0e846c34d3b240ddfdb49c7ba", + "packages/db/src/query/live/materialized-pipeline.ts": "c8a16328d2e30c7a0620f8425b7d61e4f5960a3d438bd088fe16e731f73eea12", + "packages/db/tests/facade-retention.probe.ts": "295b2eb2f34f82430abc8e4ae86510e84cf6963457fff4c6bc055f231d081baa", + "packages/db/tests/oracle-config.ts": "6e82e05bffd6c80f0a96ac41ed440f80f9379998b494683464299ecf680102c9", + "packages/db/tests/query/bucket-facade-adapter.test.ts": "a1ce07b400873d69ac1d0c67f53ce76fc3c4a63ad05c52c242eced4035bb43bc", + "packages/db/tests/query/bucket-facade-rollback-support.ts": "2a7fb442f0e55a5c68a5e7451c525c18c9a826980323e13f463be3b0d5daea81", + "packages/db/tests/query/bucket-facade-rollback.test.ts": "efec6793eeefb6eea663af26c70be673d80865b5c8005f01268b308ee2fde7e0", + "packages/db/tests/query/compiler/group-by-pipeline.test.ts": "8faf21778634bb31229947f8de975d0065130534edd64e321c0ec91b745928c6", + "packages/db/tests/query/join-result-key-oracle.property.test.ts": "298759862b76a929b58a389b64fbeb4f47586ec462e41a37f14594b8a405ef6b", + "packages/db/tests/query/virtual-row-fields-oracle.test.ts": "ef98b2650f9f43f561ce7323759e223084b24c4f6353cadb397f5be3d990aff0", + "packages/db/tests/query/virtual-row-fields.test.ts": "096b065252d86eeeaa8e1b7f431dea53ca94653870f928cd35855a583f388db8", + "packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts": "340615fb58ff67365b40398d4086e1ef77c639c2139d74c2049afd4c57002fc2", + "packages/db/tests/query/public-container-copy-oracle.test.ts": "97278feebc4a80291378514b6a850032d823ff2a00cc7682c432da480234ecfc" + }, + "measurementSha256": { + "scripts/bench/high-review-2026-11-05.csv": "71091d13283f41706f129bb0d953c2ac19f734da17110b7e0c13954336e07472" + }, + "evidenceSha256": { + "shipped-final-raw.log": "f5a659024b8289d0a757566787269ad47c2c82da8a3ec7093b195c17384a6cb2", + "shipped-final-size.log": "0095ad842f978bbc96a5134badc72f341c03df13995fed50135a7fd4db297859", + "shipped-final-db-shard1.log": "2a769b398122b9415fcddfe5d3f02b144df3d3f01e10de183069b4fb6d848fef", + "shipped-final-runtime.log": "8cbaec223eb971560bc4d2cfcce0a7be3459a5006b66cd4fa2f4c1c6ba550897", + "shipped-final-source-tsc.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "shipped-final-minified.log": "695e8f38bfd0757c91321e3fba2bd3b45a95998e1649315862dc996950f25695", + "shipped-final-mangle.log": "dad7b9d819fb7cf9bfbd666729f7849cb4b33c1b7af12f4b22783fe7dc8c0167", + "shipped-final-eslint.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "shipped-final-benchmark.json": "2c4c69c923bcb594ca75e22543b846f434dfb6ac4489817f4078bd7733244f0c", + "shipped-final-benchmark-comparison.md": "44e542ae32da09482a0debc760fc8deea5a36336829eb30fa99d38904e2b5f5d", + "shipped-final-pre-bench-source-binding.json": "99bc739ab5bd8a6ec1e5174a9982bce963efb6e7721682bb1b378fb7ce31f9e4", + "shipped-final-post-bench-source-binding.json": "99bc739ab5bd8a6ec1e5174a9982bce963efb6e7721682bb1b378fb7ce31f9e4", + "join-pair-final-red.log": "2c30615797ff946f440efcfbb5cc3172cd64248433d5c0036da9435fcea2270d", + "join-pair-final-green.log": "af58b8bdfcb3e4bfcbd643e32eee7cb9bdc742427783fad7bba73d979948688f", + "join-pair-final-green-reach.log": "50901ba781af4125544d71ab1cdd33a2f3fddc9a94a9f3e9e226e9ef342fda07", + "join-pair-routed-source-key-mutant.log": "f212b15d215b98350179f941b2743e524786478ec4326c5a32fc20333d84ef12", + "join-pair-published-source-key-mutant.log": "0701ab7a346b1d899a46d113e966f8c9e336ebebc6faab20beb5da474fd2fda0", + "join-pair-direct-replay-red.log": "cbe22111e21ac54ee79b465322ba9a53fa089ca1d6867c1086d2a71c462ed2f8", + "join-pair-direct-replay-green.log": "81319a2a94816700ca68c8a7c3a46fad920f6ddb654fb3ec0f08a742f16c685b", + "join-pair-direct-replay-restored-green.log": "351280a94f5d3f49d0445483ebb5b7c352b641b90dced483fc1b74c90337a4ff", + "join-pair-direct-replay-binding.json": "ddad86bd09c791c90de9c4b7d4f50e44747198ee384134be010fc1cd5da8333b", + "net-negative-prototype-evidence.md": "31118e4bf62ab3247a61ee975a4e575b09e68c6773724be7bb6982be5bfa382a", + "net-negative-group-tests-evidence.md": "cf91b653b974aba46ade5d2463387f9542dcc1b1dd98c74742c12743a56caf9c", + "measure-shipped-js.mjs": "51aa0f49cefba28227e7509ca2f1b9b5f3e5fc46542364d8c778a46449818340", + "net-negative-types-final.log": "0828973e87ecda4c1ce232162a26bad85ae768e057100ce7eb2338c1ab24aa8f", + "net-negative-supplemental-types-final2.log": "e0c90edf8dc6fb1ba139d6b20462442f2765488b2bbba00c2b82bceb98b0750f", + "net-negative-functions-emission.json": "bda031900a00a2c6472a72458aa52e677b9c287b8c37cffffea7998bc27a6070", + "shipped-final-lint-changed.log": "89d7da780deb04850db632f478bc4155d23659849c0e5bec6d114c74dc9d5168", + "shipped-final-format-check.log": "17aa973d3f004560237d9a95171210b0671deff23d61628eecf7322ff5938f20", + "shipped-final-diff-check.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "shipped-final-pr-ste.log": "b8246b5d3032178c8aebee9801bdea52440c192bed90158544f40684354ba1bd", + "shipped-final-pr-paragraphs.log": "e5861aa829e938cbd6da22ef9c94ff919668817a029af8feee021aac792907b7" + }, + "benchmarkSourceBinding": { + "packages/db/mangle-cache.json": "0532cd42275259579c740168c04e6e0d29d8b15a655a2b149b4b7afdf0129899", + "packages/db/src/SortedMap.ts": "5ffa75ae2c41e2c657931728186fe9bd9c9b60f8da81cbf327c7c41417e2debc", + "packages/db/src/client.ts": "a68c2b2fac9189e944112e50a6d028a8328224a7ec5f98aab0a7a5838f0d44c0", + "packages/db/src/collection-options-brand.ts": "93df3fc8d90531ca926c6e9ca48653dbda9259cfaaade9c23cbbf35131b2e1ed", + "packages/db/src/collection-options.ts": "0b0f9713312f9554f62c020dda3bae8291303dbeadb85adfee76515a28442feb", + "packages/db/src/collection/change-events.ts": "754f897ba843d004eaf5bfe3f047fc53aa24eb49a16ae1eae4073e32ec17ba49", + "packages/db/src/collection/changes.ts": "2824f649107b52a3b24a911b3d3c62baabd5b38f00da083ba51432a8d96551c0", + "packages/db/src/collection/cleanup-queue.ts": "869a5fdff4680354a9b3c68d3e5228ffe701507968dd1a5ae2123ed856fe517e", + "packages/db/src/collection/config-errors.ts": "ffe046ad75542c863e1781c192191479cdcb68e7dcfaf92c9ce180ee48522cc0", + "packages/db/src/collection/events.ts": "afe1913937b6e8859a0b9061436eb6563695247300f71582bf656f5710bab45c", + "packages/db/src/collection/health-tree.ts": "3c9c72ffa3045d1719883bd609df87d98d336140fe6076e485f7535b9debdc59", + "packages/db/src/collection/index.ts": "ce03ba3ec00a88e1e55488ba91ace4b4d3737b42c8e0fbfb7e72d8154a207283", + "packages/db/src/collection/indexes.ts": "f6a800dbe0f6e326884bf6d0b4912c126a82ef87413eb7490241fb1f56ca8f6f", + "packages/db/src/collection/lifecycle.ts": "0aee449fa231215d8d3d086e1e37e761f332c75a6cae50fabd3101ed057a84b7", + "packages/db/src/collection/mutations.ts": "a9fb56d836eab56789154735841a7d2908d940d438196c5dc2d7a85f16132848", + "packages/db/src/collection/state.ts": "06358b64fd705e80f47ca8a6c8b4a4174fdb7926c406aaaa86baa7e553305ed1", + "packages/db/src/collection/subscription.ts": "8997bb67f5b03bf736eacf3fb1f9461984184167b6c0950a3528c2d250952075", + "packages/db/src/collection/sync.ts": "12120489cabc124acd52a4ed690fce1ddd903602c8cda373b910f9fa744b4697", + "packages/db/src/collection/validate-config.ts": "10bc3f83c357cf8b835694c73df9adf413c6190f924256786f17e123a688489a", + "packages/db/src/collection/validate-indexing.ts": "4850409de6a806f7b1c5caddb9cf935efa4c26e8c63457324e705fcc9157a37d", + "packages/db/src/deferred.ts": "9c99553d7ab92ac89d377cb3382a9dfbdf592635c87b86eac8aa1f18efc4da68", + "packages/db/src/duplicate-instance-check.ts": "7ea3110958ff28f9befe760c60fc6fcd695bfba76aba76d654220358e6e8f8f5", + "packages/db/src/error-message.ts": "9ab4a64436c3db3a61f3a84b5ccff11359ccdf5676c81b81dc3be9db9c1dff13", + "packages/db/src/errors.ts": "48d1e786bc84793ca16a2f5d4dcc80a914a03aa1a4753c08a99d7847c6a8120d", + "packages/db/src/event-emitter.ts": "1d8775f3c2dbc9c833f03d2b9bb0d55d1606419e43d661064cc95cd91eb187e8", + "packages/db/src/index.ts": "897961cdc23a8587ac7d882dfc10e2e0184afd452ee2e60efb89a2a425321277", + "packages/db/src/indexed-db-wrapper.ts": "216fcac76c01b1af8363cda8a93678f53cd2cd58c9df918cd3d56d2a1f25fd11", + "packages/db/src/indexed-db.ts": "354a3e02c711e1db3ce1fb651d190aa45a58e238a42c5d9f9d6ee394d55ad95f", + "packages/db/src/indexes/auto-index.ts": "d226516a7514c40e83010ab211020adba17965af96bd6d3b96e88989c6f31b51", + "packages/db/src/indexes/base-index.ts": "63e35c6bf011ad361882509a521407acf29b9404ce4e810a8f4d54b50c0e6685", + "packages/db/src/indexes/basic-index.ts": "9a128909d6df2c6d5b9ef07295a55f9f587170721cb7c6a652dd9c43eb674633", + "packages/db/src/indexes/btree-index.ts": "b006f65cf1c2ab14004e7311f4ac4b89958e919fb8439cd9ca25090789e37186", + "packages/db/src/indexes/index-options.ts": "5a43b0b1fead58395fae8cbf9df6087091e5d60ff6aca471621d41b52b8446d4", + "packages/db/src/indexes/index-registry.ts": "d44e34c9e5d90db56dee7f91e402f2547d91647ae100cc4752bc13bcd49e2719", + "packages/db/src/indexes/reverse-index.ts": "ebf2d22eb0eec10acb4df154488862243ec20be117bc069fe307fc991853dd0b", + "packages/db/src/live-query-adapter.ts": "d9cdb5d94192061ca0b1d61d288998b34ae34294226f5219213cb639a0bfc2d7", + "packages/db/src/live-query-observer-client.ts": "dab8ffeca97ac0eb2a4f8663250d7d218f9ab782d6c4a438b654f3adbed90773", + "packages/db/src/live-query-observer.ts": "d64f0721e9230b0a9e1f8550f42bab0f187c645bae2c45185863f5b63ff1b01b", + "packages/db/src/live-query-options.ts": "41e653166c7daf5d4d422be294f1a98c2d50fc9200042637032d2932c692e532", + "packages/db/src/live-query-primitives.ts": "44b28251bc2c234c5c47df25d5219a0e6ffc766d63ab9f9087dfd450d35dfd63", + "packages/db/src/live-query-window-binding.ts": "c291596aeeac20349b6aefa1526d4a2641f96e89eaae279af9704bac2cbe70c1", + "packages/db/src/live-query-window-controller.ts": "81fd80e363b9bfbd0c70837812089d0640d1d083c53d97be55661e3d134346e1", + "packages/db/src/local-only.ts": "fea6e26a682a80031d32f045e0141064646a55f16a8e57957c8f25e6389e054e", + "packages/db/src/local-storage.ts": "5d1e1e3de35ad066981e4972204e903f8de1a5c98a35c2f207eace37fb30199e", + "packages/db/src/optimistic-action.ts": "3b3d98ec0561927c301c6979256bbcd98faf0ee41b2b6690abe1c189eeaf4fec", + "packages/db/src/paced-mutations.ts": "064eccfb1101c6860d9b93d22c18d1538f2595728f215a24be3abf2cb8e205bc", + "packages/db/src/proxy.ts": "b6cba44f5b58f01b3c8c8a1fd8f63225d8d91d9772af9d2f12cdd4919d92bf98", + "packages/db/src/query/builder/clone-query.ts": "d149bec44c8a26da59519dc9bb2e7ca4013cc04028ac46830bafe4cca439c752", + "packages/db/src/query/builder/functions.ts": "fb76f64caeac3377f82c345edd6cff312b2e32eba3c5c9a50e2da18a916fdef3", + "packages/db/src/query/builder/group-keys.ts": "10b139f652d68ab30817c5f4a08cc8363d868b0162f28a256e56170bb9a3112d", + "packages/db/src/query/builder/include-functions.ts": "78612562bb571f37f95416eea52e1991a154ccfe13f42e50d4ffb921d4604786", + "packages/db/src/query/builder/index.ts": "775e9c891adcb69ea4839dff104f59e8f5faae29b4a927c7b5f9dc48b74f071b", + "packages/db/src/query/builder/query-ir.ts": "6aa35045e8a83c63a68e3af2de951879aaa2b91c132606db6d0bfd32247af108", + "packages/db/src/query/builder/ref-proxy-identity.ts": "909d40e4425647ae58850decd6891fa7f6aa4690cd76e82c3ced13b70dc93b10", + "packages/db/src/query/builder/ref-proxy.ts": "898e671e5656ebfb0a7dc0683de6b83e4ff1bc339616435caa1d60def4e6b767", + "packages/db/src/query/builder/types.ts": "13c41e78fc39e8c3f5a731853f2fa8c721a0e4418f7c57dea525695317d74d68", + "packages/db/src/query/builder/wrapper-identity.ts": "3053d30505c57f0eb16cc573e196291e617aff7479151508bbaa397fa3757f57", + "packages/db/src/query/compiler/evaluators.ts": "499cb252c6e2c166cf626bf88c6c08ced102020558bdccab46a6d12acd52ec92", + "packages/db/src/query/compiler/expressions.ts": "70925f2d29f57aec189d0e7f485d0531534e3482f0696a5e9a1141d8cf36c42d", + "packages/db/src/query/compiler/find-aggregate.ts": "8714ef7f93008a2cec4b6afd3369b93bc691b6f1ca9ec977a3e9530ff285a43c", + "packages/db/src/query/compiler/group-by.ts": "9c5575797cdd8308abd72932bcb9f5d3c82493d8542bd47da11d9bc67e789554", + "packages/db/src/query/compiler/grouping.ts": "60bf53ca65138c45894858d222187e3ba94c831c0a3223bd3234d60ac832405f", + "packages/db/src/query/compiler/index.ts": "076aadefe2309f14f085ad1ff1cf71c983fd0ebd41ca6baad28695f5ffe18aeb", + "packages/db/src/query/compiler/joins.ts": "970ef8fd17c56bb41ed2e38abab08cd4127f22a8be79c2c58c621782a2d5f7ec", + "packages/db/src/query/compiler/lazy-targets.ts": "6949ebfac1f0d76b64dc9a3c1cfee87490702a21de235c320fdd7aaa02b77587", + "packages/db/src/query/compiler/order-by.ts": "a104d4f4829e9b4ea801fcc60914772c1d97a47d7d46dbfa5e24f49724b12267", + "packages/db/src/query/compiler/parent-routes.ts": "5f8caf4504d70639bcd9b109da28ddb6880ebc81b1e4489e0ae8de2e7151cf42", + "packages/db/src/query/compiler/query-equivalence.ts": "7171fa0f1aa960297ba1269193ed3527967d78ebf1c19ef03544604280aa4480", + "packages/db/src/query/compiler/route-metadata.ts": "94d62c75c71dbb277a28db48ee9ac11bac7e2771035bea46a67c183d69a4400a", + "packages/db/src/query/compiler/select.ts": "2c558db5a723e947bdb15a77da2944937faf05b7e32e3ebaff6529bb1b6fda5a", + "packages/db/src/query/compiler/types.ts": "922a89c5eba805130f2c082e934c0829593b31c335a4cb2a4983aa1559447ad5", + "packages/db/src/query/effect.ts": "608790071b85167501ccf897c0b0119614c3f5e7d56a26f41f36d805fb3df8f2", + "packages/db/src/query/equality-conjunct.ts": "02041d880376b46814ab072747a9b0493e24cd4bd72df8389726780e535cc584", + "packages/db/src/query/equality-value-identity.ts": "a7b65759c20ebec4d83c47ec744bbd382da9a86ffa4c9e59028827127081d016", + "packages/db/src/query/expression-helpers.ts": "15d6635f8b28dafee0ca0afe2e8598545f09995a5b992798916d789167383019", + "packages/db/src/query/index.ts": "6e3e166f6570842b7e8da850040960815adc8d15684be5f35bb875854a2d37f2", + "packages/db/src/query/ir-stable-identity.ts": "7d41ca1a6f044d087a6addca6fd4a891828c72d3bf2db079adb95979eedd9f66", + "packages/db/src/query/ir.ts": "f457b852e61c6dbb5fd654a7fd1f6b50ed2d9e9773444e2ba5b0e702b8dcc118", + "packages/db/src/query/join-conditions.ts": "c2659d14f7a15203343de19b66cb83195c7ab5c26f953b52bbf6f40bbe012802", + "packages/db/src/query/live-query-collection.ts": "d9fa71c30a1dbb69d58e2e11c2ba4acbeaa727f8d1ee70ce3d225be08ce7224f", + "packages/db/src/query/live/ARCHITECTURE.md": "5e2765dd330707978920da2e7717dad1864cad07a1331574130342d22949bc30", + "packages/db/src/query/live/bucket-facade-adapter.ts": "e5489b4cb836f2755a60e25a82a85d9686c401b23d70fcfe175fc718421da0f7", + "packages/db/src/query/live/collection-config-builder.ts": "551069155332561a8cc523cc2aaa8f6f8787bdc0e846c34d3b240ddfdb49c7ba", + "packages/db/src/query/live/collection-registry.ts": "c24da0f80292e4fa22370711cdf66e52ec44989f8fda50430025aa5b25510e65", + "packages/db/src/query/live/collection-subscriber.ts": "d2e7864f197eaced0323453eda3c70c6967080b956e1ef6df266f1b73234e527", + "packages/db/src/query/live/graph-scheduler.ts": "bdd37b3814814a2bf32fa55422a2fb039107d04cbf4fbd79df67056c5bc4654b", + "packages/db/src/query/live/includes-runtime.ts": "5be2395cff94fdb99a5712e021109eba16e79b74334fda5a68ffba76242c3c10", + "packages/db/src/query/live/internal.ts": "3aa788cfb3647e2758ff9befe18e4503bc68797fd97d55dc5c3905db9a7145fc", + "packages/db/src/query/live/materialized-pipeline.ts": "c8a16328d2e30c7a0620f8425b7d61e4f5960a3d438bd088fe16e731f73eea12", + "packages/db/src/query/live/ordered-source-loader.ts": "d577ae2de639c45be087fe18e6becdb0cec1a7149209a0a45a7b0d3913ff2082", + "packages/db/src/query/live/public-key-reduction.ts": "6bba0de854b7ddd1417696409c28c92d94f65366ca4e3f26ceb6a46111ea7b83", + "packages/db/src/query/live/subset-demand-controller.ts": "fc0ee1159e167a52fd2490fe4f5ba42d9253eafb002528b686caa96d32302dd2", + "packages/db/src/query/live/types.ts": "062892d1db6d1fcc8ce1a36edd9cb66485080b6bc3a2734c9a3dc4cb69e1c9e6", + "packages/db/src/query/live/utils.ts": "00d2a0462ea2a997f50d104f641e9837cdf1341fc763116a0df773f6888f1646", + "packages/db/src/query/optimizer.ts": "4f359a9488bc178dcfcb5bbe56c04ab5589575c1224afffdd5b082d0cd1e8059", + "packages/db/src/query/pooled-live-query.ts": "490a7efb3318cf7c089d71af1e6f64ab444416a8662831dc34505dfd050e132b", + "packages/db/src/query/pooled-source.ts": "777947447dc196cc34ad0b2be83c13ba4736997215816c228ff2a8abd172e53a", + "packages/db/src/query/query-once.ts": "1399a24809ce83173f0d952ab35620bc4430874cb96ab14229495fad3ef57478", + "packages/db/src/query/runtime-reference-identity.ts": "c1c695e80771ab545e58254381333bd24469813d69f448106df2dc5a5de1db48", + "packages/db/src/query/subset-dedupe.ts": "c535bb2a38db491d1c11024c88c71dc1664a59bae3c19f1f5bec35d37d5b99de", + "packages/db/src/query/validate-limit.ts": "f4838c2d3bedfffa869ef205dc2f16515183c17b8f6502feee7978a65d588014", + "packages/db/src/scheduler.ts": "b21cbbdc088b3c1dc4840b7db857ee7f262e6958dc8bc300398ad8e93da4f01a", + "packages/db/src/strategies/commit-completion.ts": "96dc5b54ee70de38e2458800bafab3ebc2880afec7eb48e197831f55a331065e", + "packages/db/src/strategies/debounceStrategy.ts": "8ab894803575f1cfab85939adbf67637342bf2e230e34d0db9bb642f205cdce5", + "packages/db/src/strategies/index.ts": "89409b3e87ef0c9366d5fc045289330d204cc58b33b8a08fb27cf0e67332a9e4", + "packages/db/src/strategies/queueStrategy.ts": "a7a0df7331b92af04b2ee3391620eeee5a37ca0a9a9d1d146066f0c14c6cb6e0", + "packages/db/src/strategies/serial-pacer.ts": "63f4aa8f7aacd4bbe5cc3d56173fdb9231fedea68bb721bb2d420cf2303ec679", + "packages/db/src/strategies/throttleStrategy.ts": "028b5a000cc5a49a0176a42f0bb0c5cbb0a71849e543b523b080942947f40cb7", + "packages/db/src/strategies/types.ts": "ac0628103f8d79d035550dfc7486bb4e6be9608ee3c4e820dcdf718f7aa573df", + "packages/db/src/sync-persistence.ts": "7052e177e444acbe47b57dc5d5bf7f57aae339c7ef6b7308765ea56f81bd4251", + "packages/db/src/sync-receipt.ts": "5ab4074603d96c23decd4fae499ed55f3a6ee5077e379f370d9b76fd90565399", + "packages/db/src/transaction-commit-work.ts": "b3c341c01f7a8b1207683fb3388b66b1173481f43ea59160e1922778e64872fe", + "packages/db/src/transactions.ts": "3f459a59cbd73f5601b013e7bc3e15c16ba124c08603bbe139bc1554c915e723", + "packages/db/src/types.ts": "152fd447c615a76398e0f8e4f0714957df7879a77cb51f89b4fef40f83bcc367", + "packages/db/src/utils.ts": "4db39cbcf54439490be28da88b509b97b1ba08a3b98388ac8171399f44f7dd91", + "packages/db/src/utils/array-utils.ts": "a151c6b1779cf975e85e53a7b2328865889738df1f0d0fc3b8a8e466d15911f2", + "packages/db/src/utils/browser-polyfills.ts": "b3212d22af7254eb8c286d89393eb043324abd0b5a7ddbc8eaaa505e292b437b", + "packages/db/src/utils/btree.ts": "e2172d757bfdaf3e528fe94864876fac9de24a66302ed1930d108daa1f525b1e", + "packages/db/src/utils/callbacks.ts": "da4d6fc8d94bf93d07442eefbebd1ec0c183ef559fa7eebceb51b3652816708a", + "packages/db/src/utils/comparison.ts": "78c8163a2b6819ffd59f5aedc4b40d0490042c7dc3ca0799e84a2f0f9fb170de", + "packages/db/src/utils/cursor.ts": "b728649d395a8e4e61cd6a63479be92ce2d4d4a08dc73beb549b92dafec5181f", + "packages/db/src/utils/error.ts": "133924e3809af4a69826c08774455f12f10aba675cbc92a4298525868bba4ece", + "packages/db/src/utils/get-or-create.ts": "eb56ba9e1a6eddecc8241062cb9a4ea0afca7437fbb50f0404de1276a611ee82", + "packages/db/src/utils/index-optimization.ts": "034310477e43f29bfe3493a56ee3b3524378ae3f941f4a452e6a15b9aec24425", + "packages/db/src/utils/source-record.ts": "48023571bd2e850170b78a34a3a9d14940d97742f510f96cad4baaf4a75694e3", + "packages/db/src/utils/type-guards.ts": "b7a63accd5abd4dd5c93bb451650fc962a2fdcc3981e70f0b7b373ebeb5f07db", + "packages/db/src/utils/uuid.ts": "0365c5c02b46eabac53562dac87b342656e2774b36385a094c16b3a9db3a5ca1", + "packages/db/src/virtual-props.ts": "b06e07f9fe58b1ef94b4b02b4903562cd6cbb4798f1f0789c2ffe607fb501368", + "scripts/bench/compare-incremental-update.ts": "d2f5b4dbc79500906fa1930ab4c630297015c649ebcb6e174c0020b8788662ce", + "scripts/bench/incremental-update.ts": "3f50520ad800f861b585175c32f04a267a875ff9ca71595af7d1ff863b74dad2" + }, + "benchmark": { + "baseReport": "net-negative-benchmark-base-after.json", + "candidateReport": "shipped-final-benchmark.json", + "writeRatio": 0.91, + "coldRatio": 0.8, + "gate": "PASS", + "diagnosticFlags": 0, + "retainedCases": 588 + }, + "shippedSize": { + "fullBundleJsDelta": -155, + "fullBundleGzipDelta": -94, + "fullBundleBrotliDelta": -85, + "appJsDelta": -266, + "includesJsDelta": 479, + "includesGzipDelta": 73, + "includesBrotliDelta": -18, + "allEsmJsDelta": -1667 + }, + "replay": { + "sourceSha256": "076aadefe2309f14f085ad1ff1cf71c983fd0ebd41ca6baad28695f5ffe18aeb", + "property": "join-result-key.whole-source", + "seed": -540621864, + "path": "0:0:0:0:0", + "mutantExit": 1, + "restoredExit": 0 + } } } diff --git a/docs/guides/live-queries.md b/docs/guides/live-queries.md index 5a2037b21d..391853cba6 100644 --- a/docs/guides/live-queries.md +++ b/docs/guides/live-queries.md @@ -33,7 +33,9 @@ Live query results include computed, read-only virtual properties on every row: - `$hasPendingWrites`: `true` while a pending local optimistic mutation affects the row; otherwise `false`. It is always `false` for local-only collections. It does not indicate server acknowledgement. - `$origin`: Collection attribution for the current row. Optimistic rows are `"local"`; source rows use key and timing, not a source client ID. A peer write can be `"local"`. A truncate does not consume an active mutation's attribution for an untouched key. See [VirtualOrigin](../reference/type-aliases/VirtualOrigin.md) for settlement, truncate, and overlap rules. Local-only Collections always use `"local"`. -- `$key`: the row key for the result. +- `$key`: the row key for the result. Joined rows use a composite key for each + pair, including whole-source selections and spreads. An explicit `getKey` + replaces that key. Source-attributed selections retain the other source fields. - `$collectionId`: the selected source Collection's ID for a whole-row `.select` or a `.select` projection that spreads a source row, including a joined row. With multiple source spreads, the last spread supplies the metadata. Other projections receive the live-query Collection's ID, regardless of selected virtual field names. A functional `.fn.select()` retains source metadata only when it returns a source row directly. A new object, including a spread, receives the live-query Collection's metadata. These props can be used in `where`, `select`, and `orderBy` clauses. They are added to diff --git a/packages/db/mangle-cache.json b/packages/db/mangle-cache.json index a247a23a47..b8555dbd63 100644 --- a/packages/db/mangle-cache.json +++ b/packages/db/mangle-cache.json @@ -2,7 +2,6 @@ "truncateReplayState": "o", "subsetDemands": "C", "sortedValues": "J", - "currentWindow": "L", "activeFetchPromise": "Q", "stagedContinuation": "S", "isSyncRunGenerationCurrent": "Z", @@ -242,7 +241,6 @@ "warnedPlans": "eO", "abandonTruncateReplay": "eP", "captureEntries": "eQ", - "cleanupRetiredEntries": "eR", "comparisonOpts": "eS", "createSyncMetadataApi": "eT", "pendingSourceRecovery": "eV", @@ -347,9 +345,7 @@ "publishReplayRows": "gy", "afterPreloadMark": "gz", "resumeSubscriber": "gA", - "beginWrite": "gB", "detach": "gC", - "copyRows": "gD", "attach": "gF", "sortedExactValues": "gG", "retiringSupersededAcquisitions": "l", @@ -431,5 +427,10 @@ "grownPrefixRows": "gZ", "ownPrefixEnd": "he", "sourceListenerCleanups": "cb", - "cachedRows": "dB" + "cachedRows": "dB", + "currentWindow": "a1", + "valueResolverCache": "a2", + "settledSourcePrefix": "b1", + "resolveRoot": "b2", + "resolveFacade": "D" } diff --git a/packages/db/package.json b/packages/db/package.json index de03eff800..421ce711aa 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -23,7 +23,7 @@ "test": "vitest --run", "test:dist": "vitest run --config vitest.dist.config.ts", "test:facade-retention": "node --expose-gc --import tsx tests/facade-retention.probe.ts", - "test:oracles": "vitest --run --coverage.enabled=false tests/reverse-index-oracle.property.test.ts tests/query/compiler/in-evaluator-oracle.property.test.ts tests/cleanup-queue-oracle.property.test.ts tests/comparison-oracle.property.test.ts tests/duration-query-equality-oracle.test.ts tests/cursor-oracle.property.test.ts tests/index-update-oracle.property.test.ts tests/utils-oracle.property.test.ts tests/change-event-history-oracle.test.ts tests/index-suggestion-oracle.test.ts tests/btree-map-oracle.test.ts tests/paced-mutations-oracle.test.ts tests/db-client-hydration-authority-oracle.test.ts tests/local-storage-order-oracle.test.ts tests/local-storage-value-fidelity-oracle.property.test.ts tests/collection-cleanup-restart-oracle.test.ts tests/collection-gc-transaction-oracle.property.test.ts tests/collection-gc-retention-oracle.property.test.ts tests/collection-gc-mutation-oracle.property.test.ts tests/effect-disposal-oracle.test.ts tests/optimistic-transaction-oracle.property.test.ts tests/transaction-ownership-oracle.property.test.ts tests/optimistic-settlement-boundaries-oracle.test.ts tests/optimistic-history-publication-oracle.test.ts tests/optimistic-history-outcomes-oracle.test.ts tests/collection-metadata-publication-oracle.property.test.ts tests/collection-index-value-oracle.test.ts tests/collection-state-retention-oracle.property.test.ts tests/collection-subscription-lifecycle-history-oracle.property.test.ts tests/collection-subscription-lifecycle-oracle.test.ts tests/collection-subscription-reentrancy-oracle.test.ts tests/collection-subscription-lifecycle-publication-oracle.property.test.ts tests/collection-subscription-replay-oracle.property.test.ts tests/d2-source-reconciliation-oracle.property.test.ts tests/live-query-cache-options-oracle.test.ts tests/mutation-confirmation-oracle.test.ts tests/mutation-handler-types-oracle.test.ts tests/live-query-observer-history-oracle.property.test.ts tests/live-query-observer-hydration-oracle.property.test.ts tests/live-query-observer-snapshot-oracle.property.test.ts tests/query/cold-join-reconciliation-oracle.test.ts tests/query/identity-output-shape-oracle.test.ts tests/query/optimizer-semantics-oracle.test.ts tests/query/index-path-collision-oracle.test.ts tests/query/custom-index-order-selection-oracle.test.ts tests/query/mixed-index-order-oracle.test.ts tests/query/includes-collection-oracle.property.test.ts tests/query/includes-functional-projection-oracle.test.ts tests/query/includes-functional-input-boundary.test.ts tests/query/includes-context-transport-oracle.test.ts tests/query/includes-cross-formulation-oracle.property.test.ts tests/query/includes-optimistic-oracle.property.test.ts tests/query/includes-oracle.property.test.ts tests/query/includes-alias-shadowing-oracle.test.ts tests/query/includes-outer-join-route-work-oracle.test.ts tests/query/includes-publication-oracle.test.ts tests/query/includes-query-shape-oracle.test.ts tests/query/subquery-user-value-oracle.test.ts tests/query/includes-temporal-oracle.test.ts tests/query/includes-work-counter-oracle.test.ts tests/query/load-subset-oracle.property.test.ts tests/query/load-subset-replay-refinement-oracle.test.ts tests/query/load-subset-source-readiness-refinement-oracle.test.ts tests/query/load-subset-transaction-refinement-oracle.test.ts tests/query/ordered-source-loader-state-oracle.test.ts tests/query/ordered-demand-retirement.test.ts tests/query/ordered-default-work.test.ts tests/query/ordered-lifecycle-oracle.property.test.ts tests/query/ordered-work-oracle.property.test.ts tests/query/pagination-oracle.property.test.ts tests/query/includes-space-oracle.test.ts tests/query/virtual-row-fields-oracle.test.ts tests/query/virtual-row-fields-input-oracle.test.ts tests/query/virtual-row-fields-effect-oracle.test.ts tests/query/virtual-row-fields-types-oracle.test.ts tests/query/where-predicate-publication-oracle.property.test.ts tests/query/join-result-key-oracle.property.test.ts tests/query/pooled-live-query-oracle.property.test.ts tests/live-query-deferred-acquisition-oracle.test.ts tests/flat-change-tracking-oracle.property.test.ts tests/truncate-readiness-oracle.test.ts tests/proxy-detachment-contract-oracle.test.ts tests/production-error-messages-oracle.test.ts tests/query/bucket-facade-rollback-oracle.property.test.ts tests/query/aggregate-select-oracle.property.test.ts tests/query/load-subset-joint-replay-oracle.property.test.ts", + "test:oracles": "vitest --run --coverage.enabled=false tests/reverse-index-oracle.property.test.ts tests/query/compiler/in-evaluator-oracle.property.test.ts tests/query/compiler/group-by-pipeline-oracle.test.ts tests/cleanup-queue-oracle.property.test.ts tests/comparison-oracle.property.test.ts tests/duration-query-equality-oracle.test.ts tests/cursor-oracle.property.test.ts tests/index-update-oracle.property.test.ts tests/utils-oracle.property.test.ts tests/change-event-history-oracle.test.ts tests/index-suggestion-oracle.test.ts tests/btree-map-oracle.test.ts tests/paced-mutations-oracle.test.ts tests/db-client-hydration-authority-oracle.test.ts tests/local-storage-order-oracle.test.ts tests/local-storage-value-fidelity-oracle.property.test.ts tests/collection-cleanup-restart-oracle.test.ts tests/collection-gc-transaction-oracle.property.test.ts tests/collection-gc-retention-oracle.property.test.ts tests/collection-gc-mutation-oracle.property.test.ts tests/effect-disposal-oracle.test.ts tests/optimistic-transaction-oracle.property.test.ts tests/transaction-ownership-oracle.property.test.ts tests/optimistic-settlement-boundaries-oracle.test.ts tests/optimistic-history-publication-oracle.test.ts tests/optimistic-history-outcomes-oracle.test.ts tests/collection-metadata-publication-oracle.property.test.ts tests/collection-index-value-oracle.test.ts tests/collection-state-retention-oracle.property.test.ts tests/collection-subscription-lifecycle-history-oracle.property.test.ts tests/collection-subscription-lifecycle-oracle.test.ts tests/collection-subscription-reentrancy-oracle.test.ts tests/collection-subscription-lifecycle-publication-oracle.property.test.ts tests/collection-subscription-replay-oracle.property.test.ts tests/d2-source-reconciliation-oracle.property.test.ts tests/live-query-cache-options-oracle.test.ts tests/mutation-confirmation-oracle.test.ts tests/mutation-handler-types-oracle.test.ts tests/live-query-observer-history-oracle.property.test.ts tests/live-query-observer-hydration-oracle.property.test.ts tests/live-query-observer-snapshot-oracle.property.test.ts tests/query/cold-join-reconciliation-oracle.test.ts tests/query/identity-output-shape-oracle.test.ts tests/query/optimizer-semantics-oracle.test.ts tests/query/index-path-collision-oracle.test.ts tests/query/custom-index-order-selection-oracle.test.ts tests/query/mixed-index-order-oracle.test.ts tests/query/includes-collection-oracle.property.test.ts tests/query/includes-functional-projection-oracle.test.ts tests/query/includes-functional-input-boundary.test.ts tests/query/public-container-copy-oracle.test.ts tests/query/includes-context-transport-oracle.test.ts tests/query/includes-cross-formulation-oracle.property.test.ts tests/query/includes-optimistic-oracle.property.test.ts tests/query/includes-oracle.property.test.ts tests/query/includes-alias-shadowing-oracle.test.ts tests/query/includes-outer-join-route-work-oracle.test.ts tests/query/includes-publication-oracle.test.ts tests/query/includes-query-shape-oracle.test.ts tests/query/subquery-user-value-oracle.test.ts tests/query/includes-temporal-oracle.test.ts tests/query/includes-work-counter-oracle.test.ts tests/query/load-subset-oracle.property.test.ts tests/query/load-subset-replay-refinement-oracle.test.ts tests/query/load-subset-source-readiness-refinement-oracle.test.ts tests/query/load-subset-transaction-refinement-oracle.test.ts tests/query/ordered-source-loader-state-oracle.test.ts tests/query/ordered-demand-retirement.test.ts tests/query/ordered-default-work.test.ts tests/query/ordered-lifecycle-oracle.property.test.ts tests/query/ordered-work-oracle.property.test.ts tests/query/pagination-oracle.property.test.ts tests/query/includes-space-oracle.test.ts tests/query/virtual-row-fields-oracle.test.ts tests/query/virtual-row-fields-input-oracle.test.ts tests/query/virtual-row-fields-effect-oracle.test.ts tests/query/virtual-row-fields-types-oracle.test.ts tests/query/where-predicate-publication-oracle.property.test.ts tests/query/join-result-key-oracle.property.test.ts tests/query/pooled-live-query-oracle.property.test.ts tests/live-query-deferred-acquisition-oracle.test.ts tests/flat-change-tracking-oracle.property.test.ts tests/truncate-readiness-oracle.test.ts tests/proxy-detachment-contract-oracle.test.ts tests/production-error-messages-oracle.test.ts tests/query/bucket-facade-rollback-oracle.property.test.ts tests/query/aggregate-select-oracle.property.test.ts tests/query/load-subset-joint-replay-oracle.property.test.ts", "bench:nested-includes": "vitest bench tests/query/includes-performance.bench.ts --run", "test:indexed-db:package": "pnpm --filter @tanstack/db... build && vitest run --config vitest.indexed-db.package.config.ts", "test:collection-gc:browser": "playwright test --config playwright.collection-gc.config.ts", diff --git a/packages/db/src/query/builder/functions.ts b/packages/db/src/query/builder/functions.ts index ff7fc5de0e..3983a552e9 100644 --- a/packages/db/src/query/builder/functions.ts +++ b/packages/db/src/query/builder/functions.ts @@ -79,6 +79,35 @@ type CaseWhenResult< [TValues, TConditions] > +// Keep the first six conditions expression-like, as the former overloads did. +// Beyond five pairs the public result retains its existing any fallback. +type CaseWhenInputs< + T extends Array, + TPairs extends Array = [], +> = TPairs[`length`] extends 6 + ? T + : T extends [unknown, unknown, ...infer Rest extends Array] + ? [ExpressionLike, CaseWhenValue, ...CaseWhenInputs] + : T + +type CaseWhenOutput< + T extends Array, + TValues extends Array = [], + TConditions extends Array = [], +> = T extends [infer Default extends CaseWhenValue] + ? CaseWhenResult<[...TValues, Default], true, TConditions> + : T extends [] + ? CaseWhenResult + : TConditions[`length`] extends 5 + ? any + : T extends [ + infer Condition extends ExpressionLike, + infer Value extends CaseWhenValue, + ...infer Rest extends Array, + ] + ? CaseWhenOutput + : never + // Helper type to extract the underlying type from various expression types type ExtractType = T extends RefProxy @@ -243,15 +272,6 @@ export function lte(left: any, right: any): BasicExpression { export function and< T extends [ExpressionLike, ExpressionLike, ...Array], >(...args: T): WithAggregate, T> -export function and( - left: ExpressionLike, - right: ExpressionLike, -): BasicExpression -export function and( - left: ExpressionLike, - right: ExpressionLike, - ...rest: Array -): BasicExpression export function and( left: ExpressionLike, right: ExpressionLike, @@ -268,15 +288,6 @@ export function and( export function or< T extends [ExpressionLike, ExpressionLike, ...Array], >(...args: T): WithAggregate, T> -export function or( - left: ExpressionLike, - right: ExpressionLike, -): BasicExpression -export function or( - left: ExpressionLike, - right: ExpressionLike, - ...rest: Array -): BasicExpression export function or( left: ExpressionLike, right: ExpressionLike, @@ -480,189 +491,9 @@ export function coalesce]>( * }) * ``` */ -export function caseWhen( - condition1: C1, - value1: V1, -): CaseWhenResult<[V1], false, [C1]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - D extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - defaultValue: D, -): CaseWhenResult<[V1, D], true, [C1]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, -): CaseWhenResult<[V1, V2], false, [C1, C2]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - D extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - defaultValue: D, -): CaseWhenResult<[V1, V2, D], true, [C1, C2]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, -): CaseWhenResult<[V1, V2, V3], false, [C1, C2, C3]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - D extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - defaultValue: D, -): CaseWhenResult<[V1, V2, V3, D], true, [C1, C2, C3]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - C4 extends ExpressionLike, - V4 extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - condition4: C4, - value4: V4, -): CaseWhenResult<[V1, V2, V3, V4], false, [C1, C2, C3, C4]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - C4 extends ExpressionLike, - V4 extends CaseWhenValue, - D extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - condition4: C4, - value4: V4, - defaultValue: D, -): CaseWhenResult<[V1, V2, V3, V4, D], true, [C1, C2, C3, C4]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - C4 extends ExpressionLike, - V4 extends CaseWhenValue, - C5 extends ExpressionLike, - V5 extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - condition4: C4, - value4: V4, - condition5: C5, - value5: V5, -): CaseWhenResult<[V1, V2, V3, V4, V5], false, [C1, C2, C3, C4, C5]> -export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - C4 extends ExpressionLike, - V4 extends CaseWhenValue, - C5 extends ExpressionLike, - V5 extends CaseWhenValue, - D extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - condition4: C4, - value4: V4, - condition5: C5, - value5: V5, - defaultValue: D, -): CaseWhenResult<[V1, V2, V3, V4, V5, D], true, [C1, C2, C3, C4, C5]> export function caseWhen< - C1 extends ExpressionLike, - V1 extends CaseWhenValue, - C2 extends ExpressionLike, - V2 extends CaseWhenValue, - C3 extends ExpressionLike, - V3 extends CaseWhenValue, - C4 extends ExpressionLike, - V4 extends CaseWhenValue, - C5 extends ExpressionLike, - V5 extends CaseWhenValue, ->( - condition1: C1, - value1: V1, - condition2: C2, - value2: V2, - condition3: C3, - value3: V3, - condition4: C4, - value4: V4, - condition5: C5, - value5: V5, - condition6: ExpressionLike, - value6: CaseWhenValue, - ...rest: Array -): any + T extends [ExpressionLike, CaseWhenValue, ...Array], +>(...args: T & CaseWhenInputs): CaseWhenOutput export function caseWhen(...args: Array): any { if (args.length < 2) { throw new Error( diff --git a/packages/db/src/query/compiler/index.ts b/packages/db/src/query/compiler/index.ts index e723ea6f4f..5fb83aecc8 100644 --- a/packages/db/src/query/compiler/index.ts +++ b/packages/db/src/query/compiler/index.ts @@ -1252,6 +1252,12 @@ function compileQueryInternal( for (const alias of metadataSource) if (row[alias] != null) metadata = getSourceMetadata(row, alias) } + // A source owns attribution, but a joined occurrence has its own identity. + // Collection publication supplies its computed or explicitly configured key. + if (query.join && metadata && `$key` in metadata) { + metadata = { ...metadata } + delete metadata.$key + } const finalResults = stripInternalRouteMetadata( isCollectionRoot ? attachVirtualPropsToSelected(selectedValue, metadata) @@ -1267,11 +1273,7 @@ function compileQueryInternal( orderByIndex, route?.correlationKey, parentKeyStream ? (route?.parentContext ?? null) : undefined, - // Source-attributed join selections keep their source key. Other - // projections need the pair identity to distinguish fan-out rows. - parentKeyStream - ? ((query.join && metadata?.$key) ?? row[INCLUDES_PUBLIC_KEY] ?? key) - : undefined, + parentKeyStream ? (row[INCLUDES_PUBLIC_KEY] ?? key) : undefined, metadata, ], ] as unknown as [unknown, [any, string | undefined]] diff --git a/packages/db/src/query/compiler/route-metadata.ts b/packages/db/src/query/compiler/route-metadata.ts index 5aba9d34d7..7fa5256e5a 100644 --- a/packages/db/src/query/compiler/route-metadata.ts +++ b/packages/db/src/query/compiler/route-metadata.ts @@ -39,7 +39,6 @@ type PublicContainer = { PropertyDescriptor & { child?: PublicContainer } > parents: Array - dirty?: true copy?: object } @@ -225,8 +224,15 @@ function stripInternalMetadata( ): unknown { if (!isPublicContainer(value)) return value for (const key of keys) - if (Object.hasOwn(value, key)) - return transformPublicContainers(value, (leaf) => leaf, keys, false) + if (Object.hasOwn(value, key)) { + const properties: Record = + Object.getOwnPropertyDescriptors(value) + for (const omitted of keys) delete properties[omitted] + return Object.defineProperties( + createPublicContainerShell(value), + properties, + ) + } return value } @@ -235,7 +241,6 @@ export function transformPublicContainers( value: unknown, transformLeaf: (value: unknown) => unknown, omittedKeys: ReadonlySet, - recursive = true, ): unknown { const rootReplacement = transformLeaf(value) if (!Object.is(rootReplacement, value)) return rootReplacement @@ -244,8 +249,8 @@ export function transformPublicContainers( const containers = new Map() const queue: Array = [] const markDirty = (container: PublicContainer) => { - if (container.dirty) return - container.dirty = true + if (container.copy) return + container.copy = createPublicContainerShell(container.value) queue.push(container) } const visit = (current: object): PublicContainer => { @@ -268,7 +273,7 @@ export function transformPublicContainers( const child = descriptor.value descriptor.value = transformLeaf(child) if (!Object.is(descriptor.value, child)) markDirty(container) - else if (recursive && isPublicContainer(child)) { + else if (isPublicContainer(child)) { descriptor.child = visit(child) descriptor.child.parents.push(container) } @@ -279,20 +284,25 @@ export function transformPublicContainers( for (const container of queue) { for (const parent of container.parents) markDirty(parent) } - const copy = (container: PublicContainer): object => { - if (!container.dirty) return container.value - if (container.copy) return container.copy - const result = Array.isArray(container.value) - ? [] - : Object.create(Object.getPrototypeOf(container.value)) - container.copy = result + // Every dirty container has a shell before linking children, so shared + // references and cycles point to the same copy without a second recursion. + for (const container of queue) { for (const key of Reflect.ownKeys(container.properties)) { const descriptor = container.properties[key]! - if (descriptor.child) descriptor.value = copy(descriptor.child) + if (descriptor.child) + descriptor.value = descriptor.child.copy ?? descriptor.child.value } - return Object.defineProperties(result, container.properties) + Object.defineProperties(container.copy!, container.properties) } - return copy(root) + return root.copy ?? value +} + +/** Allocate a descriptor-copy target without losing array prototypes. */ +export function createPublicContainerShell(value: object): object { + const prototype = Object.getPrototypeOf(value) + return Array.isArray(value) + ? Object.setPrototypeOf([], prototype) + : Object.create(prototype) } export function isPublicContainer(value: unknown): value is object { diff --git a/packages/db/src/query/live/ARCHITECTURE.md b/packages/db/src/query/live/ARCHITECTURE.md index 47bcfd383b..a57b2abaea 100644 --- a/packages/db/src/query/live/ARCHITECTURE.md +++ b/packages/db/src/query/live/ARCHITECTURE.md @@ -377,8 +377,9 @@ facade references and cleans nested materialized rows along those paths only. Ordinary source payloads remain opaque, including in correlated queries and grouped HAVING. Clean values retain their references. Copies preserve property descriptors, prototypes and user symbols; discovering private state does not -invoke accessors. Generic adapter callers without a compiled resolver retain -the descriptor-preserving public-container walker. +invoke accessors. The internal facade adapter requires an explicit resolver. +Compiled queries supply their declared-path resolver; direct component drivers +can supply the descriptor-preserving public-container walker. Internal clean references can be equality operands, not just render identities. A cleanup copy must not change a later `eq(projected.key, parent.key)` match. @@ -393,7 +394,11 @@ decision, 2026-11-05, superseding the October 28/30 callback-normalization rules). Actual Collection row roots expose genuine computed `$key`, `$origin`, `$hasPendingWrites` and `$collectionId`. Structured whole-source selections and spreads retain source attribution; functional selections retain it only when -returning the source row directly. Other published projections receive their +returning the source row directly. Joined occurrences use their computed pair +key for `$key`, or the explicit `getKey` result. Source attribution retains +`$origin`, `$hasPendingWrites` and `$collectionId`; a source key cannot collapse +several joined occurrences. Inline values keep their authored `$key` and +multiplicity. Other published projections receive their output Collection's metadata. An authored reserved field cannot override that attribution. @@ -697,7 +702,9 @@ select throws `IncludeOperatorRequiredError`. The include exposes one stable public Collection facade per active bucket in that edge: Facade rows obey the Collection virtual-field boundary. Structured whole-row -selections and source spreads retain the selected source's metadata. Other +selections and source spreads retain the selected source's attribution. Joined +rows use pair keys for `$key`, preserving separate occurrences of one source +row. The other three fields retain source attribution. Other projections receive the facade Collection's metadata. A functional selection preserves source metadata only by returning that source row directly; a new object, including a spread, receives its output Collection's metadata diff --git a/packages/db/src/query/live/bucket-facade-adapter.ts b/packages/db/src/query/live/bucket-facade-adapter.ts index b6888e5569..deb7dccb86 100644 --- a/packages/db/src/query/live/bucket-facade-adapter.ts +++ b/packages/db/src/query/live/bucket-facade-adapter.ts @@ -1,5 +1,4 @@ import { output, serializeValue } from '@tanstack/db-ivm' -import { isPlainObject } from '../../utils/type-guards.js' import { getOrCreate } from '../../utils/get-or-create.js' import { createCollection } from '../../collection/index.js' import { @@ -73,8 +72,7 @@ export class BucketFacadeAdapter { private readonly activeBuckets = new Map>() private readonly entries = new Map>() private readonly retiredEntries = new Map>() - private resolvedValues = new WeakMap() - private compiledResolvedValues = new WeakMap< + private resolvedValues = new WeakMap< ValueResolver, WeakMap >() @@ -84,7 +82,7 @@ export class BucketFacadeAdapter { private readonly parentId: string, private readonly compilations: Array, onMessages: (count: number) => void, - private readonly resolveRoot?: ValueResolver, + private readonly resolveRoot: ValueResolver, ) { for (const compilation of compilations) { compilation.rows.pipe( @@ -142,15 +140,27 @@ export class BucketFacadeAdapter { for (const change of changes.values()) { this.prepareChange(entry, change, compilation.resolve) } - this.beginWrite( - entry, - sync, - snapshot, - publications, - [...changes.values()].map( - ({ value: [publicKey] }) => publicKey as string | number, - ), - ) + // Snapshot only a written facade and defer its events before its + // first write. Projected rows include held and still-open writes. + if (!snapshot.rows.has(entry)) { + snapshot.rows.set( + entry, + [...entry.collection._state.acceptedSyncedEntries()].map( + ([key, value]) => ({ + key, + value, + order: entry.order.get(value), + }), + ), + ) + snapshot.written.set(entry, new Set()) + publications.push(entry.collection._deferPublication()) + } + for (const { + value: [key], + } of changes.values()) + snapshot.written.get(entry)!.add(key as string | number) + sync.begin() for (const change of changes.values()) { this.applyChange( entry, @@ -232,13 +242,11 @@ export class BucketFacadeAdapter { cleanup(): void { this.cleanedUp = true - for (const byBucket of this.entries.values()) { - for (const entry of byBucket.values()) { - void entry.dispose() - } + for (const entries of [this.entries, this.retiredEntries]) { + for (const byBucket of entries.values()) + for (const entry of byBucket.values()) void entry.dispose() + entries.clear() } - this.entries.clear() - this.cleanupRetiredEntries() this.pending.clear() this.pendingActivity.clear() this.activeBuckets.clear() @@ -269,14 +277,6 @@ export class BucketFacadeAdapter { rows.set(key, change) } - private copyRows(entry: FacadeEntry): Array { - // The projected synced rows include every queued sync write, held or - // still open; the visible rows can lag behind them. - return [...entry.collection._state.acceptedSyncedEntries()].map( - ([key, value]) => ({ key, value, order: entry.order.get(value) }), - ) - } - private snapshot(): FacadeSnapshot { return { activeBuckets: new Map( @@ -350,16 +350,15 @@ export class BucketFacadeAdapter { sync.commit() } + // A rollback consumes its snapshot once. Keep the outer map identities, + // adopting their already-isolated bucket maps and sets without recopying. this.entries.clear() - for (const [edgeId, byBucket] of snapshot.entries) { - this.entries.set(edgeId, new Map(byBucket)) - } + for (const [edgeId, byBucket] of snapshot.entries) + this.entries.set(edgeId, byBucket) this.activeBuckets.clear() - for (const [edgeId, buckets] of snapshot.activeBuckets) { - this.activeBuckets.set(edgeId, new Set(buckets)) - } + for (const [edgeId, buckets] of snapshot.activeBuckets) + this.activeBuckets.set(edgeId, buckets) this.resolvedValues = new WeakMap() - this.compiledResolvedValues = new WeakMap() for (const entry of currentEntries) { if (!previousEntries.has(entry)) void entry.dispose() @@ -379,27 +378,6 @@ export class BucketFacadeAdapter { return getOrCreate(this.activeBuckets, edgeId, () => new Set()) } - /** - * Begin a facade write. Copy the facade's rows and defer its events before - * its first write in the flush, so a rollback reads only the facades the - * flush wrote. - */ - private beginWrite( - entry: FacadeEntry, - sync: FacadeSync, - snapshot: FacadeSnapshot, - publications: Array, - keys: Array, - ): void { - if (!snapshot.rows.has(entry)) { - snapshot.rows.set(entry, this.copyRows(entry)) - snapshot.written.set(entry, new Set()) - publications.push(entry.collection._deferPublication()) - } - for (const key of keys) snapshot.written.get(entry)!.add(key) - sync.begin() - } - private retireEntry(edgeId: string, bucketKey: string): void { const byBucket = this.entries.get(edgeId) const entry = byBucket?.get(bucketKey) @@ -525,53 +503,33 @@ export class BucketFacadeAdapter { entry.collection.getKeyFromItem({ $key: publicKey }) } - private resolveValue(value: unknown, resolve?: ValueResolver): unknown { - if (resolve) { - if (value === null || typeof value !== `object`) - return resolve(value, (leaf) => this.resolveValue(leaf)) - // The same relation value is validated, written, and compared as a prior - // snapshot. Resolver identity keeps different include paths independent. - const cache = getOrCreate( - this.compiledResolvedValues, - resolve, - () => new WeakMap(), - ) - if (cache.has(value)) return cache.get(value) - const result = resolve(value, (leaf) => this.resolveValue(leaf)) - cache.set(value, result) - return result - } - if (value === null || typeof value !== `object`) return value - const cached = this.resolvedValues.get(value) - if (cached !== undefined) return cached - if (isBucketFacadeRef(value)) { - const { edgeId, bucketKey } = value[BUCKET_FACADE_REF] - const facade = - this.entries.get(edgeId)?.get(bucketKey)?.collection ?? - this.retiredEntries.get(edgeId)?.get(bucketKey)?.collection ?? - this.getEntry(edgeId, bucketKey).collection - this.resolvedValues.set(value, facade) - return facade - } - if (Array.isArray(value) || isPlainObject(value)) { - const result = transformPublicContainers( - value, - (leaf) => (isBucketFacadeRef(leaf) ? this.resolveValue(leaf) : leaf), - PRIVATE_RESULT_KEYS, - ) - this.resolvedValues.set(value, result) - return result - } - return value + private resolveValue( + value: unknown, + resolve: ValueResolver = this.resolveRoot, + ): unknown { + if (value === null || typeof value !== `object`) + return resolve(value, this.resolveFacade) + // A resolver identifies the include paths; an immutable row identifies + // the snapshot. Validation, publication and prior-value reads share it. + const cache = getOrCreate( + this.resolvedValues, + resolve, + () => new WeakMap(), + ) + if (cache.has(value)) return cache.get(value) + const result = resolve(value, this.resolveFacade) + cache.set(value, result) + return result } - private cleanupRetiredEntries(): void { - for (const byBucket of this.retiredEntries.values()) { - for (const entry of byBucket.values()) { - void entry.dispose() - } - } - this.retiredEntries.clear() + private readonly resolveFacade = (leaf: unknown): unknown => { + if (!isBucketFacadeRef(leaf)) return leaf + const { edgeId, bucketKey } = leaf[BUCKET_FACADE_REF] + return ( + this.entries.get(edgeId)?.get(bucketKey)?.collection ?? + this.retiredEntries.get(edgeId)?.get(bucketKey)?.collection ?? + this.getEntry(edgeId, bucketKey).collection + ) } } @@ -580,3 +538,10 @@ function isBucketFacadeRef(value: unknown): value is BucketFacadeRef { value !== null && typeof value === `object` && BUCKET_FACADE_REF in value ) } + +export function resolvePublicValue( + value: unknown, + resolveFacade: (value: unknown) => unknown, +): unknown { + return transformPublicContainers(value, resolveFacade, PRIVATE_RESULT_KEYS) +} diff --git a/packages/db/src/query/live/collection-config-builder.ts b/packages/db/src/query/live/collection-config-builder.ts index 6e940c21ea..d9fc4f62f3 100644 --- a/packages/db/src/query/live/collection-config-builder.ts +++ b/packages/db/src/query/live/collection-config-builder.ts @@ -1198,7 +1198,7 @@ export class CollectionConfigBuilder< (count) => { syncState.messagesCount += count }, - this.valueResolverCache, + this.valueResolverCache!, ) : undefined if (bucketFacades) { diff --git a/packages/db/src/query/live/materialized-pipeline.ts b/packages/db/src/query/live/materialized-pipeline.ts index 762baf9817..6c3938bbdd 100644 --- a/packages/db/src/query/live/materialized-pipeline.ts +++ b/packages/db/src/query/live/materialized-pipeline.ts @@ -7,7 +7,10 @@ import { reduce, serializeValue, } from '@tanstack/db-ivm' -import { stripInternalCallbackMetadata } from '../compiler/route-metadata.js' +import { + createPublicContainerShell, + stripInternalCallbackMetadata, +} from '../compiler/route-metadata.js' import { codedMessage, devBuild } from '../../error-message.js' import { canonicalizeByPublicKey, @@ -492,10 +495,5 @@ function replaceIncludePath( if (Object.is(next, descriptor.value)) return value const descriptors = Object.getOwnPropertyDescriptors(value) descriptors[key] = { ...descriptor, value: next } - const copy = Array.isArray(value) - ? [] - : Object.create(Object.getPrototypeOf(value)) - if (Array.isArray(value)) - Object.setPrototypeOf(copy, Object.getPrototypeOf(value)) - return Object.defineProperties(copy, descriptors) + return Object.defineProperties(createPublicContainerShell(value), descriptors) } diff --git a/packages/db/tests/facade-retention.probe.ts b/packages/db/tests/facade-retention.probe.ts index 68aab37957..1e683b9232 100644 --- a/packages/db/tests/facade-retention.probe.ts +++ b/packages/db/tests/facade-retention.probe.ts @@ -3,7 +3,10 @@ import assert from 'node:assert/strict' import { setImmediate } from 'node:timers/promises' import { D2, MultiSet } from '@tanstack/db-ivm' -import { BucketFacadeAdapter } from '../src/query/live/bucket-facade-adapter.js' +import { + BucketFacadeAdapter, + resolvePublicValue, +} from '../src/query/live/bucket-facade-adapter.js' import { BUCKET_FACADE_REF } from '../src/query/live/materialized-pipeline.js' import type { Collection } from '../src/collection/index.js' import type { @@ -33,6 +36,7 @@ function capture( }, ], () => {}, + resolvePublicValue, ) graph.finalize() const value = { id: 1, payload: new ArrayBuffer(1024 * 1024) } diff --git a/packages/db/tests/oracle-config.ts b/packages/db/tests/oracle-config.ts index d70bef8a5e..a637b934d1 100644 --- a/packages/db/tests/oracle-config.ts +++ b/packages/db/tests/oracle-config.ts @@ -5,6 +5,7 @@ export { recordOracleReplay } from './oracle-replay-witness.js' type OracleEnvironment = Record const staticOracleProperties = [ + `query.public-container-copy`, `pagination.limit-admission-replay-pending-negative`, `pagination.limit-admission-replay-pending-valid`, `pagination.limit-admission-builder-negative`, @@ -322,6 +323,7 @@ const staticOracleProperties = [ `query-identity.equality-partition`, `where-predicate.publication`, `join-result-key.pairs`, + `join-result-key.whole-source`, `group-result-key.groups`, `pooled-live-query.publication`, `flat-change-tracking.equivalence`, diff --git a/packages/db/tests/query/bucket-facade-adapter.test.ts b/packages/db/tests/query/bucket-facade-adapter.test.ts index b3425f711f..cda2975570 100644 --- a/packages/db/tests/query/bucket-facade-adapter.test.ts +++ b/packages/db/tests/query/bucket-facade-adapter.test.ts @@ -5,7 +5,10 @@ import { createCollection } from '../../src/collection/index.js' import { createLiveQueryCollection } from '../../src/query/live-query-collection.js' import { eq } from '../../src/query/builder/functions.js' import { BasicIndex } from '../../src/indexes/basic-index.js' -import { BucketFacadeAdapter } from '../../src/query/live/bucket-facade-adapter.js' +import { + BucketFacadeAdapter, + resolvePublicValue, +} from '../../src/query/live/bucket-facade-adapter.js' import { CollectionConfigBuilder } from '../../src/query/live/collection-config-builder.js' import { BUCKET_FACADE_REF } from '../../src/query/live/materialized-pipeline.js' import { mockSyncCollectionOptions, stripVirtualProps } from '../utils.js' @@ -77,6 +80,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() const ref: BucketFacadeRef = { @@ -140,6 +144,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() const bucketKey = `group` @@ -226,6 +231,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() @@ -279,6 +285,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() @@ -454,6 +461,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() @@ -549,6 +557,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() diff --git a/packages/db/tests/query/bucket-facade-rollback-support.ts b/packages/db/tests/query/bucket-facade-rollback-support.ts index 856b133212..59389772a4 100644 --- a/packages/db/tests/query/bucket-facade-rollback-support.ts +++ b/packages/db/tests/query/bucket-facade-rollback-support.ts @@ -1,6 +1,9 @@ import { D2, MultiSet } from '@tanstack/db-ivm' import { expect } from 'vitest' -import { BucketFacadeAdapter } from '../../src/query/live/bucket-facade-adapter.js' +import { + BucketFacadeAdapter, + resolvePublicValue, +} from '../../src/query/live/bucket-facade-adapter.js' import { createTransaction } from '../../src/transactions.js' import { stripVirtualProps } from '../utils.js' import type { Collection } from '../../src/collection/index.js' @@ -146,6 +149,7 @@ export class Driver { }, ], () => {}, + resolvePublicValue, ) this.graph.finalize() } diff --git a/packages/db/tests/query/bucket-facade-rollback.test.ts b/packages/db/tests/query/bucket-facade-rollback.test.ts index ab8b55381d..9e33ef5b94 100644 --- a/packages/db/tests/query/bucket-facade-rollback.test.ts +++ b/packages/db/tests/query/bucket-facade-rollback.test.ts @@ -1,6 +1,9 @@ import { D2, MultiSet } from '@tanstack/db-ivm' import { describe, expect, it } from 'vitest' -import { BucketFacadeAdapter } from '../../src/query/live/bucket-facade-adapter.js' +import { + BucketFacadeAdapter, + resolvePublicValue, +} from '../../src/query/live/bucket-facade-adapter.js' import { createTransaction } from '../../src/transactions.js' import { stripVirtualProps } from '../utils.js' import { BUCKET_FACADE_REF } from '../../src/query/live/materialized-pipeline.js' @@ -87,6 +90,7 @@ describe(`bucket facade rollback`, () => { }, ], () => {}, + resolvePublicValue, ) graph.finalize() const entries = ( diff --git a/packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts b/packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts new file mode 100644 index 0000000000..27ac136de2 --- /dev/null +++ b/packages/db/tests/query/compiler/group-by-pipeline-oracle.test.ts @@ -0,0 +1,239 @@ +import { D2, MultiSet, output } from '@tanstack/db-ivm' +import { describe, expect, test } from 'vitest' +import { coalesce } from '../../../src/query/builder/functions.js' +import { processGroupBy } from '../../../src/query/compiler/group-by.js' +import { grouping } from '../../../src/query/compiler/grouping.js' +import { createValueIdentity } from '../../../src/query/equality-value-identity.js' +import { Aggregate, Func, PropRef, Value } from '../../../src/query/ir.js' +import { declareOracle } from '../../oracle-declaration.js' +import { createOracleReach } from '../../oracle-reach.js' +import type { Select } from '../../../src/query/ir.js' +import type { KeyedNamespacedRow } from '../../../src/types.js' + +/** + * Group reduction agrees with batch partitioning and aggregation after each + * input replacement: one keyed selection per nonempty group that HAVING keeps. + * Authority: the aggregate/group laws in live/ARCHITECTURE.md. The 2026-11-05 + * boundary-only metadata decision assigns Collection attribution at publication, + * so this compiler component judges keys and selected values, not source pending, + * origin or Collection IDs. Public metadata remains owned by the publication + * oracle; this component does not exercise a Collection or correlated routes. + * + * The finite grammar preserves all thirty prior combinations of explicit or + * implicit grouping, no/plain/wrapped selection and five HAVING forms. Every + * history starts empty, installs rows, moves a member while changing its value, + * empties the relation and reenters. Pending source flags vary independently of + * the partition/sum law. Ordering of groups is not promised here. + */ +type Row = { id: number; group: number; amount: number; local: boolean } +type Result = { key: unknown; selected: unknown } + +const totalAlias = `__tanstack_group_synced` +const initial: Array = [ + { id: 1, group: 1, amount: 2, local: false }, + { id: 2, group: 1, amount: 5, local: true }, + { id: 3, group: 2, amount: 9, local: false }, +] +const snapshots = [ + { checkpoint: `empty-start`, rows: [] }, + { checkpoint: `populated`, rows: initial }, + { + checkpoint: `member-move`, + rows: [initial[0]!, { ...initial[1]!, group: 2, amount: 3, local: false }], + }, + { checkpoint: `empty-after-delete`, rows: [] }, + { checkpoint: `reentry`, rows: initial }, +] + +const cases = [false, true].flatMap((grouped) => + ([`none`, `plain`, `wrapped`] as const).flatMap((selection) => + ([`none`, `expression`, `function`, `false`, `null`] as const).map( + (having) => ({ grouped, selection, having }), + ), + ), +) +type Case = (typeof cases)[number] + +// Batch recomputation uses plain rows and arithmetic, never compiler evaluators, +// internal aggregate aliases or the reducer's retained state. Empty groups have +// no row. Wrapped selection adds the group value after summing its members. +function expectedGroupRows( + rows: ReadonlyArray, + scenario: Case, +): Array { + const groups = new Map>() + for (const row of rows) { + const key = scenario.grouped ? row.group : `single_group` + groups.set(key, [...(groups.get(key) ?? []), row]) + } + return [...groups].flatMap(([key, members]) => { + if (scenario.having === `false` || scenario.having === `null`) return [] + const amount = + members.reduce((sum, row) => sum + row.amount, 0) + + (scenario.selection === `wrapped` && scenario.grouped ? Number(key) : 0) + if ( + scenario.having !== `none` && + scenario.selection !== `none` && + amount <= 5 + ) + return [] + return [ + { + key, + selected: + scenario.selection === `none` + ? scenario.grouped + ? { __key_0: key } + : {} + : { + ...(scenario.grouped ? { group: key } : {}), + [totalAlias]: amount, + }, + }, + ] + }) +} + +// Accumulated deltas must contain each expected row exactly once. Inspecting +// weights and cardinality separately rejects duplicates and lost retractions. +function compareGroupRows( + actual: MultiSet, + expected: Array, +): void { + const observed = actual.getInner().map(([row, weight]) => { + expect(weight).toBe(1) + return row + }) + expect(observed).toHaveLength(expected.length) + expect(observed).toEqual(expect.arrayContaining(expected)) +} + +declareOracle({ + model: [expectedGroupRows], + check: [compareGroupRows], + grammar: [cases, snapshots], +}) + +describe(`group-by component batch refinement`, () => { + test.each(cases)( + `recomputes keyed selections: grouped=$grouped, select=$selection, having=$having`, + (scenario) => { + const { grouped, selection, having } = scenario + const graph = new D2() + const input = graph.newInput() + const groupRef = new PropRef([`row`, `group`]) + const total = new Aggregate( + `sum`, + [new PropRef([`row`, `amount`])], + grouping, + ) + // The selected alias deliberately resembles a compiler-generated field. + const select: Select | undefined = + selection === `none` + ? undefined + : { + ...(grouped ? { group: groupRef } : {}), + [totalAlias]: + selection === `plain` + ? total + : new Func(`add`, [ + coalesce(total, 0), + grouped ? groupRef : new Value(0), + ]), + } + let actual = new MultiSet() + processGroupBy( + input, + grouped ? [groupRef] : [], + createValueIdentity(), + (ref: { path: Array }) => ref.path[0] === `row`, + having === `expression` + ? [ + selection === `none` + ? new Value(true) + : new Func(`gt`, [ + new PropRef([`$selected`, totalAlias]), + new Value(5), + ]), + ] + : having === `false` || having === `null` + ? [ + having === `false` + ? new Value(false) + : new Func(`gt`, [new Value(null), new Value(5)]), + ] + : undefined, + select, + having === `function` + ? [ + (row: { $selected: Record }) => + selection === `none` || row.$selected[totalAlias]! > 5, + ] + : undefined, + ).pipe( + output((delta) => { + actual = actual + .concat( + delta.map(([key, row]) => { + expect(row.$key).toBe(key) + return { key, selected: row.$selected } + }), + ) + .consolidate() + }), + ) + graph.finalize() + + const reach = createOracleReach( + `compiler.group-by.batch`, + snapshots.map(({ checkpoint }) => checkpoint), + ) + reach.beginHistory() + let previous = new MultiSet() + // Each snapshot is delivered as a weighted replacement. Compare only after + // the actual D2 graph drains; no public Collection is synthesized by the test. + for (const { checkpoint, rows } of snapshots) { + const next = new MultiSet( + rows.map((row) => [ + [ + String(row.id), + { + row: { + ...row, + $hasPendingWrites: row.local, + $origin: row.local ? `local` : `remote`, + }, + }, + ], + 1, + ]), + ) + input.sendData(previous.negate().concat(next)) + graph.run() + previous = next + reach.reach(checkpoint) + compareGroupRows(actual, expectedGroupRows(rows, scenario)) + } + reach.assertReached() + }, + ) + + test.each([ + `lost group`, + `wrong key`, + `wrong value`, + `duplicate weight`, + ] as const)(`rejects a batch observation with %s`, (fault) => { + const expected = expectedGroupRows(initial, { + grouped: true, + selection: `plain`, + having: `none`, + }) + const rows = expected.map((row): [Result, number] => [{ ...row }, 1]) + if (fault === `lost group`) rows.pop() + if (fault === `wrong key`) rows[0]![0].key = `wrong-group` + if (fault === `wrong value`) rows[0]![0].selected = { [totalAlias]: -1 } + if (fault === `duplicate weight`) rows[0]![1] = 2 + expect(() => compareGroupRows(new MultiSet(rows), expected)).toThrow() + }) +}) diff --git a/packages/db/tests/query/compiler/group-by-pipeline.test.ts b/packages/db/tests/query/compiler/group-by-pipeline.test.ts index 2ebd9d0c3f..12b0bd445b 100644 --- a/packages/db/tests/query/compiler/group-by-pipeline.test.ts +++ b/packages/db/tests/query/compiler/group-by-pipeline.test.ts @@ -1,43 +1,14 @@ import { D2, MultiSet, output } from '@tanstack/db-ivm' import { describe, expect, test } from 'vitest' -import { grouping } from '../../../src/query/compiler/grouping.js' import { NonAggregateExpressionNotInGroupByError } from '../../../src/errors.js' -import { coalesce } from '../../../src/query/builder/functions.js' import { processGroupBy } from '../../../src/query/compiler/group-by.js' import { createValueIdentity } from '../../../src/query/equality-value-identity.js' -import { Aggregate, Func, PropRef, Value } from '../../../src/query/ir.js' -import type { Select } from '../../../src/query/ir.js' +import { PropRef } from '../../../src/query/ir.js' import type { KeyedNamespacedRow } from '../../../src/types.js' -type Row = { id: number; group: number; amount: number; local: boolean } - -const initial: Array = [ - { id: 1, group: 1, amount: 2, local: false }, - { id: 2, group: 1, amount: 5, local: true }, - { id: 3, group: 2, amount: 9, local: false }, -] -const snapshots = [ - [], - initial, - [initial[0]!, { ...initial[1]!, group: 2, amount: 3, local: false }], - [], - initial, -] - -const cases = [false, true].flatMap((grouped) => - ([`none`, `plain`, `wrapped`] as const).flatMap((selection) => - ([`none`, `expression`, `function`, `false`, `null`] as const).map( - (having) => ({ - grouped, - selection, - having, - }), - ), - ), -) - describe(`group-by production pipeline`, () => { - // Group metadata reports a pending write when any contributing row has one. + // Group reduction emits a keyed selection before Collection publication. + // Source pending state does not change this grouping-only result. test.each([ { name: `pending row`, @@ -54,210 +25,65 @@ describe(`group-by production pipeline`, () => { { key: `second`, pending: false }, ], }, - ] as const)(`derives grouped pending writes from $name`, ({ rows }) => { - const graph = new D2() - const input = graph.newInput() - let actual = new MultiSet() - processGroupBy( - input, - [], - createValueIdentity(), - (ref: { path: Array }) => ref.path[0] === `row`, - undefined, - undefined, - undefined, - `aggregate-result`, - ).pipe( - output((delta) => { - actual = actual.concat(delta).consolidate() - }), - ) - graph.finalize() - - input.sendData( - new MultiSet( - rows.map(({ key, pending }): [KeyedNamespacedRow, number] => [ - [ - key, - { - row: { - id: key, - $hasPendingWrites: pending, - }, - }, - ], - 1, - ]), - ), - ) - graph.run() - - expect(actual.getInner()).toHaveLength(1) - const grouped = actual.getInner()[0]![0][1] - const expectedPending = rows.some((row) => row.pending) - expect(grouped.$hasPendingWrites).toBe(expectedPending) - }) - - // A source field that is not grouped has no single value, with or without - // groupBy, so both compiles throw. - test.each([false, true])( - `rejects an ungrouped source field in SELECT: grouped=%s`, - (grouped) => { - const graph = new D2() - const compile = () => - processGroupBy( - graph.newInput(), - grouped ? [new PropRef([`row`, `group`])] : [], - createValueIdentity(), - (ref: { path: Array }) => ref.path[0] === `row`, - undefined, - { amount: new PropRef([`row`, `amount`]) }, - ) - expect(compile).toThrow(NonAggregateExpressionNotInGroupByError) - }, - ) - - test.each(cases)( - `recomputes rows and metadata: grouped=$grouped, select=$selection, having=$having`, - ({ grouped, selection, having }) => { + ] as const)( + `groups contributions independently of source pending state: $name`, + ({ rows }) => { const graph = new D2() const input = graph.newInput() - const groupRef = new PropRef([`row`, `group`]) - const total = new Aggregate( - `sum`, - [new PropRef([`row`, `amount`])], - grouping, - ) - // Exercise generated-field collision avoidance as well as wrapped refs. - const totalAlias = `__tanstack_group_synced` - const select: Select | undefined = - selection === `none` - ? undefined - : { - ...(grouped ? { group: groupRef } : {}), - [totalAlias]: - selection === `plain` - ? total - : new Func(`add`, [ - coalesce(total, 0), - grouped ? groupRef : new Value(0), - ]), - } - type Result = { - key: unknown - selected: unknown - hasPendingWrites: unknown - origin: unknown - } - let actual = new MultiSet() + let actual = new MultiSet() processGroupBy( input, - grouped ? [groupRef] : [], + [], createValueIdentity(), (ref: { path: Array }) => ref.path[0] === `row`, - having === `expression` - ? [ - selection === `none` - ? new Value(true) - : new Func(`gt`, [ - new PropRef([`$selected`, totalAlias]), - new Value(5), - ]), - ] - : having === `false` || having === `null` - ? [ - having === `false` - ? new Value(false) - : new Func(`gt`, [new Value(null), new Value(5)]), - ] - : undefined, - select, - having === `function` - ? [ - (row: { $selected: Record }) => - selection === `none` || row.$selected[totalAlias]! > 5, - ] - : undefined, - `aggregate-result`, ).pipe( output((delta) => { - // Observe the public projection, not transient reducer bookkeeping. - actual = actual - .concat( - delta.map(([key, row]) => { - expect(row.$key).toBe(key) - expect(row.$collectionId).toBe(`aggregate-result`) - return { - key, - selected: row.$selected, - hasPendingWrites: row.$hasPendingWrites, - origin: row.$origin, - } - }), - ) - .consolidate() + actual = actual.concat(delta).consolidate() }), ) graph.finalize() - let previous = new MultiSet() - for (const rows of snapshots) { - const next = new MultiSet( - rows.map((row) => [ + input.sendData( + new MultiSet( + rows.map(({ key, pending }): [KeyedNamespacedRow, number] => [ [ - String(row.id), + key, { row: { - ...row, - $hasPendingWrites: row.local, - $origin: row.local ? `local` : `remote`, + id: key, + $hasPendingWrites: pending, }, }, ], 1, ]), - ) - input.sendData(previous.negate().concat(next)) - graph.run() - previous = next + ), + ) + graph.run() - // Independent batch model: partition source rows, then sum directly. - const groups = new Map>() - for (const row of rows) { - const key = grouped ? row.group : `single_group` - groups.set(key, [...(groups.get(key) ?? []), row]) - } - const expected = [...groups].flatMap(([key, members]) => { - if (having === `false` || having === `null`) return [] - const amount = - members.reduce((sum, row) => sum + row.amount, 0) + - (selection === `wrapped` && grouped ? Number(key) : 0) - if (having !== `none` && selection !== `none` && amount <= 5) - return [] - return [ - { - key, - selected: - selection === `none` - ? grouped - ? { __key_0: key } - : {} - : { - ...(grouped ? { group: key } : {}), - [totalAlias]: amount, - }, - hasPendingWrites: members.some((row) => row.local), - origin: members.some((row) => row.local) ? `local` : `remote`, - }, - ] - }) - const observed = actual.getInner().map(([row, weight]) => { - expect(weight).toBe(1) - return row - }) - expect(observed).toHaveLength(expected.length) - expect(observed).toEqual(expect.arrayContaining(expected)) - } + expect(actual.getInner()).toHaveLength(1) + const grouped = actual.getInner()[0]![0][1] + expect(grouped.$key).toBe(`single_group`) + expect(grouped.$selected).toEqual({}) + }, + ) + + // A source field that is not grouped has no single value, with or without + // groupBy, so both compiles throw. + test.each([false, true])( + `rejects an ungrouped source field in SELECT: grouped=%s`, + (grouped) => { + const graph = new D2() + const compile = () => + processGroupBy( + graph.newInput(), + grouped ? [new PropRef([`row`, `group`])] : [], + createValueIdentity(), + (ref: { path: Array }) => ref.path[0] === `row`, + undefined, + { amount: new PropRef([`row`, `amount`]) }, + ) + expect(compile).toThrow(NonAggregateExpressionNotInGroupByError) }, ) }) diff --git a/packages/db/tests/query/join-result-key-oracle.property.test.ts b/packages/db/tests/query/join-result-key-oracle.property.test.ts index 9a951ef7a8..c7246ebc8b 100644 --- a/packages/db/tests/query/join-result-key-oracle.property.test.ts +++ b/packages/db/tests/query/join-result-key-oracle.property.test.ts @@ -35,14 +35,22 @@ * prefixes with `===` let a retracted `NaN`-keyed row survive; restoring it * fails the pinned `NaN` history. * - * Known omissions: joins over subqueries, more than two sources, custom - * `getKey`, and optimistic mutations are outside this owner. + * The pair-only campaign above does not cover joins over subqueries or more + * than two sources. The receiving grammar below adds bounded custom-key and + * optimistic-update histories without claiming arbitrary write overlap. * The mock sync source is a controlled provider; this oracle claims only the * compiler's keying of the rows it supplies, not any real adapter's behavior. */ import { fc, test as fcTest } from '@fast-check/vitest' -import { describe, expect, it } from 'vitest' -import { createLiveQueryCollection, eq } from '../../src/query/index.js' +import { afterAll, describe, expect, it } from 'vitest' +import { + Query, + createLiveQueryCollection, + eq, + include, + materialize, + toArray, +} from '../../src/query/index.js' import { createCollection } from '../../src/collection/index.js' import { oraclePropertyOptions, @@ -51,7 +59,10 @@ import { oracleRuns, } from '../oracle-config.js' import { declareOracle } from '../oracle-declaration.js' +import { createOracleReach } from '../oracle-reach.js' import { mockSyncCollectionOptions, withOracleCleanup } from '../utils.js' +import { expectedSourceMetadata } from './virtual-row-fields-source-oracle.js' +import type { QueryBuilder } from '../../src/query/builder/index.js' const property = `join-result-key.pairs` @@ -286,3 +297,497 @@ describe(`joined result key oracle`, () => { oraclePropertyOptions(80, property), )(`publishes one row per joined pair (random)`, runHistory) }) + +/** + * Whole-source selection does not turn a join into a set of source rows. + * Each pair still contributes one occurrence (live-query guide, Joins/getKey; + * maintainer decision, November 5). Published $key is its actual Collection + * entry key, including an explicit getKey. The selected source owns the other + * three metadata fields. Inline values keep their authored source fields. + * + * This receiving grammar adds direct/QueryRef placement, both selected sides, + * all four join kinds, structured/direct functional selections and spreads. + * Functional direct selection falls back to the present side on an unmatched + * pair; structured selection of an absent side is the documented empty object. + * Both spread forms can override all reserved names. Only the structured one + * retains source attribution at publication. These distinctions are required: + * removing fanout hides source-key collapse, removing unmatched pairs hides + * missing-side identity, and removing either receiving boundary hides changes + * to authored inline values or computed Collection metadata. + * + * Three unique keys per side are legal; duplicate source keys are excluded. + * Two rows per side match and one on each side is unmatched. While a selected + * source write persists, both matching peers move away and back. Settlement + * restores that source's base, followed by a remote write. Comparisons run at + * each synchronous public cut and after the mutation's settlement. This claims + * eager core behavior, not framework timing, real providers, arbitrary include + * depth or arbitrary custom-key functions. Explicit custom keys intentionally + * reduce congruent contributors; default keys retain all pairs. Correlated + * direct children filter by the left route field; QueryRef children filter by + * their exported selected route field. Absent inputs fail that WHERE equality. + */ +type SelectionRow = Row & { route: number; label: string } +type SelectionShape = + | `structured-direct` + | `functional-direct` + | `structured-spread` + | `functional-spread` +type SelectionHistory = { + join: JoinType | `right` + shape: SelectionShape + selected: `left` | `right` + composition: `direct` | `query-ref` + collision: boolean + customKey: boolean + leftKeys: Array + rightKeys: Array + label: string +} +type SelectionContext = { + schema: { selected: Partial } + baseSchema: { selected: Partial } + fromSourceName: `selected` + result: Partial + hasResult: true +} +const selectionProperty = `join-result-key.whole-source` +const selectionCuts = [ + `initial`, + `held`, + `unmatched`, + `rejoined`, + `settled`, + `remote`, +] as const +const selectionReceivers = [`root`, `facade`, `array`, `materialized`] as const +const selectionForms = ([`inner`, `left`, `right`, `full`] as const).flatMap( + (join) => + ([`left`, `right`] as const).flatMap((selected) => + ([`direct`, `query-ref`] as const).flatMap((composition) => + ( + [ + `structured-direct`, + `functional-direct`, + `structured-spread`, + `functional-spread`, + ] as const + ).flatMap((shape) => + (shape.endsWith(`spread`) ? [false, true] : [false]).flatMap( + (collision) => + [false, true].map((customKey) => ({ + join, + selected, + composition, + shape, + collision, + customKey, + })), + ), + ), + ), + ), +) +const selectionExamples: Array = selectionForms.map( + (form) => ({ + ...form, + leftKeys: [1, `1`, `unmatched,left`], + rightKeys: [`a,b`, `b,c`, `unmatched,right`], + label: `before`, + }), +) +const selectionKeysArbitrary = fc.uniqueArray(fc.constantFrom(...keyDomain), { + selector: (key) => `${typeof key}:${String(key)}`, + minLength: 3, + maxLength: 3, +}) +const selectionHistoryArbitrary: fc.Arbitrary = fc + .tuple( + fc.constantFrom(...selectionForms), + selectionKeysArbitrary, + selectionKeysArbitrary, + fc.string({ maxLength: 8 }), + ) + .map(([form, leftKeys, rightKeys, label]) => ({ + ...form, + leftKeys, + rightKeys, + label, + })) +const selectionState = ( + history: SelectionHistory, + receiver: string, + cut: string, +) => + `${history.join}/${history.selected}/${history.composition}/${history.shape}/${history.collision}/${history.customKey}/${receiver}/${cut}` +const selectionReach = createOracleReach( + selectionProperty, + selectionExamples.flatMap((history) => + selectionReceivers.flatMap((receiver) => + selectionCuts.map((cut) => selectionState(history, receiver, cut)), + ), + ), +) + +// A plain nested-loop join supplies occurrences; selecting a source changes +// its value, never the number of those occurrences. No compiler key encoder +// participates. The public key's format remains implementation freedom. +function expectedSelections( + history: SelectionHistory, + left: ReadonlyArray, + right: ReadonlyArray, + pending: ReadonlySet, + leftId: string, + rightId: string, + outputId: string, + inline: boolean, + nested: boolean, +): Array { + const pairs: Array<{ + left?: SelectionRow + right?: SelectionRow + }> = [] + for (const a of left) { + const matches = right.filter((b) => a.g === b.g) + for (const b of matches) pairs.push({ left: a, right: b }) + if (!matches.length && (history.join === `left` || history.join === `full`)) + pairs.push({ left: a }) + } + if (history.join === `right` || history.join === `full`) + for (const b of right) + if (!left.some((a) => a.g === b.g)) pairs.push({ right: b }) + const values = pairs.flatMap((pair) => { + const source = + pair[history.selected] ?? + (history.shape === `functional-direct` + ? (pair.left ?? pair.right) + : undefined) + // Correlation reads the direct left row, or the QueryRef's exported row. + // An absent row cannot satisfy that equality. + if (nested && (history.composition === `direct` ? !pair.left : !source)) + return [] + const ownerId = source === pair.left ? leftId : rightId + const sourceMetadata = source + ? expectedSourceMetadata( + source.id, + ownerId, + pending.has(source.id) && + (source === pair.left + ? history.selected === `left` + : history.selected === `right`), + ) + : undefined + const overrides = history.collision + ? { + $key: `authored-key`, + $collectionId: `authored-id`, + $origin: `local`, + $hasPendingWrites: false, + } + : {} + if (inline) return [{ ...source, ...sourceMetadata, ...overrides }] + const metadata = + source && history.shape !== `functional-spread` + ? sourceMetadata! + : expectedSourceMetadata(`unused`, outputId, false) + const { $key: _key, ...attribution } = metadata + return [{ ...source, ...attribution }] + }) + // Explicit getKey requests one congruent row per authored key, so fanout + // may intentionally reduce. The default-key lane must retain every pair. + return history.customKey && !nested + ? [...new Map(values.map((row) => [selectionCustomKey(row), row])).values()] + : values +} + +function selectionCustomKey(row: Partial): string { + return `custom:${typeof row.id}:${String(row.id)}:${String(row.g)}` +} + +// Public keys must be unique and agree with each row's readable $key. Removing +// only that already-checked key permits any composite-key encoding. Full row +// comparisons preserve duplicates and all other metadata and ordinary fields. +function checkSelections( + actual: ReadonlyArray | ReadonlyArray, + expected: ReadonlyArray, + inline: boolean, +): void { + const failures: Array = [] + const check = (assertion: () => void) => { + try { + assertion() + } catch (error) { + failures.push(error) + } + } + const rows = inline + ? (actual as ReadonlyArray) + : (actual as ReadonlyArray]>).map( + ([key, row]) => { + check(() => { + expect(typeof key === `string` || typeof key === `number`).toBe( + true, + ) + expect(row.$key, `published key equals Collection entry key`).toBe( + key, + ) + }) + const { $key: _key, ...value } = row + return value + }, + ) + if (!inline) { + const keys = (actual as ReadonlyArray).map( + ([key]) => key, + ) + check(() => + expect(new Set(keys).size, `distinct joined occurrence keys`).toBe( + expected.length, + ), + ) + } + const order = (a: object, b: object) => { + const describeRow = (row: object) => { + const { id, label, g } = row as Partial + return `${typeof id}:${String(id)}:${label}:${g}` + } + return describeRow(a).localeCompare(describeRow(b)) + } + check(() => expect([...rows].sort(order)).toEqual([...expected].sort(order))) + if (failures.length) + throw new AggregateError(failures, `Joined selection refinement`, { + cause: failures[0], + }) +} + +async function runSelectionHistory(history: SelectionHistory): Promise { + selectionReach.beginHistory() + const makeRows = (keys: ReadonlyArray, unmatched: number) => + keys.map((id, index) => ({ + id, + g: index === 2 ? unmatched : 0, + route: 1, + label: history.label, + })) + let leftTruth = makeRows(history.leftKeys, 1) + let rightTruth = makeRows(history.rightKeys, 2) + const left = createCollection( + mockSyncCollectionOptions({ + id: `selection-left`, + getKey: (row) => row.id, + initialData: leftTruth.map((row) => ({ ...row })), + }), + ) + const right = createCollection( + mockSyncCollectionOptions({ + id: `selection-right`, + getKey: (row) => row.id, + initialData: rightTruth.map((row) => ({ ...row })), + }), + ) + const parents = createCollection( + mockSyncCollectionOptions({ + id: `selection-parents`, + getKey: (row: { id: number }) => row.id, + initialData: [{ id: 1 }], + }), + ) + const select = (base: ReturnType) => { + const overrides = history.collision + ? { + $key: `authored-key`, + $collectionId: `authored-id`, + $origin: `local`, + $hasPendingWrites: false, + } + : {} + const projected = + history.shape === `functional-direct` + ? base.fn.select(({ l, r }) => + history.selected === `left` ? (l ?? r) : (r ?? l), + ) + : history.shape === `functional-spread` + ? base.fn.select(({ l, r }) => ({ + ...(history.selected === `left` ? l : r), + ...overrides, + })) + : history.shape === `structured-spread` + ? base.select(({ l, r }) => ({ + ...(history.selected === `left` ? l : r), + ...overrides, + })) + : base.select(({ l, r }) => (history.selected === `left` ? l : r)) + return (history.composition === `query-ref` + ? new Query().from({ selected: projected }) + : projected) as unknown as QueryBuilder + } + function joined() { + return new Query() + .from({ l: left }) + .join({ r: right }, ({ l, r }) => eq(l.g, r.g), history.join) + } + const root = createLiveQueryCollection({ + query: () => select(joined()), + ...(history.customKey ? { getKey: selectionCustomKey } : {}), + }) + const nested = createLiveQueryCollection((q) => + q.from({ parent: parents }).select(({ parent }) => { + const child = + history.composition === `query-ref` + ? select(joined()).where(({ selected }) => + eq(selected.route, parent.id), + ) + : select(joined().where(({ l }) => eq(l.route, parent.id))) + return { + id: parent.id, + facade: include(child), + array: toArray(child), + materialized: materialize(child), + } + }), + ) + const pending = new Set() + const failures: Array = [] + const initialKeys = new Map>() + const check = (cut: (typeof selectionCuts)[number]) => { + const parent = nested.toArray[0]! + for (const receiver of selectionReceivers) { + selectionReach.reach(selectionState(history, receiver, cut)) + try { + const inline = receiver === `array` || receiver === `materialized` + if (!inline) { + const keys = [...(receiver === `root` ? root : parent.facade).keys()] + .map((key) => `${typeof key}:${String(key)}`) + .sort() + if (cut === `initial`) initialKeys.set(receiver, keys) + else if (cut !== `unmatched`) + expect( + keys, + `${receiver}/${cut} same pairs keep their keys`, + ).toEqual(initialKeys.get(receiver)) + } + checkSelections( + receiver === `root` + ? [...root.entries()] + : receiver === `facade` + ? [...parent.facade.entries()] + : parent[receiver], + expectedSelections( + history, + leftTruth, + rightTruth, + pending, + left.id, + right.id, + receiver === `root` ? root.id : parent.facade.id, + inline, + receiver !== `root`, + ), + inline, + ) + } catch (error) { + failures.push(new Error(`${receiver}/${cut}`, { cause: error })) + } + } + } + let finishMutation = async () => {} + await withOracleCleanup(async () => { + await Promise.all([root.preload(), nested.preload()]) + check(`initial`) + const source = history.selected === `left` ? left : right + const sourceRows = () => + history.selected === `left` ? leftTruth : rightTruth + // NaN keys stay on sync paths: optimistic admission compares keys with ===. + const selectedIndex = Number.isNaN(sourceRows()[0]!.id) ? 1 : 0 + const selectedKey = sourceRows()[selectedIndex]!.id + const updateSelected = (label: string) => { + const rows = sourceRows().map((row, index) => + index === selectedIndex ? { ...row, label } : row, + ) + if (history.selected === `left`) leftTruth = rows + else rightTruth = rows + } + const heldLabel = `${history.label} held` + updateSelected(heldLabel) + pending.add(selectedKey) + const mutation = source.update(selectedKey, (row) => { + row.label = heldLabel + }) + finishMutation = async () => { + source.utils.resolveSync() + finishMutation = async () => {} + await mutation.when(`settled`) + } + expect(source.get(selectedKey)!.$hasPendingWrites).toBe(true) + check(`held`) + const peer = history.selected === `left` ? right : left + const movePeers = (group: number) => { + const rows = (history.selected === `left` ? rightTruth : leftTruth).map( + (row, index) => (index < 2 ? { ...row, g: group } : row), + ) + peer.utils.begin() + for (const row of rows.slice(0, 2)) + peer.utils.write({ type: `update`, value: { ...row } }) + peer.utils.commit() + if (history.selected === `left`) rightTruth = rows + else leftTruth = rows + } + movePeers(3) + check(`unmatched`) + movePeers(0) + check(`rejoined`) + await finishMutation() + updateSelected(history.label) + pending.clear() + check(`settled`) + updateSelected(`${history.label} remote`) + source.utils.begin() + source.utils.write({ + type: `update`, + value: { ...sourceRows()[selectedIndex]! }, + }) + source.utils.commit() + check(`remote`) + if (failures.length) + throw new AggregateError( + failures, + `Joined source receiving comparisons`, + { + cause: failures[0], + }, + ) + }, [ + () => finishMutation(), + () => root.cleanup(), + () => nested.cleanup(), + () => Promise.all([left.cleanup(), right.cleanup(), parents.cleanup()]), + ]) +} + +declareOracle({ + model: [expectedSelections], + check: [checkSelections, runSelectionHistory], + grammar: [selectionForms, selectionHistoryArbitrary], +}) +afterAll(() => { + selectionReach.assertReached() + if (process.env.TANSTACK_DB_ORACLE_STATISTICS === `1`) + process.stdout.write( + `${JSON.stringify({ property: selectionProperty, reach: Object.fromEntries(selectionReach.counts()) })}\n`, + ) +}) +describe(`whole-source joined occurrences`, () => { + if (!oracleReplayRequested()) { + it.each(selectionExamples)( + `preserves every selected occurrence: %j`, + runSelectionHistory, + ) + fcTest.prop([selectionHistoryArbitrary], { + seed: 15_811_743, + numRuns: oracleRuns(80), + })(`preserves selected occurrences (fixed)`, runSelectionHistory) + } + oracleReplayTest(fcTest, selectionProperty).prop( + [selectionHistoryArbitrary], + oraclePropertyOptions(80, selectionProperty), + )(`preserves selected occurrences (random)`, runSelectionHistory) +}) diff --git a/packages/db/tests/query/public-container-copy-oracle.test.ts b/packages/db/tests/query/public-container-copy-oracle.test.ts new file mode 100644 index 0000000000..d7dc9a1b77 --- /dev/null +++ b/packages/db/tests/query/public-container-copy-oracle.test.ts @@ -0,0 +1,228 @@ +import { D2 } from '@tanstack/db-ivm' +import { fc, test as fcTest } from '@fast-check/vitest' +import { afterAll, beforeAll, expect } from 'vitest' +import { getQueryIR } from '../../src/query/builder/index.js' +import { compileQuery } from '../../src/query/compiler/index.js' +import { + INCLUDES_ROUTING, + stripInternalCallbackMetadata, + transformPublicContainers, +} from '../../src/query/compiler/route-metadata.js' +import { materializeCompilation } from '../../src/query/live/materialized-pipeline.js' +import { Query, eq, include } from '../../src/query/index.js' +import { + oraclePropertyOptions, + oracleReplayTest, + oracleRuns, +} from '../oracle-config.js' +import { declareOracle } from '../oracle-declaration.js' +import { createOracleReach } from '../oracle-reach.js' +import { createControlledCollection } from './includes-oracle-helpers.js' +import type { ValueResolver } from '../../src/query/live/materialized-pipeline.js' + +/** + * ARCHITECTURE.md's public-value preservation law requires cleanup copies to + * retain prototypes, descriptors and user symbols without reading accessors. + * This owner checks that law at resolver return, before Collection enrichment. + * It owns copy shape; metadata attribution and opaque-payload work have their + * own owners. No provider, framework or publication timing claim follows. + * + * Every input runs all four cleanup paths, three array prototypes and both + * changed/unchanged states. Sparse sizes, values and locked lengths vary in + * fixed/fresh campaigns. Plain, derived and null prototypes distinguish array + * identity from inherited methods. Non-array opaque instances are excluded. + * Removing a structural axis loses a path, prototype or identity obligation; + * the empty and eight-slot examples pin the size range endpoints. + */ +const paths = [`shallow`, `generic`, `compiled-root`, `compiled-path`] as const +const prototypes = [`native`, `derived`, `null`] as const +const programs = paths.flatMap((path) => + prototypes.flatMap((prototype) => + [false, true].map((changed) => ({ path, prototype, changed })), + ), +) +const inputGrammar = fc.record({ + size: fc.integer({ min: 0, max: 8 }), + value: fc.integer({ min: -1, max: 1 }), + locked: fc.boolean(), +}) +type CopyInput = typeof inputGrammar extends fc.Arbitrary ? T : never +type Program = (typeof programs)[number] +class AuthoredArray extends Array {} + +// The model captures only the public copy contract. It neither traverses the +// production graph nor classifies values with production's container helper. +function expectedCopy(input: object, program: Program, replacement: object) { + const descriptors: Record = + Object.getOwnPropertyDescriptors(input) + if (program.changed) { + if (program.path === `compiled-path`) + descriptors.detail = { ...descriptors.detail!, value: replacement } + else delete descriptors[INCLUDES_ROUTING] + } + return { + source: input, + prototype: Object.getPrototypeOf(input) as unknown, + descriptors, + changed: program.changed, + } +} + +function expectCopyFollowsLaw( + actual: unknown, + expected: ReturnType, +) { + expect(Array.isArray(actual)).toBe(true) + expect(Object.getPrototypeOf(actual)).toBe(expected.prototype) + expect(actual === expected.source).toBe(!expected.changed) + const descriptors: Record = + Object.getOwnPropertyDescriptors(actual) + expect(descriptors).toEqual(expected.descriptors) + for (const key of Reflect.ownKeys(expected.descriptors)) { + const descriptor = expected.descriptors[key]! + if (`value` in descriptor) + expect(descriptors[key]?.value).toBe(descriptor.value) + } +} + +declareOracle({ + model: [expectedCopy], + check: [expectCopyFollowsLaw, checkCopyPrograms], + grammar: [programs, inputGrammar], +}) + +// Compile a real include plan, then test its resolver on supplied public +// values. The generic path also places the array below a record, so the driver +// exercises graph propagation instead of only a root replacement. +const source = createControlledCollection(`copy-law-source`) +let compiled!: ValueResolver +beforeAll(() => { + const query = new Query() + .from({ parent: source.collection }) + .select(({ parent }) => ({ + detail: include( + new Query() + .from({ child: source.collection }) + .where(({ child }) => eq(child.id, parent.id)) + .select(({ child }) => ({ id: child.id })), + ), + })) + const graph = new D2() + const input = graph.newInput<[number, { id: number }]>() + const compilation = compileQuery( + getQueryIR(query), + { parent: input, child: input }, + { [source.collection.id]: source.collection }, + {}, + {}, + new Set(), + {}, + () => {}, + ) + compiled = materializeCompilation(compilation).resolve! +}) +afterAll(() => source.collection.cleanup()) + +function checkCopyPrograms(description: CopyInput): void { + const states = programs.map( + ({ path, prototype, changed }) => `${path}/${prototype}/${changed}`, + ) + const reach = createOracleReach(`public-container-copy`, states) + const failures: Array = [] + for (const program of programs) { + reach.beginHistory() + const input: Array = new Array(description.size) + if (description.size > 0) input[description.size - 1] = description.value + Object.setPrototypeOf( + input, + program.prototype === `native` + ? Array.prototype + : program.prototype === `derived` + ? AuthoredArray.prototype + : null, + ) + let reads = 0 + const marker = { reference: true } + const replacement = { reference: false } + Object.defineProperties(input, { + detail: { value: marker, enumerable: true }, + hidden: { value: description.value }, + accessor: { + get: () => { + reads++ + return marker + }, + enumerable: true, + }, + [Symbol(`authored`)]: { value: marker }, + ...(program.changed && program.path !== `compiled-path` + ? { [INCLUDES_ROUTING]: { value: true } } + : {}), + length: { writable: !description.locked }, + }) + const before = Object.getOwnPropertyDescriptors(input) + const expected = expectedCopy(input, program, replacement) + const resolve = (leaf: unknown) => + program.path === `compiled-path` && program.changed && leaf === marker + ? replacement + : leaf + try { + const actual = + program.path === `shallow` + ? stripInternalCallbackMetadata(input) + : program.path === `generic` + ? ( + transformPublicContainers( + { input }, + resolve, + new Set([INCLUDES_ROUTING]), + ) as { input: unknown } + ).input + : compiled(input, resolve) + // A return is the component checkpoint. All states count before their + // comparison, so a failed shape cannot masquerade as missing reach. + reach.reach(`${program.path}/${program.prototype}/${program.changed}`) + expectCopyFollowsLaw(actual, expected) + expect(Object.getOwnPropertyDescriptors(input)).toEqual(before) + expect(reads).toBe(0) + } catch (error) { + failures.push( + new Error( + `${program.path}/${program.prototype}/${program.changed}: ${String(error)}`, + { cause: error }, + ), + ) + } + } + reach.assertReached() + if (failures.length) + throw new AggregateError( + failures, + `public copy law: ${failures.map(String).join(`; `)}`, + ) +} + +const property = `query.public-container-copy` +const examples: Array<[CopyInput]> = [ + [{ size: 0, value: 0, locked: false }], + [{ size: 8, value: -1, locked: true }], +] +for (const campaign of [ + { + name: `fixed`, + options: { numRuns: oracleRuns(6) + examples.length, seed: 2355, examples }, + }, + { + name: `fresh or replayed`, + options: oraclePropertyOptions(6, property, { examples }), + }, +]) { + const register = + campaign.name === `fixed` + ? oracleReplayTest(fcTest) + : oracleReplayTest(fcTest, property) + register.prop([inputGrammar], campaign.options)( + `cleanup preserves authored public copies (${campaign.name})`, + checkCopyPrograms, + ) +} diff --git a/packages/db/tests/query/virtual-row-fields-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-oracle.test.ts index 9b83e04364..d181b8d555 100644 --- a/packages/db/tests/query/virtual-row-fields-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-oracle.test.ts @@ -5,7 +5,8 @@ * `$hasPendingWrites`, `$origin`, `$key`, and `$collectionId`. The output contract * established by `includes.test.ts` keeps inline `toArray` and `materialize` * selections in their selected shape instead of publishing each selected value - * as a Collection row. Whole-row roots retain source metadata; ordinary + * as a Collection row. Whole-row roots retain source attribution; joined + * occurrences use the actual pair or explicit custom key for $key. Ordinary * projections receive the live-query Collection's metadata. An explicit * selected virtual name cannot replace source metadata at root publication. * @@ -46,7 +47,7 @@ * callback payloads and downstream metadata observations. Same-source overlap, * functional callback inputs remain separate work. The facade grammar below * adds shared/empty buckets, retirement and reactivation across child settlement. - * The selected joined row is compared with the joined source's public row at + * The selected joined row's three attribution fields follow the source at * preload, pending-write, and settled cuts; a FROM-source selection, two * opposite spread orders, and an unmatched RIGHT join distinguish a * main-source, first-spread, or last-join shortcut. The @@ -153,7 +154,8 @@ declareOracle({ model: [expectsVirtualFields, sourceOwnsMetadata, expectedAttributedRows], }) -// The independent attribution law uses authoring shape, never selected values. +// The independent non-key attribution law uses authoring shape, never selected +// values. The published key is supplied separately by the receiving identity law. function sourceOwnsMetadata(shape: string): boolean { return shape === `structured-spread` || shape === `functional-direct` } @@ -188,6 +190,9 @@ function expectedAttributedRows( sourceId: string, outputId: string, outputKey: (id: AttributionKey) => unknown, + // Single-source rows keep their source key. Joined rows use their actual + // default pair or explicit custom key (maintainer decision, November 5). + sourceKey: (id: AttributionKey) => AttributionKey = (id) => id, ) { return rows.map((row) => ({ ordinary: @@ -201,7 +206,7 @@ function expectedAttributedRows( ? { id: row.id, label: row.label } : { ...row }, metadata: sourceOwnsMetadata(shape) - ? expectedSourceMetadata(row.id, sourceId, pending.has(row.id)) + ? expectedSourceMetadata(sourceKey(row.id), sourceId, pending.has(row.id)) : { $key: outputKey(row.id), $collectionId: outputId, @@ -906,6 +911,9 @@ test.each( rows.id, live.id, outputKey, + joined || composition === `joined-query-ref` + ? (id) => (customKey ? id : (outputKey(id) as AttributionKey)) + : (id) => id, ), ) if (customKey) @@ -1218,7 +1226,11 @@ test.each( ) const owner = matched && !reverse ? right : left const key = owner === right ? `right` : `left` - const check = () => checkRootMetadata(live.toArray[0]!, owner.get(key)!) + const check = () => + checkRootMetadata(live.toArray[0]!, { + ...owner.get(key)!, + $key: [...live.keys()][0], + }) await checkWithCleanup(async () => { await live.preload() check() @@ -2438,7 +2450,7 @@ function expectedNullableSelection( sourceId: string, facadeId: string, facadeKey: string | number, -) { +): { inline: Array; facade: Array } { const inline = match ? [ { @@ -2453,7 +2465,7 @@ function expectedNullableSelection( return { inline, facade: match - ? inline + ? inline.map((row) => ({ ...row, $key: facadeKey })) : [ { $key: facadeKey, diff --git a/packages/db/tests/query/virtual-row-fields.test.ts b/packages/db/tests/query/virtual-row-fields.test.ts index cf1a16eea8..7e3f9ad88a 100644 --- a/packages/db/tests/query/virtual-row-fields.test.ts +++ b/packages/db/tests/query/virtual-row-fields.test.ts @@ -208,7 +208,7 @@ describe(`virtual metadata attribution regressions`, () => { ]) }) - test(`keeps a selected joined row's source metadata across match and pending update`, async () => { + test(`keeps joined identity and source attribution across a pending update`, async () => { const lists = createCollection( mockSyncCollectionOptions<{ id: string }>({ id: `joined-virtual-lists`, @@ -268,9 +268,9 @@ describe(`virtual metadata attribution regressions`, () => { .fn.select(({ item }) => item ?? {}), ) - // A whole-row selection names the joined item as its metadata source. - // The independent expected row is the item's public Collection row at - // each checkpoint; list metadata has a different key and Collection ID. + // The pair owns identity; the whole-row selection names its attribution + // source. These supplemental examples use the source's public metadata. + // The join key oracle independently checks multiplicity and key agreement. await checkWithCleanup(async () => { await Promise.all([ live.preload(), @@ -285,26 +285,24 @@ describe(`virtual metadata attribution regressions`, () => { const item = items.get(`item-1`)! expect(actual.label).toBe(item.label) for (const name of virtualFieldNames) { - expect(actual[name], name).toBe(item[name]) - expect(extended.toArray[0]![name], `extended ${name}`).toBe( - item[name], - ) - expect(lastItem.toArray[0]![name], `last item ${name}`).toBe( - item[name], - ) - expect(functional.toArray[0]![name], `functional ${name}`).toBe( - item[name], - ) + for (const output of [live, extended, lastItem, functional]) + expect(output.toArray[0]![name], name).toBe( + name === `$key` ? [...output.keys()][0] : item[name], + ) } } expectItemMetadata() for (const name of virtualFieldNames) { expect(fromLive.toArray[0]![name], name).toBe( - lists.get(`list-1`)![name], + name === `$key` + ? [...fromLive.keys()][0] + : lists.get(`list-1`)![name], ) expect(lastList.toArray[0]![name], `last list ${name}`).toBe( - lists.get(`list-1`)![name], + name === `$key` + ? [...lastList.keys()][0] + : lists.get(`list-1`)![name], ) } const update = items.update(`item-1`, (draft) => { @@ -356,7 +354,9 @@ describe(`virtual metadata attribution regressions`, () => { await live.preload() expect(live.toArray).toHaveLength(1) for (const name of virtualFieldNames) { - expect(live.toArray[0]![name], name).toBe(items.get(`item-1`)![name]) + expect(live.toArray[0]![name], name).toBe( + name === `$key` ? [...live.keys()][0] : items.get(`item-1`)![name], + ) } }, [() => live.cleanup(), () => items.cleanup(), () => lists.cleanup()]) }) diff --git a/scripts/bench/README.md b/scripts/bench/README.md index 8502a7e31b..33d048394f 100644 --- a/scripts/bench/README.md +++ b/scripts/bench/README.md @@ -62,9 +62,12 @@ Across their 36 cross-job pairs, absolute-direction overall ratios reach 2.76x for writes and 1.88x for hydration. Individual-case ratios reach 5.67x and 4.87x, respectively. Never gate against absolute timings from a different job. -The new three-repetition workflow still needs observed CI history. The initial -30%/50% query margins exceed every query shift in this sample; repeated ranges -supply a stricter consistency check for localized regressions. Revisit these +The first remote three-repetition run +[passes](https://github.com/TanStack/db/actions/runs/42087213348). It covers PR +head 066d0dd26 through GitHub merge commit 88544ac64, before later review fixes. +Additional same-code CI history is still needed to calibrate false positives. +The initial 30%/50% query margins exceed every query shift in this sample; +repeated ranges supply a consistency check for localized regressions. Revisit these margins with additional same-code paired runs, particularly after runner or Node changes. This finite historical sample does not prove a future noise ceiling. @@ -93,3 +96,13 @@ small overhead unresolved; neither comparison is discarded. These diagnostic baselines use pre-2312 DB sources, whereas CI compares the PR's merge base. See the [prep-review record](../../docs/contributing/oracle-reviews/2026-11-05-boundary-only-prep-review.md) for the final source binding, gate outcomes and measurement limits. + +The [high-review measurement table](high-review-2026-11-05.csv) retains all seven +later local runs (588 cases with three repetitions per case), including noisy +unchanged controls and every candidate observation. A simplified working tree +before the final pair-key amendment measures 1.00x writes and 0.96x cold against +the third predecessor control, passing the unchanged gate with one diagnostic +write flag. The final pair-key source measures 0.91x writes and 0.80x cold +against the same control, passing with no diagnostic flags. These runs compare with predecessor 708a58098, not pre-2312 or the +PR merge base. The [high-review record](../../docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md) +binds source, work, size and law evidence and preserves all observed limits. diff --git a/scripts/bench/high-review-2026-11-05.csv b/scripts/bench/high-review-2026-11-05.csv index 48394a83fb..9a52fe6766 100644 --- a/scripts/bench/high-review-2026-11-05.csv +++ b/scripts/bench/high-review-2026-11-05.csv @@ -1,337 +1,589 @@ -source,reportedSha,cpu,node,query,scenario,level,indexes,mutationMode,coldHydrateMs,writeMedianMs,coldSamplesMs,writeMedianSamplesMs -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0351249999999936,0.04108300000007148,"[5.72462500000006, 1.0351249999999936, 0.7784159999999929]","[0.05391600000007202, 0.04108300000007148, 0.03333300000008421]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6002500000000737,0.08370800000000145,"[0.6846249999999827, 0.6002500000000737, 0.5535830000000033]","[0.10508400000003348, 0.08370800000000145, 0.07229199999994762]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.3602500000000646,0.044792000000029475,"[4.9382080000000315, 2.3602500000000646, 1.4050829999999905]","[0.044792000000029475, 0.04575000000011187, 0.03054199999996854]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.7007079999999632,0.06499999999994088,"[4.827915999999959, 1.7007079999999632, 1.4844160000000102]","[0.07645800000000236, 0.06499999999994088, 0.06379200000003493]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.5674589999999853,0.04224999999996726,"[3.9017500000001064, 2.389499999999998, 3.5674589999999853]","[0.05254200000001674, 0.04224999999996726, 0.042167000000063126]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.35950000000002547,0.03441699999996217,"[0.48491599999999835, 0.3439170000000331, 0.35950000000002547]","[0.035916000000042914, 0.03424999999992906, 0.03441699999996217]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0181670000000622,0.029625000000010004,"[1.0672499999999445, 0.9009999999999536, 1.0181670000000622]","[0.02937500000007276, 0.029625000000010004, 0.03174999999998818]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.47316699999998946,0.028957999999988715,"[0.488790999999992, 0.47316699999998946, 0.4216660000000729]","[0.030624999999986358, 0.026624999999967258, 0.028957999999988715]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.453583999999978,0.018374999999991815,"[0.453583999999978, 0.45899999999994634, 0.43591700000001765]","[0.02400000000000091, 0.018374999999991815, 0.017291999999997643]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.17512499999998,0.029708000000027823,"[1.17512499999998, 1.1563750000000255, 1.2182500000000118]","[0.030167000000005828, 0.029708000000027823, 0.02845800000000054]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.354541999999924,0.0484159999999747,"[1.354541999999924, 1.2639580000000024, 1.3803749999999582]","[0.0484159999999747, 0.04650000000003729, 0.04958299999998417]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.361666000000014,0.030250000000023647,"[2.36424999999997, 2.361666000000014, 2.1252080000000433]","[0.03058299999997871, 0.030250000000023647, 0.027958000000012362]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.3018329999999878,0.02529200000003584,"[0.30504099999996015, 0.27504099999998743, 0.3018329999999878]","[0.02529200000003584, 0.02495899999996709, 0.02641700000003766]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.9264579999999114,0.17141700000001947,"[5.687125000000151, 0.9264579999999114, 0.8464999999998781]","[0.20145800000000236, 0.17141700000001947, 0.16179200000010496]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.5806250000000546,0.023374999999987267,"[4.35345899999993, 0.5806250000000546, 0.5676670000000286]","[0.02529099999992468, 0.023374999999987267, 0.021915999999919222]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.3533749999999145,0.07458299999984774,"[0.4469579999999951, 0.3501669999998285, 0.3533749999999145]","[0.09224999999992178, 0.07458299999984774, 0.07395899999983158]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.101709000000028,0.028125000000045475,"[1.0293329999999514, 1.101709000000028, 1.1210829999999987]","[0.02795800000012605, 0.029125000000021828, 0.028125000000045475]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.1549999999999727,0.05466699999988123,"[1.6447499999999309, 1.1549999999999727, 1.1247500000001764]","[0.05349999999998545, 0.054791000000022905, 0.05466699999988123]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.501709000000119,0.035499999999956344,"[3.5965419999999995, 1.501709000000119, 1.497041999999965]","[0.035499999999956344, 0.036166999999977634, 0.03483399999981884]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.21199999999998909,0.03079200000001947,"[0.23629100000016479, 0.21199999999998909, 0.20666699999992488]","[0.03224999999997635, 0.03079200000001947, 0.02920799999992596]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.8607079999999314,0.024208000000044194,"[0.8607079999999314, 2.6989169999999376, 0.7336669999999685]","[0.024791999999933978, 0.024208000000044194, 0.023374999999987267]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.3577500000001237,0.022249999999985448,"[0.3836659999999483, 0.3577500000001237, 0.35412499999983993]","[0.02295800000001691, 0.022208000000091488, 0.022249999999985448]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.35858299999995324,0.0182079999999587,"[0.35858299999995324, 0.36170799999990777, 0.35437500000011823]","[0.018625000000156433, 0.0182079999999587, 0.017708000000084212]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8285419999999704,0.028999999999996362,"[0.8597079999999551, 0.8285419999999704, 0.7832500000001801]","[0.028999999999996362, 0.02941600000008293, 0.027917000000115877]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2205000000001291,0.04620799999997871,"[3.3417919999999413, 1.2205000000001291, 1.068667000000005]","[0.04587500000002365, 0.04737499999987449, 0.04620799999997871]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.702874999999949,0.02945799999997689,"[1.702874999999949, 1.7706250000001091, 1.4607080000000678]","[0.028625000000147338, 0.03008300000010422, 0.02945799999997689]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.17570899999986977,0.0236250000000382,"[0.19266700000002857, 0.17570899999986977, 0.16241700000000492]","[0.023959000000104425, 0.0236250000000382, 0.022707999999965978]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6994160000001557,0.1590840000001208,"[0.6681659999999283, 0.7194579999998041, 0.6994160000001557]","[0.1590840000001208, 0.1566250000000764, 0.16454099999987193]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.55212500000016,0.019833000000062384,"[3.4158749999999145, 2.55212500000016, 2.29362500000002]","[0.020584000000098968, 0.019833000000062384, 0.01974999999993088]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9890829999999369,0.3662500000000364,"[6.2929169999999885, 1.9890829999999369, 1.8942910000000666]","[0.3662500000000364, 0.3607080000001588, 0.36875000000009095]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,6.962999999999965,0.02416699999980665,"[6.962999999999965, 6.937249999999949, 7.288833000000068]","[0.023959000000104425, 0.02416699999980665, 0.024833000000171523]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.0281250000000455,0.04920799999990777,"[6.501875000000155, 3.0281250000000455, 3.022042000000056]","[0.05037500000003092, 0.0487919999998212, 0.04920799999990777]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.077332999999953,0.032916000000113854,"[3.4896249999999327, 4.493457999999919, 4.077332999999953]","[0.03291599999988648, 0.03304200000002311, 0.032916000000113854]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.42866700000013225,0.028083000000151515,"[0.49329099999999926, 0.42866700000013225, 0.42183299999987867]","[0.027874999999994543, 0.028083000000151515, 0.02945799999997689]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,6.256209000000126,0.022540999999819178,"[6.362749999999778, 6.009209000000283, 6.256209000000126]","[0.022375000000010914, 0.023000000000138243, 0.022540999999819178]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.504334000000199,0.02233299999988958,"[5.4195419999996375, 2.102708000000348, 2.504334000000199]","[0.02233299999988958, 0.020874999999705324, 0.02275000000008731]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.2310410000000047,0.01670800000010786,"[2.2310410000000047, 2.1028329999999187, 2.3689580000000205]","[0.0157920000001468, 0.02412499999991269, 0.01670800000010786]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.594000000000051,0.029624999999668944,"[8.779041999999663, 8.072791999999936, 8.594000000000051]","[0.029624999999668944, 0.030124999999770807, 0.02945799999997689]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.54037500000004,0.04624999999987267,"[3.55600000000004, 3.54037500000004, 3.499500000000353]","[0.04624999999987267, 0.04587499999979627, 0.0466670000000704]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.14954200000011,0.02837500000032378,"[4.14954200000011, 4.155166999999892, 3.8135419999998703]","[0.029125000000021828, 0.027584000000388187, 0.02837500000032378]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.4853750000002037,0.024125000000367436,"[0.49099999999998545, 0.4549170000000231, 0.4853750000002037]","[0.025874999999814463, 0.024125000000367436, 0.02412499999991269]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,10.318250000000262,0.1623340000001008,"[10.318250000000262, 6.048457999999755, 10.341667000000143]","[0.1558749999999236, 0.1623340000001008, 0.18962499999997817]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.40116699999998673,0.020125000000007276,"[0.6117079999999078, 0.40104199999996126, 0.40116699999998673]","[0.020125000000007276, 0.020082999999885942, 0.02079199999980119]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.41000000000030923,0.09499999999979991,"[0.41791600000033213, 0.41000000000030923, 0.39274999999997817]","[0.10166700000036144, 0.09499999999979991, 0.09087500000032378]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9364160000000084,0.026917000000139524,"[0.9364160000000084, 0.9122079999997368, 0.9407909999999902]","[0.026917000000139524, 0.026292000000012195, 0.028374999999869033]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3859170000000631,0.05508300000019517,"[1.3859170000000631, 1.4595000000003893, 1.3534169999998085]","[0.05437500000016371, 0.05508300000019517, 0.057207999999718595]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.867291000000023,0.03829200000018318,"[2.6180420000000595, 1.867291000000023, 1.784208000000035]","[0.03837500000008731, 0.03829200000018318, 0.037792000000081316]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23879200000010314,0.030499999999847205,"[0.2610840000002099, 0.23879200000010314, 0.20104099999980463]","[0.03237500000022919, 0.030375000000276486, 0.030499999999847205]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.543916000000081,0.024167000000034022,"[6.630167000000256, 6.543916000000081, 6.258834000000206]","[0.02516700000023775, 0.024167000000034022, 0.023875000000316504]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4359580000000278,0.02233399999977337,"[0.46545900000000984, 0.41191600000001927, 0.4359580000000278]","[0.02233399999977337, 0.02187499999990905, 0.03945799999974042]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.4656249999998181,0.018667000000277767,"[0.8788330000002134, 0.4656249999998181, 0.4446250000000873]","[0.0187500000001819, 0.018667000000277767, 0.01741700000002311]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.9770830000002206,0.02758300000004965,"[1.033792000000176, 0.8886249999995925, 0.9770830000002206]","[0.027166999999735708, 0.02758300000004965, 0.029125000000021828]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.413583000000017,0.04975000000013097,"[1.4256670000004306, 1.413583000000017, 1.3247920000003433]","[0.04975000000013097, 0.04870799999980591, 0.0595419999999649]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.1568340000003445,0.030707999999776803,"[2.1568340000003445, 1.8261250000000473, 5.24066700000003]","[0.03116699999964112, 0.030707999999776803, 0.030500000000301952]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.2199999999997999,0.02570800000012241,"[0.2497920000000704, 0.2199999999997999, 0.21291599999995015]","[0.025040999999873748, 0.02570800000012241, 0.02616699999998673]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.665584000000308,0.15912500000013097,"[7.967874999999822, 6.619083000000046, 6.665584000000308]","[0.15912500000013097, 0.15949999999975262, 0.15812499999992724]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,31.33266700000013,0.023290999999971973,"[33.85387499999979, 30.411999999999807, 31.33266700000013]","[0.027290999999877386, 0.023290999999971973, 0.022083000000293396]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,32.94712499999969,4.570459000000483,"[32.341583000000355, 38.54725000000053, 32.94712499999969]","[4.5763749999996435, 4.186542000000372, 4.570459000000483]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,116.63533300000017,0.04199999999946158,"[116.63533300000017, 182.58820800000012, 96.3628749999998]","[0.04975000000013097, 0.04199999999946158, 0.03462500000023283]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,31.36491599999954,0.06604200000037963,"[30.216875000000073, 31.366417000000183, 31.36491599999954]","[0.07708300000012969, 0.06604199999947014, 0.06604200000037963]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,38.68462499999987,0.04241699999965931,"[38.68462499999987, 39.699916999999914, 29.501250000000255]","[0.04241699999965931, 0.046542000000044936, 0.04116700000031415]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.349875000000793,0.033083999999689695,"[2.33020900000065, 5.962333999999828, 3.349875000000793]","[0.033083999999689695, 0.030584000000089873, 0.03429200000027777]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,82.11424999999963,0.02695799999855808,"[82.11424999999963, 85.74275000000125, 72.24908300000061]","[0.02695799999855808, 0.027416999999331892, 0.025750000000698492]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,32.82341699999961,0.02754099999947357,"[33.420625000000655, 32.71441699999923, 32.82341699999961]","[0.02766700000029232, 0.02754099999947357, 0.02716599999985192]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,31.31633299999885,0.020833000000493485,"[30.61858299999949, 35.6038750000007, 31.31633299999885]","[0.021124999999301508, 0.020833000000493485, 0.019458999999187654]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.4436250000017,0.03412500000013097,"[100.0102079999997, 139.7112500000003, 105.4436250000017]","[0.033625000000029104, 0.034583000000566244, 0.03412500000013097]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.07537500000035,0.05991600000015751,"[32.07537500000035, 34.37654100000145, 28.356207999999242]","[0.061417000000801636, 0.05991600000015751, 0.058042000000568805]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,43.75299999999879,0.038708000000042375,"[47.976707999998325, 34.332249999999476, 43.75299999999879]","[0.038708000000042375, 0.036792000000787084, 0.03904099999999744]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.4630420000012236,0.03479200000037963,"[2.4630420000012236, 2.268500000000131, 3.432333999999173]","[0.03479200000037963, 0.03391699999883713, 0.03600000000005821]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,79.04391600000054,0.16750000000138243,"[89.01912500000071, 72.07933299999968, 79.04391600000054]","[0.16912499999853026, 0.16750000000138243, 0.16629199999988487]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9618749999990541,0.02633400000013353,"[1.196125000000393, 0.9618749999990541, 0.9210409999996045]","[0.034958000000187894, 0.02633400000013353, 0.024917000000641565]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.1346670000002632,0.37745799999902374,"[1.3257080000003043, 0.7652920000000449, 1.1346670000002632]","[0.4010840000009921, 0.3772079999998823, 0.37745799999902374]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.598041999999623,0.03175000000010186,"[1.5960830000003625, 1.6378329999988637, 1.598041999999623]","[0.03175000000010186, 0.032165999999051564, 0.029666000000361237]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.6873329999998532,0.059708999999202206,"[1.6873329999998532, 1.6451670000005834, 2.483125000000655]","[0.059708999999202206, 0.05762499999946158, 0.06354199999987031]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.4320000000006985,0.044874999999592546,"[2.4320000000006985, 2.6288750000003347, 2.3661250000004657]","[0.04408299999886367, 0.04641699999956472, 0.044874999999592546]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.4530419999991864,0.04341700000077253,"[0.4817910000001575, 0.4530419999991864, 0.3427499999997963]","[0.04341700000077253, 0.04445800000030431, 0.03875000000152795]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,71.70058299999982,0.027957999998761807,"[121.07949999999983, 71.70058299999982, 67.1005409999998]","[0.028542000000015832, 0.027957999998761807, 0.02599999999983993]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.2011669999992591,0.03149999999914144,"[1.5001659999998083, 1.2011669999992591, 0.8739590000004682]","[0.03149999999914144, 0.04029199999968114, 0.02525000000059663]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.923291999999492,0.024084000000584638,"[1.059291999999914, 0.923291999999492, 0.8243330000004789]","[0.02487500000097498, 0.024084000000584638, 0.021832999998878222]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.3909589999966556,0.02937500000189175,"[1.3909589999966556, 1.186375000001135, 1.8107920000002196]","[0.02937500000189175, 0.02937500000189175, 0.0332090000010794]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.7724170000001322,0.06183400000008987,"[1.7724170000001322, 1.7996670000029553, 1.6806250000008731]","[0.06112500000017462, 0.06183400000008987, 0.06529200000295532]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,4.107792000002519,0.03800000000046566,"[4.107792000002519, 6.186833000003389, 2.397625000001426]","[0.048666999999113614, 0.03800000000046566, 0.037166999998589745]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.42879200000243145,0.031791000001248904,"[0.4422500000000582, 0.345500000003085, 0.42879200000243145]","[0.031791000001248904, 0.03141699999832781, 0.0322089999972377]" -predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,83.22537499999817,0.16970800000126474,"[83.22537499999817, 75.0867909999979, 95.38483300000007]","[0.16658400000233087, 0.16970800000126474, 0.1898750000000291]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0743340000000217,0.04087499999997135,"[5.657375000000002, 1.0743340000000217, 0.6812919999999849]","[0.051167000000020835, 0.04087499999997135, 0.0322500000000332]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.4832499999999982,0.08395799999999554,"[1.1152500000000032, 0.4832499999999982, 0.39520799999996825]","[0.10466700000000628, 0.08395799999999554, 0.06762500000002092]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.034750000000031,0.03995899999995345,"[4.705249999999978, 2.034750000000031, 1.326166999999998]","[0.04399999999998272, 0.03995899999995345, 0.02954099999999471]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.0534999999999854,0.06787499999995816,"[4.548750000000041, 2.0534999999999854, 1.3879999999999768]","[0.06991599999997788, 0.06787499999995816, 0.05320899999998119]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.358249999999998,0.041333999999949356,"[3.358249999999998, 3.928625000000011, 2.1645829999999933]","[0.04533300000002782, 0.041042000000004464, 0.041333999999949356]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.3153750000000173,0.033041999999966265,"[0.4369580000000042, 0.3137500000000273, 0.3153750000000173]","[0.033041999999966265, 0.03225000000009004, 0.03429100000005292]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0077079999999796,0.0286670000000413,"[1.0077079999999796, 1.062791999999945, 0.9847499999999627]","[0.0286670000000413, 0.025167000000010376, 0.030750000000011823]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5239170000000968,0.028500000000008185,"[0.5607919999999922, 0.5239170000000968, 0.3907920000000331]","[0.03224999999997635, 0.028500000000008185, 0.027082999999947788]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.4177079999999478,0.018625000000042746,"[0.4355409999999438, 0.41012499999999363, 0.4177079999999478]","[0.021332999999913227, 0.018625000000042746, 0.016124999999988177]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.1582909999999629,0.028999999999996362,"[1.1092919999999822, 1.1582909999999629, 1.1777080000000524]","[0.028999999999996362, 0.029583000000002357, 0.027749999999969077]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.4522080000000415,0.04837500000007822,"[1.3318749999999682, 1.4800839999999198, 1.4522080000000415]","[0.04837500000007822, 0.057624999999916326, 0.04491700000005494]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.113375000000019,0.030375000000049113,"[2.113375000000019, 2.2245000000000346, 1.8023749999999836]","[0.03045800000006693, 0.030375000000049113, 0.027625000000057298]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.30054100000006656,0.024290999999948326,"[0.30054100000006656, 0.2664999999999509, 0.30425000000002456]","[0.024791999999933978, 0.024290999999948326, 0.024125000000026375]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.81837500000006,0.1664580000000342,"[0.8158750000000055, 0.9402499999999918, 0.81837500000006]","[0.18991699999992306, 0.1664580000000342, 0.15841699999998582]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.6629169999999931,0.023207999999954154,"[1.2451660000000402, 0.6629169999999931, 0.42533400000002075]","[0.03304200000002311, 0.023207999999954154, 0.0211659999999938]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.34445800000003146,0.07304099999998925,"[0.7740420000000086, 0.34445800000003146, 0.32645800000000236]","[0.08941700000002584, 0.07304099999998925, 0.06866700000000492]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.9312080000000833,0.027416000000016538,"[0.9312080000000833, 1.068416999999954, 0.8297090000000935]","[0.028874999999970896, 0.02704099999994014, 0.027416000000016538]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.2730000000000246,0.04870800000003328,"[1.5162910000000238, 0.9947499999999536, 1.2730000000000246]","[0.04870800000003328, 0.04800000000000182, 0.050707999999985987]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.3564999999999827,0.03633399999989706,"[2.3564999999999827, 4.545125000000098, 1.5941669999999704]","[0.03691599999990558, 0.03633399999989706, 0.034583999999995285]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.20341599999994742,0.029291000000057466,"[0.2294170000000122, 0.20341599999994742, 0.20287499999994907]","[0.033999999999991815, 0.029291000000057466, 0.029083000000127868]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.7443340000002081,0.022832999999991443,"[0.9646669999999631, 0.7443340000002081, 0.7106670000000577]","[0.023500000000012733, 0.02245800000014242, 0.022832999999991443]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.38637500000004366,0.021332999999913227,"[0.39629200000013043, 0.38637500000004366, 0.30187500000010914]","[0.02112499999998363, 0.021332999999913227, 0.02175000000011096]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.3633749999999054,0.017584000000169908,"[0.3633749999999054, 0.32791699999984303, 0.39845900000000256]","[0.0183750000001055, 0.017584000000169908, 0.01741700000002311]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8120000000001255,0.026541999999835753,"[0.8120000000001255, 2.530124999999998, 0.7705000000000837]","[0.027499999999918145, 0.0263750000001437, 0.026541999999835753]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.9015839999999571,0.04025000000001455,"[0.9848340000000917, 0.9015839999999571, 0.8611250000001291]","[0.04037500000004002, 0.03904099999999744, 0.04025000000001455]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.4326670000000377,0.026624999999967258,"[1.3684589999998025, 1.4326670000000377, 1.457332999999835]","[0.026624999999967258, 0.027166999999963082, 0.02575000000001637]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.127666999999974,0.021500000000060027,"[0.127666999999974, 0.12533400000006623, 0.13883399999986068]","[0.02141699999992852, 0.021500000000060027, 0.021666999999979453]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6321659999998701,0.1436670000000504,"[0.6305839999999989, 0.6321659999998701, 0.6330000000000382]","[0.1424579999998059, 0.14833299999986593, 0.1436670000000504]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.491375000000062,0.018958999999995285,"[2.1017080000001442, 3.011167000000114, 2.491375000000062]","[0.017542000000048574, 0.019625000000132786, 0.018958999999995285]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9824590000000626,0.3718750000000455,"[2.1454590000000735, 1.9824590000000626, 1.8542909999998756]","[0.3718750000000455, 0.37333300000000236, 0.37095799999997325]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,8.37541699999997,0.02408300000001873,"[8.37541699999997, 9.376833000000033, 6.800500000000056]","[0.024499999999989086, 0.02408300000001873, 0.023542000000134067]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.013125000000173,0.04529199999979028,"[2.9597499999999854, 3.0655830000000606, 3.013125000000173]","[0.04525000000012369, 0.0470829999999296, 0.04529199999979028]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.082374999999956,0.03262500000005275,"[6.939208000000008, 3.3059579999999187, 4.082374999999956]","[0.031208999999989828, 0.035667000000103144, 0.03262500000005275]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.4704580000000078,0.02750000000014552,"[0.4968750000000455, 0.4704580000000078, 0.3903330000000551]","[0.02800000000002001, 0.027082999999947788, 0.02750000000014552]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,5.61462500000016,0.02179200000000492,"[5.61462500000016, 6.133499999999913, 5.483625000000075]","[0.02179200000000492, 0.023750000000063665, 0.021457999999938693]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.0269579999999223,0.019708999999920707,"[2.0269579999999223, 2.092290999999932, 1.969957999999906]","[0.019874999999956344, 0.019667000000026746, 0.019708999999920707]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.018624999999929,0.014625000000023647,"[2.018624999999929, 1.9684159999999338, 2.037708000000066]","[0.014625000000023647, 0.01445800000010422, 0.014750000000049113]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.103791999999885,0.027291999999988548,"[7.451041999999916, 8.592624999999998, 8.103791999999885]","[0.026749999999992724, 0.028958000000102402, 0.027291999999988548]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.377542000000176,0.041291999999884865,"[6.620374999999967, 3.377542000000176, 3.3273329999999532]","[0.041707999999971435, 0.040541999999959444, 0.041291999999884865]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,3.950000000000273,0.025916999999935797,"[3.5790830000000824, 4.199166999999761, 3.950000000000273]","[0.027250000000094587, 0.025916999999935797, 0.025749999999788997]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.46566699999993943,0.023457999999664025,"[0.4351249999999709, 0.5332499999999527, 0.46566699999993943]","[0.02437499999996362, 0.02320800000006784, 0.023457999999664025]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,9.30099999999993,0.15637500000002547,"[9.30099999999993, 6.032249999999749, 9.930499999999938]","[0.15637500000002547, 0.15504200000032142, 0.15829200000007404]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.48587499999985084,0.01970900000014808,"[0.48587499999985084, 0.4137090000003809, 0.5827079999999114]","[0.01970900000014808, 0.018958000000111497, 0.02162499999985812]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4345419999999649,0.09891700000025594,"[0.41804199999978664, 0.4345419999999649, 0.4533329999999296]","[0.09891700000025594, 0.11458399999992253, 0.08645900000010442]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9308750000000146,0.02687500000001819,"[0.9308750000000146, 0.8725420000000668, 1.2563749999999345]","[0.02687500000001819, 0.026291000000128406, 0.02979200000027049]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3446670000002996,0.04841600000008839,"[1.3446670000002996, 4.869666999999936, 1.1443329999997331]","[0.051084000000173546, 0.04775000000017826, 0.04841600000008839]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.7211669999996957,0.03533400000014808,"[1.7282500000001164, 1.7211669999996957, 1.691957999999886]","[0.03500000000030923, 0.037250000000312866, 0.03533400000014808]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2174169999998412,0.029250000000047294,"[0.38475000000016735, 0.2174169999998412, 0.21070800000006784]","[0.028999999999996362, 0.029250000000047294, 0.030583999999635125]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.952291999999943,0.02349999999978536,"[6.952291999999943, 6.852917000000161, 8.674457999999959]","[0.02349999999978536, 0.02295800000001691, 0.02420799999981682]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4858329999997295,0.02179200000000492,"[0.6482080000000678, 0.4858329999997295, 0.4005409999999756]","[0.022375000000010914, 0.02179200000000492, 0.021750000000338332]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.42699999999967986,0.01779099999976097,"[0.4492079999999987, 0.42699999999967986, 0.4018750000000182]","[0.01866599999993923, 0.01779099999976097, 0.01749999999992724]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.2259170000002086,0.02820900000006077,"[0.8468330000000606, 1.2259170000002086, 1.6071249999999964]","[0.026542000000063126, 0.02858299999979863, 0.02820900000006077]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.3388330000002497,0.04650000000037835,"[1.4552499999999782, 1.3388330000002497, 1.2582910000000993]","[0.04516700000021956, 0.04650000000037835, 0.04658300000028248]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.6952500000002146,0.030125000000225555,"[1.6952500000002146, 1.6755419999999503, 1.7101250000000618]","[0.030249999999796273, 0.02999999999974534, 0.030125000000225555]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.20983400000022812,0.025292000000263215,"[0.3148750000000291, 0.20716700000002675, 0.20983400000022812]","[0.024999999999636202, 0.025667000000339613, 0.025292000000263215]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.253165999999965,0.15695899999991525,"[6.252875000000131, 7.303917000000183, 6.253165999999965]","[0.15833400000019537, 0.15641699999969205, 0.15695899999991525]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,28.28441699999985,0.021459000000049855,"[72.82716699999992, 27.782208000000082, 28.28441699999985]","[0.0213330000001406, 0.021459000000049855, 0.022000000000389264]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,26.774457999999868,4.22545799999989,"[24.225333999999748, 26.774457999999868, 28.82300000000032]","[4.3191249999999854, 4.095000000000255, 4.22545799999989]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,99.0488749999995,0.02916700000059791,"[99.0488749999995, 87.82850000000053, 105.18233400000008]","[0.02916700000059791, 0.0282919999999649, 0.029583000000457105]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,34.2567910000007,0.04841599999963364,"[30.381416000000172, 34.2567910000007, 35.58508299999994]","[0.04841599999963364, 0.046833000000333413, 0.05070799999975861]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,36.11608299999989,0.04287500000009459,"[36.11608299999989, 29.285916000000725, 39.676124999999956]","[0.035375000000385626, 0.04287500000009459, 0.042916999999761174]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,2.3780410000008487,0.028832999999394815,"[3.551042000000052, 2.3780410000008487, 2.2408750000004147]","[0.0301660000004631, 0.028166999999484688, 0.028832999999394815]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,65.81054200000017,0.023709000000053493,"[68.83245799999986, 65.81054200000017, 63.107208999999784]","[0.023709000000053493, 0.023500000000240107, 0.024083000000246102]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,26.232874999999694,0.02695799999855808,"[40.144874999999956, 26.232874999999694, 26.11804200000006]","[0.054874999999810825, 0.02695799999855808, 0.022916999998415122]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,28.824375000000146,0.016916000000492204,"[25.789999999999054, 32.500332999999955, 28.824375000000146]","[0.016916000000492204, 0.017207999999300228, 0.016332999999576714]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,99.88737500000025,0.03183300000091549,"[98.77108299999963, 99.88737500000025, 105.21399999999994]","[0.03045899999960966, 0.03879199999937555, 0.03183300000091549]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.10933399999885,0.05095900000014808,"[31.123915999998644, 32.10933399999885, 34.52970799999821]","[0.049665999998978805, 0.05095900000014808, 0.0520410000008269]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,30.102249999999913,0.026125000000320142,"[34.505708999999115, 30.102249999999913, 30.034499999999753]","[0.02808299999924202, 0.026125000000320142, 0.025875000001178705]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.252375000000029,0.025292000000263215,"[3.252375000000029, 6.702041999998983, 2.4032920000008744]","[0.02529099999992468, 0.025582999998732703, 0.025292000000263215]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,66.76525000000038,0.16254200000003038,"[106.34183299999859, 66.33179199999904, 66.76525000000038]","[0.16254200000003038, 0.162333000000217, 0.16366700000071432]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9269999999996799,0.021000000000640284,"[0.9269999999996799, 0.7842080000009446, 0.939249999999447]","[0.021000000000640284, 0.020207999999911408, 0.02125000000160071]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,0.8918749999993452,0.345500000001266,"[0.8918749999993452, 1.09375, 0.801499999999578]","[0.345500000001266, 0.3409589999992022, 0.40845900000022084]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.4081249999999272,0.027000000000043656,"[1.4081249999999272, 1.4138750000001892, 1.2567909999997937]","[0.027000000000043656, 0.027000000000043656, 0.026499999999941792]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.550374999998894,0.05008300000008603,"[1.4640410000010888, 1.7112919999999576, 1.550374999998894]","[0.05008300000008603, 0.04862499999944703, 0.05500000000029104]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.706416999999419,0.038291999999273685,"[2.1125410000004194, 6.588042000001224, 2.706416999999419]","[0.038291999999273685, 0.037916999999652035, 0.038875000000189175]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.2971659999984695,0.0328750000007858,"[0.34516699999949196, 0.2971659999984695, 0.28058299999975134]","[0.03600000000005821, 0.0328750000007858, 0.031667000001107226]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,62.85924999999952,0.02375000000029104,"[62.85924999999952, 67.28525000000081, 58.87962499999958]","[0.023499999999330612, 0.02404200000091805, 0.02375000000029104]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.8166249999994761,0.021291999999448308,"[0.8054170000013983, 0.8166249999994761, 1.1918340000011085]","[0.02104200000030687, 0.021291999999448308, 0.02320800000052259]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.7165000000004511,0.01787500000136788,"[0.7324170000010781, 0.7165000000004511, 0.7141670000000886]","[0.019249999999374268, 0.01787500000136788, 0.01770799999940209]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.485208000000057,0.028333000000202446,"[1.485208000000057, 1.5661250000011933, 1.405624999999418]","[0.027542000001631095, 0.02883299999848532, 0.028333000000202446]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.8564580000002024,0.058999999999286956,"[2.147500000000946, 2.8564580000002024, 6.7239580000004935]","[0.058999999999286956, 0.10512500000004366, 0.058832999999140156]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.0395410000000993,0.030791999999564723,"[2.0516659999993863, 2.0395410000000993, 1.8730829999985872]","[0.0310829999998532, 0.030791999999564723, 0.028874999999970896]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.3088750000024447,0.02604100000098697,"[0.30958299999838346, 0.3088750000024447, 0.2982090000004973]","[0.03445800000190502, 0.025417000000743428, 0.02604100000098697]" -initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,63.637291999999434,0.16087500000139698,"[73.30774999999994, 63.637291999999434, 60.51420899999721]","[0.15112500000032014, 0.16087500000139698, 0.16279199999917182]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5422909999999774,0.04795899999999165,"[7.019457999999986, 1.5422909999999774, 0.9168750000000045]","[0.06820800000002691, 0.04795899999999165, 0.03312499999992724]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.5774169999999685,0.10358399999995527,"[0.7287910000000011, 0.5774169999999685, 0.4724580000000742]","[0.13591699999994944, 0.10358399999995527, 0.08729199999993398]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.9348329999999123,0.04145800000003419,"[5.982833999999912, 2.5005840000000035, 2.9348329999999123]","[0.055124999999975444, 0.04145800000003419, 0.038584000000014385]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.8547079999999596,0.07545900000002348,"[5.317833000000064, 1.8547079999999596, 1.4118330000000014]","[0.09258299999999053, 0.07545900000002348, 0.07120799999995597]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,4.96449999999993,0.05312500000002274,"[4.96449999999993, 5.277500000000032, 2.237292000000025]","[0.05870900000002166, 0.05312500000002274, 0.04479199999991579]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5534160000000838,0.04108300000007148,"[0.5534160000000838, 0.47545800000000327, 0.5939589999999271]","[0.04108300000007148, 0.03512500000010732, 0.04391600000008111]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.3738749999999982,0.03712499999994634,"[1.4862079999999196, 1.3738749999999982, 1.2398750000000973]","[0.03712499999994634, 0.03329099999996288, 0.039083000000005086]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.6330420000000458,0.02966700000001765,"[0.6330420000000458, 2.25324999999998, 0.5249170000000731]","[0.04120899999998073, 0.02954099999999471, 0.02966700000001765]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5068750000000364,0.02400000000000091,"[0.6517090000000962, 0.48587499999996453, 0.5068750000000364]","[0.02400000000000091, 0.02575000000001637, 0.022165999999970154]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.4399159999999256,0.033542000000011285,"[1.602624999999989, 1.362292000000025, 1.4399159999999256]","[0.03712499999994634, 0.033542000000011285, 0.030416999999943073]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.5653330000000096,0.06200000000001182,"[1.8200829999999542, 1.5653330000000096, 1.3817090000000007]","[0.06200000000001182, 0.05275000000006003, 0.06212500000003729]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,3.1960840000000417,0.04029199999990851,"[3.1960840000000417, 3.439624999999978, 3.079917000000023]","[0.04066600000010112, 0.04029199999990851, 0.038417000000208645]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4436249999998836,0.033666000000039276,"[0.4221669999999449, 0.4436249999998836, 0.46212500000001455]","[0.033666000000039276, 0.0336659999998119, 0.0345830000001115]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.1865000000000236,0.2319169999998394,"[1.1865000000000236, 1.2047079999999823, 1.140250000000151]","[0.23608400000011898, 0.21875, 0.2319169999998394]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,1.6170419999998558,0.0314579999999296,"[1.6170419999998558, 3.813957999999957, 0.7646660000000338]","[0.03325000000018008, 0.0314579999999296, 0.02945799999997689]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6826670000000377,0.1246249999999236,"[0.6826670000000377, 0.7273330000000442, 0.4453330000001188]","[0.12995900000009897, 0.09499999999979991, 0.1246249999999236]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.3549580000001242,0.035959000000048036,"[1.3642500000000837, 1.3549580000001242, 1.1908330000001115]","[0.03737500000011096, 0.03583299999991141, 0.035959000000048036]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.7329169999998157,0.06558300000006057,"[2.1952909999999974, 1.7329169999998157, 1.4867499999998017]","[0.07095800000001873, 0.06558300000006057, 0.06445800000005875]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.1144580000000133,0.048665999999911946,"[2.1144580000000133, 2.269207999999935, 1.761792000000014]","[0.048665999999911946, 0.04808400000001711, 0.05020799999988412]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.2940000000000964,0.038290999999844644,"[0.2940000000000964, 0.3019170000000031, 0.2725420000001577]","[0.04329099999995378, 0.038290999999844644, 0.035540999999966516]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1429169999998976,0.030167000000119515,"[1.0290840000000117, 1.1429169999998976, 3.2424590000000535]","[0.03045800000018062, 0.029167000000143162, 0.030167000000119515]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.40741700000012315,0.028916999999864856,"[0.45129099999985556, 0.40741700000012315, 0.38391599999999926]","[0.028999999999996362, 0.028916999999864856, 0.0262079999999969]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.4859169999999722,0.02458400000000438,"[0.4867500000000291, 0.4859169999999722, 0.39783399999987523]","[0.02504199999998491, 0.02458400000000438, 0.019833999999946172]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.9199160000000575,0.02970899999991161,"[1.0534170000000813, 0.9199160000000575, 0.9095420000001013]","[0.0286670000000413, 0.02970899999991161, 0.030250000000023647]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.3675000000000637,0.0544999999999618,"[1.399208999999928, 1.3675000000000637, 1.1519590000000335]","[0.0544999999999618, 0.05475000000001273, 0.04633400000011534]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.8333749999999327,0.02970799999980045,"[1.7404579999999896, 5.489708000000064, 1.8333749999999327]","[0.029167000000143162, 0.03674999999998363, 0.02970799999980045]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.3076249999999163,0.026957999999922322,"[0.25833299999999326, 0.3076249999999163, 0.3160000000000309]","[0.026957999999922322, 0.030167000000119515, 0.025874999999814463]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.9558340000000953,0.1848339999999098,"[0.9558340000000953, 0.7612910000000284, 0.976207999999815]","[0.20079200000009223, 0.18012500000008913, 0.1848339999999098]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.39058399999999,0.02204200000005585,"[2.623542000000043, 4.846749999999929, 3.39058399999999]","[0.019665999999915584, 0.02204200000005585, 0.02620899999988069]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.859375,0.4612090000000535,"[2.6590839999998934, 2.9102920000000267, 2.859375]","[0.4904579999999896, 0.4612090000000535, 0.44804100000010294]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,11.543499999999767,0.03300000000035652,"[11.543499999999767, 12.79358400000001, 10.818582999999762]","[0.034166999999797554, 0.02979200000027049, 0.03300000000035652]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.8336249999997563,0.05804200000011406,"[3.6626250000003893, 3.8336249999997563, 4.012083000000075]","[0.05695799999966766, 0.06037500000002183, 0.05804200000011406]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.260792000000038,0.03687500000023647,"[8.50220900000022, 4.681958000000122, 5.260792000000038]","[0.03687500000023647, 0.06633300000021336, 0.03445899999996982]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6912499999998545,0.03179199999976845,"[0.6912499999998545, 0.7299170000001141, 0.6294590000002245]","[0.03233300000010786, 0.03179199999976845, 0.029290999999830092]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.222458000000188,0.02437499999996362,"[7.40383299999985, 7.0982090000002245, 7.222458000000188]","[0.028416000000106578, 0.02437499999996362, 0.02437499999996362]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.8296250000003056,0.023875000000316504,"[3.054916999999932, 2.8296250000003056, 2.369499999999789]","[0.02679199999965931, 0.023875000000316504, 0.021749999999883585]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.6068749999999454,0.017124999999850843,"[2.6068749999999454, 7.326249999999618, 2.556333999999879]","[0.017124999999850843, 0.01650000000017826, 0.019874999999956344]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,10.141875000000255,0.030790999999680935,"[10.333333000000039, 8.285542000000078, 10.141875000000255]","[0.030790999999680935, 0.03641699999980119, 0.0282919999999649]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,5.328665999999885,0.05670899999995527,"[5.328665999999885, 8.567417000000205, 5.279875000000175]","[0.05670899999995527, 0.052083999999922526, 0.061666000000059285]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,5.347917000000052,0.036291999999775726,"[5.900083999999879, 4.571292000000085, 5.347917000000052]","[0.03716699999995399, 0.03616700000020501, 0.036291999999775726]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.7923749999999927,0.027625000000170985,"[4.494167000000289, 0.5749999999998181, 0.7923749999999927]","[0.027625000000170985, 0.025500000000192813, 0.03195800000003146]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,7.811791000000085,0.1947920000002341,"[7.811791000000085, 10.947500000000218, 7.434625000000324]","[0.20424999999977445, 0.18520800000032978, 0.1947920000002341]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.44849999999996726,0.02233299999988958,"[0.696875000000091, 0.44849999999996726, 0.44795799999974406]","[0.02233299999988958, 0.02304199999980483, 0.021708000000216998]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4286250000000109,0.09083399999963149,"[0.4286250000000109, 0.4139170000003105, 0.4967910000000302]","[0.09891700000025594, 0.09045800000012605, 0.09083399999963149]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9157500000001164,0.02641700000003766,"[0.9996670000000449, 0.9157500000001164, 0.9122910000000957]","[0.027458000000024185, 0.02641700000003766, 0.02545800000007148]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.5414580000001479,0.04929200000015044,"[1.2579170000003614, 1.5414580000001479, 4.885792000000038]","[0.04912500000000364, 0.04991599999993923, 0.04929200000015044]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.871625000000222,0.036207999999987805,"[1.871625000000222, 2.133166000000074, 1.70049999999992]","[0.036207999999987805, 0.035292000000026746, 0.036375000000134605]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23800000000028376,0.02908400000023903,"[0.24116700000013225, 0.2371250000001055, 0.23800000000028376]","[0.029583000000002357, 0.02908400000023903, 0.028541000000132044]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,9.034708000000137,0.023333999999977095,"[10.201250000000073, 8.769874999999956, 9.034708000000137]","[0.023374999999759893, 0.022291999999652035, 0.023333999999977095]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5265000000003965,0.022542000000157714,"[0.42791699999997945, 0.6268329999998059, 0.5265000000003965]","[0.022457999999915046, 0.022542000000157714, 0.023417000000335975]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.6854589999998097,0.01974999999993088,"[0.6945409999998446, 0.4412080000001879, 0.6854589999998097]","[0.01974999999993088, 0.018708000000060565, 0.019834000000173546]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.103458000000046,0.029042000000117696,"[1.103458000000046, 1.0183329999999842, 1.2177910000000338]","[0.029042000000117696, 0.028416999999990367, 0.038374999999632564]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.5117079999999987,0.047374999999647116,"[1.5117079999999987, 1.2567909999997937, 1.5515419999996993]","[0.047374999999647116, 0.04645799999980227, 0.05670899999995527]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.120249999999942,0.03175000000010186,"[2.012832999999773, 2.183209000000261, 2.120249999999942]","[0.03170799999998053, 0.03175000000010186, 0.03279100000008839]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.27854200000001583,0.028249999999843567,"[0.2758750000002692, 0.27854200000001583, 0.35350000000016735]","[0.028249999999843567, 0.03225000000020373, 0.027791999999863037]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,8.088999999999942,0.19012500000008004,"[9.316209000000072, 8.088999999999942, 7.026208000000224]","[0.19145900000012261, 0.1812910000003285, 0.19012500000008004]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,33.07875000000058,0.02916700000059791,"[42.767249999999876, 33.07875000000058, 31.42674999999963]","[0.029666000000361237, 0.02916700000059791, 0.023791999999957625]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,33.32012500000019,5.407125000000633,"[33.32012500000019, 41.19837499999994, 30.584749999999985]","[5.407125000000633, 5.45470800000021, 4.67870800000037]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,110.33737500000007,0.030666999999994005,"[110.33737500000007, 106.26508300000023, 125.6349169999994]","[0.03720900000007532, 0.030666999999994005, 0.02991699999984121]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,38.04541599999993,0.05270899999959511,"[43.24687499999982, 37.244666999999936, 38.04541599999993]","[0.05120900000019901, 0.06199999999989814, 0.05270899999959511]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,41.277665999999954,0.04254100000071048,"[34.12587500000154, 44.11937500000022, 41.277665999999954]","[0.04254100000071048, 0.04591699999946286, 0.03816700000061246]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.481792000000496,0.03320799999892188,"[4.512749999999869, 3.481792000000496, 2.7888330000005226]","[0.035875000001396984, 0.03320799999892188, 0.031791000001248904]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,85.55687500000022,0.02758400000129768,"[85.55687500000022, 93.15350000000035, 70.22054199999911]","[0.02479200000016135, 0.02758400000129768, 0.029666999998880783]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,34.411957999998776,0.02520899999944959,"[34.79312499999833, 34.411957999998776, 26.065624999999272]","[0.027541999999812106, 0.02520899999944959, 0.02275000000008731]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,26.11395900000025,0.017249999998966814,"[25.214208999999755, 26.11395900000025, 32.55570799999987]","[0.01654200000120909, 0.017249999998966814, 0.017749999999068677]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,110.47316599999976,0.03579200000058336,"[110.47316599999976, 125.38516700000037, 109.32775000000038]","[0.03166699999928824, 0.03879199999937555, 0.03579200000058336]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,37.779458000000886,0.0647079999998823,"[34.400290999999925, 37.779458000000886, 40.832540999999765]","[0.0540419999997539, 0.06612500000119326, 0.0647079999998823]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,41.72241699999904,0.031166999999186373,"[109.0418750000008, 36.521749999999884, 41.72241699999904]","[0.031166999999186373, 0.030957999999372987, 0.033999999999650754]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.9486660000002303,0.03120899999885296,"[2.9486660000002303, 2.4476660000000265, 3.6760839999988093]","[0.03120899999885296, 0.051708000000871834, 0.027374999999665306]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,78.94058399999994,0.20570799999950395,"[84.93924999999945, 78.94058399999994, 76.07504100000006]","[0.18499999999949068, 0.20570799999950395, 0.2061249999987922]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9064159999998083,0.02029200000106357,"[0.9064159999998083, 0.729457999999795, 1.553875000001426]","[0.02029200000106357, 0.019874999999956344, 0.03612500000053842]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.018792000000758,0.47566700000061246,"[1.018792000000758, 0.8673330000001442, 1.1205840000002354]","[0.516208999999435, 0.41433300000062445, 0.47566700000061246]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.012333000000581,0.04458300000078452,"[2.6537920000009763, 2.012333000000581, 1.5971250000002328]","[0.0555000000003929, 0.04458300000078452, 0.03591700000106357]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,2.1954590000004828,0.08558399999856192,"[2.1954590000004828, 3.2372079999986454, 2.134750000001077]","[0.08558399999856192, 0.12591600000087055, 0.07983299999978044]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.950166000000536,0.05158399999891117,"[2.950166000000536, 2.406750000000102, 3.0508329999993293]","[0.06783299999915471, 0.05158399999891117, 0.045499999998355634]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.42654200000106357,0.03862500000104774,"[0.42654200000106357, 0.4214170000013837, 0.7119170000005397]","[0.03862500000104774, 0.037166999998589745, 0.04679200000100536]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,77.71420800000124,0.027375000001484295,"[92.06066600000122, 77.71420800000124, 75.4162499999984]","[0.027375000001484295, 0.0328750000007858, 0.024917000002460554]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.9677919999994629,0.025625000002037268,"[0.9677919999994629, 0.7877919999991718, 11.199749999999767]","[0.025499999999738066, 0.02679100000023027, 0.025625000002037268]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,1.041916999998648,0.02166600000055041,"[1.3040839999994205, 1.041916999998648, 0.9912919999987935]","[0.021375000000261934, 0.02166600000055041, 0.022500000002764864]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,2.170916999999463,0.0384169999997539,"[1.7232089999997697, 2.170916999999463, 2.2698750000017753]","[0.0384169999997539, 0.04233300000123563, 0.03679099999862956]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.436291000001802,0.07504100000005565,"[2.4444580000017595, 2.436291000001802, 1.685124999999971]","[0.08204199999818229, 0.07504100000005565, 0.0727500000029977]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.0354580000021087,0.04529199999888078,"[2.7467500000020664, 3.0354580000021087, 3.7460839999985183]","[0.035500000001775334, 0.0498749999969732, 0.04529199999888078]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.46329100000002654,0.038499999998748535,"[0.4377090000016324, 0.5460830000010901, 0.46329100000002654]","[0.04016599999886239, 0.0331659999974363, 0.038499999998748535]" -final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,77.257708000001,0.1781249999985448,"[77.257708000001, 76.3961249999993, 94.35529200000019]","[0.17212500000096043, 0.1781249999985448, 0.2510000000002037]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5344159999999647,0.043541000000004715,"[6.563333, 1.5344159999999647, 0.8222079999999892]","[0.05062500000002501, 0.043541000000004715, 0.03358300000002146]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6504590000000121,0.09804199999996399,"[0.6504590000000121, 0.7806659999999965, 0.5115410000000224]","[0.11595900000003212, 0.09804199999996399, 0.07154100000002472]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.8634999999999877,0.04337499999996908,"[8.225250000000017, 2.8634999999999877, 2.0628750000000196]","[0.05358300000000327, 0.04337499999996908, 0.03866699999997536]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.6306670000000167,0.07008299999995415,"[5.6329580000000306, 2.6306670000000167, 2.118333000000007]","[0.11508300000002691, 0.07008299999995415, 0.060875000000010004]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.93425000000002,0.054625000000100954,"[4.008750000000077, 3.011792000000014, 3.93425000000002]","[0.06137499999999818, 0.054625000000100954, 0.04733299999998053]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5240000000000009,0.043457999999986896,"[0.8331249999999955, 0.5060419999999795, 0.5240000000000009]","[0.043457999999986896, 0.04466700000000401, 0.03554199999996399]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.2246659999999565,0.038708000000042375,"[1.331833999999958, 1.2246659999999565, 1.094665999999961]","[0.038708000000042375, 0.03545900000005986, 0.04279199999996308]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5836249999999836,0.02904200000000401,"[0.5836249999999836, 0.4933330000000069, 0.6701669999999922]","[0.032083999999940715, 0.02612499999997908, 0.02904200000000401]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5704170000000204,0.01783299999999599,"[0.5704170000000204, 2.4076670000000604, 0.5225829999999405]","[0.023416999999994914, 0.01691599999992377, 0.01783299999999599]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.459333000000015,0.030167000000005828,"[1.459333000000015, 1.6622500000000855, 1.380708000000027]","[0.030167000000005828, 0.03666600000008202, 0.02874999999994543]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.7483330000000024,0.058625000000006366,"[1.7483330000000024, 1.8982079999999542, 1.4034169999999904]","[0.058625000000006366, 0.05029100000001563, 0.0650829999999587]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.328166999999894,0.02949999999998454,"[2.4617079999999305, 2.328166999999894, 2.1100000000000136]","[0.032166999999958534, 0.02949999999998454, 0.028791999999953077]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4054169999999431,0.026292000000012195,"[0.5019170000000486, 0.2963750000000118, 0.4054169999999431]","[0.027375000000006366, 0.024916999999959444, 0.026292000000012195]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.0157090000000153,0.1825420000000122,"[1.0812499999999545, 1.0157090000000153, 0.9902080000000524]","[0.1825420000000122, 0.1811249999999518, 0.20991699999990487]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.786209000000099,0.023750000000063665,"[6.189916000000039, 0.786209000000099, 0.5050000000001091]","[0.02566700000011224, 0.023750000000063665, 0.02108300000008967]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6037499999999909,0.10279100000002472,"[0.6833750000000691, 0.6037499999999909, 0.49854199999981574]","[0.13587500000016917, 0.10279100000002472, 0.09179100000005747]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.2402090000000499,0.037084000000049855,"[1.5882910000000265, 1.2332910000000084, 1.2402090000000499]","[0.037084000000049855, 0.03779100000019753, 0.03650000000016007]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.4418339999999716,0.06804200000010496,"[1.6318750000000364, 1.333750000000009, 1.4418339999999716]","[0.0778339999999389, 0.06804200000010496, 0.06720799999993687]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.4227079999998296,0.04712500000005093,"[3.9609159999999974, 2.4227079999998296, 2.02866599999993]","[0.03883300000006784, 0.04970800000000963, 0.04712500000005093]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.30729199999996126,0.03816699999993034,"[0.30729199999996126, 0.33333300000003874, 0.26233300000012605]","[0.03816699999993034, 0.03995800000006966, 0.035750000000007276]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1454590000000735,0.03125,"[1.1784170000000813, 0.8328329999999369, 1.1454590000000735]","[0.03125, 0.031292000000121334, 0.030625000000100044]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.44662500000004,0.029082999999900494,"[0.3642499999998563, 0.519083000000137, 0.44662500000004]","[0.02391699999998309, 0.03154099999983373, 0.029082999999900494]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.48441699999989396,0.022874999999885404,"[0.48233300000015333, 0.5694999999998345, 0.48441699999989396]","[0.025417000000061307, 0.01912499999980355, 0.022874999999885404]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,1.0217090000001008,0.030666000000110216,"[3.759416999999985, 0.9066669999999704, 1.0217090000001008]","[0.030666000000110216, 0.030250000000023647, 0.03099999999994907]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2948750000000473,0.04866700000002311,"[1.5880419999998594, 1.2948750000000473, 1.1407500000000255]","[0.047708999999940715, 0.04866700000002311, 0.05070900000009715]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2.3149579999999332,0.04083300000002055,"[1.5907499999998436, 2.4610000000000127, 2.3149579999999332]","[0.03258299999993142, 0.04112499999996544, 0.04083300000002055]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.2890829999998914,0.03274999999985084,"[0.2890829999998914, 0.2777080000000751, 0.5974170000001777]","[0.030625000000100044, 0.03274999999985084, 0.035290999999915584]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,1.329584000000068,0.2423750000000382,"[1.329584000000068, 1.0712499999999636, 1.338707999999997]","[0.21820800000000418, 0.2423750000000382, 0.26358300000015333]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.4017079999998714,0.027250000000094587,"[4.838833000000022, 3.4017079999998714, 3.3654579999999896]","[0.028416999999990367, 0.027250000000094587, 0.026499999999941792]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.9527499999999236,0.5208749999999327,"[9.157457999999906, 2.667666000000054, 2.9527499999999236]","[0.5361250000000837, 0.5107090000001335, 0.5208749999999327]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,9.285041999999976,0.02616699999998673,"[9.165749999999662, 9.285041999999976, 10.246167000000241]","[0.02562499999976353, 0.02616699999998673, 0.03366699999969569]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,4.8744580000002316,0.06816699999990306,"[3.63470899999993, 8.540084000000206, 4.8744580000002316]","[0.05412500000011278, 0.06845900000007532, 0.06816699999990306]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.238708000000315,0.043791999999939435,"[5.051292000000103, 5.585750000000189, 5.238708000000315]","[0.043791999999939435, 0.04891600000019025, 0.03837500000008731]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6033750000001419,0.03712499999983265,"[0.5664160000001175, 0.7549589999998716, 0.6033750000001419]","[0.03812500000003638, 0.03195800000003146, 0.03712499999983265]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.169374999999945,0.025166999999783002,"[8.512500000000273, 7.169374999999945, 6.990542000000005]","[0.025166999999783002, 0.028999999999996362, 0.02337500000021464]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.5609589999999116,0.022166000000197528,"[2.5609589999999116, 3.1698750000000473, 2.491291000000274]","[0.021208000000115135, 0.02874999999994543, 0.022166000000197528]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.258332999999766,0.015665999999782798,"[6.5900000000001455, 2.258332999999766, 2.144665999999688]","[0.015374999999949068, 0.015665999999782798, 0.016750000000229193]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,12.77041700000018,0.028957999999875028,"[12.77041700000018, 10.08645800000022, 23.346291000000292]","[0.03220800000008239, 0.028583000000253378, 0.028957999999875028]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,4.0562919999997575,0.04912500000000364,"[4.0562919999997575, 3.6531660000000556, 4.206750000000284]","[0.058624999999665306, 0.04912500000000364, 0.04758300000003146]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.2154169999998885,0.028832999999849562,"[4.2154169999998885, 4.185125000000426, 4.5479999999997744]","[0.0283329999997477, 0.029584000000340893, 0.028832999999849562]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.5291669999996884,0.023500000000240107,"[0.5006250000001273, 0.5291669999996884, 0.64712499999996]","[0.025125000000116415, 0.02349999999978536, 0.023500000000240107]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,6.066458000000239,0.16404199999988123,"[10.254500000000007, 6.066458000000239, 5.62441600000011]","[0.1659999999997126, 0.16404199999988123, 0.15299999999979264]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4059589999997115,0.020542000000205007,"[0.6055409999999029, 0.3978750000001128, 0.4059589999997115]","[0.02145799999971132, 0.020542000000205007, 0.02045799999996234]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.39966599999979735,0.08550000000013824,"[0.44587500000034197, 0.39966599999979735, 0.37541600000031394]","[0.09300000000030195, 0.08550000000013824, 0.08333399999992253]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9258749999999054,0.024957999999969616,"[0.9258749999999054, 0.9443750000000364, 0.8483750000000327]","[0.024957999999969616, 0.02858399999968242, 0.024791000000277563]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.302708999999595,0.05208300000003874,"[1.3086659999999029, 1.1549589999999625, 1.302708999999595]","[0.05254100000001927, 0.05195800000001327, 0.05208300000003874]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2.6095000000000255,0.058250000000043656,"[3.4216660000001866, 2.5326669999999467, 2.6095000000000255]","[0.07491699999991397, 0.058250000000043656, 0.05345800000031886]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2756250000002183,0.038875000000189175,"[0.43229199999996126, 0.2756250000002183, 0.27224999999998545]","[0.0470420000001468, 0.038875000000189175, 0.035459000000173546]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,7.370457999999871,0.029250000000047294,"[7.370457999999871, 7.404416999999739, 6.678792000000158]","[0.032541999999921245, 0.029250000000047294, 0.0281249999998181]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5701670000003105,0.02766699999983757,"[0.7561670000000049, 0.5701670000003105, 0.5289170000000922]","[0.03016699999989214, 0.02766699999983757, 0.027124999999614374]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.669582999999875,0.024209000000155356,"[0.47787500000004, 0.7147920000002159, 0.669582999999875]","[0.024209000000155356, 0.02329199999985576, 0.024334000000180822]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.148916999999983,0.03433299999960582,"[1.6542500000000473, 1.139875000000302, 1.148916999999983]","[0.034874999999829015, 0.03433299999960582, 0.032625000000280124]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.4984159999999065,0.05804200000011406,"[1.4984159999999065, 1.6113329999998314, 1.3976250000000618]","[0.06091599999990649, 0.05470900000000256, 0.05804200000011406]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.355040999999801,0.035667000000103144,"[3.209415999999692, 2.355040999999801, 2.063499999999749]","[0.035667000000103144, 0.038250000000061846, 0.03479199999992488]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.257959000000028,0.029834000000391825,"[0.2982919999999467, 0.24258300000019517, 0.257959000000028]","[0.029834000000391825, 0.029250000000047294, 0.031292000000121334]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.990542000000005,0.18495800000027884,"[11.674666999999772, 6.990542000000005, 6.425915999999688]","[0.18866699999989578, 0.16758299999992232, 0.18495800000027884]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,41.054167000000234,0.0281249999998181,"[47.181000000000495, 29.789416999999958, 41.054167000000234]","[0.031167000000095868, 0.023624999999810825, 0.0281249999998181]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,34.41470799999934,5.100749999999607,"[31.10608300000058, 34.41470799999934, 96.21075000000019]","[5.298125000000255, 4.809624999999869, 5.100749999999607]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,118.74591700000019,0.030457999999271124,"[118.74591700000019, 119.2065419999999, 103.6192089999995]","[0.03879099999994651, 0.030457999999271124, 0.02979200000027049]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,39.71058300000004,0.06750000000010914,"[42.114582999999584, 39.71058300000004, 35.71050000000014]","[0.06812499999978172, 0.06750000000010914, 0.059500000000298314]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,51.09108300000116,0.04637499999989814,"[40.201082999999926, 52.628584000000046, 51.09108300000116]","[0.0364160000008269, 0.046833000000333413, 0.04637499999989814]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.4574999999986176,0.034582999998747255,"[3.4574999999986176, 4.334666999999172, 2.6714169999995647]","[0.034582999998747255, 0.038708000000042375, 0.029875000000174623]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,76.0720420000016,0.0235419999989972,"[76.0720420000016, 66.99337500000001, 83.81079200000022]","[0.02312499999970896, 0.0235419999989972, 0.0244170000005397]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,44.62579199999891,0.026583999999274965,"[103.45820800000001, 44.62579199999891, 32.26775000000089]","[0.04050000000097498, 0.026583999999274965, 0.02562500000021828]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,33.4434999999994,0.018957999998747255,"[31.11974999999984, 38.46404100000109, 33.4434999999994]","[0.018957999998747255, 0.01937499999985448, 0.01808300000084273]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.66029200000048,0.03299999999944703,"[105.66029200000048, 103.23208299999897, 136.3638749999991]","[0.03299999999944703, 0.03162499999962165, 0.034333999999944353]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,36.48520800000006,0.05779200000142737,"[36.08812500000022, 36.48520800000006, 40.66387500000019]","[0.05779200000142737, 0.07262500000069849, 0.05724999999983993]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,36.47808399999849,0.031500000000960426,"[36.3310419999998, 36.47808399999849, 44.08587500000067]","[0.029875000000174623, 0.031500000000960426, 0.03745800000069721]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.4306670000005397,0.028874999999970896,"[3.914291000000958, 3.4306670000005397, 3.298292000001311]","[0.028874999999970896, 0.02900000000045111, 0.027749999999286956]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,82.89329200000066,0.17508300000008603,"[141.479292, 82.89329200000066, 79.61354100000062]","[0.1711250000007567, 0.17508300000008603, 0.20025000000168802]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,1.0167079999991984,0.02191599999969185,"[1.2470000000012078, 0.874707999999373, 1.0167079999991984]","[0.027792000000772532, 0.020583999999871594, 0.02191599999969185]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.0299579999991693,0.4234169999999722,"[0.8125829999989946, 1.5661659999987023, 1.0299579999991693]","[0.40437500000007276, 0.4648329999999987, 0.4234169999999722]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.3317500000011933,0.0467079999998532,"[1.7770409999993717, 2.3317500000011933, 2.441957999999431]","[0.06099999999969441, 0.0467079999998532, 0.045041999999739346]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.8403330000001006,0.06474999999954889,"[2.27758299999914, 1.8403330000001006, 1.6624579999988782]","[0.0787079999990965, 0.06474999999954889, 0.059750000000349246]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.6857920000002196,0.04683400000067195,"[3.6303329999991547, 2.6857920000002196, 2.467333000000508]","[0.08612499999981083, 0.04683400000067195, 0.04637499999989814]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.5100409999995463,0.0382499999996071,"[0.6345839999994496, 0.5100409999995463, 0.3733329999995476]","[0.03795899999931862, 0.0382499999996071, 0.039999999999054126]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,88.93804199999795,0.027290999998513144,"[83.76887499999793, 88.93804199999795, 115.31616599999688]","[0.025417000000743428, 0.030542000000423286, 0.027290999998513144]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.0368750000016007,0.028041000001394423,"[1.478917000000365, 1.0368750000016007, 0.9763329999987036]","[0.028041000001394423, 0.029625000002852175, 0.026125000000320142]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.9066249999996217,0.02354100000229664,"[0.7760000000016589, 1.1929170000003069, 0.9066249999996217]","[0.02354100000229664, 0.02479200000016135, 0.02275000000008731]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.796542000000045,0.03250000000116415,"[13.777709000001778, 1.796542000000045, 1.3725000000013097]","[0.033082999998441665, 0.03250000000116415, 0.030749999998079147]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.830416000000696,0.06424999999944703,"[1.7672920000004524, 2.175250000000233, 1.830416000000696]","[0.06341700000120909, 0.06424999999944703, 0.0932909999974072]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.067749999998341,0.03620900000169058,"[3.4395409999997355, 2.690374999998312, 3.067749999998341]","[0.039291000000957865, 0.03533400000014808, 0.03620900000169058]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.4852500000015425,0.03187500000058208,"[0.37700000000040745, 0.5528340000018943, 0.4852500000015425]","[0.03183299999727751, 0.032332999999198364, 0.03187500000058208]" -unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,89.42433299999902,0.16837500000110595,"[91.1384999999973, 71.79000000000087, 89.42433299999902]","[0.16837500000110595, 0.16704099999697064, 0.18462500000168802]" +source,reportedSha,cpu,node,query,scenario,level,indexes,mutationMode,coldHydrateMs,writeMedianMs,coldSamplesMs,writeMedianSamplesMs +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0351249999999936,0.04108300000007148,"[5.72462500000006, 1.0351249999999936, 0.7784159999999929]","[0.05391600000007202, 0.04108300000007148, 0.03333300000008421]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6002500000000737,0.08370800000000145,"[0.6846249999999827, 0.6002500000000737, 0.5535830000000033]","[0.10508400000003348, 0.08370800000000145, 0.07229199999994762]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.3602500000000646,0.044792000000029475,"[4.9382080000000315, 2.3602500000000646, 1.4050829999999905]","[0.044792000000029475, 0.04575000000011187, 0.03054199999996854]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.7007079999999632,0.06499999999994088,"[4.827915999999959, 1.7007079999999632, 1.4844160000000102]","[0.07645800000000236, 0.06499999999994088, 0.06379200000003493]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.5674589999999853,0.04224999999996726,"[3.9017500000001064, 2.389499999999998, 3.5674589999999853]","[0.05254200000001674, 0.04224999999996726, 0.042167000000063126]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.35950000000002547,0.03441699999996217,"[0.48491599999999835, 0.3439170000000331, 0.35950000000002547]","[0.035916000000042914, 0.03424999999992906, 0.03441699999996217]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0181670000000622,0.029625000000010004,"[1.0672499999999445, 0.9009999999999536, 1.0181670000000622]","[0.02937500000007276, 0.029625000000010004, 0.03174999999998818]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.47316699999998946,0.028957999999988715,"[0.488790999999992, 0.47316699999998946, 0.4216660000000729]","[0.030624999999986358, 0.026624999999967258, 0.028957999999988715]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.453583999999978,0.018374999999991815,"[0.453583999999978, 0.45899999999994634, 0.43591700000001765]","[0.02400000000000091, 0.018374999999991815, 0.017291999999997643]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.17512499999998,0.029708000000027823,"[1.17512499999998, 1.1563750000000255, 1.2182500000000118]","[0.030167000000005828, 0.029708000000027823, 0.02845800000000054]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.354541999999924,0.0484159999999747,"[1.354541999999924, 1.2639580000000024, 1.3803749999999582]","[0.0484159999999747, 0.04650000000003729, 0.04958299999998417]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.361666000000014,0.030250000000023647,"[2.36424999999997, 2.361666000000014, 2.1252080000000433]","[0.03058299999997871, 0.030250000000023647, 0.027958000000012362]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.3018329999999878,0.02529200000003584,"[0.30504099999996015, 0.27504099999998743, 0.3018329999999878]","[0.02529200000003584, 0.02495899999996709, 0.02641700000003766]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.9264579999999114,0.17141700000001947,"[5.687125000000151, 0.9264579999999114, 0.8464999999998781]","[0.20145800000000236, 0.17141700000001947, 0.16179200000010496]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.5806250000000546,0.023374999999987267,"[4.35345899999993, 0.5806250000000546, 0.5676670000000286]","[0.02529099999992468, 0.023374999999987267, 0.021915999999919222]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.3533749999999145,0.07458299999984774,"[0.4469579999999951, 0.3501669999998285, 0.3533749999999145]","[0.09224999999992178, 0.07458299999984774, 0.07395899999983158]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.101709000000028,0.028125000000045475,"[1.0293329999999514, 1.101709000000028, 1.1210829999999987]","[0.02795800000012605, 0.029125000000021828, 0.028125000000045475]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.1549999999999727,0.05466699999988123,"[1.6447499999999309, 1.1549999999999727, 1.1247500000001764]","[0.05349999999998545, 0.054791000000022905, 0.05466699999988123]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.501709000000119,0.035499999999956344,"[3.5965419999999995, 1.501709000000119, 1.497041999999965]","[0.035499999999956344, 0.036166999999977634, 0.03483399999981884]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.21199999999998909,0.03079200000001947,"[0.23629100000016479, 0.21199999999998909, 0.20666699999992488]","[0.03224999999997635, 0.03079200000001947, 0.02920799999992596]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.8607079999999314,0.024208000000044194,"[0.8607079999999314, 2.6989169999999376, 0.7336669999999685]","[0.024791999999933978, 0.024208000000044194, 0.023374999999987267]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.3577500000001237,0.022249999999985448,"[0.3836659999999483, 0.3577500000001237, 0.35412499999983993]","[0.02295800000001691, 0.022208000000091488, 0.022249999999985448]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.35858299999995324,0.0182079999999587,"[0.35858299999995324, 0.36170799999990777, 0.35437500000011823]","[0.018625000000156433, 0.0182079999999587, 0.017708000000084212]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8285419999999704,0.028999999999996362,"[0.8597079999999551, 0.8285419999999704, 0.7832500000001801]","[0.028999999999996362, 0.02941600000008293, 0.027917000000115877]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2205000000001291,0.04620799999997871,"[3.3417919999999413, 1.2205000000001291, 1.068667000000005]","[0.04587500000002365, 0.04737499999987449, 0.04620799999997871]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.702874999999949,0.02945799999997689,"[1.702874999999949, 1.7706250000001091, 1.4607080000000678]","[0.028625000000147338, 0.03008300000010422, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.17570899999986977,0.0236250000000382,"[0.19266700000002857, 0.17570899999986977, 0.16241700000000492]","[0.023959000000104425, 0.0236250000000382, 0.022707999999965978]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6994160000001557,0.1590840000001208,"[0.6681659999999283, 0.7194579999998041, 0.6994160000001557]","[0.1590840000001208, 0.1566250000000764, 0.16454099999987193]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.55212500000016,0.019833000000062384,"[3.4158749999999145, 2.55212500000016, 2.29362500000002]","[0.020584000000098968, 0.019833000000062384, 0.01974999999993088]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9890829999999369,0.3662500000000364,"[6.2929169999999885, 1.9890829999999369, 1.8942910000000666]","[0.3662500000000364, 0.3607080000001588, 0.36875000000009095]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,6.962999999999965,0.02416699999980665,"[6.962999999999965, 6.937249999999949, 7.288833000000068]","[0.023959000000104425, 0.02416699999980665, 0.024833000000171523]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.0281250000000455,0.04920799999990777,"[6.501875000000155, 3.0281250000000455, 3.022042000000056]","[0.05037500000003092, 0.0487919999998212, 0.04920799999990777]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.077332999999953,0.032916000000113854,"[3.4896249999999327, 4.493457999999919, 4.077332999999953]","[0.03291599999988648, 0.03304200000002311, 0.032916000000113854]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.42866700000013225,0.028083000000151515,"[0.49329099999999926, 0.42866700000013225, 0.42183299999987867]","[0.027874999999994543, 0.028083000000151515, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,6.256209000000126,0.022540999999819178,"[6.362749999999778, 6.009209000000283, 6.256209000000126]","[0.022375000000010914, 0.023000000000138243, 0.022540999999819178]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.504334000000199,0.02233299999988958,"[5.4195419999996375, 2.102708000000348, 2.504334000000199]","[0.02233299999988958, 0.020874999999705324, 0.02275000000008731]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.2310410000000047,0.01670800000010786,"[2.2310410000000047, 2.1028329999999187, 2.3689580000000205]","[0.0157920000001468, 0.02412499999991269, 0.01670800000010786]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.594000000000051,0.029624999999668944,"[8.779041999999663, 8.072791999999936, 8.594000000000051]","[0.029624999999668944, 0.030124999999770807, 0.02945799999997689]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.54037500000004,0.04624999999987267,"[3.55600000000004, 3.54037500000004, 3.499500000000353]","[0.04624999999987267, 0.04587499999979627, 0.0466670000000704]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.14954200000011,0.02837500000032378,"[4.14954200000011, 4.155166999999892, 3.8135419999998703]","[0.029125000000021828, 0.027584000000388187, 0.02837500000032378]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.4853750000002037,0.024125000000367436,"[0.49099999999998545, 0.4549170000000231, 0.4853750000002037]","[0.025874999999814463, 0.024125000000367436, 0.02412499999991269]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,10.318250000000262,0.1623340000001008,"[10.318250000000262, 6.048457999999755, 10.341667000000143]","[0.1558749999999236, 0.1623340000001008, 0.18962499999997817]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.40116699999998673,0.020125000000007276,"[0.6117079999999078, 0.40104199999996126, 0.40116699999998673]","[0.020125000000007276, 0.020082999999885942, 0.02079199999980119]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.41000000000030923,0.09499999999979991,"[0.41791600000033213, 0.41000000000030923, 0.39274999999997817]","[0.10166700000036144, 0.09499999999979991, 0.09087500000032378]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9364160000000084,0.026917000000139524,"[0.9364160000000084, 0.9122079999997368, 0.9407909999999902]","[0.026917000000139524, 0.026292000000012195, 0.028374999999869033]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3859170000000631,0.05508300000019517,"[1.3859170000000631, 1.4595000000003893, 1.3534169999998085]","[0.05437500000016371, 0.05508300000019517, 0.057207999999718595]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.867291000000023,0.03829200000018318,"[2.6180420000000595, 1.867291000000023, 1.784208000000035]","[0.03837500000008731, 0.03829200000018318, 0.037792000000081316]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23879200000010314,0.030499999999847205,"[0.2610840000002099, 0.23879200000010314, 0.20104099999980463]","[0.03237500000022919, 0.030375000000276486, 0.030499999999847205]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.543916000000081,0.024167000000034022,"[6.630167000000256, 6.543916000000081, 6.258834000000206]","[0.02516700000023775, 0.024167000000034022, 0.023875000000316504]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4359580000000278,0.02233399999977337,"[0.46545900000000984, 0.41191600000001927, 0.4359580000000278]","[0.02233399999977337, 0.02187499999990905, 0.03945799999974042]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.4656249999998181,0.018667000000277767,"[0.8788330000002134, 0.4656249999998181, 0.4446250000000873]","[0.0187500000001819, 0.018667000000277767, 0.01741700000002311]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.9770830000002206,0.02758300000004965,"[1.033792000000176, 0.8886249999995925, 0.9770830000002206]","[0.027166999999735708, 0.02758300000004965, 0.029125000000021828]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.413583000000017,0.04975000000013097,"[1.4256670000004306, 1.413583000000017, 1.3247920000003433]","[0.04975000000013097, 0.04870799999980591, 0.0595419999999649]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.1568340000003445,0.030707999999776803,"[2.1568340000003445, 1.8261250000000473, 5.24066700000003]","[0.03116699999964112, 0.030707999999776803, 0.030500000000301952]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.2199999999997999,0.02570800000012241,"[0.2497920000000704, 0.2199999999997999, 0.21291599999995015]","[0.025040999999873748, 0.02570800000012241, 0.02616699999998673]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.665584000000308,0.15912500000013097,"[7.967874999999822, 6.619083000000046, 6.665584000000308]","[0.15912500000013097, 0.15949999999975262, 0.15812499999992724]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,31.33266700000013,0.023290999999971973,"[33.85387499999979, 30.411999999999807, 31.33266700000013]","[0.027290999999877386, 0.023290999999971973, 0.022083000000293396]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,32.94712499999969,4.570459000000483,"[32.341583000000355, 38.54725000000053, 32.94712499999969]","[4.5763749999996435, 4.186542000000372, 4.570459000000483]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,116.63533300000017,0.04199999999946158,"[116.63533300000017, 182.58820800000012, 96.3628749999998]","[0.04975000000013097, 0.04199999999946158, 0.03462500000023283]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,31.36491599999954,0.06604200000037963,"[30.216875000000073, 31.366417000000183, 31.36491599999954]","[0.07708300000012969, 0.06604199999947014, 0.06604200000037963]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,38.68462499999987,0.04241699999965931,"[38.68462499999987, 39.699916999999914, 29.501250000000255]","[0.04241699999965931, 0.046542000000044936, 0.04116700000031415]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.349875000000793,0.033083999999689695,"[2.33020900000065, 5.962333999999828, 3.349875000000793]","[0.033083999999689695, 0.030584000000089873, 0.03429200000027777]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,82.11424999999963,0.02695799999855808,"[82.11424999999963, 85.74275000000125, 72.24908300000061]","[0.02695799999855808, 0.027416999999331892, 0.025750000000698492]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,32.82341699999961,0.02754099999947357,"[33.420625000000655, 32.71441699999923, 32.82341699999961]","[0.02766700000029232, 0.02754099999947357, 0.02716599999985192]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,31.31633299999885,0.020833000000493485,"[30.61858299999949, 35.6038750000007, 31.31633299999885]","[0.021124999999301508, 0.020833000000493485, 0.019458999999187654]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.4436250000017,0.03412500000013097,"[100.0102079999997, 139.7112500000003, 105.4436250000017]","[0.033625000000029104, 0.034583000000566244, 0.03412500000013097]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.07537500000035,0.05991600000015751,"[32.07537500000035, 34.37654100000145, 28.356207999999242]","[0.061417000000801636, 0.05991600000015751, 0.058042000000568805]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,43.75299999999879,0.038708000000042375,"[47.976707999998325, 34.332249999999476, 43.75299999999879]","[0.038708000000042375, 0.036792000000787084, 0.03904099999999744]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.4630420000012236,0.03479200000037963,"[2.4630420000012236, 2.268500000000131, 3.432333999999173]","[0.03479200000037963, 0.03391699999883713, 0.03600000000005821]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,79.04391600000054,0.16750000000138243,"[89.01912500000071, 72.07933299999968, 79.04391600000054]","[0.16912499999853026, 0.16750000000138243, 0.16629199999988487]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9618749999990541,0.02633400000013353,"[1.196125000000393, 0.9618749999990541, 0.9210409999996045]","[0.034958000000187894, 0.02633400000013353, 0.024917000000641565]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.1346670000002632,0.37745799999902374,"[1.3257080000003043, 0.7652920000000449, 1.1346670000002632]","[0.4010840000009921, 0.3772079999998823, 0.37745799999902374]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.598041999999623,0.03175000000010186,"[1.5960830000003625, 1.6378329999988637, 1.598041999999623]","[0.03175000000010186, 0.032165999999051564, 0.029666000000361237]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.6873329999998532,0.059708999999202206,"[1.6873329999998532, 1.6451670000005834, 2.483125000000655]","[0.059708999999202206, 0.05762499999946158, 0.06354199999987031]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.4320000000006985,0.044874999999592546,"[2.4320000000006985, 2.6288750000003347, 2.3661250000004657]","[0.04408299999886367, 0.04641699999956472, 0.044874999999592546]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.4530419999991864,0.04341700000077253,"[0.4817910000001575, 0.4530419999991864, 0.3427499999997963]","[0.04341700000077253, 0.04445800000030431, 0.03875000000152795]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,71.70058299999982,0.027957999998761807,"[121.07949999999983, 71.70058299999982, 67.1005409999998]","[0.028542000000015832, 0.027957999998761807, 0.02599999999983993]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.2011669999992591,0.03149999999914144,"[1.5001659999998083, 1.2011669999992591, 0.8739590000004682]","[0.03149999999914144, 0.04029199999968114, 0.02525000000059663]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.923291999999492,0.024084000000584638,"[1.059291999999914, 0.923291999999492, 0.8243330000004789]","[0.02487500000097498, 0.024084000000584638, 0.021832999998878222]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.3909589999966556,0.02937500000189175,"[1.3909589999966556, 1.186375000001135, 1.8107920000002196]","[0.02937500000189175, 0.02937500000189175, 0.0332090000010794]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.7724170000001322,0.06183400000008987,"[1.7724170000001322, 1.7996670000029553, 1.6806250000008731]","[0.06112500000017462, 0.06183400000008987, 0.06529200000295532]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,4.107792000002519,0.03800000000046566,"[4.107792000002519, 6.186833000003389, 2.397625000001426]","[0.048666999999113614, 0.03800000000046566, 0.037166999998589745]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.42879200000243145,0.031791000001248904,"[0.4422500000000582, 0.345500000003085, 0.42879200000243145]","[0.031791000001248904, 0.03141699999832781, 0.0322089999972377]" +predecessor-708a58098,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,83.22537499999817,0.16970800000126474,"[83.22537499999817, 75.0867909999979, 95.38483300000007]","[0.16658400000233087, 0.16970800000126474, 0.1898750000000291]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0743340000000217,0.04087499999997135,"[5.657375000000002, 1.0743340000000217, 0.6812919999999849]","[0.051167000000020835, 0.04087499999997135, 0.0322500000000332]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.4832499999999982,0.08395799999999554,"[1.1152500000000032, 0.4832499999999982, 0.39520799999996825]","[0.10466700000000628, 0.08395799999999554, 0.06762500000002092]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.034750000000031,0.03995899999995345,"[4.705249999999978, 2.034750000000031, 1.326166999999998]","[0.04399999999998272, 0.03995899999995345, 0.02954099999999471]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.0534999999999854,0.06787499999995816,"[4.548750000000041, 2.0534999999999854, 1.3879999999999768]","[0.06991599999997788, 0.06787499999995816, 0.05320899999998119]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.358249999999998,0.041333999999949356,"[3.358249999999998, 3.928625000000011, 2.1645829999999933]","[0.04533300000002782, 0.041042000000004464, 0.041333999999949356]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.3153750000000173,0.033041999999966265,"[0.4369580000000042, 0.3137500000000273, 0.3153750000000173]","[0.033041999999966265, 0.03225000000009004, 0.03429100000005292]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.0077079999999796,0.0286670000000413,"[1.0077079999999796, 1.062791999999945, 0.9847499999999627]","[0.0286670000000413, 0.025167000000010376, 0.030750000000011823]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5239170000000968,0.028500000000008185,"[0.5607919999999922, 0.5239170000000968, 0.3907920000000331]","[0.03224999999997635, 0.028500000000008185, 0.027082999999947788]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.4177079999999478,0.018625000000042746,"[0.4355409999999438, 0.41012499999999363, 0.4177079999999478]","[0.021332999999913227, 0.018625000000042746, 0.016124999999988177]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.1582909999999629,0.028999999999996362,"[1.1092919999999822, 1.1582909999999629, 1.1777080000000524]","[0.028999999999996362, 0.029583000000002357, 0.027749999999969077]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.4522080000000415,0.04837500000007822,"[1.3318749999999682, 1.4800839999999198, 1.4522080000000415]","[0.04837500000007822, 0.057624999999916326, 0.04491700000005494]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.113375000000019,0.030375000000049113,"[2.113375000000019, 2.2245000000000346, 1.8023749999999836]","[0.03045800000006693, 0.030375000000049113, 0.027625000000057298]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.30054100000006656,0.024290999999948326,"[0.30054100000006656, 0.2664999999999509, 0.30425000000002456]","[0.024791999999933978, 0.024290999999948326, 0.024125000000026375]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.81837500000006,0.1664580000000342,"[0.8158750000000055, 0.9402499999999918, 0.81837500000006]","[0.18991699999992306, 0.1664580000000342, 0.15841699999998582]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.6629169999999931,0.023207999999954154,"[1.2451660000000402, 0.6629169999999931, 0.42533400000002075]","[0.03304200000002311, 0.023207999999954154, 0.0211659999999938]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.34445800000003146,0.07304099999998925,"[0.7740420000000086, 0.34445800000003146, 0.32645800000000236]","[0.08941700000002584, 0.07304099999998925, 0.06866700000000492]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.9312080000000833,0.027416000000016538,"[0.9312080000000833, 1.068416999999954, 0.8297090000000935]","[0.028874999999970896, 0.02704099999994014, 0.027416000000016538]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.2730000000000246,0.04870800000003328,"[1.5162910000000238, 0.9947499999999536, 1.2730000000000246]","[0.04870800000003328, 0.04800000000000182, 0.050707999999985987]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.3564999999999827,0.03633399999989706,"[2.3564999999999827, 4.545125000000098, 1.5941669999999704]","[0.03691599999990558, 0.03633399999989706, 0.034583999999995285]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.20341599999994742,0.029291000000057466,"[0.2294170000000122, 0.20341599999994742, 0.20287499999994907]","[0.033999999999991815, 0.029291000000057466, 0.029083000000127868]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.7443340000002081,0.022832999999991443,"[0.9646669999999631, 0.7443340000002081, 0.7106670000000577]","[0.023500000000012733, 0.02245800000014242, 0.022832999999991443]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.38637500000004366,0.021332999999913227,"[0.39629200000013043, 0.38637500000004366, 0.30187500000010914]","[0.02112499999998363, 0.021332999999913227, 0.02175000000011096]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.3633749999999054,0.017584000000169908,"[0.3633749999999054, 0.32791699999984303, 0.39845900000000256]","[0.0183750000001055, 0.017584000000169908, 0.01741700000002311]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.8120000000001255,0.026541999999835753,"[0.8120000000001255, 2.530124999999998, 0.7705000000000837]","[0.027499999999918145, 0.0263750000001437, 0.026541999999835753]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.9015839999999571,0.04025000000001455,"[0.9848340000000917, 0.9015839999999571, 0.8611250000001291]","[0.04037500000004002, 0.03904099999999744, 0.04025000000001455]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.4326670000000377,0.026624999999967258,"[1.3684589999998025, 1.4326670000000377, 1.457332999999835]","[0.026624999999967258, 0.027166999999963082, 0.02575000000001637]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.127666999999974,0.021500000000060027,"[0.127666999999974, 0.12533400000006623, 0.13883399999986068]","[0.02141699999992852, 0.021500000000060027, 0.021666999999979453]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6321659999998701,0.1436670000000504,"[0.6305839999999989, 0.6321659999998701, 0.6330000000000382]","[0.1424579999998059, 0.14833299999986593, 0.1436670000000504]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.491375000000062,0.018958999999995285,"[2.1017080000001442, 3.011167000000114, 2.491375000000062]","[0.017542000000048574, 0.019625000000132786, 0.018958999999995285]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,1.9824590000000626,0.3718750000000455,"[2.1454590000000735, 1.9824590000000626, 1.8542909999998756]","[0.3718750000000455, 0.37333300000000236, 0.37095799999997325]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,8.37541699999997,0.02408300000001873,"[8.37541699999997, 9.376833000000033, 6.800500000000056]","[0.024499999999989086, 0.02408300000001873, 0.023542000000134067]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.013125000000173,0.04529199999979028,"[2.9597499999999854, 3.0655830000000606, 3.013125000000173]","[0.04525000000012369, 0.0470829999999296, 0.04529199999979028]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.082374999999956,0.03262500000005275,"[6.939208000000008, 3.3059579999999187, 4.082374999999956]","[0.031208999999989828, 0.035667000000103144, 0.03262500000005275]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.4704580000000078,0.02750000000014552,"[0.4968750000000455, 0.4704580000000078, 0.3903330000000551]","[0.02800000000002001, 0.027082999999947788, 0.02750000000014552]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,5.61462500000016,0.02179200000000492,"[5.61462500000016, 6.133499999999913, 5.483625000000075]","[0.02179200000000492, 0.023750000000063665, 0.021457999999938693]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.0269579999999223,0.019708999999920707,"[2.0269579999999223, 2.092290999999932, 1.969957999999906]","[0.019874999999956344, 0.019667000000026746, 0.019708999999920707]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.018624999999929,0.014625000000023647,"[2.018624999999929, 1.9684159999999338, 2.037708000000066]","[0.014625000000023647, 0.01445800000010422, 0.014750000000049113]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.103791999999885,0.027291999999988548,"[7.451041999999916, 8.592624999999998, 8.103791999999885]","[0.026749999999992724, 0.028958000000102402, 0.027291999999988548]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.377542000000176,0.041291999999884865,"[6.620374999999967, 3.377542000000176, 3.3273329999999532]","[0.041707999999971435, 0.040541999999959444, 0.041291999999884865]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,3.950000000000273,0.025916999999935797,"[3.5790830000000824, 4.199166999999761, 3.950000000000273]","[0.027250000000094587, 0.025916999999935797, 0.025749999999788997]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.46566699999993943,0.023457999999664025,"[0.4351249999999709, 0.5332499999999527, 0.46566699999993943]","[0.02437499999996362, 0.02320800000006784, 0.023457999999664025]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,9.30099999999993,0.15637500000002547,"[9.30099999999993, 6.032249999999749, 9.930499999999938]","[0.15637500000002547, 0.15504200000032142, 0.15829200000007404]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.48587499999985084,0.01970900000014808,"[0.48587499999985084, 0.4137090000003809, 0.5827079999999114]","[0.01970900000014808, 0.018958000000111497, 0.02162499999985812]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4345419999999649,0.09891700000025594,"[0.41804199999978664, 0.4345419999999649, 0.4533329999999296]","[0.09891700000025594, 0.11458399999992253, 0.08645900000010442]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9308750000000146,0.02687500000001819,"[0.9308750000000146, 0.8725420000000668, 1.2563749999999345]","[0.02687500000001819, 0.026291000000128406, 0.02979200000027049]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.3446670000002996,0.04841600000008839,"[1.3446670000002996, 4.869666999999936, 1.1443329999997331]","[0.051084000000173546, 0.04775000000017826, 0.04841600000008839]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.7211669999996957,0.03533400000014808,"[1.7282500000001164, 1.7211669999996957, 1.691957999999886]","[0.03500000000030923, 0.037250000000312866, 0.03533400000014808]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2174169999998412,0.029250000000047294,"[0.38475000000016735, 0.2174169999998412, 0.21070800000006784]","[0.028999999999996362, 0.029250000000047294, 0.030583999999635125]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.952291999999943,0.02349999999978536,"[6.952291999999943, 6.852917000000161, 8.674457999999959]","[0.02349999999978536, 0.02295800000001691, 0.02420799999981682]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4858329999997295,0.02179200000000492,"[0.6482080000000678, 0.4858329999997295, 0.4005409999999756]","[0.022375000000010914, 0.02179200000000492, 0.021750000000338332]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.42699999999967986,0.01779099999976097,"[0.4492079999999987, 0.42699999999967986, 0.4018750000000182]","[0.01866599999993923, 0.01779099999976097, 0.01749999999992724]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.2259170000002086,0.02820900000006077,"[0.8468330000000606, 1.2259170000002086, 1.6071249999999964]","[0.026542000000063126, 0.02858299999979863, 0.02820900000006077]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.3388330000002497,0.04650000000037835,"[1.4552499999999782, 1.3388330000002497, 1.2582910000000993]","[0.04516700000021956, 0.04650000000037835, 0.04658300000028248]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.6952500000002146,0.030125000000225555,"[1.6952500000002146, 1.6755419999999503, 1.7101250000000618]","[0.030249999999796273, 0.02999999999974534, 0.030125000000225555]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.20983400000022812,0.025292000000263215,"[0.3148750000000291, 0.20716700000002675, 0.20983400000022812]","[0.024999999999636202, 0.025667000000339613, 0.025292000000263215]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.253165999999965,0.15695899999991525,"[6.252875000000131, 7.303917000000183, 6.253165999999965]","[0.15833400000019537, 0.15641699999969205, 0.15695899999991525]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,28.28441699999985,0.021459000000049855,"[72.82716699999992, 27.782208000000082, 28.28441699999985]","[0.0213330000001406, 0.021459000000049855, 0.022000000000389264]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,26.774457999999868,4.22545799999989,"[24.225333999999748, 26.774457999999868, 28.82300000000032]","[4.3191249999999854, 4.095000000000255, 4.22545799999989]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,99.0488749999995,0.02916700000059791,"[99.0488749999995, 87.82850000000053, 105.18233400000008]","[0.02916700000059791, 0.0282919999999649, 0.029583000000457105]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,34.2567910000007,0.04841599999963364,"[30.381416000000172, 34.2567910000007, 35.58508299999994]","[0.04841599999963364, 0.046833000000333413, 0.05070799999975861]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,36.11608299999989,0.04287500000009459,"[36.11608299999989, 29.285916000000725, 39.676124999999956]","[0.035375000000385626, 0.04287500000009459, 0.042916999999761174]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,2.3780410000008487,0.028832999999394815,"[3.551042000000052, 2.3780410000008487, 2.2408750000004147]","[0.0301660000004631, 0.028166999999484688, 0.028832999999394815]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,65.81054200000017,0.023709000000053493,"[68.83245799999986, 65.81054200000017, 63.107208999999784]","[0.023709000000053493, 0.023500000000240107, 0.024083000000246102]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,26.232874999999694,0.02695799999855808,"[40.144874999999956, 26.232874999999694, 26.11804200000006]","[0.054874999999810825, 0.02695799999855808, 0.022916999998415122]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,28.824375000000146,0.016916000000492204,"[25.789999999999054, 32.500332999999955, 28.824375000000146]","[0.016916000000492204, 0.017207999999300228, 0.016332999999576714]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,99.88737500000025,0.03183300000091549,"[98.77108299999963, 99.88737500000025, 105.21399999999994]","[0.03045899999960966, 0.03879199999937555, 0.03183300000091549]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,32.10933399999885,0.05095900000014808,"[31.123915999998644, 32.10933399999885, 34.52970799999821]","[0.049665999998978805, 0.05095900000014808, 0.0520410000008269]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,30.102249999999913,0.026125000000320142,"[34.505708999999115, 30.102249999999913, 30.034499999999753]","[0.02808299999924202, 0.026125000000320142, 0.025875000001178705]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.252375000000029,0.025292000000263215,"[3.252375000000029, 6.702041999998983, 2.4032920000008744]","[0.02529099999992468, 0.025582999998732703, 0.025292000000263215]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,66.76525000000038,0.16254200000003038,"[106.34183299999859, 66.33179199999904, 66.76525000000038]","[0.16254200000003038, 0.162333000000217, 0.16366700000071432]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9269999999996799,0.021000000000640284,"[0.9269999999996799, 0.7842080000009446, 0.939249999999447]","[0.021000000000640284, 0.020207999999911408, 0.02125000000160071]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,0.8918749999993452,0.345500000001266,"[0.8918749999993452, 1.09375, 0.801499999999578]","[0.345500000001266, 0.3409589999992022, 0.40845900000022084]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.4081249999999272,0.027000000000043656,"[1.4081249999999272, 1.4138750000001892, 1.2567909999997937]","[0.027000000000043656, 0.027000000000043656, 0.026499999999941792]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.550374999998894,0.05008300000008603,"[1.4640410000010888, 1.7112919999999576, 1.550374999998894]","[0.05008300000008603, 0.04862499999944703, 0.05500000000029104]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.706416999999419,0.038291999999273685,"[2.1125410000004194, 6.588042000001224, 2.706416999999419]","[0.038291999999273685, 0.037916999999652035, 0.038875000000189175]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.2971659999984695,0.0328750000007858,"[0.34516699999949196, 0.2971659999984695, 0.28058299999975134]","[0.03600000000005821, 0.0328750000007858, 0.031667000001107226]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,62.85924999999952,0.02375000000029104,"[62.85924999999952, 67.28525000000081, 58.87962499999958]","[0.023499999999330612, 0.02404200000091805, 0.02375000000029104]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.8166249999994761,0.021291999999448308,"[0.8054170000013983, 0.8166249999994761, 1.1918340000011085]","[0.02104200000030687, 0.021291999999448308, 0.02320800000052259]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.7165000000004511,0.01787500000136788,"[0.7324170000010781, 0.7165000000004511, 0.7141670000000886]","[0.019249999999374268, 0.01787500000136788, 0.01770799999940209]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.485208000000057,0.028333000000202446,"[1.485208000000057, 1.5661250000011933, 1.405624999999418]","[0.027542000001631095, 0.02883299999848532, 0.028333000000202446]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.8564580000002024,0.058999999999286956,"[2.147500000000946, 2.8564580000002024, 6.7239580000004935]","[0.058999999999286956, 0.10512500000004366, 0.058832999999140156]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.0395410000000993,0.030791999999564723,"[2.0516659999993863, 2.0395410000000993, 1.8730829999985872]","[0.0310829999998532, 0.030791999999564723, 0.028874999999970896]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.3088750000024447,0.02604100000098697,"[0.30958299999838346, 0.3088750000024447, 0.2982090000004973]","[0.03445800000190502, 0.025417000000743428, 0.02604100000098697]" +initial-repair-before-source-key,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,63.637291999999434,0.16087500000139698,"[73.30774999999994, 63.637291999999434, 60.51420899999721]","[0.15112500000032014, 0.16087500000139698, 0.16279199999917182]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5422909999999774,0.04795899999999165,"[7.019457999999986, 1.5422909999999774, 0.9168750000000045]","[0.06820800000002691, 0.04795899999999165, 0.03312499999992724]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.5774169999999685,0.10358399999995527,"[0.7287910000000011, 0.5774169999999685, 0.4724580000000742]","[0.13591699999994944, 0.10358399999995527, 0.08729199999993398]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.9348329999999123,0.04145800000003419,"[5.982833999999912, 2.5005840000000035, 2.9348329999999123]","[0.055124999999975444, 0.04145800000003419, 0.038584000000014385]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.8547079999999596,0.07545900000002348,"[5.317833000000064, 1.8547079999999596, 1.4118330000000014]","[0.09258299999999053, 0.07545900000002348, 0.07120799999995597]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,4.96449999999993,0.05312500000002274,"[4.96449999999993, 5.277500000000032, 2.237292000000025]","[0.05870900000002166, 0.05312500000002274, 0.04479199999991579]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5534160000000838,0.04108300000007148,"[0.5534160000000838, 0.47545800000000327, 0.5939589999999271]","[0.04108300000007148, 0.03512500000010732, 0.04391600000008111]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.3738749999999982,0.03712499999994634,"[1.4862079999999196, 1.3738749999999982, 1.2398750000000973]","[0.03712499999994634, 0.03329099999996288, 0.039083000000005086]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.6330420000000458,0.02966700000001765,"[0.6330420000000458, 2.25324999999998, 0.5249170000000731]","[0.04120899999998073, 0.02954099999999471, 0.02966700000001765]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5068750000000364,0.02400000000000091,"[0.6517090000000962, 0.48587499999996453, 0.5068750000000364]","[0.02400000000000091, 0.02575000000001637, 0.022165999999970154]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.4399159999999256,0.033542000000011285,"[1.602624999999989, 1.362292000000025, 1.4399159999999256]","[0.03712499999994634, 0.033542000000011285, 0.030416999999943073]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.5653330000000096,0.06200000000001182,"[1.8200829999999542, 1.5653330000000096, 1.3817090000000007]","[0.06200000000001182, 0.05275000000006003, 0.06212500000003729]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,3.1960840000000417,0.04029199999990851,"[3.1960840000000417, 3.439624999999978, 3.079917000000023]","[0.04066600000010112, 0.04029199999990851, 0.038417000000208645]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4436249999998836,0.033666000000039276,"[0.4221669999999449, 0.4436249999998836, 0.46212500000001455]","[0.033666000000039276, 0.0336659999998119, 0.0345830000001115]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.1865000000000236,0.2319169999998394,"[1.1865000000000236, 1.2047079999999823, 1.140250000000151]","[0.23608400000011898, 0.21875, 0.2319169999998394]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,1.6170419999998558,0.0314579999999296,"[1.6170419999998558, 3.813957999999957, 0.7646660000000338]","[0.03325000000018008, 0.0314579999999296, 0.02945799999997689]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6826670000000377,0.1246249999999236,"[0.6826670000000377, 0.7273330000000442, 0.4453330000001188]","[0.12995900000009897, 0.09499999999979991, 0.1246249999999236]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.3549580000001242,0.035959000000048036,"[1.3642500000000837, 1.3549580000001242, 1.1908330000001115]","[0.03737500000011096, 0.03583299999991141, 0.035959000000048036]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.7329169999998157,0.06558300000006057,"[2.1952909999999974, 1.7329169999998157, 1.4867499999998017]","[0.07095800000001873, 0.06558300000006057, 0.06445800000005875]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.1144580000000133,0.048665999999911946,"[2.1144580000000133, 2.269207999999935, 1.761792000000014]","[0.048665999999911946, 0.04808400000001711, 0.05020799999988412]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.2940000000000964,0.038290999999844644,"[0.2940000000000964, 0.3019170000000031, 0.2725420000001577]","[0.04329099999995378, 0.038290999999844644, 0.035540999999966516]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1429169999998976,0.030167000000119515,"[1.0290840000000117, 1.1429169999998976, 3.2424590000000535]","[0.03045800000018062, 0.029167000000143162, 0.030167000000119515]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.40741700000012315,0.028916999999864856,"[0.45129099999985556, 0.40741700000012315, 0.38391599999999926]","[0.028999999999996362, 0.028916999999864856, 0.0262079999999969]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.4859169999999722,0.02458400000000438,"[0.4867500000000291, 0.4859169999999722, 0.39783399999987523]","[0.02504199999998491, 0.02458400000000438, 0.019833999999946172]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.9199160000000575,0.02970899999991161,"[1.0534170000000813, 0.9199160000000575, 0.9095420000001013]","[0.0286670000000413, 0.02970899999991161, 0.030250000000023647]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.3675000000000637,0.0544999999999618,"[1.399208999999928, 1.3675000000000637, 1.1519590000000335]","[0.0544999999999618, 0.05475000000001273, 0.04633400000011534]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.8333749999999327,0.02970799999980045,"[1.7404579999999896, 5.489708000000064, 1.8333749999999327]","[0.029167000000143162, 0.03674999999998363, 0.02970799999980045]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.3076249999999163,0.026957999999922322,"[0.25833299999999326, 0.3076249999999163, 0.3160000000000309]","[0.026957999999922322, 0.030167000000119515, 0.025874999999814463]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.9558340000000953,0.1848339999999098,"[0.9558340000000953, 0.7612910000000284, 0.976207999999815]","[0.20079200000009223, 0.18012500000008913, 0.1848339999999098]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.39058399999999,0.02204200000005585,"[2.623542000000043, 4.846749999999929, 3.39058399999999]","[0.019665999999915584, 0.02204200000005585, 0.02620899999988069]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.859375,0.4612090000000535,"[2.6590839999998934, 2.9102920000000267, 2.859375]","[0.4904579999999896, 0.4612090000000535, 0.44804100000010294]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,11.543499999999767,0.03300000000035652,"[11.543499999999767, 12.79358400000001, 10.818582999999762]","[0.034166999999797554, 0.02979200000027049, 0.03300000000035652]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.8336249999997563,0.05804200000011406,"[3.6626250000003893, 3.8336249999997563, 4.012083000000075]","[0.05695799999966766, 0.06037500000002183, 0.05804200000011406]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.260792000000038,0.03687500000023647,"[8.50220900000022, 4.681958000000122, 5.260792000000038]","[0.03687500000023647, 0.06633300000021336, 0.03445899999996982]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6912499999998545,0.03179199999976845,"[0.6912499999998545, 0.7299170000001141, 0.6294590000002245]","[0.03233300000010786, 0.03179199999976845, 0.029290999999830092]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.222458000000188,0.02437499999996362,"[7.40383299999985, 7.0982090000002245, 7.222458000000188]","[0.028416000000106578, 0.02437499999996362, 0.02437499999996362]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.8296250000003056,0.023875000000316504,"[3.054916999999932, 2.8296250000003056, 2.369499999999789]","[0.02679199999965931, 0.023875000000316504, 0.021749999999883585]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.6068749999999454,0.017124999999850843,"[2.6068749999999454, 7.326249999999618, 2.556333999999879]","[0.017124999999850843, 0.01650000000017826, 0.019874999999956344]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,10.141875000000255,0.030790999999680935,"[10.333333000000039, 8.285542000000078, 10.141875000000255]","[0.030790999999680935, 0.03641699999980119, 0.0282919999999649]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,5.328665999999885,0.05670899999995527,"[5.328665999999885, 8.567417000000205, 5.279875000000175]","[0.05670899999995527, 0.052083999999922526, 0.061666000000059285]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,5.347917000000052,0.036291999999775726,"[5.900083999999879, 4.571292000000085, 5.347917000000052]","[0.03716699999995399, 0.03616700000020501, 0.036291999999775726]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.7923749999999927,0.027625000000170985,"[4.494167000000289, 0.5749999999998181, 0.7923749999999927]","[0.027625000000170985, 0.025500000000192813, 0.03195800000003146]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,7.811791000000085,0.1947920000002341,"[7.811791000000085, 10.947500000000218, 7.434625000000324]","[0.20424999999977445, 0.18520800000032978, 0.1947920000002341]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.44849999999996726,0.02233299999988958,"[0.696875000000091, 0.44849999999996726, 0.44795799999974406]","[0.02233299999988958, 0.02304199999980483, 0.021708000000216998]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.4286250000000109,0.09083399999963149,"[0.4286250000000109, 0.4139170000003105, 0.4967910000000302]","[0.09891700000025594, 0.09045800000012605, 0.09083399999963149]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9157500000001164,0.02641700000003766,"[0.9996670000000449, 0.9157500000001164, 0.9122910000000957]","[0.027458000000024185, 0.02641700000003766, 0.02545800000007148]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.5414580000001479,0.04929200000015044,"[1.2579170000003614, 1.5414580000001479, 4.885792000000038]","[0.04912500000000364, 0.04991599999993923, 0.04929200000015044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.871625000000222,0.036207999999987805,"[1.871625000000222, 2.133166000000074, 1.70049999999992]","[0.036207999999987805, 0.035292000000026746, 0.036375000000134605]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.23800000000028376,0.02908400000023903,"[0.24116700000013225, 0.2371250000001055, 0.23800000000028376]","[0.029583000000002357, 0.02908400000023903, 0.028541000000132044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,9.034708000000137,0.023333999999977095,"[10.201250000000073, 8.769874999999956, 9.034708000000137]","[0.023374999999759893, 0.022291999999652035, 0.023333999999977095]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5265000000003965,0.022542000000157714,"[0.42791699999997945, 0.6268329999998059, 0.5265000000003965]","[0.022457999999915046, 0.022542000000157714, 0.023417000000335975]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.6854589999998097,0.01974999999993088,"[0.6945409999998446, 0.4412080000001879, 0.6854589999998097]","[0.01974999999993088, 0.018708000000060565, 0.019834000000173546]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.103458000000046,0.029042000000117696,"[1.103458000000046, 1.0183329999999842, 1.2177910000000338]","[0.029042000000117696, 0.028416999999990367, 0.038374999999632564]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.5117079999999987,0.047374999999647116,"[1.5117079999999987, 1.2567909999997937, 1.5515419999996993]","[0.047374999999647116, 0.04645799999980227, 0.05670899999995527]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.120249999999942,0.03175000000010186,"[2.012832999999773, 2.183209000000261, 2.120249999999942]","[0.03170799999998053, 0.03175000000010186, 0.03279100000008839]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.27854200000001583,0.028249999999843567,"[0.2758750000002692, 0.27854200000001583, 0.35350000000016735]","[0.028249999999843567, 0.03225000000020373, 0.027791999999863037]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,8.088999999999942,0.19012500000008004,"[9.316209000000072, 8.088999999999942, 7.026208000000224]","[0.19145900000012261, 0.1812910000003285, 0.19012500000008004]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,33.07875000000058,0.02916700000059791,"[42.767249999999876, 33.07875000000058, 31.42674999999963]","[0.029666000000361237, 0.02916700000059791, 0.023791999999957625]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,33.32012500000019,5.407125000000633,"[33.32012500000019, 41.19837499999994, 30.584749999999985]","[5.407125000000633, 5.45470800000021, 4.67870800000037]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,110.33737500000007,0.030666999999994005,"[110.33737500000007, 106.26508300000023, 125.6349169999994]","[0.03720900000007532, 0.030666999999994005, 0.02991699999984121]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,38.04541599999993,0.05270899999959511,"[43.24687499999982, 37.244666999999936, 38.04541599999993]","[0.05120900000019901, 0.06199999999989814, 0.05270899999959511]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,41.277665999999954,0.04254100000071048,"[34.12587500000154, 44.11937500000022, 41.277665999999954]","[0.04254100000071048, 0.04591699999946286, 0.03816700000061246]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.481792000000496,0.03320799999892188,"[4.512749999999869, 3.481792000000496, 2.7888330000005226]","[0.035875000001396984, 0.03320799999892188, 0.031791000001248904]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,85.55687500000022,0.02758400000129768,"[85.55687500000022, 93.15350000000035, 70.22054199999911]","[0.02479200000016135, 0.02758400000129768, 0.029666999998880783]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,34.411957999998776,0.02520899999944959,"[34.79312499999833, 34.411957999998776, 26.065624999999272]","[0.027541999999812106, 0.02520899999944959, 0.02275000000008731]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,26.11395900000025,0.017249999998966814,"[25.214208999999755, 26.11395900000025, 32.55570799999987]","[0.01654200000120909, 0.017249999998966814, 0.017749999999068677]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,110.47316599999976,0.03579200000058336,"[110.47316599999976, 125.38516700000037, 109.32775000000038]","[0.03166699999928824, 0.03879199999937555, 0.03579200000058336]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,37.779458000000886,0.0647079999998823,"[34.400290999999925, 37.779458000000886, 40.832540999999765]","[0.0540419999997539, 0.06612500000119326, 0.0647079999998823]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,41.72241699999904,0.031166999999186373,"[109.0418750000008, 36.521749999999884, 41.72241699999904]","[0.031166999999186373, 0.030957999999372987, 0.033999999999650754]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.9486660000002303,0.03120899999885296,"[2.9486660000002303, 2.4476660000000265, 3.6760839999988093]","[0.03120899999885296, 0.051708000000871834, 0.027374999999665306]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,78.94058399999994,0.20570799999950395,"[84.93924999999945, 78.94058399999994, 76.07504100000006]","[0.18499999999949068, 0.20570799999950395, 0.2061249999987922]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9064159999998083,0.02029200000106357,"[0.9064159999998083, 0.729457999999795, 1.553875000001426]","[0.02029200000106357, 0.019874999999956344, 0.03612500000053842]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.018792000000758,0.47566700000061246,"[1.018792000000758, 0.8673330000001442, 1.1205840000002354]","[0.516208999999435, 0.41433300000062445, 0.47566700000061246]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.012333000000581,0.04458300000078452,"[2.6537920000009763, 2.012333000000581, 1.5971250000002328]","[0.0555000000003929, 0.04458300000078452, 0.03591700000106357]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,2.1954590000004828,0.08558399999856192,"[2.1954590000004828, 3.2372079999986454, 2.134750000001077]","[0.08558399999856192, 0.12591600000087055, 0.07983299999978044]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.950166000000536,0.05158399999891117,"[2.950166000000536, 2.406750000000102, 3.0508329999993293]","[0.06783299999915471, 0.05158399999891117, 0.045499999998355634]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.42654200000106357,0.03862500000104774,"[0.42654200000106357, 0.4214170000013837, 0.7119170000005397]","[0.03862500000104774, 0.037166999998589745, 0.04679200000100536]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,77.71420800000124,0.027375000001484295,"[92.06066600000122, 77.71420800000124, 75.4162499999984]","[0.027375000001484295, 0.0328750000007858, 0.024917000002460554]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.9677919999994629,0.025625000002037268,"[0.9677919999994629, 0.7877919999991718, 11.199749999999767]","[0.025499999999738066, 0.02679100000023027, 0.025625000002037268]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,1.041916999998648,0.02166600000055041,"[1.3040839999994205, 1.041916999998648, 0.9912919999987935]","[0.021375000000261934, 0.02166600000055041, 0.022500000002764864]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,2.170916999999463,0.0384169999997539,"[1.7232089999997697, 2.170916999999463, 2.2698750000017753]","[0.0384169999997539, 0.04233300000123563, 0.03679099999862956]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.436291000001802,0.07504100000005565,"[2.4444580000017595, 2.436291000001802, 1.685124999999971]","[0.08204199999818229, 0.07504100000005565, 0.0727500000029977]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.0354580000021087,0.04529199999888078,"[2.7467500000020664, 3.0354580000021087, 3.7460839999985183]","[0.035500000001775334, 0.0498749999969732, 0.04529199999888078]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.46329100000002654,0.038499999998748535,"[0.4377090000016324, 0.5460830000010901, 0.46329100000002654]","[0.04016599999886239, 0.0331659999974363, 0.038499999998748535]" +final-repair-working-tree-on-708a58098,708a58098,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,77.257708000001,0.1781249999985448,"[77.257708000001, 76.3961249999993, 94.35529200000019]","[0.17212500000096043, 0.1781249999985448, 0.2510000000002037]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.5344159999999647,0.043541000000004715,"[6.563333, 1.5344159999999647, 0.8222079999999892]","[0.05062500000002501, 0.043541000000004715, 0.03358300000002146]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6504590000000121,0.09804199999996399,"[0.6504590000000121, 0.7806659999999965, 0.5115410000000224]","[0.11595900000003212, 0.09804199999996399, 0.07154100000002472]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.8634999999999877,0.04337499999996908,"[8.225250000000017, 2.8634999999999877, 2.0628750000000196]","[0.05358300000000327, 0.04337499999996908, 0.03866699999997536]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.6306670000000167,0.07008299999995415,"[5.6329580000000306, 2.6306670000000167, 2.118333000000007]","[0.11508300000002691, 0.07008299999995415, 0.060875000000010004]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.93425000000002,0.054625000000100954,"[4.008750000000077, 3.011792000000014, 3.93425000000002]","[0.06137499999999818, 0.054625000000100954, 0.04733299999998053]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5240000000000009,0.043457999999986896,"[0.8331249999999955, 0.5060419999999795, 0.5240000000000009]","[0.043457999999986896, 0.04466700000000401, 0.03554199999996399]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.2246659999999565,0.038708000000042375,"[1.331833999999958, 1.2246659999999565, 1.094665999999961]","[0.038708000000042375, 0.03545900000005986, 0.04279199999996308]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5836249999999836,0.02904200000000401,"[0.5836249999999836, 0.4933330000000069, 0.6701669999999922]","[0.032083999999940715, 0.02612499999997908, 0.02904200000000401]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.5704170000000204,0.01783299999999599,"[0.5704170000000204, 2.4076670000000604, 0.5225829999999405]","[0.023416999999994914, 0.01691599999992377, 0.01783299999999599]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.459333000000015,0.030167000000005828,"[1.459333000000015, 1.6622500000000855, 1.380708000000027]","[0.030167000000005828, 0.03666600000008202, 0.02874999999994543]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.7483330000000024,0.058625000000006366,"[1.7483330000000024, 1.8982079999999542, 1.4034169999999904]","[0.058625000000006366, 0.05029100000001563, 0.0650829999999587]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.328166999999894,0.02949999999998454,"[2.4617079999999305, 2.328166999999894, 2.1100000000000136]","[0.032166999999958534, 0.02949999999998454, 0.028791999999953077]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.4054169999999431,0.026292000000012195,"[0.5019170000000486, 0.2963750000000118, 0.4054169999999431]","[0.027375000000006366, 0.024916999999959444, 0.026292000000012195]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.0157090000000153,0.1825420000000122,"[1.0812499999999545, 1.0157090000000153, 0.9902080000000524]","[0.1825420000000122, 0.1811249999999518, 0.20991699999990487]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.786209000000099,0.023750000000063665,"[6.189916000000039, 0.786209000000099, 0.5050000000001091]","[0.02566700000011224, 0.023750000000063665, 0.02108300000008967]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.6037499999999909,0.10279100000002472,"[0.6833750000000691, 0.6037499999999909, 0.49854199999981574]","[0.13587500000016917, 0.10279100000002472, 0.09179100000005747]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,1.2402090000000499,0.037084000000049855,"[1.5882910000000265, 1.2332910000000084, 1.2402090000000499]","[0.037084000000049855, 0.03779100000019753, 0.03650000000016007]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.4418339999999716,0.06804200000010496,"[1.6318750000000364, 1.333750000000009, 1.4418339999999716]","[0.0778339999999389, 0.06804200000010496, 0.06720799999993687]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,2.4227079999998296,0.04712500000005093,"[3.9609159999999974, 2.4227079999998296, 2.02866599999993]","[0.03883300000006784, 0.04970800000000963, 0.04712500000005093]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.30729199999996126,0.03816699999993034,"[0.30729199999996126, 0.33333300000003874, 0.26233300000012605]","[0.03816699999993034, 0.03995800000006966, 0.035750000000007276]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,1.1454590000000735,0.03125,"[1.1784170000000813, 0.8328329999999369, 1.1454590000000735]","[0.03125, 0.031292000000121334, 0.030625000000100044]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.44662500000004,0.029082999999900494,"[0.3642499999998563, 0.519083000000137, 0.44662500000004]","[0.02391699999998309, 0.03154099999983373, 0.029082999999900494]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.48441699999989396,0.022874999999885404,"[0.48233300000015333, 0.5694999999998345, 0.48441699999989396]","[0.025417000000061307, 0.01912499999980355, 0.022874999999885404]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,1.0217090000001008,0.030666000000110216,"[3.759416999999985, 0.9066669999999704, 1.0217090000001008]","[0.030666000000110216, 0.030250000000023647, 0.03099999999994907]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,1.2948750000000473,0.04866700000002311,"[1.5880419999998594, 1.2948750000000473, 1.1407500000000255]","[0.047708999999940715, 0.04866700000002311, 0.05070900000009715]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2.3149579999999332,0.04083300000002055,"[1.5907499999998436, 2.4610000000000127, 2.3149579999999332]","[0.03258299999993142, 0.04112499999996544, 0.04083300000002055]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.2890829999998914,0.03274999999985084,"[0.2890829999998914, 0.2777080000000751, 0.5974170000001777]","[0.030625000000100044, 0.03274999999985084, 0.035290999999915584]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,1.329584000000068,0.2423750000000382,"[1.329584000000068, 1.0712499999999636, 1.338707999999997]","[0.21820800000000418, 0.2423750000000382, 0.26358300000015333]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,3.4017079999998714,0.027250000000094587,"[4.838833000000022, 3.4017079999998714, 3.3654579999999896]","[0.028416999999990367, 0.027250000000094587, 0.026499999999941792]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.9527499999999236,0.5208749999999327,"[9.157457999999906, 2.667666000000054, 2.9527499999999236]","[0.5361250000000837, 0.5107090000001335, 0.5208749999999327]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,9.285041999999976,0.02616699999998673,"[9.165749999999662, 9.285041999999976, 10.246167000000241]","[0.02562499999976353, 0.02616699999998673, 0.03366699999969569]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,4.8744580000002316,0.06816699999990306,"[3.63470899999993, 8.540084000000206, 4.8744580000002316]","[0.05412500000011278, 0.06845900000007532, 0.06816699999990306]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,5.238708000000315,0.043791999999939435,"[5.051292000000103, 5.585750000000189, 5.238708000000315]","[0.043791999999939435, 0.04891600000019025, 0.03837500000008731]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.6033750000001419,0.03712499999983265,"[0.5664160000001175, 0.7549589999998716, 0.6033750000001419]","[0.03812500000003638, 0.03195800000003146, 0.03712499999983265]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,7.169374999999945,0.025166999999783002,"[8.512500000000273, 7.169374999999945, 6.990542000000005]","[0.025166999999783002, 0.028999999999996362, 0.02337500000021464]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.5609589999999116,0.022166000000197528,"[2.5609589999999116, 3.1698750000000473, 2.491291000000274]","[0.021208000000115135, 0.02874999999994543, 0.022166000000197528]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.258332999999766,0.015665999999782798,"[6.5900000000001455, 2.258332999999766, 2.144665999999688]","[0.015374999999949068, 0.015665999999782798, 0.016750000000229193]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,12.77041700000018,0.028957999999875028,"[12.77041700000018, 10.08645800000022, 23.346291000000292]","[0.03220800000008239, 0.028583000000253378, 0.028957999999875028]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,4.0562919999997575,0.04912500000000364,"[4.0562919999997575, 3.6531660000000556, 4.206750000000284]","[0.058624999999665306, 0.04912500000000364, 0.04758300000003146]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.2154169999998885,0.028832999999849562,"[4.2154169999998885, 4.185125000000426, 4.5479999999997744]","[0.0283329999997477, 0.029584000000340893, 0.028832999999849562]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.5291669999996884,0.023500000000240107,"[0.5006250000001273, 0.5291669999996884, 0.64712499999996]","[0.025125000000116415, 0.02349999999978536, 0.023500000000240107]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,6.066458000000239,0.16404199999988123,"[10.254500000000007, 6.066458000000239, 5.62441600000011]","[0.1659999999997126, 0.16404199999988123, 0.15299999999979264]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4059589999997115,0.020542000000205007,"[0.6055409999999029, 0.3978750000001128, 0.4059589999997115]","[0.02145799999971132, 0.020542000000205007, 0.02045799999996234]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.39966599999979735,0.08550000000013824,"[0.44587500000034197, 0.39966599999979735, 0.37541600000031394]","[0.09300000000030195, 0.08550000000013824, 0.08333399999992253]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.9258749999999054,0.024957999999969616,"[0.9258749999999054, 0.9443750000000364, 0.8483750000000327]","[0.024957999999969616, 0.02858399999968242, 0.024791000000277563]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.302708999999595,0.05208300000003874,"[1.3086659999999029, 1.1549589999999625, 1.302708999999595]","[0.05254100000001927, 0.05195800000001327, 0.05208300000003874]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2.6095000000000255,0.058250000000043656,"[3.4216660000001866, 2.5326669999999467, 2.6095000000000255]","[0.07491699999991397, 0.058250000000043656, 0.05345800000031886]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.2756250000002183,0.038875000000189175,"[0.43229199999996126, 0.2756250000002183, 0.27224999999998545]","[0.0470420000001468, 0.038875000000189175, 0.035459000000173546]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,7.370457999999871,0.029250000000047294,"[7.370457999999871, 7.404416999999739, 6.678792000000158]","[0.032541999999921245, 0.029250000000047294, 0.0281249999998181]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.5701670000003105,0.02766699999983757,"[0.7561670000000049, 0.5701670000003105, 0.5289170000000922]","[0.03016699999989214, 0.02766699999983757, 0.027124999999614374]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.669582999999875,0.024209000000155356,"[0.47787500000004, 0.7147920000002159, 0.669582999999875]","[0.024209000000155356, 0.02329199999985576, 0.024334000000180822]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,1.148916999999983,0.03433299999960582,"[1.6542500000000473, 1.139875000000302, 1.148916999999983]","[0.034874999999829015, 0.03433299999960582, 0.032625000000280124]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.4984159999999065,0.05804200000011406,"[1.4984159999999065, 1.6113329999998314, 1.3976250000000618]","[0.06091599999990649, 0.05470900000000256, 0.05804200000011406]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2.355040999999801,0.035667000000103144,"[3.209415999999692, 2.355040999999801, 2.063499999999749]","[0.035667000000103144, 0.038250000000061846, 0.03479199999992488]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.257959000000028,0.029834000000391825,"[0.2982919999999467, 0.24258300000019517, 0.257959000000028]","[0.029834000000391825, 0.029250000000047294, 0.031292000000121334]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.990542000000005,0.18495800000027884,"[11.674666999999772, 6.990542000000005, 6.425915999999688]","[0.18866699999989578, 0.16758299999992232, 0.18495800000027884]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,41.054167000000234,0.0281249999998181,"[47.181000000000495, 29.789416999999958, 41.054167000000234]","[0.031167000000095868, 0.023624999999810825, 0.0281249999998181]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,34.41470799999934,5.100749999999607,"[31.10608300000058, 34.41470799999934, 96.21075000000019]","[5.298125000000255, 4.809624999999869, 5.100749999999607]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,118.74591700000019,0.030457999999271124,"[118.74591700000019, 119.2065419999999, 103.6192089999995]","[0.03879099999994651, 0.030457999999271124, 0.02979200000027049]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,39.71058300000004,0.06750000000010914,"[42.114582999999584, 39.71058300000004, 35.71050000000014]","[0.06812499999978172, 0.06750000000010914, 0.059500000000298314]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,51.09108300000116,0.04637499999989814,"[40.201082999999926, 52.628584000000046, 51.09108300000116]","[0.0364160000008269, 0.046833000000333413, 0.04637499999989814]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,3.4574999999986176,0.034582999998747255,"[3.4574999999986176, 4.334666999999172, 2.6714169999995647]","[0.034582999998747255, 0.038708000000042375, 0.029875000000174623]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,76.0720420000016,0.0235419999989972,"[76.0720420000016, 66.99337500000001, 83.81079200000022]","[0.02312499999970896, 0.0235419999989972, 0.0244170000005397]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,44.62579199999891,0.026583999999274965,"[103.45820800000001, 44.62579199999891, 32.26775000000089]","[0.04050000000097498, 0.026583999999274965, 0.02562500000021828]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,33.4434999999994,0.018957999998747255,"[31.11974999999984, 38.46404100000109, 33.4434999999994]","[0.018957999998747255, 0.01937499999985448, 0.01808300000084273]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,105.66029200000048,0.03299999999944703,"[105.66029200000048, 103.23208299999897, 136.3638749999991]","[0.03299999999944703, 0.03162499999962165, 0.034333999999944353]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,36.48520800000006,0.05779200000142737,"[36.08812500000022, 36.48520800000006, 40.66387500000019]","[0.05779200000142737, 0.07262500000069849, 0.05724999999983993]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,36.47808399999849,0.031500000000960426,"[36.3310419999998, 36.47808399999849, 44.08587500000067]","[0.029875000000174623, 0.031500000000960426, 0.03745800000069721]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.4306670000005397,0.028874999999970896,"[3.914291000000958, 3.4306670000005397, 3.298292000001311]","[0.028874999999970896, 0.02900000000045111, 0.027749999999286956]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,82.89329200000066,0.17508300000008603,"[141.479292, 82.89329200000066, 79.61354100000062]","[0.1711250000007567, 0.17508300000008603, 0.20025000000168802]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,1.0167079999991984,0.02191599999969185,"[1.2470000000012078, 0.874707999999373, 1.0167079999991984]","[0.027792000000772532, 0.020583999999871594, 0.02191599999969185]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.0299579999991693,0.4234169999999722,"[0.8125829999989946, 1.5661659999987023, 1.0299579999991693]","[0.40437500000007276, 0.4648329999999987, 0.4234169999999722]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,2.3317500000011933,0.0467079999998532,"[1.7770409999993717, 2.3317500000011933, 2.441957999999431]","[0.06099999999969441, 0.0467079999998532, 0.045041999999739346]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.8403330000001006,0.06474999999954889,"[2.27758299999914, 1.8403330000001006, 1.6624579999988782]","[0.0787079999990965, 0.06474999999954889, 0.059750000000349246]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.6857920000002196,0.04683400000067195,"[3.6303329999991547, 2.6857920000002196, 2.467333000000508]","[0.08612499999981083, 0.04683400000067195, 0.04637499999989814]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.5100409999995463,0.0382499999996071,"[0.6345839999994496, 0.5100409999995463, 0.3733329999995476]","[0.03795899999931862, 0.0382499999996071, 0.039999999999054126]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,88.93804199999795,0.027290999998513144,"[83.76887499999793, 88.93804199999795, 115.31616599999688]","[0.025417000000743428, 0.030542000000423286, 0.027290999998513144]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,1.0368750000016007,0.028041000001394423,"[1.478917000000365, 1.0368750000016007, 0.9763329999987036]","[0.028041000001394423, 0.029625000002852175, 0.026125000000320142]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.9066249999996217,0.02354100000229664,"[0.7760000000016589, 1.1929170000003069, 0.9066249999996217]","[0.02354100000229664, 0.02479200000016135, 0.02275000000008731]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.796542000000045,0.03250000000116415,"[13.777709000001778, 1.796542000000045, 1.3725000000013097]","[0.033082999998441665, 0.03250000000116415, 0.030749999998079147]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.830416000000696,0.06424999999944703,"[1.7672920000004524, 2.175250000000233, 1.830416000000696]","[0.06341700000120909, 0.06424999999944703, 0.0932909999974072]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,3.067749999998341,0.03620900000169058,"[3.4395409999997355, 2.690374999998312, 3.067749999998341]","[0.039291000000957865, 0.03533400000014808, 0.03620900000169058]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.4852500000015425,0.03187500000058208,"[0.37700000000040745, 0.5528340000018943, 0.4852500000015425]","[0.03183299999727751, 0.032332999999198364, 0.03187500000058208]" +unchanged-predecessor-708a58098-after,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,89.42433299999902,0.16837500000110595,"[91.1384999999973, 71.79000000000087, 89.42433299999902]","[0.16837500000110595, 0.16704099999697064, 0.18462500000168802]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.0312910000000102,0.038124999999979536,"[5.3643749999999955, 1.0312910000000102, 0.7577499999999873]","[0.05270899999999301, 0.038124999999979536, 0.029375000000015916]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.4366669999999999,0.07529199999999037,"[1.0008749999999509, 0.4366669999999999, 0.3981670000000008]","[0.10500000000001819, 0.07491600000003018, 0.07529199999999037]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,1.9276669999999854,0.038833000000011,"[4.775166000000013, 1.9276669999999854, 1.2835000000000036]","[0.043000000000006366, 0.038833000000011, 0.029291999999941254]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.6822500000000673,0.060042000000066764,"[3.646250000000009, 1.6822500000000673, 1.2787080000000515]","[0.06854199999997945, 0.060042000000066764, 0.05520799999999326]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,2.1728329999999687,0.039750000000026375,"[2.743417000000022, 2.1728329999999687, 2.018583000000035]","[0.04283399999997073, 0.03937499999994998, 0.039750000000026375]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.45279200000004494,0.03187500000001364,"[0.48354200000005676, 0.45279200000004494, 0.3289589999999407]","[0.03366700000003675, 0.03187500000001364, 0.030666999999994005]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,0.9353330000000142,0.02804100000003018,"[1.2355840000000171, 0.91599999999994, 0.9353330000000142]","[0.02804100000003018, 0.024750000000040018, 0.03012499999999818]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.5013750000000528,0.024416999999971267,"[0.5304999999999609, 0.5013750000000528, 0.4323749999999791]","[0.031375000000025466, 0.024416999999971267, 0.02216699999996763]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.42449999999996635,0.020499999999969987,"[0.42433299999993324, 0.42449999999996635, 0.43458399999997255]","[0.021624999999971806, 0.020499999999969987, 0.015957999999955064]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.097582999999986,0.02929200000005494,"[1.0821670000000267, 1.216291999999953, 1.097582999999986]","[0.02929200000005494, 0.03412500000001728, 0.028500000000008185]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.1954580000000306,0.04212500000005548,"[1.1945419999999558, 4.345667000000049, 1.1954580000000306]","[0.05391700000006949, 0.04212500000005548, 0.04137500000001637]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1.9984580000000278,0.02783399999998437,"[5.111917000000062, 1.9984580000000278, 1.6756249999999682]","[0.028500000000008185, 0.02783399999998437, 0.02633400000001984]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.2756249999999909,0.022708000000079664,"[0.2756249999999909, 0.2300000000000182, 1.9361670000000686]","[0.023333999999977095, 0.022708000000079664, 0.02208399999994981]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.8138750000000528,0.14512500000000728,"[5.112124999999992, 0.8138750000000528, 0.6916670000000522]","[0.14937499999996362, 0.13891699999999219, 0.14512500000000728]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.4167499999999791,0.022000000000048203,"[0.928916000000072, 0.4167499999999791, 0.3436669999999822]","[0.023665999999934684, 0.022000000000048203, 0.020833000000038737]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.34416699999997036,0.06829200000004221,"[0.38045900000008714, 0.34416699999997036, 0.29833300000007057]","[0.07941600000003746, 0.06829200000004221, 0.06729199999995217]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.8558330000000751,0.02595900000005713,"[0.8558330000000751, 0.723459000000048, 2.0369170000000167]","[0.027082999999947788, 0.02595900000005713, 0.025167000000010376]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,0.9148750000000518,0.043209000000047126,"[0.9148750000000518, 0.8321250000000191, 2.3402500000000828]","[0.04433300000005147, 0.043209000000047126, 0.04283399999985704]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.3420000000000982,0.03287500000010368,"[1.3420000000000982, 1.3367919999998321, 1.5747499999999945]","[0.033249999999952706, 0.032500000000027285, 0.03287500000010368]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.1297500000000582,0.026834000000008018,"[0.1488329999999678, 0.1297500000000582, 0.11491699999987759]","[0.028792000000066764, 0.026834000000008018, 0.02670799999987139]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.6870830000000296,0.021917000000030384,"[0.6898750000000291, 0.6177090000001044, 0.6870830000000296]","[0.021917000000030384, 0.022208000000091488, 0.02179100000012113]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.320165999999972,0.0204999999998563,"[0.320165999999972, 0.32454200000006495, 0.27433399999995345]","[0.021041999999852123, 0.0204999999998563, 0.0204999999998563]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.32283299999994597,0.01679199999989578,"[0.2646669999999176, 0.32320800000002237, 0.32283299999994597]","[0.017291999999997643, 0.01679199999989578, 0.016458000000056927]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.737041999999974,0.026333999999906155,"[0.737041999999974, 0.7205830000000333, 0.7597909999999501]","[0.026458000000047832, 0.026333999999906155, 0.026041999999961263]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.8596669999999449,0.038250000000061846,"[0.8742079999999532, 0.7978749999999764, 0.8596669999999449]","[0.0388749999999618, 0.037542000000030384, 0.038250000000061846]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,3.0649590000000444,0.02579199999991033,"[3.0649590000000444, 1.8196669999999813, 3.4958749999998417]","[0.02579199999991033, 0.0262079999999969, 0.025249999999914507]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.1614999999999327,0.02108300000008967,"[0.1614999999999327, 0.14716700000008132, 0.1666250000000673]","[0.02108300000008967, 0.021167000000104963, 0.020999999999958163]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.621417000000065,0.1485410000000229,"[0.621417000000065, 0.6414169999998194, 0.5931250000001]","[0.14829200000008314, 0.14945899999997891, 0.1485410000000229]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.1581249999999272,0.017749999999978172,"[2.1581249999999272, 2.040040999999974, 3.214583000000175]","[0.017749999999978172, 0.017709000000195374, 0.020291999999926702]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.0856670000000577,0.3758749999999509,"[2.5281250000000455, 2.0375830000000406, 2.0856670000000577]","[0.40954099999999016, 0.3758749999999509, 0.37541600000008657]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,9.662249999999858,0.025208000000020547,"[7.5647089999999935, 9.662249999999858, 11.121124999999893]","[0.0255419999998594, 0.02458400000000438, 0.025208000000020547]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,2.984749999999849,0.044375000000172804,"[3.1885000000002037, 2.984749999999849, 2.8945830000000115]","[0.044375000000172804, 0.04441699999983939, 0.04320899999993344]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,3.578958000000057,0.031375000000025466,"[3.578958000000057, 3.3889999999998963, 7.994584000000032]","[0.03079099999990831, 0.031375000000025466, 0.0705000000000382]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.5013340000000426,0.02525000000014188,"[0.5659170000001268, 0.5013340000000426, 0.49450000000001637]","[0.02575000000001637, 0.02525000000014188, 0.024417000000084954]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,9.578166999999894,0.02245800000014242,"[10.502250000000004, 9.578166999999894, 5.958417000000054]","[0.022875000000112777, 0.02245800000014242, 0.02158299999996416]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.288084000000026,0.020416999999952168,"[2.288084000000026, 2.3884170000001177, 2.2132910000000265]","[0.020250000000032742, 0.02320800000006784, 0.020416999999952168]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.1773339999999735,0.014666999999917607,"[2.3521659999998974, 2.1773339999999735, 2.1308749999998327]","[0.01479099999983191, 0.01445800000010422, 0.014666999999917607]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,7.8315000000000055,0.028084000000035303,"[7.555041999999958, 7.8315000000000055, 8.844790999999987]","[0.02762499999994361, 0.028084000000035303, 0.0286670000000413]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.794583999999759,0.04020799999989322,"[3.3236249999999927, 3.794583999999759, 5.908124999999927]","[0.04020799999989322, 0.03983399999970061, 0.04033399999980247]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,8.481250000000273,0.025249999999687134,"[8.481250000000273, 8.589791999999761, 7.135208000000148]","[0.02525000000014188, 0.025249999999687134, 0.024917000000186817]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.468166999999994,0.02216599999974278,"[0.5005000000001019, 0.468166999999994, 0.4385419999998703]","[0.022832999999991443, 0.02216599999974278, 0.022041000000172062]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,5.937041000000136,0.156833000000006,"[6.008457999999791, 5.722917000000052, 5.937041000000136]","[0.19754199999988487, 0.15258300000004965, 0.156833000000006]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4604159999998956,0.020957999999609456,"[0.4604159999998956, 0.7367089999997916, 0.43704099999968093]","[0.019666000000142958, 0.028334000000086235, 0.020957999999609456]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.3912499999996726,0.08750000000009095,"[0.4231249999997999, 0.3912499999996726, 0.3474999999998545]","[0.09504199999992125, 0.0860410000000229, 0.08750000000009095]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.8894169999998667,0.02616699999998673,"[1.0054159999999683, 0.8894169999998667, 0.8639579999999114]","[0.026542000000063126, 0.02616699999998673, 0.0253749999997126]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.1385410000002594,0.0472500000000764,"[1.1385410000002594, 1.2903329999999187, 1.1011669999998048]","[0.04712500000005093, 0.04737500000010186, 0.0472500000000764]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.7721670000000813,0.03470900000002075,"[1.72400000000016, 2.9597499999999854, 1.7721670000000813]","[0.03287499999987631, 0.05295899999964604, 0.03470900000002075]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.22304199999962293,0.02804100000003018,"[0.23833400000012261, 0.22050000000035652, 0.22304199999962293]","[0.02804100000003018, 0.027665999999953783, 0.0282919999999649]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,5.6977920000003905,0.022707999999965978,"[6.466374999999971, 5.6977920000003905, 5.58658400000013]","[0.022542000000157714, 0.023999999999887223, 0.022707999999965978]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.42991699999993216,0.021000000000185537,"[0.4106249999999818, 0.48174999999991996, 0.42991699999993216]","[0.021291999999903055, 0.020957999999609456, 0.021000000000185537]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.44725000000016735,0.01749999999992724,"[0.463416000000052, 0.3801250000001346, 0.44725000000016735]","[0.018124999999599822, 0.01704199999994671, 0.01749999999992724]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.965291999999863,0.029250000000047294,"[0.965291999999863, 1.4474160000004304, 0.9387499999997999]","[0.02812500000027285, 0.029833999999937078, 0.029250000000047294]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.359625000000051,0.04491699999971388,"[1.3710419999997612, 1.1332079999997404, 1.359625000000051]","[0.044125000000349246, 0.04491699999971388, 0.05470800000011877]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.7040830000000824,0.02787499999976717,"[1.6147499999997308, 1.7955000000001746, 1.7040830000000824]","[0.027665999999953783, 0.029333999999835214, 0.02787499999976717]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.2600830000001224,0.023999999999887223,"[0.2600830000001224, 0.27662499999996726, 0.2477920000001177]","[0.023999999999887223, 0.023541999999906693, 0.02404099999967002]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,6.480833999999959,0.1602499999999054,"[5.718083000000206, 6.569999999999709, 6.480833999999959]","[0.16104100000029575, 0.1602499999999054, 0.15658399999983885]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,29.9392499999999,0.02145799999971132,"[88.05645800000002, 29.9392499999999, 28.1904999999997]","[0.032167000000299595, 0.0213330000001406, 0.02145799999971132]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,31.233374999999796,4.422250000000076,"[25.367750000000342, 35.073709000000235, 31.233374999999796]","[4.422250000000076, 4.290082999999868, 4.863499999999476]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,119.28895900000043,0.028750000000400178,"[119.28895900000043, 112.83629199999996, 159.5397499999999]","[0.028750000000400178, 0.028375000000778527, 0.04437500000040018]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,38.78625000000011,0.08424999999988358,"[44.99224999999933, 35.78045800000018, 38.78625000000011]","[0.08741699999973207, 0.08424999999988358, 0.060042000000066764]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,36.199375000000146,0.04041700000016135,"[47.67000000000007, 36.199375000000146, 36.00066700000025]","[0.043333000000529864, 0.04041700000016135, 0.038875000000189175]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,4.246624999999767,0.04033400000025722,"[5.306916999999885, 4.078957999999147, 4.246624999999767]","[0.04699999999957072, 0.04033400000025722, 0.038166999999702966]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,70.12620900000002,0.023999999999432475,"[83.9945000000007, 70.12620900000002, 66.36425000000054]","[0.02466699999968114, 0.023999999999432475, 0.02387500000077125]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,35.164708000000246,0.028040999999575433,"[88.24824999999873, 32.92066599999998, 35.164708000000246]","[0.04304099999899336, 0.02674999999908323, 0.028040999999575433]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,33.0034169999999,0.024833000001308392,"[33.0034169999999, 37.46583399999872, 32.660916999999245]","[0.024833000001308392, 0.04916700000103447, 0.019041999999899417]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,113.6421250000003,0.04162499999983993,"[113.6421250000003, 110.14391599999908, 115.3495839999996]","[0.04162499999983993, 0.042833000001337496, 0.04033300000082818]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,39.11108299999978,0.05554200000005949,"[37.95408299999872, 39.11108299999978, 91.93420800000058]","[0.06554200000027777, 0.05533400000058464, 0.05554200000005949]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,39.637250000001586,0.02958299999954761,"[39.637250000001586, 34.72620800000004, 39.905790999999226]","[0.031291999999666587, 0.02958299999954761, 0.02879199999915727]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,3.4240829999998823,0.029083000001264736,"[4.266749999998865, 2.8865420000001905, 3.4240829999998823]","[0.02695800000037707, 0.029792000001179986, 0.029083000001264736]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,85.11795900000106,0.20579100000031758,"[85.11795900000106, 107.23029100000167, 74.50212500000089]","[0.20579100000031758, 0.23666700000103447, 0.18966700000055425]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,1.1992079999999987,0.029250000001411536,"[1.1992079999999987, 1.1975000000002183, 1.2715000000007421]","[0.029250000001411536, 0.0380829999994603, 0.026499999999941792]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.116374999999607,0.524582999998529,"[1.116374999999607, 1.3872080000001006, 0.9067500000001019]","[0.524582999998529, 0.5905839999995806, 0.4977080000007845]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.95366599999943,0.042083000000275206,"[1.638582999999926, 2.8570419999996375, 1.95366599999943]","[0.034374999999272404, 0.042999999999665306, 0.042083000000275206]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,2.279500000000553,0.06941700000061246,"[2.279500000000553, 2.0957909999997355, 2.4045829999995476]","[0.07466700000077253, 0.06941700000061246, 0.06624999999985448]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,3.3728339999997843,0.05812499999956344,"[4.4004580000000715, 2.527665999999954, 3.3728339999997843]","[0.05812499999956344, 0.05608399999982794, 0.059416000000055647]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.43820899999991525,0.043541999999433756,"[0.5604170000005979, 0.3668340000003809, 0.43820899999991525]","[0.048499999998966814, 0.043541999999433756, 0.04345800000010058]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,83.09254200000032,0.025874999999359716,"[91.9817920000005, 83.09254200000032, 68.85520800000086]","[0.02712500000052387, 0.02562500000021828, 0.025874999999359716]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.9557089999980235,0.027249999999185093,"[0.9557089999980235, 1.1529169999994338, 0.8353339999994205]","[0.027249999999185093, 0.036167000002024, 0.02675000000090222]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,1.0901249999988067,0.02766699999847333,"[0.9516249999978754, 1.0901249999988067, 1.5019579999971029]","[0.025125000000116415, 0.02937499999825377, 0.02766699999847333]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,2.196875000001455,0.03637499999967986,"[1.772832999999082, 2.196875000001455, 2.4423750000023574]","[0.03462500000023283, 0.03637499999967986, 0.04420799999934388]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.228917000000365,0.06187499999941792,"[2.228917000000365, 1.8957080000000133, 2.6324580000000424]","[0.07020799999736482, 0.06112500000017462, 0.06187499999941792]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.867707999997947,0.039416999999957625,"[2.7585420000032173, 2.867707999997947, 3.013082999998005]","[0.039416999999957625, 0.03900000000066939, 0.043791999996756203]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.4704170000004524,0.03600000000005821,"[0.414042000000336, 0.5160829999986163, 0.4704170000004524]","[0.03600000000005821, 0.04845900000145775, 0.033167000001412816]" +simplified-bd3-working-tree-before-pair-keys,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,76.27408400000058,0.18812500000058208,"[79.87941599999976, 76.27408400000058, 74.83216700000048]","[0.18558299999858718, 0.18812500000058208, 0.23062500000014552]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.2640419999999608,0.040916999999979,"[6.3029169999999795, 1.2640419999999608, 1.0317499999999882]","[0.05904200000003357, 0.040916999999979, 0.03437500000001137]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.6130840000000148,0.1059579999999869,"[0.8011670000000208, 0.6130840000000148, 0.4386250000000018]","[0.12716699999998582, 0.1059579999999869, 0.0701249999999618]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.0663749999999936,0.04200000000003001,"[4.998749999999973, 2.0663749999999936, 1.6311659999999506]","[0.04741599999999835, 0.04200000000003001, 0.02966700000001765]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,2.80758400000002,0.06779199999999719,"[4.966166000000044, 2.80758400000002, 1.518792000000019]","[0.08949999999998681, 0.06779199999999719, 0.06450000000000955]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,3.827957999999967,0.04450000000008458,"[3.9180000000000064, 2.4368329999999787, 3.827957999999967]","[0.05945899999994708, 0.04450000000008458, 0.04245800000001054]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.5017090000000053,0.03987500000005184,"[0.5218750000000227, 0.46387500000003, 0.5017090000000053]","[0.03820799999994051, 0.040249999999900865, 0.03987500000005184]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,1.4457089999999653,0.030333999999925254,"[1.5004999999999882, 1.4457089999999653, 1.3420839999999998]","[0.02825000000007094, 0.030333999999925254, 0.03345799999999599]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.4609580000000051,0.0286670000000413,"[0.6705419999999549, 0.4609580000000051, 0.4027089999999589]","[0.032415999999898304, 0.024499999999989086, 0.0286670000000413]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.4866670000000113,0.017749999999978172,"[0.4629580000000715, 0.4905420000000049, 0.4866670000000113]","[0.022957999999903222, 0.016792000000009466, 0.017749999999978172]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,1.4588749999999209,0.029958000000078755,"[1.4588749999999209, 1.4888750000000073, 1.1089590000000271]","[0.03141700000003311, 0.029958000000078755, 0.02800000000002001]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.2898750000000518,0.04866600000002563,"[1.388708999999949, 1.2898750000000518, 1.2444590000000062]","[0.05112500000007003, 0.0482920000000604, 0.04866600000002563]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2.0041250000000446,0.029583999999999833,"[2.0041250000000446, 2.3268749999999727, 1.9027919999999767]","[0.030625000000100044, 0.029583999999999833, 0.028583000000026004]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.30579199999999673,0.025167000000010376,"[0.3596660000000611, 0.30579199999999673, 0.29629099999999653]","[0.025167000000010376, 0.024499999999989086, 0.025333000000046013]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,1.2002090000000862,0.16420900000002803,"[1.2002090000000862, 0.9081659999999374, 2.916749999999979]","[0.174082999999996, 0.154166000000032, 0.16420900000002803]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.6490420000000086,0.0232499999999618,"[1.3140420000000859, 0.6490420000000086, 0.3852080000000342]","[0.024583000000006905, 0.0232499999999618, 0.02041600000006838]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.3246670000000904,0.0701249999999618,"[0.4560829999999214, 0.3246670000000904, 0.32379200000002584]","[0.08691599999997379, 0.0701249999999618, 0.0670830000000251]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.8163749999999936,0.026458000000047832,"[0.9385829999999942, 0.8054580000000442, 0.8163749999999936]","[0.027749999999969077, 0.026458000000047832, 0.0262079999999969]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,1.2766670000000886,0.05058299999996052,"[1.1084169999999176, 1.48174999999992, 1.2766670000000886]","[0.0515419999999267, 0.05012499999997999, 0.05058299999996052]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.5295830000000024,0.033875000000080036,"[1.5717919999999594, 1.4937910000001011, 1.5295830000000024]","[0.03412500000013097, 0.033875000000080036, 0.03350000000000364]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.14591700000005403,0.027499999999918145,"[0.19250000000010914, 0.14591700000005403, 0.13899999999989632]","[0.029374999999845386, 0.027499999999918145, 0.025875000000041837]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.6852920000001177,0.022416000000021086,"[0.6852920000001177, 0.6617499999999836, 0.7280000000000655]","[0.022416000000021086, 0.022624999999834472, 0.021457999999938693]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.3057499999999891,0.02070899999989706,"[0.3057499999999891, 0.29291699999998855, 0.318958000000066]","[0.020542000000205007, 0.021208000000115135, 0.02070899999989706]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.33283400000004804,0.016875000000027285,"[0.3237920000001395, 0.33283400000004804, 0.35170800000014424]","[0.017583999999942534, 0.016875000000027285, 0.01679100000001199]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.7755839999999807,0.026458000000047832,"[0.7785420000000158, 0.7743330000000697, 0.7755839999999807]","[0.026290999999901032, 0.026458000000047832, 0.027041000000053828]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.9581660000001193,0.04408300000000054,"[3.045124999999871, 0.9581660000001193, 0.9496249999999691]","[0.04233399999998255, 0.04408300000000054, 0.04408300000000054]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.5712499999999636,0.02762499999994361,"[1.4887500000002092, 1.5712499999999636, 1.6421669999999722]","[0.02779200000009041, 0.02762499999994361, 0.026749999999992724]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.1717919999998685,0.022666999999955806,"[0.17329099999983555, 0.1671249999999418, 0.1717919999998685]","[0.02254100000004655, 0.023000000000138243, 0.022666999999955806]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.7250840000001517,0.1585410000000138,"[0.6796249999999873, 0.7250840000001517, 0.8495410000000447]","[0.15433299999995143, 0.1585410000000138, 0.16516599999999926]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.6619590000000244,0.01983299999983501,"[3.637958000000026, 2.6619590000000244, 2.5158329999999296]","[0.021042000000079497, 0.01983299999983501, 0.019499999999879947]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.451041999999916,0.38362499999993815,"[6.897625000000062, 2.2561249999998836, 2.451041999999916]","[0.3772080000001097, 0.38362499999993815, 0.3914999999999509]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,8.176584000000048,0.025834000000031665,"[8.176584000000048, 7.696166000000176, 8.619416999999885]","[0.02599999999983993, 0.025834000000031665, 0.025583999999980733]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,3.4006670000001122,0.05079200000000128,"[7.986458000000084, 3.4006670000001122, 3.2182910000001357]","[0.052667000000155895, 0.05079200000000128, 0.05029199999989942]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,4.467000000000098,0.03420899999991889,"[3.9054579999999532, 5.046334000000115, 4.467000000000098]","[0.03216700000007222, 0.03449999999997999, 0.03420899999991889]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.5422920000000886,0.029041999999890322,"[0.5482499999998254, 0.5422920000000886, 0.5303750000000491]","[0.029041999999890322, 0.028207999999949607, 0.030208000000129687]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,8.24529100000018,0.023333999999977095,"[8.902749999999969, 8.24529100000018, 6.973750000000109]","[0.030375000000049113, 0.022625000000061846, 0.023333999999977095]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.586292000000185,0.02162499999985812,"[2.872665999999981, 2.3177080000000387, 2.586292000000185]","[0.021457999999938693, 0.021917000000030384, 0.02162499999985812]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,2.2927089999998316,0.01675000000000182,"[2.569833000000017, 2.2212079999999332, 2.2927089999998316]","[0.01675000000000182, 0.024417000000084954, 0.01633399999991525]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,8.737124999999878,0.02920799999992596,"[8.737124999999878, 8.025625000000218, 9.092834000000039]","[0.037374999999883585, 0.02920799999992596, 0.027542000000266853]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,3.6304999999997563,0.046875,"[3.672917000000325, 3.5638340000000426, 3.6304999999997563]","[0.047625000000152795, 0.04658399999971152, 0.046875]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,4.739207999999962,0.02858399999968242,"[4.739207999999962, 4.115542000000005, 4.774499999999989]","[0.03087500000037835, 0.027665999999953783, 0.02858399999968242]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.4863340000001699,0.024457999999867752,"[0.4905839999996715, 0.48250000000007276, 0.4863340000001699]","[0.023708000000169704, 0.024457999999867752, 0.0244580000003225]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,10.013667000000169,0.16208299999971132,"[10.013667000000169, 6.269792000000052, 11.313125000000127]","[0.161750000000211, 0.16208299999971132, 0.18354099999987739]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4337500000001455,0.01999999999998181,"[0.5644580000002861, 0.41600000000016735, 0.4337500000001455]","[0.019541000000117492, 0.020833000000038737, 0.01999999999998181]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.46662500000002183,0.08762500000011642,"[0.425666000000092, 0.46662500000002183, 0.5076670000003105]","[0.09516700000040146, 0.08641599999964455, 0.08762500000011642]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,1.041291000000001,0.0255419999998594,"[1.0956670000000486, 1.041291000000001, 0.9039999999999964]","[0.03345899999976609, 0.025500000000192813, 0.0255419999998594]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.5433749999997417,0.05600000000004002,"[1.5792919999998958, 1.5433749999997417, 1.3843340000003082]","[0.05600000000004002, 0.05500000000029104, 0.05658300000004601]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2.171332999999777,0.03583299999991141,"[3.4876250000002074, 2.171332999999777, 1.7765420000000631]","[0.05337499999995998, 0.03583299999991141, 0.035790999999790074]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.24925000000030195,0.02970899999991161,"[0.2851250000003347, 0.2488749999997708, 0.24925000000030195]","[0.02970899999991161, 0.030416000000059285, 0.029042000000117696]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,6.137292000000343,0.023416999999881227,"[6.137292000000343, 6.370417000000089, 5.980457999999999]","[0.02266700000018318, 0.02358299999968949, 0.023416999999881227]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.4574160000001939,0.02275000000008731,"[0.4574160000001939, 0.4655420000003687, 0.42845800000031886]","[0.023707999999714957, 0.02275000000008731, 0.02233299999988958]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.48624999999992724,0.018083999999817024,"[0.48624999999992724, 0.4374160000002121, 0.5822500000003856]","[0.018083999999817024, 0.02395799999976589, 0.017832999999882304]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.9843329999998787,0.02783399999998437,"[0.9843329999998787, 1.1167919999998048, 0.9493750000001455]","[0.027375000000120053, 0.028625000000374712, 0.02783399999998437]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,1.2844579999996313,0.049417000000175904,"[1.615041999999903, 1.2844579999996313, 1.2829579999997804]","[0.049417000000175904, 0.04858300000023519, 0.04983399999991889]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.7795000000000982,0.029958999999962543,"[1.7795000000000982, 1.7217500000001564, 1.856416999999965]","[0.029750000000149157, 0.029958999999962543, 0.03166700000019773]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.25604100000009566,0.02525000000014188,"[0.3212499999999636, 0.25604100000009566, 0.2332499999997708]","[0.024957999999969616, 0.025375000000167347, 0.02525000000014188]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,7.175625000000309,0.16662500000029468,"[7.175625000000309, 8.724959000000126, 6.920083999999861]","[0.16212499999983265, 0.16708299999982046, 0.16662500000029468]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,32.63625000000002,0.022249999999985448,"[71.37945799999989, 32.540457999999944, 32.63625000000002]","[0.021749999999883585, 0.022249999999985448, 0.022375000000010914]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,29.85304200000064,4.64691700000003,"[28.227583000000322, 29.85304200000064, 32.88904199999979]","[4.64691700000003, 4.356041000000005, 4.8003340000004755]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,109.97383399999944,0.029292000000168628,"[109.97383399999944, 106.00433299999986, 112.32337499999994]","[0.029292000000168628, 0.0281249999998181, 0.029292000000168628]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,52.93570799999998,0.06574999999975262,"[36.91358299999956, 86.9100840000001, 52.93570799999998]","[0.05349999999998545, 0.06574999999975262, 0.0685829999993075]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,39.097334000000046,0.04250000000047294,"[47.27404200000001, 39.097334000000046, 38.00987499999974]","[0.04537499999969441, 0.04250000000047294, 0.03837500000008731]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,2.954666999999972,0.03083299999980227,"[3.742457999999715, 2.954666999999972, 2.7373749999997017]","[0.03316699999959383, 0.02999999999974534, 0.03083299999980227]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,79.53437499999927,0.025459000000410015,"[88.35854199999994, 79.53437499999927, 67.1142920000002]","[0.025459000000410015, 0.031208000000333413, 0.02358300000014424]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,28.68554100000074,0.023375000000669388,"[28.68554100000074, 28.103041999998823, 34.35466600000109]","[0.022500000000945874, 0.023375000000669388, 0.02404200000091805]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,36.416166999999405,0.02466699999968114,"[33.46458299999904, 45.69087500000023, 36.416166999999405]","[0.02383399999962421, 0.02470799999900919, 0.02466699999968114]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,99.20158300000003,0.03049999999893771,"[168.2094589999997, 99.20158300000003, 93.87508400000115]","[0.05229200000030687, 0.03049999999893771, 0.030208000000129687]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,37.520542000000205,0.059000000001105946,"[37.520542000000205, 36.330417000001034, 37.65049999999974]","[0.05912499999976717, 0.055959000001166714, 0.059000000001105946]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,33.91679099999965,0.034416000000419444,"[40.97583399999894, 33.91679099999965, 33.184165999999095]","[0.03604099999938626, 0.034416000000419444, 0.027916999999433756]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.683167000001049,0.026834000000235392,"[3.7252500000013242, 2.683167000001049, 2.5344160000004194]","[0.026834000000235392, 0.02562500000021828, 0.02691699999923003]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,77.9893749999992,0.16120799999953306,"[91.84212499999921, 77.9893749999992, 70.04774999999972]","[0.16120799999953306, 0.16295799999898009, 0.1527089999999589]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.8880829999998241,0.020165999998425832,"[1.0072920000002341, 0.749959000000672, 0.8880829999998241]","[0.020165999998425832, 0.020334000000730157, 0.02012500000091677]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,1.3957080000000133,0.36016600000039034,"[1.442665999999008, 0.9885830000002898, 1.3957080000000133]","[0.36016600000039034, 0.3504579999989801, 0.4018340000002354]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.9957500000000437,0.027458000000478933,"[2.1016250000011496, 1.4281250000003638, 1.9957500000000437]","[0.027000000000043656, 0.027458000000478933, 0.02783400000043912]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.8453340000014578,0.05687499999839929,"[1.7981669999990118, 1.8630839999987074, 1.8453340000014578]","[0.05791700000008859, 0.05687499999839929, 0.05595800000082818]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.3124170000010054,0.04100000000107684,"[2.3124170000010054, 2.2944580000003043, 2.9015419999996084]","[0.03883300000052259, 0.04100000000107684, 0.041667000001325505]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.6099169999997684,0.03650000000016007,"[0.6099169999997684, 0.45991700000013225, 0.7652920000000449]","[0.03858299999956216, 0.030167000000801636, 0.03650000000016007]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,75.82945800000016,0.024583000000347965,"[75.82945800000016, 78.23812499999985, 67.68520799999897]","[0.024625000000014552, 0.024583000000347965, 0.024583000000347965]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.8571670000001177,0.02141699999992852,"[0.8571670000001177, 0.8835839999992459, 0.7205420000009326]","[0.020625000001018634, 0.02141699999992852, 0.02162499999940337]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.7487079999991693,0.018500000001949957,"[0.7487079999991693, 0.7232089999997697, 0.9671669999988808]","[0.01820899999984249, 0.018500000001949957, 0.019041999999899417]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.7566249999981665,0.029624999999214197,"[1.9912079999994603, 1.384249999999156, 1.7566249999981665]","[0.0305000000007567, 0.028707999998005107, 0.029624999999214197]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,2.211124999997992,0.07483399999910034,"[2.593790999999328, 2.211124999997992, 2.037625000000844]","[0.10570800000277814, 0.07449999999880674, 0.07483399999910034]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.8465829999986454,0.032083000001875916,"[2.5024589999993623, 2.8465829999986454, 5.5251659999994445]","[0.03104199999870616, 0.0328750000007858, 0.032083000001875916]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.36083299999882,0.029209000000264496,"[0.36083299999882, 0.38866699999925913, 0.3214589999988675]","[0.029458000000886386, 0.02862499999901047, 0.029209000000264496]" +predecessor-708a58098-third-control,unknown,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,74.66149999999834,0.1709579999987909,"[74.66149999999834, 84.44570899999962, 67.2556250000016]","[0.1748749999969732, 0.16924999999901047, 0.1709579999987909]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,synced,1.186125000000004,0.03729199999997945,"[5.231832999999995, 1.186125000000004, 0.6998340000000098]","[0.04887500000000955, 0.03729199999997945, 0.030416999999999916]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,synced,0.41825000000000045,0.07483300000001236,"[0.6557500000000118, 0.41825000000000045, 0.3844579999999951]","[0.0968340000000012, 0.07483300000001236, 0.06587500000000546]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,synced,2.0276250000000005,0.037166000000013355,"[4.146082999999976, 1.8204579999999737, 2.0276250000000005]","[0.041333000000008724, 0.037166000000013355, 0.02837499999998272]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,synced,1.4263329999999996,0.05741699999998673,"[3.4786659999999756, 1.4263329999999996, 1.192875000000015]","[0.06700000000000728, 0.05741699999998673, 0.049250000000029104]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,synced,1.9229170000000977,0.03870799999992869,"[2.545665999999983, 1.9229170000000977, 1.8904999999999745]","[0.04208300000004783, 0.03870799999992869, 0.03804200000001856]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,synced,0.26291700000001583,0.030624999999986358,"[0.3896670000000313, 0.23404200000004494, 0.26291700000001583]","[0.030624999999986358, 0.031124999999974534, 0.02862500000003365]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,synced,0.8632500000001073,0.027874999999994543,"[0.9079999999999018, 0.8632500000001073, 0.8012499999999818]","[0.027874999999994543, 0.024083999999902517, 0.028500000000008185]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,none,optimistic,0.49512500000003,0.023207999999954154,"[0.49512500000003, 0.5272090000000844, 0.38875000000007276]","[0.03049999999996089, 0.023207999999954154, 0.021666999999979453]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,none,optimistic,0.41137499999990723,0.01966699999991306,"[0.39037500000006276, 0.41137499999990723, 2.1205420000000004]","[0.021457999999938693, 0.01966699999991306, 0.015792000000033113]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,none,optimistic,0.9822500000000218,0.027416000000016538,"[1.0245419999999967, 0.9822500000000218, 0.92674999999997]","[0.027874999999994543, 0.027416000000016538, 0.026416999999923974]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,none,optimistic,1.130708000000027,0.04116599999997561,"[1.071458000000007, 1.185416000000032, 1.130708000000027]","[0.04295799999999872, 0.04116599999997561, 0.04045800000005784]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1.9226670000000468,0.026540999999951964,"[5.354207999999971, 1.9226670000000468, 1.73762499999998]","[0.02758300000004965, 0.026540999999951964, 0.025958000000059656]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,none,optimistic,0.25912499999992633,0.025624999999990905,"[0.2565829999999778, 0.26233400000000984, 0.25912499999992633]","[0.025999999999953616, 0.025624999999990905, 0.022916000000009262]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,none,optimistic,0.7966250000000628,0.1487920000000713,"[0.7966250000000628, 0.8262919999999667, 0.7207499999999527]","[0.15949999999998, 0.1487920000000713, 0.14800000000002456]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,synced,0.5105409999999893,0.022291999999993095,"[0.9368339999999762, 0.5105409999999893, 0.3610830000000078]","[0.024167000000034022, 0.022291999999993095, 0.020958000000064203]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,synced,0.3150830000000724,0.06925000000001091,"[0.3994999999999891, 0.3150830000000724, 0.2884999999999991]","[0.08058299999993324, 0.06925000000001091, 0.06816600000001927]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,synced,0.7776250000000573,0.026624999999967258,"[0.8880410000000438, 0.7251249999999345, 0.7776250000000573]","[0.026624999999967258, 0.027000000000043656, 0.02583300000003419]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,synced,0.9613329999999678,0.043874999999957254,"[0.9613329999999678, 0.8075830000000224, 2.2239999999999327]","[0.044957999999951426, 0.043874999999957254, 0.043416999999976724]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,synced,1.3699159999999893,0.03270800000007057,"[1.3699159999999893, 1.2629579999999123, 1.5214999999999463]","[0.03270800000007057, 0.03304100000002563, 0.031957999999917774]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,synced,0.14800000000002456,0.0262079999999969,"[0.15975000000003092, 0.14800000000002456, 0.12570900000002894]","[0.029082999999900494, 0.02612499999997908, 0.0262079999999969]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,synced,0.6196670000000495,0.021666999999979453,"[0.6549579999999651, 0.6196670000000495, 0.6019999999999754]","[0.022000000000048203, 0.021666999999979453, 0.020709000000010747]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,100,manual,optimistic,0.2813330000000178,0.02029200000004039,"[0.2813330000000178, 0.2859169999999267, 0.2535410000000411]","[0.02029200000004039, 0.019708000000036918, 0.020332999999936874]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,100,manual,optimistic,0.30341599999997015,0.016875000000027285,"[0.27616600000010294, 0.30341599999997015, 0.3106669999999667]","[0.01749999999992724, 0.016875000000027285, 0.01633300000003146]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,100,manual,optimistic,0.7138750000001437,0.025875000000041837,"[0.7138750000001437, 0.6485830000001442, 0.7204159999998865]","[0.02575000000001637, 0.02616699999998673, 0.025875000000041837]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,100,manual,optimistic,0.8446659999999611,0.03804200000013225,"[0.8446659999999611, 0.8208749999998872, 0.8571670000001177]","[0.03808300000014242, 0.03804200000013225, 0.037583000000040556]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1.3518750000000637,0.02529099999992468,"[1.287375000000111, 1.3518750000000637, 3.0969159999999647]","[0.02529099999992468, 0.025583000000096945, 0.024417000000084954]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,100,manual,optimistic,0.15316600000005565,0.021083999999973457,"[0.1435830000000351, 0.15541699999994307, 0.15316600000005565]","[0.02066600000011931, 0.022124999999959982, 0.021083999999973457]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,100,manual,optimistic,0.6073750000000473,0.1477500000000873,"[0.5953329999999823, 0.643291999999974, 0.6073750000000473]","[0.14491700000007768, 0.14858300000014424, 0.1477500000000873]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,synced,2.55925000000002,0.018958000000111497,"[2.101167000000032, 3.0117079999999987, 2.55925000000002]","[0.01749999999992724, 0.019916999999850304, 0.018958000000111497]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,synced,2.0039580000000115,0.37274999999999636,"[2.16537500000004, 2.0039580000000115, 1.8616250000000036]","[0.37274999999999636, 0.3634169999997994, 0.37345799999980045]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,synced,8.260125000000016,0.02387500000008913,"[8.260125000000016, 9.225165999999945, 6.792374999999993]","[0.024249999999938154, 0.02387500000008913, 0.02366699999993216]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,synced,2.8895830000001297,0.04320800000004965,"[2.99087499999996, 2.8895830000001297, 2.8283340000000408]","[0.04437499999994543, 0.04320800000004965, 0.04275000000006912]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,synced,3.545334000000139,0.03054199999996854,"[6.482749999999896, 3.191624999999931, 3.545334000000139]","[0.029541999999992186, 0.030833000000029642, 0.03054199999996854]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,synced,0.3887919999999667,0.025374999999939973,"[0.44499999999993634, 0.3863749999998163, 0.3887919999999667]","[0.025333000000046013, 0.025416999999833934, 0.025374999999939973]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,synced,5.574792000000116,0.021541999999953987,"[5.3900000000001, 5.574792000000116, 6.07204200000001]","[0.02141699999992852, 0.021541999999953987, 0.021917000000030384]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,none,optimistic,2.030749999999898,0.019957999999860476,"[2.1009579999999914, 2.030749999999898, 2.0104579999999714]","[0.019957999999860476, 0.01999999999998181, 0.019457999999985987]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,none,optimistic,1.9495409999999538,0.014167000000043117,"[2.059458000000177, 1.9495409999999538, 1.9007090000000062]","[0.014666000000033819, 0.014000000000123691, 0.014167000000043117]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,none,optimistic,6.651250000000118,0.026333000000022366,"[6.798874999999953, 6.630249999999933, 6.651250000000118]","[0.026583000000073298, 0.026333000000022366, 0.025500000000192813]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,none,optimistic,5.050834000000123,0.03833299999996598,"[3.868541999999934, 5.050834000000123, 7.386124999999993]","[0.03833299999996598, 0.038791999999830296, 0.037542000000030384]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,6.49941600000011,0.023832999999967797,"[6.564750000000004, 6.0502500000000055, 6.49941600000011]","[0.024415999999973792, 0.023832999999967797, 0.023790999999846463]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,none,optimistic,0.38770900000008623,0.02108300000008967,"[0.38770900000008623, 0.3701659999999265, 0.4080420000000231]","[0.02179200000000492, 0.02108300000008967, 0.0206670000000031]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,none,optimistic,5.232290999999805,0.14233399999966423,"[5.232290999999805, 5.300000000000182, 5.154250000000047]","[0.14233399999966423, 0.1411670000002232, 0.14291700000012497]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,synced,0.4027499999997417,0.018999999999778083,"[0.5001250000000255, 0.4027499999997417, 0.35037499999998545]","[0.025041999999757536, 0.018999999999778083, 0.018250000000080036]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,synced,0.3204160000000229,0.08579199999985576,"[0.3204160000000229, 0.30029100000001563, 0.3312909999999647]","[0.0885840000000826, 0.08516599999984464, 0.08579199999985576]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,synced,0.7595420000002377,0.024625000000014552,"[0.8144999999999527, 0.7586660000001757, 0.7595420000002377]","[0.024625000000014552, 0.024208000000271568, 0.024750000000040018]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,synced,1.009375000000091,0.04454200000009223,"[1.035707999999886, 1.009375000000091, 1.001792000000023]","[0.04454200000009223, 0.04445799999984956, 0.044667000000117696]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1.453958000000057,0.03237500000022919,"[1.4727500000003602, 1.3694170000003396, 1.453958000000057]","[0.031542000000172266, 0.03237500000022919, 0.03291699999999764]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,synced,0.1867499999998472,0.02670799999987139,"[0.20133399999986068, 0.16391599999997197, 0.1867499999998472]","[0.02670799999987139, 0.025292000000263215, 0.04437499999994543]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,synced,5.117666999999983,0.02179100000012113,"[5.247457999999824, 5.117666999999983, 4.878750000000309]","[0.02195899999969697, 0.02179100000012113, 0.021374999999807187]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,1000,manual,optimistic,0.3625419999998485,0.019584000000122614,"[0.4131250000000364, 0.3625419999998485, 0.318583000000217]","[0.019708999999693333, 0.019584000000122614, 0.019375000000309228]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,1000,manual,optimistic,0.354457999999795,0.01633399999991525,"[0.40650000000005093, 0.354457999999795, 0.34649999999965075]","[0.016375000000152795, 0.01633399999991525, 0.01625000000012733]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,1000,manual,optimistic,0.7157909999996264,0.02479200000016135,"[0.8099580000002788, 0.710790999999972, 0.7157909999996264]","[0.02479200000016135, 0.024875000000065484, 0.024708999999802472]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,1000,manual,optimistic,0.953125,0.04033300000037343,"[0.9822500000000218, 0.9466249999995853, 0.953125]","[0.04033300000037343, 0.03966599999967002, 0.053083000000242464]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1.3744160000001102,0.02616600000010294,"[1.463959000000159, 1.3744160000001102, 1.3639160000002448]","[0.025958000000173342, 0.02616600000010294, 0.026915999999800988]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0.16466700000000856,0.021833000000242464,"[0.18329199999971024, 0.16466700000000856, 0.1492920000000595]","[0.021833000000242464, 0.021750000000338332, 0.022124999999959982]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,1000,manual,optimistic,5.155416999999943,0.14195799999970404,"[5.608959000000141, 5.155416999999943, 4.813250000000153]","[0.14845800000011877, 0.1389169999997648, 0.14195799999970404]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,synced,25.397958000000017,0.020833000000038737,"[29.095916999999645, 25.397958000000017, 24.1123749999997]","[0.021124999999756255, 0.020833000000038737, 0.02058400000032634]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,synced,24.94420799999989,3.7740840000005846,"[26.438249999999698, 24.206416999999874, 24.94420799999989]","[3.8087499999996908, 3.696791000000303, 3.7740840000005846]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,synced,85.51450000000023,0.027000000000043656,"[86.33737500000007, 85.51450000000023, 77.80195800000001]","[0.026084000000082597, 0.0275420000007216, 0.027000000000043656]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,synced,29.367207999999664,0.04549999999926513,"[29.367207999999664, 30.83795800000007, 24.556542000000263]","[0.044874999999592546, 0.04549999999926513, 0.04995800000051531]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,synced,26.050207999999657,0.030624999999417923,"[25.733667000000423, 27.47662499999933, 26.050207999999657]","[0.031208000000333413, 0.030624999999417923, 0.030332999999700405]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,synced,1.9862089999996897,0.026332999999794993,"[1.9102920000004815, 1.9862089999996897, 2.8369170000005397]","[0.025415999999495398, 0.026332999999794993, 0.028207999999722233]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,synced,63.32908299999963,0.02250000000003638,"[71.30100000000039, 58.07537499999944, 63.32908299999963]","[0.023125000000618456, 0.022084000000177184, 0.02250000000003638]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,none,optimistic,26.488124999999854,0.021917000000030384,"[26.488124999999854, 22.4788750000007, 26.865333000000646]","[0.021917000000030384, 0.021666999999979453, 0.022041999999601103]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,none,optimistic,26.976666000000478,0.0165419999993901,"[26.976666000000478, 29.364667000000736, 25.548499999999876]","[0.0165419999993901, 0.0165419999993901, 0.016208000000005995]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,none,optimistic,84.69095899999957,0.028457999999773165,"[84.69095899999957, 89.43879199999992, 77.93291700000009]","[0.028832999999394815, 0.028457999999773165, 0.028292000000874395]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,none,optimistic,27.84887499999968,0.04533300000002782,"[26.300792, 76.289041, 27.84887499999968]","[0.04533300000002782, 0.04683399999885296, 0.04437500000130967]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,29.088832999999795,0.024625000000014552,"[29.088832999999795, 25.029833000000508, 30.795249999999214]","[0.024625000000014552, 0.02387500000077125, 0.03654199999982666]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,none,optimistic,2.307749999999942,0.02220800000031886,"[2.4985410000008414, 2.307749999999942, 1.9747500000012224]","[0.02220800000031886, 0.02254199999879347, 0.021291999999448308]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,none,optimistic,56.64025000000038,0.14825000000018917,"[58.082125000000815, 55.62812499999927, 56.64025000000038]","[0.14825000000018917, 0.15079200000036508, 0.14487499999995634]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,synced,0.9359999999996944,0.031000000000858563,"[0.7775829999991402, 1.2680419999996957, 0.9359999999996944]","[0.018917000001238193, 0.03637499999967986, 0.031000000000858563]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,synced,0.7940419999995356,0.31841700000040873,"[1.105833999999959, 0.7940419999995356, 0.7709999999988213]","[0.33891699999912817, 0.31841700000040873, 0.3123749999995198]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,synced,1.3650840000009339,0.03637499999967986,"[1.7695420000000013, 1.3650419999994483, 1.3650840000009339]","[0.048875000000407454, 0.03637499999967986, 0.03304100000059407]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,synced,1.824124999999185,0.05858299999999872,"[1.959499999999025, 1.5097089999999298, 1.824124999999185]","[0.06499999999869033, 0.05858299999999872, 0.057875000000422006]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2.1280839999999444,0.04141600000002654,"[2.1280839999999444, 2.0438329999997222, 2.5808340000003227]","[0.04366599999957543, 0.04120800000055169, 0.04141600000002654]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,synced,0.3374579999999696,0.03275000000030559,"[0.3374579999999696, 0.3058340000006865, 0.3926660000015545]","[0.03275000000030559, 0.030917000000044936, 0.033250000000407454]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,synced,67.43487500000083,0.024375000000873115,"[67.43487500000083, 57.98725000000013, 68.67541700000038]","[0.024749999998675776, 0.024375000000873115, 0.02366699999947741]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue update,10000,manual,optimistic,0.7712080000001151,0.023458000001483015,"[0.857332999999926, 0.7712080000001151, 0.725124999999025]","[0.025040999998964253, 0.023458000001483015, 0.022834000001239474]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list: newest 50 open,visible issue delete,10000,manual,optimistic,0.886000000000422,0.020999999998821295,"[0.7284579999995913, 0.886000000000422, 0.9263339999997697]","[0.020207999999911408, 0.021709000000555534, 0.020999999998821295]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + author,visible author update,10000,manual,optimistic,1.4362920000003214,0.029083000001264736,"[1.4362920000003214, 1.2298749999990832, 1.6557919999995647]","[0.029083000001264736, 0.028500000000349246, 0.038667000000714324]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + comment count,visible issue comment insert,10000,manual,optimistic,1.442666000000827,0.051916000000346685,"[1.5397499999999127, 1.4392919999991136, 1.442666000000827]","[0.051833999999871594, 0.051916000000346685, 0.05195900000035181]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2.06341699999939,0.030458000001090113,"[2.06341699999939, 2.455458999998882, 1.924749999998312]","[0.030458000001090113, 0.03120899999885296, 0.02974999999969441]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0.5334579999998823,0.029166000000259373,"[0.6856660000012198, 0.5334579999998823, 0.2989159999997355]","[0.029166000000259373, 0.029249999999592546, 0.02808300000106101]" +final-pair-key-working-tree,bd3f574ec,Apple M5 Max,v24.19.0,open issues + documents,visible document update,10000,manual,optimistic,63.55033300000105,0.15262500000062573,"[63.55033300000105, 66.8135829999992, 52.596041999999215]","[0.15262500000062573, 0.1552080000001297, 0.14658300000155577]" From f34738e6946525d5c94c857639a8870467ec162d Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 13:48:09 -0700 Subject: [PATCH 6/9] Fix dist facade driver and register new replay owners Direct facade fixtures contain flat rows and root references. Inject their explicit flat resolver instead of a generic helper removed from built dist. Keep every assertion; dist now passes 367 tests and source component15. Register the joined whole-source and public-container copy replay owners. The existing owner-portfolio check fails before registration and69manifest judgments pass afterward. Both guarded direct replays report their requested owner, seed/path, one execution and nonzero completed runs. Production, mangle cache and benchmark harness are byte-identical to1498a8101. Retain the failed CI benchmark's complete paired samples: overall0.63xwrites and0.51xcold, but one sustained comment-count cold case fails the unchanged gate. Do not erase the failure or adjust thresholds; the next identical-source run tests repeatability. Versioned evidence preserves the open timing question. --- .../2026-11-05-boundary-only-high-review.md | 46 + ...2026-11-05-boundary-only-high-sources.json | 33 + packages/db/tests/oracle-replay-manifest.ts | 7 +- .../tests/query/bucket-facade-adapter.test.ts | 24 +- scripts/bench/README.md | 8 + scripts/bench/boundary-only-ci-2026-11-05.csv | 1514 +++++++++++------ 6 files changed, 1116 insertions(+), 516 deletions(-) diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md index b0c78ed3ff..b0bd36c3de 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -534,3 +534,49 @@ Final precommit checks: pnpm lint:changed, Prettier on all changed TS/JSON/MD, and git diff --check pass. PR prose has zero hard STE violations; the two advisories are the required checklist wording. No lowered/removed oracle budget report was emitted. Remote checks are still pending the new push. + +## CI follow-up on 1498a8101 + +Two test-integration gaps are confirmed and repaired without production changes. +The minified job passes cache validation, build, public API, client-only bundles +and production error text, then fails 14 direct facade tests against dist. The +build correctly omits the unused generic resolver export. The direct driver +injected that missing export. Its flat row/root-reference fixtures now supply +their explicit flat resolver. No assertion or fixture value changes; generic +copy and nested compiled receiving owners remain. Local dist RED reproduces the +14 failures. After driver repair, all six dist files / 367 tests pass, and all +15 source component tests pass. The initial local attempt used stale dist and +is a setup failure, not RED evidence; rebuilding precedes the valid RED. + +The replay lane also exposes missing manifest owners for the two newly +registered properties. Existing replay tests reject exactly that gap: full +local RED is 116 passed / one failed, and the focused owner check fails. +Registering join-result-key.whole-source and query.public-container-copy repairs +the portfolio. All 69 manifest judgments pass. Guarded direct replays of both +properties report the exact requested owner, seed/path, one execution and +nonzero completed runs. No replay guard, comparison or run budget changes. + +The new remote benchmark is not green. Run +[42105504239](https://github.com/TanStack/db/actions/runs/42105504239) reports +0.63x overall writes / 0.51x cold, but its localized gate rejects comment-count +cold hydration at 1,000 rows, no indexes, optimistic mode. Base cold samples are +8.597094, 7.248325 and 7.265830 ms; candidate samples are 17.483109, 17.383462 +and 16.623491 ms. Every candidate exceeds the complete base range by the +unchanged relative/absolute floors. The median increases 139.2%, from 7.266 to +17.383 ms. The query's geometric means still improve 9.7% writes / 13.5% cold; +this cannot cancel the case failure. No sample is discarded or called noise +without repeated evidence. The next source-identical benchmark will test +repeatability; these two test-driver repairs do not change production or harness. +All 504 new repetition rows remain in +[the CI table](../../../scripts/bench/boundary-only-ci-2026-11-05.csv), alongside +the earlier remote pair. The manifest binds the downloaded complete JSONs and +report. PR readiness remains unproven while this localized failure is unresolved. + +Loss accounting adds CI01 (dist driver) and CI02 (replay registration), both +fixed-now with the evidence above. CI03 (localized cold timing) remains +confirmed-open pending the source-identical repeat. Earlier review occurrences +remain accounted for: GitHub re-associated async-callback and gate-wording +comments, but the current helper accepts void or Promise and the current report +already says every repetition. The mutable summary still covers bd3f574ec and +is not fresh review evidence for 1498a8101. The bot marks both original table +pipes and whole-source fan-out comments addressed by 1498a81. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json index 23f0d6c78d..ed60254be5 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -304,5 +304,38 @@ "mutantExit": 1, "restoredExit": 0 } + }, + "ci1498Followup": { + "parentHead": "1498a8101934558a3ce3832b9854a800f9cc0c81", + "productionChanged": false, + "sourceSha256": { + "packages/db/tests/oracle-replay-manifest.ts": "11b40ea1de5bca1c84013fd76287e5e19e735869d245471b9891ec2be57d42c5", + "packages/db/tests/query/bucket-facade-adapter.test.ts": "341e85a9f41e0e03cbb766b92f80bc392e553c24f2cc123e4d87ffb06512a504" + }, + "evidenceSha256": { + "shipped-ci-dist-red.log": "07459a4b736c57254b25845396e0ca2b9cb1a3da261ab75d9eed5194757e7fc8", + "shipped-ci-dist-green.log": "3c02c1c1e6b603b989b7bdef3d45dff0861281c91e42acedfc768ec461d109ca", + "shipped-ci-flat-driver-source.log": "b813a08ad8c72c87e84614a878e3e058193b3ad05ede372b24822eb0fdfdc04b", + "shipped-ci-replay-local.log": "d457b17554c39673271ac04847349fdba42f0c0e4df61c343e8f40792ad814b6", + "shipped-ci-replay-registration-red.log": "d8cccaef27ab22afa5b4d0c8aa41f2414a623206e50b4d12c5e2e6f58e77a71e", + "shipped-ci-replay-registration-green.log": "7b214a630d1a33d93235b23cef426ea10c302d57f68fe02d7f1359995d016863", + "shipped-ci-guarded-join-replay.log": "863d794a09d501209fb5a794274405333420821f3b0548278526ba733e29187a", + "shipped-ci-guarded-copy-replay.log": "35d885141b0a2e6df12bf47b085214d3eb0d775c172d89d2b641ea2f0b4407ca", + "shipped-ci-benchmark-full.log": "ce6e5988e81743dbf1cc39d588f206c3b3529dc37dad6d924d5b44105628936c", + "shipped-ci-repair-lint.log": "89d7da780deb04850db632f478bc4155d23659849c0e5bec6d114c74dc9d5168" + }, + "benchmarkReportSha256": { + "base.json": "9769a30fc51e2eebc22dab943653fc3f14bbf9c6d1b3b12ded59c3419ab8b64a", + "candidate.json": "c1f3bb73f8467bc400f754682e361ffb9310d6fd656feb9f0be0470535a248e7", + "comparison.md": "09a252cfed9a5fd866ec6a69f8f3cb545678ff0c5518dcf944a70738d7c79361" + }, + "ciTableSha256": "139da3c4625b40c9b089e96cc523359ac30bd73739fc398ea3ab543417384da3", + "benchmarkRun": 42105504239, + "benchmarkGate": "FAIL; retained localized cold case, no threshold change", + "benchmarkMerge": "1df2469a5a341dc845610a2d0cf244cadb9d2cea", + "benchmarkParents": [ + "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "1498a8101934558a3ce3832b9854a800f9cc0c81" + ] } } diff --git a/packages/db/tests/oracle-replay-manifest.ts b/packages/db/tests/oracle-replay-manifest.ts index 81e1fa383f..8d8424dcb7 100644 --- a/packages/db/tests/oracle-replay-manifest.ts +++ b/packages/db/tests/oracle-replay-manifest.ts @@ -540,7 +540,12 @@ const ownerGroups: ReadonlyArray< [ `db/tests/query/join-result-key-oracle.property.test.ts`, `join-result-key`, - `pairs`, + `pairs whole-source`, + ], + [ + `db/tests/query/public-container-copy-oracle.test.ts`, + `query`, + `public-container-copy`, ], [ `db/tests/query/group-result-key-oracle.property.test.ts`, diff --git a/packages/db/tests/query/bucket-facade-adapter.test.ts b/packages/db/tests/query/bucket-facade-adapter.test.ts index cda2975570..9317eb037e 100644 --- a/packages/db/tests/query/bucket-facade-adapter.test.ts +++ b/packages/db/tests/query/bucket-facade-adapter.test.ts @@ -5,10 +5,7 @@ import { createCollection } from '../../src/collection/index.js' import { createLiveQueryCollection } from '../../src/query/live-query-collection.js' import { eq } from '../../src/query/builder/functions.js' import { BasicIndex } from '../../src/indexes/basic-index.js' -import { - BucketFacadeAdapter, - resolvePublicValue, -} from '../../src/query/live/bucket-facade-adapter.js' +import { BucketFacadeAdapter } from '../../src/query/live/bucket-facade-adapter.js' import { CollectionConfigBuilder } from '../../src/query/live/collection-config-builder.js' import { BUCKET_FACADE_REF } from '../../src/query/live/materialized-pipeline.js' import { mockSyncCollectionOptions, stripVirtualProps } from '../utils.js' @@ -17,11 +14,18 @@ import type { SyncConfig } from '../../src/types.js' import type { BucketFacadeRef, BucketRow, + ValueResolver, } from '../../src/query/live/materialized-pipeline.js' import type { Context } from '../../src/query/builder/types.js' type FacadeSync = Parameters>[`sync`]>[0] +// These direct component fixtures have flat rows and root facade references, +// with no nested include paths or compiler metadata to clean. Keep their +// resolver in the driver; unused generic helpers are absent from built dist. +const resolveFlatFacadeValue: ValueResolver = (value, resolveFacade) => + resolveFacade(value) + class ThrowingBuildIndex extends BasicIndex { throwBeforeBuild = false throwOnBuild = false @@ -80,7 +84,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() const ref: BucketFacadeRef = { @@ -144,7 +148,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() const bucketKey = `group` @@ -231,7 +235,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() @@ -285,7 +289,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() @@ -461,7 +465,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() @@ -557,7 +561,7 @@ describe(`BucketFacadeAdapter`, () => { }, ], () => {}, - resolvePublicValue, + resolveFlatFacadeValue, ) graph.finalize() diff --git a/scripts/bench/README.md b/scripts/bench/README.md index 33d048394f..c076fbcb00 100644 --- a/scripts/bench/README.md +++ b/scripts/bench/README.md @@ -106,3 +106,11 @@ write flag. The final pair-key source measures 0.91x writes and 0.80x cold against the same control, passing with no diagnostic flags. These runs compare with predecessor 708a58098, not pre-2312 or the PR merge base. The [high-review record](../../docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md) binds source, work, size and law evidence and preserves all observed limits. + +The later [1498a8101 CI run](https://github.com/TanStack/db/actions/runs/42105504239) +measures 0.63x overall writes and 0.51x cold, but fails the localized cold gate +for comment counts at 1,000 rows without indexes in optimistic mode: 7.266 ms +base median versus 17.383 ms candidate. All three candidate samples exceed the +base range and both floors. The [CI table](boundary-only-ci-2026-11-05.csv) +retains both remote pairs (1,008 repetition rows). Thresholds remain unchanged; +the high-review record tracks the repeatability investigation. diff --git a/scripts/bench/boundary-only-ci-2026-11-05.csv b/scripts/bench/boundary-only-ci-2026-11-05.csv index 4911688008..8f4993172d 100644 --- a/scripts/bench/boundary-only-ci-2026-11-05.csv +++ b/scripts/bench/boundary-only-ci-2026-11-05.csv @@ -1,505 +1,1009 @@ -run,db_source,query,scenario,scale,source_index_mode,mutation_mode,repetition,cold_hydrate_ms,median_write_ms -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,10.928822000000025,0.1935659999999757 -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,3.227841000000012,0.1680780000000368 -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,1.7807670000000257,0.08245099999999184 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,1.8190329999999904,0.28697299999998904 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.2726469999998926,0.20652400000005855 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.4365099999999984,0.18117700000004788 -base,8feab6ea3,list + author,visible author update,100,none,synced,0,14.57971699999996,0.14882000000000062 -base,8feab6ea3,list + author,visible author update,100,none,synced,1,9.638667999999939,0.1676279999999224 -base,8feab6ea3,list + author,visible author update,100,none,synced,2,5.684134999999969,0.1459459999999808 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,11.040405999999962,0.2528230000000349 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,6.841672000000017,0.21078099999999722 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,6.75852000000009,0.18522399999994832 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,10.890375000000063,0.1747779999999466 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,6.505036000000018,0.16060700000002726 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,5.676983999999948,0.12764800000002197 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,1.0091879999999946,0.09004300000003695 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.5951679999999442,0.10737800000003972 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.7322500000000218,0.09016299999996136 -base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,64.12017100000003,1.3554289999999583 -base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,45.172025000000076,1.35044199999993 -base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,50.52614399999993,1.3311740000001464 -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,2.4124089999997977,0.11426899999992202 -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.782369000000017,0.08567700000003242 -base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.1169769999999062,0.08072900000001937 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.0909489999999096,0.064775999999938 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.1173180000000684,0.05653299999994488 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.0914299999999457,0.055292000000008557 -base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,5.101705999999922,0.10284099999989849 -base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,5.226761000000124,0.10195100000009916 -base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,5.011432000000013,0.09886499999993248 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.5735809999998764,0.1633809999998448 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,12.59706200000005,0.1528350000003229 -base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.18525899999986,0.15275500000007014 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.5058970000000045,0.09558100000003833 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.749892000000273,0.09156500000017331 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.936633000000256,0.08791999999994005 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6260940000001938,0.08129000000008091 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5951679999998305,0.08301200000005338 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5961600000000544,0.08078900000009526 -base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,50.22532900000033,1.6201999999998407 -base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,44.046024000000216,1.6429229999998824 -base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,47.7172599999999,1.593159999999898 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,3.1286850000001323,0.07755399999996371 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,2.2794519999997647,0.07360900000003312 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,1.261812000000191,0.06395500000007814 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.2947100000001228,0.24712499999986903 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,1.0415859999998247,0.192323999999644 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,1.1236479999997755,0.17546900000024834 -base,8feab6ea3,list + author,visible author update,100,manual,synced,0,4.862203000000136,0.1471070000002328 -base,8feab6ea3,list + author,visible author update,100,manual,synced,1,4.346782000000076,0.1450039999999717 -base,8feab6ea3,list + author,visible author update,100,manual,synced,2,8.070334999999886,0.07757500000025175 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,2.978904000000057,0.16915999999991982 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,2.8442159999999603,0.16942000000017288 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,2.8968540000000758,0.1711219999997411 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,4.1662350000001425,0.11117400000011912 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,9.717854999999872,0.1109230000001844 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,4.097173999999995,0.1152910000000702 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5222509999998692,0.07267700000011246 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.610660999999709,0.0727670000001126 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3544729999998708,0.07128499999998894 -base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,47.63907400000062,1.3291509999999107 -base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,45.27053999999953,1.2926969999998619 -base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,47.646254999999655,1.2819909999998345 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,1.8094989999999598,0.07365799999934097 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.9678380000004836,0.07346899999993184 -base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0942740000000413,0.0684609999998429 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.9500320000006468,0.0594280000004801 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.901810000000296,0.0555819999999585 -base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.930623000000196,0.05383900000015274 -base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.6302150000001348,0.09583199999997305 -base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,3.0257440000004863,0.09551999999985128 -base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,3.235893999999462,0.09486900000047171 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,4.521780000000035,0.15243499999996857 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,3.1951429999999164,0.14999100000022736 -base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.724323999999797,0.14908999999988737 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.9190609999996013,0.09370899999976245 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,11.30393500000082,0.09032399999978225 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.270128999999542,0.0906539999996312 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.4184269999996104,0.07746399999996356 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.31990200000018376,0.07796499999949447 -base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.3474319999995714,0.07755400000041845 -base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,47.741024999999354,1.603476000000228 -base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,43.435553999999684,1.6000510000003487 -base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,43.12706799999978,1.5814829999999347 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,7.00714699999935,0.05213699999967503 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,16.799791999999798,0.05060400000002119 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,9.37215600000036,0.06514600000082282 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,7.497440000000097,0.7430359999998473 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,6.3041889999994964,0.7217250000003332 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,8.714594000000034,0.7124709999998231 -base,8feab6ea3,list + author,visible author update,1000,none,synced,0,24.671072000000095,0.07653300000038143 -base,8feab6ea3,list + author,visible author update,1000,none,synced,1,24.228339000000233,0.07473000000027241 -base,8feab6ea3,list + author,visible author update,1000,none,synced,2,29.02353200000016,0.07440000000042346 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,9.358675000000403,0.15663099999983388 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,8.231182000000445,0.15720200000032492 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,7.256774999999834,0.15859400000044843 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,8.82968399999936,0.10086900000078458 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,30.55337899999995,0.10441399999945133 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.139030999999704,0.1005379999996876 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.2834830000001602,0.06766900000002352 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.08084400000007,0.06782000000021071 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.1588489999994636,0.06666899999981979 -base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,457.93855299999996,1.2759519999999611 -base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,484.7303119999997,1.2694630000005418 -base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,454.95258300000023,1.274821000000884 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,5.183925999999701,0.06760899999972025 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,13.91463499999918,0.06669900000088091 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.644470999999612,0.15154400000028545 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.005654000000504,0.050394000001688255 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,14.063724999999977,0.04730000000017753 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.665783000000374,0.04842099999950733 -base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,22.63133200000084,0.09214600000086648 -base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,32.09347099999832,0.09047300000020186 -base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,30.906789000000572,0.09104399999887391 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,7.499241999999867,0.14112800000111747 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.433665000000474,0.1404770000008284 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,7.409359000001132,0.14520400000037625 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,8.290388999999777,0.08068900000034773 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,8.559215999999651,0.0793870000015886 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,12.457596000000194,0.08735900000101537 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.1358849999996892,0.0968830000001617 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.3260260000006383,0.07526099999995495 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.2379359999995359,0.07495999999991909 -base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,461.3720570000005,1.611667999999554 -base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,476.9030469999998,1.5957939999989321 -base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,457.46535399999993,1.6006909999996424 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.4451509999998962,0.05393000000003667 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,1.0116219999999885,0.054269999998723506 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,1.0256230000013602,0.054040000000895816 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,1.0621759999994538,0.21943300000020827 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.9581729999990785,0.20169799999894167 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.9458159999994677,0.20345999999881315 -base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,3.1396009999989474,0.07658300000002782 -base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,3.2429039999988163,0.07596200000079989 -base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,3.388227999999799,0.07373800000095798 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,3.3013499999997293,0.16487299999971583 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,5.1282740000006015,0.1722939999999653 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,3.288501000000906,0.16856800000095973 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,4.563190999999279,0.10742899999968358 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,4.371439000000464,0.10884099999930186 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,4.7026069999992615,0.1094119999997929 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.43720500000017637,0.0699640000002546 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.48682799999915005,0.07072499999958382 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.47502999999960593,0.07047400000010384 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,478.81909300000007,1.2786759999999049 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,455.35170800000014,1.2792969999991328 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,473.25575500000014,1.2824319999999716 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.1731820000004518,0.07682299999942188 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,1.103519000000233,0.07234699999935401 -base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,1.0374210000009043,0.06893200000013167 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.1948639999991428,0.05630300000120769 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,1.0402149999990797,0.05786600000101316 -base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,1.0244209999982559,0.057383999999728985 -base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,3.9663839999993797,0.09686300000066694 -base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.23578500000076,0.0970629999992525 -base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,3.231920000000173,0.09279699999933655 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,6.2817809999996825,0.15112300000146206 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,3.1191130000006524,0.1476780000011786 -base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.9785959999990155,0.14747799999895506 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,14.053128999999899,0.08801999999923282 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,14.002964999999676,0.08727899999939837 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.9362179999989166,0.08887099999992643 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.5013699999981327,0.0779949999996461 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.3760550000006333,0.10752900000079535 -base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.3830659999985073,0.07504100000005565 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,476.36525900000197,1.5970170000000508 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,451.8797999999988,1.5953850000005332 -base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,476.8800029999984,1.5925900000002002 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,72.94599900000321,0.060319000000163214 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,45.92291000000114,0.06291300000157207 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,61.906677999999374,0.05893699999796809 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,60.62749099999928,7.219224000000395 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,61.30925800000114,7.32526499999949 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,58.06513300000006,7.2255999999979394 -base,8feab6ea3,list + author,visible author update,10000,none,synced,0,266.0298609999991,0.0838339999972959 -base,8feab6ea3,list + author,visible author update,10000,none,synced,1,240.64750899999854,0.08141099999920698 -base,8feab6ea3,list + author,visible author update,10000,none,synced,2,242.1538299999993,0.1423800000011397 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,67.23586600000272,0.16406199999983073 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,68.52803300000232,0.15896400000201538 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,60.46113100000002,0.15810400000191294 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,72.289041,0.10716799999863724 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,60.607638000001316,0.10574600000109058 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,72.97703700000056,0.11100400000213995 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.260501000000659,0.07631300000139163 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,8.237193000000843,0.07944700000007288 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,5.471072000000277,0.07476999999926193 -base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,4524.934381000003,1.757513000000472 -base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,4633.0669199999975,1.2676700000010896 -base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,4617.718115999996,1.263304000000062 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,63.79095199999574,0.06925200000114273 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,44.24848100000236,0.06844100000307662 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,47.07335800000146,0.07026399999449495 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,68.79279099999985,0.057585000002291054 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.14989899999637,0.05761500000517117 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,53.55735399999685,0.054460999999719206 -base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,296.77505799999926,0.10108000000036554 -base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,241.23524899999757,0.09677200000442099 -base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,236.8691070000059,0.09551099999953294 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,73.67528499999753,0.18187799999577692 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,66.5427819999968,0.17624000000068918 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,56.869721000002755,0.17457699999795295 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,66.20736699999543,0.08734899999399204 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,67.9502680000005,0.08912099999724887 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,58.51307999999699,0.08628699999826495 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,7.562479000000167,0.08616800000163494 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,4.568051000002015,0.08581599999888567 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,5.108927999994194,0.08370300000387942 -base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,4618.897368000005,1.5900959999999031 -base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,4624.132275999997,1.5910369999983232 -base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,4621.722263999996,1.5994100000025355 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.271190999999817,0.057815000000118744 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,1.719397000000754,0.05729499999870313 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,3.226950999996916,0.06489600000350038 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,4.726814000001468,0.7852180000045337 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,3.138330000001588,1.13242000000173 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.7209489999950165,0.7562049999978626 -base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,5.755871000001207,0.08501500000420492 -base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,3.932031000003917,0.0828719999990426 -base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,7.043541000006371,0.08349400000588503 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,5.747149000002537,0.17802200000733137 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,3.915126000007149,0.1784029999980703 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,5.936247999998159,0.18142799999623094 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,5.084891999998945,0.11972699999751057 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,4.8275529999955324,0.11849500000244007 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.728485999992699,0.11722299999382813 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.6137149999995017,0.0784049999929266 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5732150000112597,0.0782749999925727 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.5683380000118632,0.07815600000321865 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,4621.406743,1.2768440000072587 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,4637.115011000002,1.2690329999895766 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,4611.230287999992,1.2724279999965802 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.1409500000008848,0.06818099999509286 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.6595190000080038,0.06970300000102725 -base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,2.628458999999566,0.07502999999269377 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.789401000001817,0.06253300000389572 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,9.708582999999635,0.06302299999515526 -base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,3.068556999991415,0.06200199999148026 -base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.905352000001585,0.09796400000050198 -base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,3.999280000003637,0.09879600000567734 -base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,6.848593000002438,0.09912600000097882 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,5.682803999996395,0.19434699999692384 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,4.3795610000088345,0.19211299999733455 -base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.809269999997923,0.1967200000071898 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,13.999582999997074,0.0979150000057416 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,4.881371000010404,0.09861500000988599 -base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,4.771869999996852,0.09811500000068918 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.7222559999936493,0.09081400001014117 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.6507699999929173,0.09109500001068227 -base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.5735659999918425,0.09014300000853837 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,4668.696383999995,1.5924600000143982 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,4625.575171999997,1.5999200000078417 -base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,4628.366093000004,1.6053390000015497 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,0,9.858115999999995,0.18257900000003247 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,1,3.1331930000000057,0.13741300000003775 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,2,1.7444840000000568,0.07204699999999775 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,0,3.163438000000042,0.273262999999929 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,1,1.853433999999993,0.1927739999999858 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,2,0.9630909999999631,0.1578230000000076 -candidate,88544ac64,list + author,visible author update,100,none,synced,0,7.631290000000035,0.17761200000006738 -candidate,88544ac64,list + author,visible author update,100,none,synced,1,6.471869999999967,0.09025300000007519 -candidate,88544ac64,list + author,visible author update,100,none,synced,2,2.7752249999999776,0.13078299999995124 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,0,13.711482000000046,0.23887200000001485 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,1,4.01551500000005,0.2130539999999428 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,2,3.6269509999999627,0.17540900000005877 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.503926999999976,0.15460800000005293 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.727971000000025,0.14222000000006574 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,2,6.333746000000019,0.11105399999996735 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,0,0.8589169999997921,0.08749899999997979 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,1,0.6434790000000703,0.0845640000000003 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,2,0.5689189999998234,0.08509600000002138 -candidate,88544ac64,open issues + documents,visible document update,100,none,synced,0,2.0671599999998307,0.06621700000005148 -candidate,88544ac64,open issues + documents,visible document update,100,none,synced,1,2.0288030000001527,0.10009800000011637 -candidate,88544ac64,open issues + documents,visible document update,100,none,synced,2,2.631362999999965,0.0990159999998923 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,0,1.3914240000001428,0.1352999999999156 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,1,1.0728630000000976,0.07074499999998807 -candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,2,1.3064280000000963,0.10473499999989144 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.2825930000001335,0.08033799999998337 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.7868610000000444,0.04171100000007755 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.055276000000049,0.04267299999992247 -candidate,88544ac64,list + author,visible author update,100,none,optimistic,0,2.675907000000052,0.08590599999979531 -candidate,88544ac64,list + author,visible author update,100,none,optimistic,1,3.300617999999986,0.08242100000006758 -candidate,88544ac64,list + author,visible author update,100,none,optimistic,2,2.054941000000099,0.07934700000009798 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,0,3.3183239999998477,0.16402199999993172 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,1,4.028021000000081,0.1633710000000974 -candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,2,2.38078100000007,0.1440020000000004 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.816412999999784,0.09274600000003375 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.300387999999884,0.08512500000006185 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.164897999999994,0.07950699999992139 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6302490000000489,0.07949699999994664 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5744070000000647,0.07366899999988163 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5552190000000792,0.07327799999984563 -candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,0,2.5542069999999057,0.378097999999909 -candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,1,2.1142979999999625,0.3471420000000762 -candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,2,1.6323370000000068,0.35603500000001986 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,0,2.159074000000146,0.059718000000202665 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,1,1.6332239999999274,0.05286799999998948 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,2,0.8482409999999163,0.04764000000000124 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,0,0.9619179999999687,0.23530700000014804 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,1,0.8134900000000016,0.18245900000010806 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,2,0.7216240000002472,0.16439199999967968 -candidate,88544ac64,list + author,visible author update,100,manual,synced,0,1.9992379999998775,0.07253700000001118 -candidate,88544ac64,list + author,visible author update,100,manual,synced,1,1.7289800000003197,0.06888100000014674 -candidate,88544ac64,list + author,visible author update,100,manual,synced,2,1.574141999999938,0.07275799999979427 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,0,2.8124980000002324,0.2294080000001486 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,1,2.7915070000003652,0.16605500000014217 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,2,2.4184869999999137,0.17295500000000175 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,8.794940999999653,0.10465500000009342 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,4.749714999999924,0.10442399999965346 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,3.2767329999996946,0.10539599999992788 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5113440000000082,0.0726169999998092 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.46193099999982223,0.0721760000001268 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3189310000002479,0.07150499999988824 -candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,0,2.1370419999998376,0.05095600000004197 -candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,1,1.4980089999999109,0.049923000000035245 -candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,2,2.343757000000096,0.08724899999970148 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.6267850000003818,0.05528099999992264 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.6139960000000428,0.05430999999998676 -candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0284770000002936,0.05374900000015259 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.6464339999997719,0.04220200000008845 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.6434290000001965,0.04154100000005201 -candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.6324829999998656,0.04065000000036889 -candidate,88544ac64,list + author,visible author update,100,manual,optimistic,0,1.9360249999999724,0.07691299999987677 -candidate,88544ac64,list + author,visible author update,100,manual,optimistic,1,1.5014740000001439,0.07779500000015105 -candidate,88544ac64,list + author,visible author update,100,manual,optimistic,2,1.5390299999999115,0.07824500000015178 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,0,3.6293730000002142,0.14450299999998606 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,1,2.511974999999893,0.14475399999992078 -candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,2,2.245002000000113,0.14580500000010943 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.1341529999999693,0.08990300000004936 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.7564299999999093,0.09084400000028836 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.504178000000138,0.08460500000001048 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.41735499999958847,0.0742099999997663 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.3006540000001223,0.07575199999973847 -candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.37137799999982235,0.07434899999998379 -candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,0,1.3597459999996317,0.3338130000001911 -candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,1,1.9465399999999136,0.3265310000001591 -candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,2,1.2751610000000255,0.32546999999976833 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,0,5.495094999999765,0.03794599999991988 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,1,4.986002999999982,0.03811600000017279 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,2,4.777626000000055,0.03786499999978332 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,0,8.555577999999969,0.7557950000000346 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,1,6.222408000000087,0.7081450000000586 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,2,4.158813000000009,0.7031569999999192 -candidate,88544ac64,list + author,visible author update,1000,none,synced,0,16.074898999999732,0.05941800000027797 -candidate,88544ac64,list + author,visible author update,1000,none,synced,1,15.836436999999933,0.057405000000017026 -candidate,88544ac64,list + author,visible author update,1000,none,synced,2,17.434915000000274,0.05793600000015431 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,0,6.739651000000322,0.14848899999969944 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,1,15.20997299999999,0.14941999999973632 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,2,6.547086000000036,0.1507219999998597 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,7.707779000000301,0.09879600000022037 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,16.010623000000123,0.1054959999996754 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.696096000000125,0.09216599999990649 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.5453189999998358,0.14231999999992695 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.040614000000005,0.06851099999994403 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.9029910000003838,0.06591699999989942 -candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,0,11.976563999999598,0.04918299999917508 -candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,1,16.394068999999945,0.04803100000026461 -candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,2,10.743525999999292,0.046828999999888765 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,0,4.685720000000401,0.050204000000121596 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.426958999999442,0.05095500000061293 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.514998999999989,0.05139499999950203 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,0,4.63155099999949,0.035412999999607564 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,1,17.170763999999508,0.03354899999976624 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.520357000000331,0.033660000000054424 -candidate,88544ac64,list + author,visible author update,1000,none,optimistic,0,14.780359999999746,0.07303700000011304 -candidate,88544ac64,list + author,visible author update,1000,none,optimistic,1,20.445354000000407,0.07978800000000774 -candidate,88544ac64,list + author,visible author update,1000,none,optimistic,2,20.66944500000045,0.07743399999981193 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,0,16.442520999999942,0.14258999999947264 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.206629000000248,0.1446330000007947 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,2,6.875971000000391,0.1444129999999859 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,7.903336999999738,0.08293200000025536 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,9.180850000000646,0.08044900000004418 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,7.3091999999996915,0.08114999999997963 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.0042610000000423,0.07468000000062602 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.8880300000000716,0.07304700000076991 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.014165999999932,0.07085499999993772 -candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,0,15.409796999999344,0.3367469999993773 -candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,1,12.603107999999338,0.32808400000067195 -candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,2,13.227799000000232,0.3334610000001703 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,0,1.132900999999947,0.04190199999993638 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,1,0.7854079999997339,0.04212199999983568 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,2,14.476571000000149,0.04125099999964732 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.7013340000003154,0.20777599999928498 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.67599699999937,0.1873359999999593 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.6554059999998572,0.18597399999998743 -candidate,88544ac64,list + author,visible author update,1000,manual,synced,0,1.9762449999998353,0.10354300000017247 -candidate,88544ac64,list + author,visible author update,1000,manual,synced,1,1.7249949999995806,0.06289300000025833 -candidate,88544ac64,list + author,visible author update,1000,manual,synced,2,1.6311960000002728,0.06013900000016292 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,0,4.38738099999955,0.17058099999940168 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,1,2.4884500000007392,0.16244000000006054 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,2,2.641335000000254,0.163220999999794 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.84915699999965,0.10336300000017218 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.3359510000000228,0.10802899999998772 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.5819830000000366,0.10080800000014278 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.4881199999999808,0.07010300000001735 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.3565859999998793,0.06877200000053563 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.3914970000005269,0.07007300000077521 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,0,11.585137000000032,0.05157599999984086 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,1,12.43050299999959,0.051314999999704014 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,2,19.119128000000273,0.053598999999849184 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.0101599999998143,0.060548999999809894 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.7692749999996522,0.05794599999990169 -candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.7658999999994194,0.05660299999999552 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.8269700000000739,0.043373999999857915 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.7370160000000396,0.04297300000052928 -candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7493150000000242,0.043805000000247674 -candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,0,1.822508000000198,0.07798499999989872 -candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,1,1.5344640000002983,0.07748400000036781 -candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,2,1.5632459999997081,0.07571099999950093 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.555287999999564,0.14807899999959773 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.3951519999991433,0.14871899999980087 -candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.367812000000413,0.17478699999992386 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.5499159999999392,0.08692800000062562 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.3810770000000048,0.08607699999993201 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.3420500000001994,0.08579600000030041 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.4349709999996776,0.07531100000051083 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4000799999994342,0.07449999999971624 -candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.6065140000000611,0.0739690000000337 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,0,20.443201000000045,0.334023000000343 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,1,11.346284999999625,0.32344699999976 -candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,2,10.258228999999119,0.329515999999785 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,0,62.441343999999845,0.04810100000031525 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,1,55.11252499999955,0.04859200000009878 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,2,124.19730699999946,0.04825100000016391 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,0,51.64546100000007,7.153169999999591 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,1,53.469646999999895,7.2199820000005275 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,2,54.313482000001386,7.141787000000477 -candidate,88544ac64,list + author,visible author update,10000,none,synced,0,302.38135599999987,0.06555699999989884 -candidate,88544ac64,list + author,visible author update,10000,none,synced,1,173.2878720000008,0.06475499999942258 -candidate,88544ac64,list + author,visible author update,10000,none,synced,2,162.76685999999972,0.10078900000007707 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,0,54.17598899999939,0.15315599999848928 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,1,75.81132900000011,0.15674199999921257 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,2,58.62085699999989,0.15428800000154297 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,66.9599100000014,0.09743400000115798 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,63.098103000000265,0.09626199999911478 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,84.45169700000042,0.1083199999993667 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.380178000001251,0.0726169999998092 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,1,5.976478000000498,0.07303799999863259 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,2,7.494918000000325,0.09658300000046438 -candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,0,162.3468099999991,0.05143600000155857 -candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,1,122.039041,0.05008399999860558 -candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,2,165.96462800000154,0.05429000000003725 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,0,60.75531499999852,0.0578349999996135 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,1,53.43638799999826,0.057645000000775326 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,2,70.03007400000206,0.06034899999940535 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,0,59.01503799999773,0.04122099999949569 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.919566000000486,0.04073000000062166 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,2,58.96925099999862,0.04076999999961117 -candidate,88544ac64,list + author,visible author update,10000,none,optimistic,0,170.9088899999988,0.08076900000014575 -candidate,88544ac64,list + author,visible author update,10000,none,optimistic,1,167.29200199999832,0.07847499999843421 -candidate,88544ac64,list + author,visible author update,10000,none,optimistic,2,325.1053979999997,0.08057900000130758 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,0,62.653363000001264,0.16743700000006356 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,1,58.31050799999866,0.16703699999925448 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,2,65.07070499999827,0.16313099999752012 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,70.05843499999901,0.08767899999656947 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,60.79862099999809,0.08796000000074855 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,64.51413400000092,0.08579599999939092 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.564735999996628,0.08073900000090362 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,6.883999000001495,0.08500500000081956 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,6.216143000001466,0.08205100000122911 -candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,0,132.70738599999822,0.33328199999959907 -candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,1,120.50242499999877,0.33414300000004005 -candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,2,161.0908870000021,0.35326100000020233 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,0,2.5305439999974624,0.04574700000011944 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,1,1.5166779999999562,0.08248199999798089 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,2,1.7239939999999478,0.045927999999548774 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,0,2.850246000001789,0.7814939999989292 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,1,2.601737000000867,0.7648179999996501 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.382539000001998,0.74752300000182 -candidate,88544ac64,list + author,visible author update,10000,manual,synced,0,3.855688999999984,0.0661870000003546 -candidate,88544ac64,list + author,visible author update,10000,manual,synced,1,4.520678999997472,0.0712149999999383 -candidate,88544ac64,list + author,visible author update,10000,manual,synced,2,4.669067999999243,0.07420900000215624 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,0,13.411325999997644,0.16427200000180164 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,1,4.164724999998725,0.16817799999989802 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,2,5.613472000000911,0.16807799999878625 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,14.06852599999911,0.10964199999943958 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,6.086559999999736,0.11214500000278349 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.081672000000253,0.11161400000128197 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.657138999999006,0.08227099999930942 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5440429999980552,0.08111900000221794 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.6267450000013923,0.07959699999992154 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,0,139.32408399999986,0.05284800000299583 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,1,112.05037699999957,0.05038499999864143 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,2,124.64969999999812,0.05094499999904656 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.8489279999994324,0.05501100000037695 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,1,2.559295999999449,0.06127999999807798 -candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.3990540000013425,0.06071000000156346 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,10.782136999998329,0.04771000000255299 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,2.263528999999835,0.04814099999930477 -candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.4010770000022603,0.047350000000733417 -candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,0,4.177913999999873,0.08118000000104075 -candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,1,4.559847000000445,0.08128000000215252 -candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,2,4.624421999993501,0.08216199999878881 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.239558000001125,0.1805270000040764 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,1,3.283634000006714,0.17965499999991152 -candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.530588000001444,0.18280999999842606 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.9643579999974463,0.09516099999746075 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,3.937397999994573,0.09578200000396464 -candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,3.9324710000000778,0.09300700000312645 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6621269999959623,0.08928200000082143 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5510530000028666,0.09108399999968242 -candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6592830000008689,0.09029299999383511 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,0,146.1472930000018,0.33950999999797205 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,1,112.94211500000529,0.7060209999981453 -candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,2,112.52661100000114,0.3370169999980135 +run,db_source,query,scenario,scale,source_index_mode,mutation_mode,repetition,cold_hydrate_ms,median_write_ms +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,10.928822000000025,0.1935659999999757 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,3.227841000000012,0.1680780000000368 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,1.7807670000000257,0.08245099999999184 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,1.8190329999999904,0.28697299999998904 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.2726469999998926,0.20652400000005855 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.4365099999999984,0.18117700000004788 +base,8feab6ea3,list + author,visible author update,100,none,synced,0,14.57971699999996,0.14882000000000062 +base,8feab6ea3,list + author,visible author update,100,none,synced,1,9.638667999999939,0.1676279999999224 +base,8feab6ea3,list + author,visible author update,100,none,synced,2,5.684134999999969,0.1459459999999808 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,11.040405999999962,0.2528230000000349 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,6.841672000000017,0.21078099999999722 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,6.75852000000009,0.18522399999994832 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,10.890375000000063,0.1747779999999466 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,6.505036000000018,0.16060700000002726 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,5.676983999999948,0.12764800000002197 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,1.0091879999999946,0.09004300000003695 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.5951679999999442,0.10737800000003972 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.7322500000000218,0.09016299999996136 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,64.12017100000003,1.3554289999999583 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,45.172025000000076,1.35044199999993 +base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,50.52614399999993,1.3311740000001464 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,2.4124089999997977,0.11426899999992202 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.782369000000017,0.08567700000003242 +base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.1169769999999062,0.08072900000001937 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.0909489999999096,0.064775999999938 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.1173180000000684,0.05653299999994488 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.0914299999999457,0.055292000000008557 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,5.101705999999922,0.10284099999989849 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,5.226761000000124,0.10195100000009916 +base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,5.011432000000013,0.09886499999993248 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.5735809999998764,0.1633809999998448 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,12.59706200000005,0.1528350000003229 +base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.18525899999986,0.15275500000007014 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.5058970000000045,0.09558100000003833 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.749892000000273,0.09156500000017331 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.936633000000256,0.08791999999994005 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6260940000001938,0.08129000000008091 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5951679999998305,0.08301200000005338 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5961600000000544,0.08078900000009526 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,50.22532900000033,1.6201999999998407 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,44.046024000000216,1.6429229999998824 +base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,47.7172599999999,1.593159999999898 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,3.1286850000001323,0.07755399999996371 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,2.2794519999997647,0.07360900000003312 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,1.261812000000191,0.06395500000007814 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.2947100000001228,0.24712499999986903 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,1.0415859999998247,0.192323999999644 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,1.1236479999997755,0.17546900000024834 +base,8feab6ea3,list + author,visible author update,100,manual,synced,0,4.862203000000136,0.1471070000002328 +base,8feab6ea3,list + author,visible author update,100,manual,synced,1,4.346782000000076,0.1450039999999717 +base,8feab6ea3,list + author,visible author update,100,manual,synced,2,8.070334999999886,0.07757500000025175 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,2.978904000000057,0.16915999999991982 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,2.8442159999999603,0.16942000000017288 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,2.8968540000000758,0.1711219999997411 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,4.1662350000001425,0.11117400000011912 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,9.717854999999872,0.1109230000001844 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,4.097173999999995,0.1152910000000702 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5222509999998692,0.07267700000011246 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.610660999999709,0.0727670000001126 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3544729999998708,0.07128499999998894 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,47.63907400000062,1.3291509999999107 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,45.27053999999953,1.2926969999998619 +base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,47.646254999999655,1.2819909999998345 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,1.8094989999999598,0.07365799999934097 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.9678380000004836,0.07346899999993184 +base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0942740000000413,0.0684609999998429 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.9500320000006468,0.0594280000004801 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.901810000000296,0.0555819999999585 +base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.930623000000196,0.05383900000015274 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.6302150000001348,0.09583199999997305 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,3.0257440000004863,0.09551999999985128 +base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,3.235893999999462,0.09486900000047171 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,4.521780000000035,0.15243499999996857 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,3.1951429999999164,0.14999100000022736 +base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.724323999999797,0.14908999999988737 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.9190609999996013,0.09370899999976245 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,11.30393500000082,0.09032399999978225 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.270128999999542,0.0906539999996312 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.4184269999996104,0.07746399999996356 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.31990200000018376,0.07796499999949447 +base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.3474319999995714,0.07755400000041845 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,47.741024999999354,1.603476000000228 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,43.435553999999684,1.6000510000003487 +base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,43.12706799999978,1.5814829999999347 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,7.00714699999935,0.05213699999967503 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,16.799791999999798,0.05060400000002119 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,9.37215600000036,0.06514600000082282 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,7.497440000000097,0.7430359999998473 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,6.3041889999994964,0.7217250000003332 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,8.714594000000034,0.7124709999998231 +base,8feab6ea3,list + author,visible author update,1000,none,synced,0,24.671072000000095,0.07653300000038143 +base,8feab6ea3,list + author,visible author update,1000,none,synced,1,24.228339000000233,0.07473000000027241 +base,8feab6ea3,list + author,visible author update,1000,none,synced,2,29.02353200000016,0.07440000000042346 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,9.358675000000403,0.15663099999983388 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,8.231182000000445,0.15720200000032492 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,7.256774999999834,0.15859400000044843 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,8.82968399999936,0.10086900000078458 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,30.55337899999995,0.10441399999945133 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.139030999999704,0.1005379999996876 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.2834830000001602,0.06766900000002352 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.08084400000007,0.06782000000021071 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.1588489999994636,0.06666899999981979 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,457.93855299999996,1.2759519999999611 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,484.7303119999997,1.2694630000005418 +base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,454.95258300000023,1.274821000000884 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,5.183925999999701,0.06760899999972025 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,13.91463499999918,0.06669900000088091 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.644470999999612,0.15154400000028545 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.005654000000504,0.050394000001688255 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,14.063724999999977,0.04730000000017753 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.665783000000374,0.04842099999950733 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,22.63133200000084,0.09214600000086648 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,32.09347099999832,0.09047300000020186 +base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,30.906789000000572,0.09104399999887391 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,7.499241999999867,0.14112800000111747 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.433665000000474,0.1404770000008284 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,7.409359000001132,0.14520400000037625 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,8.290388999999777,0.08068900000034773 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,8.559215999999651,0.0793870000015886 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,12.457596000000194,0.08735900000101537 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.1358849999996892,0.0968830000001617 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.3260260000006383,0.07526099999995495 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.2379359999995359,0.07495999999991909 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,461.3720570000005,1.611667999999554 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,476.9030469999998,1.5957939999989321 +base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,457.46535399999993,1.6006909999996424 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.4451509999998962,0.05393000000003667 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,1.0116219999999885,0.054269999998723506 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,1.0256230000013602,0.054040000000895816 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,1.0621759999994538,0.21943300000020827 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.9581729999990785,0.20169799999894167 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.9458159999994677,0.20345999999881315 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,3.1396009999989474,0.07658300000002782 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,3.2429039999988163,0.07596200000079989 +base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,3.388227999999799,0.07373800000095798 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,3.3013499999997293,0.16487299999971583 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,5.1282740000006015,0.1722939999999653 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,3.288501000000906,0.16856800000095973 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,4.563190999999279,0.10742899999968358 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,4.371439000000464,0.10884099999930186 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,4.7026069999992615,0.1094119999997929 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.43720500000017637,0.0699640000002546 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.48682799999915005,0.07072499999958382 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.47502999999960593,0.07047400000010384 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,478.81909300000007,1.2786759999999049 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,455.35170800000014,1.2792969999991328 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,473.25575500000014,1.2824319999999716 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.1731820000004518,0.07682299999942188 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,1.103519000000233,0.07234699999935401 +base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,1.0374210000009043,0.06893200000013167 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.1948639999991428,0.05630300000120769 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,1.0402149999990797,0.05786600000101316 +base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,1.0244209999982559,0.057383999999728985 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,3.9663839999993797,0.09686300000066694 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.23578500000076,0.0970629999992525 +base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,3.231920000000173,0.09279699999933655 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,6.2817809999996825,0.15112300000146206 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,3.1191130000006524,0.1476780000011786 +base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.9785959999990155,0.14747799999895506 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,14.053128999999899,0.08801999999923282 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,14.002964999999676,0.08727899999939837 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.9362179999989166,0.08887099999992643 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.5013699999981327,0.0779949999996461 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.3760550000006333,0.10752900000079535 +base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.3830659999985073,0.07504100000005565 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,476.36525900000197,1.5970170000000508 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,451.8797999999988,1.5953850000005332 +base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,476.8800029999984,1.5925900000002002 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,72.94599900000321,0.060319000000163214 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,45.92291000000114,0.06291300000157207 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,61.906677999999374,0.05893699999796809 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,60.62749099999928,7.219224000000395 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,61.30925800000114,7.32526499999949 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,58.06513300000006,7.2255999999979394 +base,8feab6ea3,list + author,visible author update,10000,none,synced,0,266.0298609999991,0.0838339999972959 +base,8feab6ea3,list + author,visible author update,10000,none,synced,1,240.64750899999854,0.08141099999920698 +base,8feab6ea3,list + author,visible author update,10000,none,synced,2,242.1538299999993,0.1423800000011397 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,67.23586600000272,0.16406199999983073 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,68.52803300000232,0.15896400000201538 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,60.46113100000002,0.15810400000191294 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,72.289041,0.10716799999863724 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,60.607638000001316,0.10574600000109058 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,72.97703700000056,0.11100400000213995 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.260501000000659,0.07631300000139163 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,8.237193000000843,0.07944700000007288 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,5.471072000000277,0.07476999999926193 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,4524.934381000003,1.757513000000472 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,4633.0669199999975,1.2676700000010896 +base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,4617.718115999996,1.263304000000062 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,63.79095199999574,0.06925200000114273 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,44.24848100000236,0.06844100000307662 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,47.07335800000146,0.07026399999449495 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,68.79279099999985,0.057585000002291054 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.14989899999637,0.05761500000517117 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,53.55735399999685,0.054460999999719206 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,296.77505799999926,0.10108000000036554 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,241.23524899999757,0.09677200000442099 +base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,236.8691070000059,0.09551099999953294 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,73.67528499999753,0.18187799999577692 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,66.5427819999968,0.17624000000068918 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,56.869721000002755,0.17457699999795295 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,66.20736699999543,0.08734899999399204 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,67.9502680000005,0.08912099999724887 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,58.51307999999699,0.08628699999826495 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,7.562479000000167,0.08616800000163494 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,4.568051000002015,0.08581599999888567 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,5.108927999994194,0.08370300000387942 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,4618.897368000005,1.5900959999999031 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,4624.132275999997,1.5910369999983232 +base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,4621.722263999996,1.5994100000025355 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.271190999999817,0.057815000000118744 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,1.719397000000754,0.05729499999870313 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,3.226950999996916,0.06489600000350038 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,4.726814000001468,0.7852180000045337 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,3.138330000001588,1.13242000000173 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.7209489999950165,0.7562049999978626 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,5.755871000001207,0.08501500000420492 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,3.932031000003917,0.0828719999990426 +base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,7.043541000006371,0.08349400000588503 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,5.747149000002537,0.17802200000733137 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,3.915126000007149,0.1784029999980703 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,5.936247999998159,0.18142799999623094 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,5.084891999998945,0.11972699999751057 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,4.8275529999955324,0.11849500000244007 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.728485999992699,0.11722299999382813 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.6137149999995017,0.0784049999929266 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5732150000112597,0.0782749999925727 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.5683380000118632,0.07815600000321865 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,4621.406743,1.2768440000072587 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,4637.115011000002,1.2690329999895766 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,4611.230287999992,1.2724279999965802 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.1409500000008848,0.06818099999509286 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.6595190000080038,0.06970300000102725 +base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,2.628458999999566,0.07502999999269377 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.789401000001817,0.06253300000389572 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,9.708582999999635,0.06302299999515526 +base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,3.068556999991415,0.06200199999148026 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.905352000001585,0.09796400000050198 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,3.999280000003637,0.09879600000567734 +base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,6.848593000002438,0.09912600000097882 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,5.682803999996395,0.19434699999692384 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,4.3795610000088345,0.19211299999733455 +base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.809269999997923,0.1967200000071898 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,13.999582999997074,0.0979150000057416 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,4.881371000010404,0.09861500000988599 +base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,4.771869999996852,0.09811500000068918 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.7222559999936493,0.09081400001014117 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.6507699999929173,0.09109500001068227 +base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.5735659999918425,0.09014300000853837 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,4668.696383999995,1.5924600000143982 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,4625.575171999997,1.5999200000078417 +base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,4628.366093000004,1.6053390000015497 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,0,9.858115999999995,0.18257900000003247 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,1,3.1331930000000057,0.13741300000003775 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,synced,2,1.7444840000000568,0.07204699999999775 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,0,3.163438000000042,0.273262999999929 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,1,1.853433999999993,0.1927739999999858 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,synced,2,0.9630909999999631,0.1578230000000076 +candidate,88544ac64,list + author,visible author update,100,none,synced,0,7.631290000000035,0.17761200000006738 +candidate,88544ac64,list + author,visible author update,100,none,synced,1,6.471869999999967,0.09025300000007519 +candidate,88544ac64,list + author,visible author update,100,none,synced,2,2.7752249999999776,0.13078299999995124 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,0,13.711482000000046,0.23887200000001485 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,1,4.01551500000005,0.2130539999999428 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,synced,2,3.6269509999999627,0.17540900000005877 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.503926999999976,0.15460800000005293 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.727971000000025,0.14222000000006574 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,synced,2,6.333746000000019,0.11105399999996735 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,0,0.8589169999997921,0.08749899999997979 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,1,0.6434790000000703,0.0845640000000003 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,synced,2,0.5689189999998234,0.08509600000002138 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,0,2.0671599999998307,0.06621700000005148 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,1,2.0288030000001527,0.10009800000011637 +candidate,88544ac64,open issues + documents,visible document update,100,none,synced,2,2.631362999999965,0.0990159999998923 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,0,1.3914240000001428,0.1352999999999156 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,1,1.0728630000000976,0.07074499999998807 +candidate,88544ac64,list: newest 50 open,visible issue update,100,none,optimistic,2,1.3064280000000963,0.10473499999989144 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.2825930000001335,0.08033799999998337 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.7868610000000444,0.04171100000007755 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.055276000000049,0.04267299999992247 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,0,2.675907000000052,0.08590599999979531 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,1,3.300617999999986,0.08242100000006758 +candidate,88544ac64,list + author,visible author update,100,none,optimistic,2,2.054941000000099,0.07934700000009798 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,0,3.3183239999998477,0.16402199999993172 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,1,4.028021000000081,0.1633710000000974 +candidate,88544ac64,list + comment count,visible issue comment insert,100,none,optimistic,2,2.38078100000007,0.1440020000000004 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.816412999999784,0.09274600000003375 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.300387999999884,0.08512500000006185 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.164897999999994,0.07950699999992139 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6302490000000489,0.07949699999994664 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5744070000000647,0.07366899999988163 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5552190000000792,0.07327799999984563 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,0,2.5542069999999057,0.378097999999909 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,1,2.1142979999999625,0.3471420000000762 +candidate,88544ac64,open issues + documents,visible document update,100,none,optimistic,2,1.6323370000000068,0.35603500000001986 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,0,2.159074000000146,0.059718000000202665 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,1,1.6332239999999274,0.05286799999998948 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,synced,2,0.8482409999999163,0.04764000000000124 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,0,0.9619179999999687,0.23530700000014804 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,1,0.8134900000000016,0.18245900000010806 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,synced,2,0.7216240000002472,0.16439199999967968 +candidate,88544ac64,list + author,visible author update,100,manual,synced,0,1.9992379999998775,0.07253700000001118 +candidate,88544ac64,list + author,visible author update,100,manual,synced,1,1.7289800000003197,0.06888100000014674 +candidate,88544ac64,list + author,visible author update,100,manual,synced,2,1.574141999999938,0.07275799999979427 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,0,2.8124980000002324,0.2294080000001486 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,1,2.7915070000003652,0.16605500000014217 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,synced,2,2.4184869999999137,0.17295500000000175 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,8.794940999999653,0.10465500000009342 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,4.749714999999924,0.10442399999965346 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,3.2767329999996946,0.10539599999992788 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5113440000000082,0.0726169999998092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.46193099999982223,0.0721760000001268 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3189310000002479,0.07150499999988824 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,0,2.1370419999998376,0.05095600000004197 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,1,1.4980089999999109,0.049923000000035245 +candidate,88544ac64,open issues + documents,visible document update,100,manual,synced,2,2.343757000000096,0.08724899999970148 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.6267850000003818,0.05528099999992264 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.6139960000000428,0.05430999999998676 +candidate,88544ac64,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.0284770000002936,0.05374900000015259 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.6464339999997719,0.04220200000008845 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.6434290000001965,0.04154100000005201 +candidate,88544ac64,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.6324829999998656,0.04065000000036889 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,0,1.9360249999999724,0.07691299999987677 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,1,1.5014740000001439,0.07779500000015105 +candidate,88544ac64,list + author,visible author update,100,manual,optimistic,2,1.5390299999999115,0.07824500000015178 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,0,3.6293730000002142,0.14450299999998606 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,1,2.511974999999893,0.14475399999992078 +candidate,88544ac64,list + comment count,visible issue comment insert,100,manual,optimistic,2,2.245002000000113,0.14580500000010943 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.1341529999999693,0.08990300000004936 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.7564299999999093,0.09084400000028836 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.504178000000138,0.08460500000001048 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.41735499999958847,0.0742099999997663 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.3006540000001223,0.07575199999973847 +candidate,88544ac64,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.37137799999982235,0.07434899999998379 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,0,1.3597459999996317,0.3338130000001911 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,1,1.9465399999999136,0.3265310000001591 +candidate,88544ac64,open issues + documents,visible document update,100,manual,optimistic,2,1.2751610000000255,0.32546999999976833 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,0,5.495094999999765,0.03794599999991988 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,1,4.986002999999982,0.03811600000017279 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,synced,2,4.777626000000055,0.03786499999978332 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,0,8.555577999999969,0.7557950000000346 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,1,6.222408000000087,0.7081450000000586 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,synced,2,4.158813000000009,0.7031569999999192 +candidate,88544ac64,list + author,visible author update,1000,none,synced,0,16.074898999999732,0.05941800000027797 +candidate,88544ac64,list + author,visible author update,1000,none,synced,1,15.836436999999933,0.057405000000017026 +candidate,88544ac64,list + author,visible author update,1000,none,synced,2,17.434915000000274,0.05793600000015431 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,0,6.739651000000322,0.14848899999969944 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,1,15.20997299999999,0.14941999999973632 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,synced,2,6.547086000000036,0.1507219999998597 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,7.707779000000301,0.09879600000022037 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,16.010623000000123,0.1054959999996754 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.696096000000125,0.09216599999990649 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.5453189999998358,0.14231999999992695 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.040614000000005,0.06851099999994403 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.9029910000003838,0.06591699999989942 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,0,11.976563999999598,0.04918299999917508 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,1,16.394068999999945,0.04803100000026461 +candidate,88544ac64,open issues + documents,visible document update,1000,none,synced,2,10.743525999999292,0.046828999999888765 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,0,4.685720000000401,0.050204000000121596 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.426958999999442,0.05095500000061293 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.514998999999989,0.05139499999950203 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,0,4.63155099999949,0.035412999999607564 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,1,17.170763999999508,0.03354899999976624 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.520357000000331,0.033660000000054424 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,0,14.780359999999746,0.07303700000011304 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,1,20.445354000000407,0.07978800000000774 +candidate,88544ac64,list + author,visible author update,1000,none,optimistic,2,20.66944500000045,0.07743399999981193 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,0,16.442520999999942,0.14258999999947264 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.206629000000248,0.1446330000007947 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,none,optimistic,2,6.875971000000391,0.1444129999999859 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,7.903336999999738,0.08293200000025536 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,9.180850000000646,0.08044900000004418 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,7.3091999999996915,0.08114999999997963 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.0042610000000423,0.07468000000062602 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.8880300000000716,0.07304700000076991 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.014165999999932,0.07085499999993772 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,0,15.409796999999344,0.3367469999993773 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,1,12.603107999999338,0.32808400000067195 +candidate,88544ac64,open issues + documents,visible document update,1000,none,optimistic,2,13.227799000000232,0.3334610000001703 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,0,1.132900999999947,0.04190199999993638 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,1,0.7854079999997339,0.04212199999983568 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,synced,2,14.476571000000149,0.04125099999964732 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.7013340000003154,0.20777599999928498 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.67599699999937,0.1873359999999593 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.6554059999998572,0.18597399999998743 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,0,1.9762449999998353,0.10354300000017247 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,1,1.7249949999995806,0.06289300000025833 +candidate,88544ac64,list + author,visible author update,1000,manual,synced,2,1.6311960000002728,0.06013900000016292 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,0,4.38738099999955,0.17058099999940168 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,1,2.4884500000007392,0.16244000000006054 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,synced,2,2.641335000000254,0.163220999999794 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.84915699999965,0.10336300000017218 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.3359510000000228,0.10802899999998772 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.5819830000000366,0.10080800000014278 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.4881199999999808,0.07010300000001735 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.3565859999998793,0.06877200000053563 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.3914970000005269,0.07007300000077521 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,0,11.585137000000032,0.05157599999984086 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,1,12.43050299999959,0.051314999999704014 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,synced,2,19.119128000000273,0.053598999999849184 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.0101599999998143,0.060548999999809894 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.7692749999996522,0.05794599999990169 +candidate,88544ac64,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.7658999999994194,0.05660299999999552 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.8269700000000739,0.043373999999857915 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.7370160000000396,0.04297300000052928 +candidate,88544ac64,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7493150000000242,0.043805000000247674 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,0,1.822508000000198,0.07798499999989872 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,1,1.5344640000002983,0.07748400000036781 +candidate,88544ac64,list + author,visible author update,1000,manual,optimistic,2,1.5632459999997081,0.07571099999950093 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.555287999999564,0.14807899999959773 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.3951519999991433,0.14871899999980087 +candidate,88544ac64,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.367812000000413,0.17478699999992386 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.5499159999999392,0.08692800000062562 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.3810770000000048,0.08607699999993201 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.3420500000001994,0.08579600000030041 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.4349709999996776,0.07531100000051083 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4000799999994342,0.07449999999971624 +candidate,88544ac64,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.6065140000000611,0.0739690000000337 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,0,20.443201000000045,0.334023000000343 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,1,11.346284999999625,0.32344699999976 +candidate,88544ac64,open issues + documents,visible document update,1000,manual,optimistic,2,10.258228999999119,0.329515999999785 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,0,62.441343999999845,0.04810100000031525 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,1,55.11252499999955,0.04859200000009878 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,synced,2,124.19730699999946,0.04825100000016391 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,0,51.64546100000007,7.153169999999591 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,1,53.469646999999895,7.2199820000005275 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,synced,2,54.313482000001386,7.141787000000477 +candidate,88544ac64,list + author,visible author update,10000,none,synced,0,302.38135599999987,0.06555699999989884 +candidate,88544ac64,list + author,visible author update,10000,none,synced,1,173.2878720000008,0.06475499999942258 +candidate,88544ac64,list + author,visible author update,10000,none,synced,2,162.76685999999972,0.10078900000007707 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,0,54.17598899999939,0.15315599999848928 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,1,75.81132900000011,0.15674199999921257 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,synced,2,58.62085699999989,0.15428800000154297 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,66.9599100000014,0.09743400000115798 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,63.098103000000265,0.09626199999911478 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,84.45169700000042,0.1083199999993667 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.380178000001251,0.0726169999998092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,1,5.976478000000498,0.07303799999863259 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,synced,2,7.494918000000325,0.09658300000046438 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,0,162.3468099999991,0.05143600000155857 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,1,122.039041,0.05008399999860558 +candidate,88544ac64,open issues + documents,visible document update,10000,none,synced,2,165.96462800000154,0.05429000000003725 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,0,60.75531499999852,0.0578349999996135 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,1,53.43638799999826,0.057645000000775326 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,none,optimistic,2,70.03007400000206,0.06034899999940535 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,0,59.01503799999773,0.04122099999949569 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,1,56.919566000000486,0.04073000000062166 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,none,optimistic,2,58.96925099999862,0.04076999999961117 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,0,170.9088899999988,0.08076900000014575 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,1,167.29200199999832,0.07847499999843421 +candidate,88544ac64,list + author,visible author update,10000,none,optimistic,2,325.1053979999997,0.08057900000130758 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,0,62.653363000001264,0.16743700000006356 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,1,58.31050799999866,0.16703699999925448 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,none,optimistic,2,65.07070499999827,0.16313099999752012 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,70.05843499999901,0.08767899999656947 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,60.79862099999809,0.08796000000074855 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,64.51413400000092,0.08579599999939092 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.564735999996628,0.08073900000090362 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,6.883999000001495,0.08500500000081956 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,6.216143000001466,0.08205100000122911 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,0,132.70738599999822,0.33328199999959907 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,1,120.50242499999877,0.33414300000004005 +candidate,88544ac64,open issues + documents,visible document update,10000,none,optimistic,2,161.0908870000021,0.35326100000020233 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,0,2.5305439999974624,0.04574700000011944 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,1,1.5166779999999562,0.08248199999798089 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,synced,2,1.7239939999999478,0.045927999999548774 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,0,2.850246000001789,0.7814939999989292 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,1,2.601737000000867,0.7648179999996501 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.382539000001998,0.74752300000182 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,0,3.855688999999984,0.0661870000003546 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,1,4.520678999997472,0.0712149999999383 +candidate,88544ac64,list + author,visible author update,10000,manual,synced,2,4.669067999999243,0.07420900000215624 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,0,13.411325999997644,0.16427200000180164 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,1,4.164724999998725,0.16817799999989802 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,synced,2,5.613472000000911,0.16807799999878625 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,14.06852599999911,0.10964199999943958 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,6.086559999999736,0.11214500000278349 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.081672000000253,0.11161400000128197 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.657138999999006,0.08227099999930942 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5440429999980552,0.08111900000221794 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.6267450000013923,0.07959699999992154 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,0,139.32408399999986,0.05284800000299583 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,1,112.05037699999957,0.05038499999864143 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,synced,2,124.64969999999812,0.05094499999904656 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.8489279999994324,0.05501100000037695 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,1,2.559295999999449,0.06127999999807798 +candidate,88544ac64,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.3990540000013425,0.06071000000156346 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,10.782136999998329,0.04771000000255299 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,2.263528999999835,0.04814099999930477 +candidate,88544ac64,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.4010770000022603,0.047350000000733417 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,0,4.177913999999873,0.08118000000104075 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,1,4.559847000000445,0.08128000000215252 +candidate,88544ac64,list + author,visible author update,10000,manual,optimistic,2,4.624421999993501,0.08216199999878881 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.239558000001125,0.1805270000040764 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,1,3.283634000006714,0.17965499999991152 +candidate,88544ac64,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.530588000001444,0.18280999999842606 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.9643579999974463,0.09516099999746075 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,3.937397999994573,0.09578200000396464 +candidate,88544ac64,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,3.9324710000000778,0.09300700000312645 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6621269999959623,0.08928200000082143 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5510530000028666,0.09108399999968242 +candidate,88544ac64,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6592830000008689,0.09029299999383511 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,0,146.1472930000018,0.33950999999797205 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,1,112.94211500000529,0.7060209999981453 +candidate,88544ac64,open issues + documents,visible document update,10000,manual,optimistic,2,112.52661100000114,0.3370169999980135 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,13.719581000000005,0.20952899999997499 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,4.271085000000028,0.17035099999998238 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,2.4057959999999525,0.08592700000002651 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,1.7698579999999993,0.2980489999999918 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.461283000000094,0.20827600000006896 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.5152229999999918,0.17114199999991797 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,synced,0,13.012329000000022,0.21194199999990815 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,synced,1,6.5981460000000425,0.1647930000000315 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,synced,2,7.855777999999987,0.1533159999999043 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,9.776949999999943,0.2385420000000522 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,5.042812000000026,0.21847200000001976 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,5.443286999999941,0.1926339999999982 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,7.518481000000065,0.15748200000007273 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.708033,0.17028100000004542 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,10.78939200000002,0.25281300000006013 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,1.0051829999999882,0.10140899999998965 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.5995639999999867,0.1618590000000495 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.7796210000001338,0.15671100000008664 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,61.787735999999995,1.342429999999922 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,49.428920999999946,1.333116999999902 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,49.48941999999988,1.3308939999999438 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,1.542695999999978,0.09932600000001912 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.6948509999999715,0.09004299999992327 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.108846000000085,0.08224199999995108 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,5.500385999999935,0.06633799999985968 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.114223999999922,0.05554200000005949 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.6665190000001076,0.06008900000006179 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,5.399887999999919,0.10289199999988341 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,5.018123999999943,0.10212999999998829 +42105504239/base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,5.189536999999973,0.09846599999991668 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.419894999999997,0.14939000000003944 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,9.998823000000357,0.14641600000004473 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.195394999999735,0.13951600000018516 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,4.624263000000155,0.0864080000001195 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.302102999999988,0.08001800000010917 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.715578000000278,0.08120000000008076 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.5515230000000884,0.07584200000019337 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5913919999998143,0.07211599999982354 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5771709999999075,0.07320799999979499 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,50.6137190000004,1.6629140000000007 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,44.439548999999715,1.6470699999999852 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,48.38556100000005,1.595342999999957 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,3.0804549999998017,0.07756500000004962 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,1.632448999999724,0.09151500000007218 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,1.8156389999999192,0.06430500000033135 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.6369549999999435,0.26869699999997465 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,1.0891069999997853,0.19458799999983967 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,1.0563890000003084,0.1758789999998953 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,synced,0,3.5557659999999487,0.14946099999997386 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,synced,1,3.50535200000013,0.08217100000001665 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,synced,2,4.412130000000161,0.08061899999984234 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,3.144079000000147,0.16940999999997075 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,3.077099999999973,0.16461300000037227 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,2.7215060000003177,0.16432299999996758 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,4.421553000000131,0.1083200000002762 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,5.382702000000336,0.10891099999980725 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,4.042214000000058,0.1178530000001956 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5151300000006813,0.06876100000044971 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.39582400000017515,0.08361299999978655 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.38915500000075554,0.0697730000001684 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,48.36936699999933,1.2702540000000226 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,46.20999200000006,1.2707450000007157 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,46.303069000000505,1.263093000000481 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,1.432332999999744,0.06860099999994418 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.932224999999562,0.0686519999999291 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.4763279999997394,0.06753899999966961 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.929602000000159,0.05757499999981519 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.8993170000003374,0.055072000000109256 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.8694030000006023,0.054650000000037835 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.061037000000397,0.09355800000048475 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,2.9116659999999683,0.09199499999976979 +42105504239/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,2.9459569999999076,0.08970199999930628 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,2.9498120000007475,0.14406200000030367 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,6.868293999999878,0.1385339999997086 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.5677340000002005,0.14167899999938527 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.8520529999996143,0.09319700000014564 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,4.748917000000802,0.08979300000009971 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.133868999999322,0.08753999999953521 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.40685000000030414,0.07510100000035891 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.32821400000011636,0.07693299999937153 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.3203530000000683,0.07509099999970203 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,42.60779199999979,1.5864000000001397 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,42.88203700000031,1.5909169999995356 +42105504239/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,46.8520239999998,1.5910979999998744 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,6.48087200000009,0.05395000000044092 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,7.2419040000004316,0.052388000000064494 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,5.558390999999574,0.05178599999999278 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,24.003193999999894,0.7352049999999508 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,6.218375000000378,0.7237679999998363 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,8.794855999999527,0.7234369999996488 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,synced,0,24.540936999999758,0.07463999999981752 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,synced,1,22.407779999999548,0.07467999999971653 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,synced,2,31.112482999999884,0.07390899999973044 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,9.031966000000466,0.15526999999929103 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,7.385956999999507,0.15532900000016525 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,7.466677000000345,0.15235499999926105 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,8.345653000000311,0.0963819999997213 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,17.48303399999986,0.09770399999979418 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.445386000000326,0.09805400000004738 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.5785290000003442,0.07390899999973044 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.3603170000005775,0.07416899999952875 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.3503319999999803,0.07198599999992439 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,659.5509280000006,1.2799689999992552 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,492.78866000000016,1.2860270000001037 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,470.62759000000005,1.2670989999987796 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,5.392667000000074,0.06876099999863072 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,5.116329000000405,0.06840999999985797 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.788193999998839,0.06805999999960477 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.056440000000293,0.05652400000144553 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,5.535718000000998,0.049073000000134925 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.78527000000031,0.050014000000373926 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,23.87710799999877,0.09486999999899126 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,23.06316700000025,0.0950700000012148 +42105504239/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,23.115413999999873,0.09271699999953853 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,8.597094000000652,0.14869899999939662 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,7.248325000000477,0.13391799999953946 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,7.265830000000278,0.13404799999989336 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,17.279214000000138,0.0784960000000865 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,16.79112400000122,0.07863599999836879 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,20.117481000001135,0.08841000000029453 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.1188509999992675,0.07320799999979499 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.3078999999997905,0.07009300000026997 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.3450850000008359,0.06904200000099081 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,455.75395899999967,1.591628000000128 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,471.9327400000002,1.6054289999992761 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,454.4324549999983,1.5992399999995541 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.3813379999992321,0.053779000001668464 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,1.031301999999414,0.05430999999953201 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,1.0761979999988398,0.05422999999973399 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.9852040000005218,0.21363500000006752 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,1.0378309999996418,0.1983829999990121 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,1.0312420000009297,0.1981919999998354 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,3.2914570000011736,0.07682399999976042 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,12.090890999999829,0.07489100000020699 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,3.1579099999999016,0.07639200000085111 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,3.266270000000077,0.1622189999998227 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,3.0945259999989503,0.16013700000075914 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,3.1217059999999037,0.18777700000100594 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,4.599236000000019,0.10256099999969592 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,4.140400000000227,0.10210000000006403 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,4.235219000000143,0.10139000000162923 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.42036000000007334,0.06731000000036147 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.42510700000093493,0.06744900000012422 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.48258199999872886,0.06701900000007299 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,457.7667930000007,1.2677110000004177 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,472.1016499999987,1.2822120000000723 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,456.0146480000003,1.2701039999992645 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.247471000000587,0.06709899999987101 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.9759200000007695,0.06659899999976915 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,1.0914609999999811,0.06594699999914155 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.2296249999999418,0.053638999999748194 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,2.442418999999063,0.062471999999615946 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,1.202354999999443,0.06113999999979569 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,3.8382629999996425,0.09817500000099244 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.1942030000009254,0.09505999999964843 +42105504239/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,3.389560999999958,0.09733400000004622 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,3.301582000000053,0.14521400000012363 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,3.604789000000892,0.14314100000046892 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,3.2012139999969804,0.14490400000067893 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,4.141511000001628,0.08872100000007777 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,5.413719000000128,0.08799999999973807 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,4.335276999998314,0.08849100000225008 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.44679899999755435,0.07968699999764794 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.47047399999792106,0.07842599999639788 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.41445200000089244,0.07599199999822304 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,458.92930400000114,1.6013930000008259 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,455.65244900000107,1.5991499999981897 +42105504239/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,454.588327999998,1.593151000000944 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,55.445834999998624,0.06300299999929848 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,45.824916999998095,0.06383400000049733 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,60.59827700000096,0.06490599999960978 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,62.258677000001626,7.176429000002827 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,45.08813300000111,7.0863140000001295 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,68.76137500000186,7.339237000000139 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,synced,0,251.03817700000218,0.08690800000113086 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,synced,1,238.4128030000029,0.08708900000056019 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,synced,2,274.6418569999987,0.09905599999910919 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,54.330277999997634,0.1576229999991483 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,67.52292800000214,0.1600159999979951 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,92.39631100000042,0.1634809999995923 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,61.9003739999971,0.1042440000019269 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,59.91631800000323,0.10520600000018021 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,67.88958999999886,0.10608700000011595 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,17.311107000001357,0.07417899999927613 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,8.275788000002649,0.07974800000010873 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,4.645924000000377,0.0774249999994936 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,4648.336364999999,1.3135589999983495 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,4609.253581999998,1.265384999998787 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,4526.291873000002,1.285916000000725 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,57.5793610000037,0.0739389999944251 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,50.914999000000535,0.07393900000170106 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,53.71276599999692,0.07370899999659741 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,53.370601999995415,0.05415999999968335 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,58.4528599999976,0.05994900000223424 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,51.953771000000415,0.05589199999667471 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,245.34887299999536,0.09639199999946868 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,240.30087599999388,0.09679299999697832 +42105504239/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,270.2052059999987,0.10243099999934202 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,57.32329000000027,0.17751200000202516 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,62.90210300000035,0.17569899999944028 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,69.05868899999768,0.17680100000143284 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,61.40202899999713,0.08622699999978067 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,73.7356540000037,0.08944199999677949 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,55.02757299999939,0.08568599999853177 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.770619999995688,0.0823919999966165 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,8.046704000000318,0.08648700000048848 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,19.056695999999647,0.08296200000040699 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,4540.276301000005,1.5926499999986845 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,4581.506970000002,1.584086999995634 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,4544.042041000001,1.5815330000041286 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.2407859999948414,0.05877599999803351 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,2.738735999999335,0.06463500000245403 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,3.2940699999962817,0.06357299999945099 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,2.988318999996409,0.7884530000010272 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,1.7606770000056713,1.2593180000039865 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.7425809999986086,0.7632959999973536 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,5.307480000003125,0.08513500000117347 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,3.9590809999936027,0.08594599999196362 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,3.9485159999894677,0.08441500000481028 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,6.862651000003098,0.17865300000994466 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,4.105557000002591,0.17214399999647867 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,3.787809000001289,0.17166300000099 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,7.42287199999555,0.11742300000332762 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,4.708877999990364,0.11784399999305606 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,4.730089000004227,0.11730300000635907 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.5958390000014333,0.07815600000321865 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.6669739999924786,0.08442500000819564 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.5801560000109021,0.080337999999756 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,4596.656149999995,1.2606700000033015 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,4556.694373999999,1.2628729999996722 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,4610.297406999991,1.265847999995458 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.1655549999995856,0.06943299999693409 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,2.5664970000070753,0.0750910000060685 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.7096519999904558,0.07460999999602791 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.7141189999965718,0.060758999999961816 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,1.7101029999903403,0.06043899999349378 +42105504239/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,2.569682000001194,0.06423399999039248 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.894469000006211,0.09846500000276137 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,5.830563999988954,0.10206000000471249 +42105504239/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,4.062354999987292,0.10138900000310969 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,5.387510000000475,0.18860799999674782 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,4.417138999997405,0.1890480000001844 +42105504239/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,4.060362000003806,0.18716600000334438 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,6.871049999987008,0.09631199999421369 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,5.126555999988341,0.09603200000128709 +42105504239/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,6.751548000000184,0.09732300000905525 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6038510000071255,0.0887710000097286 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5819590000028256,0.0873390000051586 +42105504239/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6613159999978961,0.08953199999814387 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,4591.448070999992,1.5994099999952596 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,4573.609452000004,1.5941730000049574 +42105504239/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,4632.772471999997,1.6008319999964442 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,synced,0,9.866860000000031,0.17994499999997515 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,synced,1,2.984654999999975,0.13609099999996488 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,synced,2,3.588636000000065,0.06382400000006783 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,synced,0,1.5682940000000372,0.34139300000003914 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,synced,1,1.0382019999999557,0.1963989999999285 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,synced,2,1.1424749999999904,0.17716199999995297 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,synced,0,7.837936000000013,0.18270000000006803 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,synced,1,6.173380000000066,0.14394199999992452 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,synced,2,3.3925160000000005,0.18820799999991777 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,synced,0,9.965085000000045,0.25375400000007176 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,synced,1,3.982666999999992,0.20508299999994506 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,synced,2,3.3570230000000265,0.16485399999999117 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.746695000000045,0.15928499999995438 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,synced,1,7.521779000000038,0.1389449999999215 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,synced,2,6.2235840000000735,0.10965200000009645 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,synced,0,0.968118000000004,0.08479499999998552 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,synced,1,0.6116819999999734,0.09359800000015639 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,synced,2,0.7270919999998569,0.0796179999999822 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,synced,0,2.2371120000000246,0.10855000000015025 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,synced,1,2.8227649999998903,0.10387400000013258 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,synced,2,2.668198000000075,0.06253199999991921 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,optimistic,0,0.9930249999999887,0.12124900000003436 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,optimistic,1,1.710153999999875,0.1171430000001692 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,none,optimistic,2,1.3211599999999635,0.1043329999999969 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.8112369999998919,0.052506999999877735 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.822202999999945,0.0427230000000236 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.8802490000000489,0.04549699999984114 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,optimistic,0,2.4666299999998955,0.08867099999997663 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,optimistic,1,2.9072400000000016,0.08513599999992039 +42105504239/candidate,1df2469a5,list + author,visible author update,100,none,optimistic,2,2.170302999999876,0.083011999999826 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,optimistic,0,10.467206000000033,0.1483490000000529 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,optimistic,1,3.39669200000003,0.13544999999999163 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,none,optimistic,2,2.055012999999917,0.13011200000005374 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,3.667502000000013,0.11514000000011038 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.492455000000064,0.08310299999993731 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,3.911742000000004,0.08102999999982785 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.5560209999998733,0.07962799999995696 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5397259999999733,0.07093500000019048 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5275490000001355,0.07390899999995781 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,optimistic,0,2.512066999999888,0.3966960000000199 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,optimistic,1,2.061232000000018,0.3438180000000557 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,none,optimistic,2,1.643786000000091,0.36334599999986494 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,synced,0,2.329226999999946,0.056934000000183005 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,synced,1,1.7476690000000872,0.0525079999999889 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,synced,2,1.2679920000000493,0.047810999999910564 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,synced,0,0.9560109999999895,0.2913699999999153 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,synced,1,1.062507000000096,0.17298500000015338 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,synced,2,0.6895570000001499,0.16588499999988926 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,synced,0,1.970737999999983,0.12068799999997282 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,synced,1,2.6659340000001066,0.07029400000010355 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,synced,2,1.518742000000202,0.0652260000001661 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,synced,0,2.4784370000002127,0.15101300000014817 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,synced,1,2.2185640000002422,0.1729950000003555 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,synced,2,3.195024999999987,0.14393199999994977 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,3.0728039999999055,0.09955700000000434 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,3.922657999999956,0.10037800000009156 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,2.910895999999866,0.1006680000000415 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,synced,0,6.30317100000002,0.06771900000012465 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.3664610000000721,0.12313200000016877 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.39330999999992855,0.06992300000001705 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,synced,0,1.9543439999997645,0.06209099999978207 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,synced,1,1.374166999999943,0.05135599999994156 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,synced,2,2.049583999999868,0.08460500000001048 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.9962100000002465,0.05305799999996452 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.6452529999996841,0.06639799999993556 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.6650019999997312,0.05206700000007913 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.6674749999997402,0.04043000000001484 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.6860520000000179,0.03940799999963929 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.6336249999999382,0.03941800000029616 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,optimistic,0,1.8926029999997809,0.07579200000009223 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,optimistic,1,1.5292770000000928,0.07503099999985352 +42105504239/candidate,1df2469a5,list + author,visible author update,100,manual,optimistic,2,1.4736949999996796,0.07360900000003312 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,optimistic,0,8.39481799999976,0.13065299999971103 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,optimistic,1,2.216179999999895,0.1335269999999582 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.9648600000000442,0.1342680000002474 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,2.8909359999997832,0.08518499999991036 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.4015989999998055,0.08628799999996772 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.190357999999833,0.08441500000026281 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.41453199999978096,0.07135500000003958 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.3717580000002272,0.0728079999998954 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.32089300000006915,0.0717360000003282 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,optimistic,0,1.2372049999999035,0.332260000000133 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,optimistic,1,1.7383350000000064,0.33436399999982314 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,100,manual,optimistic,2,1.242113000000245,0.35970099999985905 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,synced,0,4.650732999999946,0.037194999999883294 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,synced,1,4.765813000000435,0.03741600000012113 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,synced,2,6.541793000000325,0.03691499999968073 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,synced,0,10.708020999999917,0.7301379999998971 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,synced,1,5.595577000000048,0.706543000000238 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,synced,2,4.489284999999654,0.701354999999694 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,synced,0,14.749545000000126,0.05852599999980157 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,synced,1,22.401766999999836,0.05826600000000326 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,synced,2,29.37625900000012,0.05633299999999508 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,synced,0,7.044004999999743,0.13322699999980614 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,synced,1,5.880137000000104,0.1319949999997334 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,synced,2,6.106209999999919,0.13122300000031828 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,7.311108000000331,0.08683900000005451 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,21.12450200000012,0.08822999999983949 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.923723999999766,0.08703900000000431 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.1057310000001053,0.062432000000171683 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.3902210000001105,0.0704040000000532 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.9858549999999013,0.0682409999999436 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,synced,0,13.483605999999781,0.04891200000020035 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,synced,1,10.89824099999987,0.04776000000038039 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,synced,2,19.097321000000193,0.047360000000480795 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,optimistic,0,5.102248999999574,0.053629000000000815 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.467341999999917,0.05138600000009319 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.698253000000477,0.0518659999997908 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,optimistic,0,16.859678999999232,0.03313900000011927 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,optimistic,1,4.526278999999704,0.03292799999962881 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.146537999999964,0.03229800000008254 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,optimistic,0,29.22322299999996,0.07360900000003312 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,optimistic,1,20.881963999999243,0.08013800000026094 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,none,optimistic,2,21.645031000000017,0.07655299999987619 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,optimistic,0,17.483108999999786,0.1318150000006426 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,optimistic,1,17.38346199999978,0.1300120000005336 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,none,optimistic,2,16.623491000000286,0.12780899999961548 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,16.955249999999978,0.07741400000031717 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,18.121800999999323,0.07720400000016525 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,17.143106999999873,0.07708399999955873 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.061456000000362,0.07084500000019034 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.0564089999998032,0.06923199999982899 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.03052100000059,0.06904200000008132 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,optimistic,0,30.03589699999975,0.3338320000002568 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,optimistic,1,13.989853999999468,0.337057000000641 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,none,optimistic,2,20.746203000000605,0.3405130000001009 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,synced,0,1.0970290000004752,0.041169999999510765 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,synced,1,0.7435769999992772,0.0413909999997486 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,synced,2,0.7456499999998414,0.04131099999995058 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.7602919999999358,0.21132200000010926 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.6791429999993852,0.18709599999965576 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.677679999999782,0.18520300000000134 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,synced,0,1.5428270000002158,0.058976999999686086 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,synced,1,1.5050810000002457,0.05794499999956315 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,synced,2,1.566291000000092,0.05826600000000326 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,synced,0,2.2632599999997183,0.14520400000037625 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,synced,1,2.601929000000382,0.1404080000002068 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,synced,2,2.0823630000004414,0.14164900000014313 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.635605000000396,0.09598099999948317 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.344876000000113,0.09401900000011665 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.003381999999874,0.09311700000034762 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.460519999999633,0.06356400000004214 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.39479300000039075,0.06427499999972497 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.3699459999997998,0.06469500000002881 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,synced,0,10.383411999999225,0.04860200000075565 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,synced,1,9.76383799999985,0.04854200000045239 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,synced,2,9.210871999999654,0.04837200000019948 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.7389800000000832,0.05062499999985448 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.6722419999996418,0.05122599999958766 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.6957769999999073,0.050855000000410655 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.9805470000001151,0.039928999999574444 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.7141029999993407,0.08679799999936222 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7969259999999849,0.03943799999979092 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,optimistic,0,1.7324259999995775,0.07462000000032276 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,optimistic,1,1.6468199999999342,0.07530099999985396 +42105504239/candidate,1df2469a5,list + author,visible author update,1000,manual,optimistic,2,1.519122000000607,0.07393899999988207 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.3630769999999757,0.13677199999983713 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.0904639999998835,0.13634099999944738 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.093548999999257,0.13608100000055856 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.055387999999766,0.0852759999997943 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.1074360000002343,0.08340299999963463 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.0227399999994304,0.08399399999962043 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.43852700000024925,0.07351899999957823 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4894320000003063,0.09360800000013114 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.4453570000005129,0.07185600000047998 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,optimistic,0,10.244456000000355,0.33003699999972014 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,optimistic,1,10.860003999999208,0.3344340000003285 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,1000,manual,optimistic,2,10.910699000000022,0.32072299999981624 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,synced,0,155.4688840000008,0.04390400000011141 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,synced,1,52.332580000000235,0.05652399999962654 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,synced,2,47.944204000000354,0.04462599999988015 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,synced,0,44.61932800000068,7.216899000000922 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,synced,1,52.16594499999883,7.23628699999972 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,synced,2,51.27807399999983,7.183450000000448 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,synced,0,176.3719540000002,0.06477499999891734 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,synced,1,164.5794480000004,0.061881999999968684 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,synced,2,194.29924100000062,0.07031300000016927 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,synced,0,71.51136999999835,0.31431400000110443 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,synced,1,56.24397200000021,0.1417490000003454 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,synced,2,79.43187699999908,0.14031699999941338 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,60.004861000001256,0.09025300000030256 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,61.77036600000065,0.09064399999988382 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,72.35982200000035,0.09345800000119198 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.5993020000005345,0.06566700000075798 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,synced,1,5.812847000001057,0.0652059999993071 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,synced,2,7.881509000000733,0.06776999999965483 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,synced,0,133.5864760000004,0.052647000000433763 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,synced,1,124.96113900000091,0.05122500000106811 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,synced,2,140.98188800000025,0.05351900000096066 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,optimistic,0,61.12459899999885,0.057074000000284286 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,optimistic,1,55.47079700000177,0.057925999997678446 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,none,optimistic,2,56.38909100000092,0.05817600000227685 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,optimistic,0,60.919606999999814,0.041190999996615574 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,optimistic,1,60.79907899999671,0.04150099999969825 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,none,optimistic,2,70.29731299999912,0.045417000001179986 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,optimistic,0,184.25304400000095,0.081689999999071 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,optimistic,1,242.67097900000226,0.08402399999977206 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,none,optimistic,2,168.81094999999914,0.08237100000042119 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,optimistic,0,58.327681999999186,0.1496210000004794 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,optimistic,1,67.98911700000099,0.15072200000213343 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,none,optimistic,2,62.65485699999772,0.15033200000107172 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,69.45649699999922,0.08272200000283192 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,72.24884299999758,0.08557699999801116 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,62.10022899999967,0.0823820000005071 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.418689999998605,0.07837600000129896 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,5.0550089999997,0.07829599999968195 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,20.235757999998896,0.08086899999761954 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,optimistic,0,246.7561969999988,0.33096800000203075 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,optimistic,1,114.56136500000139,0.33563499999945634 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,none,optimistic,2,117.05480300000272,0.326281999998173 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,synced,0,2.1000889999995707,0.04304300000148942 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,synced,1,1.3902219999981753,0.0430030000024999 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,synced,2,2.6279429999995045,0.04730000000199652 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,synced,0,2.252094000003126,0.7609929999998712 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,synced,1,1.3891999999977998,0.7425460000013118 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.3899410000012722,1.2215819999983069 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,synced,0,3.4919020000015735,0.06652799999937997 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,synced,1,2.4116979999998875,0.06782100000054925 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,synced,2,2.2550869999977294,0.06842099999994389 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,synced,0,2.9533679999985907,0.14840900000126567 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,synced,1,4.748536999999487,0.15312600000106613 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,synced,2,2.967949999998382,0.15151300000070478 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,3.6922279999998864,0.10415300000022398 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,3.845835000000079,0.10271099999954458 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,3.9971479999985604,0.10041799999817158 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.58090699999957,0.07150499999988824 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5533160000013595,0.07234699999753502 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.5281290000020817,0.07156500000201049 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,synced,0,257.7027070000004,0.0532679999996617 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,synced,1,114.90543099999923,0.05091499999980442 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,synced,2,110.52833199999804,0.050665000002481975 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,optimistic,0,13.884758000000147,0.0516459999998915 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,optimistic,1,2.421082999997452,0.057874999998603016 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.397251000002143,0.05741499999930966 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.3730149999973946,0.04443600000013248 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,2.418509000002814,0.04506599999876926 +42105504239/candidate,1df2469a5,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,11.117083999997703,0.04536699999880511 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,optimistic,0,3.768990999997186,0.0815599999987171 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,optimistic,1,4.426962000001367,0.08048899999994319 +42105504239/candidate,1df2469a5,list + author,visible author update,10000,manual,optimistic,2,4.436035999999149,0.08200099999885424 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.0978810000015073,0.1624900000024354 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,optimistic,1,2.7413850000011735,0.16475399999762885 +42105504239/candidate,1df2469a5,list + comment count,visible issue comment insert,10000,manual,optimistic,2,5.107195999997202,0.1684190000014496 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,14.158611000006204,0.08700800000224262 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,3.586160999999265,0.09124500000325497 +42105504239/candidate,1df2469a5,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,5.609927999998035,0.09148499999719206 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.5874069999990752,0.08348299999488518 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5255550000001676,0.08302300000650575 +42105504239/candidate,1df2469a5,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6304900000031921,0.08508599999913713 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,0,136.65732100000605,0.33190900000045076 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,1,134.58928000000014,0.33298199999990175 +42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,2,107.8540920000014,0.3287750000017695 From eb9ba9acab93878233572addbf6358a8df6c046c Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 14:05:47 -0700 Subject: [PATCH 7/9] Isolate rich-text fixtures to their benchmark case --- .../2026-11-05-boundary-only-high-review.md | 82 +++ ...2026-11-05-boundary-only-high-sources.json | 44 ++ scripts/bench/README.md | 22 + scripts/bench/boundary-only-ci-2026-11-05.csv | 504 +++++++++++++++++ scripts/bench/incremental-update.ts | 25 +- .../query-fixture-isolation-2026-11-05.csv | 505 ++++++++++++++++++ 6 files changed, 1174 insertions(+), 8 deletions(-) create mode 100644 scripts/bench/query-fixture-isolation-2026-11-05.csv diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md index b0bd36c3de..bbb83cc388 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -580,3 +580,85 @@ comments, but the current helper accepts void or Promise and the current report already says every repetition. The mutable summary still covers bd3f574ec and is not fresh review evidence for 1498a8101. The bot marks both original table pipes and whole-source fan-out comments addressed by 1498a81. + +## f34738e69 repeat and fixture isolation + +CI03 reproduces remotely on source-identical f34738e69, run +[42106831377](https://github.com/TanStack/db/actions/runs/42106831377). +Overall ratios are 0.62x writes / 0.51x cold. The same 1,000-row, unindexed, +optimistic comment-count case fails. Base samples are 8.471143, 9.203844 and +8.600227 ms; candidate samples are 14.805505, 19.699914 and 17.413126 ms. +Every result is retained in the CI table, now 1,512 repetition rows. The dist +and replay repairs pass remotely. This repeat is evidence against dismissing +the localized failure as an isolated outlier. + +The CI runtime matters: local Node 24.19 missed this case, while Node 24.8 +reproduces it. In the original local CPU profile, base samples are 5.274, 4.086 +and 4.820 ms; candidate samples are 10.521, 8.918 and 7.954 ms. Sample windows +are bounded by monotonic timestamps around the same preload. A separately +calibrated inspector profile supplies the profile-clock offset; summing samples +in those windows attributes 12.292 ms of candidate time to garbage collection, +versus no sampled GC in the base windows. Non-GC work is not exactly equal, and +sampling cannot establish exact function costs. + +Every fixture previously populated every issue's 20-block rich-text document, +even for queries that never read documents. That creates substantial unrelated +allocation before each timed hydration. A diagnostic full collection immediately +before hydration, using those original complete fixtures, changes the formerly +failing median to 5.618 ms base / 4.524 ms candidate. The diagnostic preserves +source rows and query shape. It is not the committed measurement policy. An +inspector-started profile also changes GC scheduling and does not reproduce the +slowdown; its samples remain bound in the manifest rather than being discarded. + +The harness now populates document trees only for the document query. It still +constructs the same issue, user and comment sources. A deterministic fixture +audit compares all 42 scale/index/query configurations before and after this +change: 126 source fingerprints are identical, all six document-case fixtures +are identical, and the other 36 document fixtures are empty. The original +nested-document query, result assertions, normal GC, writes, repetitions and +regression thresholds remain. No production or oracle code changes. This is a +benchmark fixture repair, so the appropriate instruments are source-data +fingerprints, actual timed runs and existing gate tests; it changes no product +law and needs no new product oracle. + +Both source trees run the corrected full harness under Node 24.8 sequentially. +The exact base source archive is 8feab6ea3 and candidate production is f34738e69. +The unchanged gate passes: 0.61x writes / 0.51x cold, with no diagnostic flags. +The formerly failing optimistic case is 4.584000, 4.148917, 4.069292 ms base +versus 4.117292, 3.547250, 3.342959 ms candidate. All 504 repetition observations +are in query-fixture-isolation-2026-11-05.csv. The local archive runner reports +its working-directory Git SHA; the original JSON is preserved, and a separate +annotated report names its actual source archive for the comparator. No timing +or case is edited. The manifest binds both reports and imported source paths. + +Limits: these controls identify fixture-dependent GC scheduling. They do not +prove zero runtime overhead, bound every application's GC pauses, or replace a +fresh remote measurement. CI03 remains confirmed-open until the corrected +harness passes the unchanged gate on CI. The shipped-size evidence remains +current because packages/db/src, packages/db-ivm/src and the mangle cache are +unchanged. All 19 benchmark-gate tests pass, including hostile report and timing +controls. No threshold or oracle budget changes. + +### New CodeRabbit review accounting + +Review 5792063975 covers f34738e69, from bd3f574ec. It contains no new inline +code findings. Its raw body and mutable summary 6666306571 are preserved in the +poll snapshot bound by the manifest. The following ledger includes the summary's +qualifications, not only its formal warning: + +| ID | Original claim or suggestion | Technical verdict and evidence | PR action / durable value | +| --- | --- | --- | --- | +| CRF01 | Docstrings cover 45%, below a required 80%; add missing docstrings. | The bot reports its default, not a repository requirement; it says no repository configuration applied. No authoritative 80% rule exists in the repository. | duplicate of the previously refuted docstring requirement; preserve as optional documentation feedback, no blanket prose expansion. | +| CRF02 | Minimal merge risk, no concrete blocker; benchmark awaits a repeat. | The repeat confirms the failure. The bot's broad readiness inference is unsupported by its own unexplained-gate qualification. | refuted readiness claim; CI03 remains the canonical open item. | +| CRF03 | The latest head lacks fresh remote performance evidence; ignored CSVs were not inspected. | This was a real evidence limit in its supplied context. Both remote repeats and all source bindings now remain recorded; a corrected-harness CI result is still required. | duplicate of CI03; retained in this record and the measurement tables. | +| CRF04 | Confirm joined public pair keys are intended because the issue does not request them explicitly. | The maintainer explicitly chose pair identities, retaining non-key source attribution. The join oracle covers 4,608 states and rejects source-key preference. | accepted-design, with authority and calibration above. | +| CRF05 | Confirm aggregate provenance, caseWhen and select type changes are necessary. | Existing native-type RED evidence identifies wrapped aggregates; provenance closes that class, and tuple inference replaces repetitive overloads. The final 33 owner / 85 supplemental checks and full tsc pass. | already-fixed coverage question; preserve the independent type evidence and declared inference limits. | + +Loss accounting: five occurrences = two duplicates + one refuted + one +accepted-design + one already-fixed. The earlier NR/SS/CI ledgers retain their +identities and counts. This review is useful for identifying its own evidence +limits, but it offers no fresh executable counterexample and overlooks the +known gate failure in its merge-risk conclusion. It does not independently +establish readiness or warrant hiring for performance diagnosis. No new +behavioral finding requires an oracle change. The original high review's +correctness and efficiency findings remain accounted for in the earlier ledger. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json index ed60254be5..04c0bdf526 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -337,5 +337,49 @@ "8feab6ea3eaae4456f738da39fa93508ddd5cc01", "1498a8101934558a3ce3832b9854a800f9cc0c81" ] + }, + "ciF347FixtureIsolation": { + "parentHead": "f34738e6946525d5c94c857639a8870467ec162d", + "productionChanged": false, + "benchmarkRun": 42106831377, + "baseSource": "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "benchmarkGate": "FAIL same localized cold case on original harness; corrected local gate PASS; corrected CI pending", + "codeRabbitReview": 5792063975, + "codeRabbitCoveredHead": "f34738e6946525d5c94c857639a8870467ec162d", + "evidenceSha256": { + "hydration-base.cpuprofile": "406064a87cb47d0ff06e11ad79cca30dd9584e9d2aa8a51e3b2190666e14eb34", + "hydration-current.cpuprofile": "0655c822c374abc48b1f3a93eb7aff3f38742e15c1b18024a27ec7b19930f462", + "hydration-base.log": "11a754e8554309fda3c08de31cae1540efe77a86c6bb58565a0678ad34444c4d", + "hydration-current.log": "e7a9432d19071aa221c27fc66c4d0418c2a34425a8f26ce34ef95fe44810ade3", + "calibrated-base.json": "72bfd5ea4e0ed9b468fe3228d15fc84daacee0a8398c03b3e7baf38e08a7e546", + "calibrated-current.json": "e36d37fdb39987312746d8b29ae2ec76f9add13ff04ec4b411aee537b1fe6e3f", + "calibrated-base.log": "b1b9e525a8d29bef25828172640c3e4d8af6c29aa082bf38012a5c9be52fb892", + "calibrated-current.log": "1bb9f7eacd30033598004e14a26f02a95f86aa11a9eebd4676ae16021e82db03", + "needed-fixtures-base.json": "b85eb579447a22edc5ec14925486acb5785f8d85983e505bc37cfbdd2fc283d3", + "needed-fixtures-current.json": "59c137bd1a6885b7bcd1a49762fbe9ac5790204ddc4e71b8023b00a41f7199f4", + "gc-control-base.json": "a82fabaf8c107377c90f261a39826804739127e705e97539c5cf201046b647fa", + "gc-control-current.json": "b2c2f8a4a3e23f1bc97196738da5279f6b578b78fc8b6ec0c14583b6b3f0748c", + "query-fixtures-final-base-raw.json": "79decea2c088d96fc55812d679c1a51274c950a402dc2a9e486cde708d95bc1f", + "query-fixtures-final-base.json": "c6e557001e75c0a71b9bb7a369ac2bf5b33bff6dbf0cfeb9f31a11dff08e9a54", + "query-fixtures-final-current.json": "2a9f3d9d4ae0aafd9b1d0d1ec682de43660da4c7f1b0697b13f97a49efbd4968", + "query-fixtures-final-base.mts": "8ae934ed8203f3dfedb8aa1a41f4e93628d52da7ccbf6fdc9e77d1d6cd6287c4", + "query-fixtures-final-current.mts": "dbb4a692e775f9b28f4738344335512db17e554b3ebc9d85a973220fc6c719ca", + "query-fixtures-final-comparison.md": "4c40d4fb9e024e4cbce91d1867a6b7cb86b7897a1a92b1ab6842232670d6b99c", + "fixture-fidelity-old.log": "cc67f09b062e78aaf51e1fd25e09295fc1b769db1a925e199dfb4d3e83030763", + "fixture-fidelity-new.log": "2dc0182183abd3b130fef61857c97a5e155a70ea20c563471cabf2d52d0b001b", + "fixture-fidelity-result.log": "465b66653003afdbb1ce72f0f6b84d3b35ff987309c75bf363cbf858d414e979", + "query-fixtures-gate-tests.log": "a0b4524c5f9139b94e92a236dd7031ed06ea2bc0efee9cf2637204d6f553759f", + "f347-review-mutable.md": "832da56a9336078349ca8d771c2d5eb998ecf1407aaf861ba5de6225d753209f" + }, + "remoteReportSha256": { + "base.json": "d0ca8afc8918a76a4fbbfd1dfee9311d326b4ef32f1f2b55af64df8bddd7998b", + "candidate.json": "79c54f76743739be86ef09cfb77e6ec9c3f1a1e0115cea459d8a7f84d64dc725", + "comparison.md": "c87115168f772fbddcd367ccfa8f004787c2ea2a90f9568aa6beb5616f211ccf" + }, + "sourceSha256": { + "scripts/bench/incremental-update.ts": "866d2b1512279ce19519755778de8f32c1d2ecbf325c4997c359090ce3c96fb8", + "scripts/bench/boundary-only-ci-2026-11-05.csv": "8fb75b62b8a6bca11d4cb84720a9babe425e98d03daadfbe13b07a3ee248fd3e", + "scripts/bench/query-fixture-isolation-2026-11-05.csv": "3cacc3aadaa9a1bffb9342ff177d604be6a3368a6eb1fde515340685d79357fc" + } } } diff --git a/scripts/bench/README.md b/scripts/bench/README.md index c076fbcb00..4924fff81b 100644 --- a/scripts/bench/README.md +++ b/scripts/bench/README.md @@ -13,6 +13,10 @@ node --test scripts/bench/compare-incremental-update.test.mjs Each repetition creates fresh fixtures and queries, times their first preload, and measures writes after warmup. Reports retain all cold-load times and per-repetition write medians; displayed statistics are medians across repetitions. +Only the document case populates rich-text document fixtures. Creating those +trees for unrelated queries can move their garbage collection into another +case's timed hydration. The document case retains its complete fixture, and +normal garbage collection remains enabled during every measurement. The nested-document case joins all open issues to 20-block documents and selects whole documents without a limit. Synced updates and optimistic updates with rollback run at all scales and index modes, like the existing flat cases. @@ -114,3 +118,21 @@ base median versus 17.383 ms candidate. All three candidate samples exceed the base range and both floors. The [CI table](boundary-only-ci-2026-11-05.csv) retains both remote pairs (1,008 repetition rows). Thresholds remain unchanged; the high-review record tracks the repeatability investigation. + +The source-identical [f34738e69 repeat](https://github.com/TanStack/db/actions/runs/42106831377) +fails the same case: 8.600 ms base median versus 17.413 ms candidate. All three +remote pairs remain in the CI table (1,512 repetition rows). Local Node 24.8 +profiling reproduces the shift and attributes 12.292 ms across three affected +hydrations to garbage collection. A diagnostic collection before hydration, +with the original complete fixtures, reverses that case's median comparison +to 5.618 ms base versus 4.524 ms candidate. This control is diagnostic only; +the committed harness does not force collection or filter samples. + +With document fixtures confined to their own query, the full local Node 24.8 +[paired measurements](query-fixture-isolation-2026-11-05.csv) pass the unchanged +gate: 0.61x writes / 0.51x cold. The formerly failing case measures 4.149 ms +base versus 3.547 ms candidate. Both sides use the corrected harness, with the +same sources, scales, index modes, write counts and repetitions. The candidate +production sources are unchanged from f34738e69; the base is 8feab6ea3. A new +remote run must verify the corrected harness on CI. These controls identify +fixture-dependent GC scheduling; they do not establish zero production overhead. diff --git a/scripts/bench/boundary-only-ci-2026-11-05.csv b/scripts/bench/boundary-only-ci-2026-11-05.csv index 8f4993172d..a12a4fd5bd 100644 --- a/scripts/bench/boundary-only-ci-2026-11-05.csv +++ b/scripts/bench/boundary-only-ci-2026-11-05.csv @@ -1007,3 +1007,507 @@ candidate,88544ac64,open issues + documents,visible document update,10000,manual 42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,0,136.65732100000605,0.33190900000045076 42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,1,134.58928000000014,0.33298199999990175 42105504239/candidate,1df2469a5,open issues + documents,visible document update,10000,manual,optimistic,2,107.8540920000014,0.3287750000017695 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,14.850320999999951,0.20394599999997354 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,2.543434999999988,0.17095699999998715 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,1.9386949999999956,0.08809200000001738 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,1.8967220000000111,0.29731699999990724 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.5665860000000293,0.23388099999999667 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.6236310000000458,0.18792199999995773 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,synced,0,12.25756100000001,0.2213729999999714 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,synced,1,7.335550000000012,0.16369600000007267 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,synced,2,7.595981999999935,0.1342620000000352 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,11.98312999999996,0.2540119999999888 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,4.8806090000000495,0.2249180000000024 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,4.997385000000008,0.19508399999995163 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,7.657685000000015,0.1631360000000086 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,7.127548000000047,0.1694439999999986 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,11.188954999999964,0.1469409999999698 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,1.1407950000000255,0.09940899999992325 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.932591999999886,0.163155000000188 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,1.142327000000023,0.19459299999994073 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,63.2961479999999,1.3575109999999313 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,51.52269500000011,1.3710410000001048 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,50.939027000000124,1.338653000000022 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,2.0399170000000595,0.10108199999990575 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.182888999999932,0.0873309999999492 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.2818469999999706,0.08206300000006195 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.6588839999999436,0.0673509999999169 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.4064850000002025,0.057997999999997774 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.4241210000000137,0.056494999999813444 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,9.925916000000143,0.10225400000012996 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,4.3966109999998935,0.10134199999993143 +42106831377/base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,9.352824000000055,0.1096850000003542 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.40294700000004,0.1474820000003092 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,5.744368000000122,0.15175799999997253 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.5578800000002957,0.14227399999981571 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,5.103863999999703,0.09102699999994002 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,7.897455000000264,0.08220400000027439 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.986558999999943,0.0809319999998479 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6610740000000987,0.08822199999985969 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.6281549999998788,0.07605499999999665 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.6400229999999283,0.07406100000025617 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,50.74014800000032,1.7637319999998908 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,45.80275299999994,1.714578000000074 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,49.5071939999998,1.6508420000000115 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,3.347694000000047,0.08534899999995105 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,1.7397259999997914,0.072519000000284 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,2.035460999999941,0.06504799999993338 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.8742080000001806,0.2497760000001108 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,1.1575510000002396,0.1904859999999644 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,1.0980709999998908,0.17521399999986897 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,synced,0,3.9081270000001496,0.08414600000014616 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,synced,1,4.723332999999911,0.14562900000009904 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,synced,2,5.133378999999877,0.08037100000001374 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,3.3245689999994283,0.1717479999997522 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,3.163296000000628,0.16672099999959755 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,2.9452479999999923,0.17242999999962194 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,4.604573999999957,0.11259900000004563 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,5.0637049999995725,0.11105700000007346 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,4.0616769999996905,0.11287999999967724 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.4293660000003001,0.07113699999990786 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.584128000000419,0.08845300000029965 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.36645099999986996,0.07138699999995879 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,49.00287599999956,1.2800850000003265 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,59.84617100000014,1.2748570000003383 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,47.29225299999962,1.2738859999999477 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,1.96846000000005,0.07489299999997456 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,1.0379910000001473,0.07391099999949802 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,1.6718839999994088,0.07049600000027567 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,1.021136000000297,0.057295999999951164 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,1.1548259999999573,0.05587400000058551 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,1.0403949999999895,0.05571400000007998 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.352861999999732,0.09609400000044843 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,8.436585999999807,0.09494300000005751 +42106831377/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,3.264208000000508,0.09623400000054971 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,3.1884939999999915,0.14576899999974557 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,3.1608930000002147,0.15267000000039843 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.907876000000215,0.14903400000002875 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,4.309659999999894,0.09450199999992037 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,4.945195999999669,0.09226900000066962 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.24747699999989,0.09098700000049575 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.5333220000002257,0.07890899999983958 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.43578600000000733,0.07936900000004243 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.39655599999969127,0.07813699999951496 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,48.13106500000049,1.6652140000005602 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,49.843159000000014,1.6732360000005428 +42106831377/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,48.20314299999973,1.6897209999997358 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,7.933199000000059,0.05400099999951635 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,7.680699000000459,0.05146799999965879 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,25.88512399999945,0.12179400000059104 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,5.911599000000024,0.7293770000005679 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,6.411300000000665,0.7237089999998716 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,4.738895999999841,0.7171279999993203 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,synced,0,24.425828999999794,0.07458300000052986 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,synced,1,23.809148999999707,0.07302900000013324 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,synced,2,28.69963100000041,0.07249900000078924 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,7.586683999999877,0.1540020000002187 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,16.560692999999446,0.15509299999939685 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,7.754966999999851,0.15337999999974272 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,8.356080999999904,0.0981179999998858 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,8.428829999999834,0.0989689999996699 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,9.8845280000005,0.09722599999986414 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.4290080000000671,0.07517300000017713 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.254666000000725,0.07411099999990256 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.270249999999578,0.07334100000025501 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,474.55404499999986,1.2919020000008459 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,479.36679900000127,1.2996939999993629 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,464.99177099999906,1.2857829999993555 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,12.477044999999634,0.06809200000134297 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.961067000000185,0.06811199999901874 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.826175000000148,0.06771200000002864 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,5.220186000000467,0.048122000000148546 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,4.844252000000779,0.04806300000018382 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.912134000000151,0.04751100000066799 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,23.53963400000066,0.09217899999930523 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,24.02071700000124,0.09179800000129035 +42106831377/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,24.620458999999755,0.09167799999886483 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,8.471143000000666,0.13759700000082375 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,9.203843999999663,0.13508299999921292 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,8.600226999998995,0.13570400000025984 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,18.528951999998753,0.07733700000062527 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,18.092325999999957,0.07896900000014284 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,21.850225000000137,0.09167799999886483 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,1.5317419999992126,0.07302999999956228 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.58868799999982,0.07006499999988591 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.437221000000136,0.06855299999915587 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,464.27269999999953,1.6698800000012852 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,486.17444200000136,1.6572009999999864 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,461.84790599999906,1.6650829999998678 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.427746000001207,0.05376000000069325 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,1.166111999998975,0.05383099999926344 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,1.1433589999996912,0.054072000000815024 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,1.1346659999999247,0.2186490000003687 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,1.131930999999895,0.20180400000026566 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,1.1298989999995683,0.20161299999926996 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,4.225211000000854,0.07560399999965739 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,13.013151000001017,0.07498299999861047 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,3.7039069999991625,0.0763440000009723 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,3.449555999999575,0.16556900000068708 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,3.312579999999798,0.1671409999999014 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,6.046578999999838,0.1778279999998631 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,5.18459299999995,0.11067699999875913 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,4.633796000000075,0.10888299999896844 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,4.832925000000614,0.11059600000044156 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.5520400000004884,0.07331100000010338 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.5216449999988981,0.07283900000038557 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.5301569999992353,0.07229900000129419 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,482.76436699999977,1.2993829999995796 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,461.0987690000002,1.2727740000009362 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,479.15155400000003,1.303780000000188 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.3206050000007963,0.07004500000039116 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,1.1029880000005505,0.07047499999862339 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,1.085440999999264,0.0703350000003411 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.400564999999915,0.06924400000025344 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,1.0978399999985413,0.05453200000192737 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,1.064089999999851,0.0538909999995667 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,3.3366839999980584,0.09209799999734969 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,4.263528000003134,0.09143699999913224 +42106831377/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,4.11521399999765,0.09202900000309455 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,3.174841000000015,0.14631999999983236 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,5.573164999997971,0.1551629999994475 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,3.3544309999997495,0.15521300000182237 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,4.909207999997307,0.09309999999823049 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,4.88628400000016,0.092279000000417 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,4.514203999999154,0.09262999999918975 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.5562659999995958,0.08187299999917741 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.515994999997929,0.0800310000013269 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.6042379999998957,0.07778700000199024 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,489.2206069999993,1.6718919999984792 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,459.6593009999997,1.6736950000013167 +42106831377/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,465.5822420000004,1.6620380000022124 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,76.54564000000028,0.06312500000058208 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,62.7330409999995,0.062033999998675426 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,57.61903499999971,0.06119199999739067 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,69.661755000001,8.609388999997464 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,56.33890199999951,7.8973189999996976 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,62.716606000001775,7.617872999999236 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,synced,0,271.12578700000086,0.08586899999863817 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,synced,1,282.3582049999968,0.0842659999980242 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,synced,2,285.3496530000011,0.08511800000269432 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,63.964122000001225,0.1626749999995809 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,66.45995499999844,0.1632050000007439 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,79.50000100000034,0.16358599999875878 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,74.71068000000014,0.10422699999980978 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,83.56730600000083,0.10864399999991292 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,71.36593100000027,0.1079619999982242 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,5.7935200000029,0.07434199999988778 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,11.338027000001603,0.07800800000040908 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,5.569013000000268,0.07737600000109524 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,4673.429402999998,1.2844620000032592 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,4680.1160390000005,1.27316399999836 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,4665.963698,1.2822879999948782 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,59.920309000001,0.06946400000015274 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,69.60558399999718,0.07467200000246521 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,48.57327699999587,0.07197799999994459 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,48.65827499999432,0.05351099999825237 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,47.86482199999591,0.09255899999698158 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,61.691312000002654,0.05593400000361726 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,273.6583989999999,0.10035100000095554 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,264.33035300000483,0.09863799999584444 +42106831377/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,264.72558800000115,0.0970759999981965 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,69.5422980000003,0.1746530000018538 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,81.20219999999972,0.17769700000644661 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,62.19145199999912,0.17561399999976857 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,65.07238900000084,0.08428699999785749 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,63.03689499999746,0.08435699999972712 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,76.48362700000143,0.0868209999971441 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.644932000002882,0.08360600000014529 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,8.074195000001055,0.0861090000034892 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,5.678248000003805,0.08401600000070175 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,4667.408601999996,1.6205300000001444 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,4678.327268000001,1.6450340000010328 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,4678.001427000003,1.6276230000003125 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.680678999997326,0.06340699999418575 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,1.820386999999755,0.0629659999976866 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,2.1794780000054743,0.06213299999944866 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,1.927438999991864,1.1290289999888046 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,1.908491000009235,0.7887870000122348 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.7291209999966668,0.7841389999957755 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,5.405280999999377,0.08528899999510031 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,4.041148999996949,0.08487700000114273 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,4.1106739999959245,0.08426699999836273 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,6.163753000000725,0.17553399999451358 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,6.016029999998864,0.17595499999879394 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,4.107058999987203,0.17144800000824034 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,4.914583000005223,0.11355100000218954 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,4.976095999998506,0.11383099999511614 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,7.61362299999746,0.11818799999309704 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.5993410000082804,0.08055099999182858 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5886350000073435,0.08021000000007916 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.6313499999960186,0.07858800000394695 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,4709.812893000009,1.2828750000044238 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,4644.977142999996,1.304787999994005 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,4619.364067000002,1.2748419999988982 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.7899969999998575,0.07758700000704266 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.7558480000006966,0.07480200000281911 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.7252010000083828,0.07286000000021886 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,2.55562299999292,0.0614730000088457 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,3.0846400000009453,0.06322600001294632 +42106831377/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.740484000009019,0.06155300000682473 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.57391400000779,0.09943999999086373 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,6.31602300000668,0.09943000000203028 +42106831377/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,4.070558000006713,0.0997499999939464 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,4.020180999999866,0.18601000000489876 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,7.187867000000551,0.3400929999916116 +42106831377/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,4.40050400000473,0.18319599999813363 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,4.716041000006953,0.09449299999687355 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,5.048061000008602,0.09552399998938199 +42106831377/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,4.706236000012723,0.09954999999899883 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6381019999971613,0.08527900000626687 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5946460000122897,0.08617999999842141 +42106831377/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.5603049999917857,0.08545899999444373 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,4685.2904969999945,1.6047300000063842 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,4548.036898000006,1.6205249999911757 +42106831377/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,4648.863641999997,1.632512999989558 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,synced,0,11.198237999999947,0.18236300000000938 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,synced,1,3.1536969999999656,0.14277400000003126 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,synced,2,2.2071300000000065,0.11621400000001358 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,synced,0,1.6334419999999454,0.3596669999999449 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,synced,1,1.049859999999967,0.18798099999992246 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,synced,2,1.0358889999999974,0.2505750000000262 +42106831377/candidate,729e69094,list + author,visible author update,100,none,synced,0,8.640753000000018,0.127791000000002 +42106831377/candidate,729e69094,list + author,visible author update,100,none,synced,1,4.941769999999906,0.09016499999995631 +42106831377/candidate,729e69094,list + author,visible author update,100,none,synced,2,4.690185000000042,0.12954400000000987 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,synced,0,7.976929000000041,0.2988870000000361 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,synced,1,7.02025900000001,0.18622800000002826 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,synced,2,3.244081999999935,0.1618420000000924 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.549113999999918,0.13683500000001914 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.572112999999945,0.16366500000003725 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,synced,2,4.852415999999948,0.10638999999991938 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,synced,0,0.9840119999998933,0.12986399999999776 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,synced,1,0.7707330000000638,0.10086100000012266 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,synced,2,0.8192549999998846,0.08190300000001116 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,synced,0,2.6429729999999836,0.0642760000000635 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,synced,1,2.108323000000155,0.06119199999989178 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,synced,2,2.8347499999999854,0.1038260000000264 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,optimistic,0,1.8122599999999238,0.12850200000002587 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,optimistic,1,1.1926529999998365,0.07170700000006036 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,none,optimistic,2,0.9735759999998663,0.108201999999892 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.6419160000000375,0.08289400000012392 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,optimistic,1,6.531807999999955,0.043184000000110245 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,none,optimistic,2,1.3322220000000016,0.042563999999856605 +42106831377/candidate,729e69094,list + author,visible author update,100,none,optimistic,0,3.6927330000000893,0.08724000000006527 +42106831377/candidate,729e69094,list + author,visible author update,100,none,optimistic,1,3.94672300000002,0.08658900000000358 +42106831377/candidate,729e69094,list + author,visible author update,100,none,optimistic,2,2.232858999999962,0.08289400000012392 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,optimistic,0,3.041308000000072,0.16280299999993986 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,optimistic,1,2.8582139999998617,0.14125200000012228 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,none,optimistic,2,2.349653999999873,0.139028000000053 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,3.767563999999993,0.08466699999985394 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,5.241469000000052,0.07988999999997759 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,4.002825999999914,0.07905899999991561 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.6044640000000072,0.07029499999998734 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.6001080000000911,0.06861299999991388 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.6097010000000864,0.06751099999996768 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,optimistic,0,1.870196999999962,0.38002800000003845 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,optimistic,1,1.8523800000000392,0.3587870000001203 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,none,optimistic,2,1.6689360000000306,0.3760730000001331 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,synced,0,2.297717000000148,0.05534199999988232 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,synced,1,1.2024780000001556,0.05558400000018082 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,synced,2,1.5052419999997255,0.048211999999693944 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,synced,0,1.5913900000000467,0.24341499999991356 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,synced,1,0.7500709999999344,0.17703500000015993 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,synced,2,0.8036419999998543,0.1626129999999648 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,synced,0,1.9386990000002697,0.11824599999999919 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,synced,1,2.752986999999848,0.0812210000003688 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,synced,2,1.5722110000001521,0.06295399999999063 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,synced,0,2.361261000000013,0.13899700000001758 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,synced,1,6.864756999999827,0.13384099999984755 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,synced,2,1.8907970000000205,0.1493439999999282 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,3.236771000000317,0.0899850000000697 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,25.72439200000008,0.09182800000007774 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,3.6166079999998146,0.10462699999970937 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.8964799999998831,0.061982000000170956 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.3961519999998018,0.060561000000234344 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.5164520000002994,0.06430600000021514 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,synced,0,1.7198820000003252,0.05032500000015716 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,synced,1,2.251056999999946,0.05561299999999392 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,synced,2,1.5424669999997604,0.04888299999993251 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.6797459999997955,0.052788999999847874 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.8592650000000503,0.05315000000018699 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.6163520000000062,0.05339899999989939 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.6117839999997159,0.04138200000033976 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.7552300000002106,0.04048099999999977 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.7081590000002507,0.0415130000001227 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,optimistic,0,2.8006789999999455,0.07764700000006997 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,optimistic,1,1.6102380000002086,0.07569299999977375 +42106831377/candidate,729e69094,list + author,visible author update,100,manual,optimistic,2,1.5253520000001117,0.0759739999998601 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.9753539999996974,0.13051500000028682 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.857108000000153,0.13047499999993306 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,100,manual,optimistic,2,2.6006900000002133,0.13096500000028755 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,2.780909000000065,0.0771959999997307 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,4.428853999999774,0.08524800000031973 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,4.044618999999784,0.0759040000002642 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.44929199999978664,0.06398600000011356 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.38955200000009427,0.06317399999988993 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.361721000000216,0.06275400000004083 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,optimistic,0,1.2333239999998113,0.3457069999999476 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,optimistic,1,1.3730139999997846,0.36086900000009337 +42106831377/candidate,729e69094,open issues + documents,visible document update,100,manual,optimistic,2,1.3009649999999056,0.3603290000000925 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,synced,0,15.275364999999965,0.037765999999919586 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,synced,1,4.707350000000133,0.03788600000007136 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,synced,2,5.60628399999996,0.03861800000004223 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,synced,0,4.68793100000039,0.7167819999999665 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,synced,1,11.166250000000218,0.7376710000003186 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,synced,2,4.537285999999767,0.6983900000000176 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,synced,0,23.338767999999618,0.06051500000012311 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,synced,1,26.12337400000024,0.059614000000237866 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,synced,2,31.159766000000218,0.05738100000007762 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,synced,0,8.978421000000253,0.1370160000001306 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,synced,1,6.765867000000071,0.1346730000000207 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,synced,2,6.4862960000000385,0.13286999999991167 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,7.319908999999825,0.08560399999987567 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,18.130404999999882,0.08559500000001208 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.154022000000168,0.08504399999947054 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,synced,0,1.073421000000053,0.05937400000038906 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,synced,1,1.5411770000000615,0.15466300000025512 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,synced,2,1.078378999999586,0.06062500000007276 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,synced,0,11.668939000000137,0.04698400000052061 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,synced,1,11.117839999999887,0.046903999999813095 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,synced,2,10.537104999999428,0.04715399999986403 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,optimistic,0,4.56888600000002,0.050590000000738655 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,optimistic,1,4.332413000000088,0.05032900000060181 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,none,optimistic,2,4.412540000000263,0.05156100000021979 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,optimistic,0,4.383082999999715,0.035996999999952095 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,optimistic,1,4.382362000000285,0.03419399999984307 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,none,optimistic,2,4.564104000000043,0.0343219999995199 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,optimistic,0,15.937597000000096,0.07268900000053691 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,optimistic,1,14.5541860000003,0.10339600000042992 +42106831377/candidate,729e69094,list + author,visible author update,1000,none,optimistic,2,22.82788900000014,0.07952000000022963 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,optimistic,0,14.805505000000267,0.13456200000018725 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,optimistic,1,19.699913999999808,0.12958500000058848 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,none,optimistic,2,17.413125999999465,0.13637500000004366 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,17.664974000000257,0.077436000000489 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,19.02948699999979,0.08143199999994977 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,16.935918999999558,0.07617499999923893 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.9354360000006636,0.0706159999999727 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.9213950000003024,0.06954399999995076 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.9937740000004851,0.0724289999998291 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,optimistic,0,13.324928,0.3501859999996668 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,optimistic,1,14.450511000000006,0.3533610000004046 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,none,optimistic,2,11.641806999999972,0.3638470000005327 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,synced,0,1.2731149999999616,0.043655999999828055 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,synced,1,0.837348999999449,0.0449479999997493 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,synced,2,0.8344850000003134,0.043756000000030326 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.7894470000001093,0.20932499999980791 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.8620160000000396,0.19388199999957578 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.8465830000004644,0.1870810000000347 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,synced,0,1.8527359999998225,0.062343000000510074 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,synced,1,1.7079690000000483,0.06019100000048638 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,synced,2,1.7667869999995673,0.061882999999397725 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,synced,0,4.774099000000206,0.1474420000004102 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,synced,1,2.3009899999997288,0.14492799999970885 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,synced,2,2.2094420000003083,0.14555899999959365 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.6107199999996737,0.09831800000029034 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.103896999999961,0.10129299999971408 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.160932999999204,0.09777699999995093 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.49612600000000384,0.06798299999991286 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.3975080000000162,0.06649000000015803 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.4570080000003145,0.06656000000020867 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,synced,0,11.786314999999377,0.05024600000069768 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,synced,1,11.102657000000363,0.049964999999247084 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,synced,2,13.657748000000538,0.05421200000000681 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.2405959999996412,0.05759699999998702 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.8006139999997686,0.05730600000060804 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.9563879999996061,0.055953999999474036 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.0567790000004607,0.04349499999989348 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.8236389999992753,0.04279399999995803 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7608739999996033,0.04255399999965448 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,optimistic,0,1.7372829999994792,0.07765699999981734 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,optimistic,1,1.7758309999999256,0.07507299999997485 +42106831377/candidate,729e69094,list + author,visible author update,1000,manual,optimistic,2,12.08713699999953,0.07447199999933218 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.359838999999738,0.1789490000001024 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.37557199999992,0.1365060000007361 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.119177000000491,0.13496300000042538 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.2048290000002453,0.0931799999998475 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.2206829999995534,0.08282499999950232 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.1007330000002185,0.08371600000009494 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.44932599999992817,0.07158700000036333 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4601220000004105,0.07051600000067992 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.4846789999992325,0.0703350000003411 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,optimistic,0,20.912358000000495,0.3417039999994813 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,optimistic,1,15.103211999999985,0.3518290000001798 +42106831377/candidate,729e69094,open issues + documents,visible document update,1000,manual,optimistic,2,13.542194999999992,0.355583999999908 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,synced,0,66.72546199999942,0.04442699999981414 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,synced,1,74.47060899999997,0.04695099999935337 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,synced,2,73.7252380000009,0.04734199999984412 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,synced,0,71.72668299999896,8.107802999998967 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,synced,1,70.68912300000011,7.632298000000446 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,synced,2,70.23249600000054,7.7850670000007085 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,synced,0,199.07845700000144,0.06482700000015029 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,synced,1,185.73112700000092,0.06650000000081491 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,synced,2,222.73359900000105,0.09145700000044599 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,synced,0,58.55137800000011,0.1411630000002333 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,synced,1,67.24752500000068,0.13873899999998685 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,synced,2,64.48681300000135,0.13828800000010233 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,86.6172719999995,0.0924090000007709 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,74.74439799999891,0.09117700000024342 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,80.30802399999993,0.09235900000021502 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,synced,0,7.260308000000805,0.07158799999888288 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,synced,1,6.530058999998801,0.06728100000145787 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,synced,2,5.454893000000084,0.0695850000010978 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,synced,0,136.62513200000103,0.05031599999711034 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,synced,1,144.51806200000283,0.06375599999955739 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,synced,2,149.26312699999835,0.05233899999802816 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,optimistic,0,74.78108399999837,0.05858799999987241 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,optimistic,1,67.05446499999744,0.057827000000543194 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,none,optimistic,2,65.47433900000033,0.0572360000005574 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,optimistic,0,73.64396399999896,0.0398399999976391 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,optimistic,1,65.09966499999791,0.06103199999779463 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,none,optimistic,2,61.40924599999926,0.03760600000168779 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,optimistic,0,216.97601099999883,0.08121200000095996 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,optimistic,1,193.5165100000013,0.08138200000030338 +42106831377/candidate,729e69094,list + author,visible author update,10000,none,optimistic,2,192.68312700000024,0.07975900000019465 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,optimistic,0,80.33281799999895,0.15170800000123563 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,optimistic,1,67.4927110000026,0.14979499999753898 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,none,optimistic,2,74.06407200000103,0.158768000001146 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,66.38836100000117,0.07955999999830965 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,88.74555700000201,0.08698100000037812 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,66.13237600000139,0.07981999999901745 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,5.75170799999978,0.07566299999962212 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,7.455720999998448,0.0784879999991972 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,4.892026000001351,0.07518299999719602 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,optimistic,0,148.86954900000273,0.3683640000017476 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,optimistic,1,149.8219620000018,0.356937000000471 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,none,optimistic,2,124.75498099999822,0.3550040000009176 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,synced,0,1.8168420000001788,0.04419600000255741 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,synced,1,2.3552420000014536,0.08833299999969313 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,synced,2,1.8333760000023176,0.04822199999762233 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,synced,0,1.998554999998305,0.7777090000017779 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,synced,1,2.427589999999327,0.7631670000009763 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.4235499999995227,0.7648000000008324 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,synced,0,3.9471249999987776,0.06648000000132015 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,synced,1,4.661317999998573,0.0678619999998773 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,synced,2,2.457254999997531,0.06761200000255485 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,synced,0,4.524442999998428,0.15314000000216765 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,synced,1,2.904646999999386,0.15103699999963283 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,synced,2,2.976646000002802,0.1488839999983611 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,3.8055620000013732,0.10299500000110129 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,5.898498999998992,0.10342599999785307 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,3.80467100000169,0.10162299999865354 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.664228000001458,0.06976500000018859 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5578580000001239,0.07106700000076671 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.6571989999974903,0.07696600000053877 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,synced,0,136.1121920000005,0.05260899999848334 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,synced,1,123.73280800000066,0.0507660000002943 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,synced,2,137.5590970000012,0.0619829999996 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.903521999996883,0.056534999999712454 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.4298300000009476,0.05658499999844935 +42106831377/candidate,729e69094,list: newest 50 open,visible issue update,10000,manual,optimistic,2,18.73158500000136,0.05741699999998673 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,2.6120169999994687,0.046559999995224643 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,1.408188000001246,0.04656999999861 +42106831377/candidate,729e69094,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.4263449999998556,0.04542899999796646 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,optimistic,0,22.0953640000007,0.07794700000522425 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,optimistic,1,2.430335000004561,0.0759440000038012 +42106831377/candidate,729e69094,list + author,visible author update,10000,manual,optimistic,2,2.2971639999959734,0.07655499999964377 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.059570999997959,0.15824799999973038 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,optimistic,1,4.981419999996433,0.16603999999642838 +42106831377/candidate,729e69094,list + comment count,visible issue comment insert,10000,manual,optimistic,2,3.126970999997866,0.16318500000488712 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.8628979999994044,0.08964500000001863 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,3.70920599999954,0.08514799999829847 +42106831377/candidate,729e69094,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,6.643998999999894,0.0888929999928223 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.8214950000037788,0.15160800000012387 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.5692350000026636,0.0812420000002021 +42106831377/candidate,729e69094,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.5458909999942989,0.08058099999470869 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,0,134.2546300000031,0.35645600000134436 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,1,123.0447159999967,0.3568169999998645 +42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,2,243.50390499999776,0.3487139999997453 diff --git a/scripts/bench/incremental-update.ts b/scripts/bench/incremental-update.ts index 2614547ac2..4a7f5d573c 100644 --- a/scripts/bench/incremental-update.ts +++ b/scripts/bench/incremental-update.ts @@ -164,6 +164,7 @@ type WriteResult = void | { cleanup: WriteCleanup } type QueryCase = { name: string scenario: string + withDocuments?: boolean createQuery: (fixture: Fixture) => BenchmarkCollection write: ( fixture: Fixture, @@ -338,6 +339,7 @@ const queryCases: Array = [ { name: `open issues + documents`, scenario: `visible document update`, + withDocuments: true, // Every open issue with its whole document and no limit, so each output row // carries a nested tree into result finalization. createQuery: ({ issues, documents }) => @@ -435,7 +437,7 @@ async function runCase( mutationMode: MutationMode, options: BenchmarkRunOptions, ): Promise { - const fixture = createFixture(options) + const fixture = createFixture(options, queryCase.withDocuments ?? false) const query = queryCase.createQuery(fixture) const coldStart = performance.now() @@ -531,7 +533,10 @@ function createManualCollection( }) } -function createFixture(options: BenchmarkRunOptions): Fixture { +function createFixture( + options: BenchmarkRunOptions, + withDocuments: boolean, +): Fixture { const random = seededRandom(options.seed) const usersData: Array = [] for (let id = 1; id <= options.userCount; id++) { @@ -573,12 +578,16 @@ function createFixture(options: BenchmarkRunOptions): Fixture { }) } - const documentsData: Array = issuesData.map((issue) => ({ - id: issue.id, - issueId: issue.id, - blocks: createDocumentBlocks(issue.id, random), - updateTick: 0, - })) + // Unrelated rich-text trees can trigger GC during another query's hydration. + // Keep the complete document workload in the case that actually reads it. + const documentsData: Array = withDocuments + ? issuesData.map((issue) => ({ + id: issue.id, + issueId: issue.id, + blocks: createDocumentBlocks(issue.id, random), + updateTick: 0, + })) + : [] const fixture = { seed: options.seed, diff --git a/scripts/bench/query-fixture-isolation-2026-11-05.csv b/scripts/bench/query-fixture-isolation-2026-11-05.csv new file mode 100644 index 0000000000..07133eec5b --- /dev/null +++ b/scripts/bench/query-fixture-isolation-2026-11-05.csv @@ -0,0 +1,505 @@ +run,db_source,query,scenario,scale,source_index_mode,mutation_mode,repetition,cold_hydrate_ms,median_write_ms +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,6.701416999999992,0.08720800000003237 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,1.725750000000005,0.05841600000002245 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,0.9095000000000368,0.03404199999999946 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,0.8673750000000382,0.12345799999997098 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,0.6548750000000041,0.09091599999999289 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,0.6468339999999557,0.08004200000004857 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,synced,0,5.015334000000053,0.055833000000006905 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,synced,1,2.961332999999968,0.04337500000002592 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,synced,2,2.9861660000000256,0.039583000000050106 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,5.915374999999983,0.0793329999999628 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,2.713333999999975,0.07229200000000446 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,2.700458000000026,0.060416000000032 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,5.002125000000035,0.04891699999996035 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,3.151374999999973,0.05083400000000893 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,3.2722499999999854,0.055165999999985615 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,0.44720899999998664,0.0352500000000191 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.2600410000000011,0.03491700000000719 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.3522500000000264,0.034166999999968084 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,22.502834000000007,0.6132920000000013 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,22.90599999999995,0.5625410000000102 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,19.41979200000003,0.5464580000000296 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,0.7370409999999765,0.031957999999917774 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,0.6073750000000473,0.03045800000006693 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,0.5392499999999245,0.028709000000048945 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.5665000000000191,0.023291999999969448 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.5385420000000067,0.0217089999999871 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.5284580000000005,0.021208999999998923 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,1.953416999999945,0.034832999999935055 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,2.288958999999977,0.034416000000078384 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,1.9586669999999913,0.03437500000006821 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,1.8178749999999582,0.047584000000028936 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,1.7097499999999854,0.05349999999998545 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,1.9202089999999998,0.04808300000001964 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.447334000000069,0.030624999999986358 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,2.5387080000000424,0.03012499999999818 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,2.2027919999999312,0.028999999999996362 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.3484999999999445,0.03345799999999599 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.6495830000000069,0.02800000000002001 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.3305000000000291,0.025541999999973086 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,22.062875000000076,0.81574999999998 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,30.167625000000044,0.7260000000001128 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,18.926375000000007,0.6792090000001281 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,1.328125,0.030917000000044936 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,0.5934580000000551,0.02920799999992596 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,0.5347919999999249,0.026791999999886684 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,0.5137079999999514,0.08620900000005349 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,0.5476249999999254,0.07441599999992832 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,0.4375830000001315,0.07229199999983393 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,synced,0,1.540000000000191,0.03329200000007404 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,synced,1,1.6123339999999189,0.03341699999987213 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,synced,2,2.048583000000008,0.03212499999995089 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,1.3676660000000993,0.05716600000005201 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,1.3132500000001528,0.05633299999999508 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,1.3172500000000582,0.056040999999822816 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,1.7583750000001146,0.03791700000010678 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.736167000000023,0.039290999999821 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.9015830000000733,0.040334000000029846 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.2626669999999649,0.031791999999995824 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.23499999999989996,0.029541000000108397 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.203125,0.028542000000015832 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,20.315333999999893,0.527667000000065 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,19.824540999999954,0.5408749999999145 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,22.255249999999933,0.5680419999998776 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,2.7945830000003298,0.02804199999991397 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.4780829999999696,0.027875000000221917 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.5081669999999576,0.027875000000221917 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.478458000000046,0.02483299999994415 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.6264999999998508,0.023916000000099302 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.49366600000030303,0.02437499999996362 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,2.1677919999997357,0.03658399999994799 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,1.942833999999948,0.037291000000095664 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,1.7500419999996666,0.03712499999983265 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.825333000000228,0.0494579999999587 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.5204579999999623,0.0492909999998119 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.642041000000063,0.04908400000022084 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,2.2225829999997586,0.029250000000047294 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,2.232250000000022,0.03195899999991525 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.9057919999995647,0.030499999999847205 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.2262500000001637,0.024874999999610736 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.19179199999962293,0.025375000000167347 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.19179200000007768,0.024875000000065484 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,21.759250000000065,0.7146250000000691 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,20.191959000000224,0.7261669999998048 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,21.795082999999977,0.7022079999997004 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,2.964375000000018,0.02412499999991269 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,2.586749999999938,0.02358300000014424 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,2.3741250000002765,0.023333000000093307 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,2.27441699999963,0.41429199999993216 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,2.8347499999999854,0.3975420000001577 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,2.2414159999998446,0.42787500000031287 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,synced,0,11.753791999999976,0.03250000000025466 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,synced,1,11.927958000000217,0.0314170000001468 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,synced,2,14.100166000000172,0.03283300000020972 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,4.2621250000001965,0.05670899999995527 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,3.5901669999998376,0.05441599999994651 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,3.7360829999997804,0.05366599999979371 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,5.966042000000016,0.037624999999934516 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,4.103625000000193,0.037083000000166066 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,4.169750000000022,0.03541700000005221 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.5169169999999212,0.028083000000151515 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.4737920000002305,0.030125000000225555 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.484375,0.0284590000001117 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,222.29337499999974,0.5450409999998556 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,201.70299999999997,0.5431669999998121 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,234.354417,0.5832919999998012 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,2.598500000000058,0.028208000000631728 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,2.6571670000002996,0.035750000000007276 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,2.644749999999476,0.028374999999869033 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,2.996291999999812,0.02275000000008731 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,3.318583000000217,0.022249999999985448 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,2.813833999999588,0.026834000000235392 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,13.824999999999818,0.04462500000045111 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,16.674417000000176,0.04562499999974534 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,14.060707999999977,0.038540999999895575 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,4.584000000000742,0.046291999999994005 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,4.148916999999528,0.04770900000039546 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,4.069292000000132,0.04579199999989214 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,4.468292000000474,0.028749999999490683 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,5.121417000000292,0.028624999999919964 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,4.361665999999786,0.027791999999863037 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.7541249999994761,0.024957999999969616 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.7787079999998241,0.026749999999992724 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.5294999999996435,0.027833000000100583 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,210.9602500000001,0.7376659999999902 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,217.9325829999998,0.7260420000002341 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,210.28037499999937,0.759541000000354 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,0.7070000000003347,0.025834000000031665 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,0.5504579999997077,0.025958000000173342 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,0.5496249999996508,0.02545800000007148 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.5742909999999029,0.10362499999973807 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.5412500000002183,0.09799999999995634 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.6404160000001866,0.09695800000008603 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,1.6069589999997334,0.03304099999968457 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,1.7625410000000556,0.032124999999723514 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,1.7244590000000244,0.03254200000083074 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,1.6756249999998545,0.0555000000003929 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,1.7891659999995682,0.058374999999614374 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,1.471958000000086,0.05304199999955017 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,1.99737499999992,0.03745799999978772 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.983249999999316,0.040208000000347965 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,2.0806250000005093,0.039207999999234744 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.3038750000005166,0.029125000000021828 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.2490830000006099,0.03012499999931606 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.23633299999983137,0.030165999999553605 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,202.26229199999943,0.5496659999998883 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,200.05854200000067,0.5511659999992844 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,204.77562500000022,0.6084590000000389 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.6608750000004875,0.026375000000371074 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.6886670000003505,0.026874999999563443 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.5655000000006112,0.027791999999863037 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.6090839999997115,0.02437499999996362 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.6757920000000013,0.023708000000624452 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.550083000000086,0.022875000000567525 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,1.6127089999999953,0.034082999999554886 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.412000000000262,0.03375000000050932 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,1.4979160000002594,0.033250000000407454 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.5816249999998035,0.04699999999957072 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.5750420000003942,0.04791699999987031 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.8193750000000364,0.04770800000005693 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,1.9249579999996058,0.030542000000423286 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,2.219000000000051,0.03054100000008475 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,2.1457909999999174,0.03033400000003894 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.24041699999997945,0.025958999999602383 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.24566700000013952,0.025499999999738066 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.3734580000000278,0.026332999999794993 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,206.81362500000068,0.6922089999998207 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,194.42799999999988,0.6877080000003843 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,212.08608299999923,0.7769159999988915 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,31.770166999998764,0.027334000000337255 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,25.017791999998735,0.02599999999983993 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,28.202916000000187,0.025958000000173342 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,26.198041000001467,4.417790999999852 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,27.211083000000144,4.112208000000464 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,29.775125000000116,4.72466699999859 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,synced,0,145.76575000000048,0.03575000000091677 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,synced,1,132.864458,0.037333000000217 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,synced,2,128.97875000000022,0.03333300000122108 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,29.66412500000115,0.052958000000217 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,29.848291999998764,0.05320900000151596 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,37.940292000001136,0.051332999999431195 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,31.110791999999492,0.035874999999577994 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,33.103250000000116,0.03562500000043656 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,31.925124999999753,0.03783300000031886 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,2.2082080000000133,0.02974999999969441 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.2160000000003492,0.03141699999832781 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,2.1784579999985,0.02904100000159815 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,2177.923334000001,0.6734170000017912 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,2032.2476669999996,0.9651670000002923 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,2031.7561669999996,0.6268329999984417 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,43.587500000001455,0.046875 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,34.77179099999921,0.033250000000407454 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,31.122332999999344,0.03250000000116415 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,30.795458000000508,0.024375000000873115 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,28.346957999998267,0.023249999998370185 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,29.12858299999789,0.023375000000669388 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,135.1994169999998,0.03816699999879347 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,131.7744160000002,0.037000000000261934 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,118.76304200000232,0.03712499999892316 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,30.706374999997934,0.06275000000096043 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,30.49066699999821,0.05729100000098697 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,29.333999999998923,0.05762499999764259 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,33.783542000001034,0.032959000000118976 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,38.862624999997934,0.03370799999902374 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,31.445707999999286,0.031124999997700797 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,2.5763330000008864,0.028957999998965533 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,3.546042000001762,0.029624999999214197 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.729708999999275,0.029166000000259373 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,2157.172875,0.749707999999373 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,2060.355625,0.6974169999994047 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,2031.218334000001,0.7204170000004524 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,1.4098749999975553,0.03049999999711872 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,0.9011659999996482,0.029708000001846813 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,1.0435410000027332,0.03033300000242889 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,0.9786659999990661,0.36329200000182027 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.8731670000015583,0.3204169999989972 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.1919580000030692,0.3442079999986163 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,2.0677920000016456,0.03454200000123819 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,1.9689580000012938,0.03408299999864539 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,2.1135829999984708,0.03449999999793363 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,2.024916000002122,0.05774999999994179 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,1.9179579999981797,0.06241600000066683 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,2.022332999997161,0.06041700000059791 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,7.856208000001061,0.040958000001410255 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,6.624832999998034,0.04341700000077253 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,2.57445799999914,0.04291600000215112 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.39587500000197906,0.03441699999893899 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.4026659999981348,0.03679099999862956 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.3401659999981348,0.03329200000007404 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,2046.8623750000006,0.5298340000008466 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,2055.2518750000017,0.6748339999976452 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,2058.203708000001,0.5679170000003069 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.0328749999971478,0.028124999997089617 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.8919999999998254,0.02708399999391986 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.8601669999989099,0.02637499999400461 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.8323329999984708,0.024459000000206288 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.9392919999954756,0.031957999999576714 +local-node24.8/query-fixtures/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.030333000002429,0.024832999995851424 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,2.1482919999980368,0.03425000000424916 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,1.918666999998095,0.033750000002328306 +local-node24.8/query-fixtures/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,2.0866670000032173,0.03395799999998417 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.955207999999402,0.05774999999994179 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.8244579999955022,0.059166999999433756 +local-node24.8/query-fixtures/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,2.3168749999967986,0.05920799999876181 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.3931250000023283,0.031083999994734768 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,2.394624999993539,0.031374999998661224 +local-node24.8/query-fixtures/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,2.4535829999949783,0.030249999996158294 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.3399169999975129,0.02733299999817973 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.4930000000022119,0.03125 +local-node24.8/query-fixtures/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.36170799999672454,0.03087500000401633 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,2104.327833000003,0.923917000000074 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,2065.8627500000002,0.7395000000033178 +local-node24.8/query-fixtures/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,2015.5080420000013,0.7420410000049742 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,synced,0,5.400374999999997,0.04620800000000713 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,synced,1,1.393540999999999,0.037833999999975276 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,synced,2,0.7487910000000397,0.025582999999983258 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,synced,0,1.4286670000000186,0.11745799999999917 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,synced,1,0.5155409999999847,0.08537499999999909 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,synced,2,0.5896250000000123,0.08658299999996188 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,synced,0,4.782459000000017,0.05870799999996734 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,synced,1,2.56329199999999,0.043250000000000455 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,synced,2,1.5141249999999786,0.03970800000001873 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,synced,0,4.626874999999984,0.0857499999999618 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,synced,1,2.484874999999988,0.06604199999998173 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,synced,2,1.8419589999999744,0.053625000000010914 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,synced,0,4.596167000000037,0.04366599999997334 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,synced,1,2.790416999999991,0.049167000000011285 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,synced,2,2.559791999999959,0.04762500000003911 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,synced,0,0.5057080000000269,0.03149999999999409 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,synced,1,0.3128340000000094,0.032417000000009466 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,synced,2,0.41662500000001046,0.030250000000023647 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,synced,0,1.0526249999999777,0.028999999999996362 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,synced,1,0.9731249999999818,0.02575000000001637 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,synced,2,1.0523749999999836,0.026250000000004547 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,optimistic,0,0.44754199999999855,0.026666999999974905 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,optimistic,1,0.44708300000002055,0.023374999999987267 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,none,optimistic,2,1.2978339999999662,0.02250000000003638 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,optimistic,0,0.4202910000000202,0.01845900000000711 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.38287500000001273,0.017125000000078217 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.48529099999996106,0.01675000000000182 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,optimistic,0,1.2017499999999472,0.033542000000011285 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,optimistic,1,1.2169999999999845,0.032166999999958534 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,none,optimistic,2,1.4245829999999842,0.030374999999935426 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,optimistic,0,1.2555419999999913,0.04470800000001418 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,optimistic,1,1.420541999999955,0.05450000000007549 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,none,optimistic,2,2.3382500000000164,0.04137500000001637 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,2.309082999999987,0.03583299999991141 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,3.792416000000003,0.028833000000076936 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,2.172458000000006,0.026542000000063126 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.3003330000000233,0.02283399999998892 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,optimistic,1,1.3834590000000162,0.022375000000010914 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.2961249999999609,0.023250000000075488 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,optimistic,0,0.9106669999999895,0.1566250000000764 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,optimistic,1,0.8588330000000042,0.161583999999948 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,none,optimistic,2,0.7973749999999882,0.15991599999995287 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,synced,0,1.1512920000000122,0.025666999999998552 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,synced,1,0.5355829999999742,0.02345900000000256 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,synced,2,0.473165999999992,0.02133400000002439 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,synced,0,0.41583299999990686,0.08741599999996197 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,synced,1,0.3368749999999636,0.07074999999997544 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,synced,2,0.34770899999989524,0.06825000000003456 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,synced,0,0.9570420000000013,0.028040999999916494 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,synced,1,1.0238749999999754,0.027708999999958905 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,synced,2,0.8345410000000584,0.03437500000006821 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,synced,0,1.1284999999999172,0.04695800000001782 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,synced,1,0.9715419999999995,0.04574999999999818 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,synced,2,0.9597079999999778,0.05274999999994634 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,2.499541000000022,0.042374999999992724 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,1.6983339999999316,0.03395899999998164 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,1.4321669999999358,0.036166999999977634 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.3193340000000262,0.03166699999997036 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.20612499999992906,0.027540999999928317 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.16516699999999673,0.0257090000000062 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,synced,0,0.9494170000000395,0.02358399999991434 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,synced,1,0.7283750000000282,0.023458000000005086 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,synced,2,0.9412080000000742,0.023000000000024556 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.37316600000008293,0.022334000000000742 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.3682499999999891,0.021292000000016742 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.4465420000000222,0.020957999999950516 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.34054200000002766,0.01766700000007404 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.4657080000000633,0.01716600000008839 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.5599579999999378,0.017749999999978172 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,optimistic,0,0.9293340000000399,0.038082999999915046 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,optimistic,1,1.0696660000000975,0.03712499999983265 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,100,manual,optimistic,2,1.3482500000000073,0.038291999999955806 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.369416000000001,0.058041000000002896 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.346667000000025,0.06179199999996854 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.4409159999997883,0.04824999999982538 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,1.964458999999806,0.03150000000005093 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,2.025624999999991,0.032709000000068045 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,1.7149580000000242,0.029499999999870852 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.22400000000016007,0.023582999999916865 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.20612500000015643,0.023124999999936335 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.19033300000000963,0.021875000000136424 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,optimistic,0,0.7512910000000375,0.1628330000000915 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,optimistic,1,0.7584160000001248,0.16570799999999508 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,100,manual,optimistic,2,0.7104170000000067,0.16883400000006077 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,synced,0,2.944874999999911,0.019416000000092026 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,synced,1,2.5001669999999194,0.01812500000005457 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,synced,2,3.2516669999999976,0.025125000000116415 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,synced,0,3.870666999999912,0.42658300000016425 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,synced,1,2.2023329999999532,0.42391699999984667 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,synced,2,2.10349999999994,0.4207499999999982 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,synced,0,7.810625000000073,0.02633400000013353 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,synced,1,7.615290999999843,0.025333000000046013 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,synced,2,7.481291000000056,0.025374999999939973 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,synced,0,2.9046659999999065,0.04383299999994961 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,synced,1,2.9472079999998186,0.04254199999991215 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,synced,2,2.8155409999999392,0.04137500000001637 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,3.440417000000025,0.02887500000019827 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,3.3400000000001455,0.029082999999900494 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,4.862249999999904,0.028750000000172804 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.45783400000004804,0.02433300000006966 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.4350839999999607,0.02500000000009095 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.4611250000000382,0.024750000000040018 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,synced,0,6.642667000000074,0.023042000000032203 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,synced,1,5.925666000000092,0.023374999999987267 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,synced,2,5.899457999999868,0.022582999999940512 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,optimistic,0,2.2461249999998927,0.02179200000000492 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,optimistic,1,2.3769170000000486,0.020541999999977634 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,none,optimistic,2,2.091583000000128,0.020166999999901236 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,optimistic,0,2.04424999999992,0.01445800000010422 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,optimistic,1,2.063417000000072,0.013999999999896318 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,none,optimistic,2,2.3117919999999685,0.013832999999976892 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,optimistic,0,9.63733400000001,0.027166000000079293 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,optimistic,1,8.174875000000156,0.028416999999990367 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,none,optimistic,2,8.098999999999933,0.0281249999998181 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,optimistic,0,4.117291999999907,0.04104200000006131 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,optimistic,1,3.547249999999849,0.03929100000004837 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,none,optimistic,2,3.3429590000000644,0.03916699999990669 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,3.721083000000135,0.024625000000014552 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,3.5048750000000837,0.024458000000095126 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,4.485999999999876,0.025791000000026543 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.5105409999998756,0.023083000000042375 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.5682910000000447,0.02254100000004655 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.47429200000010496,0.02254100000004655 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,optimistic,0,6.104207999999971,0.16245900000012625 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,optimistic,1,10.59941600000002,0.16487499999993815 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,none,optimistic,2,6.135416999999961,0.16483299999981682 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,synced,0,0.4318750000002183,0.0183750000001055 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,synced,1,0.4187090000000353,0.018708000000060565 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,synced,2,0.3771670000000995,0.01812500000005457 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.34270799999967494,0.08954200000016499 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.343333000000257,0.08249999999998181 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.31004200000006676,0.08295900000030088 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,synced,0,1.8502090000001772,0.024790999999822816 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,synced,1,1.0156670000001213,0.02454200000011042 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,synced,2,0.8179159999999683,0.025166999999783002 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,synced,0,1.1563329999999041,0.04562499999974534 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,synced,1,1.3227079999996931,0.04733399999986432 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,synced,2,1.1327079999996386,0.04500000000007276 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,1.4838329999997768,0.03370800000038798 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,1.5360000000000582,0.03179199999976845 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,1.4272080000000642,0.03212500000017826 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.23795800000016243,0.02491699999973207 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.2192920000002232,0.0255419999998594 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.20804199999975026,0.027207999999973254 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,synced,0,5.656708999999864,0.02216699999962657 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,synced,1,5.450457999999799,0.021832999999787717 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,synced,2,5.907750000000306,0.022124999999959982 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.3985419999999067,0.020207999999911408 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.4322500000002947,0.020042000000103144 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.3765410000000884,0.020042000000103144 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.3991249999999127,0.016292000000248663 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.4012920000000122,0.016040999999859196 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.37370899999996254,0.016084000000319065 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,optimistic,0,0.9478330000001733,0.02562500000021828 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,optimistic,1,0.8658329999998386,0.025916999999935797 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,1000,manual,optimistic,2,2.3975420000001577,0.026624999999967258 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.114875000000211,0.04312500000014552 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.0924999999997453,0.042374999999992724 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.0417499999998654,0.04054099999984828 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,2.4172920000000886,0.028542000000015832 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,1.7621250000001965,0.02704200000016499 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,1.4848749999996471,0.027791999999863037 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.25025000000005093,0.022290999999768246 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.19949999999971624,0.022333000000344327 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.19312500000023647,0.022665999999844644 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,optimistic,0,5.1365420000001905,0.15066600000000108 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,optimistic,1,8.370625000000018,0.15399999999999636 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,1000,manual,optimistic,2,5.541000000000167,0.15229200000021592 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,synced,0,29.13700000000017,0.019499999999879947 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,synced,1,29.331208999999944,0.020292000000154076 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,synced,2,28.17904200000021,0.020375000000058208 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,synced,0,35.574249999999665,4.175582999999733 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,synced,1,26.585042000000158,4.525916999999936 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,synced,2,28.986916999999266,4.038749999999709 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,synced,0,97.71075000000019,0.027417000000241387 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,synced,1,94.45870800000012,0.02783400000043912 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,synced,2,94.11912500000017,0.0273750000005748 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,synced,0,35.47983299999942,0.046332999999322055 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,synced,1,40.554291000000376,0.045208000000457105 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,synced,2,35.886333999999806,0.054165999999895575 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,40.38850000000002,0.032374999999774445 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,30.64404099999956,0.030625000000327418 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,29.604959000000235,0.030209000000468222 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,synced,0,1.9598340000002281,0.027291999999761174 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,synced,1,2.0195409999996627,0.024875000000065484 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,synced,2,1.9405000000006112,0.02599999999983993 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,synced,0,71.25020800000038,0.02437499999996362 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,synced,1,77.63012500000059,0.024875000000065484 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,synced,2,63.26641699999982,0.02404099999967002 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,optimistic,0,30.443624999999884,0.022958999999900698 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,optimistic,1,29.203333000000384,0.023000000000138243 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,none,optimistic,2,28.07849999999962,0.022458999999798834 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,optimistic,0,31.655625000000327,0.016125000000101863 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,optimistic,1,33.68287499999951,0.015750000000480213 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,none,optimistic,2,28.992165999999997,0.015582999999423919 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,optimistic,0,95,0.029666999999790278 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,optimistic,1,102.36391700000058,0.031208999999762455 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,none,optimistic,2,89.40654199999972,0.029042000000117696 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,optimistic,0,29.94537499999933,0.045750000000225555 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,optimistic,1,29.618375000000015,0.04537499999969441 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,none,optimistic,2,30.482167000000118,0.04579199999989214 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,33.231416999999965,0.03245900000001711 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,33.56962500000009,0.026415999999699125 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,32.99491600000056,0.025459000000410015 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,2.2362920000005033,0.023250000000189175 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,3.5563750000001164,0.025292000000263215 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,2.6537500000004,0.023959000000104425 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,optimistic,0,73.92504099999951,0.14950000000044383 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,optimistic,1,67.97916700000042,0.1554999999998472 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,none,optimistic,2,62.56720800000039,0.22320800000125018 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,synced,0,0.9164579999996931,0.020958999999493244 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,synced,1,0.7746250000000146,0.02141699999992852 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,synced,2,0.8370420000010199,0.020709000000351807 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,synced,0,1.2099160000016127,0.4212499999994179 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,synced,1,0.7462090000008175,0.3413330000003043 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,synced,2,0.7120410000006814,0.3101249999999709 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,synced,0,1.6806670000005397,0.02599999999983993 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,synced,1,1.2042920000003505,0.026667000000088592 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,synced,2,1.2790420000001177,0.025834000000031665 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,synced,0,1.6883749999997235,0.05120800000076997 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,synced,1,1.5116669999988517,0.05049999999937427 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,synced,2,1.4925830000011047,0.04837500000030559 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,1.9554580000003625,0.034374999999272404 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,1.7697909999988042,0.03466599999956088 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,5.6698340000002645,0.033832999999503954 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.4285409999993135,0.030167000000801636 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.35320799999863084,0.02937500000007276 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.33616600000095787,0.02900000000045111 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,synced,0,73.9350830000003,0.024500000001353328 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,synced,1,66.41491600000154,0.02433300000120653 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,synced,2,55.31366700000035,0.023708000000624452 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,optimistic,0,0.8540409999986878,0.02054099999986647 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,optimistic,1,0.9327079999984562,0.02449999999953434 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue update,10000,manual,optimistic,2,0.7909170000002632,0.023999999999432475 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,0.7339169999995647,0.018916999999419204 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,0.7490830000006099,0.01841700000113633 +local-node24.8/query-fixtures/current,f34738e69,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,0.743916999999783,0.01745900000059919 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,optimistic,0,1.4563749999997526,0.028040999999575433 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,optimistic,1,1.7381249999998545,0.026416999999128166 +local-node24.8/query-fixtures/current,f34738e69,list + author,visible author update,10000,manual,optimistic,2,1.1662500000002183,0.027000000000043656 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,optimistic,0,1.5227500000000873,0.048499999998966814 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,optimistic,1,1.4076250000016444,0.04879199999959383 +local-node24.8/query-fixtures/current,f34738e69,list + comment count,visible issue comment insert,10000,manual,optimistic,2,1.42041700000118,0.04904100000021572 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,2.4952919999996084,0.029500000000552973 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,1.9350830000003043,0.029875000000174623 +local-node24.8/query-fixtures/current,f34738e69,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,1.9041660000002594,0.028500000000349246 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.5224159999997937,0.02858400000150141 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.3303329999998823,0.025791000000026543 +local-node24.8/query-fixtures/current,f34738e69,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.29620799999975134,0.024999999999636202 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,optimistic,0,62.80054200000086,0.15004200000112178 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,optimistic,1,62.94145799999933,0.16320900000027905 +local-node24.8/query-fixtures/current,f34738e69,open issues + documents,visible document update,10000,manual,optimistic,2,82.92175000000134,0.19824999999946158 From d894ff6d848f7dcdba170ef6fc7aabe8edeb2b89 Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 14:30:13 -0700 Subject: [PATCH 8/9] Infer optional keys for possibly empty grouping lists Law: declared grouping-list possibilities govern generated key presence before Collection publication; authored fields remain intact. Reach: 403 declared states reached 24 times, including 90 new list/collision states. RED: expanded native owner rejects unchanged eb9ba9aca (24 failed, 9 passed). GREEN: 68 native and supplemental checks pass; full DB tsc has zero diagnostics. Mutants requiring every key, omitting every array key, and erasing prior grouping each fail TS2344 constraints. Limits: finite inferred forms; explicit any erasure retains compatibility behavior. All three builder files emit identical JavaScript. --- docs/contributing/oracle-coverage.md | 34 +- .../2026-11-05-boundary-only-high-review.md | 115 ++++ ...2026-11-05-boundary-only-high-sources.json | 92 ++++ packages/db/src/query/builder/group-keys.ts | 2 +- packages/db/src/query/builder/index.ts | 12 +- packages/db/src/query/builder/types.ts | 22 +- .../virtual-row-fields-types-oracle.test.ts | 48 +- scripts/bench/boundary-only-ci-2026-11-05.csv | 504 ++++++++++++++++++ 8 files changed, 801 insertions(+), 28 deletions(-) diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index dc3a52a298..e050c54cb5 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -1030,19 +1030,27 @@ Counts change while projection metadata belongs to the output Collection. Single-field wrong-source observations calibrate every metadata assertion. See the [CI evidence](oracle-reviews/2026-11-05-boundary-only-ci-review.md). -Grouping inference remains bounded by the declared key-list type. A callback -annotated as a broad array can return an empty list at runtime while the general -overload still promises a generated key. The concrete trace is -`const keys: Array['id']> = []`, followed by -`new Query().from({ source: rows }).groupBy(groupKeys(() => keys)).select(({ source }) => ({ id: source.id }))`, -consumed through QueryRef `fn.select(({ inner }) => inner.$key)`. -Here `PublicRef` names the public `Ref` export. An executed native/runtime probe -accepts `const key: string | number = inner.$key` with zero diagnostics but -observes `undefined` and no `$key` property before publication. This is a -pre-existing dynamic-emptiness inference limit, owned -by this public-type oracle; it needs a conditional/optional-key type law and -generated empty/nonempty runtime choices before a broader claim. The repair -above establishes statically empty lists, not arbitrary dynamic grouping. +The dynamic-emptiness follow-up extends this same owner with 15 grouping-list +forms, each crossed with six authored collision choices and all 24 source +descriptions. Mutable arrays, readonly arrays and empty-or-one tuple unions +construct both empty and nonempty return values, through callbacks and +`groupKeys`. The independent declared-shape law gives these lists an optional +missing `$key`. Statically empty lists retain no generated key, statically +nonempty tuples retain a required key, and accumulated definite grouping stays +required. QueryRef callback, inline array and published Collection types use +the same comparison. The original concrete witness was +`const keys: Array['id']> = []`, consumed through +QueryRef `fn.select(({ inner }) => inner.$key)`. Here `PublicRef` names the +public `Ref` export. The original inference accepted a required key while a +runtime probe observed no `$key` property. Its nonempty neighbor observes the +generated key. This was an enforcement gap, not an accepted product limitation. +The extended native owner rejects the unchanged implementation before repair. +Always-required, omit-all-array-keys and erase-prior-grouping mutants each fail +native shape constraints. This closes the declared-list inference gap within +the generated forms; explicit `any` erasure, including a helper with only its +context type argument supplied, retains the existing compatibility behavior. +See the dynamic-grouping evidence in the +[high-review record](oracle-reviews/2026-11-05-boundary-only-high-review.md). The high review adds 27 function/conditional forms with aggregate and ordinary controls to this same public-type owner, for all 24 source descriptions. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md index bbb83cc388..aebd6e791c 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -662,3 +662,118 @@ known gate failure in its merge-risk conclusion. It does not independently establish readiness or warrant hiring for performance diagnosis. No new behavioral finding requires an oracle change. The original high review's correctness and efficiency findings remain accounted for in the earlier ledger. + + +## eb9ba9aca follow-up: passing CI and dynamic grouping types + +The corrected benchmark passes the unchanged gate on remote run 42109495232. +Candidate merge b2ac23b7d4117eacdc666d1c2c22464171b8e3d9 has parents +8feab6ea3eaae4456f738da39fa93508ddd5cc01 and +eb9ba9acab93878233572addbf6358a8df6c046c. Overall ratios are 0.62x writes +and 0.49x cold, with no regression flags. Nested-document writes improve by +91.0% and hydration by 97.1% across configurations. The former failing case +has base repetitions 5.695476, 5.509726, 5.676848 ms and candidate repetitions +6.471167, 8.893417, 4.791310 ms. Their ranges overlap. This passes the gate, +but does not establish zero overhead. All 504 observations join the retained +historical passes and failures in boundary-only-ci-2026-11-05.csv. CI03 is now +fixed-now; the preceding pending description remains a historical observation. + +### Type law and test gap + +CodeRabbit review 5792245070, covering eb9ba9aca, identifies a real remaining +inference gap. A broad declared group-key array admits an empty value. The +public type must admit the missing generated key at the QueryRef and inline +boundaries. Nonempty grouping or aggregates still contribute a required key. +Authored key fields remain authored, and Collection publication supplies its +required metadata. Authority is the existing boundary-only decision and the +public-type owner's declared-shape law, not the old overload's output. The +coverage map already named the witness but did not authorize it as a product +limitation. The repair location is the type inference and the missing grammar. + +The pre-edit oracle extension adds 15 list forms across six authored-field +choices and 24 source descriptions. Callback and helper forms cross mutable, +readonly and empty-or-one tuple declarations with empty and nonempty values. +A statically nonempty tuple and both accumulation orders provide neighbors. +The existing shared model constructs expected shapes from those declarations. +The actual public construction runs before TypeScript checks QueryRef callback, +inline receiving and Collection publication types. No separate pinned expected +answer or production grouping classifier computes the model. + +A corrected runtime probe confirms that the empty list exposes no own `$key` +and the nonempty list exposes key 1, through both QueryRef and inline results. +The first attempted native RED fails during construction because the bare +nonempty callback did not bring the grouping compiler. It receives no RED +credit. Adding an empty `groupKeys` carrier admits the same callback grammar. +The corrected pre-edit run fails all 24 generated consumers with TS2344 shape +constraints, while nine calibration/admission checks pass. It runs on eb9ba9aca +before the first production edit. The first repair attempt still fails the +mutable-array and tuple-union distinctions. The final helper tests the whole +declared return type for empty-only and possibly-empty values. Intersection +preserves any earlier definite grouping. Const inference retains literal tuple +facts. These are type-only changes: all three modified builder files emit +byte-identical JavaScript against eb9ba9aca. The measured shipped-size deltas +therefore remain -155 full-export bytes and -1,667 emitted minified ESM bytes. + +### Evidence and limits + +- **Law:** The declared key-list possibilities determine missing-key optionality. + Authored keys and actual Collection metadata retain their separate rules. +- **Reach:** All changed grouping-list/collision states run under each of the + 24 source descriptions, with actual construction and three receiving types. + State counts and exact commands are bound in the adjacent source manifest. +- **RED:** `pnpm --dir packages/db exec vitest run tests/query/virtual-row-fields-types-oracle.test.ts --maxWorkers=2` + gives 24 failed / nine passed on the unchanged parent after setup correction. +- **GREEN:** The same native owner and supplemental type checks pass after the + repair. Full DB source/test TypeScript reports zero diagnostics. +- **Mutant:** Requiring keys for all possible lists, omitting keys for all arrays, + and erasing earlier definite grouping each fail TS2344 shape constraints in + the same generated consumer. None fails admission, parsing or setup. +- **Limits:** This finite grammar covers the declared list forms above through + source public types. It does not recover facts erased to `any`, including + the existing explicit-context-only helper generic. Built declarations and + installed-package consumers remain separate receiving paths. Runtime timing + is unchanged because the emitted JavaScript is identical. No oracle budget + or performance threshold decreases. + +ORC audit: ORC-001/002 authority and independent declared-shape judgment remain +above; ORC-003 prose, grammar, production construction and comparison stay in +the owner. ORC-004 reconstruction covers the original empty-array witness; +removing list form, runtime choice, wrapper or accumulation axes loses a distinct +legal neighbor. Key/value/optionality/union source axes retain their earlier +roles. Illegal non-record facades and optionless indexes remain admission +controls. ORC-005 observes all three named public receiving types after legal +construction, with source facts present at inference. ORC-006 and ORC-013 use +the three isolated wrong designs. ORC-007 does not apply to exhaustive finite +consumer generation; there is no random campaign. ORC-008 does not apply to a +stateless type law. ORC-009 uses existing grouping and publication terms. +ORC-010 retains diagnostics and existing cleanup. ORC-011 uses runtime empty +and nonempty observations as a separate formulation of key presence, without +claiming runtime performance from types. ORC-012 binds this review to the +manifest's sources and evidence. ORC-014 uses the actual TypeScript compiler, +public construction and receiving paths rather than a controlled compiler. +ORC-015 retains declared reach; ORC-016 uses the shared shape model for every +new finite input. No ordinary type examples enter the oracle. + +### Loss audit and reviewer assessment + +The raw review body, mutable summary, inline comments and conversation comments +were inspected together. The seven source-order occurrences remain distinct: + +| ID | Original claim or suggestion | Technical verdict and evidence | PR action / durable value | +| --- | --- | --- | --- | +| CRE01 | Possibly-empty readonly array callbacks incorrectly require `$key`; only scalar/nonempty lists should require it. | Confirmed by runtime and native RED. Optional missing keys preserve both empty and nonempty outcomes; accumulation and authored-key neighbors reject narrow repairs. | fixed-now; existing public-type owner, coverage map and this record. | +| CRE02 | Docstring coverage is 45%, below a required 80%; add missing docstrings. | No repository authority establishes that bot default as a requirement. | duplicate of CRF01 and the earlier refutation; optional documentation feedback remains preserved. | +| CRE03 | The current head lacks fresh remote performance evidence and the localized gate remains unresolved. | Stale after remote run 42109495232 passes unchanged thresholds. The bot's supplied context ended before that result. | stale; retain the exact fresh run and both earlier failures. | +| CRE04 | Reviewers should confirm joined pair keys are intended. | The maintainer explicitly selected pair keys with the other three source-attribution fields retained. | duplicate of CRF04; decision and generated joined-identity evidence remain above. | +| CRE05 | Reviewers should confirm aggregate provenance, caseWhen and select type changes are necessary. | The prior native RED/GREEN establishes the wrapped-aggregate and value-type gaps. | duplicate of CRF05; preserve the type evidence and explicit-erasure limits. | +| CRE06 | Ignored measurement CSVs were excluded and not inspected. | Accurate evidence limit in the review's context, not a code defect. The manifest and versioned tables retain the observations. | accepted-design for that review's evidence scope, without reducing this PR's measurement obligation. | +| CRE07 | Suggested reviewer `kevin-dp`. | Optional routing suggestion, without a technical claim. | accepted-design as optional routing feedback; no assignment or message sent. | + +Loss accounting: seven occurrences = one fixed-now + three duplicates + one +stale + two accepted-design. No confirmed-open, deferred or design-decision item +remains in this review. The original ten findings and all sibling findings +retain their earlier ledger entries. The fresh review is accurate and useful +on the dynamic-list inference boundary, but it repeats stale measurement and +design questions without reconciling their recorded evidence. Hire with +supervision for type-boundary review; do not rely on its broad readiness or +performance conclusions. CI and readiness remain separate final-head gates. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json index 04c0bdf526..5486da204e 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -381,5 +381,97 @@ "scripts/bench/boundary-only-ci-2026-11-05.csv": "8fb75b62b8a6bca11d4cb84720a9babe425e98d03daadfbe13b07a3ee248fd3e", "scripts/bench/query-fixture-isolation-2026-11-05.csv": "3cacc3aadaa9a1bffb9342ff177d604be6a3368a6eb1fde515340685d79357fc" } + }, + "ciEb9DynamicGrouping": { + "parentHead": "eb9ba9acab93878233572addbf6358a8df6c046c", + "codeRabbitReview": 5792245070, + "benchmark": { + "head": "eb9ba9acab93878233572addbf6358a8df6c046c", + "merge": "b2ac23b7d4117eacdc666d1c2c22464171b8e3d9", + "base": "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "run": 42109495232, + "hashes": { + "base.json": "deb3825d664de3d80da526c5b27612178427a29879d9e459375b76f27e9da349", + "candidate.json": "c963e366ac34b002543e9be3c94988b42b5cb12a7fc0523f1261e60b03030bb1", + "comparison.md": "92ef1eeb730e1194fb3df8e3b7d5bcd89a4f64b324a64bd66621a8ba00f67ef3" + } + }, + "benchmarkGate": "PASS with unchanged thresholds; CI03 fixed-now", + "sourceSha256": { + "packages/db/src/query/builder/index.ts": "be0bf49dfb455ba50acb71c0842dea9b6072cb44d2b85aa924d366b53b76542f", + "packages/db/src/query/builder/types.ts": "9351a58461c87abfdea575bc538bcf826e80b06aecd728fa27d24523ff9123c2", + "packages/db/src/query/builder/group-keys.ts": "4cc21b47a53efca7d7e3f3afa8c6869ad8ee55ca0bf4671205a1cc2e8a225f18", + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "dfe2f13f0eb7199a023ac541f838106daba7db03a4c9de6737024562667d0f09", + "scripts/bench/boundary-only-ci-2026-11-05.csv": "38d7e11892c0fd66e59cdb1bf6ae117ee85e7194d28b7a614f27a2395a0c4a5a", + "docs/contributing/oracle-coverage.md": "aa05fa8d161bde5b54ea217328573e16aa86ae6d24def444a4a6a3b615205330", + "docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md": "ad6ff3d951e02a4763efef7367ff400bbd6c80a5d85689ac0c306ca35c456b4c" + }, + "evidenceSha256": { + "dynamic-group-native-red.log": "1038c933de2374d18dbbbc31f0cb7dce2fef601d7e38777fb6244ae8cfb01a30", + "dynamic-group-native-red2.log": "873f136ca54ccd2aadd61b004cfcad18eb04d1798ea88e367f48e24501bcfdf8", + "dynamic-group-native-green1.log": "034d53ff64c496f5a21ec28c580b6dbd30aea721dc5a81ea9b35e10dfe205bee", + "dynamic-group-focused-green2.log": "0e79fdce3c9c480dbbb6bc073e51d411b9ea166aa400f09242c5916586307840", + "dynamic-group-native-green-final.log": "b11ad0c48b45b338d2518a58adfa113bd2d426b98a81f7210111248c2097f174", + "dynamic-group-full-tsc.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "dynamic-group-runtime-before.log": "32a8ae0aab5ea0e2fe03a8fb2fa3a20273b8e1d74095e40604cce46b66aaf99d", + "dynamic-group-runtime.mts": "dfaf2821fac9fbad2d596ae37d49f510030982d775ab285931526dcce657caa9", + "dynamic-group-erased-js.json": "abaf4174534f9d07539bb19b287eb53b043ce1e173a6a1f1902995124f186827", + "dynamic-group-mutants.json": "3d6f7f793b961b5c430b24630c1c470c74c707e85506fa186afe66d4b8c7bf5f", + "run-dynamic-group-mutants.py": "d35e0203b262e9bcf3068fe344d9024119126b5fdf415c150b6d4b4578023df5", + "dynamic-group-always-required.log": "29bcf93805feab717885c6a52387dbac95e605584d20be71df63486d4ca79b6e", + "dynamic-group-omit-array-key.log": "72fb3cabfd5d8e10992a63828d2058598221dcb0af8a0e176b73ee6214726ccd", + "dynamic-group-erase-prior.log": "12e162825e16f76891ef235b7b927c422c795e33dc273b4a88123c1b4befc29d", + "dynamic-group-lint.log": "89d7da780deb04850db632f478bc4155d23659849c0e5bec6d114c74dc9d5168", + "dynamic-group-doc-format.log": "17aa973d3f004560237d9a95171210b0671deff23d61628eecf7322ff5938f20", + "eb9ba9-review-5792245070.md": "68023bb05f877a2328e6931b3c81620c55d02864f230c26d7cb9ddfe2f51eb31", + "eb9ba9-review-mutable-final.md": "2916a94d8f41a34608ecee61c9bf312f7902fb6e03755324edfde9cabbe31cd9", + "shipped-ci-poll35.log": "16a2f499b16f3488a24e10f22545ba28f055a90eeb696e2b2850e03d1a7cb3fd", + "final-eb9ba9-ci-binding.json": "54017a22511c43755f5c726de37d3e8680760425f86b705a68ee1eab1cb454c7" + }, + "nativeRed": { + "failed": 24, + "passed": 9, + "declaredStates": 403, + "stateReachCounts": [ + 24 + ], + "initialConstructionFailureNotRedEvidence": true + }, + "nativeGreen": { + "files": 3, + "checks": 68, + "ownerChecks": 33, + "supplementalChecks": 35, + "diagnostics": 0 + }, + "fullDbTscDiagnostics": 0, + "shippedJavaScriptChanged": false, + "mutants": [ + { + "name": "dynamic-group-always-required", + "exit": 1, + "diagnosticCodes": [ + "TS2344" + ], + "nativeConstraintFailure": true + }, + { + "name": "dynamic-group-omit-array-key", + "exit": 1, + "diagnosticCodes": [ + "TS2344" + ], + "nativeConstraintFailure": true + }, + { + "name": "dynamic-group-erase-prior", + "exit": 1, + "diagnosticCodes": [ + "TS2344" + ], + "nativeConstraintFailure": true + } + ], + "limits": "Finite inferred list forms; explicit any erasure including context-only groupKeys generic retains compatibility behavior; installed-package types are a separate receiving path." } } diff --git a/packages/db/src/query/builder/group-keys.ts b/packages/db/src/query/builder/group-keys.ts index 3e553274b0..30586686e3 100644 --- a/packages/db/src/query/builder/group-keys.ts +++ b/packages/db/src/query/builder/group-keys.ts @@ -11,7 +11,7 @@ export interface GroupKeys { grouping: Grouping } -export function groupKeys( +export function groupKeys( callback: ( refs: Parameters>>[0], ) => TKeys, diff --git a/packages/db/src/query/builder/index.ts b/packages/db/src/query/builder/index.ts index c8dab03894..fee87500d6 100644 --- a/packages/db/src/query/builder/index.ts +++ b/packages/db/src/query/builder/index.ts @@ -84,6 +84,7 @@ import type { SingleSource, Source, WhereCallback, + WithGrouping, WithResult, WithoutBareSubquery, } from './types.js' @@ -746,14 +747,9 @@ export class BaseQueryBuilder { * .select(({orders}) => ({ status: orders.status })) * ``` */ - groupBy( - keys: - | GroupByCallback> - | GroupKeys>, - ): QueryBuilder - groupBy( - keys: GroupByCallback | GroupKeys, - ): QueryBuilder + groupBy( + keys: GroupByCallback | GroupKeys, + ): QueryBuilder> groupBy( keys: GroupByCallback | GroupKeys, ): QueryBuilder | QueryBuilder { diff --git a/packages/db/src/query/builder/types.ts b/packages/db/src/query/builder/types.ts index 8d1b88abb4..d87e6ab217 100644 --- a/packages/db/src/query/builder/types.ts +++ b/packages/db/src/query/builder/types.ts @@ -644,6 +644,17 @@ export type GroupByCallback = ( refs: RefsForContext, ) => TKeys +// A declared list can admit an empty value. Preserve earlier definite grouping +// while recording that this call alone may contribute no grouping expressions. +export type WithGrouping = + IsAny extends true + ? TContext & { hasGrouping: true } + : [TKeys] extends [ReadonlyArray] + ? TContext + : [] extends TKeys + ? TContext & { hasGrouping?: true } + : TContext & { hasGrouping: true } + /** * A callback that an operator value receives before the query supplies its * context. Without noImplicitAny, TypeScript skips that inference and the @@ -1198,10 +1209,13 @@ type ResultValue = TContext[`hasResult`] extends true // QueryRef sources and inline materialization expose the authored selection. // Grouping alone contributes a missing public key; it supplies no Collection // attribution and never replaces an explicitly authored field. -type WithGroupKey = T extends object +type WithGroupKey = T extends object ? `$key` extends keyof T ? T - : T & { readonly $key: string | number } + : T & + (Optional extends true + ? { readonly $key?: string | number } + : { readonly $key: string | number }) : T export type GetRawResult = @@ -1210,7 +1224,9 @@ export type GetRawResult = ? WithGroupKey : TContext[`hasAggregate`] extends true ? WithGroupKey - : TContext[`result`] + : `hasGrouping` extends keyof TContext + ? WithGroupKey + : TContext[`result`] : ResultValue // Inline materialization bypasses a child Collection, so selected child values diff --git a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts index ca9aefb87c..92dd8f2ed5 100644 --- a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts @@ -8,6 +8,8 @@ * decision also preserves authored collisions in QueryRef callback inputs and * structured refs. Empty grouping contributes no key; a nonempty grouping or * aggregate contributes a missing key, including nested and wrapped aggregates. + * A declared key list that may be empty contributes an optional missing key. + * Prior definite grouping and aggregates retain their required generated key. * Nullable whole-row selections are absent or * complete; facade rows always receive required metadata. WithoutVirtualProps * distributes over discriminated row unions. @@ -137,6 +139,44 @@ const groupingBoundaries = [ before: true, keyed: true, }, + ...[`callback`, `wrapper`].flatMap((form) => + [`mutable`, `readonly`, `union`].flatMap((list) => + [false, true].map((nonempty) => { + const key = `PublicRef['id']` + const declared = + list === `mutable` + ? `Array<${key}>` + : list === `readonly` + ? `ReadonlyArray<${key}>` + : `readonly [] | readonly [${key}]` + const callback = `({ groupSource }): ${declared} => [${nonempty ? `groupSource.id` : ``}]` + return { + name: `possible-${form}-${list}-${nonempty ? `one` : `empty`}`, + expressions: `${form === `callback` ? `.groupBy(groupKeys(() => []))` : ``}.groupBy(${form === `wrapper` ? `groupKeys(${callback})` : callback})`, + before: true, + keyed: `optional`, + } as const + }), + ), + ), + { + name: `nonempty-tuple-wrapper`, + expressions: `.groupBy(groupKeys(({ groupSource }): readonly [PublicRef['id']] => [groupSource.id]))`, + before: true, + keyed: true, + }, + { + name: `one-then-possible`, + expressions: `.groupBy(groupKeys(({ groupSource }) => groupSource.id)).groupBy((): ReadonlyArray['id']> => [])`, + before: true, + keyed: true, + }, + { + name: `possible-then-one`, + expressions: `.groupBy((): ReadonlyArray['id']> => []).groupBy(groupKeys(({ groupSource }) => groupSource.id))`, + before: true, + keyed: true, + }, ] as const // Seven through nine are neighboring depths around the former cutoff. Sixteen // distinguishes supporting that one boundary from merely moving it one level. @@ -524,8 +564,10 @@ function consumerSource( ) } } - // The model uses declared key-list emptiness, not the query's inferred - // grouping marker. Every receiver applies the same declared-shape law. + // The model uses the possibilities in the declared list, independently of + // the inferred context marker. A broad list admits empty and nonempty values, + // so its generated key is optional. Each form constructs both runtime choices. + // Prior definite grouping remains definite when a later list may be empty. for (const grouping of groupingBoundaries) { for (const collision of authoredCollisions) { const base = `new Query().from({ groupSource: rows })` @@ -534,7 +576,7 @@ function consumerSource( ? `${base}${grouping.expressions}${selection}` : `${base}${selection}${grouping.expressions}` const declared = `{ id: ${shape.key}${collision.fields.replaceAll(` as const`, ``).replaceAll(`, $`, `; $`)} }` - const expected = `${declared}${grouping.keyed && collision.name !== `key` && collision.name !== `all` ? ` & { readonly $key: string | number }` : ``}` + const expected = `${declared}${grouping.keyed && collision.name !== `key` && collision.name !== `all` ? ` & { readonly $key${grouping.keyed === `optional` ? `?` : ``}: string | number }` : ``}` addWitness( `grouping-boundary/${grouping.name}/${collision.name}`, `{ diff --git a/scripts/bench/boundary-only-ci-2026-11-05.csv b/scripts/bench/boundary-only-ci-2026-11-05.csv index a12a4fd5bd..305827b6e2 100644 --- a/scripts/bench/boundary-only-ci-2026-11-05.csv +++ b/scripts/bench/boundary-only-ci-2026-11-05.csv @@ -1511,3 +1511,507 @@ candidate,88544ac64,open issues + documents,visible document update,10000,manual 42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,0,134.2546300000031,0.35645600000134436 42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,1,123.0447159999967,0.3568169999998645 42106831377/candidate,729e69094,open issues + documents,visible document update,10000,manual,optimistic,2,243.50390499999776,0.3487139999997453 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,0,8.408491000000026,0.13024599999999964 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,1,2.63079799999997,0.0747119999999768 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,synced,2,1.5832979999999566,0.09038600000002361 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,0,2.03676200000001,0.28879600000004757 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,1,1.7411859999999706,0.19845900000001393 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,synced,2,1.1341109999999617,0.14754299999998466 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,synced,0,14.197322999999983,0.1003610000000208 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,synced,1,4.991158000000041,0.06331599999998616 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,synced,2,4.480793000000062,0.0927400000000489 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,0,7.922036999999932,0.1796110000000226 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,1,4.69895699999995,0.14927499999998872 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,synced,2,4.170579999999973,0.10417800000004718 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,0,6.03798699999993,0.0894549999999299 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,1,5.087913999999955,0.08057199999996101 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,synced,2,6.26065200000005,0.13001599999995506 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,0,0.8862870000000385,0.08719200000007277 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,1,0.7901010000000497,0.0966760000000022 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,synced,2,0.6430100000000039,0.05234900000004927 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,0,41.591301000000044,1.002191000000039 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,1,49.34706399999993,1.0217310000000452 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,synced,2,39.35380200000009,1.0214399999999841 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,0,1.3704670000001897,0.09619500000007974 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,1,1.1735599999999522,0.05166800000006333 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,none,optimistic,2,1.5926119999999173,0.04833299999995688 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.2384669999999005,0.039779999999836946 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,1,1.434523999999783,0.03527299999996103 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.9162920000001122,0.03733599999986836 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,optimistic,0,4.1693380000001525,0.059308999999984735 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,optimistic,1,4.87795600000004,0.05862799999999879 +42109495232/base,8feab6ea3,list + author,visible author update,100,none,optimistic,2,3.0973310000001675,0.05735600000002705 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,0,3.3224910000001273,0.103706000000102 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,1,4.32072600000015,0.08719100000007529 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,none,optimistic,2,3.1482690000000275,0.09788699999990058 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,7.393751000000066,0.053811999999879845 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,4.562570999999934,0.04971500000010565 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,7.1918470000000525,0.0490140000001702 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.5752780000000257,0.06323500000007698 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.5500190000000202,0.05241899999987254 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.5663540000000467,0.04412600000000566 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,0,51.138837000000194,1.218748000000005 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,1,38.65685099999973,1.2059289999997418 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,none,optimistic,2,40.300005000000056,1.24164299999984 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,0,2.755106000000069,0.050495999999839114 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,1,1.1966349999997874,0.04883400000016991 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,synced,2,1.1065889999999854,0.04384600000003047 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,0,1.5267329999996946,0.15745799999967858 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,1,0.8864269999999124,0.11791799999991781 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,synced,2,0.8782250000003842,0.1132700000002842 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,synced,0,3.232024000000365,0.05516299999999319 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,synced,1,2.880613999999696,0.05635499999971216 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,synced,2,2.564487999999983,0.05321000000003551 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,0,2.5359440000001996,0.10255400000005466 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,1,3.870147000000088,0.10750200000029508 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,synced,2,3.8752850000000763,0.10094299999991563 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,3.4212499999998727,0.067641999999978 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,3.0987140000002,0.06726100000014412 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,6.472492000000329,0.0683630000003177 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.4125120000003335,0.0813029999999344 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.3940949999996519,0.06480700000020079 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3097569999999905,0.04528900000013891 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,0,35.166487000000416,0.9743899999998575 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,1,37.84746099999984,0.991504999999961 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,synced,2,48.24507700000004,0.9640239999998812 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.8318249999997533,0.04253400000015972 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.8506430000002183,0.042743999999856896 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.778222999999798,0.04189300000007279 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.7947789999998349,0.042194000000108645 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.8452850000003309,0.03650500000003376 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,100,manual,optimistic,2,1.18798199999992,0.03666500000008455 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,0,3.7947629999998753,0.05504299999984141 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,1,2.47719700000016,0.05448200000000725 +42109495232/base,8feab6ea3,list + author,visible author update,100,manual,optimistic,2,2.4189289999999346,0.055164000000331725 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,0,3.3879400000000714,0.07956999999987602 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,1,2.389883999999711,0.08387700000002951 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,100,manual,optimistic,2,3.198334000000159,0.08312499999965439 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,3.322121000000152,0.05077600000004168 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.7020830000001297,0.08437800000001516 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.162438999999722,0.04901399999971545 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.4800439999999071,0.041132000000288826 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.3670430000001943,0.04130200000008699 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.33425400000032823,0.04098100000010163 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,0,38.738704999999754,1.2019929999996748 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,1,37.88236300000062,1.20402600000034 +42109495232/base,8feab6ea3,open issues + documents,visible document update,100,manual,optimistic,2,37.416741,1.1796490000006088 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,0,5.375167000000147,0.03863900000033027 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,1,5.70623599999999,0.09034599999995407 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,synced,2,4.647890000000189,0.037647000000106345 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,0,4.277490999999827,0.4795030000004772 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,1,3.5611500000004526,0.4745759999996153 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,synced,2,4.616341999999349,0.47076000000015483 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,synced,0,18.095792000000074,0.04984500000045955 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,synced,1,19.01481899999999,0.048743000000285974 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,synced,2,20.050819999999476,0.04812300000048708 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,0,5.837875000000167,0.08805300000040006 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,1,5.325471000000107,0.090026000000762 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,synced,2,5.411200999999892,0.09119699999973818 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,11.538442000000032,0.059769999999844 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,6.885223999999653,0.06083200000011857 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,8.95658800000001,0.05970999999954074 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.8813690000006318,0.04305500000009488 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.8280489999997371,0.04374600000028295 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.8627310000001671,0.043725999999878695 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,0,354.16876500000035,0.9531270000006771 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,1,375.48222199999964,0.958994999999959 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,synced,2,362.5202210000007,0.9993359999998574 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,0,3.923664999999346,0.040982000000440166 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,1,7.975492999999915,0.04181299999982002 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,none,optimistic,2,3.726147999999739,0.04176300000017363 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,0,4.227462999999261,0.047550999999657506 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,1,3.7036639999996623,0.031997999999475724 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,none,optimistic,2,3.372994999999719,0.03294000000005326 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,0,17.46560000000045,0.053179999999883876 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,1,19.65909599999941,0.052458999999544176 +42109495232/base,8feab6ea3,list + author,visible author update,1000,none,optimistic,2,20.11261000000013,0.052608999999392836 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,0,5.695475999999871,0.0751430000000255 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,1,5.509726000000228,0.07468299999982264 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,none,optimistic,2,5.676848000000064,0.07310000000052241 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,10.339246999999887,0.04432699999961187 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,6.380898999999772,0.044297000000369735 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,6.527850999999828,0.04476700000031997 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.994909999999436,0.09075699999993958 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,1.0737589999998818,0.038448000000244065 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,1.0398480000003474,0.03915899999992689 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,0,363.64817700000003,1.18339399999968 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,1,381.0873670000001,1.2013709999991988 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,none,optimistic,2,363.72298899999987,1.2127980000004754 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,0,1.3345710000012332,0.03768599999966682 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,1,0.8635620000004565,0.03906900000038149 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,synced,2,0.8333560000010038,0.03834800000004179 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,0,1.4282340000008844,0.137988000000405 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.7990649999992456,0.12820300000021234 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.8053939999990689,0.12829400000009628 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,synced,0,2.57534300000043,0.050106000000596396 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,synced,1,5.061631000000489,0.049194000001079985 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,synced,2,2.492677000000185,0.04939399999966554 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,0,2.5868700000009994,0.09364099999947939 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,1,2.8250390000011976,0.09202899999945657 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,synced,2,5.922398000000612,0.09131800000068324 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,3.3451719999993657,0.06388700000024983 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,3.6608890000006795,0.06295499999941967 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,3.2796939999989263,0.06358600000021397 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.42249699999956647,0.04418699999951059 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.35020799999983865,0.04459800000040559 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.430569000000105,0.04497799999990093 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,0,359.83775700000115,0.9632119999987481 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,1,378.3886079999993,0.970683999999892 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,synced,2,360.4925239999993,0.9636030000001483 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,0,1.1349609999997483,0.04032999999981257 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.879955999998856,0.04090200000064215 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.8761799999992945,0.04078099999969709 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,1.100629000000481,0.036165000001346925 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.9062659999999596,0.03519299999970826 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.7761700000010023,0.03557399999954214 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,0,2.6727889999983745,0.05324000000109663 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,1,3.6538779999991675,0.05388099999981932 +42109495232/base,8feab6ea3,list + author,visible author update,1000,manual,optimistic,2,2.5135489999993297,0.05378099999870756 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,0,2.62983499999973,0.0797500000007858 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,1,2.5905950000014855,0.08079200000065612 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,1000,manual,optimistic,2,2.457985999999437,0.08106199999929231 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.397482000000309,0.04980500000056054 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.528368999999657,0.050046000000293134 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,3.4479080000000977,0.049044000001231325 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.4945560000014666,0.041531999999278923 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.4938739999997779,0.04741199999989476 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.43559599999935017,0.04162299999916286 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,0,357.64284300000145,1.2125280000000203 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,1,385.0739859999994,1.1809299999986251 +42109495232/base,8feab6ea3,open issues + documents,visible document update,1000,manual,optimistic,2,355.70972000000074,1.1615409999994881 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,0,46.5162650000002,0.06454800000028627 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,1,43.89134800000102,0.061622999999599415 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,synced,2,58.17519100000027,0.04377600000043458 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,0,41.16218299999855,4.630841000000146 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,1,42.226818000001,4.52444000000105 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,synced,2,41.66327900000033,4.561626999999135 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,synced,0,184.25538100000085,0.052418999999645166 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,synced,1,190.0750939999998,0.051507000000128755 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,synced,2,207.80858799999987,0.05165800000031595 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,0,46.27952799999912,0.08955499999865424 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,1,49.6809659999999,0.08790199999930337 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,synced,2,43.63393999999971,0.0863599999975122 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,48.076411000001826,0.059029000000009546 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,52.0340529999994,0.059679999998479616 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,60.182237000000896,0.06020100000023376 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,0,3.913258999997197,0.04198299999916344 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,1,3.647397999997338,0.041722999998455634 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,synced,2,3.397041000000172,0.04293399999733083 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,0,3716.7976400000007,0.9802369999997609 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,1,3693.7002699999975,0.9419999999990978 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,synced,2,3561.0933079999995,1.0521059999991849 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,0,46.014556999998604,0.0452789999981178 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,1,38.760143999999855,0.045659000003070105 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,none,optimistic,2,63.72919399999955,0.04598899999837158 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,0,67.38270000000193,0.037926999997580424 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,1,45.923429999998916,0.033580999999685446 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,none,optimistic,2,49.32625700000062,0.03803700000207755 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,0,204.43531299999813,0.05649499999708496 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,1,185.69421299999885,0.054442000000562984 +42109495232/base,8feab6ea3,list + author,visible author update,10000,none,optimistic,2,174.96772799999962,0.055082999999285676 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,0,46.39355799999976,0.0974869999990915 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,1,48.2215729999989,0.09543399999893154 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,none,optimistic,2,53.3233309999996,0.09890900000027614 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,47.48826800000097,0.044096000001445645 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,49.11216599999898,0.048131999999895925 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,48.166990999998234,0.04434699999910663 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,3.69438799999989,0.040731000000960194 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,3.3542249999991327,0.041212000000086846 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,3.4630599999982223,0.04159300000173971 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,0,3723.5466530000012,1.167208999999275 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,1,3672.1764579999945,1.2295939999967231 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,none,optimistic,2,3743.7109290000008,1.1839040000049863 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,0,2.00973000000522,0.039709999997285195 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,1,1.5261509999982081,0.0667299999986426 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,synced,2,8.14398500000243,0.03844800000661053 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,0,1.9887279999966267,0.5841710000022431 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,1,9.063074999998207,0.5655929999993532 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,synced,2,7.7470570000004955,0.5622169999987818 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,synced,0,10.06045300000551,0.04890400000294903 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,synced,1,9.612375999997312,0.049082999998063315 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,synced,2,8.459247999999207,0.056043999997200444 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,0,3.7000560000014957,0.09772700000030454 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,1,11.796346999995876,0.09458299999823794 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,synced,2,3.110877999999502,0.09691600000223843 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,3.75470900000073,0.0638969999999972 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,3.762840999996115,0.06471800000144867 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,3.897805000000517,0.06374599999981001 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.6463850000000093,0.044906999995873775 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.7238010000000941,0.04865399999835063 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.7008260000002338,0.048122000000148546 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,0,3587.7205600000016,0.974938999999722 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,1,3683.1450820000027,0.9373129999949015 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,synced,2,3561.841274999999,0.9916549999979907 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,0,2.5177350000012666,0.04320499999448657 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.7126720000014757,0.043375000001105946 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.5399220000035712,0.04427700000087498 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.5224949999974342,0.03844799999933457 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,1.542505000004894,0.03796800000418443 +42109495232/base,8feab6ea3,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.531087999996089,0.03786699999909615 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,0,5.7183399999994435,0.05518299999675946 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,1,5.727803000001586,0.05655500000284519 +42109495232/base,8feab6ea3,list + author,visible author update,10000,manual,optimistic,2,3.325843000005989,0.056885000005422626 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.4605760000049486,0.11157900000398513 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,1,3.2401739999986603,0.10949499999696855 +42109495232/base,8feab6ea3,list + comment count,visible issue comment insert,10000,manual,optimistic,2,3.217900000003283,0.10720199999923352 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.9587180000016815,0.05174799999804236 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,6.549592000003031,0.05310000000463333 +42109495232/base,8feab6ea3,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,4.254263000002538,0.052368999997270294 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6756890000033309,0.04651000000012573 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.654235999994853,0.04942500000470318 +42109495232/base,8feab6ea3,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.6365389999991748,0.04574900000443449 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,0,3641.625613000004,1.1692519999996875 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,1,3638.8673340000023,1.1793279999983497 +42109495232/base,8feab6ea3,open issues + documents,visible document update,10000,manual,optimistic,2,3586.063332000005,1.1621420000010403 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,synced,0,8.724643999999955,0.09978000000000975 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,synced,1,2.8302759999999694,0.05909800000000587 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,synced,2,1.2957419999999615,0.042523999999957596 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,synced,0,1.3069490000000314,0.2468900000000076 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,synced,1,1.5960720000000492,0.19032500000002983 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,synced,2,1.3460770000000366,0.09704499999998006 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,synced,0,9.411037999999962,0.08616899999992711 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,synced,1,8.674229000000082,0.05435099999999693 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,synced,2,2.7169819999999163,0.07767699999999422 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,synced,0,6.449094000000059,0.16685999999992873 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,synced,1,3.483290000000011,0.1860990000000129 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,synced,2,4.252762999999959,0.0948519999999462 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,synced,0,5.867362999999955,0.13001499999995758 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,synced,1,6.455344000000082,0.1186680000000706 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,synced,2,4.99489600000004,0.06636900000000878 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,synced,0,0.9648359999999911,0.09604400000000624 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,synced,1,0.9964039999999841,0.0915269999999282 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,synced,2,0.719477999999981,0.050445000000081563 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,synced,0,2.801627999999937,0.114420999999993 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,synced,1,1.6613790000000108,0.040170999999986634 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,synced,2,1.7840939999999819,0.03911900000002788 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,optimistic,0,0.7675500000000284,0.07190800000000763 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,optimistic,1,1.204024000000004,0.06457699999998567 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,none,optimistic,2,0.7140099999999165,0.035482999999999265 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,optimistic,0,1.0155720000000201,0.05282899999997426 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,optimistic,1,0.9146009999999478,0.02489700000000994 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,none,optimistic,2,0.908771999999999,0.04497700000001714 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,optimistic,0,3.46234800000002,0.05145700000002762 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,optimistic,1,3.265092999999979,0.0585070000001906 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,none,optimistic,2,2.4186339999998836,0.044887000000017 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,optimistic,0,2.473507000000154,0.0867399999999634 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,optimistic,1,2.892334000000119,0.08497699999998076 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,none,optimistic,2,2.7222489999999198,0.12058100000012928 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,optimistic,0,3.297021000000086,0.050625000000081855 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,optimistic,1,7.4354829999999765,0.07925899999986541 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,none,optimistic,2,7.24632900000006,0.04332399999998415 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,optimistic,0,0.5422229999999217,0.07121699999993325 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,optimistic,1,0.6860079999999016,0.07390000000009422 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,none,optimistic,2,0.6836639999999079,0.04123200000003635 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,optimistic,0,2.4121450000000095,0.3257380000000012 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,optimistic,1,1.7228410000000167,0.2609109999998509 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,none,optimistic,2,1.4678099999998722,0.2858080000000882 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,synced,0,2.019897000000128,0.037266000000045096 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,synced,1,0.9792769999999109,0.038528000000042084 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,synced,2,0.8894629999999779,0.032819000000017695 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,synced,0,1.0704949999999371,0.1522780000000239 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,synced,1,0.6364639999999326,0.11128600000006372 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,synced,2,0.5972449999999299,0.12388499999997293 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,synced,0,1.7120259999999234,0.04261399999995774 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,synced,1,1.3988460000000487,0.043644999999969514 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,synced,2,1.3490620000000035,0.04007999999998901 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,synced,0,1.7722360000000208,0.08132099999988895 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,synced,1,2.211774000000105,0.08176300000013725 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,synced,2,1.777894999999944,0.08201299999996081 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,synced,0,5.573272000000088,0.06280400000014197 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,synced,1,3.372172999999975,0.05408099999999649 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,synced,2,2.524593999999979,0.06960400000002664 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,synced,0,0.5188579999999092,0.043093999999882726 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,synced,1,0.4122580000000653,0.04881399999999303 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,synced,2,0.3770849999998518,0.04057099999999991 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,synced,0,1.3094120000000657,0.03538299999991068 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,synced,1,1.5138389999999617,0.035423000000037064 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,synced,2,1.6498329999999441,0.03470199999992474 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,optimistic,0,0.589813999999933,0.032599000000118394 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,optimistic,1,0.5373749999998836,0.03182799999990493 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,100,manual,optimistic,2,0.7696530000000621,0.03177800000003117 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,optimistic,0,0.5200999999999567,0.028241999999863765 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,optimistic,1,0.8927280000000337,0.02669000000014421 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,100,manual,optimistic,2,0.8115360000001601,0.044456999999965774 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,optimistic,0,1.6478290000000015,0.04342500000007021 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,optimistic,1,1.3042339999999513,0.04345499999999447 +42109495232/candidate,b2ac23b7d,list + author,visible author update,100,manual,optimistic,2,1.3248459999999795,0.043654999999944266 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,optimistic,0,1.660919000000149,0.07031499999993684 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,optimistic,1,1.9260859999999411,0.06923399999982394 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,100,manual,optimistic,2,1.6148799999998573,0.0700249999999869 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,0,6.421914000000015,0.045728000000053726 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,1,3.260951999999861,0.07572400000003654 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,100,manual,optimistic,2,3.2149779999999737,0.04189300000007279 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,optimistic,0,0.40834199999972043,0.035011999999824184 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,optimistic,1,0.35033500000008644,0.03469200000017736 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,100,manual,optimistic,2,0.3851469999999608,0.0354629999997087 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,optimistic,0,1.1407389999999396,0.2512160000001131 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,optimistic,1,1.601741000000402,0.2629139999999097 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,100,manual,optimistic,2,1.197414000000208,0.271436999999878 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,synced,0,4.311940999999933,0.02865299999984927 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,synced,1,4.088176000000203,0.03326000000015483 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,synced,2,5.003036999999949,0.028372000000217668 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,synced,0,4.596888999999919,0.481260999999904 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,synced,1,3.4085979999999836,0.4571549999996023 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,synced,2,4.6538839999998345,0.4493929999998727 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,synced,0,11.849576999999954,0.037445999999818014 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,synced,1,11.55119999999988,0.03766700000005585 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,synced,2,16.86692600000015,0.039038000000346074 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,synced,0,4.701705999999831,0.07176799999979266 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,synced,1,4.615847000000031,0.0706359999999222 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,synced,2,4.835215999999946,0.07129600000007486 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,synced,0,5.634904000000006,0.04740100000026359 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,synced,1,5.525670999999875,0.04734100000041508 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,synced,2,7.413098999999875,0.04815199999984543 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,synced,0,0.9779950000001918,0.036704999999983556 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,synced,1,0.6508050000002186,0.03610399999979563 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,synced,2,0.619778999999653,0.06392499999992651 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,synced,0,8.842771000000084,0.05224800000041796 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,synced,1,7.955511999999999,0.03371100000003935 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,synced,2,34.02452399999993,0.035323000000062166 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,optimistic,0,3.9554579999999078,0.031507000000146945 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,optimistic,1,3.5590140000003885,0.03214800000023388 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,none,optimistic,2,3.4384829999999056,0.030846000000110507 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,optimistic,0,3.374706999999944,0.02207300000009127 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,optimistic,1,3.7394540000000234,0.021432000000004336 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,none,optimistic,2,3.158984000000146,0.02208299999983865 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,optimistic,0,11.659072000000378,0.0420630000003257 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,optimistic,1,10.450561000000107,0.043395000000145956 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,none,optimistic,2,10.810329999999794,0.04185300000017378 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,optimistic,0,6.47116700000015,0.07149699999990844 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,optimistic,1,8.893417000000227,0.06787200000007942 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,none,optimistic,2,4.791310000000067,0.1167049999999108 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,0,5.701894000000266,0.03971999999976106 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,1,9.562089999999898,0.03963999999996304 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,none,optimistic,2,5.784008000000085,0.040772000000288244 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,optimistic,0,0.8392969999999877,0.03500299999996059 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,optimistic,1,0.7082109999996646,0.03429099999993923 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,none,optimistic,2,0.7850170000001526,0.034222000000227126 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,optimistic,0,7.414181000000099,0.24183300000004238 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,optimistic,1,7.260009000000082,0.24268399999982648 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,none,optimistic,2,7.9864690000003975,0.25521200000002864 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,synced,0,0.8903850000001512,0.042894000000160304 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,synced,1,0.885316999999759,0.04135200000018813 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,synced,2,0.5807400000003327,0.027171000000180356 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,synced,0,0.6491220000002613,0.143786000000091 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,synced,1,0.5212509999996655,0.1151030000000901 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,synced,2,0.5294630000003053,0.11524199999985285 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,synced,0,1.2324060000000827,0.03690499999993335 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,synced,1,1.1521670000001905,0.03665499999988242 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,synced,2,1.1912449999999808,0.03703499999983251 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,synced,0,1.6724160000003394,0.07702599999993254 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,synced,1,1.9553600000003826,0.07463199999983772 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,synced,2,1.6518559999999525,0.07551299999977346 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,synced,0,2.4088000000001557,0.051476999999977124 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,synced,1,2.7189750000002277,0.05167699999992692 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,synced,2,2.3843729999998686,0.05130700000017896 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,synced,0,0.355431999999837,0.05230900000015026 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,synced,1,0.3734789999998611,0.03916800000024523 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,synced,2,0.3735999999998967,0.039778999999725784 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,synced,0,15.50648799999999,0.03575399999999718 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,synced,1,8.467368999999962,0.033770000000004075 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,synced,2,7.631836999999905,0.033770000000004075 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,optimistic,0,0.6468389999999999,0.031146999999691616 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,optimistic,1,0.5637449999999262,0.030925999999908527 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,1000,manual,optimistic,2,0.6409699999999248,0.03126699999984339 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,optimistic,0,0.7495530000001054,0.02573900000015783 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,optimistic,1,0.6115770000001248,0.025188000000071042 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,1000,manual,optimistic,2,0.6019019999998818,0.02475700000013603 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,optimistic,0,1.4001079999998183,0.04032999999981257 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,optimistic,1,1.3489519999998265,0.040490999999747146 +42109495232/candidate,b2ac23b7d,list + author,visible author update,1000,manual,optimistic,2,1.2111940000004324,0.04033999999955995 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,optimistic,0,1.834179000000404,0.07149699999990844 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,optimistic,1,1.6755510000002687,0.07116700000005949 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,1000,manual,optimistic,2,1.6511639999998806,0.07168699999965611 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,0,3.7179910000004384,0.041873000000123284 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,1,3.3906710000001112,0.04426599999987957 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,1000,manual,optimistic,2,2.9196950000005018,0.041833000000224274 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,optimistic,0,0.41007400000034977,0.03465200000027835 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,optimistic,1,0.42496699999992416,0.035393000000112806 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,1000,manual,optimistic,2,0.4156830000001719,0.034601000000293425 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,optimistic,0,7.159389000000374,0.2465489999995043 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,optimistic,1,7.659227000000101,0.2476010000000315 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,1000,manual,optimistic,2,7.537586000000374,0.2381070000001273 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,synced,0,51.44904099999985,0.028853000000708562 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,synced,1,43.96046799999931,0.04843200000050274 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,synced,2,40.411949999999706,0.027801999999610416 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,synced,0,33.10676299999977,4.784981000000698 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,synced,1,35.13198999999986,4.850623000000269 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,synced,2,40.65807700000005,4.790862000000743 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,synced,0,126.44727799999964,0.04093099999954575 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,synced,1,135.75112900000022,0.04112200000054145 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,synced,2,148.44729599999937,0.041903000000274915 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,synced,0,58.08324800000082,0.07934900000054768 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,synced,1,50.47719700000016,0.07265900000038528 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,synced,2,69.5821649999998,0.1468800000002375 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,synced,0,52.639548000000104,0.052849000000605884 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,synced,1,49.25216,0.08446699999967677 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,synced,2,54.13887600000089,0.05178700000033132 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,synced,0,3.705615000000762,0.04062100000010105 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,synced,1,3.9395859999985987,0.03880899999967369 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,synced,2,3.6455539999988105,0.039269000000786036 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,synced,0,146.72945100000106,0.03761599999961618 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,synced,1,94.2224010000009,0.03776599999946484 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,synced,2,97.70682500000112,0.03746599999976752 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,optimistic,0,52.77626300000156,0.03356999999959953 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,optimistic,1,71.31844799999999,0.035323000000062166 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,none,optimistic,2,45.8862050000007,0.03458200000022771 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,optimistic,0,47.823349000000235,0.024686999999175896 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,optimistic,1,41.770345000000816,0.02718999999888183 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,none,optimistic,2,35.9989829999995,0.02419699999882141 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,optimistic,0,141.1449389999998,0.045448999999280204 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,optimistic,1,141.02129500000046,0.04629899999963527 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,none,optimistic,2,130.54521999999997,0.04471700000067358 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,optimistic,0,43.04055900000094,0.09570299999904819 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,optimistic,1,56.46969899999931,0.08600899999873945 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,none,optimistic,2,51.37431099999958,0.0868899999986752 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,0,43.980797999998686,0.043385000000853324 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,1,49.73834899999929,0.04493700000057288 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,none,optimistic,2,46.312323999998625,0.04275500000039756 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,optimistic,0,4.084963000001153,0.038778000000093016 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,optimistic,1,3.4793059999992693,0.039087999999537715 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,none,optimistic,2,3.9273269999994227,0.03753599999981816 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,optimistic,0,104.79662199999984,0.2557830000005197 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,optimistic,1,93.29502599999978,0.25327999999899475 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,none,optimistic,2,107.52901899999961,0.2537499999998545 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,synced,0,1.8169440000001487,0.031006999999590334 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,synced,1,1.2808100000002014,0.03139700000065204 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,synced,2,1.3551520000000892,0.030716000001120847 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,synced,0,1.8494099999988975,0.5764300000009825 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,synced,1,1.2591879999999946,0.5594529999998485 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,synced,2,1.3323639999998704,0.5617570000013075 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,synced,0,2.025707999999213,0.040864000000510714 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,synced,1,1.956518999999389,0.03961200000048848 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,synced,2,2.1135469999990164,0.039452999999411986 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,synced,0,3.066612000000532,0.08583600000019942 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,synced,1,2.341909000000669,0.08529900000030466 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,synced,2,2.3207169999986945,0.0859100000016042 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,synced,0,3.3190709999998944,0.057015999998839106 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,synced,1,3.3324009999996633,0.08307499999864376 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,synced,2,3.0472009999994043,0.05602499999986321 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,synced,0,0.6000239999993937,0.042214000000967644 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,synced,1,0.5738039999996545,0.04066100000090955 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,synced,2,0.7955590000001393,0.04101099999934377 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,synced,0,100.98279600000023,0.0386080000007496 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,synced,1,99.5392009999996,0.037115999999514315 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,synced,2,87.94934900000044,0.035182999999960884 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,optimistic,0,1.6948040000006586,0.031358000000182074 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,optimistic,1,1.2741700000005949,0.031026999999085092 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue update,10000,manual,optimistic,2,1.2488219999995636,0.03182799999922281 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,optimistic,0,1.2352109999992535,0.026620000000548316 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,optimistic,1,1.2923270000028424,0.026549999998678686 +42109495232/candidate,b2ac23b7d,list: newest 50 open,visible issue delete,10000,manual,optimistic,2,1.222100999999384,0.026279999998223502 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,optimistic,0,1.926311999999598,0.04125199999907636 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,optimistic,1,1.9138139999995474,0.040810999998939224 +42109495232/candidate,b2ac23b7d,list + author,visible author update,10000,manual,optimistic,2,3.742428999998083,0.04490799999985029 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,optimistic,0,3.171038000000408,0.09564499999760301 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,optimistic,1,2.4559809999991558,0.09510399999999208 +42109495232/candidate,b2ac23b7d,list + comment count,visible issue comment insert,10000,manual,optimistic,2,2.615109999998822,0.09839800000190735 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,0,3.370947999999771,0.045879000001150416 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,1,5.27734099999725,0.04858299999978044 +42109495232/candidate,b2ac23b7d,list + 3 recent comments,visible issue comment insert,10000,manual,optimistic,2,3.305290000000241,0.04826300000058836 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,optimistic,0,0.6551070000023174,0.041212000000086846 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,optimistic,1,0.6247909999983676,0.04158300000199233 +42109495232/candidate,b2ac23b7d,issue detail + comments,selected issue comment insert,10000,manual,optimistic,2,0.596599000000424,0.04198299999916344 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,optimistic,0,99.55576600000131,0.24798400000145193 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,optimistic,1,87.2538910000003,0.2492759999986447 +42109495232/candidate,b2ac23b7d,open issues + documents,visible document update,10000,manual,optimistic,2,112.16702200000145,0.24761399999988498 From ce94a39ec95217f5d94272ec6d4dcfb88959a60c Mon Sep 17 00:00:00 2001 From: Test Date: Thu, 5 Nov 2026 14:43:45 -0700 Subject: [PATCH 9/9] Derive grouping type expectations from call possibilities Model grouping accumulation independently instead of storing final keyed answers per case. All 24 generated consumers and expectations remain byte-identical; the last-call-only rival fails native constraints. The owner passes 33 checks, final-source receiving consumer passes, and full DB tsc has zero diagnostics after call-literal narrowing. Production sources, shipped JavaScript, histories, observations, budgets and thresholds remain unchanged. --- docs/contributing/oracle-coverage.md | 5 +- .../2026-11-05-boundary-only-high-review.md | 69 ++++++++++++++++ ...2026-11-05-boundary-only-high-sources.json | 81 +++++++++++++++++++ .../virtual-row-fields-types-oracle.test.ts | 42 ++++++---- 4 files changed, 182 insertions(+), 15 deletions(-) diff --git a/docs/contributing/oracle-coverage.md b/docs/contributing/oracle-coverage.md index e050c54cb5..476b339646 100644 --- a/docs/contributing/oracle-coverage.md +++ b/docs/contributing/oracle-coverage.md @@ -1049,7 +1049,10 @@ Always-required, omit-all-array-keys and erase-prior-grouping mutants each fail native shape constraints. This closes the declared-list inference gap within the generated forms; explicit `any` erasure, including a helper with only its context type argument supplied, retains the existing compatibility behavior. -See the dynamic-grouping evidence in the +The follow-up model refactor derives this key law from each call's declared +possibilities rather than storing a final keyed answer per case. All 24 generated +consumer programs remain byte-identical, and a last-call-only rival fails native +constraints. See the dynamic-grouping evidence in the [high-review record](oracle-reviews/2026-11-05-boundary-only-high-review.md). The high review adds 27 function/conditional forms with aggregate and ordinary diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md index aebd6e791c..19dd0e4b19 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md @@ -777,3 +777,72 @@ on the dynamic-list inference boundary, but it repeats stale measurement and design questions without reconciling their recorded evidence. Hire with supervision for type-boundary review; do not rely on its broad readiness or performance conclusions. CI and readiness remain separate final-head gates. + + +## d894ff6d8 follow-up: derive grouping expectations from calls + +Review 5792502724 covers d894ff6d8. Inline comment 4486373927 correctly finds +that the grouping-boundary grammar stores final `keyed` answers on each case. +The surrounding shape comparison is reusable, but this particular key-presence +law remained a table of labelled consequences. The new independent reducer +uses each call's declared possibilities: any definitely nonempty call requires +a key, otherwise any possibly empty call permits an absent key, otherwise no +call generates one. Empty carrier calls remain represented in the input. +This enacts grouping accumulation without importing production context types +or their conditional inference. The declared-shape authority does not change. + +This is an oracle model-structure repair, not a newly reproduced product defect. +Source inspection establishes the hand-labelled outputs; no invented product +RED supplies that fact. Before the edit, an AST capture records every generated +consumer. After the edit, all 24 consumer programs, expected types, state lists +and observation paths are byte-identical. The refactor narrows no comparison, +changes no input history and preserves the earlier original/hostile-production +RED evidence. A wrong reducer that lets only the last call establish definite +grouping fails native TS2344 constraints at the shared QueryRef and inline +comparisons. The repaired owner passes all 33 checks, and all 403 declared +states reach 24 times. A separate full-source compile initially reports TS2345 +because the generated call array widens its literals to string. Explicit const +annotations repair that test-harness typing. All 24 generated consumers remain +byte-identical, as does minified oracle JavaScript. A fresh final-source consumer +passes, and full DB source/test TypeScript has zero diagnostics. The initial +harness diagnostic receives no product RED credit. +All production sources remain identical to d894ff6d8, so shipped bytes and the +fresh benchmark evidence on that head remain current for this test-only change. + +The independent model is now explicit beside the grouping grammar and is named +in `declareOracle`. The earlier ORC audit continues to apply. ORC-002 and +ORC-016 gain the reusable call-accumulation computation; ORC-006 adds the +last-call calibration. The exact generated-consumer equivalence preserves +ORC-004 reconstruction/range/exclusion, ORC-005 receiving checkpoints, +ORC-013 neighbors and ORC-015 reach. No random budget, history or observation +is removed. The existing explicit-erasure and installed-package limits remain. + +Final-head benchmark run 42113283043 compares merge +2b00a3a76ecbd38c20844717fdc14e191a42c6d0, whose parents are 8feab6ea3 and +d894ff6d8. The unchanged gate passes at 0.63x writes and 0.46x cold overall. +Nested-document writes improve by 90.9% and hydration by 97.1%. A diagnostic +issue-detail write case measures base 0.200682, 0.106460, 0.104528 ms versus +candidate 0.189906, 0.121503, 0.180071 ms. The ranges overlap. That query's +write mean changes by +2.6%, so neither query nor localized gate fails. This +is finite noisy measurement, not a claim that every configuration is faster. +The manifest binds the immutable remote reports and exact parent identities. + +| ID | Original claim or suggestion | Technical verdict and evidence | PR action / durable value | +| --- | --- | --- | --- | +| CRG01 | Inline: derive keyed results with a reusable law over grouping calls rather than hand-labelled outcomes. | Confirmed model-structure issue. The reducer preserves all 24 exact consumer programs and rejects a last-call-only rival with native constraints. The major functional-correctness label overstates the evidence: no new production counterexample was supplied. | fixed-now; primary public-type owner and this record. | +| CRG02 | Review body repeats the call-classification/reducer request. | Same claim and proposed repair as CRG01. | duplicate of CRG01, preserving the body occurrence. | +| CRG03 | Repeated default 80% docstring threshold requires more docstrings. | No repository authority establishes that requirement. | duplicate of CRE02 and the earlier refutation; optional documentation feedback remains preserved. | +| CRG04 | Summary: a fresh d894ff6d benchmark is not reported. | Stale after remote run 42113283043 passes, with its diagnostic flag retained. | stale; exact reports and source identity remain bound here. | +| CRG05 | The CSV is excluded and was not inspected. | Accurate reviewer evidence limit. The committed table and immutable reports remain available. | accepted-design for review scope, with no reduction of this PR's evidence obligation. | +| CRG06 | Consider the local CodeRabbit CLI after repair. | Optional tooling suggestion. The native owner, compiler, equivalence and calibration runs already supply the requested validation. | already-fixed validation goal; preserve the optional tool suggestion without installing or invoking it. | +| CRG07 | Automatic review is paused after reviewing d894ff6d8. | Accurate bot state. Its last covered semantic production head is d894ff6d8. | accepted-design for bot operation; later test-only changes are not claimed as a fresh bot review. | + +Loss accounting: seven occurrences = one fixed-now + two duplicates + one +stale + one already-fixed + two accepted-design. The raw inline, full review +body, summary qualifications and optional suggestion remain preserved. No +confirmed-open, deferred or product-decision item remains in this review. +The reviewer identifies a real oracle-law presentation defect and cites the +right authority, but supplies only static evidence and repeats a stale timing +claim. Hire with supervision for oracle-structure review. The final test-only +change receives this self-review and native validation; the paused bot's +covered head is reported separately from CI and final readiness. diff --git a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json index 5486da204e..409930a302 100644 --- a/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json +++ b/docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-sources.json @@ -473,5 +473,86 @@ } ], "limits": "Finite inferred list forms; explicit any erasure including context-only groupKeys generic retains compatibility behavior; installed-package types are a separate receiving path." + }, + "ciD894GroupingModel": { + "parentHead": "d894ff6d848f7dcdba170ef6fc7aabe8edeb2b89", + "review": 5792502724, + "inline": 4486373927, + "sourceSha256": { + "packages/db/tests/query/virtual-row-fields-types-oracle.test.ts": "2c7c149d340dfff3f876b66a6de03a5f57ec61330359a933c08e7d02742b11cf", + "docs/contributing/oracle-coverage.md": "14fe312392814f313d8c7128630a17c392059a4be57db9960b43dacfcb670223", + "docs/contributing/oracle-reviews/2026-11-05-boundary-only-high-review.md": "2cda18f0d2b5e798a18451a9c2843dcb23afaddb5bef652a0be0d57207c1e7dc" + }, + "evidenceSha256": { + "d894-review-5792502724.md": "cd6f50f19c0f2d631279842dc1cffd5e904c2be580eedd8172370e6fc6087c81", + "d894-review-inline-4486373927.md": "42c0a878647e9e2b97669bd9d5cae13020d8539c7276be19fc95cda340420d55", + "d894-review-summary.md": "a5d28fd38a74a378769530617ca9053be943cf887fbd622fadad02d8c1e6c6f0", + "capture-grouping-model.mjs": "d3b64bd4380beb6c315e90e2cdb8e34c18c898fe5c4cb7bcb5073e0b616967c3", + "grouping-model-equivalence.json": "2e3832f897df6dc2ac52c631b98d67e96de8e2e73bd78d4fd651e28ac94993ad", + "run-grouping-model-calibration.py": "7f08495383636e69068bedd57860f52a26c98bebe18bb2ba7d79c4b84f927689", + "grouping-model-last-call-calibration.log": "4aa7aad8299f052f5eb9d73e368e499021c780487b94e5903392c8201bc85cd1", + "grouping-model-calibration.json": "a0eb57bf218ffca5aa48ac9018232edb9943195cba73fc65fc4da64c7eda3946", + "grouping-model-green.log": "e5ae14a7b52f70a1428d5bb86ecb926858d5ba109d8da77ca8e6b361e277c188", + "grouping-model-full-tsc.log": "1aa3b7fd7738d32c74cc614dcb0b967a99bf19b1ad3ccd63b59339244d67dcc5", + "grouping-model-full-tsc-final.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "grouping-model-focused-final.log": "0d338eb922b6531478e246457ca21de55122551efcd8c0beb5ce468d240614b3", + "grouping-model-literal-erasure.json": "076c5621ef63b375723ba65d0a0af9bf9d2baf47b9050962a7345272eba6940e", + "grouping-model-lint.log": "89d7da780deb04850db632f478bc4155d23659849c0e5bec6d114c74dc9d5168", + "final-d894ff-ci-binding.json": "d0a62e745f4b01d0703fb27f223a2e824afd8620d2ffa52c28e0a91e3b252332" + }, + "productionChanged": false, + "generatedConsumersIdentical": 24, + "nativeOwnerGreenChecks": 33, + "finalFocusedGreenChecks": 1, + "fullDbTscDiagnosticsAfterLiteralNarrowing": 0, + "initialHarnessTscDiagnostic": "TS2345 string[] needs literal narrowing; not product RED", + "calibration": { + "wrongModel": "last call decides definite grouping", + "exit": 1, + "diagnosticCodes": [ + "TS2344" + ], + "nativeConstraintFailure": true + }, + "benchmark": { + "head": "d894ff6d848f7dcdba170ef6fc7aabe8edeb2b89", + "merge": { + "parents": [ + "8feab6ea3eaae4456f738da39fa93508ddd5cc01", + "d894ff6d848f7dcdba170ef6fc7aabe8edeb2b89" + ], + "sha": "2b00a3a76ecbd38c20844717fdc14e191a42c6d0" + }, + "run": 42113283043, + "gate": "PASS", + "writeRatio": 0.63, + "coldRatio": 0.46, + "diagnosticWriteFlags": 1, + "hashes": { + "comparison.md": "19dd3fa82c54bc4bdf32e2eeda8ca935c69aac842d71418f5d8fc464ab3c9993", + "candidate.json": "1bdc716eac9a294270fe0b103015ebd1c7e9afb3db2d63e33e895a5e03b168a0", + "base.json": "e20d3576009092e3d4801f7b3e3d26690738d281ec0353f157c2969a2586b126" + }, + "diagnosticCase": { + "identity": [ + "issue detail + comments", + "selected issue comment insert", + "100", + "none", + "synced" + ], + "base": [ + 0.20068200000014258, + 0.1064600000001974, + 0.10452800000007301 + ], + "candidate": [ + 0.18990600000006452, + 0.12150300000007519, + 0.1800709999999981 + ] + } + }, + "reviewPausedAfter": "d894ff6d848f7dcdba170ef6fc7aabe8edeb2b89" } } diff --git a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts index 92dd8f2ed5..d1328a66de 100644 --- a/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts +++ b/packages/db/tests/query/virtual-row-fields-types-oracle.test.ts @@ -88,6 +88,16 @@ const authoredPaths = [ ] as const const authoredKinds = [`structured`, `functional`] as const const groupedForms = [`keys-first`, `keys-last`, `aggregate`] as const +type GroupingCall = `empty` | `possible` | `nonempty` +// Grouping accumulates expressions. One definitely nonempty call guarantees a +// generated key; otherwise an admitted empty list makes that key optional. +// These facts describe declared inputs, independently of production contexts. +function groupingKeyFor(calls: ReadonlyArray) { + if (calls.includes(`nonempty`)) return true + if (calls.includes(`possible`)) return `optional` + return false +} + // Empty callbacks are legal no-ops. Accumulation distinguishes an empty final // call from erasing real grouping that an earlier call established. const groupingBoundaries = [ @@ -95,49 +105,49 @@ const groupingBoundaries = [ name: `empty-callback-first`, expressions: `.groupBy(() => [])`, before: true, - keyed: false, + calls: [`empty`], }, { name: `empty-callback-last`, expressions: `.groupBy(() => [])`, before: false, - keyed: false, + calls: [`empty`], }, { name: `empty-wrapper-first`, expressions: `.groupBy(groupKeys(() => []))`, before: true, - keyed: false, + calls: [`empty`], }, { name: `empty-wrapper-last`, expressions: `.groupBy(groupKeys(() => []))`, before: false, - keyed: false, + calls: [`empty`], }, { name: `one-then-empty`, expressions: `.groupBy(groupKeys(({ groupSource }) => groupSource.id)).groupBy(() => [])`, before: true, - keyed: true, + calls: [`nonempty`, `empty`], }, { name: `empty-then-one`, expressions: `.groupBy(() => []).groupBy(groupKeys(({ groupSource }) => groupSource.id))`, before: true, - keyed: true, + calls: [`empty`, `nonempty`], }, { name: `callback-one`, expressions: `.groupBy(groupKeys(() => [])).groupBy(({ groupSource }) => [groupSource.id])`, before: true, - keyed: true, + calls: [`empty`, `nonempty`], }, { name: `explicit-context-key`, expressions: `.groupBy(groupKeys>(({ groupSource }) => groupSource.id))`, before: true, - keyed: true, + calls: [`nonempty`], }, ...[`callback`, `wrapper`].flatMap((form) => [`mutable`, `readonly`, `union`].flatMap((list) => @@ -154,7 +164,10 @@ const groupingBoundaries = [ name: `possible-${form}-${list}-${nonempty ? `one` : `empty`}`, expressions: `${form === `callback` ? `.groupBy(groupKeys(() => []))` : ``}.groupBy(${form === `wrapper` ? `groupKeys(${callback})` : callback})`, before: true, - keyed: `optional`, + calls: + form === `callback` + ? ([`empty`, `possible`] as const) + : ([`possible`] as const), } as const }), ), @@ -163,19 +176,19 @@ const groupingBoundaries = [ name: `nonempty-tuple-wrapper`, expressions: `.groupBy(groupKeys(({ groupSource }): readonly [PublicRef['id']] => [groupSource.id]))`, before: true, - keyed: true, + calls: [`nonempty`], }, { name: `one-then-possible`, expressions: `.groupBy(groupKeys(({ groupSource }) => groupSource.id)).groupBy((): ReadonlyArray['id']> => [])`, before: true, - keyed: true, + calls: [`nonempty`, `possible`], }, { name: `possible-then-one`, expressions: `.groupBy((): ReadonlyArray['id']> => []).groupBy(groupKeys(({ groupSource }) => groupSource.id))`, before: true, - keyed: true, + calls: [`possible`, `nonempty`], }, ] as const // Seven through nine are neighboring depths around the former cutoff. Sixteen @@ -576,7 +589,8 @@ function consumerSource( ? `${base}${grouping.expressions}${selection}` : `${base}${selection}${grouping.expressions}` const declared = `{ id: ${shape.key}${collision.fields.replaceAll(` as const`, ``).replaceAll(`, $`, `; $`)} }` - const expected = `${declared}${grouping.keyed && collision.name !== `key` && collision.name !== `all` ? ` & { readonly $key${grouping.keyed === `optional` ? `?` : ``}: string | number }` : ``}` + const keyed = groupingKeyFor(grouping.calls) + const expected = `${declared}${keyed && collision.name !== `key` && collision.name !== `all` ? ` & { readonly $key${keyed === `optional` ? `?` : ``}: string | number }` : ``}` addWitness( `grouping-boundary/${grouping.name}/${collision.name}`, `{ @@ -910,7 +924,7 @@ declareOracle({ wrappedAggregateForms, wrappedAggregateKinds, ], - model: [consumerSource], + model: [consumerSource, groupingKeyFor], check: [checkConsumer, checkConsumerConstruction], }) test.each(typeShapes)(