~bigbes/sr-ht-dolt · parade

main · last commit 6 hours ago · ti41arbu

← Back to the parade

sr-ht-dolt-ux7 browse.Log reports an unparseable start hash as an internal failure Past Stand

status: closed P3 bug
bd reopen sr-ht-dolt-ux7
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-08-13T05:46:20Z
Started2026-08-13T06:27:39Z
Updated2026-08-13T06:35:00Z
Closed2026-08-13T06:35:00Z
Description
browse.Log classifies a from-hash that is not a parseable dolt hash with a plain fmt.Errorf and has no sentinel for it, so a caller that hands over a mistyped cursor is told the service broke rather than that the ref does not exist. Found while building the MCP get_commit_log cursor (7a77409): mcpsrv cannot classify it without parsing a hash format that browse/ owns, so the fix belongs in browse/.
Design
Wrap the MaybeParse arm of Log in ErrRefNotFound, the sentinel the package already uses for "this ref names nothing". mcpsrv then answers it as the ordinary miss it is, through the refMiss classifier that already exists.
Acceptance criteria
browse test: a garbage from-hash returns an error satisfying errors.Is(err, ErrRefNotFound); the MCP tool answers it as a miss rather than an internal error.

Depends on

No outgoing dependencies.

Depended on by

Nothing depends on this issue.

No comments.

Close reason

Landed in 2c8903f: the MaybeParse arm plus two more the agent found by testing rather than inspection — a well-formed but nonexistent from-hash reaching the topological iterator, and the same shape in resolveCommit — all wrapped in ErrRefNotFound via datas.ErrCommitNotFound. Genuine failures stay unwrapped, so 'not there' and 'could not answer' remain distinguishable.
  • Eugene Blikh created the issue · 2026-08-13T08:46:19Z
  • Eugene Blikh changed status to in_progress · 2026-08-13T09:27:38Z
  • Eugene Blikh closed the issue · 2026-08-13T09:34:59Z
    Landed in 2c8903f: the MaybeParse arm plus two more the agent found by testing rather than inspection — a well-formed but nonexistent from-hash reaching the topological iterator, and the same shape in resolveCommit — all wrapped in ErrRefNotFound via datas.ErrCommitNotFound. Genuine failures stay unwrapped, so 'not there' and 'could not answer' remain distinguishable.
Stored rows — what this pane was built from, as read
issues 1 row
id sr-ht-dolt-ux7
content_hash 4b1926735da5ca79103be3182a885d250e69d467de48e359793621e66cb29728
title browse.Log reports an unparseable start hash as an internal failure
description browse.Log classifies a from-hash that is not a parseable dolt hash with a plain fmt.Errorf and has no sentinel for it, so a caller that hands over a mistyped cursor is told the service broke rather than that the ref does not exist. Found while building the MCP get_commit_log cursor (7a77409): mcpsrv cannot classify it without parsing a hash format that browse/ owns, so the fix belongs in browse/.
design Wrap the MaybeParse arm of Log in ErrRefNotFound, the sentinel the package already uses for "this ref names nothing". mcpsrv then answers it as the ordinary miss it is, through the refMiss classifier that already exists.
acceptance_criteria browse test: a garbage from-hash returns an error satisfying errors.Is(err, ErrRefNotFound); the MCP tool answers it as a miss rather than an internal error.
notes
status closed
priority 3
issue_type bug
assignee NULL
estimated_minutes NULL
created_at 2026-08-13T05:46:20Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-08-13T06:35:00Z
closed_at 2026-08-13T06:35:00Z
closed_by_session
external_ref NULL
spec_id
compaction_level 0
compacted_at NULL
compacted_at_commit NULL
original_size NULL
sender
ephemeral 0
wisp_type
pinned 0
is_template 0
mol_type
work_type
source_system
metadata �{}
source_repo
close_reason Landed in 2c8903f: the MaybeParse arm plus two more the agent found by testing rather than inspection — a well-formed but nonexistent from-hash reaching the topological iterator, and the same shape in resolveCommit — all wrapped in ErrRefNotFound via datas.ErrCommitNotFound. Genuine failures stay unwrapped, so 'not there' and 'could not answer' remain distinguishable.
event_kind
actor
target
payload
await_type
await_id
timeout_ns 0
waiters
hook_bead
role_bead
agent_state
last_activity NULL
role_type
rig
due_at NULL
defer_until NULL
no_history 0
started_at 2026-08-13T06:27:39Z
is_blocked 0
events 3 rows
id 019ff9a8-3bc1-7242-b846-44f2f18abc3b
issue_id sr-ht-dolt-ux7
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-08-13T08:46:19Z
id 019ff9ce-0f48-75e3-9b86-b1c4e7714b6d
issue_id sr-ht-dolt-ux7
event_type status_changed
actor Eugene Blikh
old_value {"id":"sr-ht-dolt-ux7","title":"browse.Log reports an unparseable start hash as an internal failure","description":"browse.Log classifies a from-hash that is not a parseable dolt hash with a plain fmt.Errorf and has no sentinel for it, so a caller that hands over a mistyped cursor is told the service broke rather than that the ref does not exist. Found while building the MCP get_commit_log cursor (7a77409): mcpsrv cannot classify it without parsing a hash format that browse/ owns, so the fix belongs in browse/.","design":"Wrap the MaybeParse arm of Log in ErrRefNotFound, the sentinel the package already uses for \"this ref names nothing\". mcpsrv then answers it as the ordinary miss it is, through the refMiss classifier that already exists.","acceptance_criteria":"browse test: a garbage from-hash returns an error satisfying errors.Is(err, ErrRefNotFound); the MCP tool answers it as a miss rather than an internal error.","status":"open","priority":3,"issue_type":"bug","owner":"bigbes@gmail.com","created_at":"2026-08-13T05:46:20Z","created_by":"Eugene Blikh","updated_at":"2026-08-13T05:46:20Z"}
new_value {"status":"in_progress"}
comment NULL
created_at 2026-08-13T09:27:38Z
id 019ff9d4-c836-7e2c-aca6-98b555761b98
issue_id sr-ht-dolt-ux7
event_type closed
actor Eugene Blikh
old_value
new_value Landed in 2c8903f: the MaybeParse arm plus two more the agent found by testing rather than inspection — a well-formed but nonexistent from-hash reaching the topological iterator, and the same shape in resolveCommit — all wrapped in ErrRefNotFound via datas.ErrCommitNotFound. Genuine failures stay unwrapped, so 'not there' and 'could not answer' remain distinguishable.
comment NULL
created_at 2026-08-13T09:34:59Z