Skip to content

perf(authoring): harden M168 interactive authoring pipeline - #203

Merged
Coasterpete merged 1 commit into
mainfrom
feature/m168-performance-hardening
Jul 27, 2026
Merged

Coasterpete merged 1 commit into
mainfrom
feature/m168-performance-hardening

Conversation

@Coasterpete

@Coasterpete Coasterpete commented Jul 27, 2026 •

Copy link
Copy Markdown
Owner

M168: Interactive Authoring Reliability and Timing

Summary

This PR delivers the implemented M168 interactive authoring reliability, timing, and performance-hardening work on top of the M167 interactive authoring foundation.

The work focuses on backend reliability, deterministic preview lifecycle management, measured performance improvements, and workspace-owned projection timing while preserving renderer neutrality and the existing ownership model.

Included

  • Complete M168.1 reliability baseline
  • Preserve structured preview diagnostics
  • Add coherent preview lifecycle snapshots
  • Add Deliverable 4A backend timing measurements
  • Add Deliverable 4B correlated editor projection timing
  • Complete M168.3 interactive authoring performance hardening
  • Add deterministic regression tests covering lifecycle, timing correlation, performance hardening, and behavioral equivalence

Design

  • Keeps transaction ownership in TrackAuthoringSession
  • Keeps evaluation scheduling in TrackAuthoringEvaluationCoordinator
  • Keeps editor projection and publication in EditorWorkspace
  • Introduces a monotonic timing tracker for authoring projections
  • Correlates:
    • Request submission
    • Workspace acceptance
    • Projection completion
    • First workspace publication
    • Retirement
    • Engineering snapshot capture
    • Viewport snapshot capture
  • Uses immutable timing records
  • Uses compact immutable summaries for completed projection history
  • Treats instrumentation as observational only and never changes editor behavior
  • Maintains renderer neutrality with no Avalonia-specific timing dependencies

Performance Improvements

Measured improvements from this change:

Operation Before After
Graph/outliner projection assemblies 3 1
Graph compiler invocations 1 1
Engineering snapshot builds 1 1
Viewport snapshot builds 1 1

Additional improvements:

  • Added a final structural freshness check immediately before accepted projection.
  • Prevented obsolete restoration projections during document replacement and workspace disposal.
  • Replaced heavyweight completed timing records with compact immutable summaries while preserving timing and correlation data.
  • Bounded completed timing history to 64 records while preserving all active correlations.
  • Preserved existing lifecycle, scheduling, publication ordering, diagnostics, and renderer boundaries.

Architectural Notes

This change intentionally optimizes only demonstrated redundant work.

No scheduling ownership moved from TrackAuthoringEvaluationCoordinator, no session ownership moved from TrackAuthoringSession, and EditorWorkspace continues to own only editor projection and publication responsibilities.

Instrumentation remains observational and renderer-neutral, and no backend ownership or lifecycle semantics were changed.

Testing

Validated with:

  • 26 focused M168 tests
  • 43 focused M167/M168 lifecycle tests
  • 1,991 Debug solution tests
  • 1,991 Release solution tests

Additional validation:

  • Release build completed with 0 warnings and 0 errors
  • git diff --check completed cleanly

All validation completed successfully.

Outcome

M168.3 completes the performance-hardening phase of the M168 stabilization milestone. Interactive authoring now performs only the necessary editor projection work for an accepted edit, backed by deterministic measurements and regression tests, while maintaining bounded diagnostic retention and the architectural boundaries established during M167 and earlier M168 work.

@Coasterpete
Coasterpete merged commit 2bdc547 into main Jul 27, 2026
1 check passed
@Coasterpete
Coasterpete deleted the feature/m168-performance-hardening branch July 27, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant