Repository navigation
Releases
tiergraph 0.9.0
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-earlieranddrop-to-provisionalpolicies. - 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.tgdbSQLite 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_methodrequired for nonexact results. - Capped general graph-distance lower bounds at the cheapest container regrouping operation.
- Made
GrammarChartProfileexpose its graph and root directly. - Made
FoldDeclarationrefuse repeated roots andEqualsrequire tuple literals. - Made
Spanspredicate binding resolve the other tier before evaluation. - Made offset-profile JSON refuse both or neither of
extentandendas 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
DotPresentationguide example. - Documented
tiergraph.diffandtiergraph.distanceas shadowed secondary modules with explicit import forms.
tiergraph 0.8.0
Added
- Added relation-instance references as targets of
set_attribute,
remove_attributeandremove_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 reportcut-at-budget. - Added opt-in CLI
--max-stepsand match-requestmax_stepswork 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.epsilonandCompiledPattern.atom_edgesnow 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 nonemptycut-at-budgetprefix; 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 madecountavoid
retaining span witnesses.
tiergraph 0.7.0
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.matchandtiergraph.predicateto supported secondary
APIs.
tiergraph 0.6.0
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
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
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
Changed
- Ranked PATH folds enumerate bounded products lazily instead of materializing every candidate.
tiergraph 0.4.0
Added
- Value predicates (
tiergraph.predicate), their strict JSON form, andWhereSelector. - Text predicates through
PredicateSyntax, missing-cell aliases, andselect --where. - One-step
relation_imagetraversal and quantifiedRelatedpredicates.
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
Added
- Added JSON-valued attributes.
JsonType.JSONdeclares an attribute whose
value is ordinary JSON -- null, a boolean, an integer, a double, a string,
an array or an object -- held asJsonAttributeValueon 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, so0,0.0andFalseare three values and-0.0crosses the
wire as-0.0. - BREAKING:
FORMAT_VERSIONmoves 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.
JsonAttributeValuerefuses one where it is built, and reading a document
refuses one as a stagedRefusalrather than loading a value its peers
would corrupt. - Reading a document refuses an integer literal too long to convert as a
stagedRefusal, where it previously raised a bareValueErrorfrom 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
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
EmissionsandOutputPlan, which pool the mass of complete paths by
the output string their items emit, over candidates the caller supplies, beside
PathPlanand without changing it.OutputPlan.massesreturnsOutputMasses:
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. Itsdecidedandtied
certificates are available only underLOG_PROBABILITYandCOUNTING; under
LOG_PROBABILITY,tiedcompares computed values, which an approximate
algebra can split for equal real masses.conditionedrestricts the plan to
paths accepted as one candidate, refused only when no such path exists, and
item_marginalspools those conditioned marginals back to the base plan's
items asOutputItemMarginals. 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_VERSIONstays"0.2.0": nothing in this line touches the wire
format, andmake format-growthreports 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.