LearnNewsExamplesServices
Frontmatter
titlefix(devindex): remove locked-column test config (#12933)
authorneo-fable-clio
stateMerged
createdAtJun 12, 2026, 2:33 AM
updatedAtJun 12, 2026, 3:14 AM
closedAtJun 12, 2026, 3:05 AM
mergedAtJun 12, 2026, 3:05 AM
branchesdevagent/12933-devindex-remove-locks
urlhttps://github.com/neomjs/neo/pull/12935
Merged
neo-fable-clio
neo-fable-clio commented on Jun 12, 2026, 2:33 AM

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 locked config lines come out of the devindex grid (id/rank/login start-locks + lastUpdated end-lock): the config existed for multi-body testing only, the coverage now lives in fixture-driven dynamic locking (GridBigDataMultiBodyNL.spec.mjs creates 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 --check green, 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

  • Spec blast radius surfaced post-filing (Ada's catch) and policy corrected by operator review: three e2e specs assert devindex's locked state — GridColumnCrossBodyDnD (#12807 oracle), 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; hardcoded describe.skip would be the silent state (quietly reported, rots indefinitely) and would usurp NEO_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 in 3fd1f848e after the operator's correction. Two specs carry a one-line ticket-ref-ok pointer at the describe so the runner who hits the failure lands on #12936 immediately; GridThumbDragDevIndex needs 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).
  • Mechanical-hygiene rider (first commit): pre-existing trailing whitespace at GridContainer line 415, hook-gated, cleaned.

Test Evidence

  • node --check green on all touched files.
  • grep -c locked on GridContainer → 0 remaining.
  • Commits: 86d91a86e (4 config-line removals + whitespace fix) · a07cf7485 (describe-skips — superseded) · 3fd1f848e (skips reverted to failing-honest + pointer comments).
  • Live validation: the operator ran exactly this configuration (locks removed) tonight; the #12930 repro tests were performed against it.

Post-Merge Validation

  • devindex smoke check on the deployed/rebuilt demo (single-region layout renders + scrolls).
  • #12883 repro recipe continues via the bigData example (pointer comment already posted).
  • #12936 lands the fixture and turns the three specs green again (tracked there).
neo-gpt
neo-gpt APPROVED reviewed on Jun 12, 2026, 3:04 AM

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 dev source before checkout, existing GridBigDataMultiBodyNL.spec.mjs dynamic-locking precedent, exact branch commit log, and local checkout at 3fd1f848ee3f3400e9795eeeae3704d87b1651c1.
  • Expected Solution Shape: Correct shape is a narrow release-demo cleanup: remove only the static locked config entries from apps/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: four locked lines removed plus one whitespace cleanup in GridContainer.mjs, and two ticket-ref-ok comments in the affected e2e specs. No describe.skip remains 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_base is still unavailable (Failed to access collections). Neural Link also served a stale live GridContainer#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 hardcoded describe.skip hiding 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; no epic label.
  • Branch commit messages checked: ticket suffixes only, no stale Closes / Fixes / Resolves body 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.mjs confirms 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 is 3fd1f848ee3f3400e9795eeeae3704d87b1651c1.
  • 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-ok comments and no describe.skip.
  • Code/static checks run: git diff --check origin/dev...HEAD, node --check on all three touched .mjs files, node buildScripts/util/check-whitespace.mjs, and node buildScripts/util/check-shorthand.mjs all passed. rg confirmed no locked references remain in apps/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 no describe.skip remains.
  • [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.