History and Evolution: From Apache JSPWiki to Wikantik (2026)

Wikantik began in March 2026 as an ambitious architectural experiment: could Apache JSPWiki—one of the oldest, most battle-tested Java wiki engines, originally created by Janne Jalkanen in 2001—be systematically refactored into an agent-grade semantic knowledge platform where human engineers and autonomous AI agents share a single source of truth?

Over a compressed eight-month engineering arc (March–October 2026, culminating in release 2.4.56), the platform replaced JSPWiki's 2000s-era JSP templates, custom {{{...}}} wiki markup, and flat filesystem assumptions with a Java 25 / Tomcat 11 modular monolith, a React 19 SPA, PostgreSQL 18 + pgvector 0.8.6 hybrid retrieval, a dual Page Graph + Knowledge Graph + Jena RDF/OWL ontology, 51 Model Context Protocol (MCP) tools, and a closed-loop Content Intelligence engine.


1. Chronological Evolution & Architectural Phases (March–October 2026)

flowchart LR
    subgraph P1["Phase I: Core Modernization<br/>(March–April 2026)"]
        A1["Java 25 + Tomcat 11<br/>Constructor Injection (ADR-001)<br/>JSP -> React 19 SPA (Vite 8)<br/>CommonMark + YAML Frontmatter<br/>KG Core (kg_*) + Dual MCP Servers"]
    end

    subgraph P2["Phase II: Spine, Ontology & Bundles<br/>(May–June 2026)"]
        A2["Structural Spine (canonical_id ULIDs)<br/>Page Graph vs KG Separation<br/>SCIM 2.0 (/scim/v2)<br/>Jena RDF/OWL Ontology + SPARQL<br/>Context Bundles (assemble_bundle)<br/>Contextual Embeddings (+14% Recall)"]
    end

    subgraph P3["Phase III: Briefings & Cluster Architecture<br/>(July–August 2026)"]
        A3["Session Briefings (get_briefing / SA-13)<br/>7 External Source Connectors<br/>Cluster Declaration (ADR-0009)<br/>hubs: Retired · Sub-Clusters<br/>Content Intelligence Loop (2.4.6)"]
    end

    subgraph P4["Phase IV: Hardening & Obsidian UX<br/>(September–October 2026)"]
        A4["wikantik-jdbc Primitive (ADR-0010)<br/>PostgreSQL 18 + pgvector 0.8.6<br/>Public Ontology Guest-ACL Gate<br/>Obsidian Live Preview & Vault Import<br/>Native [[Wikilinks]] & ![[Embeds]]<br/>1,462-Page Corpus Gold Sweep"]
    end

    P1 --> P2 --> P3 --> P4

2. Phase I: The Fork and Core Substrate Overhaul (March–April 2026)

In March 2026, the fork tackled the four foundational blockers preventing Apache JSPWiki from serving modern web users and AI agents:

  1. Decoupling the Engine (ADR-001 & Constructor Injection, March 2026): Extracted manager interfaces into wikantik-api (ADR-001) and refactored service-locator patterns into constructor injection (Constructor Injection) and decoupled test stubs (Test Stub Conversion).
  2. Eliminating JSP Templates for a Single React 19 SPA (2026-03-28): Removed all legacy .jsp templates (Haddock, default) and the transitional /app/ prefix (Remove JSP and /app/ Prefix). A single Vite 8 + React 19 + React Router 7 application now serves reading, editing, graph exploration, and administration from /, paired with Server-Side Rendered (SSR) <head> metadata and JSON-LD so search crawlers and the SPA never diverge.
  3. JSPWiki Syntax \to CommonMark Markdown + YAML Frontmatter: Built WikiToMarkdownConverter to translate legacy JSPWiki markup (!!!Heading, [alias|Page], {{{code}}}) into CommonMark Markdown with server-validated YAML frontmatter (Frontmatter Conventions).
  4. Knowledge Graph Core & Dual MCP Servers (April 2026): Introduced PostgreSQL kg_* tables (2026-04-04), type: runbook pages, page verification stamps (mark_page_verified), and the two dedicated MCP endpoints: /wikantik-admin-mcp and /knowledge-mcp (2026-04-25).

3. Phase II: Structural Spine, Formal Ontology, and RAG Bundles (May–June 2026)

As agents began reading and writing hundreds of pages, early experiments revealed that raw vector search and ad-hoc frontmatter relationships were insufficient:


4. Phase III: Session Briefings, Cluster Declarations, and Closed-Loop Intelligence (July–August 2026)


5. Phase IV: JDBC Consolidation, PostgreSQL 18, and Obsidian-Grade UX (September–October 2026)


6. Architectural Comparison: Apache JSPWiki vs. Wikantik 2.4.56

Architectural DimensionLegacy Apache JSPWiki (Pre-Fork)Wikantik 2.4.56 (October 2026)
Runtime & Build BaselineJava 11/17, legacy monolithic JARsJava 25 LTS, Apache Tomcat 11, 24-module Maven reactor with ArchUnit boundary tests
Frontend & Authoring UIServer-rendered JSP templates (Haddock), plain textareaReact 19 SPA (Vite 8) + CodeMirror 6 Obsidian-style Live Preview, command palette, Cytoscape graph viewers
Markup & Metadata ContractProprietary JSPWiki markup (!!!, {{{...}}}), no frontmatterCommonMark Markdown + native [[wikilinks]]/![[embeds]], KaTeX, Mermaid, and validated YAML Frontmatter (FrontmatterSchema)
Identity & TaxonomyFragile CamelCase filename only26-char ULID (canonical_id) with page_slug_history + Server-enforced Cluster Declarations (ADR-0009)
Search & RAG RetrievalKeyword-only Lucene page searchHybrid BM25 + pgvector HNSW (RRF) with context-prefixed chunk embeddings and cited RAG bundles (assemble_bundle)
Semantic LayerNone (flat page references only)Three Graphs (Page Graph, LLM-extracted Knowledge Graph kg_*, Citation Graph) + Apache Jena TDB2 RDF/OWL Ontology (/sparql)
AI Agent SurfaceNone51 MCP Tools (/knowledge-mcp [22], /wikantik-admin-mcp [29]) + OpenAPI 3.1 (/tools/* [2]) + SA-13 Session Briefings
Content Optimization LoopNoneClosed-Loop Content Intelligence (wikantik-insights) joining GSC + Bing + agent query logs with 28-day DiD EffectEvaluator

7. What Load-Bearing Foundations Remain from JSPWiki

While the presentation, search, database, and AI layers are entirely new, four proven JSPWiki patterns remain load-bearing inside wikantik-main:

  1. VersioningFileProvider & Filesystem Page Store: Storing pages as plain-text .md files on disk with OLD/ version history keeps content human-inspectable, git/rsync-friendly, and decoupled from container image deploys (Content vs. Code Deployment).
  2. FilterManager Save/Render Lifecycle: Pre-save, post-save, and pre-translate filter hooks cleanly orchestrate FrontmatterSchema validation, StructuralSpinePageFilter, citation extraction, and incremental ontology projection.
  3. PluginManager Extension Seam: Supporting inline [{Plugin}]() execution (auto-normalized for Flexmark) for dynamic tables of contents, referrers, and relationship views.
  4. JAAS Security Primitives: The foundational Permission classes (PagePermission, WikiPermission, AllPermission), now backed by PostgreSQL policy_grants, scoped admin:<area> permissions, pac4j OIDC/SAML, and SCIM 2.0.

Cluster Hub: Wikantik Platform Hub: Knowledge Systems, Hybrid Search, and AI Agent Integrations (wikantik-platform)