Replies: 1 comment
|
Status (April 2026): The vision described here has been partially realized through incremental work rather than a big-bang migration. Organization pages now have rich tab-based layouts (personnel, funding, divisions, charts). Entity directory pages are the primary browsing interface. Wiki pages serve as narrative analysis. The architectural direction moved forward without a formal RFC decision — closing as the current implementation reflects the spirit of this proposal. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Vision
Transition from the current wiki-centric architecture — where MDX pages embed structured data inline — to a data-first architecture where structured data lives in TableBase/FactBase/PG and wiki pages serve as narrative analysis tabs within entity directory pages.
Current state: Entity directory pages (e.g.,
/organizations/manifund) show structured data in tabs, while wiki pages (/wiki/E547) exist as separate standalone pages containing a mix of prose and embedded structured data (tables, timelines, comparisons). Users must click through to discover wiki content. ~40-50% of wiki page content is structured data that duplicates or should live in the database.Target state: Entity directory pages are the primary view. Wiki content is a tab within them. Structured data is extracted from wiki pages into the proper data layer. Wiki prose focuses on analysis, context, and arguments — things that can't be a database row.
Reference: PR #2893 (wiki excerpt on person pages) is a first step. PRs #2897/#2899 (shrinking database.json) are laying infrastructure. Epic #2428 (PG-first direction) is the infrastructure foundation.
Workstreams
WS1: Wiki-as-Tab on Entity Directory Pages (~8h)
Make wiki content a tab within entity directory pages instead of a separate standalone page.
WikiTabcomponent that renders complete MDX content (not just an excerpt) within ProfileTabs/wiki/E<id>redirects to/organizations/<slug>?tab=wikifor entities that have directory pages. Standalone/wiki/URLs remain for entities without directory pages (concepts, risks, analyses)WS2: Extract Structured Data from Wiki Pages (~20h)
Audit existing wiki pages and move embedded structured data into the proper data layer. This is the bulk of the work — going page by page through the ~200 entity wiki pages that have directory page counterparts.
Data types to extract:
grantstablepersonneltableProcess per page:
crux w fix escaping+crux w fix markdown+ gate checkPriority order:
WS3: Build Data-Backed Wiki Components (~8h)
Create reusable MDX components that render structured data from PG/FactBase, replacing static inline tables.
<EntityComparison entities={["manifund","ltff","sff"]} properties={["speed","grant-size","transparency"]} />— renders a comparison table from FactBase properties across multiple entities<EntityTimeline entityId="manifund" />— renders a timeline from temporal FactBase records or PG events<GrantsSummary entityId="manifund" limit={10} />— renders a summary of grants from PG with link to full tab<PersonnelTable entityId="manifund" />— renders personnel from PG<QuickAssessment entityId="manifund" />— renders assessment properties from FactBase<OrgDetails entityId="manifund" />— renders key org metadata from TableBase + FactBasemdx-components.tsxDesign decision: These components read from
database.jsonat build time (consistent with current wiki page pattern — zero runtime API calls for content pages). They pull structured data that was synced from PG/FactBase duringbuild-data.mjs.WS4: Expand FactBase Coverage (~10h)
Currently only ~40 entities have structured FactBase entries. To support data-first rendering, we need broader coverage.
crux tborcrux fbwith a command to bootstrap FactBase entries from existing wiki page content (semi-automated extraction)WS5: Audit & Cleanup Wiki Pages Post-Extraction (~8h)
After structured data is extracted, audit wiki pages for quality:
<FBF>components (single source of truth)crux w validate gate --fixKey Design Decisions (Need Input)
Full wiki vs excerpt in tab? PR feat: show wiki page excerpt on person directory pages #2893 shows an excerpt. Should the wiki tab show the complete article, or always an excerpt with "Read more"? Full article means some tabs could be very long.
What happens to
/wiki/E<id>URLs? Options:/<type>/<slug>?tab=wiki— clean but breaks existing links/wiki/E<id>renders the same content but in a full-page layout (no tabs) — for sharing/printingEntities without directory pages: ~450 entities (concepts, risks, analyses) have wiki pages but no directory page. Options:
/wiki/pagesComponent data source: Should data-backed MDX components read from
database.json(build-time, consistent with current wiki pattern) or make ISR API calls to wiki-server (fresher data, more complexity)?Migration pace: Go entity-type-by-type (all orgs, then all people, then all models)? Or priority-by-importance (top 20 entities across all types first)?
Estimated Effort
WS1 and WS4 can start immediately in parallel. WS3 follows once WS1 validates the tab pattern. WS2 is the bulk and depends on WS3 components. WS5 is cleanup after WS2.
Much of WS2 and WS5 is mechanical page-by-page work well-suited to agent sessions with
crux w improve.Success Metrics
All reactions