Skip to content

Commit bea0dd7

Browse files
Merge pull request #1 from TerminallyLazy/codex/orchestration-ux-runtime-evidence
Expose runtime evidence in orchestration UI
2 parents a4f8f97 + 254ca52 commit bea0dd7

19 files changed

Lines changed: 1554 additions & 120 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@ src-tauri/target/
55
.env
66
.env.*
77
*.log
8+
.symphony-agent-stdin-*.txt
9+
.symphony-agent-stderr-*.log
810
symphony_elixir/_build/
911
symphony_elixir/deps/
12+
symphony_elixir/agent_profiles.json
13+
symphony_elixir/misconduct_workspaces/
1014
symphony_elixir/symphony_workspaces/
1115
symphony_elixir/erl_crash.dump
1216
src-tauri/resources/symphony_backend/*

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Download packaged builds from GitHub Releases:
88

99
https://github.com/TerminallyLazy/MISCONDUCT/releases/latest
1010

11-
Current app metadata in this checkout is `0.1.19`. The public latest release page
11+
Current app metadata in this checkout is `0.1.20`. The public latest release page
1212
is updated by pushing the matching release tag and letting the desktop workflow
1313
publish the new artifacts.
1414

@@ -33,6 +33,19 @@ cd symphony_elixir
3333
mix test
3434
```
3535

36+
## Orchestration observability
37+
38+
Movements now carry runtime evidence from intake through conductor, builder, judge,
39+
refiner, and finale phases. The desktop app shows the target workspace, expected
40+
evidence, file focus, changed files from git status, runner command spans, score
41+
artifacts, judge verdict artifacts, and the latest evidence refresh time on each
42+
movement card and ledger view.
43+
44+
The stage remains orchestra-themed, but it is backed by a plain movement pipeline:
45+
musicians are assigned agent profiles, cue lines are active phase routing, notes
46+
are runner events, and evidence panels show whether agents actually touched files
47+
or produced artifacts.
48+
3649
## Codex auth model
3750

3851
MISCONDUCT uses the Codex CLI as the OAuth/session owner for ChatGPT/Codex Pro. The app exposes sanitized status and login/check/logout controls; it does not ask users to paste OAuth tokens.

RELEASE_WORKFLOW_NOTE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ It builds:
88
- Windows x86_64 NSIS installer
99
- Linux x86_64 AppImage/DEB
1010

11-
Push a release tag such as `v0.1.19` or run the workflow manually from GitHub Actions to produce MISCONDUCT release artifacts.
11+
Push a release tag such as `v0.1.20` or run the workflow manually from GitHub Actions to produce MISCONDUCT release artifacts.
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# MISCONDUCT Orchestration UX Reset - Design Spec
2+
3+
## Problem
4+
5+
MISCONDUCT currently presents an orchestra stage before proving that orchestration is real. Operators can see movements, roles, cue lines, and agent-like labels, but they cannot quickly answer the operational questions that matter:
6+
7+
- Which agents are actually working?
8+
- What exact phase is active?
9+
- Did an agent run tools or commands?
10+
- Did it touch files?
11+
- Where are the score, verdict, and final evidence artifacts?
12+
- What should the operator do next?
13+
14+
The result is a decorative control surface that forces the operator to infer truth from animation and raw ledger events.
15+
16+
## Design Principle
17+
18+
Every orchestra visual must map to a runtime fact. If MISCONDUCT cannot prove the fact, the UI must say that explicitly instead of implying work happened.
19+
20+
## Target Experience
21+
22+
### 1. Evidence-First Movement Selection
23+
24+
When an operator selects a movement, the first visible surface should be a runtime brief:
25+
26+
- phase and status
27+
- assigned agent
28+
- workspace/repository path
29+
- score/verdict artifact paths
30+
- changed file count
31+
- command/tool span count
32+
- latest actionable message
33+
34+
The existing score/staff art can remain, but evidence must outrank decoration.
35+
36+
### 2. Movement War Room
37+
38+
The movement ledger should read as a chronological conversation and evidence thread:
39+
40+
- Operator actions
41+
- Conductor/Builder/Judge/Refiner handoffs
42+
- runner session start/failure/completion
43+
- command/tool outputs
44+
- generated artifacts
45+
- file-change snapshots
46+
47+
Raw debug JSON remains available, but it is not the primary view.
48+
49+
### 3. Plain Pipeline Mode
50+
51+
The app needs a non-metaphorical operations view alongside the stage:
52+
53+
- one row per movement
54+
- explicit phase chain: Conductor, Builder, Judge, Refiner, Finale
55+
- current status
56+
- workspace
57+
- changed files
58+
- tool/command spans
59+
- evidence health
60+
61+
This gives operators a trustable fallback when the stage metaphor is not enough.
62+
63+
### 4. Guided Score Builder
64+
65+
Movement creation should ask for the inputs the runtime needs:
66+
67+
- movement title
68+
- target directory/repo
69+
- objective/notes
70+
- expected evidence
71+
- validation commands
72+
- optional file focus
73+
74+
The submitted movement brief should preserve those fields so Builder/Judge/Refiner prompts have concrete expectations.
75+
76+
### 5. Agent Roster Truth
77+
78+
The roster must clearly separate:
79+
80+
- configured profiles
81+
- live assigned profiles
82+
- idle profiles
83+
- unavailable/disabled profiles
84+
85+
Adding a roster member means creating or enabling a profile. It does not imply a live process unless a movement is assigned to it.
86+
87+
## Runtime Evidence Contract
88+
89+
Each movement card should expose a `runtime_evidence` object:
90+
91+
```json
92+
{
93+
"workspace_path": "/repo-or-managed-workspace",
94+
"score_path": "/repo/.symphony/conductor-score.md",
95+
"verdict_path": "/repo/.symphony/judge-verdict.json",
96+
"changed_files": ["src/main.tsx"],
97+
"command_spans": [
98+
{
99+
"phase": "build",
100+
"agent": "Codex Builder",
101+
"kind": "runner",
102+
"label": "codex exec",
103+
"status": "completed",
104+
"message": "Turn completed",
105+
"at": "2026-06-11T00:00:00Z"
106+
}
107+
],
108+
"artifact_paths": [
109+
"/repo/.symphony/conductor-score.md",
110+
"/repo/.symphony/judge-verdict.json"
111+
],
112+
"last_checked_at": "2026-06-11T00:00:00Z"
113+
}
114+
```
115+
116+
The first implementation does not need deep shell tracing. It must at least derive evidence from existing runner events, score/verdict artifacts, and git file status in the workspace.
117+
118+
## Implementation Slices
119+
120+
1. Backend evidence model
121+
- Add `runtime_evidence` to `Symphony.Run`.
122+
- Capture artifact paths and git changed files at phase completion, failure, retry, and final completion.
123+
- Convert existing agent events into lightweight command spans.
124+
- Include evidence in running, retrying, and completed cards.
125+
126+
2. Movement intake shape
127+
- Add optional `expected_evidence`, `validation_commands`, and `file_focus` fields to manual movements.
128+
- Include them in movement descriptions/prompts using readable labels.
129+
130+
3. Frontend evidence surfaces
131+
- Parse `runtime_evidence`.
132+
- Add an evidence summary to selected movement plan.
133+
- Add an evidence panel in the ledger tab.
134+
- Add a plain pipeline view in the main console.
135+
- Replace ambiguous “cue dash” messaging with a small legend that states what is runtime-backed.
136+
137+
4. Documentation and release
138+
- Add implementation spec.
139+
- Update README/release notes/version.
140+
- Verify backend tests, frontend build, Tauri check, local package, and GitHub release assets.
141+
142+
## Non-Goals
143+
144+
- Do not build a full Munder-Difflin clone in this slice.
145+
- Do not introduce a separate long-running worker pool yet.
146+
- Do not require Agent Zero.
147+
- Do not rename internal `Symphony` modules.
148+
- Do not remove the stage. Make it secondary to evidence and pipeline truth.
149+
150+
## Acceptance Criteria
151+
152+
- A movement card can show changed files and artifact paths without opening debug JSON.
153+
- A movement can show command/runner spans derived from live orchestration events.
154+
- The operator can create a movement with expected evidence and validation commands.
155+
- The console includes a non-metaphorical pipeline view.
156+
- The stage includes a clear runtime legend explaining what is evidence-backed.
157+
- Backend and frontend tests/builds pass.
158+
- Desktop release artifacts are published for the new version.

0 commit comments

Comments
 (0)