Skip to content
QortexOS Documentation

0.5.0-alpha

QortexOS v0.5.0-alpha

Released

Added
  • Partitioned platform tables now get their upcoming partitions created and their retention applied on a weekly schedule.
  • The monthly rolling-forecast refresh now records a variance event for every account whose plan-versus-actual gap exceeds the tenant's variance thresholds (2% revenue, 5% cost by default), and the refresh's variance figures now compare the plans against the month's real actuals.
  • Monthly budget variance events now have their database home: one event per account-month and comparison family, the 2% revenue and 5% cost thresholds seeded as editable policy rules for every tenant, and a pending evidence code until the classifier runs.
  • CRITICAL alerts, and alerts whose materiality reaches the impact band that holds $200K (impacts of $100K and up), are always delivered: no relevance score, analyst override or filtering rule can suppress them, except that a duplicate-detection or redundancy-consolidation rule may still consolidate such an alert with the alerts it repeats.
  • Contract templates now record whether they are a private copy, offered inside the tenant's library or a platform original, and security alerts can name the regulation they violate.
  • Tenant settings can now be provisioned over the API: a create endpoint mints the settings anchor for a tenant that has none, and a get-by-id endpoint reads it.
  • Finance screens can ask for the current plan of record directly: one read returns the locked budget for a reference date, or the newest earlier one, and says which rule applied.
  • Locking a budget now reports the rolling-forecast lines it mirrored from the plan of record, a refresh endpoint re-runs the rolling forecast for a month, and forecast-line sources validate against the four legal values.
  • Data connector lists can now be sorted by business criticality.
  • The Validation Workbench can now list a budget's validation runs directly, so the run picker and history show every run instead of only the runs visible on the first page of checks.
  • Contract, vendor-agreement, peer-benchmark, connector-health and serving-deployment lists gain the server-side windows and predicates their dashboards count over, so the capped-page captions can come off those figures.
  • Three server-side aggregates replace client-side page reductions: vendor relationship spend and lifecycle counts, per-metric peer benchmark percentiles with an as-of date, and a connector-health day summary.
  • The vendor relationship, peer benchmark and connector-health strip aggregates are now computed by the database in one pass instead of from a single page of rows in the browser.
  • The Connector Console's detail panel now lets you review and change which data facets a connector syncs, after the connector has been created.
  • Contracts in the Renewal Console can now be marked as renewed directly from the registry.
  • A locked budget now carries the date it becomes the plan of record, so a budget approved for a future period can be held until that date; the date can be changed while the budget is held and is fixed once it takes effect.
  • The QA tenants now carry a locked 2026 plan of record, a rolling forecast, eight months of actuals with their variance events, and a 2027 draft, so the Budget Center renders real figures on non-production environments.
  • Administrators can create the tenant settings anchor through the API and read it by id; a tenant holds at most one anchor.
Changed
  • Screens keep the data they already have when a background refresh fails: the failure notice now appears only when nothing could be loaded at all.
  • Detail panes return to the top when you pick a new item, and keyboard users can tab into every pane.
  • API errors now carry their machine code to the browser, so screens can react to a specific failure (for example a completed ingestion run) instead of matching message text.
  • Manual rolling forecast entries are stamped with today's as-of date and marked MANUAL, so the latest-forecast view shows the override; an entry dated after its month is refused with a clear message.
  • Affected-package test runs are sized to their share of the CI host, and only a change to the CI definition itself runs the full suite.
  • API service test runs complete faster.
  • Merge-queue batches no longer run the Databricks validator matrix per entry; the lake is checked on the merged result instead.
  • Lake pull requests run only the test suites their change can affect.
  • Lambda test suites run in their own CI workflow, only when a Lambda changes.
  • Changes to the platform now land through a merge queue with batched checks.
  • Build caching is no longer invalidated by test-configuration changes.
  • Automated test runs are more tolerant of a busy build server.
  • Contract templates and their versions now belong to a tenant; template codes are unique within a tenant, and each tenant sees only its own templates.
  • The portal adopts version 0.39.0 of the shared design system, an additive update with no visible change on existing screens.
  • The BI Catalog screen is now Platform Maturity, at /data-platform/features-ml/platform-maturity.
Fixed
  • Thirteen platform actions that were defined but never reachable over the API now have endpoints, and the budget validation workbench can show its evidence and re-validate a saved plan.
  • Budget figures refresh reliably when two refreshes, or a refresh and a budget edit, run at the same moment: they now take turns instead of one of them failing.
  • Changing the effective date of an approved budget that is still held no longer fails as an edit to a locked budget.
  • An opted-out tenant's benchmark participation analytics now read opted out instead of pending data.
  • Variable compensation now credits a team's improvement over the rolling forecast even when the baseline target equals that forecast, instead of scoring it as zero.
  • The variable compensation payout breakdown now shows the formula that actually produced each step: the achievement line names the floor, the interpolation or the cap that applied, and the improvement line names the gate that zeroed it or the floored quotient it used.
  • A payout preview now applies the baseline's own adoption threshold when the request does not name one, and its improvement line says which threshold was in force and where it came from.
  • The database's variable-compensation formula reference now pays above-target achievement on the same 1.0 slope with the 1.50 cap as the payout engine, and measures improvement on the absolute target-forecast gap.
  • Re-enabling benchmark participation after an opt-out now succeeds from both the setup flow and the participation update: the opt-out is cleared and recorded in the participation change log.
  • Peer benchmark data now opens tier by tier as a tenant contributes: nothing before three months, standard comparisons from three, detailed insights from twelve and trends from twenty-four, and cohorts smaller than the tenant's k-anonymity threshold are never shown.
  • Variable compensation achievement above target now follows the plan's stated curve: each point over target earns the same share of the target-to-cap band as the plan's examples, capped at 1.50.
  • Hiring funnel analytics now honor the requisition and date filters, read the whole population, and return the stage chain with the conversion between milestones.
  • The candidate reference-code lookup now answers with the candidate's pipeline status only (stage, next action, required actions), never the full candidate record.
  • A compensation baseline's original target is now captured at its first shock adjustment, so the pre-shock value is preserved as intended.
  • Budget optimization recommendations can now be accepted, declined, deferred or marked modified; before, only a pending status could be stored.
  • A workload correlation's suppression state is now checked against its vocabulary when it is written, so only the active and suppressed states can be stored.
  • A differential privacy budget whose scheduled reset date has passed can be updated again, so epsilon accounting keeps flowing for closed periods.
  • Scheduling a privacy budget reset in the past when creating a differential-privacy budget now answers a validation error, while existing budgets past their reset date stay editable.
  • A strategic scenario without a stated confidence level no longer receives a priority score computed from an assumed 50% confidence; its score stays empty until a confidence level is set.
  • A vendor scorecard with a missing dimension now scores that dimension as neutral (50) instead of zero, matching the platform's scorecard pipeline.
  • CDC stream lag monitoring now reports each stream's real lag and circuit breaker state instead of always reading as normal.
  • A relevance score written directly through the create or update endpoint can no longer leave a CRITICAL or $200K-band alert below delivery; the same consolidation exemptions as scoring apply.
  • Filtering-rule simulations now count suppressed HIGH-severity alerts and fail the safety check on them; WARNING suppressions are reported in the medium count and no longer fail the check.
  • Peer benchmark statistics can no longer be edited through the API: the values a tenant sees are the ones the benchmark computation produced.
  • Peer benchmark statistics and keys computed by the platform's peer lane can no longer be altered through the application's update path.
  • Compliance reports, cashflow insights, churn portfolio priorities and template comparisons now read the columns their records carry instead of fields that never existed.
  • Lakehouse layer SLO reads now report a real 30-day breach count and compliant streak, and pipeline orchestration a real freshness check, both derived from the lake's daily statistics.
  • The monthly vendor scorecard summary now scores a missing dimension as neutral (50) instead of zero, matching the vendor scorecard itself.
  • Workload pattern analyses can now carry a Mixed dominant pattern type, the value the pattern detector assigns when no single pattern dominates.
  • A data lineage record's impact criticality is now validated against the platform's business criticality levels instead of accepting any text.
  • Creating or updating a data lineage entry with an unknown impact criticality now answers a validation error instead of a database failure.
  • Validation Workbench: the run picker and the header's run time now come from the budget's own run list, so every validation run is offered newest first instead of only the runs that fit on one page of checks.
  • A compensation baseline's adoption threshold is now checked as a 0-1 rate when the baseline is created or updated, so a payout can no longer be gated by a threshold above 100%.
  • Most paginated lists no longer repeat or skip records that were created at the same moment; every page of those lists is now ordered deterministically. The remaining hand-written list reads follow in a later fix.
  • The remaining paginated lists (files, shares, processing jobs, users, roles, permissions, audit and security records, navigation items, contract approvals, impersonation reports) no longer repeat or skip records created at the same moment; every page is now ordered deterministically.
  • Ingestion Flow: re-running a contract whose completed run the screen had not seen yet now asks for confirmation instead of failing with a raw error, and the waiting-on-OCR notice is recognised by the server's error code.
  • Profit Center recommendations now carry their optimization objective in the vocabulary the data actually uses, so objective filters and the objective label work on every row.
  • Engagement Center growth-opportunity and early-warning lists can now be windowed to a landing date, so the health strip counts the latest analysis day instead of every row ever produced.
  • Budget lines for any month of a budget's period now land in their own monthly partition, including months before the platform's deploy month and up to two years ahead; rows that had already landed in the catch-all partition are moved into place at the next deploy.
  • The High/Medium/Low level fields in the model governance, workload pattern and revenue opportunity contracts now document the mildest-first rank order the reference vocabulary uses.
  • The budget Validation Workbench's Run validation button now works: it re-validates the saved plan on the server instead of trying to download every line first.
  • The generation-loop machine lock decides its fairness pause before it frees a slot and identifies processes by a start value that never moves, so the lock suite no longer flakes in the merge queue or under local load.
  • Benchmark participation now shows the retention window your settings actually hold, including 36 months, and saving no longer shortens it.
  • Security events such as denied permissions and rejected requests are now recorded in the tenant audit log.
  • Choosing a peer group by hand in Benchmark Enrollment now saves instead of failing.
  • Benchmark enrollment now saves every setting from the consent step in one step, including the retention period, cross-tenant learning, consent and cross-border approval, and records the consent date automatically when consent is given.
  • The Budget Setup account picker now lists and keeps the selected chart-of-accounts account.
  • Budget Center, Budget Setup review and Rolling Forecast now show KPI figures after a refresh; the refresh no longer fails silently.
  • Budget KPI figures no longer double-count a rolling forecast that has been refreshed more than once; each month counts only the latest forecast.
  • A new budget's period and historical window now land in the fiscal year that was requested, for tenants in every time zone; budgets created with last year's dates are corrected.
  • Budget shock proposals and scenario plans now take their date windows from the budget's own fiscal period instead of the server's local calendar year.
  • Budget POR import now refuses an empty file instead of clearing the budget, and negative amounts on contra-revenue and expense accounts validate correctly.
  • The validation workbench's split-allocation finding now records the percentage the way the screen expects, so a GL code whose splits do not sum to 100% shows its actual total.
  • Running a stress test or generating insights for a cashflow forecast that does not exist now returns a not-found response instead of a server error.
  • Retention Center portfolio analytics now honor the requested time window or rolling preset, and report the portfolio size from the latest snapshot.
  • At-Risk Signals lists resolve each client's open engagement case in one batched lookup, and a failed lookup no longer fails the list.
  • At-Risk Signals SHAP explanation reads return 404 instead of 500 when the explanation or its prediction does not exist.
  • Migration and seed changes now also run the operations lake suite.
  • The CI remote cache now stores and serves build artifacts across runner hosts.
  • Engagement Center health analytics now count healthy and at-risk clients and distribute scores on the 0.00-1.00 health scale.
  • Contract obligations and remediation campaigns now require only the contract compliance permissions their endpoints already ask for, instead of an extra lifecycle grant on top.
  • Changing a contract's status now returns the updated contract together with its previous status code, as the API documents.
  • Connector Console filters (type, provider, health and the rest) now narrow the connector list.
  • Opening or deleting a data-quality report that no longer exists now returns a proper not-found response, and deleting a report also removes its issues, remediation suggestions and compliance results instead of leaving them behind.
  • Department Setup now says why a department could not be created, updated or deleted, such as a duplicate name, a missing parent, a circular hierarchy, remaining child departments or a department that no longer exists, instead of a generic server error.
  • Allocating privacy budget now counts the epsilon already held by open reservations, so an allocation can no longer consume budget a pending reservation is waiting to settle.
  • Extraction Workbench fields now point at the clause and page they were read from.
  • The Federated Console's analytics now honour the selected date range instead of always summarising every experiment.
  • Demand Forecast Console accuracy analytics now honor the requested model, skill and date window, and report a signed per-skill forecast error.
  • Demand Forecast Console comparison records created or updated through the API now store a signed percentage error, so over- and under-forecasting are distinguishable.
  • Resolving an HRIS sync conflict from the console now saves instead of failing.
  • Running a privacy validation on a dataset more than once now records each run separately instead of failing.
  • Evaluating an experiment before its minimum sample size, or deploying a retraining that is not ready, now returns a clear validation response instead of a server error.
  • Profit Center baselines now load for users whose access comes from the finance module pack.
  • QuickBooks Desktop connectors no longer show a next sync time the platform never runs; the console reads Not scheduled.
  • true
  • Adopting or implementing a data-quality remediation suggestion now records when it was adopted and by whom, as the API documents.
  • The Revenue Center executive summary now reports the blended growth rate and net revenue retention at their true percentage, and flags net revenue retention below 100 percent.
  • Opening or cancelling a revenue forecast batch that does not exist, or cancelling one that has already finished, now returns a clear response instead of a server error.
  • Runway Planner stress tests now measure risk against your latest cash position instead of a zero balance, so scenarios show the full range of risk levels.
  • The serving health check now reports the model's real telemetry snapshot instead of recording a synthetic one, and shows Unknown when no recent metrics exist.
  • New organizations created through the standard sign-up now carry their operating currency, locale and time zone from the start, so money and dates render in the right currency and zone instead of the USD and UTC defaults.
  • The Cash landing's forecast-insight list spans its own row below the index, and each row shows the analysis date and benchmark percentile instead of producer text.
  • The Industry Stress console offers the column sorts its headers announce, and the Retention landing's departure timeline spans its own row below the index like the other operations landings.
  • Subscription metrics now refresh; the subscription dashboard figures are populated after a refresh.
  • Alert, model operations, translation, prompt and notification services no longer fail their internal permission checks on read, configure and delete actions.
  • Confirming your organization's currency, locale and time zone now reaches every signed-in user of the tenant on their next request instead of only the person who confirmed.
  • Listing tenant limit, security, notification and UI settings now honours the requested filters and sort order and returns the page and page size alongside the results, as the API documents.
  • Subscription Management now shows whether a subscription really renews at period end: the flag follows Stripe's cancel-at-period-end state and the subscription status, turns off on cancellation and turns back on when a subscription is reactivated.
  • The Service Catalog feeds, the Compensation landing and the Contracts Lifecycle feed now use the same kit pieces as the Benchmark landing: link cards in the auto-fill grid and the activity feeds on their own row below the cards.
  • Console tables lose their doubled frame, seven console rails start level with their table, the Extraction Workbench and the License Utilization detail pane scroll once, and section headings take the kit heading size.
  • Contract Intake lists uploaded files in the standard table, with the file's size and upload time as their own columns.
  • The Strategy, Budget, Revenue and Cash landings compose the same kit pieces as the Benchmark landing: link cards in the auto-fill grid grouped as the sidebar groups them, and the activity feed on its own row below the cards.
  • On narrow screens the sheet that opens a console's side rail scrolls once on eleven consoles instead of nesting a second scroller inside itself.
  • The Service Catalog feeds row carries one feed, and Service Lifecycle composes the kit console shell with its queues rail beside the table.
  • The Workload, Retention and Engagement landings compose the same kit pieces as the Benchmark landing: link cards in the auto-fill grid grouped as the sidebar groups them, and the activity feed on its own row below the cards.
  • The sidebar names the tenant a size above the section titles, the Demand Forecast, Service Lifecycle and Industry Stress tables lose their doubled frame, the Service Catalog index renders as cards, and a stored file whose processing failed no longer offers Record intake.
  • The Vendor and Contracts Lifecycle landings compose the same kit pieces as the Benchmark landing: link cards in the auto-fill grid, and on Vendor the activity feed on its own row below the cards.