Vyasa Extension Refactor Audit and Execution Plan

Contract BaselineURL copied

The extension contract says:

  • Extensions describe behavior with Python metadata.
  • .vyasa selects and configures extensions.
  • Extensions register through a restricted VyasaExtensionApp, not raw FastHTML and not raw ExtensionRuntime mutation.
  • The app surface includes:
    • app.routes.add(...)
    • app.assets.bundle(...)
    • app.markdown.fence(...)
    • app.markdown.preprocessor(...)
    • app.layout.slot(...)
    • app.layout.mode(...)
    • app.config.defaults(...)
    • app.lifecycle.startup(...)
    • app.lifecycle.shutdown(...)
    • app.storage.namespace(...)
  • Capability strings validate conflicts and requirements.
  • Asset bundles are loaded by page need.
  • Storage namespaces give each extension durable local territory.
  • A Markdown syntax marker has exactly one owning render extension.
  • A route prefix has exactly one owning route extension.
  • A slot has exactly one owner.

The current implementation does not provide VyasaExtension, does not provide VyasaExtensionApp, does not instantiate extension classes, and lets built-ins mutate ExtensionRuntime directly.