Skip to content

/arckit:wardley Mermaid block applies sourcing decorators by evolution band, producing decorator-soup that hides signal #450

@tractorjuice

Description

@tractorjuice

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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions