(** Inspect and replace the canonical tracker schema. The replacement is published through the Git authority before its local SQLite projection is rebuilt. *) type view = { snapshot : Store_git.snapshot; schema : Core.Schema.t; text : string; } val inspect : repo:Git_eio.Repository.t -> (view, string) result (** Read the active schema, its schema.toml as the blob holds it, and its source commit from one validated tree. *) val doc : view -> string (** Render the schema's reference tables for [tk schema --doc]. *) val change_remote : sw:Eio.Switch.t -> fs:Eio.Fs.dir_ty Eio.Path.t -> net:_ Eio.Net.t -> mono:_ Eio.Time.Mono.t -> repo:Git_eio.Repository.t -> remote:Store_remote.t -> actor:Git.User.t -> message:string -> expected:Store_git.snapshot -> schema_text:string -> row:(Core.Row.t -> Core.Row.t) -> (Store_git.snapshot * string list, string) result (** Validate the complete replacement against [expected], fetch and check the authority's exact tip, push one leased commit, then rebuild the typed local projection. The commit holds [schema_text] byte for byte and every row [row] rewrites; the result names those rows. A proposal that refuses rows names each of them, and a changed authority tip refuses rather than rebasing a schema rewrite implicitly. *) val change_local : sw:Eio.Switch.t -> fs:Eio.Fs.dir_ty Eio.Path.t -> repo:Git_eio.Repository.t -> authority:Git_eio.Repository.t -> actor:Git.User.t -> message:string -> expected:Store_git.snapshot -> schema_text:string -> row:(Core.Row.t -> Core.Row.t) -> (Store_git.snapshot * string list, string) result (** The same operation over a local Git authority, used by fixtures and local installations. *)