~bigbes/sr-ht-spec · parade

main · last commit 18 hours ago · 8tmadfpi

← Back to the parade

spec-wcr Loose ends from Phases 1-2 (latent bugs, no user impact yet) Past Stand

status: closed P3 chore @Eugene Blikh
bd reopen spec-wcr
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-07-23T04:09:52Z
Started2026-07-24T18:07:15Z
Updated2026-07-24T18:12:42Z
Closed2026-07-24T18:12:42Z
Description
Real issues agents flagged and deliberately left alone during the parallel build. None blocks anything today; each is a trap for a later phase.
Design
1. ProposalBranch derived THREE ways: core.ProposalBranch (canonical), and a third copy in SQL — db.OpenProposal concatenates prefix||serial in its INSERT to allocate id+branch atomically. Shares the prefix constant but not the function; reconcile if they can ever diverge. 2. doc.linkHierarchy passes path.Dir(p.Path) i.e. '.' as fromDir where every other call site uses DirOf ('') — section-proximity lookup misses for root-level parent: targets. Latent; fixing changes resolution behaviour. 3. doc.SplitLog collides entry IDs within a space (two type:log docs -> identical IDs -> second silently overwrites first in one index). Defended in search/ but should be fixed at source in doc/. 4. doc.Scan/DocumentSource are production-dead after service.Archive landed — they're the documented seam but also the API that made web's layering violation writable; delete is a judgement call. 5. mcpsrv ships a beforeCAS test hook in production code (gitx too). 6. No GraphQL complexity limit — service authenticates on its own router, not core-go's WithSchema, so nothing bounds query cost; low risk on a single-user authed surface. 7. Attachments: gitx walks .md only, so image embeds render as visibly-missing; needs WalkBlobs + asset index, or prefer Mermaid by convention.
Notes
RESOLVED 2026-07-24. All 7 items dispositioned.

#1 ProposalBranch 3rd copy in OpenProposal SQL — FIXED (e97532c), guard test.

#2 linkHierarchy path.Dir vs DirOf — FIXED. Prior triage called this a
judgement call that 'changes resolution behaviour'; that was wrong. Traced it:
path.Dir and DirOf differ only for root-level documents, and there the
section-proximity step (stemsIn[topSection(fromDir)+'/'+bare]) is subsumed by
the same-directory step above it — stemsIn['/x'] is populated only by a root
x.md, which byPath['x.md'] already returned. So '.' only ever skipped a lookup
that had already answered. VERIFIED by reverting to path.Dir and re-running:
identical results. Changed to DirOf as trap-removal, with
TestParentResolvesLikeAWikilinkFromTheSameDocument pinning the invariant
(parent: resolves to what the same wikilink in the body resolves to).

#3 SplitLog id collision — WONTFIX. Already correctly defended in
search/extract.go; 'fixing at source' would push index-keyspace uniqueness into
doc/, which shouldn't know it is indexed into a shared space index.

#4 delete doc.Scan/DocumentSource — DONE. Confirmed production-dead (only
consumer was doc's own test fixture). Deleted both; doc/ now owns no way to read
a revision, leaving service.Archive as the single route from rev to Archive —
closing the seam that made web's layering violation writable. doc test fixture
rewritten onto ListDocuments+FromDocuments; TestScanReportsGitErrors relocated
to gitx as TestWalkOfAnUnknownRevisionFails (gitx had no unknown-rev coverage).

#5 beforeCAS test hook — WONTFIX. Unexported, set only by same-package tests,
cannot be set externally. Standard test-seam pattern; mcpsrv has no such hook.

#6 GraphQL complexity limit — moved to spec-by6.1 (feature, Phase 5).
#7 attachments — moved to spec-by6.2 (feature, Phase 5).

Depends on

  • spec-ejq — spec.sr.ht — reviewable document storage for humans and agents parent-child open

Depended on by

Nothing depends on this issue.

No comments.

Close reason

All 7 items dispositioned: 2 fixed (#1,#2), 1 deleted (#4), 2 wontfix (#3,#5), 2 moved to Phase 5 (spec-by6.1, spec-by6.2).
  • Eugene Blikh added under epic spec-ejq · 2026-07-23T07:09:52Z
  • Eugene Blikh created the issue · 2026-07-23T07:09:52Z
  • Eugene Blikh updated notes to Triage 2026-07-24 (post Phase 5a). Investigated all 7 items: #1 ProposalBranch 3rd copy in OpenProposal SQL — DONE (commit e97532c): pure-Go guard test TestOpenProposalBranchMatchesCanonical asserts BranchPrefix||id == core.ProposalBranch(id). No behavior change. #2 linkHierarchy path.Dir vs DirOf — JUDGEMENT CALL, deferred. Fixing changes link-resolution behavior for root-level parent: targets; needs a design decision + fixture confirming intended resolution before touching. #3 SplitLog id collision — NOT A BUG as feared. Already correctly defended in search/extract.go (logEntries substitutes p.ID for the log# prefix → space-unique). "Fix at source in doc/" would push search-index-keyspace uniqueness into doc/, which shouldn't know it's indexed into a shared space index. Current layering (doc/ = within-doc identity, search/ = index-key uniqueness) is arguably correct. Recommend WONTFIX unless a second SplitLog consumer appears. #4 delete doc.Scan/DocumentSource — JUDGEMENT CALL (deletion), deferred. Production-dead after service.Archive; also the seam that made web's layering violation writable. Lean delete, but confirm no external/test reliance first. #5 beforeCAS "test hook in production" — NOT A BUG. gitx.beforeCAS is an unexported field set only by same-package tests (write_test/merge_test); zero prod cost, cannot be set externally. Standard test-seam pattern. mcpsrv has no such hook (item wording conflated). Recommend WONTFIX. #6 no GraphQL complexity limit — FEATURE, deferred. Low risk on single-user authed surface; wire only if /query is ever widened. #7 attachments (gitx walks .md only) — FEATURE, deferred. Real work: WalkBlobs + asset index, or adopt Mermaid-by-convention. Phase 5+ scope. Actionable-now clear win (#1) done. Remainder are judgement calls (#2,#4), non-issues (#3,#5), or features (#6,#7) — each needs a decision, not mechanical fixing. · 2026-07-24T20:03:42Z
  • Eugene Blikh claimed · 2026-07-24T21:07:15Z
  • Eugene Blikh updated notes to RESOLVED 2026-07-24. All 7 items dispositioned. #1 ProposalBranch 3rd copy in OpenProposal SQL — FIXED (e97532c), guard test. #2 linkHierarchy path.Dir vs DirOf — FIXED. Prior triage called this a judgement call that 'changes resolution behaviour'; that was wrong. Traced it: path.Dir and DirOf differ only for root-level documents, and there the section-proximity step (stemsIn[topSection(fromDir)+'/'+bare]) is subsumed by the same-directory step above it — stemsIn['/x'] is populated only by a root x.md, which byPath['x.md'] already returned. So '.' only ever skipped a lookup that had already answered. VERIFIED by reverting to path.Dir and re-running: identical results. Changed to DirOf as trap-removal, with TestParentResolvesLikeAWikilinkFromTheSameDocument pinning the invariant (parent: resolves to what the same wikilink in the body resolves to). #3 SplitLog id collision — WONTFIX. Already correctly defended in search/extract.go; 'fixing at source' would push index-keyspace uniqueness into doc/, which shouldn't know it is indexed into a shared space index. #4 delete doc.Scan/DocumentSource — DONE. Confirmed production-dead (only consumer was doc's own test fixture). Deleted both; doc/ now owns no way to read a revision, leaving service.Archive as the single route from rev to Archive — closing the seam that made web's layering violation writable. doc test fixture rewritten onto ListDocuments+FromDocuments; TestScanReportsGitErrors relocated to gitx as TestWalkOfAnUnknownRevisionFails (gitx had no unknown-rev coverage). #5 beforeCAS test hook — WONTFIX. Unexported, set only by same-package tests, cannot be set externally. Standard test-seam pattern; mcpsrv has no such hook. #6 GraphQL complexity limit — moved to spec-by6.1 (feature, Phase 5). #7 attachments — moved to spec-by6.2 (feature, Phase 5). · 2026-07-24T21:12:41Z
  • Eugene Blikh closed the issue · 2026-07-24T21:12:41Z
    All 7 items dispositioned: 2 fixed (#1,#2), 1 deleted (#4), 2 wontfix (#3,#5), 2 moved to Phase 5 (spec-by6.1, spec-by6.2).
Stored rows — what this pane was built from, as read
issues 1 row
id spec-wcr
content_hash 49e00deebe86e55d30ead451d2a2418250908bba4a3cc686046e357c75088b29
title Loose ends from Phases 1-2 (latent bugs, no user impact yet)
description Real issues agents flagged and deliberately left alone during the parallel build. None blocks anything today; each is a trap for a later phase.
design 1. ProposalBranch derived THREE ways: core.ProposalBranch (canonical), and a third copy in SQL — db.OpenProposal concatenates prefix||serial in its INSERT to allocate id+branch atomically. Shares the prefix constant but not the function; reconcile if they can ever diverge. 2. doc.linkHierarchy passes path.Dir(p.Path) i.e. '.' as fromDir where every other call site uses DirOf ('') — section-proximity lookup misses for root-level parent: targets. Latent; fixing changes resolution behaviour. 3. doc.SplitLog collides entry IDs within a space (two type:log docs -> identical IDs -> second silently overwrites first in one index). Defended in search/ but should be fixed at source in doc/. 4. doc.Scan/DocumentSource are production-dead after service.Archive landed — they're the documented seam but also the API that made web's layering violation writable; delete is a judgement call. 5. mcpsrv ships a beforeCAS test hook in production code (gitx too). 6. No GraphQL complexity limit — service authenticates on its own router, not core-go's WithSchema, so nothing bounds query cost; low risk on a single-user authed surface. 7. Attachments: gitx walks .md only, so image embeds render as visibly-missing; needs WalkBlobs + asset index, or prefer Mermaid by convention.
acceptance_criteria
notes RESOLVED 2026-07-24. All 7 items dispositioned. #1 ProposalBranch 3rd copy in OpenProposal SQL — FIXED (e97532c), guard test. #2 linkHierarchy path.Dir vs DirOf — FIXED. Prior triage called this a judgement call that 'changes resolution behaviour'; that was wrong. Traced it: path.Dir and DirOf differ only for root-level documents, and there the section-proximity step (stemsIn[topSection(fromDir)+'/'+bare]) is subsumed by the same-directory step above it — stemsIn['/x'] is populated only by a root x.md, which byPath['x.md'] already returned. So '.' only ever skipped a lookup that had already answered. VERIFIED by reverting to path.Dir and re-running: identical results. Changed to DirOf as trap-removal, with TestParentResolvesLikeAWikilinkFromTheSameDocument pinning the invariant (parent: resolves to what the same wikilink in the body resolves to). #3 SplitLog id collision — WONTFIX. Already correctly defended in search/extract.go; 'fixing at source' would push index-keyspace uniqueness into doc/, which shouldn't know it is indexed into a shared space index. #4 delete doc.Scan/DocumentSource — DONE. Confirmed production-dead (only consumer was doc's own test fixture). Deleted both; doc/ now owns no way to read a revision, leaving service.Archive as the single route from rev to Archive — closing the seam that made web's layering violation writable. doc test fixture rewritten onto ListDocuments+FromDocuments; TestScanReportsGitErrors relocated to gitx as TestWalkOfAnUnknownRevisionFails (gitx had no unknown-rev coverage). #5 beforeCAS test hook — WONTFIX. Unexported, set only by same-package tests, cannot be set externally. Standard test-seam pattern; mcpsrv has no such hook. #6 GraphQL complexity limit — moved to spec-by6.1 (feature, Phase 5). #7 attachments — moved to spec-by6.2 (feature, Phase 5).
status closed
priority 3
issue_type chore
assignee Eugene Blikh
estimated_minutes NULL
created_at 2026-07-23T04:09:52Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-07-24T18:12:42Z
closed_at 2026-07-24T18:12:42Z
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 All 7 items dispositioned: 2 fixed (#1,#2), 1 deleted (#4), 2 wontfix (#3,#5), 2 moved to Phase 5 (spec-by6.1, spec-by6.2).
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-07-24T18:07:15Z
is_blocked 0
dependencies 1 row
id 942e2413-03bf-539b-ac4a-a15e86560648
issue_id spec-wcr
type parent-child
created_at 2026-07-23T07:09:52Z
created_by Eugene Blikh
metadata �{}
thread_id
depends_on_issue_id spec-ejq
depends_on_wisp_id NULL
depends_on_external NULL
events 5 rows
id 019f8d2a-5ea5-7e9e-aab2-44c0ca2eb3c7
issue_id spec-wcr
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-07-23T07:09:52Z
id 019f9515-34a5-7a5c-8fe0-0e1298c0b6dc
issue_id spec-wcr
event_type updated
actor Eugene Blikh
old_value {"id":"spec-wcr","title":"Loose ends from Phases 1-2 (latent bugs, no user impact yet)","description":"Real issues agents flagged and deliberately left alone during the parallel build. None blocks anything today; each is a trap for a later phase.","design":"1. ProposalBranch derived THREE ways: core.ProposalBranch (canonical), and a third copy in SQL — db.OpenProposal concatenates prefix||serial in its INSERT to allocate id+branch atomically. Shares the prefix constant but not the function; reconcile if they can ever diverge. 2. doc.linkHierarchy passes path.Dir(p.Path) i.e. '.' as fromDir where every other call site uses DirOf ('') — section-proximity lookup misses for root-level parent: targets. Latent; fixing changes resolution behaviour. 3. doc.SplitLog collides entry IDs within a space (two type:log docs -\u003e identical IDs -\u003e second silently overwrites first in one index). Defended in search/ but should be fixed at source in doc/. 4. doc.Scan/DocumentSource are production-dead after service.Archive landed — they're the documented seam but also the API that made web's layering violation writable; delete is a judgement call. 5. mcpsrv ships a beforeCAS test hook in production code (gitx too). 6. No GraphQL complexity limit — service authenticates on its own router, not core-go's WithSchema, so nothing bounds query cost; low risk on a single-user authed surface. 7. Attachments: gitx walks .md only, so image embeds render as visibly-missing; needs WalkBlobs + asset index, or prefer Mermaid by convention.","status":"open","priority":3,"issue_type":"chore","owner":"bigbes@gmail.com","created_at":"2026-07-23T04:09:52Z","created_by":"Eugene Blikh","updated_at":"2026-07-23T04:09:52Z"}
new_value {"notes":"Triage 2026-07-24 (post Phase 5a). Investigated all 7 items:\n\n#1 ProposalBranch 3rd copy in OpenProposal SQL — DONE (commit e97532c): pure-Go guard test TestOpenProposalBranchMatchesCanonical asserts BranchPrefix||id == core.ProposalBranch(id). No behavior change.\n\n#2 linkHierarchy path.Dir vs DirOf — JUDGEMENT CALL, deferred. Fixing changes link-resolution behavior for root-level parent: targets; needs a design decision + fixture confirming intended resolution before touching.\n\n#3 SplitLog id collision — NOT A BUG as feared. Already correctly defended in search/extract.go (logEntries substitutes p.ID for the log# prefix → space-unique). \"Fix at source in doc/\" would push search-index-keyspace uniqueness into doc/, which shouldn't know it's indexed into a shared space index. Current layering (doc/ = within-doc identity, search/ = index-key uniqueness) is arguably correct. Recommend WONTFIX unless a second SplitLog consumer appears.\n\n#4 delete doc.Scan/DocumentSource — JUDGEMENT CALL (deletion), deferred. Production-dead after service.Archive; also the seam that made web's layering violation writable. Lean delete, but confirm no external/test reliance first.\n\n#5 beforeCAS \"test hook in production\" — NOT A BUG. gitx.beforeCAS is an unexported field set only by same-package tests (write_test/merge_test); zero prod cost, cannot be set externally. Standard test-seam pattern. mcpsrv has no such hook (item wording conflated). Recommend WONTFIX.\n\n#6 no GraphQL complexity limit — FEATURE, deferred. Low risk on single-user authed surface; wire only if /query is ever widened.\n\n#7 attachments (gitx walks .md only) — FEATURE, deferred. Real work: WalkBlobs + asset index, or adopt Mermaid-by-convention. Phase 5+ scope.\n\nActionable-now clear win (#1) done. Remainder are judgement calls (#2,#4), non-issues (#3,#5), or features (#6,#7) — each needs a decision, not mechanical fixing."}
comment NULL
created_at 2026-07-24T20:03:42Z
id 019f954f-6055-774f-a234-abcf74285aba
issue_id spec-wcr
event_type claimed
actor Eugene Blikh
old_value {"id":"spec-wcr","title":"Loose ends from Phases 1-2 (latent bugs, no user impact yet)","description":"Real issues agents flagged and deliberately left alone during the parallel build. None blocks anything today; each is a trap for a later phase.","design":"1. ProposalBranch derived THREE ways: core.ProposalBranch (canonical), and a third copy in SQL — db.OpenProposal concatenates prefix||serial in its INSERT to allocate id+branch atomically. Shares the prefix constant but not the function; reconcile if they can ever diverge. 2. doc.linkHierarchy passes path.Dir(p.Path) i.e. '.' as fromDir where every other call site uses DirOf ('') — section-proximity lookup misses for root-level parent: targets. Latent; fixing changes resolution behaviour. 3. doc.SplitLog collides entry IDs within a space (two type:log docs -\u003e identical IDs -\u003e second silently overwrites first in one index). Defended in search/ but should be fixed at source in doc/. 4. doc.Scan/DocumentSource are production-dead after service.Archive landed — they're the documented seam but also the API that made web's layering violation writable; delete is a judgement call. 5. mcpsrv ships a beforeCAS test hook in production code (gitx too). 6. No GraphQL complexity limit — service authenticates on its own router, not core-go's WithSchema, so nothing bounds query cost; low risk on a single-user authed surface. 7. Attachments: gitx walks .md only, so image embeds render as visibly-missing; needs WalkBlobs + asset index, or prefer Mermaid by convention.","notes":"Triage 2026-07-24 (post Phase 5a). Investigated all 7 items:\n\n#1 ProposalBranch 3rd copy in OpenProposal SQL — DONE (commit e97532c): pure-Go guard test TestOpenProposalBranchMatchesCanonical asserts BranchPrefix||id == core.ProposalBranch(id). No behavior change.\n\n#2 linkHierarchy path.Dir vs DirOf — JUDGEMENT CALL, deferred. Fixing changes link-resolution behavior for root-level parent: targets; needs a design decision + fixture confirming intended resolution before touching.\n\n#3 SplitLog id collision — NOT A BUG as feared. Already correctly defended in search/extract.go (logEntries substitutes p.ID for the log# prefix → space-unique). \"Fix at source in doc/\" would push search-index-keyspace uniqueness into doc/, which shouldn't know it's indexed into a shared space index. Current layering (doc/ = within-doc identity, search/ = index-key uniqueness) is arguably correct. Recommend WONTFIX unless a second SplitLog consumer appears.\n\n#4 delete doc.Scan/DocumentSource — JUDGEMENT CALL (deletion), deferred. Production-dead after service.Archive; also the seam that made web's layering violation writable. Lean delete, but confirm no external/test reliance first.\n\n#5 beforeCAS \"test hook in production\" — NOT A BUG. gitx.beforeCAS is an unexported field set only by same-package tests (write_test/merge_test); zero prod cost, cannot be set externally. Standard test-seam pattern. mcpsrv has no such hook (item wording conflated). Recommend WONTFIX.\n\n#6 no GraphQL complexity limit — FEATURE, deferred. Low risk on single-user authed surface; wire only if /query is ever widened.\n\n#7 attachments (gitx walks .md only) — FEATURE, deferred. Real work: WalkBlobs + asset index, or adopt Mermaid-by-convention. Phase 5+ scope.\n\nActionable-now clear win (#1) done. Remainder are judgement calls (#2,#4), non-issues (#3,#5), or features (#6,#7) — each needs a decision, not mechanical fixing.","status":"open","priority":3,"issue_type":"chore","owner":"bigbes@gmail.com","created_at":"2026-07-23T04:09:52Z","created_by":"Eugene Blikh","updated_at":"2026-07-24T17:03:43Z"}
new_value {"assignee":"Eugene Blikh","status":"in_progress"}
comment NULL
created_at 2026-07-24T21:07:15Z
id 019f9554-5a0e-7d75-b4f4-ff8a54fb1449
issue_id spec-wcr
event_type updated
actor Eugene Blikh
old_value {"id":"spec-wcr","title":"Loose ends from Phases 1-2 (latent bugs, no user impact yet)","description":"Real issues agents flagged and deliberately left alone during the parallel build. None blocks anything today; each is a trap for a later phase.","design":"1. ProposalBranch derived THREE ways: core.ProposalBranch (canonical), and a third copy in SQL — db.OpenProposal concatenates prefix||serial in its INSERT to allocate id+branch atomically. Shares the prefix constant but not the function; reconcile if they can ever diverge. 2. doc.linkHierarchy passes path.Dir(p.Path) i.e. '.' as fromDir where every other call site uses DirOf ('') — section-proximity lookup misses for root-level parent: targets. Latent; fixing changes resolution behaviour. 3. doc.SplitLog collides entry IDs within a space (two type:log docs -\u003e identical IDs -\u003e second silently overwrites first in one index). Defended in search/ but should be fixed at source in doc/. 4. doc.Scan/DocumentSource are production-dead after service.Archive landed — they're the documented seam but also the API that made web's layering violation writable; delete is a judgement call. 5. mcpsrv ships a beforeCAS test hook in production code (gitx too). 6. No GraphQL complexity limit — service authenticates on its own router, not core-go's WithSchema, so nothing bounds query cost; low risk on a single-user authed surface. 7. Attachments: gitx walks .md only, so image embeds render as visibly-missing; needs WalkBlobs + asset index, or prefer Mermaid by convention.","notes":"Triage 2026-07-24 (post Phase 5a). Investigated all 7 items:\n\n#1 ProposalBranch 3rd copy in OpenProposal SQL — DONE (commit e97532c): pure-Go guard test TestOpenProposalBranchMatchesCanonical asserts BranchPrefix||id == core.ProposalBranch(id). No behavior change.\n\n#2 linkHierarchy path.Dir vs DirOf — JUDGEMENT CALL, deferred. Fixing changes link-resolution behavior for root-level parent: targets; needs a design decision + fixture confirming intended resolution before touching.\n\n#3 SplitLog id collision — NOT A BUG as feared. Already correctly defended in search/extract.go (logEntries substitutes p.ID for the log# prefix → space-unique). \"Fix at source in doc/\" would push search-index-keyspace uniqueness into doc/, which shouldn't know it's indexed into a shared space index. Current layering (doc/ = within-doc identity, search/ = index-key uniqueness) is arguably correct. Recommend WONTFIX unless a second SplitLog consumer appears.\n\n#4 delete doc.Scan/DocumentSource — JUDGEMENT CALL (deletion), deferred. Production-dead after service.Archive; also the seam that made web's layering violation writable. Lean delete, but confirm no external/test reliance first.\n\n#5 beforeCAS \"test hook in production\" — NOT A BUG. gitx.beforeCAS is an unexported field set only by same-package tests (write_test/merge_test); zero prod cost, cannot be set externally. Standard test-seam pattern. mcpsrv has no such hook (item wording conflated). Recommend WONTFIX.\n\n#6 no GraphQL complexity limit — FEATURE, deferred. Low risk on single-user authed surface; wire only if /query is ever widened.\n\n#7 attachments (gitx walks .md only) — FEATURE, deferred. Real work: WalkBlobs + asset index, or adopt Mermaid-by-convention. Phase 5+ scope.\n\nActionable-now clear win (#1) done. Remainder are judgement calls (#2,#4), non-issues (#3,#5), or features (#6,#7) — each needs a decision, not mechanical fixing.","status":"in_progress","priority":3,"issue_type":"chore","assignee":"Eugene Blikh","owner":"bigbes@gmail.com","created_at":"2026-07-23T04:09:52Z","created_by":"Eugene Blikh","updated_at":"2026-07-24T18:07:15Z","started_at":"2026-07-24T18:07:15Z"}
new_value {"notes":"RESOLVED 2026-07-24. All 7 items dispositioned.\n\n#1 ProposalBranch 3rd copy in OpenProposal SQL — FIXED (e97532c), guard test.\n\n#2 linkHierarchy path.Dir vs DirOf — FIXED. Prior triage called this a\njudgement call that 'changes resolution behaviour'; that was wrong. Traced it:\npath.Dir and DirOf differ only for root-level documents, and there the\nsection-proximity step (stemsIn[topSection(fromDir)+'/'+bare]) is subsumed by\nthe same-directory step above it — stemsIn['/x'] is populated only by a root\nx.md, which byPath['x.md'] already returned. So '.' only ever skipped a lookup\nthat had already answered. VERIFIED by reverting to path.Dir and re-running:\nidentical results. Changed to DirOf as trap-removal, with\nTestParentResolvesLikeAWikilinkFromTheSameDocument pinning the invariant\n(parent: resolves to what the same wikilink in the body resolves to).\n\n#3 SplitLog id collision — WONTFIX. Already correctly defended in\nsearch/extract.go; 'fixing at source' would push index-keyspace uniqueness into\ndoc/, which shouldn't know it is indexed into a shared space index.\n\n#4 delete doc.Scan/DocumentSource — DONE. Confirmed production-dead (only\nconsumer was doc's own test fixture). Deleted both; doc/ now owns no way to read\na revision, leaving service.Archive as the single route from rev to Archive —\nclosing the seam that made web's layering violation writable. doc test fixture\nrewritten onto ListDocuments+FromDocuments; TestScanReportsGitErrors relocated\nto gitx as TestWalkOfAnUnknownRevisionFails (gitx had no unknown-rev coverage).\n\n#5 beforeCAS test hook — WONTFIX. Unexported, set only by same-package tests,\ncannot be set externally. Standard test-seam pattern; mcpsrv has no such hook.\n\n#6 GraphQL complexity limit — moved to spec-by6.1 (feature, Phase 5).\n#7 attachments — moved to spec-by6.2 (feature, Phase 5)."}
comment NULL
created_at 2026-07-24T21:12:41Z
id 019f9554-5bac-7003-9869-81c779107e05
issue_id spec-wcr
event_type closed
actor Eugene Blikh
old_value
new_value All 7 items dispositioned: 2 fixed (#1,#2), 1 deleted (#4), 2 wontfix (#3,#5), 2 moved to Phase 5 (spec-by6.1, spec-by6.2).
comment NULL
created_at 2026-07-24T21:12:41Z