docs: publish completed source ingestion measurements

This commit is contained in:
Dotta committed 2026-11-03 22:23:02 -06:00
1 parent dfde99df5a
commit 703b603315
4 files changed
+25 -12

No files matched your search

@@ -1,6 +1,6 @@
# Interleaved append-service measurements (2026-11-03)
The fresh source-layer B0 A/A passed the unchanged noise gates, followed by a passing B0→B1 cursor comparison. At 10k histories, median active append cost falls about **16–22%**; at 100k, about **56–60%**. Every required long-history case beats its observed A/A noise in **5/5 individual pairs**. This measures the real append service and PostgreSQL under the preregistered interleaving. It does not establish application burst completion, browser delivery, batching performance, or production improvement. The remaining source and application gates are pending; the full task is not complete.
The fresh source-layer B0 A/A passed the unchanged noise gates, followed by a passing B0→B1 cursor comparison. At 10k histories, median active append cost falls about **16–22%**; at 100k, about **56–60%**. Every required long-history case beats its observed A/A noise in **5/5 individual pairs**. This measures the real append service and PostgreSQL under the preregistered interleaving. It does not establish application burst completion, browser delivery, batching performance, or production improvement. The current status footnote below distinguishes the now-complete source series from the still-open application gates; the full task is not complete.
## What was measured
@@ -32,7 +32,7 @@ Values are median **active milliseconds per 512 attempts**, followed by observed
All nine A/A timing cases met maximum paired relative difference ≤20% and median arm drift ≤10%; their largest observed values were 11.830% and 6.133%. Every required 10k/100k case passes both the median and individual-pair improvement requirements. The 1k cases pass nonregression. In particular, 1k mixed replay has only 3/5 pairs beyond noise, so it does not meet the four-pair improvement requirement. The [summary](native-event-ingestion-2026-11-03/interleaved-source/summary.json) retains all comparisons and sample counts.
A separately seeded SQL diagnostic at 100k ordered history records a baseline retained-history scan of 100,032 entries versus a one-row retained-event identity lookup and bounded projection work for B1. All candidate structural guards pass. SQL calls/attempt remain 5→5 ordered and 4→4 mixed replay; warm suffix falls 6→5. Transactions remain one per attempt. These counts describe the separate diagnostic workload; fewer calls alone are not the performance result.
A separately seeded SQL diagnostic at 100k ordered history records a baseline retained-history scan of 100,032 entries versus a one-row retained-event identity lookup and bounded projection work for B1. All candidate structural guards pass. Owner prepared-query calls/attempt remain 5→5 ordered and 4→4 mixed replay; warm suffix falls 6→5. Transactions remain one per attempt. These counts describe the separate diagnostic workload; fewer calls alone are not the performance result. The counter wraps Drizzle `preparedQuery.execute` in the event owner; it excludes driver-generated `BEGIN`/`COMMIT` and other unobserved wire SQL. Transactions are counted separately. Original raw JSON field names such as `sqlCalls` remain unchanged and do not mean all PostgreSQL protocol statements.
For 100k ordered samples, descriptive median backend CPU is 10.332→1.719 ms/attempt and owner-process CPU is 1.960→1.839 ms/attempt. CPU is not a separately qualified improvement gate here. Linux backend observations are tick-quantized at 10ms per block; an eight-block sum can carry up to 80ms aggregate quantization uncertainty. Owner CPU and memory describe the shared benchmark process, excluding an assembled server, Rust Runner, browser and external load driver. Heap deltas do not identify owned allocations or establish allocation efficiency. The separate 32-transaction SQL diagnostic records median lock-held-through-commit intervals of 14.17→5.89ms; acquisition query duration includes network/row-read work and is not pure lock wait.
@@ -76,4 +76,4 @@ node --import "$SOURCE_B1_ROOT/server/node_modules/tsx/dist/loader.mjs" "$EXPERI
The designated immutable SOURCE tags are `native-ingestion-benchmark-2026-11-03-fixture2-{b0,b1,b2}`; APP tags are `native-ingestion-benchmark-2026-11-03-ce33-{b0,b1,b2}`. Resolve them to the exact full commits above before running; their names do not replace commit verification. The pinned SOURCE_B1 root must be `e9b909015ad3d517f28c45f0c66c8f41d6112b4b`, not a newer delivery checkout. The gates remain the unchanged published module. Source-only validation uses the same command with `--check-source`; report validation uses `--validate-report=REPORT` and the matching phase, baseline and exact measurement/source bytes. The [dependency helper](native-event-ingestion-2026-11-03/interleaved-source/compare-runtime-dependencies.cjs) accepts repository, immutable before/after refs and a new output JSON path; its path/role-label-only adaptation is separately declared. It reads Git and the locked yaml parser without launching a database.
B1 A/A, incremental B1→B2 and combined B0→B2 source measurements, application/browser comparisons, batching/control responsiveness gates and final delivery checks remain separate. Nothing in this source report establishes completion of the full ingestion plan or a deployed-production gain.
Current source-series status: B0 A/A, B0→B1, B1 A/A, B1→B2 and B0→B2 have all passed their source-owner cost gates; the incremental/combined reports belong to [the batching PR](https://github.com/paperclipai/paperclip/pull/18818). This report retains only its own B0→B1 paired samples. Application/browser comparisons, batching/control responsiveness and final delivery checks remain separate: the latest full H4c B0 and B2 attempts both failed the original 120-second streaming deadline, no application A/A is accepted, and the prospective H5 observation protocol has not run. Upstream disk/journal diagnosis is diagnostic only. Nothing here establishes completion of the full ingestion plan or a deployed-production gain.
@@ -1,6 +1,6 @@
# Native event ingestion measurements (2026-11-03)
Historical cursor service acceptance passed at B0 `83b5f7d` and B1 `7922802f`. The current common-base revisions require fresh qualification; their first A/A run failed the frozen noise gates, so no candidate comparison has started. Application and batching acceptance remain in progress. These measurements use the actual append service and real PostgreSQL on a dedicated quiet host. They establish a local service improvement.
The tables and raw reports below are **historical** cursor service evidence at B0 `83b5f7d` and B1 `7922802f`. Fresh [interleaved cursor source measurements](2026-11-03-native-event-ingestion-interleaved.md) and the incremental/combined source series in [the batching PR](https://github.com/paperclipai/paperclip/pull/18818) now pass all five source stages: B0 A/A, B0→B1, B1 A/A, B1→B2 and B0→B2. Their estimand is active source append cost, not whole-application burst completion. The first common-base monolithic A/A failed and remains excluded; it was not silently converted into a pass. Application acceptance remains open and the full task is incomplete.
The long-history cursor/range operations are bounded; replay still performs its required indexed event identity lookup. At 100k seeded events, the separately recorded baseline plans examine about 100,000 source entries; the candidate performs a one-row identity lookup and bounded projection work. The raw reports retain the SQL and plans.
@@ -8,7 +8,7 @@ The long-history cursor/range operations are bounded; replay still performs its
Each ordinary sample contains **512 append attempts** (16 groups of 32). Five baseline/candidate pairs alternate order; two warmups, seeding, rebuild preparation and verification are excluded. The mixed replay case contains 256 new events and 256 exact duplicates; duplicate attempts reuse receipts and allocate nothing. The table reports median wall time per 512 attempts, not individual event latency.
| Seeded history / case | B0 ms/512 | B1 ms/512 | Change | Pairs beating noise | A/A noise | SQL calls/attempt B0 → B1 |
| Seeded history / case | B0 ms/512 | B1 ms/512 | Change | Pairs beating noise | A/A noise | Owner query calls/attempt B0 → B1 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| 1,000 / ordered | 3821.9 | 3602.4 | -5.74% | 0/5 | 14.603% | 5 → 5 |
| 1,000 / replay | 3115.1 | 3044.4 | -2.27% | 0/5 | 5.697% | 4 → 4 |
@@ -20,6 +20,8 @@ Each ordinary sample contains **512 append attempts** (16 groups of 32). Five ba
| 100,000 / replay | 7417.3 | 2972.4 | -59.93% | 5/5 | 1.829% | 4 → 4 |
| 100,000 / warm-suffix | 8526.7 | 3616.2 | -57.59% | 5/5 | 1.207% | 6 → 5 |
The diagnostic counter records event-owner Drizzle `preparedQuery.execute` calls only, excluding driver-generated `BEGIN`/`COMMIT` and other wire SQL; transactions are counted separately. Historical raw JSON keeps its original `sqlCalls` field names.
All six required 10k/100k cases exceed their observed per-case A/A envelope in **5/5 individual pairs** and in the median. The 1k cases pass nonregression; 1k ordered and replay gains remain inside noise. Every A/A timing case met the preregistered maximum paired difference ≤20% and median drift ≤10%; the largest median drift was 1.791%. Both full experiments completed correctness checks and cleanup.
Transactions remain one per attempt in this cursor slice. For 100k ordered writes, median backend CPU falls from 10.215 to 1.738 ms/attempt; owner-process CPU falls from 1.958 to 1.824 ms/attempt. The backend clock has 10 ms resolution across each 512-attempt sample. Owner CPU describes the benchmark process, excluding the assembled application, Rust, Chromium and load driver.
@@ -37,4 +39,4 @@ See [experiment commands](../../scripts/native-ingestion/README.md) and the [imp
Use `gzip -dc <report.json.gz>` to inspect the complete original JSON. Its byte-for-byte SHA256 is recorded above and in the summary. No p99 is inferred from five service samples. The initial noisy calibration and failed browser qualifications remain excluded; the final report will record their failure ledger alongside the application comparisons. The [local-journal diagnostic](2026-11-03-native-event-ingestion-local-journal.md) records a separate baseline bottleneck and its measurement limits.
Application streaming, control responsiveness, batching, profile-only backlog/resource diagnostics, final delivery revisions and current-head CI remain pending. The live-provider functional journey has passed separately. This report makes no deployed production or 10,000-agent qualification claim.
Fresh source acceptance is recorded in the linked source reports; the historical tables above are unchanged. Full H4 application acceptance remains failed: the latest H4c B0 and B2 attempts both missed the original 120-second streaming deadline, and earlier failures remain retained. No application A/A, application throughput gain or browser-latency improvement is accepted. The H5 observation protocol is prospective and unexecuted; upstream disk/journal findings are diagnostic only. Sparse-stream/control responsiveness, successful complete application comparisons, final delivery revisions and current-head CI remain open. The live-provider functional journey passed separately. The full ingestion task is not complete, and this report makes no deployed production or 10,000-agent qualification claim.
@@ -62,8 +62,8 @@
},
{
"path": "packaging-verification.json",
"bytes": 1176,
"sha256": "143fb11e55a78977d4d6bced8a236e98ed4b46e855889f7c94e4b0736d8cee86"
"bytes": 1659,
"sha256": "81f0d4234bc251dcc806e3b20568080ea729d23774a19aea10fda3bf3e65ffe9"
},
{
"path": "prospective-protocol.md",
@@ -157,8 +157,13 @@
"externalOwnedFiles": [
{
"repositoryPath": "doc/benchmarks/2026-11-03-native-event-ingestion-interleaved.md",
"bytes": 13105,
"sha256": "69f0b1895e1c72f9ddfaeb31c2f0152cf63fed077e780832aaeff687112f4e0d"
"bytes": 13923,
"sha256": "3e8308f0abb33036388f2c88f8f1e87732279cc0490215fdf5a935fc59a61dae"
},
{
"repositoryPath": "doc/benchmarks/2026-11-03-native-event-ingestion.md",
"bytes": 5850,
"sha256": "a98c829eb271ee2319dd8ce7eca17910377ddd2c8848c6cb5f0ee973781fd7a3"
},
{
"repositoryPath": "scripts/benchmark-native-event-ingestion-interleaved.ts",
@@ -18,8 +18,8 @@
"node --check gates.mjs"
],
"scan": {
"files": 26,
"decompressedBytes": 15713136,
"files": 27,
"decompressedBytes": 15719804,
"actualCredentialSourcePresent": true,
"actualCredentialMatches": 0,
"patternMatches": {
@@ -27,5 +27,11 @@
"vault_or_person_path": 0,
"nonloopback_credential_url": 0
}
},
"statusAndLabelRefresh": {
"scope": "Docs/status/owner-query labels only; no new measurement",
"historicalPrimaryNumericTableRowsUnchanged": true,
"ownerQueryCounterScope": "Event-owner Drizzle preparedQuery.execute only; excludes driver BEGIN/COMMIT and other wire SQL; transaction counts separate; legacy JSON unchanged",
"allFiveSourceStageStatus": "Passed source-owner cost gates; application/H4 original120 gate remains failed; H5 prospective/unexecuted"
}
}