Cesivi Changelog¶
[1.10.0] — 2026-06-07¶
C-C Event-Sourced Write Side — temporal as-of + replay, opt-in and off by default¶
The append-only event-log mechanics already shipped in v1.2 (the WORM audit substrate — hash-chain + SHA-256 +
sealed/cloud-immutable). v1.10 adds the two genuine gaps — point-in-time (as-of) query and event-replay
rebuild — reusing the WORM engine, behind Cesivi:EventSourcing:Enabled (default false → the decorator is
never constructed → byte-identical, zero migration). CQRS read/write split was declined (it breaks SP
read-your-write).
- B.0–B.4 (PLAN-1720/1723/1728/1732/1735): WORM segment engine extracted to a domain-agnostic
FileSystemWormSegmentEngine(on-disk format unchanged) + a newCesivi.Storage.EventSourcingassembly;EventJournalingStorageServiceno-opDispatchProxyseam; live append intruemode (append-then-apply + compensating…Failed, effectively-once); canonical stream-key + pure-foldEventJournalReplayProjector(byte-identical replay, tamper-detecting chain verify); sharedEventStreamFold+EventJournalAsOfReaderwith internalGET /_admin/eventjournal/asof(CentralAdmin, 404 in false-mode);eventSourcingcapability onGET /_vti_bin/diagnostics; runbook_docs_dev/event-sourcing/RUNBOOK.md. Genesis seeding deferred (start-from-now; as-of/replay cover the post-opt-in window only).
C-E Kubernetes-Native Operator — declarative CesiviTenant/CesiviFarm CRDs (external, zero server files)¶
A new external Cesivi.Operator (.NET / KubeOps 11.2.0, its own Cesivi.Operator.sln, not in Cesivi.sln or
the server batch) referencing Cesivi.Common so the CRDs (cesivi.io/v1alpha1) ARE the server tenancy types.
Reconciles the v1.9 /_farm/tenants surface.
- B.0–B.5 (PLAN-1719/1724/1729/1733/1736): CRDs + no-op reconcile (no-op at the type level); provisioning
reconcile (404→provision→re-observe→Ready, no storm); suspend/resume + CR-wins drift (
reconcile-pausegate); finalizer/teardown (tenant-teardownfinalizer, requeue-until-404, no orphan);CesiviFarmobserve-only; slug validation via CRD OpenAPIpattern+ reconciler guard (no webhook). Ship-blocker fixed: the B.0 Dockerfileadduserbroke the build on .NET 10aspnet:10.0(noadduser; built-inappUID 1654) →USER $APP_UID; image builds AND runs.charts/cesivi-operator/(appVersion 1.10.0); least-priv RBAC; operator 85/85. Runbook_docs_dev/k8s-operator/RUNBOOK.md.
Drop-in upgrade from v1.9.0 — no migration. Cesivi:EventSourcing:Enabled stays false → byte-identical; the operator is opt-in infra deployed separately. See RELEASE-NOTES-v1.10.md.¶
[1.9.0] — 2026-06-06¶
C-B Multi-Tenant — one farm hosts many isolated tenants, opt-in and off by default¶
One Cesivi farm can now host many isolated tenants (own webs/lists/storage) behind tenant routing with
a deny-by-default cross-tenant guard. Cesivi:MultiTenant:Enabled defaults to false — every existing farm
stays byte-identical and pays zero cost; the whole machinery is a pass-through in false mode.
- B.0–B.5 (PLAN-1700/1701/1703/1708/1713/1714): scoped
ITenantContext(constant→DI refactor, ~470 sites); dormant farm registry (ITenantStore/TenantDescriptor,__farm__namespace); liveTenantResolutionMiddleware(host→tenant, unresolved→404, state-gating); the safety-criticalTenantScopedStorageServicedecorator (per-tenant key namespacing + deny-by-default guard, 227-method coverage sweep); per-tenant backends via the C-A registry + GUID-index tenant-stamp;/_farm/tenantsfarm-admin REST behindCentralAdmin+ aMultiTenantFeatureGate(404 infalsemode) with legal lifecycle gating. - B.6 — milestone closure (PLAN-1715):
multiTenant:truemade production-functional. SystemTenantScope(AsyncLocal ambient) — context-less callers (boot, provision-seed, teardown) run storage ops under an explicit tenant; the HTTP request context always wins.- True-mode boot skips the single-tenant default seed (no
defaulttenant;__farm__lazy-created) — boots withoutSkipDefaultDataInit. POST /_farm/tenantsseeds the new tenant's root web/site/lists (reuses the boot seeder underSystemTenantScope, fresh per-tenant GUIDs to avoid global GUID-index + web-context collisions); seed failure → tombstoneDeleting+ 500.DELETE /_farm/tenants/{id}purges the tenant's storage namespace (tenant-scoped).- Cache-layer isolation:
TenantScopedCacheServicedecorator +CesiviDataServiceinstance-cache prefixing — the object caches sat above the storage decorator and leaked across tenants; closed (true-mode only;falsemode FLAT). - Docs:
_docs/MULTI-TENANT.mdoperator runbook +RE-KEY-TOOL-DESIGN.md(build deferred).
Drop-in upgrade from v1.8.0 — no migration, no data re-key. Cesivi:MultiTenant:Enabled stays false → byte-identical single-tenant behaviour. To run a farm, enable the flag on a fresh deployment and provision tenants (the false→true in-place re-key tool is designed but not yet built). Pre-condition: wire FarmAdmin to a trusted IdP before enabling — the demo mock auth grants it to every user. See RELEASE-NOTES-v1.9.md and MULTI-TENANT.md.¶
[1.8.0] — 2026-06-04¶
C-A Pluggable Storage Backends — bring your own storage without forking¶
Extends the package contract so a customer can supply their own storage backend (S3 / Azure Blob / own-DB) without forking, via a narrow IStorageBackend primitive the rich IStorageService composes over — Cesivi's caching, plugins, change-notification and security-trimming stay in-house. (v1.7 was an untagged infrastructure cycle; the 1.7.0 version is intentionally skipped.)
- α-1 — storage backend primitive seam (PLAN-1692): narrow streaming-first
IStorageBackend(1 prop + 6 methods) over a typedStorageKey;StorageProviderRegistryfront door (legacyProgram.csswitch replaced, zero config change);InMemoryStorageBackend+BackendComposedStorageServiceprove "rich service composes over the primitive" end-to-end behind opt-in idInMemory-Backend. Zero shipping backends touched. - α-2 — bundled-backend composition (PLAN-1693): composed the whole
IStorageServicesurface overIStorageBackend; fixed 3 latent FileSystem bugs in the shipping service (Libraries/Lists doc-path unification, removed a hardcoded debug log, sidecaritems.dbpool-release before recursive delete); addedFileSystemStorageBackend(durable + native-streaming) under opt-in idFileSystem-Backend; conformance wall 43/43. Query pushdown (PLAN-274/275) does not compose through the narrow primitive, so the 4 SQL backends + FileSystem keep their legacy shipping ids (permanent, byte-identical, zero data re-key). - α-3 — first third-party backend + package loading (PLAN-1694):
Cesivi.Storage.S3(S3StorageBackendover a narrowIS3Gateway; AWSSDK.S3, MinIO-compat) selectable viaCesivi:StorageProvider="s3"; manifest top-levelbackendProviders+PackageActivator→StorageProviderRegistry; signing/isolation gate (signed→in-proc; unsigned in-proc + OOP-backend refused with stable codes);HealthGatedStorageBackend(fault→typed exception, never fail-soft-to-empty). Conformance 22/22 Docker-free + skippable MinIO. - α-3.2 — out-of-process backend + streaming (PLAN-1695): unsigned→OOP backend runs in the sandboxed worker; the host marshals every op and blobs stream over a pull/push sub-protocol on the existing worker channel (backpressure implicit, no new credit layer). Paired-channel conformance 8/8 (incl. 5.5-chunk large blob + worker-death fault).
- Ship-ceremony residue (PLAN-1696):
/healthand the root/banner now report the real product version (read from the assembly informational version; was hardcoded1.0.0).
Drop-in upgrade from v1.6.0 — no migration, no data re-key. The 6 bundled storage ids (FileSystem, InMemory, SqlServer, Sqlite, MySql, LiteDb) resolve byte-identically through the new registry. NEW: Cesivi:StorageProvider="s3" selects the bundled S3 backend; packages may contribute IStorageBackends via manifest top-level backendProviders (signed→in-proc, unsigned→OOP worker); opt-in proof ids InMemory-Backend / FileSystem-Backend. β (search) / γ (auth) backend tiers are future additive slices. See RELEASE-NOTES-v1.8.md.¶
[1.6.0] — 2026-06-02¶
UI Feature Parity Audit + Multi-Provider IDP Unification + Customer Extensibility Surface¶
- Workstream A — UI Feature Parity Audit (PLAN-1656..1673): Full inventory of 26 SP SE Classic feature areas (20 ✅ / 4 🟡 / 2 ⬜). Per-cluster gap closures: B1 Workflow UI (14/14), B2 Publishing lifecycle+variations+deployment (31/31), B3 BCS CRUD+admin (19/19), B4 Specialty Lists/Calendar, B5 Social Features (14/14), B6 Settings sub-pages —
aclinv.aspxGrant Permissions form (16/16), B7 Extensibility E2E (21+/21+). SeeRELEASE-NOTES-v1.6.md. - Workstream B — Multi-Provider IDP Consolidation (PLAN-1657): Residual OIDC challenge exception handling merged from
main1(Login.cshtml.cstry/catch for unreachable IdP)._docs/MULTI-PROVIDER-IDP.mdupdated to v1.6.server-stableretagged. - Workstream C — Customer Extensibility Surface (PLAN-1658..1666): Typed context interfaces (
Cesivi.Sdk.Hosting), Web Part gallery integration, custom field renderer/storage wiring, in-process event receiver dispatcher, feature lifecycle, provisioning services (CT/Field/List/ListTemplate/WebTemplate with REST discovery endpoints), developer tooling (dotnet new cesivi-package/cesivi-webpart/cesivi-feature, DEVELOPER-GUIDE.md). - v1.6 Integration Gap Closure (PLAN-1674): PackageWebPartsBridge fixed (
WebPartManager.GetEffectiveTypeName/MatchesTypeName+UnavailableWebPartfallback); WebPartExtensibilityE2ETests pre-built DLL pattern (2/2 GREEN);Newlobsystem.aspximplemented. All 22 E2E tests GREEN.
Drop-in upgrade from v1.5.0 — no migration. New REST endpoints: /_api/cesivi/extensions/{list,web}templates, /_api/web/lists('{id}')/workflowsubscriptions. New admin: aclinv.aspx Grant Permissions form; Newlobsystem.aspx. New developer: dotnet new cesivi-* templates via Cesivi.Templates NuGet.¶
[1.5.0] — 2026-05-30¶
Realtime Live-Update Beyond AllItems, WORM Cloud Adapters, SPO Backup, Memory Scale Gates¶
- Group D — Realtime beyond AllItems (PLAN-1651): DispForm per-item SignalR filter (
filterItemIdinisRelevantChange; Deleted→redirect-to-AllItems). Site Home per-widget multi-listsubscribeList()+/api/webpartrefreshHTML-fragment endpoint +data-realtime-listDOM opt-in. Sub-web isolation fix:WebPathForNotificationstripsRootWeb/prefix so group key islist:subweb:Namenotlist:RootWeb/subweb:Name. 2 regression tests (13/13 GREEN) + 9 Playwright two-tab E2E tests (DispForm 3 + Home 4 + sub-web 2). SeeRELEASE-NOTES-v1.5.md. - Group E — Memory Residuals — N/A (re-classified): Investigation confirmed every BACKLOG-v1.x §16-phaseC cluster shipped in v1.1 (PLAN-1598..1603). No additional plan filed.
- Group C-1 — WORM Cloud Adapters (PLAN-1652):
S3ObjectLockWormAuditLogStore(S3 Object Lock COMPLIANCE,WormSegmentEntry.S3VersionIdfor version-aware delete) +AzureBlobImmutableWormAuditLogStore(API versionV2023_11_03). Config-driven DI factory (Cesivi:Archive:Worm:Backend = FileSystem|S3|AzureBlob; FileSystem default). 63 WORM contract-parity tests GREEN (MinIO + Azurite). Setup wizard S3/AzureBlob panels (17/17 GREEN).WormChainMigrator+ StorageConverter CLI--migrate-worm-chain(2 migration tests). StorageBrowserWormBackendNamerow. Docs:ARCHIVE_AUDIT.md+COMPLIANCE_COOKBOOK.mdcloud-WORM section +KNOWN_LIMITATIONS.mdresolved. - Group C-2 — Variant B SPO Local Backup (PLAN-1653):
SpoConnector : ICesiviConnector(MSAL OAuth2: device-code + client-credentials).DataExporterSPO-compat +ThrottlingPolicy(Retry-After). Per-listChangeTokenwatermark inICheckpointStore.IncrementalSyncService(GetChanges-based, idempotent). Three cadence modes (daily/hourly/cron +SpoWebhookDaemon5s-debounce +SubscriptionRenewalService). Setup wizard SPO panel + ControlCenterSpoSyncStatuspage.TUTORIAL_H_ARCHIVE_SPO_BACKUP.md+ compliance cookbook Variant B section. 26 tests GREEN. One-way (SPO → Cesivi) in v1.5; round-trip is v1.6+. - §16-phaseD — Customer-scale memory acceptance tests (PLAN-1654):
ScaleSeed.SeedListRowsAsync/SeedLargeFileAsync/SeedReindexCorpusAsync+SqliteScaleTestFixture+MemoryStressGuard.WithWorkingSetBudget(2 GB). 3 smoke tests GREEN (50 rows/1 MB/100 docs). 3 opt-in tests SKIP-correctly (CESIVI_MEMORY_SCALE_TESTS=1gating). Root-cause fix:SqliteStorageService.LoadWebAsyncrebuildsweb.ListsfromListstable after cache miss.
Drop-in upgrade from v1.4.0 — no migration. New optional config: Cesivi:Archive:Worm:Backend (default FileSystem) + SPO source block (absent = no change). New DOM contract: data-realtime-list opt-in for Site Home widgets.¶
[1.4.0] — 2026-05-30¶
Accessibility (WCAG 2.1 AA), German i18n Wave 9, OpenTelemetry WebUI¶
- Group A1 — WCAG 2.1 AA × 10 surfaces (PLAN-1638..1647):
KnownAxeAcceptances=[]on every PRIORITY 0 surface. Keyboard nav + SR semantics + Narrator proxy reports per surface._a11y.cssglobal contrast overrides. NEWforms/field-validation.mjs(jump-to-first-error + aria-invalid, inherited by all FieldRenderers). WAI-ARIA tree on TermStoreManager.keyboard-reorder.mjsshared helper (3 consumers)._LayoutBlank.cshtml<main>landmark. NEWUSER-GUIDE-ONLYOFFICE.md. SeeRELEASE-NOTES-v1.4.md. - Group A2 — JS i18n Wave 9 (PLAN-1648): 36 JS files migrated to
Cesivi.t()lookups;wave9-strings-en-US.json555 keys (en-US + de-DE) across 18+ namespaces. 172/172 multilingual GREEN. Closes the German-UI translation arc at the JS layer. - Group B — OpenTelemetry WebUI client-side (PLAN-1649):
cesivi-telemetry.mjsclient SDK + batched flush + PII scrub;POST /api/telemetryserver endpoint;cesivi-fetch.mjsW3Ctraceparentwrapper (7 call sites); per-surface spans (listview start/render/interaction; form save); config-driven sampling (OpenTelemetry:Samplerdefaultalways_off). NEWTelemetrySettings.aspxadmin toggle +TELEMETRY-GUIDE.md. 21 JS unit + 4 E2E + 2 traceparent tests GREEN.
Drop-in upgrade from v1.3.0 — no migration, no flag changes. NEW optional OpenTelemetry:Sampler + OpenTelemetry:SampleRate config keys (default off).¶
[1.3.0] — 2026-05-29¶
UI Quality + Feature Parity to SharePoint Server Subscription Edition¶
- Surface #1 — Site Collections + Sub-Sites (PLAN-1629): Central Admin SC pages; InheritPermissions checkbox; sub-web depth 1/2/3; 33 E2E + CSOM/PnP/REST/SOAP smoke. See
USER-GUIDE-SITE-COLLECTIONS.md. - Surface #2 — Lists + Libraries (PLAN-1636 + PLAN-1626): 12-template lifecycle matrix; AdvSetng round-trip; versioning+content-approval; library-specific surfaces (checkout/OnlyOffice/picture-lib); Save-As-Template; 77 E2E + cross-client smoke. See
USER-GUIDE-LISTS-AND-LIBRARIES.md. - Surface #3 — List Items + File Uploads (PLAN-1628): 12-type column renderer matrix; upload-path matrix; folder ops; sub-web routing bugs fixed (
CreateFolder,AddFileToLibrary,SaveFileAsync). SeeUSER-GUIDE-LIST-ITEMS.md. - Surface #4 — Site + List Columns (PLAN-1630): site-column gallery; 13 field-type matrix; push-down propagation; advanced types (Calculated/Taxonomy/Lookup-multi); 50 E2E + 12 smoke. See
USER-GUIDE-COLUMNS.md. - Surface #5 — List Views (PLAN-1631): Calendar/Gantt/Datasheet; PersonalView isolation; CAML sort/filter/group-by round-trip; 47 E2E + 12 smoke. See
USER-GUIDE-VIEWS.md. - Surface #6 — Permissions (PLAN-1632): web/list/item/folder/file scopes; all 5 URL shapes guarded (v422.x treadmill class); 55 E2E + 9 smoke. See
USER-GUIDE-PERMISSIONS.md. - Surface #7 — Web Parts + Wiki Pages (PLAN-1633): add/remove across all URL shapes (v422.x guard); wiki Edit-Mode UX consolidated into ribbon (PLAN-1626 Phase C); 44 E2E + 12 smoke. See
USER-GUIDE-WEBPARTS-AND-WIKI.md. - Surface #8 — Search (PLAN-1634): 5 entry-point URL shapes guarded; KQL syntax matrix; admin CRUD (ManagedProperties/ResultSources/ResultTypes/DisplayTemplates/QueryRules); security trimming; 47 E2E + CSOM smoke. See
USER-GUIDE-SEARCH.md. - Surface #9 — Taxonomy / Managed Metadata (PLAN-1635): TermStoreManager admin; term-picker UX; ManagedMetadata column lifecycle; enterprise keywords; managed navigation; CSOM+REST/SOAP gaps closed; 54 tests. See
USER-GUIDE-TAXONOMY.md. - Surface #10 — OnlyOffice Integration (PLAN-1627): live container (OO 8.2.2); 2 bugs fixed (UpdateList cache-invalidation bypass; GetParentListAsync wrong storage key); browser-iframe E2E; 16/16 GREEN. See
onlyoffice-admin.md.
Drop-in upgrade from v1.2.0 — no migration, no flag changes.¶
[1.2.0] — 2026-05-28¶
SharePoint Archive Variant A (G1–G4)¶
- Archive Mode (PLAN-1606):
archive_modeflag on Web+List; write-rejection gate (ArchiveGateService) at all REST/CSOM/SOAP mutation paths; "ARCHIVED" banner in modern UI; ControlCenter/Archive/Modetoggle + audit trail. SeeARCHIVE_MODE.md. - Federated Identity + Snapshot Fallback (PLAN-1607): Identity snapshot at import (
IIdentitySnapshotStore, 4 backends);IArchiveIdentityResolverthree-tier resolver;UserFieldRendererarchive render-layer markers;IArchivedAclStore+ArchivedAclAuthorizationService; ControlCenter/Archive/Identitydashboard. SeeARCHIVE_IDENTITY.md. - MigrationTool Full-Fidelity Importer (PLAN-1608):
ArchiveImportercoordinator importing lists, items, ALL versions, attachments, CTs, fields, permissions, users, groups, term store; resumable via checkpoint store; ControlCenter/Archive/ImportProgress. SeeARCHIVE_IMPORTER.md. - Per-Item Audit Log + WORM Substrate (PLAN-1609):
FileSystemWormAuditLogStore(sealed-segment JSONL, SHA-256 hash chain, OS-level immutability);DurableAuditEventSink; 5 event types;WormChainVerificationService; ControlCenter/Archive/AuditLogwith SignalR live-tail + CSV export. SeeARCHIVE_AUDIT.md. - Long-Term Integrity Verification (PLAN-1610): SHA-256 hash at import;
IntegrityVerificationServicebackground walker;ArchiveReadIntegrityGateon-access gate (451 on mismatch); ControlCenter/Archive/Integritydashboard. SeeARCHIVE_INTEGRITY.md. - Retention Enforcement (PLAN-1611): Hard gate (no admin override) at 12 mutation call sites;
FileSystemArchiveRetentionStore;RetentionHubSignalR live-tail; ControlCenter/Archive/Retentionwith expiration heatmap. SeeARCHIVE_RETENTION.md. - Legal Hold (PLAN-1612): Hold beats retention;
ArchiveLegalHoldGateat same 12 call sites + 8 read sites; per-item read-access logging; ControlCenter/Archive/LegalHold. SeeARCHIVE_LEGAL_HOLD.md. - ControlCenter Archive Admin Bundle (PLAN-1614):
_ArchiveLayout.cshtmlsecondary nav; 7-card KPI dashboard;ArchiveBundleHubSignalR fan-in. SeeARCHIVE_CONTROLCENTER.md. - Tools Archive-Awareness (PLAN-1620): StorageBrowser archive indicators; StorageConverter 7 archive metadata movers (WORM-safe); Setup wizard archive branch (3 XAML pages). See
ARCHIVE_TOOLS_OPERATOR.md. - Tutorial G + Whitepaper + Compliance Cookbook (PLAN-1621):
TUTORIAL_G_ARCHIVE_ONPREM_RETIREMENT.md(end-to-end);CESIVI_ARCHIVE_VARIANT_A.md(whitepaper);COMPLIANCE_COOKBOOK.md(HIPAA/GDPR/SOX/FRCP).
Acceptance Gates¶
- ACC-2 ✅ (PLAN-1622): Tutorial G validated on a fresh VM — 17/18 assertions PASS, 2-run repeatability gate PASS. See
tutorials/TUTORIAL_G_ARCHIVE_ONPREM_RETIREMENT.md. - ACC-3 ✅ (PLAN-1624): 30/30 cluster-mode archive tests GREEN (7 subsystems × cross-node, SignalR backplane, WORM durability). See
ARCHIVE_CLUSTER.md.
Side Fixes¶
- BUG-1515..1520 (PLAN-1623):
/_layouts/15/new.aspxtemplate chooser; SitePages save URL-normalization data-loss fix; ribbon Edit-button visibility; canonical?editmode=1; Add-WebPart gallery wiring; viewlsts.aspx regression guard.
Test Suite¶
| Suite | Result | vs v1.1.0 |
|---|---|---|
| Server-batch | PENDING Phase 1 | baseline: 6519P/8F/4S |
| RestSoap | PENDING Phase 1 | baseline: 786P/0F/0S |
| CSOM | PENDING Phase 1 | baseline: 584P/3F/7S |
| MsCsom | PENDING Phase 1 | baseline: 583P/3F/7S |
[1.1.0] — 2026-05-26¶
Memory Footprint Hardening¶
- Cluster 3F — DB-provider StreamListItemsAsync (PLAN-1598): SqlServer + PostgreSQL providers
now override
StreamListItemsAsyncwithAsAsyncEnumerable()for true row-by-row streaming, replacing DIM page-buffering. H1+H2 unbounded sites eliminated. - Cluster 4 — StorageConverter ByteArray round-trip (PLAN-1600):
StorageConverterround-trip fidelity hardened; byte-array handling bounded. - Cluster 5 — BatchProcessor + ResponseCachingMiddleware (PLAN-1601):
BatchProcessor.ParseBatchRequestAsyncnow uses a chunkedchar[8192]read loop with 16 MiB hard cap (MaxBatchBodyBytes; oversize → HTTP 413).ResponseCachingMiddlewareMISS path caps response body at 1 MiB (MaxCacheableResponseBytes); over-cap responses stream uncached. C3+D1 unbounded sites eliminated. - Cluster 6 — SearchIndexCrawlerService (PLAN-1599): search indexer background loop bounded.
- Cluster 7 — AuditLog ring-buffer + G1 sort (PLAN-1603):
AuditServiceOptions.MaxInMemoryEntriescap (10000) with FIFO eviction inLogEventAsync;OrderByDescendingon bounded list (G1 bounded-by-F1). Micro-fix G3 (XML doc onStorageQueryHelper.ApplyQuery, bounded-by-caller). Micro-fix G4 (inline comment inGetListItemsslow-path, bounded-by-fast-path). F1 + G1 + G3 + G4 all GREEN. v1.x Memory Audit backlog COMPLETE — 0 UNBOUNDED sites remain.
E2E Stabilization¶
- 98.03% pass rate (PLAN-1596): Full-batch Playwright suite 2142P/10F/33S across 306 classes. Gate 97% cleared with margin. 66 deferred v1.0 failures resolved.
- 10 residual closures (PLAN-1597): ModernRedirectMiddleware
/Modern/Settingsexemption restored; DispForm navigation fix;Regionalsetng.cshtmllabel for=axe fix; 8-class regression sample 75/75 GREEN.
Direction — v1.2 SharePoint Archive Variant A¶
- Scope decision recorded (masterplan §"v1.1 SHIP-GATE + v1.2 MISSION"): SharePoint Archive
Variant A (on-prem retirement archive) is the v1.2 flagship mission. Full-fidelity import of
lists / libraries / items / versions / attachments / CTs / fields / permissions / users / groups
/ term store. Track plan at
_project/areas/sharepoint-archive/implementation-track.md.
Test Suite¶
| Suite | Result | vs v1.0 |
|---|---|---|
| E2E (Playwright) | 2142P/10F/33S — 98.03% | +2.28pp vs v1.0 95.75% |
| Server-batch | 6519P/8F/4S (0 product regressions) | — |
| RestSoap | 786P/0F/0S (+40P/-12F vs Round-2) | — |
| CSOM | 584P/3F/7S (FLAKE/STATE only) | — |
| MsCsom | 583P/3F/7S (-11F vs Round-2) | — |
[1.0.0] — 2026-05-24¶
First general-availability release of Cesivi Server.
Highlights¶
- REST API — 20+ endpoint groups, 150+ routes, full OData v3/v4 support including
$select,$filter,$expand,$orderby,$top,$skip, batch requests, and CAML query push-down viaRenderListDataAsStream - SOAP — 26 SharePoint SOAP services (Lists, Webs, SiteData, People, Search, Versions, Copy, Workflow, UserGroup, etc.)
- CSOM — ~98% of Microsoft.SharePoint.Client surface area; load-lambda expression evaluation; ObjectPath batching; real
ClientRequestExceptionon 404/403 - PnP PowerShell — ~81% cmdlet parity; 154 cmdlets across 26 categories via the
CS-*prefix;Connect-CSSite/Disconnect-CSSiteconnection management - PowerShell module —
Cesivi.PowerShellv3.1.0; installable from the PowerShell Gallery workflow - Authentication — NTLM, Basic, Bearer JWT, Forms-based, SAML/WS-Federation, Certificate, App-Only (ACS + OAuth2 client-credentials)
- Storage back-ends — FileSystem (default), InMemory, SqlServer, SQLite, MySQL, LiteDb, PostgreSQL; all providers pass the full storage-parity matrix
- Search — KQL parser, Lucene full-text indexing with leader-election for multi-node clusters; managed properties, result sources, query rules, display templates
- Taxonomy — full Term Store (Groups/Term Sets/Terms), CSOM TaxonomySession surface, REST
/_api/v2.0/termStore, PnP taxonomy cmdlets - Publishing — Publishing Web activation, Pages library (BaseTemplate 850), scheduling, approval workflow, variations
- Forms Designer — visual tab/section/field layout editor with visibility rules, default-value override, custom HTML slots; consumer surfaces wired to NewForm/EditForm/DispForm
- BCS — Tier 1–4 Business Connectivity Services (external content types, HTTP/JSON/REST providers, event subscriptions)
- OnlyOffice integration — WOPI host for in-browser document editing (Community Edition, 20-connection cap)
- Clustering — Garnet embedded or external Redis back-plane; Lucene leader-election; DataProtection key sharing; SignalR cross-node via Redis; two-node smoke tests
- Modern UI — face-lifted shell (
_ModernLayout) over the complete classic SharePoint feature surface; three density modes; WCAG 2.1 AA a11y pass; multilingual (en-US, de-DE) - Cesivi Administration — rebranded Central Administration pages; farm health, web app management, service config, timer jobs, backup/restore
- Migration Tool — document-library import from file-system, SharePoint Online (via CSOM), SharePoint 2016/2019
- Extensibility —
Cesivi.Server.Extensibilityplugin framework (collectible ALC, hook system, custom field renderers, custom API surfaces, custom web parts) - E2E test suite — Playwright-based, 309 test classes, 95.75% pass rate (2048P/66F/25S)
Known Limitations¶
See _docs/KNOWN_LIMITATIONS.md for the full catalog. Key items:
- ~39 PnP tests blocked by PnP PowerShell 3.x client-side limitations (not server-side)
- CSOM suite-level
CsomListItemTestshang when run en-masse (pass individually); use the batch runner - 3
LoadQueryWheretests skip due to client-sideBaseTypeenum limitation - OnlyOffice: 20-connection Community Edition cap; legacy
.doc/.xls/.pptrequire conversion step - 66 E2E test failures deferred to v1.1 (scatter residuals across ModernMisc, ModernForm, SuiteBar, SearchFlow, VersioningSettings, TopNavMobile, Ribbon classes)
Upgrade Path¶
N/A — this is the first release.