perf: reuse WBS badge shells and skip metadata grid rerenders - #495
perf: reuse WBS badge shells and skip metadata grid rerenders#495seonghobae wants to merge 38 commits into
Conversation
📝 WalkthroughWalkthrough프로젝트 메타데이터 렌더링 경로를 분리했습니다. 담당자·상태 배지는 행별 데이터가 없는 불변 DOM 셸을 복제합니다. 고정 색상 클래스를 추가했습니다. 단위 테스트와 5,000행 Playwright 성능 벤치마크를 추가했습니다. ChangesDOM 렌더링 최적화
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to The performance change avoids rebuilding the task grid for metadata-only edits, but some owner badges can render with insufficient text contrast and the select-isolation regression test does not accurately model browser defaults. Merge should wait for the contrast fix, corrected regression test, and the required independent approval. Sequence Diagram(s)sequenceDiagram
participant Playwright
participant Browser
participant appjs
participant DOM
Playwright->>Browser: 5,000개 작업 데이터 주입
Browser->>appjs: 페이지 로드 및 렌더링 실행
appjs->>DOM: 행과 배지 DOM 셸 복제
Playwright->>Browser: 렌더링 및 메모리 지표 수집
Playwright->>Browser: 편집·진행률·드래그 동작 검증
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent Review exact clean head |
|
@opencode-agent Request independent review for exact current head |
Pull request was converted to draft
Pull request was converted to draft
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthrough메타데이터 전용 렌더링 경로를 추가했습니다. 담당자·상태 배지는 불변 DOM 셸을 복제합니다. 고정 색상 클래스와 대비 검증을 추가했습니다. 5,000행 성능 벤치마크와 기준 커밋 검증을 추가했습니다. ChangesDOM 렌더링 최적화
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🔵 Low · up to The PR delivers the intended rendering performance and accessibility improvements, but one unit test should tighten its script and workflow matching so malformed benchmark configuration cannot pass unnoticed. This is a bounded, non-blocking follow-up with owner awareness. Sequence Diagram(s)sequenceDiagram
participant Playwright
participant Browser
participant appjs
participant DOM
Playwright->>Browser: 5,000개 작업 데이터를 localStorage에 주입
Browser->>appjs: 페이지 로드 및 렌더링 실행
appjs->>DOM: 불변 담당자·상태 셸 복제
appjs->>DOM: 행별 텍스트와 접근성 속성 적용
Playwright->>Browser: 렌더링 및 상호작용 지표 수집
Playwright->>Playwright: 기준 구현과 중앙값 성능 비교
🚥 Pre-merge checks | ✅ 2 | ❌ 3❌ Failed checks (3 warnings)
✅ Passed checks (2 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 3.85% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 26 functions across 6 files. (3 skipped: 3 unsupported.) ✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Buyer impact
Large ScopeWeave plans no longer rebuild the full task grid when a user changes only project metadata. This slice keeps project-name persistence on a metadata-only render path, reuses immutable owner/status DOM shells, preserves per-row data isolation, and keeps the performance guard executable in CI without making the documented local cloud-E2E command depend on GitHub benchmark authority.
Refs #409.
Exact current identity
develop@2c328875e00e86537df3e965170be80532571cad;9c2cc0b9acf1d3ef234612088ab0fbdf108252f5;659e5ad2657f2222b35929e9c20e07a624bcd84d;d7e5a89a5a338b5bb9a2773017453eeb0dd72412;perf/dom-template-cache-current-develop;Any head/base/review/check movement invalidates revision-sensitive evidence until freshly revalidated. This body is traceability, not merge authority.
Root-cause repair and implementation contract
The original cache-only optimization reduced element creation but did not address the dominant invalidation path: project-name edits still rebuilt the full task grid. The current implementation separates metadata-only persistence from base-date/full-plan rendering.
renderAll({ metadataOnly: true })refreshes project metadata and returns before metric, analytics, and task-grid work; base-date and normal renders retain the complete path.owner-badge--color-Nclasses rather than inline style.document.createElement()calls in every optimized metadata-edit sample and preserves task-grid DOM identity.aria-invalid, andaria-describedbystates.Evidence-integrity repairs
The benchmark base resolver is shared by unit and browser paths and fails closed unless an immutable 40-hex comparison revision is available. Resolution order is explicit override -> PR base snapshot -> protected-branch push
before; malformed and all-zero SHAs are rejected.The documented local
test:e2e:cloudcommand now runs only the cloud/toast browser suite and therefore does not require benchmark authority. The benchmark is registered separately astest:e2e:performance, andServer Testsexplicitly invokes it after cloud E2E. A unit contract fails if that CI invocation is removed.Buyer-visible performance evidence
Server Tests run
33239719025is terminal-success. Itsunit-and-apijob passed the registered unit/API/eval-safe suites, and itscloud-e2ejob passed both browser stages:10 passed;1 passedon a 5,000-row state;4214.5 ms;93 ms;97.7933%(target>=15%);[0, 0, 0, 0, 0]across all five samples;The hosted workflow checked out synthetic merge
d7e5a89a5a338b5bb9a2773017453eeb0dd72412(9c2cc0b9...merged into2c328875...). This is substantive merged-tree behavior evidence but is not exact-contributor-head merge authority.Current repository workflow and review truth
For contributor head
9c2cc0b9acf1d3ef234612088ab0fbdf108252f5, all six currently associated repository workflow runs are terminal GitHub-success:33239719025;33239719008;33239719009;33239719004;33239719027; and33239719212.All currently enumerated inline review threads are resolved. Historical OpenCode
CHANGES_REQUESTEDsubmissions are dismissed/predecessor-head evidence and do not transfer. Devin/CodeRabbit/GitHub Code QualityCOMMENTEDevidence is supplementary rather than a qualifying independent approval.ScopeWeave #523 owns repository-native exact-head Server Tests/coverage checkout integrity.
ContextualWisdomLab/.github#1222owns organization-reusable SAST/Security exact-head checkout integrity. Synthetic, predecessor, status-only, author-only, model-only, pending, queued, skipped, neutral, absent, failed, rate-limited, or stale evidence is non-authorizing.Remaining #409 boundary and merge gate
This slice does not close #409 merely by merging. Close the issue only after protected integration preserves the hot-path behavior and exact protected-head acceptance evidence.
Do not merge or enable auto-merge until this unchanged exact head remains reconciled to freshly resolved protected
develop, applicable exact-head evidence controls are protected-shipped and regenerated, every required CI/browser-performance/owned statement-branch-function-line coverage/docstring/CodeQL/SAST/security/dependency/supply-chain/package/provenance gate is substantively terminal-passing for the correct revision, valid unresolved findings are zero, and a qualifying independent current-head/last-push approval genuinely exists under live branch protection/rulesets.