Context
spikes/ is a git-tracked top-level directory at the repo root, holding one spike — spikes/14786-electron-sharedworker/ (8 files). Surfaced by @tobiu (2026-07-11): repo-root placement is an absolute no-go, and the in-tree runnable copy is challenged as bloat. This ticket removes it, and does so without losing the evidence durability the folder was (clumsily) trying to guarantee.
Provenance — how it reached the repo root (traced via git history, not asserted):
- Ticket
#14786's own AC asked for the SharedWorker-in-Electron constraint set "verified empirically in a spike branch, not asserted" — i.e. an ephemeral branch, never a repo-root folder.
- @neo-opus-vega built it on
spike/14786-electron-sharedworker (commit 8bf8a915d0) — that commit never reached dev (git merge-base --is-ancestor 8bf8a915d0 origin/dev → false).
- During PR
#14924 (the ADR 0034 documentation PR), a cycle-2 review raised "evidence durability" (a floating branch can be GC'd → the ADR anchor rots). The recorded fix: "the spike moved IN-TREE … the pre-review branch is superseded."
- "In-tree" was implemented as a new top-level
spikes/ folder, merged with the ADR by @tobiu (8b2b72a2a8, 2026-07-10).
So a repo-root structural change rode in as an unreviewed by-product of a docs-PR review cycle. No ADR or decision governs a top-level spikes/; a single spike quietly established an ungoverned top-level convention.
The Problem
Two things are wrong, independent of each other:
- Repo-root placement is a no-go. A one-off verification harness (with its own
package.json + Electron dep) does not belong beside src/, apps/, ai/, test/, learn/. It sets a top-level convention off one spike, reviewed only as ADR evidence — never as repo layout.
- The in-tree copy is redundant bloat. The durable knowledge already lives in ADR 0034 — the full 9-phase results table, findings 1–6, and pinned versions (Electron 43.1.0 · Chromium 150.0.7871.47 · Node 24.18.0 · darwin 25.5.0). The runnable harness itself persists on
origin/spike/14786-electron-sharedworker. Carrying an 8-file runnable sub-project in the main tree — used by nothing, run manually at most once per Electron-major bump — earns its keep for no one.
The original "evidence durability" concern was real but over-solved: the ADR body plus a persisted branch is sufficient; a repo-root runnable folder was the wrong instrument.
The Architectural Reality
- Tracked footprint:
spikes/14786-electron-sharedworker/{README.md, data.json, main.mjs, package.json, page.html, preload.cjs, spike-results.json, worker.js} (git ls-files 'spikes/**' → 8).
- Inert: nothing in build / test / CI references the path. The only live consumers are documentation citations:
learn/agentos/decisions/0034-electron-shell-architecture.md — 3 references (lines ~19 empirical-anchor row, ~86, ~285).
resources/content/issues/chunk-2/issue-13377.md — the epic body reference.
resources/content/pulls/chunk-2/pr-14924.md + pr-14963.md — immutable synced PR-body history (do NOT edit).
- Recovery guarantee: the harness lives on
origin/spike/14786-electron-sharedworker. A branch is a deletable ref, so relying on it as-is would reintroduce the exact fragility the in-tree move was solving — the fix upgrades it to a permanent git tag.
- Structure-map gate (1c): N/A — this is a removal, not a new
.mjs placement; the absence of any spikes/ owning-folder precedent is the ticket's premise, established via git history (only add-commits: 8bf8a915d0 + 8b2b72a2a8).
The Fix
- Delete
spikes/ — git rm -r spikes/14786-electron-sharedworker (removes the whole top-level dir).
- Preserve durability properly (the friction → gold turn): tag the spike branch head as a permanent ref, e.g.
git tag spike-14786-electron-sharedworker origin/spike/14786-electron-sharedworker and push the tag — a permanent git object is stronger durability than the in-tree folder it replaces (and than a plain branch). The ADR's distilled results table + versions remain the primary authority; fold the verbatim spike-results.json into ADR 0034 as an appendix only if the table is judged insufficient (it likely is not).
- Repoint the references from the in-tree path to "reproduce from tag
spike-14786-electron-sharedworker": the 3 ADR 0034 sites + the epic #13377 body line. Leave the synced resources/content/pulls/** bodies untouched (history).
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
ADR 0034 empirical-anchor refs (3× spikes/14786-electron-sharedworker/) |
ADR 0034 §6 evidence-durability intent |
repoint to the permanent tag reproduction |
in-ADR results table stays the distilled authority |
learn/agentos/decisions/0034-…md |
grep of ADR post-edit → zero spikes/ path |
Epic #13377 body ref |
epic body |
repoint likewise |
— |
resources/content/issues/chunk-2/issue-13377.md |
grep → zero |
| the runnable harness |
git history |
preserved as a permanent tag on the spike branch |
branch still persists |
tag + spike README |
git tag + a checkout re-runs |
Decision Record impact
amends ADR 0034 — reference / §6 lines only; no technical decision changes (the six shell decisions + the SharedWorker findings are untouched). No successor-risk audit needed — this neither challenges nor supersedes any decision, it relocates the evidence pointer to a more durable ref.
Acceptance Criteria
Out of Scope
- Re-running / re-verifying the Electron findings — the recorded run stands; the re-run trigger is a future Electron-major event, not this ticket.
- Relocating the harness elsewhere in-tree — see Avoided Traps (the directive is removal, not relocation).
- Designing a general
spikes/ / research/ convention — if the team later wants an in-repo home for spikes, that is a separate layout decision; this ticket removes the ungoverned one, it does not mint a replacement.
- Editing the immutable synced PR-body content under
resources/content/pulls/** (historical record).
Avoided Traps
- Relocate instead of remove — rejected: @tobiu challenged keeping it at all (bloat); the ADR carries the durable knowledge and the harness is recoverable from a tag, so an in-tree runnable sub-project for a rare manual re-run is disproportionate.
- Delete without preserving durability — rejected: the in-tree move was solving "a floating branch can be GC'd"; deleting and leaning on a plain branch reintroduces that fragility. A permanent tag is the correct, stronger answer.
- Silently delete another author's substrate — rejected:
spikes/ is @neo-opus-vega's authored work (#14786) and Vega owns the Electron epic (#13377). Filed as a tracked ticket routed to Vega's lane, not a unilateral removal (Authorship Respect).
Process gap surfaced (friction → gold)
A new top-level directory landed via a documentation PR's review cycle with no repo-layout check — the review verified the ADR evidence, not the structural side effect. Worth a lightweight reviewer tripwire (flag any diff that adds a repo-root directory for explicit layout justification). Captured here as an observation; a dedicated substrate-follow-up can carry it if the team agrees it recurs.
Related
#14786 (the spike's origin ticket, CLOSED) · PR #14924 (the ADR-0034 docs PR that moved the spike in-tree) · epic #13377 (Electron shell; the natural owner lane) · ADR 0034 (learn/agentos/decisions/0034-electron-shell-architecture.md) · branch spike/14786-electron-sharedworker. Natural owner: @neo-opus-vega (spike author + #13377 epic lane).
Origin Session ID: 01f4cc68-8b8e-43e6-b51c-55b4f421f4e0
Retrieval Hint: "remove top-level spikes directory repo-root bloat electron sharedworker ADR 0034 evidence durability tag branch"
Context
spikes/is a git-tracked top-level directory at the repo root, holding one spike —spikes/14786-electron-sharedworker/(8 files). Surfaced by @tobiu (2026-07-11): repo-root placement is an absolute no-go, and the in-tree runnable copy is challenged as bloat. This ticket removes it, and does so without losing the evidence durability the folder was (clumsily) trying to guarantee.Provenance — how it reached the repo root (traced via git history, not asserted):
#14786's own AC asked for the SharedWorker-in-Electron constraint set "verified empirically in a spike branch, not asserted" — i.e. an ephemeral branch, never a repo-root folder.spike/14786-electron-sharedworker(commit8bf8a915d0) — that commit never reacheddev(git merge-base --is-ancestor 8bf8a915d0 origin/dev→ false).#14924(the ADR 0034 documentation PR), a cycle-2 review raised "evidence durability" (a floating branch can be GC'd → the ADR anchor rots). The recorded fix: "the spike moved IN-TREE … the pre-review branch is superseded."spikes/folder, merged with the ADR by @tobiu (8b2b72a2a8, 2026-07-10).So a repo-root structural change rode in as an unreviewed by-product of a docs-PR review cycle. No ADR or decision governs a top-level
spikes/; a single spike quietly established an ungoverned top-level convention.The Problem
Two things are wrong, independent of each other:
package.json+ Electron dep) does not belong besidesrc/,apps/,ai/,test/,learn/. It sets a top-level convention off one spike, reviewed only as ADR evidence — never as repo layout.origin/spike/14786-electron-sharedworker. Carrying an 8-file runnable sub-project in the main tree — used by nothing, run manually at most once per Electron-major bump — earns its keep for no one.The original "evidence durability" concern was real but over-solved: the ADR body plus a persisted branch is sufficient; a repo-root runnable folder was the wrong instrument.
The Architectural Reality
spikes/14786-electron-sharedworker/{README.md, data.json, main.mjs, package.json, page.html, preload.cjs, spike-results.json, worker.js}(git ls-files 'spikes/**'→ 8).learn/agentos/decisions/0034-electron-shell-architecture.md— 3 references (lines ~19 empirical-anchor row, ~86, ~285).resources/content/issues/chunk-2/issue-13377.md— the epic body reference.resources/content/pulls/chunk-2/pr-14924.md+pr-14963.md— immutable synced PR-body history (do NOT edit).origin/spike/14786-electron-sharedworker. A branch is a deletable ref, so relying on it as-is would reintroduce the exact fragility the in-tree move was solving — the fix upgrades it to a permanent git tag..mjsplacement; the absence of anyspikes/owning-folder precedent is the ticket's premise, established via git history (only add-commits:8bf8a915d0+8b2b72a2a8).The Fix
spikes/—git rm -r spikes/14786-electron-sharedworker(removes the whole top-level dir).git tag spike-14786-electron-sharedworker origin/spike/14786-electron-sharedworkerand push the tag — a permanent git object is stronger durability than the in-tree folder it replaces (and than a plain branch). The ADR's distilled results table + versions remain the primary authority; fold the verbatimspike-results.jsoninto ADR 0034 as an appendix only if the table is judged insufficient (it likely is not).spike-14786-electron-sharedworker": the 3 ADR 0034 sites + the epic#13377body line. Leave the syncedresources/content/pulls/**bodies untouched (history).Contract Ledger Matrix
spikes/14786-electron-sharedworker/)learn/agentos/decisions/0034-…mdspikes/path#13377body refresources/content/issues/chunk-2/issue-13377.mdgit tag+ a checkout re-runsDecision Record impact
amends ADR 0034— reference / §6 lines only; no technical decision changes (the six shell decisions + the SharedWorker findings are untouched). No successor-risk audit needed — this neither challenges nor supersedes any decision, it relocates the evidence pointer to a more durable ref.Acceptance Criteria
spikes/removed from the repo —git ls-files 'spikes/**'returns zero; the repo root no longer carries aspikes/directory.spike/14786-electron-sharedworkerbranch, pushed) — removal loses nothing; a fresh checkout of the tag stillnpm install && npm start-runs.#13377body reference repointed likewise.spikes/(verify: only ADR 0034 + epic#13377+ the immutable synced PR bodies did; the first two are updated, the last are history).Out of Scope
spikes//research/convention — if the team later wants an in-repo home for spikes, that is a separate layout decision; this ticket removes the ungoverned one, it does not mint a replacement.resources/content/pulls/**(historical record).Avoided Traps
spikes/is @neo-opus-vega's authored work (#14786) and Vega owns the Electron epic (#13377). Filed as a tracked ticket routed to Vega's lane, not a unilateral removal (Authorship Respect).Process gap surfaced (friction → gold)
A new top-level directory landed via a documentation PR's review cycle with no repo-layout check — the review verified the ADR evidence, not the structural side effect. Worth a lightweight reviewer tripwire (flag any diff that adds a repo-root directory for explicit layout justification). Captured here as an observation; a dedicated substrate-follow-up can carry it if the team agrees it recurs.
Related
#14786(the spike's origin ticket, CLOSED) · PR#14924(the ADR-0034 docs PR that moved the spike in-tree) · epic#13377(Electron shell; the natural owner lane) · ADR 0034 (learn/agentos/decisions/0034-electron-shell-architecture.md) · branchspike/14786-electron-sharedworker. Natural owner: @neo-opus-vega (spike author +#13377epic lane).Origin Session ID: 01f4cc68-8b8e-43e6-b51c-55b4f421f4e0 Retrieval Hint: "remove top-level spikes directory repo-root bloat electron sharedworker ADR 0034 evidence durability tag branch"