LearnNewsExamplesServices
Frontmatter
id15468
titleexplore_lane_landscape crashes on undefined AiConfig.issueSync leaf
stateClosed
labels
bugaiarchitecture
assigneesneo-gpt
createdAtJul 18, 2026, 3:52 PM
updatedAtJul 18, 2026, 5:20 PM
githubUrlhttps://github.com/neomjs/neo/issues/15468
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 18, 2026, 5:20 PM

explore_lane_landscape crashes on undefined AiConfig.issueSync leaf

Closed Backlog/active-chunk-7 bugaiarchitecture
neo-opus-ada
neo-opus-ada commented on Jul 18, 2026, 3:52 PM

Context

Surfaced during an autonomous lane-survey (session 3e5f61a5-35d0-4f3d-8805-54f63bebed70): the explore_lane_landscape memory-core MCP tool fails on every call — reproduced twice on-demand this session:

Error executing explore_lane_landscape: Cannot read properties of undefined (reading 'maxLabelsPerIssue')

The tool is fully non-functional; the current-state lane Bird View it was built to provide (#15234) is unavailable, forcing fallback to get_context_frontier + raw list_issues for lane discovery.

The Problem

The lane-landscape census constructs its open-work reader config from AiConfig leaves, but AiConfig.issueSync is undefined at that runtime, so the nested-leaf read throws before any census work runs.

The Architectural Reality

ai/mcp/server/memory-core/toolService.mjs:60-61 (the explore_lane_landscape deps construction) reads:

maxLabels   : AiConfig.issueSync.maxLabelsPerIssue,
maxAssignees: AiConfig.issueSync.maxAssigneesPerIssue

maxLabelsPerIssue is an AiConfig leaf (ai/mcp/server/github-workflow/configBase.mjs:239leaf(20) under issueSync). At the explore_lane_landscape runtime, AiConfig.issueSync resolves to undefined, so .maxLabelsPerIssue throws. Sibling reads on the SAME AiConfig object a few lines down (laneLandscapeCensusPageLimit, laneLandscapeCensusMaxPages, laneLandscapeRelationEdgeLimit, lines 65-67) do not fault — so the gap is specifically the issueSync leaf group not being present / injected in this tool's context, not a wholesale AiConfig absence.

The Fix

DEFERRED — ADR-0019 domain. Per AGENTS.md §critical_gate 10, the implementer MUST read learn/agentos/decisions/0019-aiconfig-reactive-provider-ssot.md before touching this AiConfig access. This ticket reports the verified symptom + exact site ONLY and deliberately does not prescribe the config change — whether the cause is a missing provider wiring for issueSync, a module-load capture defeating the reactive leaf, or a require+inject+fail-loud gap is the ADR-0019-informed implementer's call.

Acceptance Criteria

  • explore_lane_landscape returns a lane-landscape projection without throwing (verified by a live tool call).
  • The AiConfig.issueSync leaf group resolves in the explore_lane_landscape runtime path, following ADR-0019 require+inject discipline (no primitive-local default silently masking the gap).
  • A regression witness covers the tool's config-leaf resolution so a future issueSync wiring regression fails loud.

Out of Scope

  • The fix mechanism (ADR-0019 implementer's call).
  • Other memory-core tools — only explore_lane_landscape reproduced this crash here; get_context_frontier and the query tools work.

Related

  • #15234 — the closed feature ticket that added explore_lane_landscape.
  • #15100 — Live Lane Awareness (Wave-1 composition).

Verification

Reproduced twice on-demand this session, identical error each time — fully deterministic, every call throws. Live-open duplicate sweep: checked open/closed issues for explore_lane_landscape / maxLabelsPerIssue / lane-landscape at time of filing; no equivalent bug ticket exists (#15234 is the feature, now closed).

Origin Session ID: 3e5f61a5-35d0-4f3d-8805-54f63bebed70

Handoff Retrieval Hint: "explore_lane_landscape AiConfig.issueSync maxLabelsPerIssue undefined crash toolService.mjs"

Authored by Ada (@neo-opus-ada, Claude Opus 4.8, Claude Code).