SPICEHomeOperationsMissionsBusiness appsKnowledgeGovernancePlanMake a requestApprovalsDigestSitesBoardsCentral Administration

SPICE Architecture Atlas

Evolution · topology · wisdom — one deck, shaped by Saxon XQuery 3.1 + XSLT 3.0 over the XML spine (no central database), served by the central data-driven BoardController.

Topology

flowchart TB
  subgraph Layers[layered assemblies]
    direction LR
    Core --> Foundation --> Hub --> Apps
  end
  subgraph Belt[belt = dataflow, direct]
    direction LR
    s1[station] --> s2[station] --> s3[station]
  end
  subgraph Bus[bus = hub-and-spoke, dispatch]
    H((dispatch)) --> a1[agency]
    H --> a2[agency]
    H --> a3[agency]
  end
  subgraph Dist[distribution, no k8s needed]
    mono[scaled monolith + shared SQL]
    mcp[agencies as MCP/A2A services over the bus]
  end

Evolution — recent cycles

TPL.32
Gantt view (?view=gantt)
2026-10-03 · Shipped · 4345 tests
TPL.33
Project Site template with Project Server's project-site lists
2026-10-03 · Shipped · 4345 tests
TPL.34
ListInstance Data: a Feature's default rows; Feature.ProjectSiteDefaults stapled to the Project Site
2026-10-03 · Shipped · 4346 tests
INFRA.2
Timer job control: Run now, Enable, Disable and the last result, from Central Administration
2026-10-03 · Shipped · 4351 tests
BRAINSTORM.29
Rich answers on the mind map: the copilot draws Mermaid diagrams and sortable tables as web-part cards (chat and node notes); the cheap BRAINSTORM.25 items - readOnlyHint read cache, an owner on agent-filed issues, AddFormTemplate
2026-10-02 · Shipped · 4312 tests
BRAINSTORM.30
Live web parts in the map chat and node notes: a webpart fence renders a real SharePoint web part (ListView) through a fragment endpoint, with the viewer's rights
2026-10-02 · Shipped · 4315 tests
HARNESS.17
tools/spice-edit: edit the XML spine by part Id as a byte-exact patch, and diff it part by part
2026-10-02 · Shipped · 4315 tests
TPL.14
SharePoint's list template number on every list: ListTemplate and DeclareList carry TemplateType (SPListTemplateType), served as SPList.BaseTemplate on Site Contents and Tool.SiteContents and kept by both PnP adapters; Tasks (107) and Contacts (105) list templates, the Contact content type with SharePoint's own columns
2026-10-02 · Shipped · 4317 tests
TPL.15
SharePoint's Calendar (106), Picture Library (109) and Promoted Links (170): the Event, Picture and Promoted Link content types with SharePoint's own column names, their list templates stamped with the template number, and a Calendar on the Team Site as STS#0 has one
2026-10-02 · Shipped · 4317 tests
TPL.16
Enterprise site templates built the SharePoint way: Document Center (BDR#0), Records Center (OFFILE#1), Blog (BLOG#0 with Posts 301, Comments 302, Categories 303) and the Fantastic 40 Document Library and Review (FAB40#7) and Absence Request (FAB40#0); SharePoint 2019's STS#3 and Communication site in the catalogue; every declared list carries its template number, so the PnP export agrees with Site Contents
2026-10-02 · Shipped · 4319 tests
TPL.17
SharePoint's Approval workflow on a durable human task step: Step Kind="Task" files a Workflow Task (0x010801) per approver and parks the run on the task rows; completing the tasks resumes it - in a fresh process too - Serial or Parallel, ending on the first rejection, with the item's Approval column and (on a moderated list) its approval status following
2026-10-02 · Shipped · 4321 tests
TPL.18
SharePoint's reusable workflows, associated with parameters: Three-state (Task, Set Field, Task, Set Field) auto-started on new issues by an association whose Data carries the states, Collect Feedback, Approval's Enable Content Approval as a step option; and a REST-created item now fires ItemAdded
2026-10-02 · Shipped · 4323 tests
TPL.19
SharePoint's Approval Request Change: an approver answers Request Change (optionally Request change from a named person), a change task goes to that person or the initiator with the approver's comments, and completing it gives the approver a fresh task
2026-10-02 · Shipped · 4324 tests
TPL.20
SharePoint's Survey (102) with its Graphical Summary, and list view stylesheets the SharePoint 2013 on-prem way: defaults are files in XSLT/Views picked up by name (LAYOUTS/XSL), a declared view's XslLink names a custom one - a new view is a file, no code
2026-10-02 · Shipped · 4325 tests
TPL.21
SharePoint's Promoted Links Tiles view and any declared view Type by convention: a View Type="Tiles" (or SharePoint's CALENDAR, GRID...) renders XSLT/Views/{Type}.xslt - tiles.xslt and grid.xslt are new files, the C# only stopped special-casing Board and MindMap
2026-10-02 · Shipped · 4326 tests
TPL.22
SharePoint's Survey "Allow multiple responses? No": a person answers a survey once, through the form and the REST create alike (409 on REST); and a REST create now records its writer as the form does (Author / CreatedBy = the acting principal, not Anonymous)
2026-10-02 · Shipped · 4327 tests

Wisdom — architecture knowledge

KB.SystemState
SPICE - the state of the system (three insights + UMLs)
An honest, one-page map of what SPICE actually is today: the self-building city, the XML-DNA way it is built, and the candid live-vs-parked ledger - with four generated UML diagrams (architecture, city topology, the self-build loop, the live agency cadence). The orientation page for when the breadth feels overwhelming.
KB.SpicePrinciples
SPICE Architecture Principles
Core design principles every contributor should know
KB.SharePointPatternsMined
SharePoint patterns mined into SPICE
Which SP on-prem patterns this platform already inherits, and why
KB.PlatformInOneSentence
The platform in one sentence
The single load-bearing claim every new proposal should be checked against
KB.RegistryStrategyPattern
The Registry + Strategy pattern that runs the platform
Why every layer of SPICE is registry-driven and how to extend without touching engines
KB.AgentProtocolChannels
Agent protocols are channels over the XML spine, not parallel stacks
How AG-UI / MCP / A2A map onto SPICE's three agent boundaries; the rule for adopting any new agent-interop protocol
KB.ShipTopology
Ship topology - belt is dataflow, bus is hub-and-spoke; multi-server without premature Kubernetes
The platform topology decision: the production belt is intra-pipeline DATAFLOW (direct station-to-station, XProc's default connection), the agent bus is inter-agency HUB-AND-SPOKE dispatch - separate concerns, do not merge. Multi-server is possible WITHOUT Kubernetes (scale the stateless monolith on shared SQL, or distribute agencies as MCP/A2A services over the bus); k8s is an ops convenience, not a prerequisite.
KB.XmlEnginePipeline
The XML engine + pipeline - SaxonCS-HE for XSLT 3.0 / XQuery, and XProc as the LLM-known pipeline vocabulary
SPICE adopted SaxonCS-HE 13.0 (free, native .NET, shipped 2026-05-29) behind IAdvancedXmlEngine for real XSLT 3.0 + XQuery 3.1 - the BCL is XSLT 1.0 only forever. XProc the ENGINE is rejected (no native .NET impl, JVM only); XProc the VOCABULARY is borrowed as the pipeline language because LLMs already know it - run on SPICE's own belt, steps powered by Saxon. A standard is self-describing to LLMs the way XML+XSD is to outside consumers.