Tags give the ability to mark specific points in history as being important
-
1.0.0-beta1
40666ad4 · ·1.0.0-beta1: API freeze and endpoint hardening Freezes the collector contract for the entire 1.x line and lands the production-readiness hardening pass on /cwv/beacon. The substrate has been exercised by three async decorators, seven panel contributors, one probe collector, and two synchronous collectors without contract changes since alpha7. What freezes: - Four collector interfaces (synchronous, async-decoration, probe, panel-contribution). - Beacon payload envelope JSON shape. - cwv_beacons and cwv_probes table schemas. - AsyncContextStore service contract. - CwvPanelWeight constants. Contract-cleanup drops: - Alpha6-envelope flat-field fallbacks in BeaconRequest. - Legacy cache_state field parsing in DrupalCacheCollector. Endpoint hardening: - Per-IP flood protection via Drupal's flood service. Default 60/60s/IP; configurable. - Server-side sampling enforcement (ceiling at the controller). - max_rows table-size ceiling (default 0 = unlimited) with FIFO prune; backstop for broken-cron failure mode. - New SECURITY.md documenting attack surface, mitigations, and recommended CDN-side rate-limit configurations. Performance defaults: - Default sampling_rate lowered from 1.0 to 0.1 for new installs. Existing operators keep their explicit value. - New PERFORMANCE.md quantifies DB write load and sizing. Three new config keys land via cwv_update_10008. From this commit forward the 1.x contract is stable for sibling- module authors. RC1 cuts after a two-week soak; 1.0.0 stable cuts after RC1 holds clean. See ROADMAP.md, SECURITY.md, PERFORMANCE.md, and docs/collector-contract.md for the full picture.
-
1.0.0-alpha10
1b1ee3a1 · ·1.0.0-alpha10: render-tree collector + CwvPanelWeight tightening Second content release on the alpha7 collector contract. Same shape as alpha9: implements async-decoration (Shape 2) plus panel-contribution (Shape 4), opt-in via config, zero overhead when disabled. - RenderTreeInstrumentor captures response-level cache metadata: tag count, context count, hottest tag prefix. - RenderTreeCollector ships per-request stats to AsyncContextStore at terminate and renders a Render-tree correlation panel showing CWV metrics bucketed by tag count. - BeaconStorage::correlateByRenderTreeSize aggregation buckets beacons by tag count (0-25 / 26-100 / 101-300 / 301-1000 / 1001+). Opt-in via render_tree_instrumentation_enabled (default FALSE). Default installs pay zero overhead. cwv_update_10007 lands the key on existing installs. Also tightens CwvPanelWeight constants: adds CORRELATION = 200 midband, bumps TIME_SERIES from 200 to 300, repositions the correlation panels (per-route, backend cache, render-tree) into the new band. Fixes the layout discrepancy spotted in alpha9 field testing where AGGREGATION + 100 collided with TIME_SERIES. CwvPanelWeight constants are due to freeze at beta1; alpha10 is the last release where they can move.
-
1.0.0-alpha9
5775dd3d · ·1.0.0-alpha9: backend cache instrumentation The first content release built on the alpha7 collector contract. Surfaces backend cache health (Memcache, Redis, APCu, database, file backends) per request and correlates it with CWV metrics on a new admin panel. - CacheInstrumentor request-scoped service holds per-request counters with per-bin breakdown for hottest-miss tracking. - InstrumentedCacheBackend wraps any CacheBackendInterface and records hit/miss/timing on get and getMultiple. - InstrumentedCacheFactory decorates cache_factory so every bin (including those added by contrib) gets the wrapper. - BackendCacheCollector implements Shape 2 (async-decoration) and Shape 4 (panel-contribution). Renders a Backend cache correlation panel showing CWV metrics bucketed by miss count. Opt-in via backend_cache_instrumentation_enabled (default FALSE). Default installs pay zero overhead; enabled installs pay roughly 5 microseconds per cache get. Validates the one-collector-per-minor-release cadence the alpha7 contract was designed around. Subsequent 1.x minor releases add render-tree (1.1), database (1.2), runtime health (1.3), external services (1.4) on the same contract. See ROADMAP.md and docs/collector-contract.md for the trajectory.
-
1.0.0-alpha8
de6dd0bd · ·1.0.0-alpha8: alpha7 field-test fixes Two showstopper bugs surfaced by alpha7 field testing on a real LSCache-fronted Drupal 11 site. Neither required architectural rework; both are one-line fixes against the alpha7 substrate. No contract changes, no new features. Operators on alpha6 should upgrade past alpha7 directly to alpha8; alpha7 should not be deployed. - cwv_update_10003 split into addField + addIndex so the MySQL schema driver can normalise the index without looking up a column type that doesn't exist yet. Existing alpha6 sites can now upgrade. - BeaconController async-context foreach iterator renamed from $value to $async_value to break the variable shadow with the float metric value declared earlier in receive(). Every alpha7 beacon with at least one async observation was being silently dropped. README documents the synthetic-probe accuracy caveat on edge-cached and proxied stacks.
-
1.0.0-alpha7
ecb77d77 · ·1.0.0-alpha7: collector contract substrate The most architecturally significant release in the 1.x line. Reframes cwv from "real-user CWV with cache visibility" to a correlation substrate where cache state is one of many backend signal axes. The contract defines four collector shapes (synchronous, async-decoration, probe, panel-contribution) frozen at beta1 and lived with for the entire 1.x line. What ships in alpha7: - Four interfaces and default base classes for the collector shapes. - Single-tag service discovery (cwv_collector with interface introspection). - New beacon payload envelope: forwards the entire serverTiming array, condensed navigation timing, viewport object. Backward compatibility for the alpha6 envelope rides out cached HTML; drops at beta1. - Request ID mechanism: kernel.response stamps Server-Timing: cwv-rid;desc=<id> on every page response. Beacon JS forwards it. AsyncContextStore reconciles page-request observations with the later-arriving beacon. - Four migrated/new collectors exercising every shape: UserStateCollector and DrupalCacheCollector (synchronous), KernelTimingDecorator (async-decoration), EdgeCacheProbeCollector (probe), five panel contributors (cache comparison, distribution, per-route, daily counts, recent measurements). - cwv_probes table for synthetic observations. Cache-vendor- agnostic header parsing covers LSCache, Cloudflare, Varnish, Fastly, AWS CloudFront, X-Drupal-Cache, X-Drupal-Dynamic-Cache. No new end-user features land in alpha7; this is the substrate phase. Backend cache instrumentation, render-tree, database, and external-services collectors all build on this contract in the 1.1+ minor releases. See docs/collector-contract.md for the full design and ROADMAP.md for the multi-year trajectory.
-
1.0.0-alpha6
1e9f2967 · ·1.0.0-alpha6: operator-UX polish from alpha5 field testing Three operator-UX nits surfaced by alpha5 field testing on an LSCache-fronted Drupal 11 site. None changed alpha5 correctness, but together they made the lead diagnostic look broken on edge- cached stacks. No API changes. - Cache state comparison falls back from drupal_cache.page to drupal_cache.dynamic when page is empty. - Empty-state copy mentions both cwv-pc and cwv-dc. - README documents cwv-pc non-availability on edge-cached stacks. - README's developer-API column list corrected. See ROADMAP.md for full details.
-
1.0.0-alpha5
c3e0b89d · ·1.0.0-alpha5: Server-Timing replaces cookie cache-state stamping Field testing alpha4 on an LSCache-fronted site exposed that the Set-Cookie + absolute-expires pattern is fundamentally incompatible with response caching. Alpha5 swaps to a Server-Timing header, which has no expiry mechanism and so survives edge caching cleanly. See ROADMAP.md for full details.
-
1.0.0-alpha4
bfcad2bd · · -
1.0.0-alpha3
b975198e · · -
1.0.0-alpha2
2cebe32e · · -
1.0.0-alpha1
fdcf9b74 · ·