Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
f290d5d
Add component-based energy system design spec
cayossarian Mar 28, 2026
42b2e71
Add component-based energy system implementation plan
cayossarian Mar 28, 2026
56c3f65
Add energy system types module with core dataclasses
cayossarian Mar 28, 2026
644689e
Add GridMeter and LoadGroup energy components
cayossarian Mar 28, 2026
2b45210
Add BESSUnit component with GFE discharge throttling
cayossarian Mar 28, 2026
62da60a
Add BESSUnit charge, SOE integration, and hybrid PV tests
cayossarian Mar 28, 2026
cf07d64
Add PanelBus with role-ordered resolution and conservation checks
cayossarian Mar 28, 2026
f1aaa78
Add EnergySystem with from_config factory and full scenario tests
cayossarian Mar 28, 2026
1813d1b
Wire EnergySystem construction into engine initialization
cayossarian Mar 28, 2026
a09cd4c
Use EnergySystem for power flow resolution in get_snapshot()
cayossarian Mar 28, 2026
0c5bf28
Use EnergySystem in power summary and modeling data
cayossarian Mar 28, 2026
181fc60
Remove old energy balance fallback paths from engine
cayossarian Mar 28, 2026
f0939a5
Remove dead code from energy system migration
cayossarian Mar 28, 2026
d71cd1a
Remove BSEE class — identity and grid state absorbed into BESSUnit
cayossarian Mar 28, 2026
435494f
Fix modeling baseline: exclude user-added circuits from Before pass
cayossarian Mar 29, 2026
97d6c37
Refactor modeling pass: separate data collection from energy balance
cayossarian Mar 29, 2026
4bf8a73
BESS operates at full inverter rate like a real system
cayossarian Mar 29, 2026
4581811
Replace BESS charge modes with real-world operation modes
cayossarian Mar 29, 2026
526251b
Always show imported/exported breakdown in modeling labels
cayossarian Mar 29, 2026
e9f6ddb
Hide non-applicable fields from battery entity editor
cayossarian Mar 29, 2026
2939689
Add 1.0.7 changelog
cayossarian Mar 29, 2026
f30086d
Fix page-level busy cursor for slow dashboard operations
cayossarian Mar 29, 2026
4284305
bump version to 1.0.7
cayossarian Mar 29, 2026
a2eff11
Add PV curtailment for islanded operation and fix energy system bugs
cayossarian Mar 29, 2026
bb0179a
update uv.lock
cayossarian Mar 29, 2026
ebe545d
Add clone overwrite protection and fix PV curtailment snapshots
cayossarian Mar 29, 2026
0298907
Add ToU rate integration design spec
cayossarian Mar 29, 2026
8fc6594
Add per-chart energy summary tables and fix sparse-tick SOE integration
cayossarian Mar 29, 2026
9960c01
Add ToU rate integration implementation plan
cayossarian Mar 29, 2026
83c675f
Add rates package with core types for URDB integration
cayossarian Mar 29, 2026
409fcf7
Add rate resolver for URDB schedule matrix lookup
cayossarian Mar 29, 2026
c422a6e
Add cost engine for hourly power-to-cost calculation
cayossarian Mar 29, 2026
a9e8022
Exclude only BESS circuit from load power, not all bidirectional circ…
cayossarian Mar 29, 2026
579b7b4
Fix modeling difference to use imported energy, not net
cayossarian Mar 29, 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
30 changes: 30 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Simulator — Agent Rules

Rules in this file apply to all AI coding agents working in this repository.

## Energy System Encapsulation

The `span_panel_simulator.energy` package is the **sole authority** for all
energy and power-flow calculations. This boundary was deliberately established
to replace scattered inline logic and must not be eroded.

**Rules:**

- The engine (`engine.py`) provides **raw measurements** to the energy module
(PV power, load power, grid status). It must never pre-compute, resolve, or
override energy scheduling, dispatch, or balance decisions.
- `PowerInputs` carries only observable state — never derived energy decisions
like BESS scheduled state.
- All BESS scheduling (charge mode logic, TOU hour resolution, islanding
overrides, forced-offline behavior) lives inside `EnergySystem.tick()` and
`BESSUnit`. The engine must not call `resolve_scheduled_state()` or read
`effective_state` to feed back into inputs.
- PV curtailment, GFE throttling, SOE enforcement, and bus balancing are
energy-module concerns. The engine consumes `SystemState` results — it does
not participate in producing them.
- New energy behaviors (e.g. demand response, rate optimization) must be added
inside the energy package, not grafted onto the engine.

**Test discipline:** Tests drive BESS behavior through `BESSConfig`
(charge_mode, charge_hours, discharge_hours), not by injecting state into
`PowerInputs`.
4 changes: 4 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Simulator — Claude Rules

All agent-wide rules are in [AGENTS.md](AGENTS.md). This file is for
Claude-specific configuration only.
Loading
Loading