Actionist Knowledge Graph
Where we are · generated 2026-08-29

3,010 sources discovered. 0 admitted. The pipeline has never completed end to end.

This page answers "where are we at" by query, not by reading twelve documents. It is generated from data/state.json, which is computed from named source files on every build and independently re-derived by a second program before it may ship. No figure on this page was typed by hand.

Source of truth · data/state.json Generator · derive-state.mjs Checker · verify-state.mjs Research only · implementation not authorised

The assembly funnel

A total is not a state. "3,010 sources" is the number that let an agent conclude the shelf was stocked while zero blocks were admitted, so this page publishes the pipeline and its blockage instead. Each stage is a predicate over a named source file, not a maintained integer — the definitions are below, and every count is re-derivable.

Discovered
3,010rows
−2,315(76.9% lost)· largest drop
Triaged
69523.1% of intake
−592(85.2% lost)
Rated
1033.4% of intake
−101(98.1% lost)
Forked
20.07% of intake
−0(0.0% lost)
Built
20.07% of intake
−2(100.0% lost)
Qualified
never reached
00.0% of intake
−0(0.0% lost)
Admitted
never reached
00.0% of intake

What each stage means

Discovered
A row exists in the capability source registry.
Triaged
A human or process assigned a disposition, or moved the verdict off the default discovery_candidate.
Rated
Carries at least one observed fact about the source itself. Stars, tags, age and README claims are explicitly NOT evidence (R3).
Forked
We own the code: an Actionist block declares this source as its donor at a pinned revision.
Built
A block manifest exists with linked records under blocks/.
Qualified
Qualification status is an affirmatively qualified value. Read by allowlist: an absent or unrecognised status is never qualified.
Admitted
Admitted for a named host and tenant scope, read by allowlist. Never "reusable on the internet", and never inferred from the absence of a rejection.

Data lanes and freshness

Per-lane budgets, never uniform. Local lanes are measured every build; external lanes are declared and never triggered by the front door. Budgets are per-lane and justified, never uniform: a gate that cries wolf is worse than no gate. Currently 7 fresh, 0 overdue, 0 unreachable, 2 declared.

Capability source registryowner · Discovery
FRESH
Last changed 2026-08-29 · 0.03 of 14 days used
budget14d

3,010 rows. Stage-0 intake with no judgment applied; row count is explicitly NOT a measure of shelf quality.

Why this budget: Discovery runs in campaign waves, not continuously. Two weeks between waves is normal operation, not decay.
knowledge/capability-shelf/source-registry.jsonl
Actionist blocksowner · Blocks
FRESH
Last changed 2026-08-29 · 0.01 of 21 days used
budget21d

Two prototypes, zero admitted.

Why this budget: A block is weeks of work. Three weeks without a change is a slow patch, not a stall.
blocks
Framework registerowner · Front door
FRESH
Last changed 2026-08-28 · 0.91 of 30 days used
budget30d

Canonical original. The copy under site/system-map/task-graph/frameworks/ is generated, never edited.

Why this budget: Frameworks are synthesis artifacts. They should change slowly; churn here would be a smell, not health.
knowledge/frameworks/framework-register.json
Site page registryowner · Front door
FRESH
Last changed 2026-08-29 · 0 of 7 days used
budget7d

Drives nav, cmd-K, sections and ordering. Route/registry closure is enforced by verify-site.mjs.

Why this budget: The registry projects the entire site IA at runtime. If it lags the HTML by more than a week, navigation is lying.
site/system-map/data/page-registry.json
System partsowner · Front door
FRESH
Last changed 2026-08-29 · 0.08 of 30 days used
budget30d

Single source for the 15 part pages, the front-page map and the inline card data.

Why this budget: The 15-part decomposition is the stable spine of the system map. Frequent change would mean the model is not settled.
site/system-map/data/parts.json
Component store (21st)owner · Components
FRESH
Last changed 2026-04-23 · 127.51 of 180 days used
budget180d

3,509 component directories with real source. Private: built by a mechanism 21st.dev's terms prohibit.

Why this budget: A settled corpus on disk. It is not decaying; it is inventory. A long budget prevents this lane from crying wolf every week about a store nobody intended to change.
/Users/shaansisodia/SISO_Workspace/SISO_Knowledge/design-system/library/21st-dev
Great Library registryowner · Great Library
FRESH
Last changed 2026-08-27 · 2.06 of 14 days used
budget14d

Actionist answers GQ-004 and instantiates GQ-006. Read-only from here.

Why this budget: Maintained daily upstream. Two weeks of silence locally means our copy of the relationship has gone quiet, which is worth surfacing.
/Users/shaansisodia/SISO_Workspace/Great_Library_of_SISO/registry/works
Mac Mini discovery corpusowner · Discovery
DECLARED
Declared lane · never probed at build time · no declared sweep on record

1,358,200 repo_card rows, 465k identities, 386k categorisations. UNREACHABLE when last probed (2026-08-29, connection timed out). Deliberately NOT probed at build time: the front door never opens an SSH session. Its row counts are cited in research as historical observations and must never be rendered as current.

Why this budget: A 1.9GB working index refreshed by campaign, not continuously. But it has been unreachable, and unreachable is a different fact from stale.
ssh://100.86.94.117 identity.sqlite
GitHub discovery sweepsowner · Discovery
DECLARED
Declared lane · never probed at build time · last declared sweep 2026-08-28

577 rows admitted at stage 0 in the last wave. Declared, never triggered by a page load.

Why this budget: Rate-limited and expensive. Campaign-driven by design.
https://api.github.com

Blocks

Every block currently built, with its donor, reuse shape and qualification status. Admission is always scoped to a named host and tenant, never "reusable on the internet".

AFFiNE workspaceactionist/affine-workspace
held for decision
Donortoeverything/AFFiNE
Reuse shapeintact_service
Mountiframe_cross_origin
Executionunexecuted
Coherence ceilingbounded
Evidence tierT0
Qualification families: 1 pass, 8 deferred or not run, of 9.
Teable data gridactionist/teable-data-grid
held for decision
Donorteableio/teable
Reuse shapeintact_service
Mountservice_only
Executionpartial_local_proof
Evidence tierT0
Qualification families: 4 pass, 5 deferred or not run, of 9.

Known structural defects

Computed from the estate on every build, not maintained by hand — each entry disappears on its own when the underlying defect is fixed. A written-down defect list goes stale the moment someone fixes something, and an organ reporting a problem that no longer exists is the same cry-wolf failure as a bad freshness gate.

The block manifests and qualification dossiers use disjoint schemas. No single validator can read both, so nothing mechanically checks that a block is well-formed.structural
Owner: Blocks (SOL-ESTATE)

Two blocks can be reconciled by hand. A shelf heading for hundreds cannot. Every consumer currently re-implements the same field-shape guesswork, and each one can guess differently — this has already produced one wrong published number: a reader expecting object-shaped family entries silently counted AFFiNE's passing family as zero, and the error reached a client-facing artifact before it was caught.

block idid fieldadmission vocabularydossier status fieldfamily value shape
actionist/affine-workspaceblock_idadmission_status + execution_statusqualification_statusbare_string
actionist/teable-data-gridblock_idadmission_status + execution_statusstatusobject_with_status
How this is detected: Computed by comparing manifest_shape and qualification family value shapes across blocks/. Resolves automatically when the schemas converge.
Donor repositories are recorded in different formats across manifests: a bare owner/repo slug in one, a full .git clone URL in another.data
Owner: Blocks (SOL-ESTATE)

Anything joining on donor identity silently fails to match rather than erroring. state.json normalises on the way out, so consumers are protected, but the underlying records still disagree.

block idrawcanonical
actionist/affine-workspacehttps://github.com/toeverything/AFFiNEtoeverything/AFFiNE
actionist/teable-data-gridhttps://github.com/teableio/teable.gitteableio/teable
How this is detected: Computed by comparing each manifest raw donor value against its canonical owner/repo form.

Every published number, and where it comes from

Each row names the file it was computed from and the method used. verify-state.mjs re-derives all of them by a different mechanism and fails the build on any disagreement.

MeasurementValueSourceMethod
sources registered3,010knowledge/capability-shelf/source-registry.jsonlJSONL line count
blocks built2blocks/*/actionist-block.jsonmanifest count
blocks admitted0blocks/*/actionist-block.jsonlifecycle.admission_status in {admitted, admitted_for_scope} AND admission_scope names at least one tenant or application. Allowlist, not a negation against a sentinel — an absent or unrecognised status is never counted as admitted.
parts mapped15site/system-map/data/parts.jsonarray length
frameworks registered24knowledge/frameworks/framework-register.jsonframeworks[] length
published routes206site/system-map/data/page-registry.jsonpages[] where !external
components with source3,507SISO_Knowledge/design-system/library/21st-dev/directory count excluding _utils
great library works33Great_Library_of_SISO/registry/works/*.json file count

Who owns what

One owner per domain; contracts own the seams. If you need something from another domain, go through its contract rather than reading its internals. Anything crossing a seam is a contract change, not a local edit.

DomainOwnsExposes
ComponentsThe UI corpus: acquisition, taxonomy, curation, storageCanonical entity + alias set, normalised author/slug identity, Dynamic Search wire format
BlocksRepo→block conversion, forks, the catalogThe seven linked records; actionist/<name>@<semver> identity
DiscoveryMining all seams (Mini corpus, GitHub, industry scrapes)Rated candidates with provenance and evidence class
CompositionFitting blocks into an appAssemblyPlan, CompatibilityProof, UNDERDETERMINED questions
HostIdentity, tenancy, data, settings, navigation, connectorsHostContract
Front doorINTENT.md, the site, the state recordINTENT.md, STATE.json, the published map