tix-tracker 0.12.0

A terminal issue tracker: markdown + YAML frontmatter issues with a kanban TUI and CLI
Documentation
//! Saved issue views (mission `saved-issue-views-01M3C926`).
//!
//! A saved view is a **named, repository-owned query definition** with a stable
//! identity: filter/sort/group/board visibility (`ViewPlan`, WP02's
//! `views::plan`), explicit scope metadata, and preserved extension fields. There
//! is no database, no hosted view service, and no second query language
//! (C-001/C-004).
//!
//! WP01 owns two things, both in [`registry`]:
//!
//! - the **stable registry**: immutable generated view IDs, mutable display
//!   names, declaration-ordered persistence in `tix.toml` behind
//!   `[views.<view-id>]`, and the one write path that validates a complete
//!   candidate before the existing atomic config save (C-001/C-002/C-008);
//! - the **scope model**: repository, project, and user/share metadata, with
//!   project-over-repository precedence and deterministic tie diagnostics
//!   (C-003/FR-003).
//!
//! Later work packages add `plan` (WP02), `service`/`divergence` (WP03), and the
//! CLI/TUI/MCP/portable surfaces (WP04–WP07) beside [`registry`]. They consume
//! this module's definitions; the record shape persists a plan it does not
//! interpret, which is what keeps the typed plan WP02's to own.
//!
//! Two boundaries are **not** negotiable here, because the escalated alternatives
//! are what the intake forbids:
//!
//! - **user/share scope is metadata.** `owner` and `shared_with` are strings
//!   stored on the record. They grant no permission, create no account, and are
//!   never compared against an ambient identity — [`ViewRegistry::select`] takes
//!   no "current user", so sharing cannot be inferred from one (C-003/C-009);
//! - **applying a view is not this module's job and never writes.** The registry
//!   reads and writes `tix.toml` only. No issue file, comment, relationship, or
//!   History entry is touched by anything here.

pub mod divergence;
pub mod plan;
pub mod portable;
pub mod registry;
pub mod service;

pub use divergence::{ActiveViewMarker, ViewDifference, ViewDivergence, ViewSurface};
pub use portable::{
    FORMAT as PORTABLE_FORMAT, PortableDiagnostic, PortableDifference, PortableDivergence,
    PortableDocument, PortableMarker, PortableRemoteTarget, PortableRemoteTargets, PortableScope,
    PortableView, VERSION as PORTABLE_VERSION,
};
pub use registry::{
    ProjectDirectory, SavedView, ScopeResolution, ViewDiagnostic, ViewDiagnosticKind, ViewId,
    ViewRefusal, ViewRegistry, ViewResult, ViewScope, ViewScopeKind, ViewWriteError,
    ViewWriteResult,
};
pub use service::{
    DeleteConfirmed, DeletedView, ViewAuditEvent, ViewDefinition, ViewDetail, ViewMutation,
    ViewMutationKind, ViewOutcome, ViewService,
};