e7e22a12a5
Implements spec #80 / ADR-0008 — Gitea issues #86, #87, #88, #89, #90, all closed. A Reader bookmarks a novel on lightnovelworld and it never shows a New Chapter, because the Series identity was derived from the chapter address instead of read from the page. One Series can publish under several Chapter Slugs, so the derived key points at a slug that 404s. - **#89** — the userscript's lnw adapter stops deriving `seriesUrl`/`seriesId` from the path. It reads the page's own pointer (`a[aria-label='All Chapter']`), falling back to the microdata breadcrumb's second crumb, and carries `chapterSlug` on the page object, stored nowhere. - **#87** — the Poll's lnw chapter scan is unscoped (no stored-slug pattern can cover a Series' whole list) and truncated at the `wpd-threads` comment thread, the one region a visitor can write to. Marker absent means skip and log with the body length, never scan whole. Corrects the `maxBodyBytes` headroom comment to the measured 3.5x. - **#86** — the scan fixture is now text trimmed from a real, wholly-fetched Series page instead of a hand-written cross-series anchor that no live page carries. - **#90** — stale stored rows repair themselves on the next chapter visit: a pure transform over cache, queue and last-checked map, silent to the Reader, with progress, favourite and lifecycle bucket preserved when two rows merge. - **#88** — an env-gated live canary (`SMOKE_LNW_SERIES_URL`) proving the marker still occurs exactly once and still follows the last chapter anchor, asserted against the production symbols themselves. Verified on the merged branch: `go test ./...` green, `gofmt -l internal/latest/` silent, both userscripts `node --check` clean, 35/35 + 29/29 logic tests. Live canary green (marker once at byte 612,182 of 651,795). #90 verified on device with Playwright. Open follow-up: **#91** — the userscript's client-side latest-chapter scan is still scoped to the derived slug. Reviewed-on: #92 Co-authored-by: Sulthan Zaki <sultankiki05@gmail.com> Co-committed-by: Sulthan Zaki <sultankiki05@gmail.com>
600 lines
40 KiB
Markdown
600 lines
40 KiB
Markdown
# Graph Report - mangaBookmark (2026-08-11)
|
|
|
|
## Corpus Check
|
|
- 108 files · ~265,471 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 1644 nodes · 3206 edges · 277 communities (62 shown, 215 thin omitted)
|
|
- Extraction: 90% EXTRACTED · 10% INFERRED · 0% AMBIGUOUS · INFERRED: 312 edges (avg confidence: 0.77)
|
|
- Token cost: 0 input · 0 output
|
|
|
|
## Graph Freshness
|
|
- Built from commit: `27dda601`
|
|
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
|
- Run `graphify update .` after code changes (no API cost).
|
|
|
|
## Community Hubs (Navigation)
|
|
- [[_COMMUNITY_HTMX Library Internals|HTMX Library Internals]]
|
|
- [[_COMMUNITY_Cover Fetch Test Helpers|Cover Fetch Test Helpers]]
|
|
- [[_COMMUNITY_Manga Userscript Adapters|Manga Userscript Adapters]]
|
|
- [[_COMMUNITY_Novel Userscript Adapters|Novel Userscript Adapters]]
|
|
- [[_COMMUNITY_Series Acquisition Tests|Series Acquisition Tests]]
|
|
- [[_COMMUNITY_Bookmarks API Tests|Bookmarks API Tests]]
|
|
- [[_COMMUNITY_Storage Choice ADR|Storage Choice ADR]]
|
|
- [[_COMMUNITY_Cover & Acquire Internals|Cover & Acquire Internals]]
|
|
- [[_COMMUNITY_System Architecture Concepts|System Architecture Concepts]]
|
|
- [[_COMMUNITY_Session Middleware|Session Middleware]]
|
|
- [[_COMMUNITY_Go Test Helpers|Go Test Helpers]]
|
|
- [[_COMMUNITY_Store Tests|Store Tests]]
|
|
- [[_COMMUNITY_Bookmarks API Handler|Bookmarks API Handler]]
|
|
- [[_COMMUNITY_Web UI Handlers|Web UI Handlers]]
|
|
- [[_COMMUNITY_Go Error Handling|Go Error Handling]]
|
|
- [[_COMMUNITY_CDP Browser Client|CDP Browser Client]]
|
|
- [[_COMMUNITY_Go Code Style Guide|Go Code Style Guide]]
|
|
- [[_COMMUNITY_Agent Skills|Agent Skills]]
|
|
- [[_COMMUNITY_IO Performance Patterns|I/O Performance Patterns]]
|
|
- [[_COMMUNITY_CPU Optimization|CPU Optimization]]
|
|
- [[_COMMUNITY_Caching Patterns|Caching Patterns]]
|
|
- [[_COMMUNITY_Browser Entrypoint|Browser Entrypoint]]
|
|
- [[_COMMUNITY_Memory Allocation & GC|Memory Allocation & GC]]
|
|
- [[_COMMUNITY_Cover Fetcher Tests|Cover Fetcher Tests]]
|
|
- [[_COMMUNITY_Deployment & Cover ADRs|Deployment & Cover ADRs]]
|
|
- [[_COMMUNITY_Find Skills Guide|Find Skills Guide]]
|
|
- [[_COMMUNITY_Allocation Patterns|Allocation Patterns]]
|
|
- [[_COMMUNITY_Observability & Alerting|Observability & Alerting]]
|
|
- [[_COMMUNITY_PG Test Infrastructure|PG Test Infrastructure]]
|
|
- [[_COMMUNITY_Domain Concepts|Domain Concepts]]
|
|
- [[_COMMUNITY_Repo Hard Constraints|Repo Hard Constraints]]
|
|
- [[_COMMUNITY_Go Testing Guide|Go Testing Guide]]
|
|
- [[_COMMUNITY_Session Store|Session Store]]
|
|
- [[_COMMUNITY_Web UI Filter Logic|Web UI Filter Logic]]
|
|
- [[_COMMUNITY_Userscript Test Harness|Userscript Test Harness]]
|
|
- [[_COMMUNITY_Product & Security Context|Product & Security Context]]
|
|
- [[_COMMUNITY_UI Critique 2026-07-26A|UI Critique 2026-07-26A]]
|
|
- [[_COMMUNITY_UI Critique 2026-07-26B|UI Critique 2026-07-26B]]
|
|
- [[_COMMUNITY_DB Cutover Runbook|DB Cutover Runbook]]
|
|
- [[_COMMUNITY_Memory Layout Patterns|Memory Layout Patterns]]
|
|
- [[_COMMUNITY_Issue Tracker & Triage|Issue Tracker & Triage]]
|
|
- [[_COMMUNITY_Ticket Workflow|Ticket Workflow]]
|
|
- [[_COMMUNITY_Go Perf Alert Rules|Go Perf Alert Rules]]
|
|
- [[_COMMUNITY_Userscript Display Logic|Userscript Display Logic]]
|
|
- [[_COMMUNITY_Go Perf Skill Docs|Go Perf Skill Docs]]
|
|
- [[_COMMUNITY_Login Page Art|Login Page Art]]
|
|
- [[_COMMUNITY_BookmarkManager Logo|BookmarkManager Logo]]
|
|
- [[_COMMUNITY_Skills CLI|Skills CLI]]
|
|
- [[_COMMUNITY_Skills Leaderboard|Skills Leaderboard]]
|
|
- [[_COMMUNITY_Complex Condition Extraction|Complex Condition Extraction]]
|
|
- [[_COMMUNITY_Sentinel Errors|Sentinel Errors]]
|
|
- [[_COMMUNITY_errors.As Patterns|errors.As Patterns]]
|
|
- [[_COMMUNITY_errors.Is Patterns|errors.Is Patterns]]
|
|
- [[_COMMUNITY_errors.Join Patterns|errors.Join Patterns]]
|
|
- [[_COMMUNITY_Error Wrapping|Error Wrapping]]
|
|
- [[_COMMUNITY_Single Error Handling|Single Error Handling]]
|
|
- [[_COMMUNITY_SIMD Optimizations|SIMD Optimizations]]
|
|
- [[_COMMUNITY_GOGC Tuning|GOGC Tuning]]
|
|
- [[_COMMUNITY_GOMEMLIMIT|GOMEMLIMIT]]
|
|
- [[_COMMUNITY_Bottleneck Decision Tree|Bottleneck Decision Tree]]
|
|
- [[_COMMUNITY_pprof Profiling|pprof Profiling]]
|
|
- [[_COMMUNITY_Test Timeout Helper|Test Timeout Helper]]
|
|
- [[_COMMUNITY_httptest Patterns|httptest Patterns]]
|
|
- [[_COMMUNITY_testify Suite Pattern|testify Suite Pattern]]
|
|
- [[_COMMUNITY_goembed Fixtures|go:embed Fixtures]]
|
|
- [[_COMMUNITY_clockwork Time Mocking|clockwork Time Mocking]]
|
|
- [[_COMMUNITY_testify Mocking|testify Mocking]]
|
|
- [[_COMMUNITY_t.ArtifactDir Helper|t.ArtifactDir Helper]]
|
|
- [[_COMMUNITY_Subtests Pitfall|Subtests Pitfall]]
|
|
- [[_COMMUNITY_golang-benchmark Skill|golang-benchmark Skill]]
|
|
- [[_COMMUNITY_golang-concurrency Skill|golang-concurrency Skill]]
|
|
- [[_COMMUNITY_golang-ci Skill|golang-ci Skill]]
|
|
- [[_COMMUNITY_golang-database Skill|golang-database Skill]]
|
|
- [[_COMMUNITY_golang-lint Skill|golang-lint Skill]]
|
|
- [[_COMMUNITY_testify Skill|testify Skill]]
|
|
- [[_COMMUNITY_Build Tag Integration Tests|Build Tag Integration Tests]]
|
|
- [[_COMMUNITY_Test Naming Convention|Test Naming Convention]]
|
|
- [[_COMMUNITY_UI Critique A Finding|UI Critique A Finding]]
|
|
- [[_COMMUNITY_UI Critique B Finding|UI Critique B Finding]]
|
|
- [[_COMMUNITY_P0 Overflow Bug|P0 Overflow Bug]]
|
|
- [[_COMMUNITY_P1 hx-indicator Gap|P1 hx-indicator Gap]]
|
|
- [[_COMMUNITY_golang-benchmark Skill (ext)|golang-benchmark Skill (ext)]]
|
|
- [[_COMMUNITY_golang-concurrency Skill (ext)|golang-concurrency Skill (ext)]]
|
|
- [[_COMMUNITY_golang-ci Skill (ext)|golang-ci Skill (ext)]]
|
|
- [[_COMMUNITY_golang-data-structures Skill (ext)|golang-data-structures Skill (ext)]]
|
|
- [[_COMMUNITY_golang-database Skill (ext)|golang-database Skill (ext)]]
|
|
- [[_COMMUNITY_golang-design-patterns Skill (ext)|golang-design-patterns Skill (ext)]]
|
|
- [[_COMMUNITY_golang-documentation Skill (ext)|golang-documentation Skill (ext)]]
|
|
- [[_COMMUNITY_golang-gopls Skill (ext)|golang-gopls Skill (ext)]]
|
|
- [[_COMMUNITY_golang-lint Skill (ext)|golang-lint Skill (ext)]]
|
|
- [[_COMMUNITY_golang-naming Skill (ext)|golang-naming Skill (ext)]]
|
|
- [[_COMMUNITY_golang-observability Skill (ext)|golang-observability Skill (ext)]]
|
|
- [[_COMMUNITY_golang-refactoring Skill (ext)|golang-refactoring Skill (ext)]]
|
|
- [[_COMMUNITY_golang-safety Skill (ext)|golang-safety Skill (ext)]]
|
|
- [[_COMMUNITY_golang-samber-oops Skill (ext)|golang-samber-oops Skill (ext)]]
|
|
- [[_COMMUNITY_golang-samber-slog Skill (ext)|golang-samber-slog Skill (ext)]]
|
|
- [[_COMMUNITY_golang-structs-interfaces Skill (ext)|golang-structs-interfaces Skill (ext)]]
|
|
- [[_COMMUNITY_golang-troubleshooting Skill (ext)|golang-troubleshooting Skill (ext)]]
|
|
- [[_COMMUNITY_promql-cli Skill|promql-cli Skill]]
|
|
- [[_COMMUNITY_Backend Module|Backend Module]]
|
|
- [[_COMMUNITY_bookmark-api Service|bookmark-api Service]]
|
|
- [[_COMMUNITY_AGENTS|AGENTS.md]]
|
|
- [[_COMMUNITY_reviewer|reviewer.md]]
|
|
- [[_COMMUNITY_Redeploy runbook|Redeploy runbook]]
|
|
- [[_COMMUNITY_1. Backend|1. Backend]]
|
|
- [[_COMMUNITY_Deployment|Deployment]]
|
|
- [[_COMMUNITY_Cinder — BookmarkManager design system|Cinder — BookmarkManager design system]]
|
|
- [[_COMMUNITY_Implement tickets|Implement tickets]]
|
|
- [[_COMMUNITY_SQLite → Postgres cutover runbook|SQLite → Postgres cutover runbook]]
|
|
- [[_COMMUNITY_Testing the userscript|Testing the userscript]]
|
|
- [[_COMMUNITY_ADR-0007 The backend hosts every Site's Cover bytes|ADR-0007: The backend hosts every Site's Cover bytes]]
|
|
- [[_COMMUNITY_Issue tracker Gitea (`tea` CLI)|Issue tracker: Gitea (`tea` CLI)]]
|
|
- [[_COMMUNITY_ADR-0006 The browser runs on the home machine, over the tailnet|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|ADR-0008: A Series identity is discovered from the Site's links, never derived from an address]]
|
|
- [[_COMMUNITY_Domain Docs|Domain Docs]]
|
|
- [[_COMMUNITY_ticket-implementer|ticket-implementer.md]]
|
|
- [[_COMMUNITY_implementer|implementer.md]]
|
|
- [[_COMMUNITY_Series is a shared entity, and only the Poll may update it|Series is a shared entity, and only the Poll may update it]]
|
|
- [[_COMMUNITY_Postgres replaces SQLite as the primary datastore|Postgres replaces SQLite as the primary datastore]]
|
|
- [[_COMMUNITY_Identity comes from Discord OAuth; we store no passwords and send no email|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|The wire format stays flat and deliberately does not mirror the schema]]
|
|
- [[_COMMUNITY_ADR-0005 On-demand browser sidecar|ADR-0005: On-demand browser sidecar]]
|
|
- [[_COMMUNITY_AGENTS|AGENTS.md]]
|
|
- [[_COMMUNITY_Bookmark Manager|Bookmark Manager]]
|
|
- [[_COMMUNITY_triage-labels|triage-labels.md]]
|
|
- [[_COMMUNITY_Cross-Ticket Contract|Cross-Ticket Contract]]
|
|
- [[_COMMUNITY_Implement Tickets Skill|Implement Tickets Skill]]
|
|
- [[_COMMUNITY_Orchestrator Role|Orchestrator Role]]
|
|
- [[_COMMUNITY_resolving-merge-conflicts Skill|resolving-merge-conflicts Skill]]
|
|
- [[_COMMUNITY_tdd Skill|tdd Skill]]
|
|
- [[_COMMUNITY_Ticket Wave Batching|Ticket Wave Batching]]
|
|
- [[_COMMUNITY_Four-Object Browser Stub|Four-Object Browser Stub]]
|
|
- [[_COMMUNITY_Module Export Hook|Module Export Hook]]
|
|
- [[_COMMUNITY_logic.test.js Test Harness|logic.test.js Test Harness]]
|
|
- [[_COMMUNITY_manga-bookmark.user.js|manga-bookmark.user.js]]
|
|
- [[_COMMUNITY_stripBuildHash|stripBuildHash]]
|
|
- [[_COMMUNITY_Testing the Userscript Skill|Testing the Userscript Skill]]
|
|
- [[_COMMUNITY_cr-spec Agent|cr-spec Agent]]
|
|
- [[_COMMUNITY_cr-standards Agent|cr-standards Agent]]
|
|
- [[_COMMUNITY_Escalate Rather Than Guess|Escalate Rather Than Guess]]
|
|
- [[_COMMUNITY_Status Contract|Status Contract]]
|
|
- [[_COMMUNITY_Ticket Implementer Agent|Ticket Implementer Agent]]
|
|
- [[_COMMUNITY_Worktree Isolation|Worktree Isolation]]
|
|
- [[_COMMUNITY_Escalate Rather Than Guess (opencode)|Escalate Rather Than Guess (opencode)]]
|
|
- [[_COMMUNITY_Implementer Subagent (opencode)|Implementer Subagent (opencode)]]
|
|
- [[_COMMUNITY_Subagent-Driven Development|Subagent-Driven Development]]
|
|
- [[_COMMUNITY_Code Quality Review|Code Quality Review]]
|
|
- [[_COMMUNITY_Reviewer Subagent (opencode)|Reviewer Subagent (opencode)]]
|
|
- [[_COMMUNITY_Finding Severity Rubric|Finding Severity Rubric]]
|
|
- [[_COMMUNITY_Spec Compliance Review|Spec Compliance Review]]
|
|
- [[_COMMUNITY_CDP Browser Unit (chrome)|CDP Browser Unit (chrome/)]]
|
|
- [[_COMMUNITY_Cinder Design System|Cinder Design System]]
|
|
- [[_COMMUNITY_Cloudflare Challenge Behaviour|Cloudflare Challenge Behaviour]]
|
|
- [[_COMMUNITY_Ember Means New Chapter Only|Ember Means New Chapter Only]]
|
|
- [[_COMMUNITY_Gitea + tea CLI|Gitea + tea CLI]]
|
|
- [[_COMMUNITY_Graphify Knowledge Graph|Graphify Knowledge Graph]]
|
|
- [[_COMMUNITY_novel-bookmark.user.js|novel-bookmark.user.js]]
|
|
- [[_COMMUNITY_Security Invariants|Security Invariants]]
|
|
- [[_COMMUNITY_Why Use samberoops|Why Use samber/oops]]
|
|
- [[_COMMUNITY_singleflight Cache Stampede Prevention|singleflight Cache Stampede Prevention]]
|
|
- [[_COMMUNITY_Struct Field Alignment|Struct Field Alignment]]
|
|
- [[_COMMUNITY_testingsynctest Deterministic Goroutine Testing|testing/synctest Deterministic Goroutine Testing]]
|
|
- [[_COMMUNITY_API Package (Bookmark JSON Handlers)|API Package (Bookmark JSON Handlers)]]
|
|
- [[_COMMUNITY_Cover Acquisition & Serving Pipeline|Cover Acquisition & Serving Pipeline]]
|
|
- [[_COMMUNITY_Backend AGENTS.md Guidance|Backend AGENTS.md Guidance]]
|
|
- [[_COMMUNITY_HTTP Middleware (AuthGzipCORS)|HTTP Middleware (Auth/Gzip/CORS)]]
|
|
- [[_COMMUNITY_Latest Package (Site Parsers & Poller)|Latest Package (Site Parsers & Poller)]]
|
|
- [[_COMMUNITY_Latest-Chapter Poller|Latest-Chapter Poller]]
|
|
- [[_COMMUNITY_Main Composition Root|Main Composition Root]]
|
|
- [[_COMMUNITY_Migration-Owned Schema|Migration-Owned Schema]]
|
|
- [[_COMMUNITY_Session Package (Cookie Signing & Rate Limit)|Session Package (Cookie Signing & Rate Limit)]]
|
|
- [[_COMMUNITY_updated_at List-Order Rule|updated_at List-Order Rule]]
|
|
- [[_COMMUNITY_Userscript Package (Serving Handler)|Userscript Package (Serving Handler)]]
|
|
- [[_COMMUNITY_Backend CLAUDE.md Guidance|Backend CLAUDE.md Guidance]]
|
|
- [[_COMMUNITY_Graphify Knowledge Graph (graphify-out)|Graphify Knowledge Graph (graphify-out/)]]
|
|
- [[_COMMUNITY_CLAUDE.md (Symlink to AGENTS.md)|CLAUDE.md (Symlink to AGENTS.md)]]
|
|
- [[_COMMUNITY_Chapter Slug|Chapter Slug]]
|
|
- [[_COMMUNITY_CONTEXT.md Ubiquitous Language|CONTEXT.md Ubiquitous Language]]
|
|
- [[_COMMUNITY_Favourite|Favourite]]
|
|
- [[_COMMUNITY_Latest Chapter|Latest Chapter]]
|
|
- [[_COMMUNITY_Library|Library]]
|
|
- [[_COMMUNITY_Lifecycle Bucket|Lifecycle Bucket]]
|
|
- [[_COMMUNITY_New Chapter|New Chapter]]
|
|
- [[_COMMUNITY_Poll|Poll]]
|
|
- [[_COMMUNITY_Progress|Progress]]
|
|
- [[_COMMUNITY_Reader|Reader]]
|
|
- [[_COMMUNITY_Series|Series]]
|
|
- [[_COMMUNITY_Site|Site]]
|
|
- [[_COMMUNITY_ADR-0001 (Drop modernc.orgsqlite)|ADR-0001 (Drop modernc.org/sqlite)]]
|
|
- [[_COMMUNITY_ADR-0003 (Split Shared Series Facts)|ADR-0003 (Split Shared Series Facts)]]
|
|
- [[_COMMUNITY_SQLite-to-Postgres Cutover Runbook|SQLite-to-Postgres Cutover Runbook]]
|
|
- [[_COMMUNITY_Import SQL Generation Rules|Import SQL Generation Rules]]
|
|
- [[_COMMUNITY_Throwaway Import Generator|Throwaway Import Generator]]
|
|
- [[_COMMUNITY_ADR-0002 (Discord OAuth Sign-In)|ADR-0002 (Discord OAuth Sign-In)]]
|
|
- [[_COMMUNITY_ADR-0006 (Browser Out of API Stack)|ADR-0006 (Browser Out of API Stack)]]
|
|
- [[_COMMUNITY_ADR-0007 (Absolute Cover URLs)|ADR-0007 (Absolute Cover URLs)]]
|
|
- [[_COMMUNITY_bookmark-api Service|bookmark-api Service]]
|
|
- [[_COMMUNITY_Deployment Runbook|Deployment Runbook]]
|
|
- [[_COMMUNITY_Issue 24 (Derived Credentials)|Issue #24 (Derived Credentials)]]
|
|
- [[_COMMUNITY_Tailscale ACL Tagging|Tailscale ACL Tagging]]
|
|
- [[_COMMUNITY_TOKEN_KEY Credential Derivation|TOKEN_KEY Credential Derivation]]
|
|
- [[_COMMUNITY_Traefik Reverse Proxy|Traefik Reverse Proxy]]
|
|
- [[_COMMUNITY_Real scaling limit is the poller outbound fetch budget|Real scaling limit is the poller outbound fetch budget]]
|
|
- [[_COMMUNITY_PostgreSQL (jackcpgxv5)|PostgreSQL (jackc/pgx/v5)]]
|
|
- [[_COMMUNITY_SQLite (modernc.orgsqlite)|SQLite (modernc.org/sqlite)]]
|
|
- [[_COMMUNITY_Postgres chosen for future supportability, not concurrency|Postgres chosen for future supportability, not concurrency]]
|
|
- [[_COMMUNITY_Per-Reader bearer token for userscripts|Per-Reader bearer token for userscripts]]
|
|
- [[_COMMUNITY_Discord OAuth2 (authorization code grant)|Discord OAuth2 (authorization code grant)]]
|
|
- [[_COMMUNITY_ADR-0002 Discord OAuth, no passwords, no email|ADR-0002: Discord OAuth, no passwords, no email]]
|
|
- [[_COMMUNITY_Discord snowflake is the sole identity (lock-in)|Discord snowflake is the sole identity (lock-in)]]
|
|
- [[_COMMUNITY_Bookmark (per-Reader state Progress, Favourite, Lifecycle)|Bookmark (per-Reader state: Progress, Favourite, Lifecycle)]]
|
|
- [[_COMMUNITY_Deduplicate polling per Series (reader_count DESC queue)|Deduplicate polling per Series (reader_count DESC queue)]]
|
|
- [[_COMMUNITY_ADR-0003 Series is shared, only the Poll updates it|ADR-0003: Series is shared, only the Poll updates it]]
|
|
- [[_COMMUNITY_Only the Poll writes Series fields (security boundary)|Only the Poll writes Series fields (security boundary)]]
|
|
- [[_COMMUNITY_Series (shared entity keyed site+series_id)|Series (shared entity keyed site+series_id)]]
|
|
- [[_COMMUNITY_ADR-0004 Wire format stays flat, does not mirror schema|ADR-0004: Wire format stays flat, does not mirror schema]]
|
|
- [[_COMMUNITY_Flat wire shape is a contract, not an implementation detail|Flat wire shape is a contract, not an implementation detail]]
|
|
- [[_COMMUNITY_Installed userscripts must keep working (14-day grace window)|Installed userscripts must keep working (14-day grace window)]]
|
|
- [[_COMMUNITY_CDP (Chrome DevTools Protocol) endpoint|CDP (Chrome DevTools Protocol) endpoint]]
|
|
- [[_COMMUNITY_headless-shell service (socat-fronted CDP)|headless-shell service (socat-fronted CDP)]]
|
|
- [[_COMMUNITY_Start Chrome on first CDP connection, reap after 300s idle|Start Chrome on first CDP connection, reap after 300s idle]]
|
|
- [[_COMMUNITY_BROWSER_WS_URL configuration seam|BROWSER_WS_URL configuration seam]]
|
|
- [[_COMMUNITY_ADR-0006 Browser runs on the home machine over the tailnet|ADR-0006: Browser runs on the home machine over the tailnet]]
|
|
- [[_COMMUNITY_Browser moved home VPS memory pressure, no requests served|Browser moved home: VPS memory pressure, no requests served]]
|
|
- [[_COMMUNITY_Tailnet (Tailscale network)|Tailnet (Tailscale network)]]
|
|
- [[_COMMUNITY_Content-addressed filesystem storage (SHA-256 of source URL)|Content-addressed filesystem storage (SHA-256 of source URL)]]
|
|
- [[_COMMUNITY_Cover (Series image bytes)|Cover (Series image bytes)]]
|
|
- [[_COMMUNITY_Deny-class destination control for outbound fetch|Deny-class destination control for outbound fetch]]
|
|
- [[_COMMUNITY_ADR-0007 Backend hosts every Site's Cover bytes|ADR-0007: Backend hosts every Site's Cover bytes]]
|
|
- [[_COMMUNITY_kagane CORP same-origin cover restriction|kagane CORP same-origin cover restriction]]
|
|
- [[_COMMUNITY_Backend acquires, stores, serves every Cover (uniformity)|Backend acquires, stores, serves every Cover (uniformity)]]
|
|
- [[_COMMUNITY_aaria-label='All Chapter' anchor pointer|a[aria-label='All Chapter'] anchor pointer]]
|
|
- [[_COMMUNITY_Series identity is discovered from the Site's links|Series identity is discovered from the Site's links]]
|
|
- [[_COMMUNITY_ADR-0008 Series identity discovered, never derived|ADR-0008: Series identity discovered, never derived]]
|
|
- [[_COMMUNITY_Chapter slug vs series slug divergence (~7% measured)|Chapter slug vs series slug divergence (~7% measured)]]
|
|
- [[_COMMUNITY_Scan truncated at first wpd-threads marker|Scan truncated at first wpd-threads marker]]
|
|
- [[_COMMUNITY_Surface ADR conflicts explicitly rather than silently overriding|Surface ADR conflicts explicitly rather than silently overriding]]
|
|
- [[_COMMUNITY_Domain docs single-context layout guidance|Domain docs: single-context layout guidance]]
|
|
- [[_COMMUNITY_domain-modeling skill (lazy CONTEXT.md creation)|/domain-modeling skill (lazy CONTEXT.md creation)]]
|
|
- [[_COMMUNITY_CONTEXT.md glossary (ubiquitous language)|CONTEXT.md glossary (ubiquitous language)]]
|
|
- [[_COMMUNITY_Gitea (tea CLI, gitea.violetcrown.my.id)|Gitea (tea CLI, gitea.violetcrown.my.id)]]
|
|
- [[_COMMUNITY_wayfinder mapticket mechanism|wayfinder map/ticket mechanism]]
|
|
- [[_COMMUNITY_Triage labels canonical roles to tracker labels|Triage labels: canonical roles to tracker labels]]
|
|
- [[_COMMUNITY_Canonical triage role labels (needs-triage ... wontfix)|Canonical triage role labels (needs-triage ... wontfix)]]
|
|
- [[_COMMUNITY_Cinder (BookmarkManager Web UI design system)|Cinder (BookmarkManager Web UI design system)]]
|
|
- [[_COMMUNITY_Heat is typographic ember reserved for unread chapters|Heat is typographic: ember reserved for unread chapters]]
|
|
- [[_COMMUNITY_Design tokens (dark + light branches, no hardcoded hex)|Design tokens (dark + light branches, no hardcoded hex)]]
|
|
- [[_COMMUNITY_Three type roles display serif mono small-caps sans|Three type roles: display serif / mono small-caps / sans]]
|
|
- [[_COMMUNITY_aaria-label='All Chapter' priority pointer|a[aria-label='All Chapter'] priority pointer]]
|
|
- [[_COMMUNITY_Research lightnovelworld chapter slug vs series slug|Research: lightnovelworld chapter slug vs series slug]]
|
|
- [[_COMMUNITY_Gitea issue 77 (chapter vs series slug)|Gitea issue #77 (chapter vs series slug)]]
|
|
- [[_COMMUNITY_Slug divergence measurements (341 diverge, 1 split)|Slug divergence measurements (3/41 diverge, 1 split)]]
|
|
- [[_COMMUNITY_Unscoped chapter regex is SAFE, truncated at wpd-threads|Unscoped chapter regex is SAFE, truncated at wpd-threads]]
|
|
- [[_COMMUNITY_BookmarkManager|BookmarkManager]]
|
|
- [[_COMMUNITY_Bromite (Primary Device)|Bromite (Primary Device)]]
|
|
- [[_COMMUNITY_Dark-First Design Constraint|Dark-First Design Constraint]]
|
|
- [[_COMMUNITY_Discord Guild Membership|Discord Guild Membership]]
|
|
- [[_COMMUNITY_Reader Isolation Invariant|Reader Isolation Invariant]]
|
|
- [[_COMMUNITY_Site Adapters|Site Adapters]]
|
|
- [[_COMMUNITY_Go Backend (backend)|Go Backend (backend/)]]
|
|
- [[_COMMUNITY_localStorage Cache and Retry Queue|localStorage Cache and Retry Queue]]
|
|
- [[_COMMUNITY_Latest Chapter Poller|Latest Chapter Poller]]
|
|
- [[_COMMUNITY_Postgres Store (postgres17-alpine)|Postgres Store (postgres:17-alpine)]]
|
|
- [[_COMMUNITY_README Config and Endpoint Reference|README Config and Endpoint Reference]]
|
|
- [[_COMMUNITY_Browser Unit Redeploy|Browser Unit Redeploy]]
|
|
- [[_COMMUNITY_pg_dump Hot Backup|pg_dump Hot Backup]]
|
|
- [[_COMMUNITY_Redeploy Runbook|Redeploy Runbook]]
|
|
- [[_COMMUNITY_Rollback Strategy|Rollback Strategy]]
|
|
- [[_COMMUNITY_Bearer-token API client (apiGetapiPutapiDelete)|Bearer-token API client (apiGet/apiPut/apiDelete)]]
|
|
- [[_COMMUNITY_Userscript AGENTS guidance|Userscript AGENTS guidance]]
|
|
- [[_COMMUNITY_manga-bookmark.user.js (single-IIFE manga script)|manga-bookmark.user.js (single-IIFE manga script)]]
|
|
- [[_COMMUNITY_novel-bookmark.user.js (novel script, bmgrnovel)|novel-bookmark.user.js (novel script, bmgr:novel:)]]
|
|
- [[_COMMUNITY_Offline retry queue (bmgrmangaqueue markers)|Offline retry queue (bmgr:manga:queue markers)]]
|
|
- [[_COMMUNITY_Shadow DOM UI isolation from site CSS|Shadow DOM UI isolation from site CSS]]
|
|
- [[_COMMUNITY_Site adapters (URL-regex detect, ogtitle)|Site adapters (URL-regex detect, og:title)]]
|
|
- [[_COMMUNITY_Userscript CLAUDE guidance|Userscript CLAUDE guidance]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `testConfig()` - 53 edges
|
|
2. `newWebTestServer()` - 49 edges
|
|
3. `newTestStore()` - 42 edges
|
|
4. `newTestStore()` - 41 edges
|
|
5. `e()` - 33 edges
|
|
6. `Handler` - 29 edges
|
|
7. `ne()` - 28 edges
|
|
8. `De()` - 28 edges
|
|
9. `Open()` - 27 edges
|
|
10. `se()` - 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.md
|
|
- `el()` --indirect_call--> `c()` [INFERRED]
|
|
userscript/manga-bookmark.user.js → backend/internal/web/static/htmx.min.js
|
|
- `el()` --indirect_call--> `c()` [INFERRED]
|
|
userscript/novel-bookmark.user.js → backend/internal/web/static/htmx.min.js
|
|
- `latestChapterFromAnchors()` --indirect_call--> `re()` [INFERRED]
|
|
userscript/manga-bookmark.user.js → backend/internal/web/static/htmx.min.js
|
|
- `el()` --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 (277 total, 215 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 (76): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+68 more)
|
|
|
|
### Community 3 - "Novel Userscript Adapters"
|
|
Cohesion: 0.06
|
|
Nodes (79): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+71 more)
|
|
|
|
### Community 4 - "Series Acquisition Tests"
|
|
Cohesion: 0.10
|
|
Nodes (67): bookmarkNewKaganeSeries(), bookmarkNewNovelfullSeries(), bookmarkNewSeries(), Context, Store, T, newAcquirer(), readBookmark() (+59 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.08
|
|
Nodes (40): Addr, Context, Store, defaultCoverResolver(), fetchCoverBytes(), Client, Context, NewCoverFetcher() (+32 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.08
|
|
Nodes (35): ClearCookie(), ClientIP(), Duration, Mutex, Request, ResponseWriter, Time, isHTTPS() (+27 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.05
|
|
Nodes (75): T, TestCreateAndGetSession(), TestDeleteSessionIsPerReader(), TestDeleteSessionRevokes(), TestExpiredSessionIsGone(), TestGetSessionUnknownID(), applyMigration(), CoverContentType() (+67 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.14
|
|
Nodes (18): currentLib(), currentTab(), filterBookmarks(), Client, HandlerFunc, Request, ResponseWriter, Store (+10 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 (29): Action, awaitPromise(), browserConnectionLost(), classifyBrowserError(), Context, Mutex, isInterstitial(), jsString() (+21 more)
|
|
|
|
### 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 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 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 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 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.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 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 #<n> — <title>
|
|
|
|
### Community 111 - "SQLite → Postgres cutover runbook"
|
|
Cohesion: 0.22
|
|
Nodes (8): 0. The generator is throwaway, 1. Stop the old API and take a fresh export, 2. Bring up Postgres with the schema and the owner Reader, 3. Generate the import SQL, 4. Review it by eye, 5. Apply it, 6. Afterwards, SQLite → Postgres cutover runbook
|
|
|
|
### Community 112 - "Testing the userscript"
|
|
Cohesion: 0.29
|
|
Nodes (6): Adding a test, Commands, Gotchas, How the harness works, Testing the userscript, What is NOT testable here
|
|
|
|
### Community 113 - "ADR-0007: The backend hosts every Site's Cover bytes"
|
|
Cohesion: 0.29
|
|
Nodes (6): ADR-0007: The backend hosts every Site's Cover bytes, Consequences, Considered options, Decision, Two deliberate relaxations, Why a future reader will find this surprising
|
|
|
|
### Community 114 - "Issue tracker: Gitea (`tea` CLI)"
|
|
Cohesion: 0.29
|
|
Nodes (6): Conventions, Issue tracker: Gitea (`tea` CLI), Pull requests as a triage surface, Wayfinding operations, When a skill says "fetch the relevant ticket", When a skill says "publish to the issue tracker"
|
|
|
|
### Community 115 - "ADR-0006: The browser runs on the home machine, over the tailnet"
|
|
Cohesion: 0.33
|
|
Nodes (5): ADR-0006: The browser runs on the home machine, over the tailnet, Consequences, Constraints, Decision, Why
|
|
|
|
### Community 116 - "ADR-0008: A Series identity is discovered from the Site's links, never derived from an address"
|
|
Cohesion: 0.33
|
|
Nodes (5): ADR-0008: A Series identity is discovered from the Site's links, never derived from an address, Consequences, Considered options, Decision, Why
|
|
|
|
### Community 117 - "Domain Docs"
|
|
Cohesion: 0.33
|
|
Nodes (5): Before exploring, read these, Domain Docs, File structure, Flag ADR conflicts, Use the glossary's vocabulary
|
|
|
|
### Community 118 - "ticket-implementer.md"
|
|
Cohesion: 0.33
|
|
Nodes (5): Escalate rather than guess, Order of work, Report, Review, The worktree is your whole world
|
|
|
|
### Community 119 - "implementer.md"
|
|
Cohesion: 0.33
|
|
Nodes (5): Before You Begin, Report Format, Self-Review Before Reporting, When You're in Over Your Head, Your Job
|
|
|
|
### Community 120 - "Series is a shared entity, and only the Poll may update it"
|
|
Cohesion: 0.40
|
|
Nodes (4): Consequences, Only the Poll writes Series fields, Series is a shared entity, and only the Poll may update it, Why
|
|
|
|
### Community 121 - "Postgres replaces SQLite as the primary datastore"
|
|
Cohesion: 0.50
|
|
Nodes (3): Consequences, Considered options, Postgres replaces SQLite as the primary datastore
|
|
|
|
### Community 122 - "Identity comes from Discord OAuth; we store no passwords and send no email"
|
|
Cohesion: 0.50
|
|
Nodes (3): Consequences, Considered options, Identity comes from Discord OAuth; we store no passwords and send no email
|
|
|
|
### Community 123 - "The wire format stays flat and deliberately does not mirror the schema"
|
|
Cohesion: 0.50
|
|
Nodes (3): Consequence, The wire format stays flat and deliberately does not mirror the schema, Why a future reader will find this surprising
|
|
|
|
### Community 124 - "ADR-0005: On-demand browser sidecar"
|
|
Cohesion: 0.50
|
|
Nodes (3): ADR-0005: On-demand browser sidecar, Constraints, Decision
|
|
|
|
### Community 125 - "AGENTS.md"
|
|
Cohesion: 0.50
|
|
Nodes (3): Live URL shapes (verified 2026-07-26, may drift — re-check against live pages before trust), Second script: `novel-bookmark.user.js`, Userscript structure (single IIFE, `manga-bookmark.user.js`)
|
|
|
|
## Knowledge Gaps
|
|
- **545 isolated node(s):** `bookmarkmanager/backend`, `ctxKey`, `loginView`, `ctxKey`, `test` (+540 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **215 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
|
|
|
## Suggested Questions
|
|
_Questions this graph is uniquely positioned to answer:_
|
|
|
|
- **Why does `New()` connect `Series Acquisition Tests` to `Bookmarks API Tests`, `Cover & Acquire Internals`, `Session Middleware`, `Store Tests`, `Web UI Handlers`?**
|
|
_High betweenness centrality (0.041) - this node is a cross-community bridge._
|
|
- **Why does `Open()` connect `Store Tests` to `Cover Fetch Test Helpers`, `Series Acquisition Tests`, `Bookmarks API Tests`, `PG Test Infrastructure`?**
|
|
_High betweenness centrality (0.035) - this node is a cross-community bridge._
|
|
- **Why does `newRouter()` connect `Bookmarks API Tests` to `Cover Fetch Test Helpers`, `Bookmarks API Handler`, `Series Acquisition Tests`?**
|
|
_High betweenness centrality (0.022) - this node is a cross-community bridge._
|
|
- **Are the 47 inferred relationships involving `testConfig()` (e.g. with `TestListRendersAcquiredCover()` and `TestPublicCoverNeverEchoesNonImage()`) actually correct?**
|
|
_`testConfig()` has 47 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 8 inferred relationships involving `newWebTestServer()` (e.g. with `TestListRendersAcquiredCover()` and `TestPublicCoverRejectsUnknownAddress()`) actually correct?**
|
|
_`newWebTestServer()` has 8 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 6 inferred relationships involving `newTestStore()` (e.g. with `TestCreateAndGetSession()` and `TestDeleteSessionIsPerReader()`) actually correct?**
|
|
_`newTestStore()` has 6 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `bookmarkmanager/backend`, `ctxKey`, `loginView` to the rest of the system?**
|
|
_589 weakly-connected nodes found - possible documentation gaps or missing edges._ |