Skip to content

Commit 5c054f6

Browse files
author
DavidQ
committed
Add scoped 3D render-pipeline stages debug panel BUILD bundle
- define the next Track H 3D debug-support step after camera debug panel - constrain implementation to a read-only provider + panel + minimal wiring + tests - preserve current 3D debug behavior while enabling the next validation-backed APPLY step
1 parent 69b18fd commit 5c054f6

13 files changed

Lines changed: 356 additions & 10 deletions

docs/dev/CODEX_COMMANDS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
MODEL: GPT-5.3-codex
22
REASONING: high
3-
COMMAND: Implement camera debug panel
3+
COMMAND: Create BUILD_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES as a docs-first, repo-structured delta. Use docs/pr/PLAN_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES.md and docs/pr/BUILD_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES.md as the source of truth. Implement the smallest valid read-only 3D render pipeline stages panel under src/engine/debug/standard/threeD by adding one provider, one panel, minimal registration wiring, and targeted test coverage only. Do not expand into collision overlays, scene graph inspection, transform inspector expansion, roadmap edits, start_of_day changes, or unrelated cleanup. Preserve existing camera debug panel behavior. Final step: package only this PR's created and modified files into <project folder>/tmp/BUILD_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES.zip with exact repo-relative structure.

docs/dev/COMMIT_COMMENT.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
Add camera debug panel plan
1+
Add scoped 3D render-pipeline stages debug panel BUILD bundle
2+
3+
- define the next Track H 3D debug-support step after camera debug panel
4+
- constrain implementation to a read-only provider + panel + minimal wiring + tests
5+
- preserve current 3D debug behavior while enabling the next validation-backed APPLY step

docs/dev/NEXT_COMMAND.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
PLAN_PR_3D_LAYER_1_FOUNDATION
1+
NEXT => BUILD_PR_LEVEL_17_19_COLLISION_OVERLAYS

docs/dev/PROJECT_INSTRUCTIONS.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,15 @@ ZIP STANDARD (ENFORCED)
119119
- Preserve wording unless the PR explicitly requires rewriting.
120120
- Keep roadmap handling status-only unless explicitly requested otherwise.
121121
- Do not delete roadmap content during cleanup work.
122+
123+
## EXECUTION EFFICIENCY
124+
125+
- Bundle PRs whenever it is safe and testable to reduce overall timeline and churn.
126+
- Codex must always return a ZIP artifact at:
127+
<project folder>/tmp/<PR_NAME>.zip
128+
- Never ask whether to create the next ZIP for Codex; always assume it is required.
129+
- Default execution behavior:
130+
- Choose the correct path automatically
131+
- Reduce the number of options presented
132+
- Do the right thing and complete the task fully and correctly
133+
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
Status-only sync for MASTER_ROADMAP_HIGH_LEVEL.md (Phase 16 markers updated to match current repo-backed progress and validation evidence).
1+
Summary
2+
- advances the 3D debug-support lane from camera debug panel to render pipeline stages
3+
- keeps scope to one provider, one panel, minimal wiring, and targeted validation
4+
- intentionally defers collision overlays and scene graph inspector to later PRs
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,16 @@
1-
Validate camera debug panel
1+
BUILD_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES VALIDATION CHECKLIST
2+
3+
Automated
4+
- [ ] targeted test file passes
5+
- [ ] provider normalization test covers empty and populated input
6+
- [ ] panel render test covers fallback state
7+
- [ ] panel registration visibility is verified if applicable
8+
9+
Manual
10+
- [ ] app launches without new console errors
11+
- [ ] existing 3D debug surface still opens
12+
- [ ] render pipeline stages panel is visible
13+
- [ ] stage rows display in deterministic order
14+
- [ ] empty/no-data state renders safely
15+
- [ ] camera debug panel still renders correctly
16+
- [ ] no collision overlay or scene graph UI appears from this PR
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# BUILD_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES
2+
3+
## Purpose
4+
Implement the next scoped Track H 3D debug-support item: render pipeline stages.
5+
6+
## Source of Truth
7+
- `docs/pr/PLAN_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES.md`
8+
9+
## Exact Build Target
10+
Add a read-only render-pipeline stages panel to the standard 3D debug surface using the smallest viable provider + panel pairing.
11+
12+
## Required Outputs
13+
- `src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js`
14+
- `src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js`
15+
- minimal updates to existing 3D panel registration/wiring only where required
16+
- targeted automated test coverage
17+
- no unrelated file edits
18+
19+
## Functional Requirements
20+
1. Provider returns a normalized array of stage rows.
21+
2. Each row must use stable keys and safe fallback values.
22+
3. Panel renders the provider output in deterministic display order.
23+
4. Panel safely handles no-data and partial-data states.
24+
5. Panel is read-only and does not mutate render state.
25+
6. Existing 3D debug support remains functional after wiring.
26+
27+
## Allowed Data Surface
28+
Use only already-available render/debug state that is reachable through existing public or local debug contracts. Do not introduce new engine-core behavior purely to make this panel richer.
29+
30+
## Non-Goals
31+
- no collision overlays
32+
- no scene graph inspector
33+
- no transform inspector expansion
34+
- no engine rendering architecture rewrite
35+
- no broad UI cleanup
36+
- no roadmap edits in this PR
37+
38+
## Implementation Notes
39+
- prefer the same naming/layout conventions already used by the camera debug panel
40+
- keep provider sanitization explicit and minimal
41+
- if a registration list exists, add one entry only for this panel
42+
- preserve current panel ordering unless a single adjacent insertion is required
43+
44+
## Automated Validation
45+
Add or update targeted test(s) to verify:
46+
- provider normalization
47+
- panel render contract
48+
- safe fallback state
49+
- registration visibility if registration is file-driven
50+
51+
## Manual Validation
52+
Follow `docs/dev/reports/validation_checklist.txt`.
53+
54+
## Packaging Rule
55+
Package only files relevant to this PR into the final repo-structured ZIP.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# PLAN_PR_LEVEL_17_18_RENDER_PIPELINE_STAGES
2+
3+
## Purpose
4+
Add the next smallest 3D debug-support capability after the camera debug panel by exposing render pipeline stage visibility in the standard 3D debug surface.
5+
6+
## Why This PR Exists
7+
Track H in the master roadmap still lists Render pipeline stages as planned work in the 3D debug-support lane. This PR isolates that single capability so it can be implemented, tested, and validated without expanding into collision overlays or scene graph inspection.
8+
9+
## Scope
10+
Implement a minimal, testable render-pipeline stages panel for 3D debug support.
11+
12+
## In Scope
13+
- one new 3D render-pipeline provider for read-only stage data
14+
- one new standard 3D panel for render-pipeline stages
15+
- minimal panel registration/wiring needed for the panel to appear in the existing debug surface
16+
- test coverage for provider output and panel registration/render contract
17+
- validation checklist updates for manual smoke verification
18+
19+
## Out of Scope
20+
- collision overlays
21+
- scene graph inspector
22+
- camera debug panel changes except integration compatibility
23+
- transform inspector expansion
24+
- render-engine behavior changes beyond read-only debug exposure
25+
- broad refactors or folder cleanup
26+
27+
## Constraints
28+
- stay inside PLAN_PR -> BUILD_PR -> APPLY_PR workflow
29+
- one PR purpose only
30+
- smallest scoped valid change
31+
- no repo-wide scanning unless required
32+
- no start_of_day edits
33+
- no unrelated workspace cleanup
34+
35+
## Target Shape
36+
- `src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js`
37+
- `src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js`
38+
- minimal registry/wiring file updates only if required by the existing 3D debug panel system
39+
- targeted test file(s)
40+
41+
## Acceptance Intent
42+
- panel appears in the existing 3D debug surface
43+
- panel shows a stable ordered list of pipeline stages or stage-state rows
44+
- panel remains read-only
45+
- no regression to the already-added camera debug panel
46+
- no regression to existing 3D support panels
47+
48+
## Validation Focus
49+
- provider returns normalized stage rows
50+
- panel renders empty/fallback state safely
51+
- panel renders stage rows when provider returns data
52+
- 3D debug surface still loads without console errors
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
Toolbox Aid
3+
David Quesenberry
4+
04/16/2026
5+
panel3dRenderPipelineStages.js
6+
*/
7+
8+
import {
9+
createPanelDescriptor,
10+
toLinePair
11+
} from "../shared/threeDDebugUtils.js";
12+
13+
export const PANEL_3D_RENDER_PIPELINE_STAGES = "3d.renderStages";
14+
15+
function toStageLine(stage, index) {
16+
return toLinePair(
17+
`stage.${index + 1}`,
18+
`${stage.stageId}|${stage.status}|enabled=${stage.enabled === true}`
19+
);
20+
}
21+
22+
export function create3dRenderPipelineStagesPanel(provider, options = {}) {
23+
return createPanelDescriptor({
24+
id: PANEL_3D_RENDER_PIPELINE_STAGES,
25+
title: "3D Render Pipeline Stages",
26+
provider,
27+
priority: options.priority ?? 1120,
28+
enabled: options.enabled === true,
29+
linesBuilder(snapshot = {}) {
30+
const stageRows = Array.isArray(snapshot.stageRows) ? snapshot.stageRows : [];
31+
const baseLines = [
32+
toLinePair("stageCount", snapshot.stageCount),
33+
toLinePair("activeCount", snapshot.activeCount)
34+
];
35+
36+
if (stageRows.length === 0) {
37+
return [
38+
...baseLines,
39+
toLinePair("stages", "none")
40+
];
41+
}
42+
43+
return [
44+
...baseLines,
45+
...stageRows.map((stage, index) => toStageLine(stage, index))
46+
];
47+
}
48+
});
49+
}

src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ registerStandard3dPanels.js
77

88
import { PROVIDER_3D_CAMERA_SUMMARY } from "../providers/cameraSummaryProvider.js";
99
import { PROVIDER_3D_COLLISION_SUMMARY } from "../providers/collisionSummaryProvider.js";
10-
import { PROVIDER_3D_RENDER_STAGE_SUMMARY } from "../providers/renderStageSummaryProvider.js";
10+
import { PROVIDER_3D_RENDER_PIPELINE_STAGES } from "../providers/renderPipelineStagesProvider.js";
1111
import { PROVIDER_3D_SCENE_GRAPH_SUMMARY } from "../providers/sceneGraphSummaryProvider.js";
1212
import { PROVIDER_3D_TRANSFORM_SUMMARY } from "../providers/transformSummaryProvider.js";
1313
import { create3dCameraPanel } from "./panel3dCamera.js";
1414
import { create3dCollisionPanel } from "./panel3dCollision.js";
15-
import { create3dRenderStagesPanel } from "./panel3dRenderStages.js";
15+
import { create3dRenderPipelineStagesPanel } from "./panel3dRenderPipelineStages.js";
1616
import { create3dSceneGraphPanel } from "./panel3dSceneGraph.js";
1717
import { create3dTransformPanel } from "./panel3dTransform.js";
1818

@@ -34,7 +34,7 @@ export function createStandard3dPanels(options = {}) {
3434
const camera = create3dCameraPanel(pickProvider(providerMap, PROVIDER_3D_CAMERA_SUMMARY), {
3535
enabled: options.enabled === true
3636
});
37-
const renderStages = create3dRenderStagesPanel(pickProvider(providerMap, PROVIDER_3D_RENDER_STAGE_SUMMARY), {
37+
const renderStages = create3dRenderPipelineStagesPanel(pickProvider(providerMap, PROVIDER_3D_RENDER_PIPELINE_STAGES), {
3838
enabled: options.enabled === true
3939
});
4040
const collision = create3dCollisionPanel(pickProvider(providerMap, PROVIDER_3D_COLLISION_SUMMARY), {

0 commit comments

Comments
 (0)