ddbd57070d
Closes #98.
comix.to began answering plain-TLS fetches with a Cloudflare JavaScript
challenge on 2026-08-12, so every poll got a 403 interstitial. Its cover host
`static.comix.to` is gated the same way. comix therefore joins kagane and
novelfull as a browser-backed Site.
## What changed
- **Registry** (`internal/latest/sites.go`): comix gains a `Browser` entry —
`comixRead`, `Done: body != "" && !isInterstitial(body)`, `Fallback: false`.
Skip-when-no-browser falls out of the existing routing; no site-string compare
was added anywhere.
- **Read shape** (`internal/latest/browser.go`): an in-tab `fetch()` of the
Series URL, not a DOM render. comix is an SPA — rendering it costs ~65
requests for the same server-rendered HTML one fetch returns (24.5 KB,
~480 ms measured). `comixSeriesPageURL` pins scheme + host + `/title/<slug>`
and rebuilds the address, so a client-supplied `series_url` cannot aim the
browser anywhere else.
- **Cover bytes**: `comixImageURLRe` pins `https://static.comix.to/<path>.<ext>`;
`BrowserFetcher.Image` now gates on `browserOnlyCoverURL` rather than a
kagane-only regex, so both Sites' image URLs route through the one path.
Bytes come from direct navigation, not a page-context fetch — comix's Series
page sets `cross-origin-embedder-policy: require-corp`, which fails one.
- **Parsers and stored Series identity: untouched.** The in-tab body is the same
server-rendered HTML the existing fixtures were cut from.
## Verification
- `go test ./...` green (needs Docker).
- New seam tests: comix routes to the browser when one is configured, and is
not fetched at all when none is (`TestComixUsesBrowserFetcher`,
`TestComixSkippedWhenNoBrowserFetcher`); URL-pin and cover-gate table tests.
- Live proof against the real browser unit, `TestSmokeComix` (env-gated):
page 24793 bytes in one in-tab fetch, chapter 53, cover accepted by the pin,
26862 bytes of `image/jpg` retrieved.
- Two-axis review run; findings were stale comments on `BrowserFetcher`, `Get`
and the `Fallback` field, fixed in f000cc7.
Docs updated: root `AGENTS.md` (constraint + smoke command, including the note
that this dev machine's ISP DNS-hijacks `comix.to`), `backend/AGENTS.md`
(poller, cover pipeline, `BROWSER_WS_URL`), `REDEPLOY.md` §8 degrade note.
Reviewed-on: #105
Co-authored-by: Sulthan Zaki <sultankiki05@gmail.com>
Co-committed-by: Sulthan Zaki <sultankiki05@gmail.com>
562 lines
37 KiB
Markdown
562 lines
37 KiB
Markdown
# Graph Report - mangaBookmark (2026-08-16)
|
|
|
|
## Corpus Check
|
|
- 112 files · ~274,851 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 1640 nodes · 3294 edges · 221 communities (67 shown, 154 thin omitted)
|
|
- Extraction: 90% EXTRACTED · 10% INFERRED · 0% AMBIGUOUS · INFERRED: 313 edges (avg confidence: 0.77)
|
|
- Token cost: 0 input · 0 output
|
|
|
|
## Graph Freshness
|
|
- Built from commit: `f000cc7e`
|
|
- 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_Cloudflare bot scoring and poll cadence — what is actually documented|Cloudflare bot scoring and poll cadence — what is actually documented]]
|
|
- [[_COMMUNITY_Go Code Style Guide|Go Code Style Guide]]
|
|
- [[_COMMUNITY_Agent Skills|Agent Skills]]
|
|
- [[_COMMUNITY_Store|Store]]
|
|
- [[_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_Open|Open]]
|
|
- [[_COMMUNITY_Find Skills Guide|Find Skills Guide]]
|
|
- [[_COMMUNITY_Allocation Patterns|Allocation Patterns]]
|
|
- [[_COMMUNITY_Observability & Alerting|Observability & Alerting]]
|
|
- [[_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_novel-logic.test.js|novel-logic.test.js]]
|
|
- [[_COMMUNITY_UI Critique 2026-07-26A|UI Critique 2026-07-26A]]
|
|
- [[_COMMUNITY_UI Critique 2026-07-26B|UI Critique 2026-07-26B]]
|
|
- [[_COMMUNITY_sessions_test.go|sessions_test.go]]
|
|
- [[_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_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_T|T]]
|
|
- [[_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_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_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_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_AGENTS|AGENTS.md]]
|
|
- [[_COMMUNITY_Userscript CLAUDE guidance|Userscript CLAUDE guidance]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `testConfig()` - 53 edges
|
|
2. `newWebTestServer()` - 49 edges
|
|
3. `newTestStore()` - 43 edges
|
|
4. `newTestStore()` - 42 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)
|
|
- `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
|
|
- `el()` --indirect_call--> `k()` [INFERRED]
|
|
userscript/novel-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]
|
|
- **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]
|
|
- **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 (221 total, 154 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 (69): bookmarkNewKaganeSeries(), bookmarkNewNovelfullSeries(), bookmarkNewSeries(), Context, Store, T, newAcquirer(), readBookmark() (+61 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.13
|
|
Nodes (20): app.html — App Shell Template, Manga/Novel Library Switch, Bookmark Bucket Tabs, Confirm Row (Archive/Finish/Remove), card.html — Series Card Template, htmx /ui/* Mutation Endpoints, chrome.html — Out-of-Band Regions, Action Key (+12 more)
|
|
|
|
### Community 9 - "Session Middleware"
|
|
Cohesion: 0.07
|
|
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.15
|
|
Nodes (43): Store, T, newTestStore(), readLatestCheckedAt(), readSeries(), secondReader(), seedForCheck(), seedSecondReader() (+35 more)
|
|
|
|
### Community 12 - "Bookmarks API Handler"
|
|
Cohesion: 0.11
|
|
Nodes (24): Auth(), compressible(), CORS(), Handler, ResponseWriter, Store, Gzip(), ResolveReader() (+16 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.07
|
|
Nodes (36): awaitPromise(), browserConnectionLost(), classifyBrowserError(), comixRead(), comixSeriesPageURL(), Action, Context, Mutex (+28 more)
|
|
|
|
### Community 16 - "Cloudflare bot scoring and poll cadence — what is actually documented"
|
|
Cohesion: 0.06
|
|
Nodes (33): 1.1 The score itself, 1.2 The detection engines (Enterprise Bot Management), 1.3 Rate limiting is a separate product, 1. What a bot score is and what feeds it, 2.1 What each plan gets, 2.2 Bot Fight Mode specifics (the Free-plan product), 2.3 Does the free tier "score" continuously?, 2. The free-plan reality (+25 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 19 - "Store"
|
|
Cohesion: 0.09
|
|
Nodes (8): coverRelativePath(), coverSourceAddress(), displayChapter(), Store, scanSeries(), TestDisplayChapter(), Bookmark, ReaderSummary
|
|
|
|
### 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 - "Open"
|
|
Cohesion: 0.20
|
|
Nodes (17): applyMigration(), migrate(), Open(), refreshOwnerToken(), seedOwner(), TestCoverIsContentAddressedOnFilesystem(), TestCoverPersistsAcrossReopen(), TestMigration0002BackfillsExistingBookmarks() (+9 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.11
|
|
Nodes (19): Allocation Patterns, Backing Array Leaks, Direct indexing vs append, Eliminate redundant map lookups, Interface boxing, Map never shrinks, Map of pointers for large, frequently updated structs, Map size hints (+11 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 32 - "Repo Hard Constraints"
|
|
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 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 41 - "sessions_test.go"
|
|
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.32
|
|
Nodes (8): Browser Sidecar Service, CDP Endpoint (Tailnet-Bound :9222), Persistent Chrome Profile Volume, chrome/docker-compose.yml — Browser Deployable Unit, bookmark-api Prod Override, CDP Never on Shared Proxy Network, docker-compose.prod.yml — Production Override, Traefik Reverse Proxy Labels
|
|
|
|
### Community 104 - "AGENTS.md"
|
|
Cohesion: 0.12
|
|
Nodes (14): Agent skills, Architecture, Commands, Comments, Design system, Domain docs, Forge: Gitea, not GitHub, graphify (+6 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 158 - "T"
|
|
Cohesion: 0.08
|
|
Nodes (38): Handler, Request, ResponseWriter, Store, Healthz(), writeJSON(), Request, ReaderID() (+30 more)
|
|
|
|
### Community 273 - "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
|
|
- **520 isolated node(s):** `bookmarkmanager/backend`, `ctxKey`, `loginView`, `ctxKey`, `test` (+515 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **154 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`, `Web UI Handlers`, `Open`?**
|
|
_High betweenness centrality (0.051) - this node is a cross-community bridge._
|
|
- **Why does `Open()` connect `Open` to `Repo Hard Constraints`, `Cover Fetch Test Helpers`, `Series Acquisition Tests`, `Bookmarks API Tests`, `Store Tests`, `Store`?**
|
|
_High betweenness centrality (0.038) - 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.030) - 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 12 inferred relationships involving `newTestStore()` (e.g. with `TestAcquireDoesNotBlockTheWrite()` and `TestAcquireFailureLeavesTheBookmarkIntact()`) actually correct?**
|
|
_`newTestStore()` has 12 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `bookmarkmanager/backend`, `ctxKey`, `loginView` to the rest of the system?**
|
|
_553 weakly-connected nodes found - possible documentation gaps or missing edges._ |