Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions CLAUDE.md → AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ dotnet format SemiPlot.slnx # pre-commit hook enforces this

`dotnet run` on the viewer needs all three launch keys — `--config-dir`, `--log-file` and
`--logging-level` — and none has a default; a missing or bad one opens the failure window and exits
1. The run reads a copy of the tracked set, never the tracked set itself: `readme.md` holds the
copy recipe that produces `SemiPlot/Artifacts/dev-config`, which is also where the `.zed/` and `.run/`
1. The run reads a copy of the tracked set, never the tracked set itself: the first two lines of the
`converge` example below produce `SemiPlot/Artifacts/dev-config`, which is also where the `.zed/` and `.run/`
launchers point `--config-dir`, and the password is then filled in the viewer's `Edit` -> `Settings`.

Configuration is a tree of section folders under `--config-dir`: `app/` and `connection/`. Every
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ private static IReadOnlyList<ArchiveRow> SeededRows()

// The nth Connected is the nth subscription's armed point, and NoFaultWasSeen is what makes that an
// asserted precondition instead of an assumption. The waiters run their continuations asynchronously
// (CLAUDE.md, "An xunit v3 test project is an executable").
// (AGENTS.md, "An xunit v3 test project is an executable").
private sealed class ArmedGate : IDisposable
{
private readonly List<ArchiveConnectionState> _states = [];
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SemiPlot Architecture

Machine-readable architecture docs (English). These describe the stable design, not the
decision process. For build/test/style conventions see the root `CLAUDE.md`; for
decision process. For build/test/style conventions see the root `AGENTS.md`; for
implementation plans see `docs/plans/`.

## Documents
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/bench.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ The launchers that start the viewer alone - `.run/Debug.run.xml` and the `.zed/`
entries - point `--config-dir` at `SemiPlot/Artifacts/dev-config` through `$PROJECT_DIR$` and
`$ZED_WORKTREE_ROOT`, never at the stand's copy: `%TEMP%\SemiPlot\ConfigFiles` exists only while the
stand runs, and the stand has already started its own viewer against it. The developer creates that
directory once from `ConfigFiles/`, as `readme.md` and `CLAUDE.md` spell out; `SemiPlot/Artifacts/`
directory once from `ConfigFiles/`, as `AGENTS.md` spells out; `SemiPlot/Artifacts/`
is gitignored, so the password filled in there stays out of the repository.

## The headless render and input guards
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/charting.md
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ models, backed by renderer-agnostic models in `SemiPlot.Core`. Responsibilities:
and `RestoreInitialScale` on the chart, and the submenu header that names the drawn pen; the window's
code-behind owns the three view-side requests (close, About dialog, settings dialog).
- `MainWindow/AppMenuBar` — the File / Edit / View / Help menu. Each checkable item reads its flag
`Mode=OneWay` and writes it only through the command it invokes (`CLAUDE.md`, UI).
`Mode=OneWay` and writes it only through the command it invokes (`AGENTS.md`, UI).
- `MainWindow/AppStatusBar` + `AppStatusBarViewModel` — current connection state and the active
aggregation layer, named from resx. Built by `TrendWindow` over the coordinator's connection stream and
the chart's navigation, and writes the fault and recovery entries (`data-integration.md`).
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/data-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ settings columns and no `INSERT` or `DELETE` on `semiplot_tags` (`postgres-insta
The read interface stays read-only because the chart consumes it. A write member on `IDataProvider`
would put a write in reach of every chart consumer; with the write path apart, `Chart/` and `Legend/`
never name `IPenCatalogueEditor`, `IDataProvider` carries no `Insert`, `Update`, `Write` or `Save`, and
two greps in `CLAUDE.md` hold both. An axis the operator rescales stays a session edit (`charting.md`).
two greps in `AGENTS.md` hold both. An axis the operator rescales stays a session edit (`charting.md`).

`PostgresPenCatalogueEditor` in `SemiPlot.DataSource.Postgres` is the only implementation.
`AddPostgresData()` registers it by factory beside `IDataProvider`, over the same `NpgsqlDataSource`
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ and the handler on `RxState`.
The same ordering forces the one static read this tree allows. The handler is taken before any
window exists, so it cannot be given a panel by constructor injection; `App.ResolveMessagePanel`
reads that field of `Application.Current`.
That is the declared exception to the constructor-injection rule in `CLAUDE.md`, and it covers this
That is the declared exception to the constructor-injection rule in `AGENTS.md`, and it covers this
one method: nothing else may resolve a service through a static.

## Data flow
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/testing-strategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ scheduler. The view subscribes to `RedrawRequested`, and each redraw request sch
33 ms ahead. `ImmediateScheduler` runs it inline after sleeping 33 ms on the calling thread, so every
redraw blocks the dispatcher and paints inside the call that asked for it, which production never does.
The schedule is one-shot, so nothing hangs; the hangs belong to `PenCatalogueSync`'s wait loop and the
minimap band's next-read schedule (`CLAUDE.md`, Test). Two schedulers work in its place.
minimap band's next-read schedule (`AGENTS.md`, Test). Two schedulers work in its place.

| Scheduler | When | Cost |
| --- | --- | --- |
Expand Down
Binary file added docs/img/main-window.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/pens-and-groups.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/two-windows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/plans/backlog.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Paths are under `SemiPlot/SemiPlot.UI/` unless they name another project.

- **~~Test unification (with the Avalonia 12 bump).~~ Resolved.** Avalonia is on 12.0.5 and all three test
projects target xunit v3. `SemiPlot.Core.Tests` no longer exists; the suites are now split by dependency
graph and skip policy rather than by framework, which `CLAUDE.md` states.
graph and skip policy rather than by framework, which `AGENTS.md` states.

## Test harness and the demo bench

Expand Down
Loading
Loading