Skip to content
bitzorcas
中EN

Reference

Master Data Testing, Operations, and Commercial GA

Current architecture/integration evidence, data quality, cold start, cache consistency, secure governance, and phased MasterData GA gates.

Last updated

MasterData GA means more than creating nine tables. It must prove trustworthy assets, ORM parity, repeat-safe import, consistent cached reads, tenant isolation, auditable management, and rollback.

1. Current maturity

DimensionEvidenceGap
Ownershipowner-local architecture gatesI18n physical coupling remains
Metadatacompile-time gate for nine modelsbusiness constraints incomplete
ORMIEntitySet and parity foundationfull-catalog/large-data evidence
Seedingeight steps and E2E seed testsstrict schema, diff, cardinality, bulk/transaction
Readsresolver, tenant cache key, fallbackcomposite collision, precise invalidation, culture chain
Governancefeature and two read permissionsno endpoints, management rights, enforcement
Operationsupsert count loggingSLO, dashboard, alerts, runbook, rollback report

2. Existing test evidence

Architecture tests keep legacy Framework/ORM paths deleted, require nine records and eight assets, enforce ORM neutrality and EntitySet seeders, verify host composition/resolver dependencies, and inspect generated table/tenant/soft-delete metadata.

Integration tests register these records in persistence metadata, repository parity, and end-to-end seed scenarios.

3. What remains unproved

architecture/tests pass

asset content strictly valid?

repeat result equal on both ORMs?

large asset meets startup SLO?

changes invalidate every instance?

authorization/audit/rollback closed?

commercial GA

Existing evidence does not prove four empty assets, 43k-row performance, Code/Class collisions, production cache propagation, entry authorization, or data authority.

4. Data-quality contract

CheckExamples
schemaexact headers, types, required fields
identityasset key aligns with index and Match
cardinalitymin/max rows and change threshold
referentialparent exists and graph is acyclic
semanticBCP-47, ISO code, currency, date range
governanceauthority, revision, license, owner
compatibilitypublished code is not silently removed/redefined

Retain reports as CI artifacts and release evidence.

5. Property-test example

Catalog identity properties
// ① Rows are unique under the domain identity shared by storage and resolution.
var rows = seedReader.Read<SysGeneralCodeCatalogRecord>(assetRequest);
rows.GroupBy(row => new { row.TenantId, row.Group, row.Class, row.Code })
.Where(group => group.Count() > 1)
.ShouldBeEmpty();
// ② Every parent exists and no parent chain returns to its origin.
var byCode = rows.ToDictionary(row => (row.Class, row.Code));
foreach (var row in rows.Where(row => row.ParentCode is not null))
CatalogGraph.AssertAcyclicAndParentExists(row, byCode);

Adjust the key to the approved domain identity; this gate is not current source.

6. Dual-ORM matrix

Each adapter must prove empty schema initialization, first/repeat seed reports, targeted update, key/type/cancellation/failure behavior, tenant-0 vs regular-tenant isolation, resolver translation/sort/soft-delete behavior, and cold/warm large-asset duration/round trips.

Final row count alone cannot reveal an incorrect overwrite.

7. Startup and readiness

ReadinessSeed runnerValidatorHostReadinessSeed runnerValidatorHostalt[invalid][valid]validate contract and digestfail startupapply approved planauditable reportverify revision and sentinelsready

With a separate seed job, API readiness should verify the expected revision rather than execute the same large asset concurrently.

8. Metrics and alerts

Track seed duration/outcome, inserted/updated/unchanged/failed rows, asset revision, cache hit/miss/negative, resolver hit/raw/error, invalidation lag, and quality failures. Keep labels low cardinality; do not label by group, code, or tenant.

9. Audit and change management

A future management plane needs draft, semantic diff, approval, scheduled publication, revision, reason, impact scan, rollback revision, actor, and evidence.

IsProtect is only data today. Handlers must enforce it. Add create/update/publish permissions rather than reusing read permissions.

10. Backup and rollback

  • backup affected tenant/catalog;
  • retain asset digest and before/after diff;
  • roll back by applying an approved revision, not manual production edits;
  • do not delete a newly referenced code blindly;
  • invalidate caches as part of rollback;
  • include I18n translation impact;
  • checkpoint recovery for large batches.

11. Commercial GA gates

GateRequired
G0 identityowner, natural key, scope, authority, version for nine catalogs
G1 assetsstrict schema, quality, diff, digest, license
G2 persistenceindex/Match/resolver alignment, ORM parity, migration compatibility
G3 readscomposite key, culture fallback, precise distributed invalidation, version signal
G4 managementApplication/API, feature/permission, approval, audit, rollback
G5 performance43k+ cold start, bulk upsert, transaction/recovery SLO
G6 operationsreadiness, metrics, alerts, dashboard, runbook, drills

A header-only core catalog or unverifiable authority revision blocks that catalog’s GA.

12. Evidence aggregation

GA evidence gate
// ① Every enabled catalog provides evidence for the same release revision.
var evidence = await gaEvidence.LoadAsync(release.Revision, cancellationToken);
foreach (var catalog in release.EnabledCatalogs)
{
evidence.RequirePassed(catalog, "schema");
evidence.RequirePassed(catalog, "dual-orm-repeat-seed");
evidence.RequirePassed(catalog, "tenant-isolation");
evidence.RequirePassed(catalog, "rollback-drill");
}
// ② Header-only required assets and warnings block release.
if (evidence.HasWarnings || evidence.AnyRequiredCatalogIsEmpty)
throw new CommercialGaGateException(evidence.Summary);

13. Current priorities

  1. repair CodeText identity and exchange-rate field drift;
  2. build strict validation and promote warnings to failures;
  3. classify or populate empty assets;
  4. establish 43k-row ORM performance/recovery evidence;
  5. correct precise invalidation and culture semantics;
  6. then build an approved/audited management plane.

14. Commands

Terminal window
dotnet test tests/BitzOrcas.Architecture.Tests/BitzOrcas.Architecture.Tests.csproj --no-restore --filter MasterDataInfrastructureArchitectureTests
dotnet test tests/BitzOrcas.Integration.Tests/BitzOrcas.Integration.Tests.csproj --no-restore --filter "Seed|MasterData"
# Expected no legacy ownership hit.
rg -n "SysCountryEntity|SqlSugarDataDictionaryResolver|MasterDataEntityConfigurations" src -g '*.cs'

Module overview · Seeding

100%

Scroll or use controls to zoom · drag when enlarged · double-click for 100% / 200%