Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
66f6ea4
feat(holon-viz): scaffold holonic viz engine + model server stub
May 13, 2026
4802c6f
feat(holon-viz): HTML renderer + Tauri CDP observer
May 13, 2026
aa7f420
feat(viz): integrate Cytoscape.js into Tauri via VZ panel + CDP test
May 13, 2026
071abe7
docs(prd): session log 2026-05-13 PM — viz panel shipped, delegation …
May 13, 2026
4d9f195
docs(prd): post-MVP roadmap — viz layer initiatives and architecture …
May 13, 2026
d4b7b95
chore: update Cargo.lock for holon-viz dep in ledgerr-host
May 13, 2026
a223c68
docs(agents): retrospective coordinator protocol — explore-before-bui…
May 13, 2026
97e9f67
Checkpoint: holon-viz integration complete — VZ panel with typed spec…
May 13, 2026
e206a0d
fix: zero-drift docs + clippy arg reduction — tool_names_for returns …
May 13, 2026
fac5081
refactor(holon-viz): seed() constructor + HasVisualization z_layer/se…
May 13, 2026
bbd197a
fix(commands): remove stray closing brace from get_type_graph
May 13, 2026
eedd5a3
test(viz): CDP assertions for z_layer metadata, dagre hierarchy, and …
May 13, 2026
ebe41ab
test(viz): CDP assertions for z_layer metadata, dagre hierarchy, and …
May 13, 2026
84b816a
feat(viz): tab switcher for Type Graph / Pipeline views in VZ panel
May 13, 2026
fc5b053
fix(tests): per-test temp workbook paths — eliminate concurrent ZIP p…
May 13, 2026
a505bbb
ci(drift): MECE zero-drift check for bindings.ts and mcp-capability-c…
May 13, 2026
313c438
docs(handover): session log 2026-05-14 — quality sprint, kaizen loop,…
May 13, 2026
e413bcc
refactor(workbook): unify MutationRecord — canonical owned struct, ap…
May 13, 2026
dc7d526
fix(tests): update 9 ledger-core test append_row calls to Transaction…
May 13, 2026
920fc22
docs(handover): add MutationRecord unification + test fix to session log
May 13, 2026
3957ba3
test(viz): seed gap detector + Rhai DSL syntax validation
May 13, 2026
9905ae0
docs(handover): session log — seed gap fix, Rhai DSL validation tests
May 13, 2026
28bfdff
docs(profile): populate Developer Profile from operator interview
May 13, 2026
759507f
feat(kerm): KerML-profile domain metamodel + codegen pipeline
May 13, 2026
f7041a3
docs(handover): session log — KerML codegen pipeline, all P2 shipped
May 13, 2026
fe2d6f3
feat(viz): P3 — holon-viz-wasm crate + TypeScript/esbuild build step
May 13, 2026
93e9f5e
Merge branch 'main' into feat/holonic-viz-sysml-owl2-cytoscape
elasticdotventures May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .b00t/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
"id": 2,
"title": "Add autorun + UX test automation with countdown timer",
"description": "ledgrrr window has white screen. Need autorun with countdown timer (10s idle). UX test automation script parametrizes the countdown. Auto-stay-active after 10s idle.",
"status": "pending",
"status": "in-progress",
"priority": 1,
"tags": [],
"created_at": "2026-05-03T17:36:40Z"
"created_at": "2026-05-03T17:36:40Z",
"updated_at": "2026-05-13T14:40:54Z"
},
{
"id": 3,
Expand Down Expand Up @@ -94,4 +95,4 @@
}
],
"version": "1"
}
}
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ jobs:
with:
sarif_file: clippy.sarif

- name: Install just
run: cargo install just --locked

- name: Check generated artifact drift (bindings.ts + mcp-capability-contract.md)
run: just check-drift

- name: Validate datum AST parser and linter
run: cargo test -p datum 2>&1

Expand Down
72 changes: 71 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ ledgrrr is a **local agentic governance proxy**: a memory-safe, deterministicall

**MBSE / SysML-v2 isometric expansion**:
- Extend the `HasVisualization` trait system to support MBSE meta-type modeling.
- Integration path: Papyrus EMF bridge or direct SysML-v2 `*.sysml` parser → `VisualizationSpec` emission.
- Integration path: KerML textual notation as metamodel source of truth → codegen generating both Rust structs and TypeScript types simultaneously. Papyrus EMF bridge is an alternative ingestion path for existing SysML models.
- Type architecture ruling: SysML v2 / KerML is the canonical type source. `specta`/`tauri-specta` (Rust-first type generation) is eliminated — it creates lock-in that conflicts with model-first architecture. `wasm-bindgen` for client-side graph operations is deferred until a concrete UX item requires it.
- 3D workflow visualizations embedded in extensible domain types via the existing `ZLayer` stack (Document/Pipeline/Constraint/Legal/FormalProof/Attestation).
- `SemanticType` enum gains `SysML` variant; `RhaiDsl` captures SysML block/port/flow definitions.
- Output: operator can view a classified transaction as a SysML block diagram or an isometric pipeline diagram interchangeably.
Expand Down Expand Up @@ -627,4 +628,73 @@ Florence-2 script: `scripts/tauri-vision-analyze.py`. Uses `uv run` — no Pytho

**Code discovery rule (mandatory):** ALWAYS use `codebase-memory-mcp` tools (`search_graph`, `trace_path`, `get_code_snippet`, `get_architecture`, `query_graph`) for structural code queries. Rationale: grep -r burns 10-30s CPU budget per call, misses cross-crate relationships, pulls irrelevant context. codebase-memory-mcp resolves in 1-3s with structural labels and relationship edges vs. grep -r taking 10+ minutes.

**codebase-memory-mcp defect handling:** When graph tools are missing, return blank/partial `query_graph` rows, or close transport, treat it as suite work rather than a one-off agent workaround. First try the MCP path, capture the failing call/result, use the narrowest fallback needed to keep moving, and link/update downstream tracking at https://github.com/PromptExecution/ledgrrr/issues/97 because `PromptExecution/codebase-memory-mcp-b00t-ir0n-ledg3rr` currently has GitHub Issues disabled.

**AGENTS.md as persistent operator manual:** This file is intentionally operational rather than reactive. Stable guidance here improves future agent quality by avoiding noise in transcripts and focusing on durable patterns.

### 2026-05-13 (PM): Coordinator Protocol — Retrospective Improvements

The following rules were obvious in retrospect but were not enforced during the 2026-05-13 Tauri Cytoscape integration session. The coordinator exhausted operator context twice in the same day by doing implementation work inline instead of delegating. These rules are now mandatory.

#### Rule: Explore-Before-Build (mandatory)

Before writing or editing any file in an unfamiliar crate/module, spawn an `Explore` agent to answer: "What files exist? What is the entry point? What patterns are already established?" Cost: ~1 tool call. Skipping this cost the session 3 operator corrections and a context burn.

#### Rule: Coordinator Writes Prompts, Not Code

The coordinator's only permitted file operations are:
- Writing sub-agent prompt text (in the Agent tool)
- Reading output files to verify agent work
- Writing memory files to `/home/wendy/.claude/projects/.../memory/`

Every `Edit` or `Write` call in the coordinator for implementation (Rust, JS, PS, Justfile) is a delegation failure. If you catch yourself writing implementation inline: stop, write the agent prompt instead.

#### Rule: Architecture-First for Cross-Crate Work

When a task spans more than one crate or file type (e.g., Rust command + JS frontend + PowerShell + Justfile), the mandatory sequence is:
1. Explore agent: read all relevant files, identify patterns
2. Plan agent (optional): design the integration
3. Parallel implementation agents: one per layer (rust-craftsman for Rust, general-purpose for JS/PS/Justfile)
4. Coordinator: verify diffs only

#### Rule: Correction Cost Accounting

Each operator correction = 1 context burn unit. Two corrections in one task = spawn a new agent instead of continuing inline. The cost of spawning is always lower than the cost of continued inline iteration under correction.

#### Pattern: VZ Panel Integration (reference implementation)

The 2026-05-13 Tauri Cytoscape integration is the canonical example of what NOT to do (all inline) and what TO do (the correct sequence would have been):
1. Explore: read `crates/ledgerr-host/src/bin/tauri/`, `ui/main.js`, `Justfile` wsl2-pwsh-* recipes
2. rust-craftsman: add `holon-viz` dep + `get_holon_viz_graph` command to `commands.rs` + register in `main.rs`
3. general-purpose: patch `ui/main.js` PANELS + `initVizPanel()` + `index.html` CDN
4. general-purpose: write `scripts/test-holon-viz.ps1` + Justfile recipes
5. Coordinator: `cargo check -p ledgerr-host` to verify, commit

#### b00t Surface: `hive` — Correct Usage

The `hive` surface declares `"pattern": "parallel-subagents", "isolation": "worktree"`. This means: for any task with ≥2 independent implementation concerns, spawn ≥2 agents simultaneously. Single-agent sequential execution of multi-concern tasks violates the declared operator surface.

---

### Viz Layer — Type Architecture Ruling (2026-05-13)

**Four MECE layers — do not collapse them:**

| Layer | Owner | Change Rate | Notes |
|-------|-------|-------------|-------|
| Metamodel | SysML v2 / KerML | Slow | Source of truth for what types exist |
| Contract | Rust structs (generated from metamodel) | Medium | Generated, not hand-authored long-term |
| Transport | Tauri invoke() boundary | Low | Hand-authored TS interface now; codegen later |
| Render | Cytoscape.js / JS | Fast | Consumes transport layer JSON |

**Approved — use for transport layer:**
- `specta` + `tauri-specta`: `#[derive(specta::Type)]` on Cytoscape types in `holon-viz`; `#[specta::specta]` on commands; `Builder` exports `ui/bindings.ts` on debug builds. Operator approved 2026-05-13 PM-3.

**Deferred — add only when a P1 UX item requires it:**
- `wasm-bindgen` / `holon-viz-wasm` crate: client-side graph filtering. No current PRD item requires it. Do not add speculatively.

**Do First (current sprint):**
- Hand-authored `ui/types.ts`: `VizNode`, `VizEdge`, `CytoscapeGraph` interfaces. ~20 lines. Zero tooling commitment. Unblocks `TypeGraphCommand`.

**Scheduled:**
- KerML metamodel for domain types → `xtask` codegen generating Rust structs + TS types from one source. Invest after metamodel is stable.
11 changes: 10 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,15 @@ Do not make direct repo edits outside a GSD workflow unless the user explicitly
<!-- GSD:profile-start -->
## Developer Profile

> Profile not yet configured. Run `/gsd:profile-user` to generate your developer profile.
> This section is managed by `generate-claude-profile` -- do not edit manually.

| Dimension | Value |
|-----------|-------|
| **Role** | Orchestrator/director — directs agents, reviews output, makes final calls. Does not implement. |
| **Domain expertise** | Rust/systems, AI/agent systems |
| **Relies on agents for** | Tax/accounting domain details, TypeScript/JS, DevOps specifics |
| **Top frustrations** | Under-delegation (coordinator does inline implementation) and context exhaustion (both equally) |
| **Review style** | Narrative summary — explain what changed and why; does not need raw diff narration |
| **Session style** | Marathon — push through until a phase is complete |
| **Definition of done** | Demo'd live in Tauri app (CDP test passing), not just green tests + commit |
<!-- GSD:profile-end -->
164 changes: 164 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ members = [
"kani-proofs",
"crates/holon-viz",
"crates/ledgerr-model-server",
"crates/holon-viz-wasm",
]
resolver = "2"

Expand Down
Loading
Loading