Skip to content

Releases

tiergraph 0.9.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 12 Oct 20:06
b1818e7

Added

  • Added the public parse_path_index_segment() path-index parser.
  • Added Displacement.to_data() for deterministic JSON-compatible edit reports.
  • Added functional, identified, and exact graph equivalence, diagnostics, and fingerprints.
  • Added checked primitive graph edits with displacement and local dependency refusals.
  • Added clock-aware editing under explicit keep-earlier and drop-to-provisional policies.
  • Added positional declaration editing and atomic undeclare_with_contents() cascades.
  • Added opt-in journals with reports, annotations, dry runs, undo, redo, and bounded history.
  • Added guarded, invertible, composable JSON Lines patches with exact replay checks.
  • Added deterministic graph differences and exact graph-to-program construction replay.
  • Added construction programs with machine_version "2"; every other version is refused.
  • Added guarded subtree replacement and swapping with explicit correspondence policies.
  • Added displacement-aware selected bulk editing with shared work budgets.
  • Added graph-editing commands for primitives, patches, differences, bulk edits, and cleanup.
  • Added declared edit costs, exact sequence, tree, and segmentation distances, and bounded graph distance.
  • Added path commitment, exact retiming, and containment reconstruction from timing.
  • Added undoable orphan pruning and immutable-value compaction.
  • Added held item-run moves, unequal run swaps, and identity-preserving ordered-tier shifts.
  • Added exact split and merge operations for nested ordered-containment containers.
  • Added checked link accounting for plain, journaled, clock-aware, and derived edits.
  • Added complete ordered detachment reports for replacements, swaps, path commitment, and clock changes.
  • Added SpanViewProfile.to_data() for saving imported TextGrid profiles.
  • Added lossless strict-JSON path marginal, posterior, and cost serialization.
  • Added an opt-in typed blob vocabulary with ordered graph attachments.
  • Added streaming blob hashing, verified readers, resolver chains, and sink protocols.
  • Added strict lazy reading and deterministic writing of versioned blob bundles.
  • Added exact clock checks and clock-edit guards for blob attachment spans.
  • Added blob and bundle commands for inspection, storage, movement, and verification.
  • Added a lazy tiergraph.tgdb SQLite store with explicit read-only and writable modes.
  • Added content-addressed tgdb object storage with inline and file-backed residency.
  • Added ordered tgdb collections, instances, commits, lifecycle operations, and undo.
  • Added complete tgdb graph versions with fingerprints, history, and verified lazy loading.
  • Added replay-checked tgdb patches, version differences, reverts, and publication undo.
  • Added atomic multi-instance tgdb batches and stable reader snapshots.
  • Added tgdb tier indexes, typed queries, bounded predicates, and fixpoint checks.
  • Added declared tgdb item indexes with typed equality and exact numeric ranges.
  • Added tgdb payload ingestion, blob indexes, resolver and sink adapters, and repacking.
  • Added byte-preserving tgdb bundle import and export with explicit missing-payload handling.
  • Added typed tgdb blob metadata columns and content-checked queries.
  • Added explicit tgdb payload inspectors with bounded nested graph indexing.
  • Added tgdb history pruning, retired-instance purging, payload pins, and safe garbage collection.
  • Added ordered tgdb schema migrations and consistent atomic backups.
  • Added synthetic tgdb corpus-loop measurement of time, memory, storage, history, and replay.

Changed

  • Made grammar-chart paths refuse leading-plus digit segments as noncanonical.
  • Indexed sparse exact-equality pattern alternatives while preserving declared order and scan fallback.
  • Reduced span-matching work for large bounded repeats without changing completed results.
  • Made shifts enforce common containment ancestry and contiguous child seams by default.
  • Made item and relation removal refuse live dependencies before changing an editor.
  • Replaced projection-witness graph-distance admission with the built-in atom-multiset lower bound.
  • Made DistanceInterval.lower_bound_method required for nonexact results.
  • Capped general graph-distance lower bounds at the cheapest container regrouping operation.
  • Made GrammarChartProfile expose its graph and root directly.
  • Made FoldDeclaration refuse repeated roots and Equals require tuple literals.
  • Made Spans predicate binding resolve the other tier before evaluation.
  • Made offset-profile JSON refuse both or neither of extent and end as a staged shape error.

Fixed

  • Kept default package imports within 5% of 0.8.0 by loading opt-in public surfaces on first use.
  • Restored lazy package-attribute access for noncolliding secondary modules.
  • Selected Praat TextGrid long or short syntax from the body independently of the header spelling.
  • Made capped walks report truncation only when a fresh node is omitted.
  • Removed false pending watermarks for start-anchored patterns in open-left scopes.
  • Refused CLI annotations when no output can retain them.
  • Kept journal provenance on durable acted-on subjects and retired it with those subjects.
  • Preserved relation-subject facts while clock editors rebuild binding relations.
  • Checked protected layers against final candidates, including provenance writes.
  • Preserved undo and redo stacks when restoration or dry-run rollback fails.
  • Reconstructed JSON attribute and layer-fact edits atomically.
  • Reported only references whose subjects departed an edit.
  • Reported donor-side crossing relations and facts without coordinate ambiguity.
  • Preserved surviving subtree-swap boundary values and reported only actual losses.
  • Required linear identified subtree correspondence and preserved the source durable ID.
  • Made carried polyadic crossings refuse invalid flattening or trimming.
  • Made checked editors refuse unreported link withdrawal and accept reported endpoint trimming.
  • Applied shift ancestry and boundary reporting to every affected containment seam.
  • Made container regrouping preserve cross-tier targets and exact semantic inverses.
  • Recognized lossy container merges and changed-survivor merges as one semantic difference.
  • Reported complete clock replacements in source coordinates with exact durable targets.
  • Made layer reads resolve coordinate and durable references consistently.

Documentation

  • Restructured the guides around task-oriented construction, querying, editing, and interchange.
  • Documented every command-line option and JSON input form.
  • Added a complete editing guide and tested timing-import and text-cost recipes.
  • Added an external-resource guide and a runnable closed-media profile.
  • Added a tested versioned-corpus guide for atomic passes, correction, fixpoints, and work queues.
  • Clarified that equivalence views are fixed graph-wide projections and declared order remains content.
  • Added QuickTime to the project lineage for general typed time-based interchange.
  • Added a tested DotPresentation guide example.
  • Documented tiergraph.diff and tiergraph.distance as shadowed secondary modules with explicit import forms.

tiergraph 0.8.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 06 Oct 22:02
d5a34e8

Added

  • Added relation-instance references as targets of set_attribute,
    remove_attribute and remove_relation, so polyadic instances without
    durable ids can be edited and removed.
  • Added declared work budgets for pattern views and binding, predicates,
    span-pair joins, lattice matching, folds and path plans. Exhaustion raises
    BudgetExhausted; outermost budgeted span scans can report cut-at-budget.
  • Added opt-in CLI --max-steps and match-request max_steps work guards.
  • Added work budgets to output-plan preparation, masses, conditioning and item
    marginals.
  • Added work budgets to grammar recognition, derivation counts, best
    derivations and target generation.
  • Added deterministic selector-scan and set-traversal charging to every
    budgeted selection; an ambient meter activates it around a nested
    SequenceSelector.
  • Added opt-in Graph.share_values() to share equal item attributes and
    structural item references; the retained-memory saving holds once the caller
    drops the original graph.

Changed

  • Graph.canonical_items() now returns durable items as the graph's own
    references, with unchanged values.
  • Reduced compiled-pattern memory by packing NFA edges without changing matching results or work accounting.
  • CompiledPattern.epsilon and CompiledPattern.atom_edges now hold packed integers.
  • Avoided graph cycle walks for acyclic bipartite relations whose endpoint types
    are disjoint.
  • Reduced graph construction overhead for empty and singleton attributes and
    valid structural references without relaxing their validation.
  • Made integer-shaped decimal attribute construction avoid general Decimal
    re-parsing and reused the compiled whitespace normalizer.
  • Made exact Decimal folds reuse sufficient context precision instead of
    recomputing a precision bound for every multiplication.
  • Made ranked PATH folds concatenate already-singleton witness values directly
    instead of running general Cartesian deduplication and sorting.
  • Lowered charged steps for large pattern alternations with bounded lookahead,
    without a wall-time gain, while preserving every pattern and lattice result.
    At a step-budget boundary, an outermost span call that previously refused may
    now return a nonempty cut-at-budget prefix; the reverse change cannot occur.
  • Refused empty and non-string durable relation references and relation-instance
    durable ids at construction.
  • Allowed layer flattening onto anonymous polyadic relation instances.
  • Made pattern and embedded-predicate text parsing, and pattern compilation,
    independent of Python call stack depth and allowed 256 nested text groups.
    Pattern ASTs remain limited to 256 levels, and pattern and predicate NFAs to
    1,000,000 states.
  • Stopped spans(limit=) once its extent is settled and made count avoid
    retaining span witnesses.

tiergraph 0.7.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 05 Oct 11:32
1804dc3

Added

  • Added bound pattern execution: one preparation answers exists, focus, spans
    and count, and one bound ordering serves many patterns. Raw orderings keep
    per-pattern scope overrides and refusal order; prebuilt orderings validate
    default scopes first.
  • Added batched item insertion to the editing operation set.
  • Added exact regular-pattern decisions and path counts over emitted finite
    lattices, with declared ambiguity policies and bounded determinization.
  • Added string and JSON-array token emissions read from graph attributes.

Changed

  • Promoted tiergraph.match and tiergraph.predicate to supported secondary
    APIs.

tiergraph 0.6.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 03 Oct 11:38
d098b5f

Added

  • Added full parse-forest output and declarative chart profiles to the CLI.
  • Added projected declared orderings and total span predicates over mixed scopes.
  • Added relation-declared linear orderings for cross-tier and boundary-aware matching.
  • Added strict experimental grammar-generation JSON envelopes and CLI commands.
  • Added experimental keep-all and bounded n-best synchronous-grammar target
    materialization with declared provenance, graph-bound absolute spans, and
    sub-span lattice roots, with finite-string refusal for reachable cycles.
  • Added pattern text parsing, formatting, and command-line matching.
  • Added exact pattern widths and open-right matching watermarks.
  • Added regular sequence patterns over declared graph orderings.
  • Added folds over ordered polyadic dependency relations.

Changed

  • Bound JSON-attribute nesting at construction only, per carrier, so every
    newly constructed value can cross the wire.

Documentation

  • Directed consumers to declare version floors without upper caps.

tiergraph 0.5.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 02 Oct 01:10
869f966

Adds offset spans and interval pair joins to matching (OffsetProfile, Spans, span_pairs; tiergraph#205). Test runs report per-test durations (tiergraph#206).

tiergraph 0.4.2

Choose a tag to compare

@lenzo-ka lenzo-ka released this 29 Sep 16:08
797d3dd

Reuses a graph's fold dependency plan and sets up the exact Decimal context once per fold (#203). Fold output is byte-identical; small folds are several times faster.

tiergraph 0.4.1

Choose a tag to compare

@lenzo-ka lenzo-ka released this 29 Sep 10:51
0b66f85

Changed

  • Ranked PATH folds enumerate bounded products lazily instead of materializing every candidate.

tiergraph 0.4.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 29 Sep 05:30
14a23ae

Added

  • Value predicates (tiergraph.predicate), their strict JSON form, and WhereSelector.
  • Text predicates through PredicateSyntax, missing-cell aliases, and select --where.
  • One-step relation_image traversal and quantified Related predicates.

Changed

  • Ranked folds deduplicate by hashed paths and validate PATH values once, reducing operations without changing output.

Documentation

  • Added a guide to matching with selectors, traversal, predicates, and folds.

tiergraph 0.3.0

Choose a tag to compare

@lenzo-ka lenzo-ka released this 22 Sep 13:51
43b798b

Added

  • Added JSON-valued attributes. JsonType.JSON declares an attribute whose
    value is ordinary JSON -- null, a boolean, an integer, a double, a string,
    an array or an object -- held as JsonAttributeValue on any carrier a
    scalar attribute can sit on. The value is owned: the attribute keeps its own
    snapshot, so a caller mutating the container it passed, or the one it is
    handed back, changes neither. Kinds and float signs are part of the value's
    identity, so 0, 0.0 and False are three values and -0.0 crosses the
    wire as -0.0.
  • BREAKING: FORMAT_VERSION moves from "0.2.0" to "0.3.0". This
    reader accepts only its own format version, so it refuses a document written
    at "0.2.0" with a discriminator refusal. The release line moves because
    the schema grows by the JSON attribute record; otherwise its shape is
    unchanged against the 0.2 line.

Changed

  • A JSON integer must lie within +/-(2**53 - 1), the range a JSON peer decodes
    exactly. JSON has one number type and its peers read it as an IEEE double,
    so a larger integer reads back as a different number with no error.
    JsonAttributeValue refuses one where it is built, and reading a document
    refuses one as a staged Refusal rather than loading a value its peers
    would corrupt.
  • Reading a document refuses an integer literal too long to convert as a
    staged Refusal, where it previously raised a bare ValueError from the
    process's digit limit. This bounds conversion only; it places no budget on
    integer fields other than JSON attribute values.
  • The scalar attribute constructor and a grammar weight refuse a JSON-typed
    declaration, so a JSON value cannot reach a place that reads only scalars.

tiergraph 0.2.3

Choose a tag to compare

@lenzo-ka lenzo-ka released this 15 Sep 20:51
1a4440b

Adds Emissions and OutputPlan, which pool the mass of complete paths by the output string their items emit over caller-supplied candidates, reporting each candidate's mass and the residual of every other output, with decision and tie certificates under LOG_PROBABILITY and COUNTING, structural conditioning, and conditioned item marginals pooled back to the base plan. PathPlan is unchanged. The graph interchange format is unchanged: FORMAT_VERSION stays "0.2.0".

Added

  • Added Emissions and OutputPlan, which pool the mass of complete paths by
    the output string their items emit, over candidates the caller supplies, beside
    PathPlan and without changing it. OutputPlan.masses returns OutputMasses:
    each candidate's mass and the residual mass of every other output, computed in
    the base algebra by one marginal pass rather than by subtraction, with the zero
    mass reported rather than a distribution fabricated. Its decided and tied
    certificates are available only under LOG_PROBABILITY and COUNTING; under
    LOG_PROBABILITY, tied compares computed values, which an approximate
    algebra can split for equal real masses. conditioned restricts the plan to
    paths accepted as one candidate, refused only when no such path exists, and
    item_marginals pools those conditioned marginals back to the base plan's
    items as OutputItemMarginals. Declared roots and relation-instance
    multiplicity carry into the derived plan. Duplicate or empty candidate sets,
    invalid emissions, and noncommutative multiplication are refused. The pooled
    best output over all strings is intractable in general, so the plan scores the
    candidates it is given and reports the residual that bounds every other (#190).

Changed

  • FORMAT_VERSION stays "0.2.0": nothing in this line touches the wire
    format, and make format-growth reports no break.

Documentation

  • The lineage now credits Sue Hertz for the Delta representation, which the
    README and the concepts guide had attributed to Paul Hertz, and spells out
    Heterogeneous Relation Graphs (HRGs) (#189). The README no longer claims that no
    view can disagree with the store.