Closes #94. ## What Two phases per the spec, in three feature commits plus two review-fix commits: **Phase one — one registry entry per Site** (`2d134fb`) The six per-site comparison points that used to live across three files collapse into one `sites` map in `backend/internal/latest/sites.go`: Latest Chapter parse, Cover parse, browser-backed list, fetcher route, host pins, and the browser payload read all become lookups into it. `browserBackedSites()` is derived from the registry (sorted, deterministic); `fetcherFor` and `fetchableSeriesURL` keep their signatures and become lookups; `BrowserFetcher.Get` dispatches through the entries' `Read`/`Done` while the tab lifecycle stays in `BrowserFetcher.run`. **Phase two — one shared Series-page read** (`f215130`) `readSeriesPage` (new `read.go`) performs the read the Poll and the Acquisition have in common: gate, route, fetch, parse Latest Chapter, parse Cover address. It returns facts only — polling and persistence policies (stamp order, cooldowns, cover policy) stay with the callers; `acquire.go` gained the comment naming the deliberate post-fetch stamp order. The poll's legacy cover heal and the no-chapter byte-count diagnostic were restored after review (`d998f87`) so the claims "the Poll keeps its own Cover policy" and "pinning is the only behavioural change" both hold. ## Behaviour - All six Sites now pin their host exactly; asura/demonic/comix previously accepted any https host. For asura this is a strict improvement: its dead old domain redirects deep links to the site root and would parse the wrong document. - Everything else is unchanged: existing parse tables, the challenge-body table and the gate table pass unmodified except the one deliberate exception — the gate table gains the three new pin cases. ## Security invariants preserved - The address gate is recognisably the same rule, now a single registry lookup: `https` + exact hostname match, all callers route through it. No fetch path was widened; asura/demonic/comix were narrowed. - The second host pin inside each browser entry's Read is retained deliberately (browser = strong SSRF primitive, `series_url` is client-supplied) and is not deduplicated against the shared gate. - Review hardening: `fetcherFor` now fails closed for unknown site strings (previously fell through to the TLS fetcher on an unreachable path), and the browser dispatch iterates a sorted list so outcomes cannot depend on map order. - The security review's log-injection finding was checked against Go's `url.Parse` and does not hold: control characters are rejected anywhere in a URL, so a client-supplied value in a log line cannot carry a newline. ## Review Reviewed on three axes (spec, standards, security) by read-only subagents over `672c16f..f1b26f4`. No blocking findings; all minor/nit findings addressed in `d998f87` and `700de20`. Verified end to end with `go test ./...` (Docker Postgres per test package) on every commit. ## Out of scope (tracked separately) - Dropping asuracomic.net (CORS allowlist, userscript match, API fixtures, live env) — separate issue, per spec. Reviewed-on: #95 Co-authored-by: Sulthan Zaki <sultankiki05@gmail.com> Co-committed-by: Sulthan Zaki <sultankiki05@gmail.com>
40 KiB
Graph Report - mangaBookmark (2026-08-12)
Corpus Check
- 110 files · ~267,753 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 1651 nodes · 3253 edges · 262 communities (67 shown, 195 thin omitted)
- Extraction: 90% EXTRACTED · 10% INFERRED · 0% AMBIGUOUS · INFERRED: 314 edges (avg confidence: 0.77)
- Token cost: 0 input · 0 output
Graph Freshness
- Built from commit:
700de202 - Run
git rev-parse HEADand compare to check if the graph is stale. - Run
graphify update .after code changes (no API cost).
Community Hubs (Navigation)
- _COMMUNITY_HTMX Library Internals
- _COMMUNITY_Cover Fetch Test Helpers
- _COMMUNITY_Manga Userscript Adapters
- _COMMUNITY_Novel Userscript Adapters
- _COMMUNITY_Series Acquisition Tests
- _COMMUNITY_Bookmarks API Tests
- _COMMUNITY_Storage Choice ADR
- _COMMUNITY_Cover & Acquire Internals
- _COMMUNITY_System Architecture Concepts
- _COMMUNITY_Session Middleware
- _COMMUNITY_Go Test Helpers
- _COMMUNITY_Store Tests
- _COMMUNITY_Bookmarks API Handler
- _COMMUNITY_Web UI Handlers
- _COMMUNITY_Go Error Handling
- _COMMUNITY_CDP Browser Client
- _COMMUNITY_Store
- _COMMUNITY_Go Code Style Guide
- _COMMUNITY_Agent Skills
- _COMMUNITY_Open
- _COMMUNITY_IO Performance Patterns
- _COMMUNITY_CPU Optimization
- _COMMUNITY_Caching Patterns
- _COMMUNITY_Browser Entrypoint
- _COMMUNITY_Memory Allocation & GC
- _COMMUNITY_Cover Fetcher Tests
- _COMMUNITY_readSeries
- _COMMUNITY_Find Skills Guide
- _COMMUNITY_Allocation Patterns
- _COMMUNITY_Observability & Alerting
- _COMMUNITY_PG Test Infrastructure
- _COMMUNITY_Memory Layout
- _COMMUNITY_Repo Hard Constraints
- _COMMUNITY_Go Testing Guide
- _COMMUNITY_Session Store
- _COMMUNITY_Web UI Filter Logic
- _COMMUNITY_Userscript Test Harness
- _COMMUNITY_Product & Security Context
- _COMMUNITY_novel-logic.test.js
- _COMMUNITY_UI Critique 2026-07-26A
- _COMMUNITY_UI Critique 2026-07-26B
- _COMMUNITY_DB Cutover Runbook
- _COMMUNITY_Memory Layout Patterns
- _COMMUNITY_Issue Tracker & Triage
- _COMMUNITY_Ticket Workflow
- _COMMUNITY_Go Perf Alert Rules
- _COMMUNITY_Userscript Display Logic
- _COMMUNITY_Go Perf Skill Docs
- _COMMUNITY_Login Page Art
- _COMMUNITY_BookmarkManager Logo
- _COMMUNITY_Skills CLI
- _COMMUNITY_Skills Leaderboard
- _COMMUNITY_Complex Condition Extraction
- _COMMUNITY_Sentinel Errors
- _COMMUNITY_errors.As Patterns
- _COMMUNITY_errors.Is Patterns
- _COMMUNITY_errors.Join Patterns
- _COMMUNITY_Error Wrapping
- _COMMUNITY_Single Error Handling
- _COMMUNITY_SIMD Optimizations
- _COMMUNITY_GOGC Tuning
- _COMMUNITY_GOMEMLIMIT
- _COMMUNITY_Bottleneck Decision Tree
- _COMMUNITY_pprof Profiling
- _COMMUNITY_Test Timeout Helper
- _COMMUNITY_httptest Patterns
- _COMMUNITY_testify Suite Pattern
- _COMMUNITY_goembed Fixtures
- _COMMUNITY_clockwork Time Mocking
- _COMMUNITY_testify Mocking
- _COMMUNITY_t.ArtifactDir Helper
- _COMMUNITY_Subtests Pitfall
- _COMMUNITY_golang-benchmark Skill
- _COMMUNITY_golang-concurrency Skill
- _COMMUNITY_golang-ci Skill
- _COMMUNITY_golang-database Skill
- _COMMUNITY_golang-lint Skill
- _COMMUNITY_testify Skill
- _COMMUNITY_Build Tag Integration Tests
- _COMMUNITY_Test Naming Convention
- _COMMUNITY_UI Critique A Finding
- _COMMUNITY_UI Critique B Finding
- _COMMUNITY_P0 Overflow Bug
- _COMMUNITY_P1 hx-indicator Gap
- _COMMUNITY_golang-benchmark Skill (ext)
- _COMMUNITY_golang-concurrency Skill (ext)
- _COMMUNITY_golang-ci Skill (ext)
- _COMMUNITY_golang-data-structures Skill (ext)
- _COMMUNITY_golang-database Skill (ext)
- _COMMUNITY_golang-design-patterns Skill (ext)
- _COMMUNITY_golang-documentation Skill (ext)
- _COMMUNITY_golang-gopls Skill (ext)
- _COMMUNITY_golang-lint Skill (ext)
- _COMMUNITY_golang-naming Skill (ext)
- _COMMUNITY_golang-observability Skill (ext)
- _COMMUNITY_golang-refactoring Skill (ext)
- _COMMUNITY_golang-safety Skill (ext)
- _COMMUNITY_golang-samber-oops Skill (ext)
- _COMMUNITY_golang-samber-slog Skill (ext)
- _COMMUNITY_golang-structs-interfaces Skill (ext)
- _COMMUNITY_golang-troubleshooting Skill (ext)
- _COMMUNITY_promql-cli Skill
- _COMMUNITY_Backend Module
- _COMMUNITY_bookmark-api Service
- _COMMUNITY_AGENTS
- _COMMUNITY_reviewer
- _COMMUNITY_Redeploy runbook
- _COMMUNITY_1. Backend
- _COMMUNITY_Deployment
- _COMMUNITY_Cinder — BookmarkManager design system
- _COMMUNITY_Implement tickets
- _COMMUNITY_SQLite → Postgres cutover runbook
- _COMMUNITY_Testing the userscript
- _COMMUNITY_ADR-0007 The backend hosts every Site's Cover bytes
- [[_COMMUNITY_Issue tracker Gitea (
teaCLI)|Issue tracker: Gitea (teaCLI)]] - _COMMUNITY_ADR-0006 The browser runs on the home machine, over the tailnet
- _COMMUNITY_ADR-0008 A Series identity is discovered from the Site's links, never derived from an address
- _COMMUNITY_Domain Docs
- _COMMUNITY_ticket-implementer
- _COMMUNITY_implementer
- _COMMUNITY_Series is a shared entity, and only the Poll may update it
- _COMMUNITY_Postgres replaces SQLite as the primary datastore
- _COMMUNITY_Identity comes from Discord OAuth; we store no passwords and send no email
- _COMMUNITY_The wire format stays flat and deliberately does not mirror the schema
- _COMMUNITY_ADR-0005 On-demand browser sidecar
- _COMMUNITY_Duration
- _COMMUNITY_Bookmark Manager
- _COMMUNITY_triage-labels
- _COMMUNITY_Cross-Ticket Contract
- _COMMUNITY_Implement Tickets Skill
- _COMMUNITY_Orchestrator Role
- _COMMUNITY_resolving-merge-conflicts Skill
- _COMMUNITY_tdd Skill
- _COMMUNITY_Ticket Wave Batching
- _COMMUNITY_Four-Object Browser Stub
- _COMMUNITY_Module Export Hook
- _COMMUNITY_logic.test.js Test Harness
- _COMMUNITY_manga-bookmark.user.js
- _COMMUNITY_stripBuildHash
- _COMMUNITY_Testing the Userscript Skill
- _COMMUNITY_cr-spec Agent
- _COMMUNITY_cr-standards Agent
- _COMMUNITY_Escalate Rather Than Guess
- _COMMUNITY_Status Contract
- _COMMUNITY_Ticket Implementer Agent
- _COMMUNITY_Worktree Isolation
- _COMMUNITY_Escalate Rather Than Guess (opencode)
- _COMMUNITY_Implementer Subagent (opencode)
- _COMMUNITY_Subagent-Driven Development
- _COMMUNITY_Code Quality Review
- _COMMUNITY_Reviewer Subagent (opencode)
- _COMMUNITY_Finding Severity Rubric
- _COMMUNITY_Spec Compliance Review
- _COMMUNITY_CDP Browser Unit (chrome)
- _COMMUNITY_Cinder Design System
- _COMMUNITY_Cloudflare Challenge Behaviour
- _COMMUNITY_Ember Means New Chapter Only
- _COMMUNITY_Gitea + tea CLI
- _COMMUNITY_Graphify Knowledge Graph
- _COMMUNITY_novel-bookmark.user.js
- _COMMUNITY_Security Invariants
- _COMMUNITY_Why Use samberoops
- _COMMUNITY_singleflight Cache Stampede Prevention
- _COMMUNITY_Struct Field Alignment
- _COMMUNITY_testingsynctest Deterministic Goroutine Testing
- _COMMUNITY_API Package (Bookmark JSON Handlers)
- _COMMUNITY_Cover Acquisition & Serving Pipeline
- _COMMUNITY_Backend AGENTS.md Guidance
- _COMMUNITY_HTTP Middleware (AuthGzipCORS)
- _COMMUNITY_Latest Package (Site Parsers & Poller)
- _COMMUNITY_Latest-Chapter Poller
- _COMMUNITY_Main Composition Root
- _COMMUNITY_Migration-Owned Schema
- _COMMUNITY_Session Package (Cookie Signing & Rate Limit)
- _COMMUNITY_updated_at List-Order Rule
- _COMMUNITY_Userscript Package (Serving Handler)
- _COMMUNITY_Backend CLAUDE.md Guidance
- _COMMUNITY_Graphify Knowledge Graph (graphify-out)
- _COMMUNITY_CLAUDE.md (Symlink to AGENTS.md)
- _COMMUNITY_ADR-0001 (Drop modernc.orgsqlite)
- _COMMUNITY_ADR-0003 (Split Shared Series Facts)
- _COMMUNITY_SQLite-to-Postgres Cutover Runbook
- _COMMUNITY_Import SQL Generation Rules
- _COMMUNITY_Throwaway Import Generator
- _COMMUNITY_ADR-0002 (Discord OAuth Sign-In)
- _COMMUNITY_ADR-0006 (Browser Out of API Stack)
- _COMMUNITY_ADR-0007 (Absolute Cover URLs)
- _COMMUNITY_bookmark-api Service
- _COMMUNITY_Deployment Runbook
- _COMMUNITY_Issue 24 (Derived Credentials)
- _COMMUNITY_Tailscale ACL Tagging
- _COMMUNITY_TOKEN_KEY Credential Derivation
- _COMMUNITY_Traefik Reverse Proxy
- _COMMUNITY_Real scaling limit is the poller outbound fetch budget
- _COMMUNITY_PostgreSQL (jackcpgxv5)
- _COMMUNITY_SQLite (modernc.orgsqlite)
- _COMMUNITY_Postgres chosen for future supportability, not concurrency
- _COMMUNITY_Per-Reader bearer token for userscripts
- _COMMUNITY_Discord OAuth2 (authorization code grant)
- _COMMUNITY_ADR-0002 Discord OAuth, no passwords, no email
- _COMMUNITY_Discord snowflake is the sole identity (lock-in)
- _COMMUNITY_Bookmark (per-Reader state Progress, Favourite, Lifecycle)
- _COMMUNITY_Deduplicate polling per Series (reader_count DESC queue)
- _COMMUNITY_ADR-0003 Series is shared, only the Poll updates it
- _COMMUNITY_Only the Poll writes Series fields (security boundary)
- _COMMUNITY_Series (shared entity keyed site+series_id)
- _COMMUNITY_ADR-0004 Wire format stays flat, does not mirror schema
- _COMMUNITY_Flat wire shape is a contract, not an implementation detail
- _COMMUNITY_Installed userscripts must keep working (14-day grace window)
- _COMMUNITY_CDP (Chrome DevTools Protocol) endpoint
- _COMMUNITY_headless-shell service (socat-fronted CDP)
- _COMMUNITY_Start Chrome on first CDP connection, reap after 300s idle
- _COMMUNITY_BROWSER_WS_URL configuration seam
- _COMMUNITY_ADR-0006 Browser runs on the home machine over the tailnet
- _COMMUNITY_Browser moved home VPS memory pressure, no requests served
- _COMMUNITY_Tailnet (Tailscale network)
- _COMMUNITY_Content-addressed filesystem storage (SHA-256 of source URL)
- _COMMUNITY_Cover (Series image bytes)
- _COMMUNITY_Deny-class destination control for outbound fetch
- _COMMUNITY_ADR-0007 Backend hosts every Site's Cover bytes
- _COMMUNITY_kagane CORP same-origin cover restriction
- _COMMUNITY_Backend acquires, stores, serves every Cover (uniformity)
- _COMMUNITY_Series identity is discovered from the Site's links
- _COMMUNITY_ADR-0008 Series identity discovered, never derived
- _COMMUNITY_Chapter slug vs series slug divergence (~7% measured)
- _COMMUNITY_Scan truncated at first wpd-threads marker
- _COMMUNITY_Surface ADR conflicts explicitly rather than silently overriding
- _COMMUNITY_Domain docs single-context layout guidance
- _COMMUNITY_domain-modeling skill (lazy CONTEXT.md creation)
- _COMMUNITY_CONTEXT.md glossary (ubiquitous language)
- _COMMUNITY_Gitea (tea CLI, gitea.violetcrown.my.id)
- _COMMUNITY_wayfinder mapticket mechanism
- _COMMUNITY_Triage labels canonical roles to tracker labels
- _COMMUNITY_Canonical triage role labels (needs-triage ... wontfix)
- _COMMUNITY_Cinder (BookmarkManager Web UI design system)
- _COMMUNITY_Heat is typographic ember reserved for unread chapters
- _COMMUNITY_Design tokens (dark + light branches, no hardcoded hex)
- _COMMUNITY_Three type roles display serif mono small-caps sans
- _COMMUNITY_Research lightnovelworld chapter slug vs series slug
- _COMMUNITY_Gitea issue 77 (chapter vs series slug)
- _COMMUNITY_Slug divergence measurements (341 diverge, 1 split)
- _COMMUNITY_Unscoped chapter regex is SAFE, truncated at wpd-threads
- _COMMUNITY_BookmarkManager
- _COMMUNITY_Bromite (Primary Device)
- _COMMUNITY_Dark-First Design Constraint
- _COMMUNITY_Discord Guild Membership
- _COMMUNITY_Reader Isolation Invariant
- _COMMUNITY_Site Adapters
- _COMMUNITY_Go Backend (backend)
- _COMMUNITY_localStorage Cache and Retry Queue
- _COMMUNITY_Latest Chapter Poller
- _COMMUNITY_Postgres Store (postgres17-alpine)
- _COMMUNITY_README Config and Endpoint Reference
- _COMMUNITY_Browser Unit Redeploy
- _COMMUNITY_pg_dump Hot Backup
- _COMMUNITY_Redeploy Runbook
- _COMMUNITY_Rollback Strategy
- _COMMUNITY_AGENTS
- _COMMUNITY_Userscript CLAUDE guidance
God Nodes (most connected - your core abstractions)
testConfig()- 53 edgesnewWebTestServer()- 49 edgesnewTestStore()- 42 edgesnewTestStore()- 41 edgese()- 33 edgesHandler- 29 edgesne()- 28 edgesDe()- 28 edgesOpen()- 27 edgesse()- 27 edges
Surprising Connections (you probably didn't know these)
Browser Sidecar Service--semantically_similar_to-->Browser Sidecar (BROWSER_WS_URL)[INFERRED] [semantically similar] chrome/docker-compose.yml → backend/AGENTS.mdel()--indirect_call-->c()[INFERRED] userscript/manga-bookmark.user.js → backend/internal/web/static/htmx.min.jsel()--indirect_call-->c()[INFERRED] userscript/novel-bookmark.user.js → backend/internal/web/static/htmx.min.jslatestChapterFromAnchors()--indirect_call-->re()[INFERRED] userscript/manga-bookmark.user.js → backend/internal/web/static/htmx.min.jsel()--indirect_call-->k()[INFERRED] userscript/manga-bookmark.user.js → backend/internal/web/static/htmx.min.js
Import Cycles
- None detected.
Hyperedges (group relationships)
- Batch Ticket Implementation Pipeline — _claude_skills_implement_tickets_skill_implement_tickets, _omp_agents_ticket_implementer_ticket_implementer, _omp_agents_ticket_implementer_cr_spec, _omp_agents_ticket_implementer_cr_standards [INFERRED 0.85]
- Subagent-Driven Development Pipeline — _opencode_agent_implementer_implementer, _opencode_agent_reviewer_reviewer, _opencode_agent_implementer_subagent_driven_development [INFERRED 0.85]
- Deployment Runbook Family — cutover_cutover, deploy_deploy, redeploy_redeploy [INFERRED 0.85]
- Go HTML Template Family — backend_internal_web_templates_app_doc, backend_internal_web_templates_card_doc, backend_internal_web_templates_list_doc, backend_internal_web_templates_chrome_doc, backend_internal_web_templates_login_doc, backend_internal_web_templates_setup_doc, backend_internal_web_templates_readers_doc, backend_internal_web_templates_icons_doc [INFERRED 0.95]
- htmx Fragment Swap Flow — backend_internal_web_templates_app_doc, backend_internal_web_templates_card_doc, backend_internal_web_templates_chrome_doc, backend_internal_web_templates_setup_doc, backend_internal_web_templates_readers_doc [INFERRED 0.95]
- Deployment Topology — docker_compose_bookmark_api, docker_compose_postgres, docker_compose_prod_traefik, chrome_docker_compose_browser, docker_compose_db_network [INFERRED 0.95]
- Backend owns the truth (single-writer ownership of shared facts) — docs_adr_0003_series_shared_and_poll_owned_poll_owned_writes, docs_adr_0004_wire_format_does_not_mirror_the_schema_flat_wire_contract, docs_adr_0007_backend_hosts_cover_bytes_server_side_covers [INFERRED 0.85]
- Headless browser infrastructure (sidecar, on-demand, home deployment) — docs_adr_0005_on_demand_browser_headless_shell, docs_adr_0005_on_demand_browser_cdp, docs_adr_0005_on_demand_browser_on_demand_start, docs_adr_0006_browser_on_the_home_machine_home_machine_rationale [INFERRED 0.85]
- lightnovelworld series-identity investigation and fix — docs_research_lightnovelworld_chapter_vs_series_slug_issue_77, docs_research_lightnovelworld_chapter_vs_series_slug_unscoped_regex, docs_adr_0008_series_identity_is_discovered_not_derived_discovered_identity [INFERRED 0.85]
Communities (262 total, 195 thin omitted)
Community 0 - "HTMX Library Internals"
Cohesion: 0.08 Nodes (101): A(), ae(), an(), at(), B(), be(), bn(), bt() (+93 more)
Community 1 - "Cover Fetch Test Helpers"
Cohesion: 0.10 Nodes (84): floatPtr(), testConfig(), getCover(), Cookie, Handler, ResponseRecorder, T, TestListRendersAcquiredCover() (+76 more)
Community 2 - "Manga Userscript Adapters"
Cohesion: 0.06 Nodes (77): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+69 more)
Community 3 - "Novel Userscript Adapters"
Cohesion: 0.06 Nodes (78): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+70 more)
Community 4 - "Series Acquisition Tests"
Cohesion: 0.09 Nodes (68): bookmarkNewKaganeSeries(), bookmarkNewNovelfullSeries(), bookmarkNewSeries(), Context, Store, T, newAcquirer(), readBookmark() (+60 more)
Community 5 - "Bookmarks API Tests"
Cohesion: 0.08 Nodes (67): auth(), getBookmarks(), Handler, Request, Store, T, newTestServer(), newTestStore() (+59 more)
Community 7 - "Cover & Acquire Internals"
Cohesion: 0.10 Nodes (30): Addr, Context, Store, defaultCoverResolver(), fetchCoverBytes(), Client, Context, NewCoverFetcher() (+22 more)
Community 8 - "System Architecture Concepts"
Cohesion: 0.10 Nodes (26): Confirm-Gated Destructive Actions, Discord OAuth & Guild-Membership Gate, Lifecycle Buckets (reading/archived/finished), Reader-Owned Store, HMAC-Derived Reader Credentials, Web Package (Browser UI + Templates), app.html — App Shell Template, Manga/Novel Library Switch (+18 more)
Community 9 - "Session Middleware"
Cohesion: 0.16 Nodes (20): ClearCookie(), ClientIP(), Duration, Mutex, Request, ResponseWriter, Time, isHTTPS() (+12 more)
Community 10 - "Go Test Helpers"
Cohesion: 0.05 Nodes (39): Test Helpers, Test Timeout, Basic Handler Test, HTTP Handler Testing, Query Parameters and Headers, Docker Compose Fixture, Integration Testing, SQL Schema Fixture (+31 more)
Community 11 - "Store Tests"
Cohesion: 0.15 Nodes (43): Store, T, newTestStore(), readLatestCheckedAt(), readSeries(), secondReader(), seedForCheck(), seedSecondReader() (+35 more)
Community 12 - "Bookmarks API Handler"
Cohesion: 0.08 Nodes (32): Handler, Request, ResponseWriter, Store, Healthz(), writeJSON(), Auth(), compressible() (+24 more)
Community 13 - "Web UI Handlers"
Cohesion: 0.07 Nodes (33): Context, Mutex, Request, ResponseWriter, Time, Handler, newOAuthStates(), T (+25 more)
Community 14 - "Go Error Handling"
Cohesion: 0.06
Nodes (33): Creating Errors, Custom Error Types, Custom types that wrap other errors, Decision table: which error strategy to use, Error Creation, Error String Conventions, Errors as Values, errors.New — static error messages (+25 more)
Community 15 - "CDP Browser Client"
Cohesion: 0.08 Nodes (31): awaitPromise(), browserConnectionLost(), classifyBrowserError(), Action, Context, Mutex, jsString(), kaganeAPIURL() (+23 more)
Community 16 - "Store"
Cohesion: 0.12 Nodes (4): CoverContentType(), coverRelativePath(), coverSourceAddress(), Store
Community 17 - "Go Code Style Guide"
Cohesion: 0.08 Nodes (23): Code Style Details, Extract Complex Conditions, Value vs Pointer Arguments, Code Organization Within Files, Complex Conditions & Init Scope, Composite Literals, Control Flow, Cross-References (+15 more)
Community 19 - "Open"
Cohesion: 0.17 Nodes (19): applyMigration(), migrate(), Open(), refreshOwnerToken(), scanSeries(), seedOwner(), TestCoverIsContentAddressedOnFilesystem(), TestCoverPersistsAcrossReopen() (+11 more)
Community 20 - "I/O Performance Patterns"
Cohesion: 0.11 Nodes (18): Avoid io.ReadAll for large payloads, Batch Operations, Buffered I/O, Cgo Overhead, Channel: batch processing from a stream, Concurrent Multi-Stage Pipelines, Connection pooling, Database: batch inserts over row-by-row (+10 more)
Community 21 - "CPU Optimization"
Cohesion: 0.13 Nodes (15): Cache Locality, Contiguous 2D allocation, CPU Optimization, False Sharing, Function Inlining, Handling CPU-specific instruction sets, Instruction-Level Parallelism, Monotonic Time (+7 more)
Community 22 - "Caching Patterns"
Cohesion: 0.13 Nodes (14): Algorithmic Complexity, Avoid iterator chains, Caching Patterns, Compiled Pattern Caching, Early returns and short-circuit loops, LRU caches, Map lookups over slice scanning, Precomputed lookup tables (+6 more)
Community 23 - "Browser Entrypoint"
Cohesion: 0.35 Nodes (14): browser_alive(), connection(), connection_signal(), finish_connection(), has_connections(), lock(), reaper(), entrypoint.sh script (+6 more)
Community 24 - "Memory Allocation & GC"
Cohesion: 0.13 Nodes (15): Allocation Rate Reduction, Ballast pattern (pre-Go 1.19), Garbage Collector Tuning, GC pacing, GC Profiling and Diagnostics, GODEBUG=gctrace=1, GOGC (default: 100), GOMAXPROCS in Containers (+7 more)
Community 25 - "Cover Fetcher Tests"
Cohesion: 0.33 Nodes (12): coverResponse(), Request, T, TestCoverFetcherCanonicalisesJpgAlias(), TestCoverFetcherFetchesPublicHTTPSImage(), TestCoverFetcherRefusesUnsafeDestinationsBeforeRequest(), TestCoverFetcherRejectsNonImage(), TestCoverFetcherRejectsOversizedBody() (+4 more)
Community 26 - "readSeries"
Cohesion: 0.13 Nodes (28): asuraLatestChapter(), browserOnlyCoverURL(), comixCoverEntry(), comixCoverURL(), comixLatestChapter(), comixSeriesID(), coverFrom(), demonicLatestChapter() (+20 more)
Community 27 - "Find Skills Guide"
Cohesion: 0.14 Nodes (13): Common Skill Categories, Find Skills, How to Help Users Find Skills, Step 1: Understand What They Need, Step 2: Check the Leaderboard First, Step 3: Search for Skills, Step 4: Verify Quality Before Recommending, Step 5: Present Options to the User (+5 more)
Community 28 - "Allocation Patterns"
Cohesion: 0.14 Nodes (14): Allocation Patterns, Backing Array Leaks, Direct indexing vs append, Eliminate redundant map lookups, Interface boxing, Map never shrinks, Map size hints, Memory Optimization (+6 more)
Community 29 - "Observability & Alerting"
Cohesion: 0.22 Nodes (9): Alerting rules (examples), CPU saturation, GC pressure, Goroutine leaks, Grafana Dashboards, Memory leaks, Prometheus Metrics for Go, PromQL Queries for Performance Diagnosis (+1 more)
Community 30 - "PG Test Infrastructure"
Cohesion: 0.18 Nodes (12): M, TestMain(), M, TestMain(), M, Main(), start(), URL() (+4 more)
Community 31 - "Memory Layout"
Cohesion: 0.40 Nodes (5): Map of pointers for large, frequently updated structs, Memory Layout, Pointer receivers for large structs, Struct field alignment, Zero-size field at end of struct
Community 33 - "Go Testing Guide"
Cohesion: 0.20 Nodes (10): CI Regression Detection, Common Mistakes, Core Philosophy, Cross-References, Decision Tree: Where Is Time Spent?, Deep Dives, Go Performance Optimization, Iterative Optimization Methodology (+2 more)
Community 34 - "Session Store"
Cohesion: 0.28 Nodes (4): Duration, Store, Time, Session
Community 35 - "Web UI Filter Logic"
Cohesion: 0.31 Nodes (5): closeCardPanels(), setActiveTab(), toggleChapterForm(), toggleConfirmRow(), togglePanel()
Community 37 - "Product & Security Context"
Cohesion: 0.17 Nodes (11): Accessibility & Inclusion, Brand Commitments, Capabilities and Constraints, Evidence on Hand, Operating Context, Platform, Positioning, Product (+3 more)
Community 38 - "novel-logic.test.js"
Cohesion: 0.33 Nodes (5): ADR-0009: A Site answers fixed questions; an unusual Site owns its own fetch, Consequences, Considered options, Decision, Why
Community 39 - "UI Critique 2026-07-26A"
Cohesion: 0.29 Nodes (6): Design Health Score, Design Specificity Verdict, Minor Observations, Persona Red Flags, Priority Issues, Questions to Consider
Community 40 - "UI Critique 2026-07-26B"
Cohesion: 0.29 Nodes (6): Design Health Score, Design Specificity Verdict, Minor Observations, Persona Red Flags, Priority Issues, Questions to Consider
Community 42 - "Memory Layout Patterns"
Cohesion: 0.48 Nodes (6): T, TestCreateAndGetSession(), TestDeleteSessionIsPerReader(), TestDeleteSessionRevokes(), TestExpiredSessionIsGone(), TestGetSessionUnknownID()
Community 45 - "Go Perf Alert Rules"
Cohesion: 0.50 Nodes (4): Prometheus Alerting Rules (Go Performance), GoroutineLeak Alert, HighGCPauseTime Alert, MemoryNearLimit Alert
Community 46 - "Userscript Display Logic"
Cohesion: 0.07 Nodes (27): 1. Summary answer table, 2. The two reference pages, 3. Chapter page → series URL: every in-page pointer, in priority order, 4.1 Sample method, 4.2 Divergence results, 4.3 Is there a derivable rule? No., 4.4 The split case — a slug can change mid-series, 4. The reverse direction, and how common divergence is (+19 more)
Community 47 - "Go Perf Skill Docs"
Cohesion: 0.22 Nodes (5): Continuous Profiling, Production Observability for Performance, Pyroscope pull mode (via Grafana Alloy), Pyroscope push mode, Real-Time Visualization (Development)
Community 48 - "Login Page Art"
Cohesion: 0.67 Nodes (3): Fantasy Sword, Fiery Volcanic Scene, Login Art: Sword in Volcanic Rock
Community 49 - "BookmarkManager Logo"
Cohesion: 1.00 Nodes (3): Mirrored Double Bookmark Mark, Ember Flame Accent, BookmarkManager Logo
Community 103 - "bookmark-api Service"
Cohesion: 0.18 Nodes (16): Backend Go Service (stdlib net/http), Browser Sidecar (BROWSER_WS_URL), Store Package (Postgres Persistence), Browser Sidecar Service, CDP Endpoint (Tailnet-Bound :9222), Persistent Chrome Profile Volume, chrome/docker-compose.yml — Browser Deployable Unit, bookmark-api Service (+8 more)
Community 104 - "AGENTS.md"
Cohesion: 0.12 Nodes (15): Agent skills, AGENTS.md, Architecture, Commands, Comments, Design system, Domain docs, Forge: Gitea, not GitHub (+7 more)
Community 105 - "reviewer.md"
Cohesion: 0.12 Nodes (15): Assessment, Calibration, Critical (Must Fix), Do Not Trust the Report, Important (Should Fix), Inputs, Issues, Method (+7 more)
Community 106 - "Redeploy runbook"
Cohesion: 0.12 Nodes (15): 0. Preflight, 1. Back up the database, 2. Pull the new code, 3. Rebuild and restart, 4. Verify the deploy, 5. Smoke-test the full loop, 6. Rollback, 7. The whole thing, as one block (+7 more)
Community 107 - "1. Backend"
Cohesion: 0.13 Nodes (14): 1. Backend, 2. Userscript, Adapter reference (verified live 2026-07-24), Config (env), Deploy behind your reverse proxy, Desktop iteration (optional), Develop / test, Endpoints (+6 more)
Community 108 - "Deployment"
Cohesion: 0.14
Nodes (13): 0. Prerequisites, 1. Configure .env, 1b. Web UI, 2. Build + start, 3. Verify over HTTPS, 4. Configure the userscript, 5. Install on Bromite, 6. Smoke-test the full loop (+5 more)
Community 109 - "Cinder — BookmarkManager design system"
Cohesion: 0.20 Nodes (9): 1. The one idea, 2. Tokens, 3. Type, 4. Components (web UI), 5. Components (userscript panel), 6. Motion, 7. Accessibility floor (not negotiable), 8. Adding something new — checklist (+1 more)
Community 110 - "Implement tickets"
Cohesion: 0.22 Nodes (8): 1. Collect the tickets, 2. Plan the batch, 3. Get the plan approved, 4. Run a wave, 5. Land the wave, 6. Close the batch, Implement tickets, Ticket # —