Repository navigation
Mapper: three AI log entries are filed under the open row, not the row they're about #2887
Copy link
Copy link
Closed
OpenConceptLab/oclmap
#98Labels
component/mapperMapping toolsMapping toolsdecision/ai-readyReady for autonomous AI executionReady for autonomous AI executionpipeline/session-doneA session worker opened a PR; remove to allow another runA session worker opened a PR; remove to allow another runsignal/low-riskSafe to execute with minimal downsideSafe to execute with minimal downsidesignal/quick-winLow complexity, high clarity — easy winLow complexity, high clarity — easy winsignal/small-scopeLimited to a small part of the codebaseLimited to a small part of the codebasesignal/well-specifiedClear requirements and acceptance criteriaClear requirements and acceptance criteriastage/triagedAI triage complete — scored and classifiedAI triage complete — scored and classifiedtype/bugSomething is brokenSomething is broken
Milestone
Description
During AutoMatch, the Mapper logs each AI attempt in the row's history. Three of those log() calls don't pass the row index. log() (L1718) then falls back to rowIndex, which is the row open in the side panel, or a null key when no row is open. So the entry lands on the wrong row, not the row the AI was called for:
| Line | Entry | When |
|---|---|---|
| L5845 | AIRecommendationLimitReached |
the AI Assistant's response is a quota or preview-limit error |
| L5852 | AIRecommendation with extras.error |
the AI Assistant answers with detail (a failed analysis) |
| L5885 | AIRecommendationLimitReached |
the call throws a quota or preview-limit error |
The other three AIRecommendation calls (L5794, L5838, L5864) pass __index correctly.
Effect
- A row's history can show an AI failure or quota stop that happened on another row. Meanwhile the row it really happened on shows nothing.
- Anything that reads the saved row logs can't tell which row's AI step failed. That includes support questions ("why did this row get no AI analysis?") and scripts that look for rows to re-run.
Fix
- Pass
__indexas the second argument in the three calls, as the other three do. - At L5845 and L5885,
handlePreviewLimitErroralready getsisSuperseded() ? null : __index. Decide whether a superseded call should log at all, and make the two consistent. - Add a test: during a bulk run, every
AIRecommendation*entry is recorded under the row being analysed.
Found while writing a script that reads saved row logs to find rows whose AI step failed.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
component/mapperMapping toolsMapping toolsdecision/ai-readyReady for autonomous AI executionReady for autonomous AI executionpipeline/session-doneA session worker opened a PR; remove to allow another runA session worker opened a PR; remove to allow another runsignal/low-riskSafe to execute with minimal downsideSafe to execute with minimal downsidesignal/quick-winLow complexity, high clarity — easy winLow complexity, high clarity — easy winsignal/small-scopeLimited to a small part of the codebaseLimited to a small part of the codebasesignal/well-specifiedClear requirements and acceptance criteriaClear requirements and acceptance criteriastage/triagedAI triage complete — scored and classifiedAI triage complete — scored and classifiedtype/bugSomething is brokenSomething is broken
Activity
ocl-automation commentedon Oct 8, 2026
Automated Triage — 2026-10-08
Decision:
decision/ai-readyType:
type/bugSignals:
signal/quick-win,signal/low-risk,signal/small-scope,signal/well-specifiedThe fix is to pass
__indexas the second argument in threelog()calls inMapProject.jsx, plus a test. The issue gives exact lines and the correct pattern from the other three calls. The only design question, whether a superseded call should log at all, is an implementation choice the issue leaves to the implementer. Risk is low because the effect is misfiled AI log entries, not data loss or a broken feature. The P5 milestone means it is not urgent.Generated by ticket-triage pipeline v3. Model: anthropic/claude-sonnet-5.5 (openrouter).
closes OpenConceptLab/ocl_issues#2887 | Simplification review: a shor…
paynejd commentedon Oct 12, 2026
Octoad's session worker opened OpenConceptLab/oclmap#98 for this ticket. It's ready for review.
The three AI log entries (two quota stops, one failed analysis) now go on the row the AI analysed, not the open row; a superseded call logs on its own row too; a new test checks every log() call in fetchRecommendation passes the row.
Codex review passes: 1. Session worker
worker-v0.11, recipelean-loop, flowpublic>public. Runopenconceptlab-ocl-issues-2887-20261012-141032, sessionocl-issu-2887-1012-141032-a1e263.Merge pull request #98 from OpenConceptLab/OpenConceptLab/ocl_issues#…
closes OpenConceptLab/ocl_issues#2887 | AI log entries go on the row …