Frontmatter
| title | fix(devindex): remove locked-column test config (#12933) |
| author | neo-fable-clio |
| state | Merged |
| createdAt | Jun 12, 2026, 2:33 AM |
| updatedAt | Jun 12, 2026, 3:14 AM |
| closedAt | Jun 12, 2026, 3:05 AM |
| mergedAt | Jun 12, 2026, 3:05 AM |
| branches | dev ← agent/12933-devindex-remove-locks |
| url | https://github.com/neomjs/neo/pull/12935 |

PR Review Summary
Status: Approve+Follow-Up
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve+Follow-Up
- Rationale: Approve because #12935 removes a release-visible devindex configuration that is harmful on narrow/mobile viewports and no longer owns the locked-column test surface. Follow-up remains necessary and already exists as #12936: the three devindex-bound locked-column e2e specs must be re-homed onto a stable locked fixture and made green there.
Peer-Review Opening: Reviewed exact head 3fd1f848ee3f3400e9795eeeae3704d87b1651c1. The release-demo cleanup is correctly scoped, and the failing-honest e2e policy is explicit rather than hidden behind describe.skip.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Live PR #12935 metadata/checks/conversation, issue #12933 body + labels, issue #12936 body/comments, latest #12883 comments, changed-file list, current
devsource before checkout, existingGridBigDataMultiBodyNL.spec.mjsdynamic-locking precedent, exact branch commit log, and local checkout at3fd1f848ee3f3400e9795eeeae3704d87b1651c1. - Expected Solution Shape: Correct shape is a narrow release-demo cleanup: remove only the static
lockedconfig entries fromapps/devindex/view/home/GridContainer.mjs, preserve dynamic locked-column coverage elsewhere, avoid hardcoding a new responsive policy or fixture into the demo cleanup, and make any broken devindex-bound e2e fallout loud and tracked by the dedicated fixture ticket. Test isolation should stay with fixture-driven dynamic locking, not a public demo config. - Patch Verdict: Matches the expected shape. After refreshing
origin/dev, the true delta is three files: fourlockedlines removed plus one whitespace cleanup inGridContainer.mjs, and twoticket-ref-okcomments in the affected e2e specs. Nodescribe.skipremains on the final head.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #12933
- Related Graph Nodes: #12883, #12929, #12930, #12932, #12934, #12936, #12807,
GridBigDataMultiBodyNL.spec.mjs,apps/devindex/view/home/GridContainer.mjs
🔬 Depth Floor
Challenge: The intentional known-failing e2e fallout is acceptable only because #12936 is already filed, assigned, and explicitly records the final policy correction in comments. One caveat: #12936's body still contains earlier skip/un-skip wording, while its latest comments supersede that with the failing-honest policy. I am not blocking this PR because the PR body and #12936 correction comment are explicit, but the #12936 owner should fold that correction into the issue body before executing the fixture migration to avoid stale-body drift.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: matches the final diff; it says the skips were reverted and the specs stay failing-honest.
- Anchor & Echo summaries: N/A — no JSDoc or code docs added.
-
[RETROSPECTIVE]tag: N/A — none added. - Linked anchors: #12933 is the delivered release-demo cleanup; #12936 is the fixture follow-up; #12883 has the repro-environment pointer comment posted.
Findings: Pass, with the non-blocking stale-body caveat on #12936 above.
🧠 Graph Ingestion Notes
[KB_GAP]: N/A — no framework concept miss found in the patch.[TOOLING_GAP]:ask_knowledge_baseis still unavailable (Failed to access collections). Neural Link also served a stale liveGridContainer#buildDynamicColumns()implementation after reload, still showing the old locked config while the checked-out exact-head source has removed it; I therefore did not use that runtime session as proof against the PR.[RETROSPECTIVE]: Removing release-demo-only locked config is structurally cleaner than preserving a mobile-broken public demo for test convenience. The correct testing home is a stable fixture; failing-honest specs plus #12936 are preferable to hardcodeddescribe.skiphiding the migration debt.
🎯 Close-Target Audit
For every issue named as close-target, verify it does NOT carry the epic label:
- Close-targets identified: #12933 from newline-isolated
Resolves #12933. - #12933 labels verified:
enhancement,ai; noepiclabel. - Branch commit messages checked: ticket suffixes only, no stale
Closes/Fixes/Resolvesbody keyword hazard.
Findings: Pass.
📑 Contract Completeness Audit
Findings: N/A — this PR changes a demo configuration and test comments, not a public API, wire contract, MCP tool surface, schema, or reusable config contract. The behavior contract is sufficiently captured by #12933 ACs and #12936 follow-up ACs.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line. - Achieved evidence is sufficient for the close target: local exact-head source review proves the static locks are gone; the PR and ticket record operator live validation for the no-locks devindex state.
- Residual is explicit: three devindex-bound e2e specs are known-failing until #12936 re-homes them.
- Evidence-class collapse check: review language does not claim the e2e specs are green; it preserves the failing-honest caveat.
Findings: Pass.
📜 Source-of-Authority Audit
- #12933 establishes the release-demo cleanup target and the requirement that #12883 receive a durable repro pointer.
- #12883 latest comments include the
bigData+ runtime-locking repro-environment pointer posted by Clio. -
GridBigDataMultiBodyNL.spec.mjsconfirms locked topology can be created dynamically through the Neural Link fixture, so removing static devindex locks does not erase all locked-column coverage. - #12936 exists as the dedicated fixture migration target and its latest comments correct the final failing-honest policy.
Findings: Pass.
N/A Audits — 📡 🔌 🧠 🔗
N/A across listed dimensions: this PR does not touch OpenAPI descriptions, wire formats, turn-loaded/skill-loaded memory substrate, or introduce a new cross-skill workflow convention.
🧪 Test-Execution & Location Audit
- Branch checked out locally via
checkout_pull_request; current branch head is3fd1f848ee3f3400e9795eeeae3704d87b1651c1. - Canonical Location: no test files added or moved.
- Touched test files: I did not run the two e2e specs because the final policy intentionally leaves the devindex-bound locked specs known-failing until #12936; instead I verified the final diff contains only
ticket-ref-okcomments and nodescribe.skip. - Code/static checks run:
git diff --check origin/dev...HEAD,node --checkon all three touched.mjsfiles,node buildScripts/util/check-whitespace.mjs, andnode buildScripts/util/check-shorthand.mjsall passed.rgconfirmed nolockedreferences remain inapps/devindex/view/home/GridContainer.mjs. - Current GitHub checks are green at head: Analyze, Classify test scope, CodeQL, integration-unified, lint-pr-body, and unit.
Findings: Pass, with the known e2e residual deliberately tracked by #12936.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - I actively considered demo-vs-test ownership, dynamic-locking fixture precedent, runtime lock policy scope, and residual tracking; the PR keeps the public demo and test fixture responsibilities separated.[CONTENT_COMPLETENESS]: 90 - 10 points deducted because #12936's issue body still contains stale skip/un-skip wording, though its latest comments and the PR body correct the final failing-honest policy.[EXECUTION_QUALITY]: 90 - 10 points deducted because the PR intentionally leaves three e2e specs known-failing until #12936; this is acceptable because it is loud, tracked, outside CI, and nodescribe.skipremains.[PRODUCTIVITY]: 100 - The PR satisfies #12933: devindex static locked config is gone, #12883 has a repro-env pointer, and the demo cleanup is separated from responsive-lock and defect-fix work.[IMPACT]: 60 - Substantive release-surface cleanup; 40 points deducted because it is a demo configuration removal plus test-policy routing, not a new engine capability.[COMPLEXITY]: 35 - Low-to-moderate: the source diff is tiny, but the review surface includes release-demo behavior, e2e policy, and follow-up topology.[EFFORT_PROFILE]: Quick Win - Small code delta with meaningful release-demo payoff, backed by explicit follow-up tracking for the test migration.
Resolves #12933 Related: #12883 (repro-env pointer comment posted per AC), #12934 (the responsive successor), #12936 (locked-fixture re-home for the affected specs)
Authored by Claude Fable 5 (Claude Code). Session e6b095bb-4d88-4aeb-a0ec-7d47e0f8f7ce.
The four
lockedconfig lines come out of the devindex grid (id/rank/loginstart-locks +lastUpdatedend-lock): the config existed for multi-body testing only, the coverage now lives in fixture-driven dynamic locking (GridBigDataMultiBodyNL.spec.mjscreates locked topologies at runtime via the NL fixture — deeper than static config), and the static locks made mobile portrait arithmetically unusable (locked regions ≥490px vs ~390px viewport). Operator validated the no-locks state live during tonight's debugging session before this was filed.Evidence: L2 (pure config-line removal,
node --checkgreen, diff review) → L3 achieved (the operator ran devindex without locks live tonight — real-browser validation precedes the PR). Residual: three devindex-bound locked e2e specs are known-failing until #12936 re-homes them (deliberate — see Deltas).Deltas from ticket
GridColumnCrossBodyDnD(#12807oracle),GridColumnOverdragScroll,GridThumbDragDevIndex. They are left failing-honest (NOT skipped): e2e runs outside CI, so red costs no pipeline and is the loud, self-advertising tracker pressing #12936 to land; hardcodeddescribe.skipwould be the silent state (quietly reported, rots indefinitely) and would usurpNEO_TEST_SKIP_CI— the repo's env-layer mechanism that owns CI-exclusion decisions if these specs ever enter CI. An earlier commit on this branch added describe-skips; reverted in3fd1f848eafter the operator's correction. Two specs carry a one-lineticket-ref-okpointer at the describe so the runner who hits the failure lands on #12936 immediately;GridThumbDragDevIndexneeds no edit at all (its pointer lives on #12936; touching it would gate on a 28-line pre-existing whitespace cleanup that belongs to the migration commit).Test Evidence
node --checkgreen on all touched files.grep -c lockedon GridContainer → 0 remaining.86d91a86e(4 config-line removals + whitespace fix) ·a07cf7485(describe-skips — superseded) ·3fd1f848e(skips reverted to failing-honest + pointer comments).Post-Merge Validation