What KnowledgeOps is
Link to section “What KnowledgeOps is”KnowledgeOps in 30 seconds
Link to section “KnowledgeOps in 30 seconds”KnowledgeOps is running an organisation’s working knowledge (answers to recurring questions, troubleshooting articles, runbooks, procedures) as an operated asset: captured while the work happens; owned, with a state and an audience; reviewed in proportion to risk; findable by people and AI assistants in their own words; and retired on purpose rather than left to rot.
A useful test: a new engineer hitting a known problem at 03:00 finds a current, validated answer in a minute, instead of waiting for the one person who knows or picking the wrong one of three conflicting pages.
Where to start. Beginners: glossary, Lab 1. Practitioners: playbooks, reference implementation. Leaders: decision framework, judgement call. Last verified 2026-10-23.
At a glance
Link to section “At a glance”| Aspect | Summary |
|---|---|
| Goal | People (and assistants) find correct, current answers without interrupting experts |
| Who | Knowledge managers, support and operations leads, writers, runbook owners, AI teams |
| Prerequisites | None; a ticketing or incident system makes reuse measurable |
| In scope | KCS, knowledge bases and wikis, tacit knowledge, docs as code, ownership and review, findability and taxonomy, runbook reuse, knowledge metrics, the corpus behind AI search |
| Out of scope | Editorial content programmes (ContentOps); the self-service channel and deflection (SupportOps); retrieval engineering (LLMOps); knowledge records inside ITSM tooling (ITOps) |
| Outputs | Metadata contract, owner register, tiered review policy, article lifecycle, monthly scorecard |
| Term status | Vendor-specific label; established practice (box above) |
The problem it solves
Link to section “The problem it solves”Without an operating model, knowledge fails in five ways:
- It stays in heads. Experts answer the same question again and again. In the professional-developer section of Stack Overflow’s 2024 survey, “61% of all respondents spend more than 30 minutes a day searching for answers or solutions to problems”, including asking colleagues and waiting[7].
- It is written but not owned. On Google’s early internal wiki, “Because there were no true owners for documents, many became obsolete”[8].
- It is owned but not findable. The answer uses the author’s vocabulary, not the asker’s.
- It is missing exactly when it matters. GitLab’s 2017 outage report notes that a key
pg_basebackupbehaviour “was not clearly documented in our engineering runbooks”[9]; Atlassian’s 2022 review: “We have playbooks for product-level incidents, but not for the events of this scale”[10]. - It leaks or misleads at machine speed. An AI assistant repeats whatever is stale and shows whatever its index can reach.
What good looks like. Google’s SRE book reports that a playbook written ahead of time “produces roughly a 3x improvement in MTTR as compared to the strategy of ‘winging it’” (MTTR: mean time to repair)[11], one company’s experience. Consortium members report “50 - 60% improved time to resolution” after adopting KCS[12], self-reported, so a ceiling to test, not a forecast.
What KnowledgeOps is not: boundaries and naming
Link to section “What KnowledgeOps is not: boundaries and naming”- Not a product category. Buying a knowledge base does not create owners, states or review habits.
- Not ContentOps. The split is by origin, an editorial distinction shared with that page: knowledge captured while solving cases or running operations (KCS articles, runbooks) is KnowledgeOps, even when published to customers; editorially planned content is ContentOps.
- Not retrieval engineering or the self-service channel. KnowledgeOps owns what goes into a corpus or help centre (versions, states, access labels); LLMOps and SupportOps own what happens next.
- Not AI-agent memory. An agent skill named “knowledge ops” syncs files, memory stores and Git repositories[13], a different sense of the words.
Where it comes from and where it sits
Link to section “Where it comes from and where it sits”Origins and evolution
Link to section “Origins and evolution”The label is recent; the practice is not.
- Tacit knowledge. Polanyi’s “we can know more than we can tell” (1966) and Nonaka and Takeuchi’s SECI model of converting tacit to explicit knowledge (1995) are the usual intellectual roots[14].
- KCS rests on “more than thirty years of Consortium Member experience with KCS”, mainly in support[6]. In April 2026 the Consortium announced Knowledge-Centered Success: a new name, a Solve Loop that begins with Reuse, a “proficiency model” instead of the “licensing model”, and no version number for the method; v6 certifications remain valid[15][16].
- Standards. ISO 30401:2018 (amended 2022 and 2024) sets requirements for knowledge management systems; its revision, ISO/DIS 30401, closed its DIS ballot (stage 40.60) on 2026-09-18, so a new edition may follow[5][17].
- The vendor label. V. Mary Abraham’s notes on a KMWorld Connect 2021 session (2021-11-16) have Pryon’s chief executive discussing “knowledge ops, an AI-enabled, process-oriented methodology”[2]. ScreenSteps’ Greg DeVore wrote in 2023: “Instead of calling it just a knowledge base we refer to it as a knowledge operations platform”[18]; ScreenSteps’ coinage claim is its own, and the 2021 use predates the earliest ScreenSteps use we found. Knowmax wrote “KnowledgeOps” as one word in August 2026[3].
- AI assistants made freshness and access control a security concern[19].
Glossary and mental model
Link to section “Glossary and mental model”| Term | Meaning | Example |
|---|---|---|
| Knowledge item | One reusable answer: article, runbook, procedure | “VPN drops every 10 minutes on macOS 15” |
| Solve Loop | KCS: what responders do on each request (reuse, improve, capture, structure)[20] | Link the article that solved the ticket |
| Evolve Loop | KCS: organisation-level analysis improving content, workflow and products[21] | Monthly review of top-linked articles |
| Article state | KCS: confidence, audience and governance[22] | Validated, Internal, Experience-based |
| Link, reuse | Associating a ticket or incident with the article that resolved it[23] | Ticket T-1042 → KB-310 |
| Reuse is review | Whoever uses an article fixes or flags it then[24] | Add the missing macOS version |
| Owner, verifier | The accountable person or group[25][26] | owner: payments-oncall |
| Freshness date | Last time an owner confirmed the item[8] | last_reviewed: 2026-09-20 |
| Taxonomy | Preferred and alternative labels, as in W3C SKOS[27] | prefLabel “VPN”, altLabel “remote access” |
Mental model: knowledge is inventory that spoils. Each item has a carrying cost (someone must keep it true), a shelf life (its systems change) and a blast radius (the harm a wrong copy does). Stock what is demanded, rotate what spoils, label what is hazardous, and discard deliberately.
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 150, "nodeSpacing": 18, "rankSpacing": 34, "padding": 8}}}%%
flowchart TB
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
SRC["Where knowledge is born: tickets, incidents, chat answers, changes"]:::neutral
KO["KnowledgeOps: capture, owners, states, review, findability, retirement"]:::core
SRC --> KO
subgraph USE["Who consumes it"]
direction LR
SUP["SupportOps: help centre, bots, deflection"]:::neutral
LLM["LLMOps: retrieval, evaluation"]:::neutral
INC["IncidentOps and SRE: runbooks in use"]:::neutral
end
subgraph RULES["Who sets adjacent rules"]
direction LR
CON["ContentOps: editorial content, same owner rules"]:::neutral
PRI["PrivacyOps: deletion duties"]:::neutral
ITO["ITOps: articles inside ITSM records"]:::neutral
end
KO --> USE
RULES -.-> KO
Text equivalent: Knowledge born in tickets, incidents, chat answers and changes becomes owned, reviewed, findable items in KnowledgeOps, which also retires them. SupportOps (help centre, bots, deflection), LLMOps (retrieval, evaluation) and IncidentOps with SRE (runbooks) consume them. ContentOps, PrivacyOps (deletion duties) and ITOps (ITSM records) set adjacent rules.
How KnowledgeOps relates to other Ops
Link to section “How KnowledgeOps relates to other Ops”These boundaries are this Atlas’s editorial distinctions.
| Neighbour | Shared ground | Choose that page when… |
|---|---|---|
| SupportOps | Articles used on tickets | You design the help centre, bots or deflection |
| ContentOps | Owners, review dates | The text is planned editorially |
| LLMOps, FinOps for AI | The corpus behind an assistant | You tune retrieval or model AI and re-indexing spend |
| ITOps | Knowledge in incident and problem records | You configure the ITSM tool’s article links |
| ChatOps | Answers given in chat | You run the chat interface itself |
| IncidentOps, SRE | Runbooks and postmortems | You run incident response or define reliability practice |
| PrivacyOps | Personal data in articles and indexes | You decide the legal basis or handle erasure requests |
| PeopleOps, EduOps | Onboarding knowledge | You run the learning programme or deliver training |
| DecisionOps | Rules and policies that people also look up | You version, test and audit automated decision logic |
Principles and operating model
Link to section “Principles and operating model”Charter and principles
Link to section “Charter and principles”No official KnowledgeOps manifesto exists; ScreenSteps publishes its own principles, such as “Performance First”[28]. What follows is this Atlas’s proposal, built mostly on KCS and Google’s documentation practice.
- Capture in the flow of work. KCS: “If we are creating articles after the request is resolved, we have missed vital information”[29].
- Write in the asker’s words. The issue statement records “the requestor’s view of what is happening”[30]; insider terms become alternative labels.
- Every live item has a current owner. “Documents without owners become stale and difficult to maintain”[8].
- Review follows risk. Reuse reviews what is used; rare, critical items need dates and rehearsal.
- Goals on outcomes, never on activities. KCS says it in capitals: “DO NOT PUT GOALS ON ACTIVITIES!”[31]
- Access travels with the item. Audience labels are enforced in every copy and index.
- Retire deliberately. Archive linked items, delete wrong unlinked ones, and always remove them from retrieval.
Trade-offs. Capture in the flow and coaching cost capacity while people learn[32]; collective editing trades polish for speed; strict ownership adds a hand-off when people move.
Fundamentals and building blocks
Link to section “Fundamentals and building blocks”- The knowledge item. KCS articles hold issue, environment, resolution and cause, plus metadata such as state, dates and use counts[30].
- A metadata contract, checked by machine (reference implementation).
- Ownership: a person or group per item or domain, synced with the people directory.
- A review policy by tier (table below).
- Findability: the asker’s vocabulary, a light taxonomy (preferred and alternative labels, broader and narrower terms in SKOS[27]) and failed-search analytics.
- Feedback: links, flags, search logs and assistant feedback, reviewed in the Evolve Loop.
The tiers are this Atlas’s proposal, encoded in the metadata tier field; governance uses KCS’s “Experience Based” and
“Compliance Based” values[22].
| Tier | What it covers | Review engine | Governance |
|---|---|---|---|
| 1, rare and critical | Disaster recovery, restores, security incident steps, regulated procedures | Owner review every 90 days and on dependent change; rehearsal twice a year | Compliance-based: named editors |
| 2, periodic or harmful but used | Payroll cut-off, quarterly close; harmful items used at least monthly | Review on dependent change, 180-day backstop; reuse covers the rest | Owner approves edits |
| 3, frequently reused | Troubleshooting and how-to answers | Reuse is review; no calendar | Experience-based |
Roles, ownership and RACI
Link to section “Roles, ownership and RACI”KCS has proficiency levels (Candidate, Contributor, Publisher), Coaches, Knowledge Domain Experts and a KCS Council; a coach looks after five to eight people at first and about fifty when mature[33]. Runbooks and AI add operational roles:
| Activity | Knowledge worker | Item owner | Domain expert (KDE) | KnowledgeOps lead | Security / privacy |
|---|---|---|---|---|---|
| Capture, link, flag or fix while working | R/A | I | — | — | — |
| Validate and publish externally | R/A (Publisher) | C | C | I | — |
| Tier-1 runbook review and rehearsal | C | R/A | C | I | C |
| Domain analysis: gaps, duplicates, root causes | C | C | R/A | C | — |
| Metadata contract, review policy, scorecard | I | C | C | R/A | C |
| Audience labels on items fed to assistants | I | R | C | A | C |
| Erasure requests touching items or indexes | — | R | — | C | A |
R = responsible, A = accountable, C = consulted, I = informed. Proficiency is “not linked or related to the levels, job roles, or positions in an organization”[33], so a senior engineer can be a Candidate.
Article lifecycle
Link to section “Article lifecycle”KCS defines confidence states from Work in Progress to Archived; an article can move “from the Not Validated to Validated qualities several times throughout its life cycle”[22]. Operations adds a flagged state and removal from every index on archiving.
Diagram source (Mermaid)
stateDiagram-v2 direction TB [*] --> WIP: issue captured, no answer yet WIP --> NotValidated: answer found, low confidence WIP --> Validated: answer confirmed, meets standard WIP --> [*]: nothing reusable, deleted NotValidated --> Validated: reused and confirmed Validated --> Flagged: a user finds it wrong NotValidated --> Flagged: a user finds it wrong Flagged --> Validated: owner fixes it Validated --> Archived: obsolete; removed from search and indexes NotValidated --> Archived: obsolete Archived --> Validated: restored
Text equivalent: An item starts as Work in Progress when an issue is captured without an answer. It becomes Not Validated when an answer exists with low confidence, or Validated when confirmed and up to standard; a WIP with nothing reusable is deleted. Reuse can promote Not Validated to Validated. Any user can flag a Validated or Not Validated item, and the owner fixes it. Any obsolete live item is archived, which removes it from search and every index; an archived item can be restored.
KCS argues for speed: “the value of support knowledge begins to diminish 30 days after the issue is first discovered”[22], a claim from members’ experience, not a measured constant.
Operating model and governance
Link to section “Operating model and governance”| Cadence | Activity | Owner |
|---|---|---|
| Every request | Search early; link; flag it or fix it; capture if missing[20] | Knowledge worker |
| Weekly | Triage flags and WIPs; read failed searches and “no answer” logs | Domain experts |
| Fortnightly | KCS Council (“a bi-weekly basis”[33]): standard, workflow, tools | KnowledgeOps lead |
| Monthly | Checklist sampling (weekly during rollout[34]); scorecard; owner hygiene | Coaches, lead |
| Quarterly | Tier-1 review audit; top-linked domain analysis; audience-label audit of indexes | KDEs, security |
| Twice a year | Rehearse tier-1 runbooks in a game day | Item owners with IncidentOps |
Escalation: an article that “poses an active risk of harming customers” goes to a Coach or domain expert at once, who unpublishes or archives it[22].
Architecture and workflow
Link to section “Architecture and workflow”Reference architecture
Link to section “Reference architecture”The essential idea: one system of record per item, a machine-readable metadata contract, and every downstream copy treated as a derived view that can be reconciled against the record.
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 140, "nodeSpacing": 16, "rankSpacing": 30, "padding": 8}}}%%
flowchart TB
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
subgraph WORK["Systems where work happens"]
direction LR
TK["Tickets and incidents"]:::neutral
CH["Chat"]:::neutral
RP["Code repositories"]:::neutral
end
KB["System of record: knowledge base or docs repo; items with owner, tier, state, audience, version"]:::core
REG["Owner register synced with the people directory"]:::core
subgraph VIEWS["Derived views, rebuilt from the record"]
direction LR
SE["Search with synonyms"]:::neutral
HC["Help centre for customers"]:::neutral
AI["AI index: chunks keep id, version, audience"]:::risk
end
FB["Feedback: links, flags, failed searches, assistant logs"]:::neutral
WORK -->|"capture, link"| KB
REG --> KB
KB --> VIEWS
VIEWS --> FB
FB -->|"Evolve Loop"| KB
Text equivalent: Tickets, incidents, chat and code repositories feed the system of record, which holds each item with owner, tier, state, audience and version; an owner register synced with the directory keeps owners valid. Search, the help centre and an AI index (red: errors there spread fastest) are rebuilt from the record. Links, flags, failed searches and assistant logs flow back through the Evolve Loop.
| Component | Control |
|---|---|
| System of record | The only editable copy; edits by role and governance class; version history |
| Owner register | Synced from the directory; leavers trigger reassignment |
| Help centre | Only items with an external audience; KCS Publisher rights[35] |
| AI index | Built only from allowed states and audiences; reconciled on every build (Lab 3) |
Alternatives. Docs as code suits runbooks; a knowledge-base product suits support, with ticket links and external audiences. Many organisations run both and federate search; KCS accepts links to non-KCS content that is maintained, findable, accessible and in context[23].
End-to-end workflow
Link to section “End-to-end workflow”The KCS double loop: the Solve Loop runs inside each request, the Evolve Loop over many.
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 130, "nodeSpacing": 16, "rankSpacing": 28, "padding": 8}}}%%
flowchart TB
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
R["Request arrives; search in the asker's words"]:::core
F{{"Relevant item found?"}}:::decision
OK{{"Does it work as written?"}}:::decision
L["Link it; add missing symptoms"]:::core
FX["Fix it, or flag it if not allowed to edit"]:::risk
W["Create a WIP item from the search terms"]:::neutral
S["Solve; complete the item; set state"]:::core
E["Evolve Loop: top links, gaps, duplicates, root causes"]:::neutral
R --> F
F -->|"yes"| OK
F -->|"no"| W --> S
OK -->|"yes"| L
OK -->|"no"| FX --> L
L --> E
S --> E
Text equivalent: The responder searches in the asker’s words. A working item is linked and gains missing symptoms; one that fails is fixed or flagged, then linked. With no item, the responder creates a Work in Progress item from the search terms, solves the problem and completes it. Links and new items feed the Evolve Loop: top links, gaps, duplicates, root causes.
| Decision | Owner | Recorded in |
|---|---|---|
| Item linked as “resolved” or “referenced” (optional link types) | Knowledge worker | Ticket link field[36] |
| State Validated, audience external | KCS Publisher | Item metadata[35] |
| Tier-1 change approved | Item owner | Pull request review |
| Item archived and de-indexed | KDE or owner | Item metadata; index build log |
Practices, frameworks and tools
Link to section “Practices, frameworks and tools”Core practices and playbooks
Link to section “Core practices and playbooks”| Practice | Trigger | Owner | Output | Verification |
|---|---|---|---|---|
| Search early, search often[20] | Every request | Knowledge worker | Search terms kept as context | Tickets with a search logged |
| Link what you used | Ticket or incident closed | Knowledge worker | Link marked resolved or referenced | Link rate; sampled link accuracy |
| Flag it or fix it[20] | Item found wrong or incomplete | Whoever found it | Edit or flag with reason | Flag age; repeat flags per item |
| Capture on demand | No item found | Knowledge worker | WIP item in the asker’s words | WIPs open more than 30 days |
| Tier-1 review and rehearsal | Review date, dependent change, game day | Item owner | Confirmed or corrected runbook | Freshness; rehearsal findings |
| Owner hygiene | Leaver or team change | KnowledgeOps lead | Items reassigned | Ownerless ratio |
| Retire | Obsolete or duplicate | KDE | Archived item, de-indexed | Archived items still retrievable (0) |
Playbook: turning an incident into a runbook. Every incident review gets one knowledge action: create or fix the runbook that would have shortened it (trigger in the responders’ words, ordered checks, decision points, rollback), with a tier, an on-call owner and a rehearsal. Follow-up tracking is on IncidentOps.
Playbook: a duplicate cluster. The KDE picks the best item as canonical, merges unique symptoms and environments into it, archives the others (still viewable from linked tickets) and adds “see also” pointers. KCS treats uniqueness as “a critical part” of its content checklist[34].
Tacit knowledge: capture and retention
Link to section “Tacit knowledge: capture and retention”Some knowledge cannot be fully written down[14]. Google: “Tribal knowledge exists in the gap between what individual team members know and what is documented”; the two “complement each other”, and the danger is a single point of failure, “A bottleneck that occurs when critical information is available from only a single person”[37].
| Technique | How tacit knowledge moves | Output | Basis |
|---|---|---|---|
| Capture in the flow | Item written from the question while the expert works | Item in the asker’s words | KCS[29] |
| Pairing and swarming | Two people solve real work together | A second capable person | Pairing “prevents silos of knowledge”[38] |
| Walk-through interview | A peer has the expert narrate a real task, then writes it up | Draft runbook, Not Validated | Atlas practice |
| Community of practice | Practitioners “learn how to do it better as they interact regularly”[39] | Answers; who knows what | Wenger-Trayner |
| Incident reviews | Ask “what did we know that was not written down?” | Knowledge actions | SRE postmortems |
Playbook: an expert is leaving (Atlas proposal). Trigger: a resignation or role change, or an audit showing one person owns many tier-1 items. Owner: the expert’s manager, with the KnowledgeOps lead. Steps, within the notice period: (1) list the items they own and the questions only they answer (tickets and chat where they responded); (2) reassign every item; (3) run walk-through interviews for tier-1 and tier-2 procedures, written up by the successor so gaps show; (4) pair the successor on real work; (5) have the successor rehearse each tier-1 procedure. Output: a handover list, rewritten items (Not Validated until reused or rehearsed), a successor per domain. Acceptance: no live item owned by the leaver; every tier-1 item rehearsed by its new owner.
When knowledge should stay tacit. Fast-changing judgement and design taste spread more cheaply by pairing, rotation and swarming than by documents. Then the job is to record who knows and to stop single points of failure forming[37].
Methods, standards and frameworks
Link to section “Methods, standards and frameworks”| Framework (kind) | What it gives you | Status |
|---|---|---|
| KCS (Knowledge-Centered Success; v6 still widely used): method, Consortium for Service Innovation | Double loop, article states, roles, measures | Practice guidance; certification by the Consortium, “the only authorized certifying body for KCS”[16] |
| ISO 30401: international standard | Requirements for a knowledge management system | Normative if you seek conformity; revision under way (origins)[17] |
| Docs as code: practice | Version control, plain text, review, automated tests for docs[40] | Industry practice |
| Diátaxis: documentation framework by Daniele Procida | Four forms: tutorials, how-to guides, reference, explanation[41] | Optional; good for engineering docs |
| W3C SKOS: Recommendation, 2009 | Data model for taxonomies and thesauri[27] | Stable standard; optional |
Mandatory versus optional. None is mandatory unless a contract, certification or regulation requires it; regulated document-control rules set review periods for compliance-based items. KCS says ITIL “is a framework, not a methodology” and that KCS “plugs in” to it, especially incident management[42].
Tooling landscape
Link to section “Tooling landscape”| Category | Job | Examples (verified on 2026-10-23) | Selection criteria |
|---|---|---|---|
| Knowledge base with verification | Owners, review intervals, reminders | Zendesk: weekly rules mark articles unverified; Enterprise plans only[26]. Guru: a verifier per card, weekly to yearly or dated review[25] | Ticket linking; states and audiences; metadata export |
| Docs as code | Runbooks and engineering docs next to code | Git with CODEOWNERS[43]; Backstage TechDocs, “docs-like-code” in a developer portal[44] | Review workflow; ownership in files; build checks |
| Quality checks | Lint prose, check links, check metadata | Vale, “code-like linting to prose”[45]; lychee link checker, exit code 2 on link failures[46] | Runs in CI; low false positives |
| Search and AI assistants | Retrieve answers | Microsoft Copilot “only surfaces organizational data to which individual users have at least view permissions”[47] | Permission trimming; citations; deletion propagation |
| KCS tool designations | Evidence that a tool supports KCS | The Consortium’s KCS Verified and Aligned designations[6] | Use as a shortlist filter, not proof of fit |
Lock-in. Knowledge bases keep links, states and analytics in proprietary schemas: insist on exporting items with metadata and links, and test an export yearly.
Automation and AI
Link to section “Automation and AI”Automate the crisp rules (overdue reviews, ownerless items, broken links, missing metadata, archived items still indexed) in scheduled jobs (Lab 1). AI changes two things:
- Drafting. A draft from a ticket or incident timeline stays Not Validated until a proficient person confirms it.
- Retrieval. An assistant answers fluently from whatever its index holds. Four controls follow:
- Permission-aware retrieval. OWASP calls for “permission-aware vector and embedding stores”[19]; Microsoft tells customers to ensure “the right users or groups have the right access to the right content”[47].
- Freshness and deletion. Index updates must meet compliance requirements “such as right to be forgotten requests”[48]. Archiving is not enough until the index is rebuilt.
- Trusted sources only. OWASP: “Accept data only from trusted and verified sources”[19], hence a corpus allowlist.
- Checkable claims. Anthropic’s guidance has the model cite a quote per claim and retract unsupported ones[49]; that needs chunk IDs that map to stable item IDs and versions.
Retrieval tuning is on LLMOps; re-embedding cost on FinOps for AI.
KnowledgeOps in practice
Link to section “KnowledgeOps in practice”Reference implementation
Link to section “Reference implementation”A docs-as-code implementation for runbooks and procedures in one Git repository; a knowledge-base product follows the same contract through its API. Assumptions: GitHub, Markdown items with front matter, Python 3.8 or later on the runner.
1. The metadata contract. Every item’s front matter carries these fields. The Lab 1 audit enforces the first five; its
stdlib parser reads flat key: value lines and drops # comments; production code should use a YAML library.
Example status: YAML syntax-checked by the validator, and parsed by the Lab 1 audit on 2026-10-23; field names are this Atlas’s proposal.
id: KB-105 # stable; never reused, survives renames
owner: payments-oncall # a person or group in the directory
tier: 1 # 1 rare and critical, 2 periodic, 3 reused
state: validated # wip, not_validated, validated, archived
last_reviewed: 2026-09-20 # set by the owner, in review
version: 7 # incremented on every published change
audience: internal # public, customers, internal, restricted
governance: compliance # experience or compliance (KCS terms)
supersedes: [KB-071] # items this one replaced
2. Ownership in the repository. CODEOWNERS requests review from owners when their files change; the last matching pattern
wins. It works in public repositories on GitHub Free and in private ones on paid plans[43]. Owner review is real only
when “Require review from Code Owners” is enabled, owners (including teams) have write permission, and administrators cannot
bypass the rule (“Do not allow bypassing the above settings”)[43][50]. GitHub adds that “you also need to
define an owner for the CODEOWNERS file itself”[43]; /.github/ covers it and the workflow.
Example status: format checked against GitHub’s documentation; not executed.
# .github/CODEOWNERS (last match wins)
* @example-org/knowledge-leads
/runbooks/payments/ @example-org/payments-oncall
/runbooks/dr/ @example-org/sre-dr
/procedures/payroll/ @example-org/payroll-ops
/.github/ @example-org/knowledge-leads
3. Scheduled checks. Two independent weekly jobs: the audit and a link check. They are separate because the audit normally
fails (its findings are the worklist), and a later step in the same job would be skipped under the default success() status
check[51]. Scheduled workflows run in UTC by default, on “the latest commit on the default branch”, and public repositories disable
them after 60 days without activity[52]. The lychee action fails its job on broken links by default[53].
Example status: YAML syntax-checked; action versions are the latest releases on 2026-10-23 (checkout v7.0.1, lychee-action
v2.9.0); not executed. kb_audit.py is the Lab 1 script; the directory URL is a placeholder.
name: knowledge-health
on:
schedule:
- cron: "30 6 * * 1" # Mondays 06:30 UTC
workflow_dispatch: {}
permissions:
contents: read
jobs:
audit:
runs-on: ubuntu-latest
environment: directory-read # the only place the directory token lives
steps:
- uses: actions/checkout@v7.0.1
- name: Fetch active people and groups (never committed)
env:
DIRECTORY_TOKEN: ${{ secrets.DIRECTORY_READ_TOKEN }}
run: >-
curl -fsS -H "Authorization: Bearer $DIRECTORY_TOKEN"
-o "$RUNNER_TEMP/roster.txt"
https://directory.example.com/api/active-handles
- name: Owners, tiers and review dates
run: >-
python3 tools/kb_audit.py "$RUNNER_TEMP/roster.txt" "$(date -u +%F)"
runbooks procedures
links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: lycheeverse/lychee-action@v2.9.0
with:
args: --no-progress 'runbooks/**/*.md' 'procedures/**/*.md'
Design notes. The roster is fetched at run time into the runner’s temporary directory, so no staff list is committed for
repository readers. The read-only token is a secret of the directory-read environment; environment secrets reach only jobs
that reference the environment[54], so the links job never sees it. Limit the environment’s deployment branches to the
default branch, so other branches’ workflows cannot use it (in private repositories, environment secrets and deployment branches need a paid plan), and clear “Allow
administrators to bypass configured protection rules”, which is on by default (Free, Pro and Team plans offer that switch only
for public repositories)[54]. Administrators can still reconfigure the environment[55], so count them among
the token’s readers. Run logs name
departed owners and are readable by anyone with read access[56]. An empty audit exits 2, so a wrong path fails loudly. It
is not a pull-request check, which would block authors for others’ overdue items. Pin actions to commit SHAs if policy requires.
Hands-on labs
Link to section “Hands-on labs”Three labs, runnable on a laptop with Python 3.7 or later and no network, on invented data. All three were executed on 2026-10-23 with Python 3.8.10 (Lab 1 again after its revision); the outputs shown are the real outputs.
Lab 1 (beginner): audit owners and review dates
Link to section “Lab 1 (beginner): audit owners and review dates”Objective. Find items with missing metadata, departed owners or overdue reviews under the
tier policy. Prerequisites. Python 3.7+, Bash. Cost and risk. None; it reads files
only. Steps. Save the script as kb_audit.py, then run the generator: it creates seven items in nested folders (the
CODEOWNERS layout above) and a roster, and audits them as of 2026-10-23.
Example status: executed on 2026-10-23 (Python 3.8.10).
"""Audit owners and review dates in Markdown knowledge items (stdlib only)."""
import re
import sys
from datetime import date
from pathlib import Path
REQUIRED = ["id", "owner", "tier", "state", "last_reviewed"]
WINDOW_DAYS = {"1": 90, "2": 180, "3": None} # tier 3: reviewed on reuse only
def front_matter(path):
"""Flat 'key: value' lines between --- fences; ' # comments' dropped."""
lines = path.read_text(encoding="utf-8").splitlines()
if not lines or lines[0].strip() != "---":
return {}
meta = {}
for line in lines[1:]:
if line.strip() == "---":
break
key, sep, value = re.sub(r"\s+#.*$", "", line).partition(":")
if sep:
meta[key.strip()] = value.strip().strip('"')
return meta
def check(meta, active, today):
if meta["owner"] not in active:
yield "owner not active: " + meta["owner"]
if meta["tier"] not in WINDOW_DAYS:
yield "unknown tier: " + meta["tier"]
return
try:
age = (today - date.fromisoformat(meta["last_reviewed"])).days
except ValueError:
yield "bad date: " + meta["last_reviewed"]
return
window = WINDOW_DAYS[meta["tier"]]
if window is not None and age > window:
yield "tier %s overdue by %d days" % (meta["tier"], age - window)
def audit(dirs, roster_file, today):
active = set(Path(roster_file).read_text(encoding="utf-8").split())
findings, live = [], 0
for path in sorted(p for d in dirs for p in Path(d).rglob("*.md")):
meta = front_matter(path)
missing = [k for k in REQUIRED if not meta.get(k)]
if missing:
findings.append((path, "missing " + ",".join(missing)))
elif meta["state"] != "archived":
live += 1
findings += [(path, p) for p in check(meta, active, today)]
return live, findings
if __name__ == "__main__":
roster, as_of, dirs = sys.argv[1], date.fromisoformat(sys.argv[2]), sys.argv[3:]
live, findings = audit(dirs, roster, as_of)
for path, problem in findings:
print("%-36s %s" % (path, problem))
print("live items: %d, findings: %d" % (live, len(findings)))
if live == 0:
print("no live items found: check the directory arguments")
sys.exit(2)
sys.exit(1 if findings else 0)
Example status: executed on 2026-10-23 (Bash 5).
#!/usr/bin/env bash
set -uo pipefail
item() { # path id owner tier state last_reviewed
mkdir -p "$(dirname "$1")"
printf -- '---\nid: %s\nowner: %s\ntier: %s\nstate: %s\nlast_reviewed: %s\n---\n' \
"$2" "$3" "$4" "$5" "$6" > "$1"
printf 'Body text.\n' >> "$1"
}
item runbooks/dr/failover.md KB-101 sre-dr "1 # rare" validated 2026-05-02
item runbooks/payments/restore.md KB-105 sam 1 validated 2026-09-20
item procedures/it/vpn-reset.md KB-102 li 3 validated 2025-01-15
item procedures/payroll/cutoff.md KB-103 payroll-ops 2 validated 2026-08-30
item procedures/it/legacy-ftp.md KB-104 dev 2 archived 2023-03-01
item procedures/it/laptop-enc.md KB-106 li 2 not_validated 2026-02-10
printf -- '---\nid: KB-107\nstate: validated\n---\nNo owner.\n' > procedures/it/printer.md
printf 'sre-dr\nli\npayroll-ops\n' > roster.txt
status=0
python3 kb_audit.py roster.txt 2026-10-23 runbooks procedures || status=$?
echo "exit=$status"
Expected output (the last line is printed by the generator; exit code 1 because findings exist):
procedures/it/laptop-enc.md tier 2 overdue by 75 days
procedures/it/printer.md missing owner,tier,last_reviewed
runbooks/dr/failover.md tier 1 overdue by 84 days
runbooks/payments/restore.md owner not active: sam
live items: 5, findings: 4
exit=1
Validation. cutoff.md (tier 2, 54 days) and vpn-reset.md (tier 3) must not appear; archived legacy-ftp.md is
skipped; the # rare comment does not break failover.md’s tier. Add sam to roster.txt: the owner finding disappears. An
empty folder prints no live items found and exits 2. Troubleshooting. bad date: not YYYY-MM-DD; unknown tier: not
1–3; a byte-order mark before --- hides the front matter. Teardown. Delete the lab directory.
Lab 2 (intermediate): compute knowledge-health metrics
Link to section “Lab 2 (intermediate): compute knowledge-health metrics”Objective. Compute link rate, known share, sampled link accuracy and the Content Standard Checklist score from a ticket export
and a five-article sample. Prerequisites. Lab 1 environment. Cost and risk. None. Steps. Save both scripts and
checklist.csv, generate tickets.csv, run kb_metrics.py.
Example status: executed on 2026-10-23 (Python 3.8.10).
"""Write tickets.csv: 40 closed tickets, 26 linked (19 existing, 7 new)."""
import csv
rows = []
for i in range(40):
kind = "existing" if i < 19 else "new" if i < 26 else ""
article = "KB-%d" % (100 + i % 6 if kind == "existing" else 200 + i) if kind else ""
sample = ("no" if i == 3 else "yes") if i < 10 else "" # 10 links sampled
rows.append([f"T-{1000 + i}", article, kind, sample])
with open("tickets.csv", "w", newline="", encoding="utf-8") as handle:
writer = csv.writer(handle)
writer.writerow(["ticket_id", "article_id", "link_kind", "sample_ok"])
writer.writerows(rows)
article_id,unique,complete,clear,title,links_valid,metadata
KB-201,yes,yes,yes,yes,yes,yes
KB-202,yes,no,yes,yes,yes,yes
KB-203,no,yes,yes,no,yes,yes
KB-204,yes,yes,yes,yes,yes,no
KB-205,yes,yes,yes,yes,yes,yes
"""Knowledge health metrics from a ticket export and a checklist sample."""
import csv
import sys
def ratio(part, whole):
return part / whole if whole else float("nan")
def ticket_metrics(path):
rows = list(csv.DictReader(open(path, newline="", encoding="utf-8")))
linked = [r for r in rows if r["article_id"]]
known = [r for r in linked if r["link_kind"] == "existing"]
sampled = [r for r in linked if r["sample_ok"] in ("yes", "no")]
accurate = [r for r in sampled if r["sample_ok"] == "yes"]
return {
"closed": len(rows),
"link_rate": ratio(len(linked), len(rows)),
"known_share": ratio(len(known), len(linked)),
"link_accuracy": ratio(len(accurate), len(sampled)),
"accuracy_sample": len(sampled),
}
def checklist_score(path):
"""Content Standard Checklist %: misses weigh double (KCS convention)."""
rows = list(csv.DictReader(open(path, newline="", encoding="utf-8")))
checks = [k for k in rows[0] if k != "article_id"]
possible = len(rows) * len(checks)
yes = sum(r[k] == "yes" for r in rows for k in checks)
return 1 - 2 * (possible - yes) / possible
if __name__ == "__main__":
m = ticket_metrics(sys.argv[1])
for key in ("closed", "link_rate", "known_share", "link_accuracy"):
value = m[key]
print("%-14s %s" % (key, value if key == "closed" else "%.1f%%" % (100 * value)))
print("accuracy based on %d sampled links" % m["accuracy_sample"])
print("checklist %.1f%%" % (100 * checklist_score(sys.argv[2])))
Expected output of python3 make_tickets.py && python3 kb_metrics.py tickets.csv checklist.csv:
closed 40
link_rate 65.0%
known_share 73.1%
link_accuracy 90.0%
accuracy based on 10 sampled links
checklist 73.3%
Validation. By hand: 26 of 40 linked (65.0 %); 19 of 26 reuse an existing item (73.1 %); 9 of 10 sampled links accurate
(90.0 %); 30 checks with 4 misses give 1 − 2 × 4 ÷ 30 = 73.3 %, below the 90 % at which KCS suggests coaching
attention[34]. Troubleshooting. KeyError means a header differs from the script; keep empty cells empty.
Teardown. Delete the files. Caution. Ten sampled links are far too few (sample size).
Lab 3 (advanced): gate an AI index build
Link to section “Lab 3 (advanced): gate an AI index build”Objective. Before an index goes live, prove every chunk comes from a live item, at its current version, with an audience no wider than the item’s: the KnowledgeOps half of the LLMOps permission test. Prerequisites. Lab 1 environment; in real use, exports of the knowledge base and index manifest. Cost and risk. None here; in production, a blocking build step. Steps. Save the script and the two CSV files, then run the gate.
Example status: executed on 2026-10-23 (Python 3.8.10).
"""Block an AI index build whose chunks disagree with the knowledge base."""
import csv
import sys
RANK = {"public": 0, "customers": 1, "internal": 2, "restricted": 3}
def load(path, key):
with open(path, newline="", encoding="utf-8") as handle:
return {row[key]: row for row in csv.DictReader(handle)}
def gate(kb_path, index_path):
kb = load(kb_path, "article_id")
problems = []
for chunk_id, chunk in load(index_path, "chunk_id").items():
article = kb.get(chunk["article_id"])
if article is None:
problems.append((chunk_id, "article no longer exists"))
continue
if article["state"] in ("archived", "deleted"):
problems.append((chunk_id, "article is " + article["state"]))
if chunk["version"] != article["version"]:
problems.append((chunk_id, "stale: v%s indexed, v%s current"
% (chunk["version"], article["version"])))
if RANK[chunk["audience"]] < RANK[article["audience"]]:
problems.append((chunk_id, "audience widened: %s -> %s"
% (article["audience"], chunk["audience"])))
return problems
if __name__ == "__main__":
found = gate(sys.argv[1], sys.argv[2])
for chunk_id, problem in found:
print("%-10s %s" % (chunk_id, problem))
print("blocking problems: %d" % len(found))
sys.exit(1 if found else 0)
article_id,version,state,audience
KB-101,4,validated,internal
KB-102,2,validated,customers
KB-103,7,archived,internal
KB-104,3,validated,restricted
chunk_id,article_id,version,audience
c-0001,KB-101,4,internal
c-0002,KB-102,1,customers
c-0003,KB-103,7,internal
c-0004,KB-104,3,internal
c-0005,KB-099,1,public
Expected output of python3 corpus_gate.py kb.csv index.csv; echo "exit=$?":
c-0002 stale: v1 indexed, v2 current
c-0003 article is archived
c-0004 audience widened: restricted -> internal
c-0005 article no longer exists
blocking problems: 4
exit=1
Validation. Fix the four rows (re-index KB-102 at version 2, drop c-0003 and c-0005, label c-0004 restricted): the gate prints
blocking problems: 0 and exits 0. Troubleshooting. KeyError on an audience means an unknown label: rank it, never default
it to public. Teardown. Delete the files. Limits. The gate checks labels, not query-time permissions, which LLMOps tests.
Use cases and scenarios
Link to section “Use cases and scenarios”Two are documented real events; three are illustrative scenarios and say so.
A. Support team adopts KCS (illustrative scenario). Sixty agents; two writers publish articles months late. The team moves capture into the ticket form, starts agents as KCS Candidates with coaches, and lets reuse drive review. Trade-off: a capacity dip while coaching. Success: link accuracy ≥ 90 %, time to publish and known share falling. Pitfall: an article quota produces what KCS predicts: articles “created on the last few days of the month” with “little or no valuable information”[57].
B. Runbooks for rare events (real lessons). GitLab’s 2017 report records that replication behaviour responders needed “was not clearly documented in our engineering runbooks”, and that a backup procedure had been silently failing[9]. Atlassian’s 2022 review found playbooks for product-level incidents but none for an event of that scale; its actions include to “Conduct a quarterly audit to verify readiness at all times”[10]. Method: tier 1, because demand never reviews knowledge nobody uses until the worst day. Trade-off: review cost for items rarely read. Success: rehearsal findings closed. Pitfall: reviewing on paper only; a rehearsal finds the step that no longer works.
C. Engineering docs move to source control (real). Google moved important documentation from its GooWiki into source control, where “Documents began to have their own owners, canonical locations within the source tree, and processes for identifying bugs and fixing them”; documentation “began to dramatically improve”, and freshness metadata sends reminders when a document “hasn’t been touched in, for example, three months”[8]. Pitfall: engineers feared the higher bar to edit would hurt quality; the book reports it did not[8].
D. AI assistant over internal knowledge (illustrative scenario). The assistant shows only what each user can open[47], so the risk lies in the permissions: a restricted salary procedure saved in an open space is one prompt away for everyone. The judgement call works through the method. Trade-off: coverage starts small. Success: zero restricted answers in quarterly red-team prompts; the “no answer” rate falls as domains join. Pitfall: adding domains without the gate because the first month went well.
E. Chat answers become runbooks (illustrative scenario). A platform team answers the same questions in its help channel every week. Each Friday the on-call engineer lists questions answered twice; the team lead assigns each to an owner, who writes or fixes an item in the asker’s words, and the channel answers with links from then on. Trade-off: writing time. Success: repeat questions per week fall. Pitfall: pasting chat threads into a wiki unedited, with no owner, no tier and one conversation’s context. Chat mechanics are on ChatOps.
Measure, secure and pay
Link to section “Measure, secure and pay”Metrics and KPIs
Link to section “Metrics and KPIs”KCS separates activities (leading indicators, never goals) from outcomes (lagging, goal-worthy) and triangulates them with the Content Standard Checklist; an indicator that is “Easy to measure and easy to manipulate or game” is probably an activity[57].
| KPI | Definition and formula | Kind | Pitfall |
|---|---|---|---|
| Link rate | Closed tickets with ≥ 1 linked item ÷ closed tickets | Activity (trend only) | Rewards linking anything |
| Link accuracy | Sampled links whose item resolves the issue ÷ sampled links | Outcome | Small samples are imprecise (below) |
| Known share (assisted) | Links to existing items ÷ all links | Outcome signal | High = known issues miss self-service |
| Content Standard Checklist % | 1 − 2 × (possible − passed) ÷ possible[34] | Coaching signal | Not an accuracy review |
| Tier-1 freshness | Tier-1 items reviewed within 90 days ÷ tier-1 items | Outcome | Rubber stamps; pair with rehearsals |
| Ownerless ratio | Live items whose owner is not active ÷ live items | Health | Group owners hide departed members |
| Failed-search rate | Searches with no click or no result ÷ searches | Findability | Bots and typos inflate it |
| Time to publish | Minutes from “relief given” to the item “published”, visible through self-service[31] | Flow | Slow review queues |
Targets with evidence. For credible input to product teams KCS wants “link rates that exceed 60% and link accuracy that exceeds 90%”[34]; for assisted support its ideal is “85% new”[31]. Both come from support experience.
Sample size (Atlas arithmetic). A sampled accuracy p from n links has a 95 % margin of about 1.96 × √(p(1 − p) ÷ n): at p = 0.9, ±8 points for 50 samples and ±5 for about 140. Fifty links cannot tell 85 % from 90 %.
Worked example (illustrative). One month: 2,000 closed tickets, 1,240 linked: link rate 62 %. A coach samples 80 links; 68 resolve the issue: accuracy 85 %, ±8 points (77–93 %), so the 90 % bar is not shown; fix search and coaching and sample more before any product report. 930 links reuse an existing item: known share 75 %, so publish those items to customers (with SupportOps) rather than write more. 31 of 40 tier-1 runbooks were reviewed within 90 days: freshness 77.5 %, a gap to escalate.
Data limitations. Accuracy needs human sampling; self-service success needs click-path or survey methods[31].
Quality, security, privacy and compliance
Link to section “Quality, security, privacy and compliance”| Risk | Signal | Mitigation | Owner |
|---|---|---|---|
| Wrong item followed in production | Postmortem cites a runbook step | Tier 1, rehearsal, compliance-based governance | Item owner |
| Restricted item reaches a wider audience | Label audit; Lab 3 gate | Audience metadata; gate on every build | KnowledgeOps lead, security |
| Personal data in articles | Names, customer screenshots | Content standard bans it; redact at capture | Knowledge worker, privacy |
| Erasure not applied to indexes | Deleted item still retrievable | Deletion propagates to derived views; verify | Privacy, platform |
| Poisoned or unvetted source in corpus | New repository appears in index | Corpus allowlist; “trusted and verified sources”[19] | Security |
Evidence retention. To show what you told someone, keep the version delivered: KCS suggests a snapshot in the incident or article version control[22]. Legal duties differ by jurisdiction; PrivacyOps and ComplianceOps own them.
Cost, capacity and sustainability
Link to section “Cost, capacity and sustainability”The costs are mostly people’s time:
- Capture and coaching cost capacity in each adoption wave[32].
- Review. Calendar review scales with item count, reuse review with demand. Illustrative, at 10 minutes per review: 3,000 items once a year cost 500 hours; 50 tier-1 items four times and 100 tier-2 items twice a year cost about 67 hours, plus rehearsals.
- Re-indexing. An embedding “must be recomputed whenever the document changes or whenever the embedding model is upgraded”, a significant recurring cost at scale[58]; see FinOps for AI.
- Benefits need your own baseline before you claim them.
Assurance of the operating model
Link to section “Assurance of the operating model”Beyond the KPIs:
- Process Alignment Review: “how well and how often knowledge workers are contributing to the Solve Loop”[21].
- Stagnation. KCS warns that “the system slowly dies” when articles stop flowing to self-service and participation drops[22]; watch the monthly snapshot of states and time to publish.
- Rehearsal findings for tier-1 items, tracked like incident actions.
- Index reconciliation results (Lab 3) on every build, plus a quarterly red-team of the assistant with restricted questions.
- Owner hygiene: ownerless ratio after every reorganisation.
When things go wrong
Link to section “When things go wrong”Common failures and troubleshooting
Link to section “Common failures and troubleshooting”| Symptom | Likely cause | Diagnosis | Remediation | Prevention |
|---|---|---|---|---|
| Three items answer one question differently | Capture without searching first | Duplicate cluster in search | Merge to one canonical item | “Search early”; uniqueness check |
| Agents stopped linking | Linking is slow, or the data is unused | Link rate trend by team | One-click linking | Report Evolve Loop findings back monthly |
| Article counts up, quality down | Goals on activities | Checklist scores of high producers | Remove activity goals; coach | Outcome goals only[57] |
| Runbook failed during an incident | Tier-1 item never rehearsed | Postmortem; review history | Fix, rehearse, add owner | Tier policy; game days |
| Search finds nothing for common words | Items written in insider terms | Failed-search report | Add asker’s phrases and synonyms | Capture the requestor’s words |
| Assistant cites a retired procedure | Archive missed the index | Chunk id → item → state | Remove chunks; rebuild | Gate every build (runbook) |
Runbook: the assistant quotes a retired procedure
Link to section “Runbook: the assistant quotes a retired procedure”Situation (illustrative). The internal assistant answers “how do I get a production database credential?” with the old ticket-based process and cites a page the platform team archived last month. Two people have already sent requests to an unmonitored queue.
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 140, "nodeSpacing": 16, "rankSpacing": 28, "padding": 8}}}%%
flowchart TB
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
A["1 Report: answer cites item KB-412"]:::risk
B["2 Trace chunk id to item id, version, state, audience"]:::core
C{{"3 Is the source archived, outdated or wider than its audience?"}}:::decision
D["4 Contain: delete the chunks; block the item id at query time"]:::risk
E["5 Correct: tell people who acted; fix or point to the current item"]:::core
F["6 Find the gap: why did archiving not reach the index?"]:::core
G["7 Prevent: gate every build; add a test case"]:::core
H["Content is current: route to LLMOps as a retrieval fault"]:::core
A --> B --> C
C -->|"yes"| D --> E --> F --> G
C -->|"no"| H
Text equivalent: An answer cited KB-412. Responders trace the chunk to the item’s id, version, state and audience. If the source is archived, outdated or wider than its audience, they contain (delete chunks, block the id), correct (tell those who acted), find the gap and prevent a repeat (gate every build, add a test). If the content is current, LLMOps treats it as a retrieval fault.
What the figure leaves out:
- Trace: chunk → KB-412, version 6 indexed, archived since 2026-09-28.
- Contain within the hour; search the index for copies under other ids (a team wiki had pasted the text).
- Correct: tell the two requesters the current route, check the queue, add a “retired, see KB-530” banner.
- Root cause: the index sync handled edits but not state changes. A restricted item makes this a data exposure for security and PrivacyOps.
- Prevent and verify: Lab 3 gate as a blocking step and an LLMOps regression case; re-ask and expect KB-530 cited.
Anti-patterns and myths
Link to section “Anti-patterns and myths”- “Write everything down.” Unowned documents become obsolete[8]; capture what is demanded.
- Article quotas. Goals on activities “corrupt the knowledge base”[57].
- Annual review of everything. Wastes effort on unused items and misses the runbook that changed last month.
- Shrinking the base to fix search. KCS calls archiving old articles treating “the symptoms of findability, not the cause”[59]. (AI corpora differ; see the judgement call.)
- The hero expert. KCS: “The new hero in the organization is the person who creates value through their contribution to the knowledge base”[34].
- “The AI will organise it.” An assistant inherits your permissions and your stale pages[47][48].
Deciding and adopting
Link to section “Deciding and adopting”When to use and when not to use
Link to section “When to use and when not to use”Use it when the same questions recur, when people wait for a few experts, when onboarding is slow, when incidents last longer because procedures are missing, or before connecting an AI assistant to internal content.
Do not invest in a programme when the work is mostly novel, when a handful of people sit together, or when the knowledge changes faster than anyone can write it (then pair or swarm). KCS says the key value factor is “the degree to which knowledge or experience plays a role in responding to user’s or customer’s requests for assistance”[32]. Hidden costs: coaching, owners’ review time, tool integration, and the politics of removing activity quotas. Alternatives: a well-owned FAQ, recorded walkthroughs, or pairing.
Decision framework
Link to section “Decision framework”The key decision is which review engine each class of knowledge gets; the tree is this Atlas’s proposal.
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 140, "nodeSpacing": 16, "rankSpacing": 28, "padding": 8}}}%%
flowchart TB
classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
Q1{{"Could following a wrong copy cause serious harm?"}}:::decision
Q2{{"Is it used at least monthly?"}}:::decision
Q3{{"Does it change on a known schedule or with known systems?"}}:::decision
T1["Tier 1: 90-day owner review plus rehearsal; compliance-based edits"]:::core
T2["Tier 2: review on every dependent change, 180-day backstop"]:::core
T3["Tier 3: reuse is review; archive on obsolescence"]:::neutral
Q1 -->|"yes"| Q2
Q1 -->|"no"| Q3
Q2 -->|"no"| T1
Q2 -->|"yes"| T2
Q3 -->|"yes"| T2
Q3 -->|"no"| T3
Text equivalent: Could following a wrong copy cause serious harm? If so and the item is used less than monthly, it is tier 1: 90-day owner review, rehearsal, designated editors. If harmful but used at least monthly, or harmless but changing on a known schedule or with known systems, it is tier 2: review on every dependent change with a 180-day backstop. Otherwise it is tier 3: reviewed by reuse, archived when obsolete.
For tool choice, weight: ticket or incident linking, export with metadata and links, and an audience and state model (high); verification reminders and failed-search analytics (medium); AI features (low until the basics work).
Maturity model
Link to section “Maturity model”This Atlas’s model, not an official one. ScreenSteps publishes three stages (Tribal, Document, Guide)[60]; KCS describes adoption phases (Plan and Design, Adopt in Waves, Build Proficiency, Optimize and Innovate)[32].
| Level | Observable behaviour | Exit criteria |
|---|---|---|
| 0 Tribal | Answers live in heads and chat | A repository exists and people know where |
| 1 Documented | Pages exist; nobody owns them; duplicates | Metadata contract; owner on ≥ 90 % of live items |
| 2 Owned | Owners, states, audiences; tier policy | Tier-1 freshness ≥ 90 %; ownerless ratio < 5 % |
| 3 Integrated | Capture and linking in the workflow; monthly scorecard | Link accuracy ≥ 90 % sampled; time to publish tracked |
| 4 Learning | Evolve Loop drives product and process fixes; corpus gated for AI | Root-cause fixes traced to link data; zero gate failures in production |
Adoption roadmap: 30/60/90 days
Link to section “Adoption roadmap: 30/60/90 days”| Window | Actions | Milestone |
|---|---|---|
| Days 1–30 | Pick one domain (a support queue or an on-call rota); write the metadata contract; inventory items and owners; run Lab 1; tier the top 50 items | Baseline: ownerless ratio, tier-1 freshness, link rate |
| Days 31–60 | Train search, link, flag or fix; appoint coaches; one-click linking; checklist sampling; rehearse two tier-1 runbooks | Link accuracy measured, with its margin |
| Days 61–90 | First Evolve Loop review; archive duplicates; publish validated items; gate any AI index (Lab 3) | Leadership reviews the scorecard and decides on expansion |
Toolkit
Link to section “Toolkit”Checklists
Link to section “Checklists”Quick start
- One domain, a named KnowledgeOps lead and a sponsor
- Metadata contract published; tiers defined; audit (Lab 1) running weekly
- Linking available in one click from tickets or incidents
Before connecting an AI assistant
- Corpus allowlist by domain, state and audience; nothing ownerless
- Index chunks carry item id, version and audience; Lab 3 gate blocks the build
- Archive and deletion reach the index within an agreed time; erasure route agreed with privacy
- Red-team prompts for restricted content run before launch and quarterly
Monthly review
- Scorecard reviewed (metrics), with sample margins
- Ten worst failed searches turned into items or synonyms
- Duplicates merged; flags older than 14 days resolved; no tier-1 domain with a single capable person
Templates
Link to section “Templates”Item template (KCS-style structure: issue in the asker’s words, environment, resolution, cause[61]):
Title: <main issue> on <main environment>
Issue: <the asker's words; exact error text in quotes>
Environment: <product, version, platform; one per line>
Resolution: 1. <present-tense step> 2. <step>
Cause: <optional; one cause per item>
Metadata: id | owner | tier | state | audience | last_reviewed | version
Tier-1 review form
Item / version: KB-____ v__ Reviewer (owner): ________
Systems it touches: ________ Changed since last review? yes / no
Walked through on: paper / staging / game day (date ____)
Steps that failed or were unclear: ________
Outcome: confirmed | corrected (new version __) | archived
Next review due: ____-__-__ Next rehearsal: ____-__-__
Retirement request
Item: KB-____ Requested by: ____ Reason: obsolete | duplicate | wrong
Replacement item: KB-____ (or none) Linked records exist? yes / no
Action: archive (linked) | delete (unlinked and wrong)
Remove from: search | help centre | AI index (verify chunk count = 0)
Deep comparisons
Link to section “Deep comparisons”| Approach | Best for | Review model | Weakness |
|---|---|---|---|
| KCS in a knowledge base | Support and service desks | Reuse is review; coaching | Needs linking and culture change |
| Docs as code | Runbooks, engineering procedures | Pull requests; owners; freshness dates | Barrier for non-engineers |
| Editorial (ContentOps) | Product docs, public guides | Planned editorial review | Slow for fast-changing answers |
| Open wiki | Early-stage teams | None by default | Ownerless decay[8] |
Two maintenance philosophies disagree. Google advises “Default to delete or leave behind if migrating”[62]; KCS says “Archiving an article is better than deleting it” when tickets link to it[22]. Deletion suits unlinked engineering pages; archiving suits items in a service record.
Is KnowledgeOps a job title? Rarely. ScreenSteps names a “Knowledge Ops Manager”[1]; most say knowledge manager or KCS programme lead.
Is KCS only for customer support? No. Members are “adopting KCS across their entire company, including HR, legal, marketing, sales, product management and development organizations”[6], though the evidence comes mostly from support.
Do we need ISO 30401 certification? Only if a customer or regulator asks for it. You can adopt the management-system discipline without certifying, and a revised edition is close (as of October 2026)[17].
Our most experienced engineer leaves in a month. What first? Reassign everything they own this week, then walk-through interviews and pairing for their tier-1 procedures (tacit knowledge).
Can AI write our knowledge base? It can draft from tickets and incidents; drafts stay Not Validated until a proficient person confirms them. Volume without validation is an activity goal in disguise.
Going further
Link to section “Going further”Advanced topics and emerging direction
Link to section “Advanced topics and emerging direction”- Knowledge-Centered Success (new edition): certifications roll out in late 2026 and 2027[16].
- Knowledge graphs (established technique, uneven practice): SKOS-style vocabularies link items, systems and terms[27]; most teams need synonyms first.
- Agentic assistants that edit knowledge (emerging): “Empower to Improve” in the new KCS guide includes “permissioned people and systems”[20]; an editing agent needs the same proficiency rules as a person.
- Answer-level freshness (speculative): a corrected item invalidates past answers that cited it. Little published practice exists.
Learning path
Link to section “Learning path”| Stage | Do this |
|---|---|
| Prerequisites | None; read the glossary |
| 1 day | Read the KCS Solve Loop pages[20]; run Lab 1 |
| 1 week | Tier 50 real items; draft a metadata contract; run Lab 2 on a ticket export |
| 30 days | Run the 30-day roadmap in one domain; run the expert-leaving playbook once |
| Advanced | KCS certification; Lab 3 with your LLMOps team; ISO 30401 |
| Portfolio | A before-and-after scorecard for one domain, with the decisions it drove |
Wrap-up
Link to section “Wrap-up”Executive recap and cheat sheet
Link to section “Executive recap and cheat sheet”- Decide: which domains first; tier policy; who owns what; goals on outcomes only.
- Practise: search early, link, flag or fix, capture in the asker’s words, rehearse tier-1 runbooks, hand over before people leave.
- Measure: the scorecard, with sample margins.
- Tool classes: knowledge base with verification; docs as code with CODEOWNERS; link and metadata checks; gated AI index.
- Watch out: article quotas, annual review of everything, experts leaving unannounced, archived items in AI indexes.
- Next action: run Lab 1 against your real repository this week.
A judgement call: index everything, or start from an allowlist?
Link to section “A judgement call: index everything, or start from an allowlist?”Situation (illustrative). A 3,000-person company switches on an internal assistant in six weeks. Its wiki holds about 40,000 pages; a third have no active owner, and nobody knows how many are restricted but openly shared. Option A (the vendor’s default): index everything users can open; clean up as complaints arrive. Option B: index an allowlist of owned, labelled domains (about 6,000 items) and grow it monthly.
Assumptions. The assistant trims results to each user’s permissions[47]; wiki permissions are loose; leadership will judge the launch by month-one coverage.
Reasoning. (1) Worst failure. A: an over-shared restricted page is one question away for everyone, and stale pages answer fluently. B: “I don’t know” outside the allowlist. (2) Does demand-driven cleanup rescue A? “Reuse is review” works because a trained responder judges each article in context[24]; an assistant user sees a fluent paragraph without age or state, so errors surface only after someone acts. (3) Cost of B. Lower launch coverage, owner work on 6,000 items. (4) What would change the answer. Recently audited permissions and mostly owned content.
Decision: B, with the wiki’s ordinary search, which shows dates and authors, left for everything else. The attractive choice, A, buys coverage with risks invisible until the first leak. Uncertainty: how fast the allowlist can grow; let weekly “no answer” questions choose the next domains.
Learning objectives and mastery check
Link to section “Learning objectives and mastery check”After this page you can explain the label and its boundaries, design a metadata contract and tier policy, operate the Solve and Evolve loops, measure knowledge health without quotas, retain an expert’s knowledge, and evaluate a corpus before an AI launch.
1. A director proposes “ten articles per agent per month”. What do you say, and what do you propose instead?
KCS predicts month-end articles with little value[57]. Track creation as a trend only; set goals on link accuracy, time to publish and self-service success.
2. Your disaster-recovery runbook was viewed twice this year. Is “reuse is review” enough?
No. Reuse never triggers and errors are costly: tier 1, with 90-day and change-triggered owner review plus rehearsal.
3. Link rate is 70 %, sampled accuracy 72 % on 60 links. Can product managers trust the top-ten issues list?
Not yet. Even with a margin of about ±11 points, accuracy is below the 90 % KCS asks for[34]; fix search and coaching.
4. An item was archived last week, but the assistant still quotes it. Where do you look first?
The index build: archiving changed the record, not the derived view. Trace the chunk, delete it, add the Lab 3 gate (runbook).
5. Should you delete or archive a wrong troubleshooting article linked from 300 tickets?
Archive it and point to the replacement: deleting breaks the links from records[22]. Remove it from every index.
6. Known share in assisted support is 75 %. Good or bad?
A warning sign: KCS’s ideal is about 85 % new[31]; known issues should be solved in self-service. Publish validated items with SupportOps.
7. Your only payments-restore expert resigns. The runbook exists. Is that enough?
No. Reassign it, have the successor rewrite it from a walk-through interview, and rehearse it before the last day (tacit knowledge).
Conclusion
Link to section “Conclusion”“KnowledgeOps” is a vendors’ word for an old problem. It adds no new method: the method is knowledge management, codified for service work by KCS. The operations framing helps: run knowledge as an operated asset, with owners, states, service levels and incident handling. The hard part is choosing which knowledge needs calendar review, keeping owners real as people leave, and making every copy, especially the one an AI reads, carry an item’s state and audience. Product facts are dated October 2026; re-check them, and the KCS facts once the 2027 certifications ship.
Sources and further reading
Link to section “Sources and further reading”Ledger: research/knowledgeops-ledger.md. KCS library pages show no dates; “v6” marks the KCS v6 Practices Guide, “KCS 2027” the
Knowledge-Centered Success guide published in 2026.
Changelog. 2026-10-23: first complete draft (Blueprint v2, 13 H2 parts, six diagrams, three executed labs); term status vendor-specific confirmed; KCS facts updated for the April 2026 Knowledge-Centered Success edition. 2026-10-23 (r1 revision): Lab 1 audit recurses, strips comments, fails on zero items; two-job workflow, roster fetched at run time; tacit-knowledge section; 2021 “knowledge ops” use, ISO status; encodable tiers; KCS departure stated; shortened. 2026-10-23 (final-QA revision): empty footnote fixed; environment administrator-bypass precondition; KCS “proficient” wording; trimmed. 2026-10-23, post-score polish: UTC “by default”; paid-plan note covers environment secrets; three-column methods table.
What is Knowledge Operations in Business? — ScreenSteps (Rebecca Lane), 2025-02-21. Checked 2026-10-23. ↩︎ ↩︎
Augmented Intelligence for the Enterprise — V. Mary Abraham, notes from KMWorld Connect 2021, 2021-11-16. Checked 2026-10-23. ↩︎ ↩︎
KnowledgeOps: Knowledge Management Stopped Being a Content Job — Knowmax (Pratik Salia), 2026-08-24, updated 2026-09-30. Checked 2026-10-23. ↩︎ ↩︎
What Is Knowledge Operations (KnowledgeOps)? — Deeml Inc., undated. Checked 2026-10-23. ↩︎
ISO/TC 260 ongoing projects: ISO/DIS 30401 — ISO TC 260 (standard ISO 30401:2018). Checked 2026-10-23. ↩︎ ↩︎
Knowledge-Centered Success Practices Guide — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
2024 Developer Survey: Professional Developers — Stack Overflow, 2024. Checked 2026-10-23. ↩︎
Software Engineering at Google, chapter 10: Documentation — Tom Manshreck, ed. Riona MacNamara; O’Reilly, 2020. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Postmortem of database outage of January 31 — GitLab, 2017-02-10. Checked 2026-10-23. ↩︎ ↩︎
Post-Incident Review on the Atlassian April 2022 outage — Atlassian, 2022-04-29. Checked 2026-10-23. ↩︎ ↩︎
Site Reliability Engineering, Introduction — Google (Beyer et al., O’Reilly), 2016. Checked 2026-10-23. ↩︎
Why KCS? — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎
knowledge ops skill — skills.sh listing of the affaan-m/ecc repository. Checked 2026-10-23. ↩︎
Tacit knowledge — Wikipedia (citing Polanyi 1966; Nonaka and Takeuchi 1995). Checked 2026-10-23. ↩︎ ↩︎
What’s New in Knowledge-Centered Success — Consortium for Service Innovation. Checked 2026-10-23. ↩︎
KCS Certification & Training and Knowledge-Centered Success Training and Certification — Consortium for Service Innovation. Checked 2026-10-23. ↩︎ ↩︎ ↩︎
ISO/DIS 30401 Knowledge management systems — Requirements — Institute for Standardization of Serbia, mirror of ISO project 89436 (stage 40.60, 2026-09-18). Checked 2026-10-23. ↩︎ ↩︎ ↩︎
ScreenSteps vs. traditional knowledge base — ScreenSteps (Greg DeVore), 2023-11-24. Checked 2026-10-23. ↩︎
LLM08:2025 Vector and Embedding Weaknesses — OWASP GenAI Security Project, 2025. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
The Solve Loop — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
The Evolve Loop — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎
Technique 5.2: KCS Article State — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Technique 1.3: Track Reuse — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎
Technique 4.1: Reuse is Review — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎
Verification — Guru. Checked 2026-10-23. ↩︎ ↩︎
About article verification and how it works — Zendesk. Checked 2026-10-23. ↩︎ ↩︎
SKOS Simple Knowledge Organization System Reference — W3C Recommendation, 2009-08-18. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
What is Knowledge Ops? — ScreenSteps Help, updated 2025-09-29. Checked 2026-10-23. ↩︎
Technique 1.1: Capture Knowledge in the Moment — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎
Output: the KCS Article — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎
Appendix C: Metrics Matrix — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Technique 7.3: KCS Program Benefits and ROI — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
Technique 7.1: KCS Roles and the Licensing Model — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎ ↩︎
Technique 5.10: Content Health Indicators — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Technique 4.3: License to Modify — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎ ↩︎
Technique 3.3: Linking — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎
Software Engineering at Google, chapter 3: Knowledge Sharing — Nina Chen and Mark Barolak, ed. Riona MacNamara; O’Reilly, 2020. Checked 2026-10-23. ↩︎ ↩︎
On Pair Programming — Birgitta Böckeler and Nina Siessegger, martinfowler.com, 2020-01-15. Checked 2026-10-23. ↩︎
Introduction to communities of practice — Etienne and Beverly Wenger-Trayner, 2015. Checked 2026-10-23. ↩︎
Docs as Code — Write the Docs. Checked 2026-10-23. ↩︎
Diátaxis and Start here — Daniele Procida. Checked 2026-10-23. ↩︎
Appendix F: KCS and ITIL — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎
About code owners — GitHub Docs. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎
Vale documentation — Vale. Checked 2026-10-23. ↩︎
Data, Privacy, and Security for Microsoft Copilot — Microsoft Learn, 2026-07-09. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Generative AI Operations for Organizations with MLOps Investments — Microsoft Learn, 2025-09-16. Checked 2026-10-23. ↩︎ ↩︎
Reduce hallucinations — Anthropic. Checked 2026-10-23. ↩︎
About protected branches — GitHub Docs. Checked 2026-10-23. ↩︎
Expressions: status check functions — GitHub Docs. Checked 2026-10-23. ↩︎
Events that trigger workflows: schedule — GitHub Docs. Checked 2026-10-23. ↩︎
lychee-action v2.9.0 action.yml — lycheeverse, released 2026-07-09. Checked 2026-10-23. ↩︎
Deployments and environments — GitHub Docs. Checked 2026-10-23. ↩︎ ↩︎
Managing environments for deployment — GitHub Docs. Checked 2026-10-23. ↩︎
Using workflow run logs — GitHub Docs. Checked 2026-10-23. ↩︎
Technique 7.1: Measure the Right Things — Consortium for Service Innovation (KCS 2027). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
FinOps for AI: tools and services considerations — FinOps Foundation. Checked 2026-10-23. ↩︎
Technique 5.5: Archiving Old Articles — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎
The Knowledge Ops Maturity Model — ScreenSteps (Greg DeVore), 2025-02-13. Checked 2026-10-23. ↩︎
Appendix E: Article Quality Quick Reference Guide — Consortium for Service Innovation (v6). Checked 2026-10-23. ↩︎
Documentation best practices — Google style guides. Checked 2026-10-23. ↩︎