Skip to content

feat(project): add ECC-FE project management and QoR - #214

Open
Luyoung0001 wants to merge 34 commits into
mainfrom
feat/ecc-fe-project-management
Open

Luyoung0001 wants to merge 34 commits into
mainfrom
feat/ecc-fe-project-management

Conversation

@Luyoung0001

Copy link
Copy Markdown
Member

Summary

Add first-class Project Management support for ECC-FE projects while keeping the existing backend project path behaviorally isolated.

This pull request:

  • extends the project manifest and lifecycle contracts to distinguish backend and frontend projects;
  • lets users create, register, import, open, and remove ECC-FE projects and their workspaces through the existing Project Management entry points;
  • introduces frontend-specific workspace summaries, Dashboard data, Step Analysis, comparisons, attention signals, and project-tree presentation;
  • adds per-step ECC-FE QoR ingestion and presentation in both the frontend workspace and Project Management views;
  • refreshes frontend step and QoR state as each stage completes instead of waiting for the entire frontend flow RPC to finish;
  • recovers interrupted frontend operations when a workspace is reopened;
  • clarifies QoR scoring, quality gates, hotspots, and reproducibility input snapshots without exposing raw SHA-256 values as user-facing metrics;
  • updates the ECC-FE gitlink to the merged child implementation at 014e721d87f539ff10cdf167d29010f871009b5e;
  • refreshes the Agent knowledge source inventories after the backend Project Management module was isolated and renamed.

Architecture

Backend and frontend Project Management remain separate at the behavior layer:

  • shared manifest and presentation contracts define the common project/workspace surface;
  • backendProjectManagement.ts retains backend-specific flow and QoR interpretation;
  • frontend lifecycle and analysis logic lives in dedicated frontend modules and components;
  • Electron main remains responsible for project-scoped filesystem reads, runtime recovery, and IPC validation;
  • the renderer consumes validated project data without receiving unrestricted filesystem access.

The goal is visual and workflow consistency without coupling ECC-FE semantics to the backend RTL-to-GDS implementation.

Frontend Project Lifecycle

  • Add frontend-aware project manifest parsing, validation, and registration.
  • Add Backend/Frontend selection to New Project.
  • Reuse the ECC-FE workspace wizard when creating frontend project workspaces.
  • Support project creation, import, open, history registration, and deletion.
  • Preserve project and workspace scope checks at the Electron boundary.
  • Restore frontend workspace sessions and recover interrupted operations when reopening a project workspace.

Dashboard And Analysis

  • Build frontend workspace summaries from ECC-FE artifacts and flow state.
  • Add frontend Dashboard, workspace comparison, Needs Attention, and Step Analysis data.
  • Keep project-tree rows, analysis frames, typography, widths, and scrolling consistent with the backend Project Management surface.
  • Keep frontend analysis rendering in dedicated components so backend behavior is not changed.
  • Harden missing, malformed, and partially available workspace artifact handling.

Frontend QoR

  • Parse ECC-FE QoR metrics, summaries, hotspots, gates, and step status.
  • Show QoR inside the active frontend workspace as well as Project Management.
  • Refresh QoR immediately when each frontend stage completes.
  • Hydrate already completed stages from persisted local artifacts.
  • Add readable per-stage score breakdowns and scoring explanations.
  • Add scrollable hotspot/report areas for long analysis output.
  • Replace ambiguous expressions such as 0 == 0 with user-facing gate descriptions.
  • Present reproducibility inputs as an Input Snapshot, with validated tracking state and concise source/configuration context.

Scope

Select the areas touched by this PR:

  • GUI - desktop UI/runtime changes in ecos/gui, including renderer, Electron, and shared packages.
  • ECC - ECC submodule updates or ECOS Studio integration with the ECC CLI/runtime.
  • Resource management - resource registry, downloads, installation, manifests, PDKs, or tool assets.
  • Build, packaging, Nix, or release workflow - build inputs, AppImage packaging, or release metadata.
  • CI - GitHub Actions workflows, reusable actions, triggers, path filters, or automated checks.
  • Documentation only - README, guides, templates, or docs with no runtime behavior change.

Validation

  • cd ecos/gui && pnpm run typecheck
  • cd ecos/gui && pnpm run test
  • cd ecos/gui && pnpm run build
  • make build
  • make demo-gcd
  • make demo-retrosoc
  • Manual GUI smoke: cd ecos/gui && pnpm run dev
  • Other: cd ecos/gui && pnpm run check - typecheck, lint, format, and all 1,347 renderer tests passed across 187 files.
  • Other: python3 .github/scripts/check-version.py - version consistency passed for 0.1.0-alpha.9.
  • Other: Agent knowledge generator check passed in a clean checkout using the pinned submodule revisions.
  • Other: Codex Review of the final staged knowledge refresh completed with no findings.

Manual GUI verification covered frontend project creation/opening, frontend workspace rendering, project tree expansion, Dashboard and Step Analysis presentation, per-stage flow/QoR refresh, persisted QoR hydration, recovery on workspace reopen, scrolling, and layout alignment.

Skipped checks and reason:

  • pnpm run build, make build, and demo targets were not run because this change does not modify packaging scripts, native build inputs, or demo definitions; platform packaging remains covered by PR CI.
  • The full Agent suite reached 104 passing tests with one pre-existing non-deterministic assertion that requires generated CTS prose to contain the exact English token clock-tree; valid CTS/Chinese responses can omit that literal. The knowledge generator check itself passes.

Screenshots or Recordings

No recording is attached. The affected GUI workflows were exercised manually during implementation, including frontend project lifecycle, Dashboard, Step Analysis, QoR updates, and layout behavior.

Release, Packaging, and Runtime Impact

  • No release, packaging, or runtime impact
  • Version metadata changed
  • AppImage or Electron packaging changed
  • ECC CLI runtime resources changed
  • OSS CAD Suite, PDK, resource download, or installer behavior changed
  • Submodule gitlink changed

Notes:

  • ECC-FE advances to 014e721d87f539ff10cdf167d29010f871009b5e, which is already merged into openecos-projects/ecc-fe:main.
  • No dependency lockfile or release-version change is included.
  • Backend Project Management behavior is intentionally preserved while frontend behavior is implemented through separate adapters, readers, analysis modules, and views.

Checklist

  • I kept the change scoped to the affected component.
  • I updated docs or user-facing text where behavior changed.
  • No dependency changes required lockfile updates.
  • I documented intentional submodule updates.
  • I did not include local caches, virtual environments, or generated build outputs.
  • I explained skipped validation and remaining risk.

Add the shared analysis frame and frontend project dashboard.
Keep backend and frontend panels decoupled.
Scope workspace actions to their owning project and preserve explicit
workspace selection across project changes.
# Conflicts:
#	ecos/agent/knowledge/cts/manifest.json
#	ecos/agent/knowledge/cts/sources.json
#	ecos/agent/knowledge/drc/manifest.json
#	ecos/agent/knowledge/drc/sources.json
#	ecos/agent/knowledge/filler/manifest.json
#	ecos/agent/knowledge/filler/sources.json
#	ecos/agent/knowledge/fixfanout/manifest.json
#	ecos/agent/knowledge/fixfanout/sources.json
#	ecos/agent/knowledge/floorplan/manifest.json
#	ecos/agent/knowledge/floorplan/sources.json
#	ecos/agent/knowledge/harden/manifest.json
#	ecos/agent/knowledge/harden/sources.json
#	ecos/agent/knowledge/legalization/manifest.json
#	ecos/agent/knowledge/legalization/sources.json
#	ecos/agent/knowledge/place/manifest.json
#	ecos/agent/knowledge/place/sources.json
#	ecos/agent/knowledge/rcx/manifest.json
#	ecos/agent/knowledge/rcx/sources.json
#	ecos/agent/knowledge/route/manifest.json
#	ecos/agent/knowledge/route/sources.json
#	ecos/agent/knowledge/sta/manifest.json
#	ecos/agent/knowledge/sta/sources.json
#	ecos/agent/knowledge/synthesis/manifest.json
#	ecos/agent/knowledge/synthesis/sources.json
#	ecos/gui/apps/desktop-electron/electron/services/projectManagementReadService.ts
#	ecos/gui/apps/renderer/src/components/NewProjectWizard.vue
#	ecos/gui/apps/renderer/src/types/index.ts
#	ecos/gui/apps/renderer/src/utils/backendProjectManagement.ts
#	ecos/gui/packages/shared/src/index.ts
#	ecos/gui/packages/shared/src/types/workspace.ts
#	ecos/gui/packages/shared/src/utils/projectManagementSummary.test.ts
#	ecos/gui/packages/shared/src/utils/projectManagementSummary.ts
#	ecos/gui/packages/shared/src/utils/projectManifest.ts
@Luyoung0001
Luyoung0001 requested a review from Emin017 September 4, 2026 07:51
…anagement

# Conflicts:
#	ecos/gui/apps/desktop-electron/electron/services/chipViewerService.test.ts
Comment thread ecc-fe Outdated
@@ -1 +1 @@
Subproject commit fefb988b771b407d551daeabde2005abb3349536
Subproject commit 687c28e18ce648864b1ca6fc3a56527c2674fe1a

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Delay runtime activation until required resources install

docs/ecc-fe-cli-setup.sh writes the active manifest and replaces both command links before running resource install --required. If a required resource download, verification, or installation fails, set -e exits with this failed runtime still active; an upgrade also stops pointing users at the previously working runtime. Please commit the manifest and links only after all required resources succeed, or roll them back on failure, so a failed first install leaves no active runtime and a failed upgrade preserves the prior one.

workspace.workspace_id,
{
analysis: {
frontendDetailTexts: Object.fromEntries(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Preserve unavailable frontend artifact state

The read service returns null and records the path in unavailablePaths when a detail file exceeds the 1 MiB limit or another read error occurs, but this mapping discards that status. If flow.json still says the step succeeded, downstream analysis turns the missing detail into zero errors, warnings, and cases, producing a false-green dashboard. Please propagate the unavailable state and render these aggregates as unknown instead of successful zero-result data.

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