Skip to content

Add BoxLang and CFML observability with portable feedback capture - #49

Merged
elpete merged 15 commits into
developmentfrom
feat/observability-feedback
Oct 8, 2026
Merged

elpete merged 15 commits into
developmentfrom
feat/observability-feedback

Conversation

@elpete

@elpete elpete commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Adds opt-in server request/worker tracing, isolated propagation, runtime/qb query adapters, cbq attempt instrumentation, CacheBox decorators, HTTP spans, logs, trace metrics, check-ins, and bounded typed envelope delivery. Existing error APIs remain compatible and gain trace correlation; initialization and timestamp regressions have coverage.

Ships an official-SDK browser companion with Web Vitals, navigation integration, accessible feedback controls, conservative capture defaults, screenshots and eligible buffered replay. Bundled assets require no consumer Node build. Vue/Inertia remains a thin consumer adapter. Transaction and standalone-span filters remove interaction selectors, credential-bearing URLs and unapproved attributes, including supplied-client integration.

Cache keys use bounded hashed arrays; queue spans use the standard retry attribute and assigned publish message IDs. Sentry's Queries, Queues and Caches dashboards recognize synthetic signals. A selected, signed-in CommuniArts user produced accepted feedback with a provider PNG, linked replay playback and seeking, and preserved unsaved form values. Synthetic fixtures were removed.

Validation: current default module harness passes 46/46 on BoxLang 1.18.0+66, Lucee 5.4.8.2 and Adobe 2023 update 25 with ColdBox 7.5.2. Prior Lucee 6.2.8.20 checks pass 45/45 with ColdBox 7.5.2 and 6.11.0. Real HTTP checks cover Unicode/binary envelopes, acceptance/rejection, rate limiting and bounded delivery. Empty shutdown, cross-thread queue regressions, original outcomes under completion failure, and missing/readable source context are covered. Lucee 5 cleanup avoids a compiler bug with nested catches in finally blocks; foreign trace paths do not invoke CF virtual filesystems. Formatting is stable, checks reject unformatted files, and CI pins CFFormat 0.21.0 without generating commits. CI starts its own envelope receiver and checks a non-throwing health endpoint.

Earlier CommuniArts installed-module request 1/1, focused Vitest 67/67, targeted build, optional cbq hooks 3/3 and browser companion 28/28 remain separate evidence. Real Lucee 6 PostgreSQL checks covered failures, listener transformations, cache metadata and de-duplication. Adobe local proof required engine packages and Commons IO; its additional ColdBox 6 attempt failed during runtime bootstrap and is unqualified. See docs/verification.md for exact runtime/provider evidence and deferred checks.

qb 14.1.0 and cbq 7.0.2 are published. Current BoxLang uses qb failure hooks and withQuerySpan for caught direct-query failures until ortus-boxlang/BoxLang#648 is reviewed and released. The complete 13-job engine/framework CI matrix and formatting passed on 6b56cc1: https://github.com/coldbox-modules/sentry/actions/runs/37221975684. CommuniArts full CI, browser/provider matrices and production deployment remain separate.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

lucee@5 ColdBox ^7.0.0 Test Results

49 tests   49 ✅  1s ⏱️
 6 suites   0 💤
 1 files     0 ❌

Results for commit e8642e2.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

lucee@6 ColdBox be Test Results

49 tests  +19   49 ✅ +19   1s ⏱️ -1s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2018 ColdBox ^6.0.0 Test Results

49 tests  +19   49 ✅ +19   2s ⏱️ -1s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

lucee@5 ColdBox be Test Results

49 tests  +19   49 ✅ +19   2s ⏱️ +2s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2023 ColdBox be Test Results

49 tests   49 ✅  2s ⏱️
 6 suites   0 💤
 1 files     0 ❌

Results for commit e8642e2.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

lucee@5 ColdBox ^6.0.0 Test Results

49 tests  +19   49 ✅ +19   2s ⏱️ +2s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

boxlang@1 ColdBox be Test Results

49 tests  +19   49 ✅ +19   1s ⏱️ -1s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2018 ColdBox ^7.0.0 Test Results

49 tests   49 ✅  1s ⏱️
 6 suites   0 💤
 1 files     0 ❌

Results for commit e8642e2.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2021 ColdBox ^7.0.0 Test Results

49 tests  +19   49 ✅ +19   1s ⏱️ -1s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2023 ColdBox ^7.0.0 Test Results

49 tests  +49   49 ✅ +49   2s ⏱️ +2s
 6 suites + 6    0 💤 ± 0 
 1 files   + 1    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2021 ColdBox ^6.0.0 Test Results

49 tests  +19   49 ✅ +19   2s ⏱️ +2s
 6 suites + 3    0 💤 ± 0 
 1 files   ± 0    0 ❌ ± 0 

Results for commit e8642e2. ± Comparison against base commit 609be57.

This pull request removes 1 and adds 20 tests. Note that renamed tests count towards both.
tests.specs.SentryTests ‑ Sentry Module finds function names via functionLineNums for synthetic tagContext frames
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation closes a timed out attempt on another thread and cleans the worker scope after late exit
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation composes Lucee transformations without exporting callback values
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation does not duplicate a manual query span when a runtime listener observes it
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation finishes a redirected request once and restores the previous scope
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation keeps false, zero, and empty cached values as hits while delegating the provider
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation persists trace context for chained publication after callback scope cleanup
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves failures unless an existing Lucee error listener handles them
tests.specs.ExecutionIsolationSpec ‑ isolated execution and cache observation preserves trusted sampling baggage without credential labels
tests.specs.ObservabilitySpec ‑ Native observability buffers structured logs and trace metrics and matches check-ins
tests.specs.ObservabilitySpec ‑ Native observability honors parent sampling and rejects malformed headers
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2023 ColdBox ^6.0.0 Test Results

49 tests   49 ✅  2s ⏱️
 6 suites   0 💤
 1 files     0 ❌

Results for commit e8642e2.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

adobe@2021 ColdBox be Test Results

49 tests   49 ✅  1s ⏱️
 6 suites   0 💤
 1 files     0 ❌

Results for commit e8642e2.

♻️ This comment has been updated with latest results.

@elpete
elpete marked this pull request as ready for review October 5, 2026 03:28
@elpete
elpete merged commit c60cf56 into development Oct 8, 2026
28 of 42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant