weft
MIT · foundryside-dev GitHub

Warpline · temporal / change-impact · Python

What changed, when — and what does this change touch.

Per-entity change history keyed on the SEI spine, dated edge snapshots, downstream blast-radius, and the re-verification worklist. Loomweave owns the now; Warpline owns over time. Advisory only — it never gates.

Python v1.0.0 snapshot — see the repo
See what it gives you → Read the repo →
$ warpline changed --rev-range HEAD~1..HEAD
resolving changed entities → temporal facts, keyed on the SEI spine…
loomweave:eid:7f3a9c2e1b… loomweavepresent filigreepresent wardlineabsent legisunavailable

What it is

The one thing no other member stores: change history over time.

Warpline owns change_events, dated edge snapshots, downstream-affected queries, and the re-verify worklist — the temporal facts that answer, before you call a change done: which entities changed, by whom, when, what is downstream-affected over the call graph, and what must I re-verify? It boots, ingests, and answers with no sibling installed; all state lives under .weft/warpline/ (git-ignored).

Advisory only — it never gates a change, never enforces a policy, never decides whether a change is allowed.
This is deconfliction tooling, not security. A Warpline answer is an enhancement you can act on or ignore — never a verdict you must clear. Warpline consumes Loomweave SEI and never mints identity; it feeds advisory change-impact facts to governance-style surfaces (Legis / Plainweave), which run their own policy. Warpline supplies the facts and never makes the call.

Key capabilities

Blast-radius and the worklist — reported as honestly as they are computed.

Impact radius, freshness-honest

A bounded traversal over the latest dated edge snapshot returns the downstream-affected set — and carries completeness + staleness on its face. An empty affected set under NO_SNAPSHOT means "no graph to look at," never "nothing is affected." The FreshnessMeter is the point: a thin answer looks thin.

impact radius · DELTA62%
staleness: 3 commits behind snapshot

The re-verification worklist

reverify renders the blast-radius into a prioritized worklist of entities to recheck before you claim a change is done. The changed entities are always present (reason: changed), so it is useful even with no snapshot; downstream items are added when a snapshot exists. priority comes from sibling enrichment (Filigree) — never invented by Warpline.

loomweavepresent filigreepresent wardlineunavailable

Per-entity timeline + churn

timeline gives the ordered change history for one entity (reporting sei_resolution only, never lineage); churn gives per-entity change-event counts. A never-observed entity is honestly churn_count: 0.

Keyed on the SEI spine

Keys its facts on the SEI spine, treats it as opaque, and never mints it — Loomweave is the one identity authority. Every entity carries both locator and sei (loomweave:eid:…, stored opaquely); warpline_entity_key_id is internal and not a federation key.

Read the SEI spine on the hub →

Usage snapshot

The core loop, in four commands.

A curated quick-start — the full CLI and MCP reference lives under this subdomain's own paths and in the repo. Warpline is local-first; none of these need a sibling installed.

$ warpline backfill --repo . --json # ingest git history
$ warpline changed --repo . --rev-range HEAD~1..HEAD --json
$ warpline capture-snapshot --repo . --json # capture loomweave edges
$ warpline reverify --repo . --changed-entity-key-id 1 --json

Call changed first — its next_actions hand back ready-to-call arguments for reverify and blast_radius. The same loop runs over the warpline-mcp stdio server. The six frozen federation tools:

warpline_change_list changed Changed entities for a rev range; hands back ready-to-call next actions. Call first.
warpline_entity_timeline_get timeline Ordered change history for one entity; reports sei_resolution only, never lineage.
warpline_entity_churn_count_get churn Per-entity change-event counts; a never-observed entity is churn_count: 0.
warpline_impact_radius_get blast_radius Downstream affected set with mandatory completeness + staleness.
warpline_reverify_worklist_get reverify The agent worklist to recheck before claiming completion.
warpline_edge_snapshot_capture capture_snapshot The only mutating tool; captures dated loomweave edges into .weft/warpline/.

How it composes · this member's pairings

Each pairing is honest on its face.

Warpline composes pairwise and enrich-only — never load-bearing for anyone, and no one load-bearing for it. Status is intrinsic to each row; a partial or planned pair is never rendered as live.

Warpline Filigree live

The re-verification worklist becomes tracked work.

Filigree consumer (warpline_worklist_ingest) shipped in Filigree 3.0.0 — the EARNED inbound seam.

Warpline Loomweave live

"Now" + "over time" — change history keyed on the SEI spine.

Shipped: warpline resolves loomweave SEIs (entity_resolve) and keys its temporal surfaces on them, default-on at ingest. Asterisk until an automated live round-trip e2e gate lands.

Warpline Wardline partial

Change-impact enriched with trust posture (risk-weighted blast radius).

Enrichment shipped: warpline annotates the change-impact worklist with wardline trust findings (advisory). The risk-weighted re-ranking of the blast radius is not yet built.

Warpline Legis planned

Temporal change facts available to governance preflight.

Seam frozen; implementation fast-follow.

Status & honest limits

What Warpline is, and what it cannot do yet.

The seams that have not shipped are not presented as working.
Warpline is production-stable for its own surface, and scrupulously honest about what is wired and what is not. Read these before you wire it in.
  • Warpline is the 5th admitted member (2026-06-14, PDR-0022) and joined the five-member launch cutover (PDR-0026). The seam contracts froze at the cutover; the consumer implementations landed incrementally — the Filigree work-state read and the Loomweave SEI/temporal seam are live, the Wardline risk seam is partial (trust-finding enrichment), and the Legis preflight seam is still reserved-shape.
  • The Loomweave inbound seam is PROVEN and FROZEN (real SEI resolution + edge capture). The Filigree work-state read is EARNED (consumed by golden vectors). The Wardline risk seam is DRIVEN but partial — trust findings enrich the change-impact worklist (advisory), not yet a risk-weighted blast radius. The Legis preflight seam is RESERVED-SHAPE and non-binding — present in the contract, not yet driven by a real sibling; reported as unavailable / absent, never pretended wired.
  • Entity extraction is Python-aware (it derives python:function: / python:class: locators from .py sources); other file types are tracked at file: granularity.
  • Blast-radius is only as complete as the captured snapshot. completeness: NO_SNAPSHOT means "changed set only," never "nothing is affected." A thin answer is reported thin.

Want to see it actually run?

Lacuna runs Warpline's tools against a catalogued codebase and demonstrates the Filigree consumer seam end to end.

See it on the specimen → Read the doctrine →