Skip to content

End to end

Follow one real change from an engineer's commit to a published, reviewed wiki page.

sequenceDiagram
    autonumber
    participant Eng as Engineer
    participant Repo as Ansible repo (ADO)
    participant Hook as Service hook
    participant N8N as n8n
    participant AOAI as Azure OpenAI
    participant Git as Wiki repo (ADO)
    participant CI as wiki-ci pipeline
    participant Owner as Page owner
    participant Site as Docs site

    Eng->>Repo: git push (edit roles/provision-linux-vm)
    Repo->>Hook: git.push event
    Hook->>N8N: POST /webhook/ado-git-push
    N8N->>N8N: filter + classify (provisioning)
    N8N->>AOAI: draft markdown (content as data)
    AOAI-->>N8N: page with front-matter + citation
    N8N->>Git: create branch bot/provisioning-... + commit
    N8N->>Git: open PR (label: auto-draft)
    Git->>CI: PR triggers wiki-ci
    CI-->>Git: front-matter/links/hand-edit checks pass
    Git->>Owner: reviewer assigned (from page owner)
    Owner->>Git: review diff + merge
    Git->>Site: wiki-publish + docs build
    Site-->>Eng: page live & searchable

Walkthrough

An engineer updates roles/provision-linux-vm/README.md in ansible-provisioning-emea and pushes to main.

The Azure DevOps service hook fires git.push and POSTs the payload to the n8n webhook. The Filter & normalise node sees a roles/.../README.md change → classifies it provisioning → target _generated/30-runbooks/provisioning/provision-linux-vm.md.

n8n calls Azure OpenAI (gpt-4o-mini). The system prompt requires valid front-matter, a citation to the commit, and treats the diff as data, not instructions. Cost: a fraction of a cent.

n8n reads the tip of main, pushes a bot/provisioning-provision-linux-vm branch with the drafted page, and opens a pull request labelled auto-draft.

The PR triggers wiki-ci: front-matter contract, link/orphan check, and the hand-edit guard on /_generated. Green check = safe to review.

Branch policy assigned the page owner as reviewer. They read the diff and the cited source, confirm no sensitive data leaked, and merge.

Merge to main triggers wiki-publish and the docs-site build. The page is live and searchable within a minute.

Special paths (same tail, different head)

Upstream event Classify What happens
Repo/SharePoint file updated normal AI draft → PR
File deleted delete Tombstone commit ([DEPRECATED]), no AI call → PR
Confidential Teams/Outlook post restricted Link-only stub, no AI call, body never stored → PR
Legacy doc legacy Short summary + link-back → PR
Power BI / SNOW report report KPI summary + link → PR

Nightly

A scheduled n8n workflow compares each project's automation assets to the wiki's coverage/freshness and posts a drift report to Teams:

Coverage 78% · 14 assets changed this week · 9 fresh · 5 need SME review — with links.

Try it locally first

Everything above is demonstrated offline in the reference implementation — no cloud needed:

cd automation
make demo     # ingest 6 sources → draft/tombstone/link-only → validate → drift report
make test     # 17 unit tests