Skip to content

Add Claude.MD - #3

Merged
marota merged 2 commits into
claude/grid-zoom-scaling-UpSPyfrom
main
Feb 15, 2026
Merged

marota merged 2 commits into
claude/grid-zoom-scaling-UpSPyfrom
main

Conversation

@marota

@marota marota commented Feb 15, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

claude and others added 2 commits February 14, 2026 19:23
Document the codebase structure, tech stack, development workflows,
API endpoints, key patterns, and conventions for AI assistants
working with this power grid contingency analysis application.

https://claude.ai/code/session_01Y9w9cky5CKAqLnfXneCpon
…VU4j

Add CLAUDE.md documentation for ExpertAssist project
@marota
marota merged commit c5e3a31 into claude/grid-zoom-scaling-UpSPy Feb 15, 2026
marota pushed a commit that referenced this pull request May 2, 2026
Adds two layers of regression guards covering all five
recommendations from `docs/proposals/ui-design-critique.md`:

1. Seven new static invariants in `scripts/check_invariants.py`
   (Layer 4):
   - notices_panel_in_sidebar — AppSidebar mounts <NoticesPanel>
   - action_feed_no_dismissable_warning_state — ActionFeed lost
     setShowActionDictWarning / setShowRecommenderWarning
   - overload_panel_uses_monitoring_hint — OverloadPanel exposes
     `monitoringHint`, not the legacy banner props
   - diagram_legend_on_each_diagram_tab — VisualizationPanel wires
     <DiagramLegend tabId="n|n-1|action">
   - nad_overload_halo_capped_at_zoom — App.css caps overload halo
     stroke at 24px on detail-zoom via vector-effect: non-scaling-
     stroke
   - design_token_gate_blocks_inline_hex — FRONTEND_HEX_LITERAL_MAX
     stays at 0
   - action_card_progressive_disclosure_gated_by_isViewing —
     ActionCard renders the disclosure subtree under {isViewing &&

   Total: 10 → 17 invariants. All green.

2. New `frontend/src/uxConsistency.test.tsx` (19 specs) — runtime
   contract checks rendering the real components rather than
   mocks. One describe block per recommendation:
   - #1 design tokens: scans inline `style` attributes for raw hex
     literals and asserts none leak from OverloadPanel / AppSidebar
   - #2 progressive disclosure: ActionCard at-rest hides the
     disclosure subtree; isViewing=true reveals it
   - #3 halo cap: re-asserts the App.css rule (cheaper feedback
     loop than the static script)
   - #4 warning tier: OverloadPanel without monitoringHint shows
     no inline yellow banner; ActionFeed at default state has no
     warning-styled descendant; AppSidebar surfaces the
     <NoticesPanel> pill iff notices.length > 0
   - #5 diagram legend: each tab in VisualizationPanel mounts a
     legend pill when its SVG is loaded, omits it when absent
   - source-text invariants: cross-checks the file-level
     contracts so a refactor that drops a recommendation fails
     this file too

   1182 → 1201 specs. All passing; ESLint clean; code-quality
   gate clean.

https://claude.ai/code/session_01EYXsLY6hKRncRxj3KTHERk
marota pushed a commit that referenced this pull request Jun 18, 2026
Target #3 from the code-quality review.

- Annotate the 26 void backend functions with `-> None` (libcst codemod;
  mypy verifies each — still 0 errors). Missing-return count 112 → 86.
- Reporter: new `functions_annotatable` / `functions_missing_return`
  metrics + a return-annotation coverage line (now 339/425 = 80%).
- Gate: ratchet missing-return at 86 — new functions must be annotated,
  and mypy gates that the annotation is correct. The 80 value-returning
  + 6 generator functions are the documented ratchet-down target.

https://claude.ai/code/session_0185GQf52QDpMM4zRDmGVN8X
marota pushed a commit that referenced this pull request Jun 18, 2026
Persists the measured scorecard and the outcomes of targets #1/#2/#3/#5/#6
(and the deliberate #4 deferral) in the analysis doc, and bumps the
"Last updated" header.

https://claude.ai/code/session_0185GQf52QDpMM4zRDmGVN8X
marota pushed a commit that referenced this pull request Jun 18, 2026
Continues the §19 #3 ratchet-down with concrete, mypy-verified types:
- Conservative AST codemod for shape-clear returns (6 tuple, 4
  generators → Iterator[Any], 2 dict; widened to `| None` on bare-return
  paths).
- Hand-built pass for unambiguous literal returns (network_service
  list/dict getters, deltas._signed → float, _load_layout_coords → dict,
  is_renewable predicates → bool).

Tried infer-types but reverted it: 75 annotations but 37 mypy errors
(wrong `-> None`, over-broad unions breaking unpacking) and untrustworthy
"passing" ones. Conservative route is correct-by-construction.

Stops at 60 deliberately: the rest delegate to untyped pypowsybl /
recommender helpers (honest type Any). Padding `-> Any` would game the
coverage metric without mypy verifying anything; the real path is typing
the helpers bottom-up. mypy 0, ruff clean, offline suite byte-identical
(624 passed). See §21.

https://claude.ai/code/session_0185GQf52QDpMM4zRDmGVN8X
marota pushed a commit that referenced this pull request Jul 3, 2026
PR #3 targets the `claude/sld-voltage-navigation-mypy-1zm3om` working
branch, but the Code Quality / Tests / Parity workflows only fired on
`pull_request` events whose base was `main`, so no CI ran for it. Broaden
each `pull_request` trigger to `branches: ['**']` so CI runs on PRs
targeting any branch. `push` stays restricted to main, and the
HuggingFace deploy workflow is left untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
marota pushed a commit that referenced this pull request Jul 3, 2026
Empty commit to fire a pull_request synchronize event now that repo-level
GitHub Actions is enabled, so Code Quality / Tests / Parity run on PR #3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
marota pushed a commit that referenced this pull request Jul 3, 2026
A pull_request whose base is not `main` is matched against the base
branch's own trigger (still main-only), so broadening the head branch's
pull_request filter alone did not fire CI for PR #3. Add the `claude/**`
working branches to the push trigger so pushes to this branch get
commit-level checks that surface on the PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
marota pushed a commit that referenced this pull request Jul 3, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
marota pushed a commit that referenced this pull request Jul 3, 2026
The pull_request `branches: ['**']` change (read from the PR head
branch's workflow) is confirmed to trigger CI for PR #3, so the
`claude/**` push trigger is no longer needed and only produced
duplicate runs. Restore push to `main`-only; keep the broadened
pull_request filter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
marota added a commit that referenced this pull request Jul 3, 2026
…xht90

Wrap long feeder names at substation extremities (Issue 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants