@wairon/cli 5.1.1-dev.102 → 5.1.1-dev.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,133 @@
1
+ # wairon — Roadmap
2
+
3
+ > Last updated: 2026-10-05 (for v6.0.0)
4
+
5
+ wairon is an AIDD support tool built around Spec-Driven Development. This roadmap
6
+ reflects what is actually shipped in `src/` and what is planned. The
7
+ [CHANGELOG](../CHANGELOG.md) has the per-release detail.
8
+
9
+ ---
10
+
11
+ ## Shipped
12
+
13
+ - **SDD spec tree** — L0 System → L1 Subsystem → L2 Component → L3 Interface →
14
+ L4 Implementation → L5 Narrative, stored under `.wai/specs/`.
15
+ - **Architecture-conformance validation** (`wairon validate`) — a documented
16
+ rule registry (`wairon rules list`): reference integrity,
17
+ contract↔implementation method symmetry, narrative-call resolution and
18
+ control-flow soundness, component-stereotype dependency rules (including the
19
+ Supervisor/Actor doctrine and the Repository pattern), technology-leakage
20
+ fencing, dependency-cycle detection, draft-aware severity, per-project
21
+ severity overrides and per-spec `lint.allow`. `--ci` for pipelines.
22
+ - **Code↔spec conformance** — a spec's `sourcePath` is checked against the code:
23
+ declared exports, methods, params and the import graph, recorded beside the
24
+ approval and enforced by `validate --ci`.
25
+ - **One type grammar** — language-neutral type spellings (`list<T>`, `T?`,
26
+ `async T`, `int`/`float`, enums, named value-objects, signature types), with
27
+ `wairon doctor --fix` rewriting older spellings.
28
+ - **Approval and the merge gate** — `wairon lock` records a human's approval of
29
+ the design as one digest per spec in the committed `.wai/lock.json` (it never
30
+ rewrites the spec tree); `wairon lock-check` answers in CI whether the design
31
+ being merged is the approved one, also as a reusable GitHub workflow.
32
+ - **Members, parts and projects** — a project grows from subsystems, to
33
+ **parts** (some of its subsystems stored in another folder or repository), to
34
+ member **projects** with their own id, exports and lock, reached as
35
+ `alias::name`. Declared `externals` are pinned (`wairon externals pin`) and
36
+ compared with their live producers. `validate` at a parent is the family run.
37
+ - **Family migrations and renames** — attach, detach, adopt, promote, demote,
38
+ internalize, externalize, project and alias renames, each planned first
39
+ (`--report` / `dryRun`) and applied all or nothing; in-tree renames of
40
+ components, methods and types, and method moves, rewrite every reference.
41
+ - **Design export** (`wairon export`) — the whole resolved design as one JSON
42
+ document with a published schema, stamped with the approval verdict, for
43
+ generators and translators.
44
+ - **Spec-derived agent topology** — agents are derived from the spec tree
45
+ (`system-architect`, `<subsystem>-owner`, optionally a
46
+ `<component>-implementer` per component) and served as **live briefs**
47
+ (`sdd_get_agent_brief`, `wairon agent brief`), composed from the current tree
48
+ on every call. Agent files on disk are an opt-in materialized view
49
+ (`rules.materializeAgentFiles`). Execution budgets derive a model tier and
50
+ allowance per agent. There is no hand-maintained agent registry.
51
+ - **Domains** (`wairon domains`) — subsystem-derived domains plus free-standing
52
+ domains declared in `.wai/topology.yaml`, each with a derived owner agent.
53
+ - **SDD skills** (`wairon skills`) — installed into each active target tool to
54
+ drive the spec-driven workflow in-session.
55
+ - **MCP server** (`wairon mcp`) — topology tools + `sdd_*` tools for authoring
56
+ and validating specs, and MCP `instructions` returned on `initialize` so a
57
+ connecting agent is taught the SDD model (tree shape, authoring order, the
58
+ bound project's profile and packs, read-the-skill-first) instead of depending
59
+ on a human having briefed it. Packs append their platform delta to that text
60
+ via `instructions` in `pack.yaml`.
61
+ - **Shared context** (`.wai/context/`) — project description + auto-generated
62
+ domain map and AI guide.
63
+ - **Diagrams** (`wairon diagram`) — Mermaid component and L5-derived sequence
64
+ diagrams, an interactive canvas (Cytoscape.js, embedded, works offline) with
65
+ scoped navigation, narrative flowcharts and relation health, and editable
66
+ draw.io / Excalidraw exports.
67
+ - **Extension packs** (`wairon pack`) — profiles, language tables, rules,
68
+ patterns, variants and skills injected from outside; a machine pack store
69
+ with per-project selection, pinning, bundling and `pack sync` for CI, and
70
+ `pack impact` before every pack write.
71
+ - **Tooling** — `init`, `status`, `doctor` (health checks and upgrade
72
+ repairs), `wairon dev` (the web UI over a local project), self-update with
73
+ release channels, command aliases, multi-target exporters (Claude, Gemini /
74
+ Antigravity, custom), npm packages and standalone binaries.
75
+ - **Hosted server** (`wairon serve` / `wairon host`) — the `sdd_host` subsystem
76
+ serves the `sdd_*` tools over streamable HTTP for many fully-isolated projects,
77
+ each scoped per request to its authenticated project. Split data plane / admin
78
+ control plane; organization units and a permission grid; owner-bound API keys
79
+ and SSO; a state-scoped `lock` with approval requests; hosted members as
80
+ records of their own; git-backed projects; Notion / Miro producers; a web UI
81
+ (canvas, specs, admin). Self-host via Docker. See the
82
+ [hosted server guide](design/hosted-mcp-server.md).
83
+
84
+ ---
85
+
86
+ ## Planned
87
+
88
+ - **Conformance engine depth** — call-graph↔narrative conformance beyond the
89
+ current checks, event-topology completeness, and clearer remediation
90
+ messages. This is wairon's core differentiator.
91
+ - **Upgrade automation** — more of the mechanical rewrites `wairon doctor
92
+ --fix` leaves to an author today (for example language-flavoured result
93
+ types), and per-member repairs run from a family's top.
94
+ - **Derive specs from existing code** — bootstrap a draft spec tree from a repo
95
+ so teams can adopt conformance without greenfield modeling.
96
+ - **CI reporting** — conformance diffs between two revisions in PR checks (the
97
+ pass/fail gates, `validate --ci` and `lock-check`, ship today).
98
+ - **Org scale** — shared template libraries and cross-project standards.
99
+ - **Multi-Domain Architectural Profiles** — Support non-backend domains cleanly to prevent context waste. The engine integration is shipped (profiles resolve per subsystem, family fencing applies, extension packs register custom profiles with their own doctrine/severities/designDepth), but the depth of **builtin** doctrine varies by profile — labeled honestly below. Platform-specific doctrine is expected to arrive as extension packs (profile + rules + language table), not as core code.
100
+ - **Frontend Profiles** (`frontend-reactive` and `frontend-controller`) — *doctrine enforced today*:
101
+ - *Concept*: Enforces a strict separation of presentation views from reactive logic custom hooks or class controllers.
102
+ - *Stereotypes*: Introduces `View` blocks representing pure presenter elements (like React JSX, Vue templates, or Flutter StatelessWidgets).
103
+ - *Validation*: Views are strictly passive; they cannot depend on database Stores, Registries, or Adapters. They only receive properties and forward callbacks. `Actor`/`Supervisor` in a frontend subsystem draw a sanity warning. (The two frontend profiles currently share one doctrine; reactive-dataflow-specific checks are future work.)
104
+ - **PLC Cyclic Profile** (`plc-cyclic`) — *core doctrine enforced today*:
105
+ - *Concept*: Structures industrial control programs executing inside strict scan cycles (e.g., Structured Text, CODESYS, Beckhoff TwinCAT, Siemens S7).
106
+ - *Stereotypes*: `Portal` maps to external HMI/network interfaces, `Orchestrator` maps to cyclic sequence programs, and Function Blocks map to an Orchestrator with `dependencyClass: pure` or `read` over `Store` instance memory. `cyclic` lifecycle entrypoints root the scan loop.
107
+ - *Validation*: Strict single-threaded execution model — **forbids concurrent runtime blocks** (`Actor` and `Supervisor` stereotypes) because execution must complete deterministically inside a single scan cycle. (Narrative-level checks — e.g. flagging blocking loops without watchdogs — are *not* yet implemented.)
108
+ - **OS / Game ECS / Embedded Profiles** (`lowlevel-os`, `game-ecs`, `realtime-embedded`) — *blueprints: today these enforce only the backend-family fencing (frontend stereotypes are refused). The stereotype mappings below are modeling guidance for humans; the platform-specific validations described are NOT implemented in core.*
109
+ - **OS Profile** (`lowlevel-os`): Models OS kernel scheduling loops, thread tasks, virtual filesystem blocks, and hardware interfaces. `Supervisor` maps to the kernel scheduler, `Actor` represents thread contexts/tasks, `Adapter` represents device drivers/VFS layers, and `Store` represents process tables. Envisioned zero-cost target: spec boundaries as compile-time virtual boundaries in systems languages (C, Rust `no_std`).
110
+ - **Game Profile** (`game-ecs`): Structures Entity-Component-System simulation loops. `Store` represents the component array registries, `Orchestrator` represents systems (e.g. Physics, Collision), and `Observer` manages game event buses. Envisioned zero-cost target: boundaries compiling down to direct storage queries. (Note: the standard dependency matrix is profile-blind today and does not yet license the ECS system→Store idiom specially.)
111
+ - **Embedded Profile** (`realtime-embedded`): Structures real-time microcontroller firmware, hardware pin control, sensor loops, and actuator drivers. `Adapter` wraps physical pin/device register I/O, `Orchestrator` implements control loops (e.g., PID controls), and `Observer` captures hardware interrupt routines (`interrupt` lifecycle entrypoints root ISR flows). Envisioned validation: pin access strictly behind Adapters, static-memory narrative checks (banning dynamic heap allocation) — both unimplemented; ISR/memory/WCET annotations would ride the `ext:` data channel.
112
+
113
+ ---
114
+
115
+ ## Architectural invariants
116
+
117
+ | Invariant | Why |
118
+ |-----------|-----|
119
+ | **`.wai/` boundary** | All wairon state lives under `.wai/`; nothing is written elsewhere without explicit opt-in. |
120
+ | **No hidden server (by default)** | The core workflow runs on-demand; the stdio MCP server is a subprocess, not a daemon. `wairon serve` is an explicit, opt-in hosting daemon. |
121
+ | **No database** | All state is human-readable YAML/JSON. |
122
+ | **Works offline (core)** | The core workflow has no network requirement; `wairon serve` and update checks are opt-in. |
123
+ | **Specs are the source of truth** | Agents and conformance are derived from `.wai/specs/`; generated files are outputs. |
124
+ | **wairon equips, not orchestrates** | wairon does not run AI sessions — it produces subagents, skills, and MCP tools the host tool consumes. |
125
+
126
+ ---
127
+
128
+ ## History note
129
+
130
+ Earlier drafts explored a local AI orchestration hub (session spawning,
131
+ delegation, multi-model pipelines, git worktrees). That direction was retired in
132
+ favour of equipping the host AI tool's own native subagent mechanism. The
133
+ orchestration code has been removed; this roadmap supersedes those plans.
@@ -0,0 +1,23 @@
1
+ # Architecture Standards
2
+
3
+ The canonical, language-neutral definition of wairon's architecture model — the
4
+ building blocks, patterns, entity/behavior rules, spec-tree layout, and the rules a
5
+ conformant design must obey. The schema, validator, MCP tools, and SDD skills all
6
+ reconcile to this.
7
+
8
+ - [Architecture Standard](architecture.md) — the single source of truth:
9
+ - the two axes (containment vs refinement; folders vs files)
10
+ - the ten building blocks + dependency rules + default interfaces
11
+ - logic as Orchestrators, bounded by a dependency class (`pure`, `read`, or a workflow)
12
+ - the process layer (Supervisor trees, Actors, entity Actors, timers) and external I/O / emission (Adapter)
13
+ - object modeling: where behavior lives; composition over inheritance
14
+ - entities & types: defined once, scoped by ownership
15
+ - the Repository pattern (one aggregate: Store, Registry, Indexes, Queries), the built-in variants (the `gateway` Portal variant among them), and the retired Specialist and Gateway stereotypes
16
+ - `owns` vs `dependsOn`, the visibility rule, ownership-leaf vs dependency-sink
17
+ - composition & layering (no nesting; promote to L1)
18
+ - implementation/concurrency strategy and transactions (language-neutral)
19
+ - spec-driven diagram generation
20
+ - a worked example: a live auction
21
+ - [Language Bindings](language-bindings.md) — how the neutral strategies map to
22
+ concrete primitives (Rust, Go, Java, C#, TypeScript, Python), and an Orchestrator
23
+ as a class or a module of functions.