TenantAtlas/apps/platform/.pnpm-store/v10/files/61/7a76476c1be9cdde5a8b6a943dbb7b76feb61a08d6c565261df8784f2a1de8966f59721ee5a7bfe4359e64f2c4b7bc19980498e0327751abd63b8c767a8bff
ahmido 1fec9c6f9d
Some checks failed
Main Confidence / confidence (push) Failing after 45s
feat: compress governance operator outcomes (#253)
## Summary
- introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries
- apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces
- expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests

## Validation
- `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent`
- focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions)
- `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions)

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #253
2026-04-19 12:30:36 +00:00

43 lines
1.2 KiB
Plaintext

import { config } from '../config';
let context: { errorThrown: boolean; error: any } | null = null;
/**
* Handles dealing with errors for super-gross mode. Creates a context, in which
* any synchronously thrown errors will be passed to {@link captureError}. Which
* will record the error such that it will be rethrown after the call back is complete.
* TODO: Remove in v8
* @param cb An immediately executed function.
*/
export function errorContext(cb: () => void) {
if (config.useDeprecatedSynchronousErrorHandling) {
const isRoot = !context;
if (isRoot) {
context = { errorThrown: false, error: null };
}
cb();
if (isRoot) {
const { errorThrown, error } = context!;
context = null;
if (errorThrown) {
throw error;
}
}
} else {
// This is the general non-deprecated path for everyone that
// isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)
cb();
}
}
/**
* Captures errors only in super-gross mode.
* @param err the error to capture
*/
export function captureError(err: any) {
if (config.useDeprecatedSynchronousErrorHandling && context) {
context.errorThrown = true;
context.error = err;
}
}