writeHallNote stacks a second frontmatter block instead of merging (75 wiki notes affected) #86
Closed
opened 2026-07-26 21:12:15 +00:00 by mathias
·
1 comment
No Branch/Tag Specified
main
fix/pipeline-writes-158
fix/edit-path-io-192
fix/create-regular-188
fix/guard-special-179
fix/linkcheck-keeps-write-178
fix/write-dir-redirect-173
fix/tunnel-detect-174
fix/pipeline-root-157
w3/154-mcp-auth-wiring
fix/tunnel-traversal
test/in-brain-targets-171
fix/brain-scan-root-157
fix/graph-wiki-root-157
fix/vectorstore-root-157
fix/notes-root-157
fix/search-root-157
fix/brainwide-root-157
fix/raw-symlinks-153
feat/symlink-tripwire-157
fix/rest-auth-149
fix/123-brain-edit-envelope-check
feat/106-page-aware-extraction
fix/105-source-drift-on-main
fix/104-surface-merge-conflicts-on-main
agent/b1-compile-on-ingest
agent/104-surface-merge-conflicts
agent/105-source-drift
agent/107-loud-unconfigured-alerting
feat/brain-read-edit
fix/capture-i1-refusal-names-target
renovate/configure
feat/consolidate-single-harness
icebox/cmd-routing
feat/brain-pending-promote
fix/close-session-classification-refresh
fix/capture-summarywriter
v0.24.0
v0.23.1
v0.23.0
v0.22.0
v0.21.1
v0.21.0
v0.20.1
v0.20.0
v0.19.1
v0.19.0
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.0
v0.16.1
v0.16.0
v0.15.0
v0.14.0
v0.13.2
v0.13.1
v0.13.0
v0.12.1
v0.12.0
v0.11.2
icebox/cmd-routing-2026-07-01
v0.11.1
v0.11.0
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v0.4.0
v0.3.0
v0.2.0
v0.1.0
Labels
Clear labels
agent/ready
blocked/client
blocked/supplier
blocked/upstream
risk/high
risk/low
risk/medium
size/l
size/m
size/s
size/xs
status:dispatch
status:dispatched
status:review
status:reviewing
type/chore
type/decision
type/docs
type/feat
type/fix
type/ops
type/research
type/test
Meets the agent-ready contract; authorizes unattended execution
Waiting on the client
Waiting on a supplier
Waiting on an upstream project or vendor
Irreversible, security-relevant, or control plane
Reversible, local, test-covered
Touches shared state, deploys or data
Too big - split it
Under two days
Under half a day
Under an hour
Maintenance, no behaviour change
Human decision required; never agent/ready
Documentation only
New capability
Corrects broken behaviour
Infrastructure, deploy, runtime
Investigate; output is a finding, not code
Test coverage only
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mathias/hyperguild#86
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
75 files under
wiki/homelab/**,wiki/agentsquad/**,wiki/hyperguild/**etc. have TWO---...---frontmatter blocks stacked back to back:(example:
wiki/homelab/failures/act-runner-host-executor-tmp-persists.md)A standard frontmatter parser only reads the first block — every affected file's
title/tagsbecome invisible to anything but grep. Likely explains several existing brain-gardener audit "malformed: missing title" / "malformed: empty body" findings (e.g.wiki/homelab/decisions/gitea-authentik-sso-plus-mcp-pat-passthrough-2026-07-22.md).Root cause (confirmed)
ingestion/internal/api/handler.go,writeHallNote:opts.Contentcan already carry its own---\ntitle:...\n---frontmatter block (e.g. from an upstream extraction/promotion step) — this unconditionally prepends a second block instead of parsing and merging into the existing one.Scope
Parse any existing frontmatter block out of
opts.Contentbefore prepending; mergewing/hall/created_at/type/domain/source_typeinto that single block (existing fields win on conflict, or make precedence an explicit decision) instead of stacking a second block. Then batch-repair the 75 already-affected files (merge their two blocks into one).Acceptance criteria
writeHallNotegivenopts.Contentthat already has frontmatter produces exactly one merged block.Code fix in hyperguild@1001acf:
splitFrontmatterpullsopts.Content's own frontmatter fields out first;wing/hall/created_atare always fresh-injected,type/domain/source_typeprefer the note's own existing value over the opts fallback, remaining fields carried through verbatim into one merged block. Regression tests added, fullgo test ./...green.Batch-repaired all currently-affected files in
mathias/brain(67, not 75 — count moved since filing; some were independently fixed by brain-gardener in the interim, 6 more had appeared from fresh ingests before the code fix landed). Pushed asmathias/brain@b36dfae, rebased cleanly onto brain's live auto-sync main (one conflict, resolved in favor of brain-gardener's already-applied fix for that file). Verified: zero remaining stacked-frontmatter files, all merged blocks parse as valid YAML except a separate pre-existing bug (unquoted colons in titles) — filed as #90, not caused by or related to this fix.