main · last commit
6 hours ago ·
ti41arbu
sr-ht-dolt-x5f Resolve favicon via assets.Resolve instead of hardcoded fs.Stat + literal name
Lined Up
bd update sr-ht-dolt-x5f --claim
bd close sr-ht-dolt-x5f
| Created by | Eugene Blikh |
| Owner | bigbes@gmail.com |
| Created | 2026-08-17T20:39:52Z |
| Updated | 2026-08-17T20:39:52Z |
What is wrong: `sourcehut-dolt/web/router.go` links its favicon by a hardcoded literal name (`const faviconFile = "logo.svg"`), guarded by `fs.Stat`, plus `NormalizePrefix(...) + faviconFile`, instead of resolving it through `assets.Resolve` like the rest of the family. Why it matters: dolt's `fs.Stat` guard does avoid a 404-on-every-page failure if the file goes missing, but it keeps two spellings of the same decision live in the family, and — unlike `assets.Resolve` — it will not pick up a hashed/renamed icon. specs' own layout comment argues the general case explicitly: "a path a template asserts is one that 404s on every page load if the file is ever renamed or hashed." Behaviorally equivalent to the correct pattern today, but structurally divergent and fragile to a future rename. Sibling that already does it correctly: tokens, coverage, specs, and artifacts all resolve their favicon through `assets.Resolve`. Fix: replace the `fs.Stat` + literal-name logic with `assets.Resolve(static, "logo.*svg", assets.DefaultPrefix)`. Status: verified. Audit: D36 (cross-repo audit, 2026-08-17)
No outgoing dependencies.
Nothing depends on this issue.
| id | sr-ht-dolt-x5f |
| content_hash | 263bd20b7887ab90a687973c7d3683fae1294e1f0e58657601709ca497c8f10e |
| title | Resolve favicon via assets.Resolve instead of hardcoded fs.Stat + literal name |
| description | What is wrong: `sourcehut-dolt/web/router.go` links its favicon by a hardcoded literal name (`const faviconFile = "logo.svg"`), guarded by `fs.Stat`, plus `NormalizePrefix(...) + faviconFile`, instead of resolving it through `assets.Resolve` like the rest of the family. Why it matters: dolt's `fs.Stat` guard does avoid a 404-on-every-page failure if the file goes missing, but it keeps two spellings of the same decision live in the family, and — unlike `assets.Resolve` — it will not pick up a hashed/renamed icon. specs' own layout comment argues the general case explicitly: "a path a template asserts is one that 404s on every page load if the file is ever renamed or hashed." Behaviorally equivalent to the correct pattern today, but structurally divergent and fragile to a future rename. Sibling that already does it correctly: tokens, coverage, specs, and artifacts all resolve their favicon through `assets.Resolve`. Fix: replace the `fs.Stat` + literal-name logic with `assets.Resolve(static, "logo.*svg", assets.DefaultPrefix)`. Status: verified. Audit: D36 (cross-repo audit, 2026-08-17) |
| design | |
| acceptance_criteria | |
| notes | |
| status | open |
| priority | 3 |
| issue_type | task |
| assignee | NULL |
| estimated_minutes | NULL |
| created_at | 2026-08-17T20:39:52Z |
| created_by | Eugene Blikh |
| owner | bigbes@gmail.com |
| updated_at | 2026-08-17T20:39:52Z |
| closed_at | NULL |
| 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 | |
| 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 | NULL |
| is_blocked | 0 |
| id | 01a01173-ba84-7a41-883d-e5acb3ab3c1c |
| issue_id | sr-ht-dolt-x5f |
| event_type | created |
| actor | Eugene Blikh |
| old_value | |
| new_value | |
| comment | NULL |
| created_at | 2026-08-17T23:39:52Z |
No comments.