This wiki holds documentation for two distinct products (
asdand PMA) plus cross-product positioning material. This page is the complete map of every page — 139 markdown files across 30 directories — with each one's namespace and status called out.
If you're looking for something specific, the 30-second router below
routes you. If you're maintaining this wiki, the full tree shows the
current mixing-up situation honestly.
| You want… | Go to |
|---|---|
Learn / use asd (the tool) |
/asd |
| Learn / use PMA (the suite) | /projects/asd-pma |
| Positioning / pitch material (either product) | /essays |
| Per-service docs for a PMA service (legacy top-level) | /services/<name> (see notes below) |
| The old PMA-v2 documentation (legacy parallel tree) | /pma-v2 (see notes below) |
| This map itself | /structure |
Green = clean separation, namespaced. Yellow = legacy: implicitly
PMA but not named that way. Red = orphan / mis-placed. Grey = the
audit page itself.
/asd/* — ASD product (43 files) ✅ cleanasd.md
asd/
├── why.md
├── concepts.md
├── compared.md ← section landing
├── cookbook.md ← section landing
├── compared/
│ ├── vs-cloudflare-tunnel.md
│ ├── vs-tailscale-funnel.md
│ └── vs-traefik.md
├── cookbook/
│ ├── ci-cd-with-asd.md
│ ├── debug-a-broken-route.md
│ ├── migrate-from-traefik.md
│ ├── put-an-api-behind-sso.md
│ ├── self-signed-https.md
│ ├── share-via-public-url.md
│ └── tunnel-a-dev-server.md
├── internals/
│ ├── architecture.md
│ ├── caddy-state.md
│ ├── credential-model.md
│ ├── extending.md
│ ├── registry.md
│ └── tunnels.md
├── learn/
│ ├── 00-start-here.md
│ ├── 01-hello-world.md
│ ├── 02-first-service.md
│ ├── 03-multiple-services.md
│ ├── 04-multi-environment.md
│ ├── 05-add-authentication.md
│ ├── 06-custom-routing.md
│ └── 07-build-a-module.md
└── reference/
├── asd-yaml.md
├── glossary.md
├── net-manifest.md
├── cli.md ← section landing
└── cli/
├── auth.md
├── automation.md
├── caddy.md
├── env-mode.md
├── expose.md
├── help.md
├── net.md
├── starter.md
├── vault.md
└── workspace.md
Count check: landing 1 + why/concepts/compared.md/cookbook.md 4 + compared 3 + cookbook 7 + internals 6 + learn 8 + reference base 3 + cli.md 1 + cli children 10 = 43 files ✓
/essays/* — cross-product positioning (4 files) ✅ cleanessays.md ← landing
essays/
├── why-asd.md
├── asd-magic.md
└── pma-magic.md
Count: 1 landing + 3 essays = 4 files
/projects/asd-pma/* — PMA product, namespaced (19 files) ✅ cleanprojects/
└── asd-pma.md ← landing
projects/asd-pma/
├── start.md
├── pitch.md
├── executive-summary.md
├── cockpit.md
├── commands.md ← section landing
├── services.md ← section landing
├── commands/
│ └── health-check.md
├── architecture/
│ ├── configuration.md
│ ├── monitoring.md
│ └── overview.md
├── getting-started/
│ ├── configuration.md
│ ├── customization.md
│ └── quick-start.md
└── services/
├── erpnext.md
├── mattermost.md
├── n8n.md
├── redmine.md
└── zammad.md
Count check: landing 1 + 4 top-level (start/pitch/exec/cockpit) + 2 section landings (commands.md, services.md) + commands children 1 + architecture 3 + getting-started 3 + services 5 = 19 files ✓
/pma-v2/* — LEGACY parallel PMA hierarchy (48 files) ⚠️ legacypma-v2.md ← landing
pma-v2/
├── architecture.md ← section landing
├── development.md ← section landing
├── executive.md ← section landing
├── integrations.md ← section landing
├── operations.md ← section landing
├── reference.md ← section landing
├── services.md ← section landing
├── style-guide.md
├── architecture/
│ ├── docker-infrastructure.md
│ ├── mcp-ecosystem.md
│ ├── mcp-gateway.md
│ ├── multi-tenant.md
│ ├── overview.md
│ └── package-system.md
├── development/
│ ├── api-reference.md
│ ├── contributing.md
│ ├── skills.md
│ └── workflow.md
├── executive/
│ ├── business-case.md
│ ├── pitch.md
│ ├── roadmap.md
│ └── summary.md
├── getting-started/
│ ├── installation.md
│ └── quick-start.md
├── integrations/
│ ├── email.md
│ ├── logging.md
│ ├── sso.md
│ └── workflows.md
├── operations/
│ ├── backup-restore.md
│ ├── commands.md
│ ├── health-checks.md
│ └── troubleshooting.md
├── reference/
│ ├── changelog.md
│ ├── faq.md
│ └── glossary.md
└── services/
├── erpnext.md
├── espocrm.md
├── grafana.md
├── index.md
├── loki.md
├── mattermost.md
├── n8n.md
├── openproject.md
├── openwebui.md
├── redmine.md
├── wikijs.md
└── zammad.md
Count check: landing 1 + 7 section landings + style-guide 1 + architecture 6 + development 4 + executive 4 + getting-started 2 + integrations 4 + operations 4 + reference 3 + services 12 = 48 files ✓
These pages are PMA content but live at the top level without a
/projects/asd-pma/ prefix. A reader sees the URL and has to guess.
/ (root)
├── architecture/
│ ├── configuration.md
│ ├── monitoring.md
│ └── overview.md
├── services/
│ ├── erpnext.md
│ ├── index.md
│ ├── mattermost.md
│ ├── n8n.md
│ ├── redmine.md
│ ├── wikijs.md
│ └── zammad.md
├── getting-started/
│ ├── configuration.md
│ ├── customization.md
│ └── quick-start.md
├── integrations/
│ └── discord-ai-bot.md
├── processes/
│ └── erpnext-booking-workflow.md
├── cockpit.md
├── executive-summary.md
├── home.md
├── home-new.md
├── pitch.md
├── services.md
├── testing.md
└── test-page-delete-me.md
Count check: architecture 3 + services 7 + getting-started 3 + integrations 1 + processes 1 + cockpit 1 + executive-summary 1 + home 1 + home-new 1 + pitch 1 + services.md 1 + testing 1 + test-page-delete-me 1 = 23 files
(Plus asd-pma/services-yaml-configuration.md listed separately
below as orphan = 24 in this category)
asd-pma/
└── services-yaml-configuration.md ← single page under solo namespace
/asd-pma/ exists only for this one page. Started-but-abandoned
reorganisation attempt.
structure.md ← this page (you are here)
| Category | Files | Status |
|---|---|---|
/asd/* (ASD product) |
43 | ✅ clean |
/essays/* (cross-product) |
4 | ✅ clean |
/projects/asd-pma/* (PMA, namespaced) |
19 | ✅ clean |
/pma-v2/* (legacy PMA v2) |
48 | ⚠️ parallel hierarchy |
| Top-level legacy (implicit PMA + misc) | 23 | ⚠️ no namespace |
/asd-pma/ orphan |
1 | ❌ |
/structure (this page) |
1 | meta |
| TOTAL | 139 | matches find pages -name "*.md" \| wc -l |
What's cleanly separated (green — 66 files):
/asd/* (43) — built in 2026-05; no PMA leak after audit + cleanup commit (redmine/authentik example names replaced with generic my-app/auth-app, real prod client-id gwkh replaced with placeholder xyz1)./essays/* (4) — explicitly cross-product, by design./projects/asd-pma/* (19) — PMA-specific docs under a PMA-specific path.If a reader is in any of these three subtrees, the URL alone tells
them which product they're reading about.
What's NOT cleanly separated (yellow — 71 files):
/architecture/* /services/* /getting-started/* /integrations/*
/processes/* /cockpit /executive-summary /home* /pitch
/services.md /testing /test-page-delete-me are all PMA-related
(or stray) but the URL doesn't say "PMA". A new reader sees
/architecture/overview and has to guess.
Why it's a problem now: with /asd/* and /essays/* adding
real cross-product content, the implicit "everything top-level is
PMA" convention has broken down.
Why it exists: PMA was the only product the wiki documented
for a long time. Top-level was an OK choice when there was only
one "top". With asd added, it isn't anymore.
A complete second copy of PMA docs with its own section landings
(architecture/development/executive/integrations/operations/reference/services).
Includes services PMA-v1 doesn't have (espocrm, grafana, loki,
openproject, openwebui).
Why it's a problem: two parallel hierarchies for the same
product means a reader can land on either, and the contents drift
out of sync over time.
Why it exists: appears to be a parallel "v2" rewrite that
landed alongside the original instead of replacing it.
What's red (1 file):
/asd-pma/services-yaml-configuration.md — orphan, single pageThe work shipped in branch feat/3915-asd-wiki-content adds:
/asd/* — 43-page ASD product subtree, clean (green)./essays/* — 4 cross-product essays + landing, clean (green)./structure.md — this page (meta).= 48 files added by this branch. It does not touch any of
the legacy yellow/red areas. The mixing-up problem this page
describes is pre-existing; the new work is separated from it on
purpose.
If the legacy mixing bothers you, here's the shape of a tidy-up
(separate work, not part of #3915):
Decide what to do with /pma-v2/* (48 files). Either:
/projects/asd-pma/ (and demote the current/projects/asd-pma/* to legacy), then git rm the v2 tree.git rm -r /pma-v2/* and the /pma-v2.mdNamespace the implicit-PMA top-level pages (23 files).
Move /architecture/, /services/, /getting-started/,
/integrations/, /processes/, /cockpit,
/executive-summary, /pitch, /services.md, /home* into
/projects/asd-pma/ (or pick whichever PMA tree wins step 1).
Fold the orphan. Move
/asd-pma/services-yaml-configuration into
/projects/asd-pma/architecture/ (or wherever the PMA manifest
schema lives in the kept tree), then delete the empty
/asd-pma/ directory.
Decide which /home*.md page is canonical. Likely keep
one, delete the other.
Drop /test-page-delete-me.md and possibly /testing.md.
Stray test pages from earlier sessions.
After that: every page lives under exactly one product namespace,
URLs make the product visible, and a reader landing anywhere
knows which product they're reading.
This is a documentation-cleanup project, not an asd feature
ticket. It would belong in its own Redmine ticket — likely
follow-up under epic #3896.
For when you've forgotten which path holds what:
| Path | Product | Files | Status |
|---|---|---|---|
/asd/* |
ASD (the tool) | 43 | ✅ Clean, namespaced |
/essays/* |
Cross-product | 4 | ✅ Clean, namespaced |
/projects/asd-pma/* |
PMA | 19 | ✅ Clean, namespaced |
/pma-v2/* |
PMA (legacy v2) | 48 | ⚠️ Parallel hierarchy — cleanup candidate |
/architecture/* |
PMA (implicit) | 3 | ⚠️ No namespace |
/services/* |
PMA (implicit) | 7 | ⚠️ No namespace |
/getting-started/* |
PMA (implicit) | 3 | ⚠️ No namespace |
/integrations/* |
PMA (implicit) | 1 | ⚠️ No namespace |
/processes/* |
PMA (implicit) | 1 | ⚠️ No namespace |
/cockpit, /executive-summary, /pitch, /services.md, /home*, /testing |
PMA (implicit) + misc | 7 | ⚠️ No namespace |
/asd-pma/services-yaml-configuration |
PMA | 1 | ❌ Orphan singleton |
/test-page-delete-me |
none | 1 | ❌ Cleanup candidate |
/structure |
meta (this page) | 1 | n/a |
| Total | 139 | matches find . -name '*.md' \| wc -l |