Summary
The /arckit:wardley command instructs the LLM to enrich the wardley-beta Mermaid block with sourcing decorators based on the component's evolution band:
"Components with evolution < 0.50 that are strategic differentiators: (build). Components procured from market (Product stage): (buy). ... Commodity/utility components: no decorator (or (buy) if via G-Cloud/marketplace). Components with identified inertia: append (inertia)."
Applied as written, this produces blanket annotation: every Custom-band component gets (build), every Product/Commodity gets (buy). On a 39-component map, ~95% of nodes end up decorated. The decorators stop carrying information beyond what the X-axis position already communicates, and the rendered Mermaid loses the per-node visual differentiation the decorators were supposed to provide.
Reproduction
Run /arckit:wardley against any project with ≥ 20 components covering the full evolution range. Inspect the generated wardley-beta block. Result: most components decorated; the OWM block (canonical Wardley, no decorators) is the cleaner artefact.
Concrete example: projects/003-arckit-consulting/wardley-maps/ARC-003-WARD-001-v1.0.md.
- Original (commit
5177994): 24 (build) + 20 (buy) + 6 (inertia) decorators on 41 nodes.
- Cleaned-up (commit
a49a268): 2 (inertia) decorators only — applied where they communicate something the position cannot (GA-timing dependency on ArcKit Project 001 SaaS / 002 Sovereign).
Root Cause
The current instruction maps decorators to evolution bands (if evolution < 0.50: (build)) rather than to strategic exceptions to position-implied sourcing. Position-driven Wardley Mapping already communicates build / buy / use intent via the X-axis; a decorator that restates the position is redundant.
Proposed Fix
Change the decorator-enrichment block in commands/wardley.md from band-mapping to selectivity-guarded:
Current (paraphrased):
The Mermaid version adds sourcing decorators derived from the Build vs Buy analysis: evolution < 0.50 → (build); Product → (buy); commodity → no decorator; inertia → (inertia).
Proposed:
The Mermaid version applies sourcing decorators selectively — only where the decorator communicates something the position cannot. Default: no decorator (the X-axis evolution position already implies build / buy / use). Apply a decorator only when:
- The position-implied sourcing is deliberately overridden (e.g., a Commodity component you've chosen to build, or a Genesis component for which a buy decision was forced — flag the anti-pattern).
- The component has external timing or dependency inertia that the position cannot show — append
(inertia).
- In rare cases, the component is internally constructed in-house and a visual marker would help non-Wardley-fluent readers — append
(build) only on those constructed artefacts, not on policies, governance bodies, capabilities, methods, or outcomes.
Avoid blanket application. If more than ~25% of components have the same decorator, the decoration has stopped carrying signal — remove it.
Related Evidence (already in the plugin)
This is consistent with how /arckit:wardley.value-chain already handles decorators:
commands/wardley.value-chain.md:320: "Mermaid wardley-beta equivalent in collapsible <details> block (no sourcing decorators at value chain stage)"
commands/wardley.value-chain.md:324: "At the value chain stage, no sourcing decorators are used (build/buy analysis has not been performed yet)."
skills/wardley-mapping/references/mapping-examples.md:525: "the wardley-beta Mermaid block uses the same coordinates but omits sourcing decorators"
The plugin author has already articulated the principle elsewhere; the /arckit:wardley command is the inconsistent one.
Out of Scope (mentioned for completeness)
A deterministic OWM → wardley-beta converter would eliminate the editorial-drift problem entirely. All of the syntactic differences are mechanical (quote tokens that contain hyphens / dots / digits / slashes; convert note text [v,e] → note "text" [v,e]; convert annotation comma form; nest pipelines; drop style wardley and evolve label). This would be ~200 LOC of Node.js. Not asking for it here — just noting that the validator (hooks/validate-wardley-math.mjs) already operates between the two representations, so a converter would have a natural home next to it.
Validator Note
The current validator hooks/validate-wardley-math.mjs catches OWM ↔ Mermaid coordinate drift and unquoted bare-digit tokens — but does not catch decorator-bloat. Optional: add a soft warning when ≥ 70% of Mermaid components share the same decorator (likely a sign of blanket application).
Filed against ArcKit v4.19.0; /arckit:wardley command in commands/wardley.md.
Summary
The
/arckit:wardleycommand instructs the LLM to enrich thewardley-betaMermaid block with sourcing decorators based on the component's evolution band:Applied as written, this produces blanket annotation: every Custom-band component gets
(build), every Product/Commodity gets(buy). On a 39-component map, ~95% of nodes end up decorated. The decorators stop carrying information beyond what the X-axis position already communicates, and the rendered Mermaid loses the per-node visual differentiation the decorators were supposed to provide.Reproduction
Run
/arckit:wardleyagainst any project with ≥ 20 components covering the full evolution range. Inspect the generatedwardley-betablock. Result: most components decorated; the OWM block (canonical Wardley, no decorators) is the cleaner artefact.Concrete example:
projects/003-arckit-consulting/wardley-maps/ARC-003-WARD-001-v1.0.md.5177994): 24(build)+ 20(buy)+ 6(inertia)decorators on 41 nodes.a49a268): 2(inertia)decorators only — applied where they communicate something the position cannot (GA-timing dependency on ArcKit Project 001 SaaS / 002 Sovereign).Root Cause
The current instruction maps decorators to evolution bands (
if evolution < 0.50: (build)) rather than to strategic exceptions to position-implied sourcing. Position-driven Wardley Mapping already communicates build / buy / use intent via the X-axis; a decorator that restates the position is redundant.Proposed Fix
Change the decorator-enrichment block in
commands/wardley.mdfrom band-mapping to selectivity-guarded:Current (paraphrased):
Proposed:
Related Evidence (already in the plugin)
This is consistent with how
/arckit:wardley.value-chainalready handles decorators:commands/wardley.value-chain.md:320: "Mermaidwardley-betaequivalent in collapsible<details>block (no sourcing decorators at value chain stage)"commands/wardley.value-chain.md:324: "At the value chain stage, no sourcing decorators are used (build/buy analysis has not been performed yet)."skills/wardley-mapping/references/mapping-examples.md:525: "thewardley-betaMermaid block uses the same coordinates but omits sourcing decorators"The plugin author has already articulated the principle elsewhere; the
/arckit:wardleycommand is the inconsistent one.Out of Scope (mentioned for completeness)
A deterministic OWM →
wardley-betaconverter would eliminate the editorial-drift problem entirely. All of the syntactic differences are mechanical (quote tokens that contain hyphens / dots / digits / slashes; convertnote text [v,e]→note "text" [v,e]; convert annotation comma form; nest pipelines; dropstyle wardleyandevolve label). This would be ~200 LOC of Node.js. Not asking for it here — just noting that the validator (hooks/validate-wardley-math.mjs) already operates between the two representations, so a converter would have a natural home next to it.Validator Note
The current validator
hooks/validate-wardley-math.mjscatches OWM ↔ Mermaid coordinate drift and unquoted bare-digit tokens — but does not catch decorator-bloat. Optional: add a soft warning when ≥ 70% of Mermaid components share the same decorator (likely a sign of blanket application).Filed against ArcKit v4.19.0;
/arckit:wardleycommand incommands/wardley.md.