Commit Graph
31 Commits
Author SHA1 Message Date
james.maesandClaude Opus 5.5 73de290a93 feat(help): ship the qbit-data-analysis help bundle through QQQ help bundles, with coverage gate
Host-neutral help (deployment-specific facts removed), registered with
HelpBundles, gated by HelpBundleAssertions. QQQ 4.1.0-RC.7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:27:13 -05:00
james.maes e11e1464cd Merge pull request #12 from QRun-IO/feature/tables-populated-defaults
feat: Create rows for analyzable tables, Setup card and table help
2026-10-14 17:47:00 -05:00
james.maesandClaude Opus 5.5 bab162e77c fix: accurate Result cache line, count-only summary, action visible only with settings insert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:43:27 -05:00
james.maesandClaude Opus 5.5 cdce36d119 chore: well-formed STAND-IN marker for the help applier
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:30:33 -05:00
james.maesandClaude Opus 5.5 04d3c01cf3 feat: Create rows for analyzable tables, Setup card and table help so Analysis Settings is never a mystery
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:23:24 -05:00
james.maes 69800f755c Merge pull request #11 from QRun-IO/feature/orb-0.6.9
ci: qqq-orb 0.6.9 (refresh SNAPSHOT dependencies)
2026-10-14 10:45:55 -05:00
james.maesandClaude Opus 5.5 f8d1ed787c ci: qqq-orb 0.6.9 (refresh SNAPSHOT dependencies)
Moves qqq-orb@0.6.8 to qqq-orb@0.6.9, which passes --update-snapshots so cached SNAPSHOT dependencies are re-checked on every build (QRun-IO/qqq-orb#22).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:06:44 -05:00
james.maes 8bda02bc4a Merge pull request #10 from QRun-IO/feature/saved
feat(saved): saved, shared, starred, scheduled and widget analyses, export, SQL handoff
2026-10-14 07:10:01 -05:00
james.maes 93ebd64fbe Merge pull request #9 from QRun-IO/feature/watches
feat(watches): anomaly watches through the alerts SPI, contingent pickers
2026-10-14 07:09:47 -05:00
james.maes a157f18edc Merge pull request #8 from QRun-IO/feature/compare
feat(compare): compare, distribution shift, correlation, scatter and crosstabs
2026-10-14 07:09:35 -05:00
james.maes 894cc98d9b Merge pull request #6 from QRun-IO/feature/pivot
feat(pivot): pivot / group-by explorer and the field-access resolver seam
2026-10-14 07:09:21 -05:00
james.maes 2c52814e33 Merge pull request #5 from QRun-IO/feature/profile-endpoints
feat(api): /qqq/v1 data-analysis extension, core pushdown backend, analyze permission
2026-10-14 07:09:09 -05:00
james.maesandClaude Opus 5.5 69154de566 fix(tables): a new saved analysis, star, watch or run belongs to the inserting user
Found driving the Next UI against the sample app: the UI cannot send the
user's id, and core checks required fields and record locks before the
customizers run. An insert-only field behavior fills empty owner/user
fields with the session user (never on update, so an administrator's
partial edit cannot take ownership); naming another owner is still
refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:49:18 -05:00
james.maes b3c8a0412a Merge remote-tracking branch 'origin/feature/watches' into feature/saved 2026-10-13 22:26:08 -05:00
james.maes 191e96b094 Merge remote-tracking branch 'origin/feature/compare' into feature/watches 2026-10-13 22:23:43 -05:00
james.maes 642401e633 Merge remote-tracking branch 'origin/feature/pivot' into feature/compare 2026-10-13 22:19:46 -05:00
james.maes 35901fe71a Merge remote-tracking branch 'origin/feature/profile-endpoints' into feature/pivot 2026-10-13 22:17:27 -05:00
james.maesandClaude Opus 5.5 bb8b431b7f chore(api): regenerate the OpenAPI fragment against QQQ 4.1.0-RC.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:17:04 -05:00
james.maesandClaude Opus 5.5 1641b32296 fix(stats): pool sparse crosstab categories instead of refusing the test
Chi-square now pools the smallest category into Other one at a time until
every expected count is at least five (rows too, for independence), so a
crosstab with a single-record row still gets a valid test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:14:14 -05:00
james.maesandClaude Opus 5.5 d2c9871d98 feat(saved): saved, shared, starred, scheduled and widget analyses, export, SQL handoff
Extension 1.4.0: saved analyses of every kind re-run as the viewer
(fields they cannot analyze are dropped), owner-or-shared READ through
core record locks with owner-only writes (and a database CHECK so a
private row can never lose its read owner), personal stars, schedules
that run as the owner and mail only recipients who could run the analysis
themselves, CSV/XLSX export, the SQL Workbench handoff, an analysis
dashboard widget, and an Analyses home built from standard widgets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:23:23 -05:00
james.maesandClaude Opus 5.5 43c7571864 feat(watches): anomaly watches through the alerts SPI, contingent pickers
Watches evaluate a metric per time bucket as their owner (SPIKE, DROP,
OUT_OF_RANGE, NEW_CATEGORY, NULL_RATE_CREEP with robust baselines) on a
hidden scheduled process, raise and resolve data.analysis.anomaly alerts
through QAlerts, and offer Evaluate now / Enable / Disable record actions
and a preview endpoint (extension 1.3.0). Pivot and crosstab labels are
human (Yes/No, Average Annual Salary). Contingent fields: a watch's saved
analysis depends on its table, table names use the core tables PVS, and
analyzable/excluded fields pick from the chosen table's fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:34:19 -05:00
james.maesandClaude Opus 5.5 20b8223ce8 feat(compare): compare, distribution shift, correlation, scatter and crosstabs
Extension 1.2.0: compare two filters field by field with deltas and
significance (two-proportion z, Welch's t, chi-square with validity
rules and plain sentences), distribution shift over time with PSI, a
pushed-down Pearson correlation matrix with sampled scatter and trend,
and crosstabs with chi-square and Cramer's V. Pure-Java statistics
checked against scipy reference values; the privacy guard, field access
and drills apply as for profiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:37:03 -05:00
james.maesandClaude Opus 5.5 d591d3d7e8 feat(pivot): pivot / group-by explorer and the field-access resolver seam
POST /tables/{table}/pivot (extension 1.1.0): up to 3 row and 2 column
dimensions with date buckets or nice numeric bins, fields from to-one
exposed joins, count/sum/avg/min/max/distinct/percentile measures,
totals, Other-merging by top-N, the privacy guard and a drill per cell.
FieldAnalysisAccessResolver maps fields to FULL / EXACT_MATCH_ONLY /
NONE (core secured-data tiers when present, FieldSecurityLock otherwise);
only FULL fields are analyzable, drills never name others, and exact-run
cache keys include the user's field-access fingerprint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:56:37 -05:00
james.maesandClaude Opus 5.5 d8b52113ca feat(results): human labels, formatted values, nice bins, date labels, current home
Every metric carries a plain-English label and a display-formatted value
(grouping, percent, the field's display format), histogram bins use nice
edges with formatted labels, date buckets are labelled by unit, warnings
appear only when true, and the Analyses home shows saved analyses,
watches and recent runs with honest empty states (and no mojibake).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:26:45 -05:00
james.maesandClaude Opus 5.5 c90d6c9866 chore: drop the agent handoff note
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:44:00 -05:00
james.maesandClaude Opus 5.5 a91f6c5e03 feat(api): /qqq/v1 data-analysis extension, core pushdown backend, analyze permission
UI API extension data-analysis 1.0.0 (capabilities, column-profile,
distinct-values, table-profile, duplicates, runs) with typed
DataAnalysis*V1 schemas and the committed OpenAPI fragment. The analyze
permission is registered through core TableFeaturePermissionsMetaData.
CoreAnalysisBackend pushes percentiles, stddev, null/blank counts, numeric
and date buckets down through the RC.6 aggregate extensions; estimates
sample natively and scale counts, and the stand-in uses one primary-key
bound instead of an IN list. Builds against QQQ 4.1.0-RC.6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:43:50 -05:00
james.maes 1b9f502e23 Merge pull request #2 from QRun-IO/feature/profiles
feat(engine): column and table profiles, drill-through, privacy guard and exact runs
2026-10-13 17:12:32 -05:00
james.maesandClaude Opus 5.5 261d0213ad feat(engine): column and table profiles, drill-through, privacy guard and exact runs
The phase (b) analysis engine: typed results (metrics with drill
filters, charts as data), column and table profiles, distinct values and
duplicates, AnalysisSecurity (analyze permission, table READ, personalized
table and field security, analyzable/excluded fields), the effective
per-table config, the minimum group size guard, data versions, async exact
runs cached in data_analysis_run, and DataAnalysisService as the facade.
The AnalysisBackend port has an RC.5 stand-in that pushes down what core
supports today and streams the rest with row limits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 16:26:15 -05:00
james.maes 4cb5ad910e Merge pull request #1 from QRun-IO/feature/repo-standard
chore: QRun qbit repo standard, producer, tables, permissions and app home
2026-10-13 15:39:30 -05:00
james.maesandClaude Opus 5.5 1076daacde chore: bring the repo to the QRun qbit standard, add producer, tables and home
Repository standard (LICENSE, NOTICE, community pointers, CHANGELOG,
CLAUDE/AGENTS, dependabot, CircleCI with the configure-package-install
pre-step, the release-rc caller workflow, Maven wrapper, checkstyle,
JaCoCo gates, QQQ 4.1.0-RC.5). DataAnalysisQBitProducer and config, the
six data_analysis_ tables with standard permission rules and user record
locks, the analyze permission stand-in, the Analyses app home with real
counts, and the Postgres schema script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:32:48 -05:00
james.maes 2f5e16f104 Initial commit 2026-10-13 15:07:02 -05:00