chore: refresh graphify map and tidy AGENTS.md (#84)
graphify update regeneration: semantic hashes now populated in manifest.json, graph rebuilt (1634 nodes, 3179 edges). Track the map (5 curated files + .graphify_root) so a fresh checkout starts with it; cost.json, cache/, dated snapshots and .rebuild.lock stay ignored. AGENTS.md: drop stale Relevant skills and Notes sections; graphify rule now says to always query the graph first. Reviewed-on: #84 Co-authored-by: Sulthan Zaki <sultankiki05@gmail.com> Co-committed-by: Sulthan Zaki <sultankiki05@gmail.com>
This commit was merged in pull request #84.
This commit is contained in:
+5
-1
@@ -5,7 +5,11 @@
|
|||||||
backend/server
|
backend/server
|
||||||
backend/backend
|
backend/backend
|
||||||
.playwright-mcp/
|
.playwright-mcp/
|
||||||
graphify-out/
|
# graphify map is committed; only regenerable/local parts are ignored
|
||||||
|
graphify-out/cost.json
|
||||||
|
graphify-out/cache/
|
||||||
|
graphify-out/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
|
||||||
|
graphify-out/.rebuild.lock
|
||||||
plans/
|
plans/
|
||||||
.scratch/
|
.scratch/
|
||||||
docs/superpowers/
|
docs/superpowers/
|
||||||
|
|||||||
@@ -140,12 +140,6 @@ Style: one dense comment over function beats one per line inside. Tight, no work
|
|||||||
|
|
||||||
Test: "competent reader get this from code in few sec?" Yes → skip. Needs detour through another file/spec/git-blame → write it.
|
Test: "competent reader get this from code in few sec?" Yes → skip. Needs detour through another file/spec/git-blame → write it.
|
||||||
|
|
||||||
## Relevant skills
|
|
||||||
|
|
||||||
`multi-stage-dockerfile` and `docker-compose-orchestration` for container work (referenced in plan).
|
|
||||||
|
|
||||||
`golang-code-style`, `golang-error-handling`, `golang-performance`, `golang-testing` for backend Go work.
|
|
||||||
|
|
||||||
## Agent skills
|
## Agent skills
|
||||||
|
|
||||||
`AGENTS.md` is the single source of truth for agent guidance; every `CLAUDE.md` in this repo is a symlink to the `AGENTS.md` beside it. Edit `AGENTS.md`.
|
`AGENTS.md` is the single source of truth for agent guidance; every `CLAUDE.md` in this repo is a symlink to the `AGENTS.md` beside it. Edit `AGENTS.md`.
|
||||||
@@ -167,11 +161,7 @@ Single-context: one root `CONTEXT.md` plus `docs/adr/`, both created lazily. See
|
|||||||
Project has knowledge graph at graphify-out/ with god nodes, community structure, cross-file relationships.
|
Project has knowledge graph at graphify-out/ with god nodes, community structure, cross-file relationships.
|
||||||
|
|
||||||
Rules:
|
Rules:
|
||||||
- For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. Return scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
|
- For codebase questions and exploration, always first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. Return scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
|
||||||
- If graphify-out/wiki/index.md exists, use for broad navigation instead of raw source browsing.
|
- If graphify-out/wiki/index.md exists, use for broad navigation instead of raw source browsing.
|
||||||
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain don't surface enough context.
|
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain don't surface enough context.
|
||||||
- After modifying code, run `graphify update .` to keep graph current (AST-only, no API cost).
|
- After modifying code, run `graphify update .` to keep graph current (AST-only, no API cost).
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- Keep comms terse — drop articles, fluff, pleasantries. Code/commits/security written normally.
|
|
||||||
|
|||||||
@@ -0,0 +1,282 @@
|
|||||||
|
{
|
||||||
|
"0": "HTMX Library Internals",
|
||||||
|
"1": "Cover Fetch Test Helpers",
|
||||||
|
"2": "Manga Userscript Adapters",
|
||||||
|
"3": "Novel Userscript Adapters",
|
||||||
|
"4": "Series Acquisition Tests",
|
||||||
|
"5": "Bookmarks API Tests",
|
||||||
|
"6": "Storage Choice ADR",
|
||||||
|
"7": "Cover & Acquire Internals",
|
||||||
|
"8": "System Architecture Concepts",
|
||||||
|
"9": "Session Middleware",
|
||||||
|
"10": "Go Test Helpers",
|
||||||
|
"11": "Store Tests",
|
||||||
|
"12": "Bookmarks API Handler",
|
||||||
|
"13": "Web UI Handlers",
|
||||||
|
"14": "Go Error Handling",
|
||||||
|
"15": "CDP Browser Client",
|
||||||
|
"16": "Cover Storage",
|
||||||
|
"17": "Go Code Style Guide",
|
||||||
|
"18": "Agent Skills",
|
||||||
|
"19": "Store Migrations",
|
||||||
|
"20": "I/O Performance Patterns",
|
||||||
|
"21": "CPU Optimization",
|
||||||
|
"22": "Caching Patterns",
|
||||||
|
"23": "Browser Entrypoint",
|
||||||
|
"24": "Memory Allocation & GC",
|
||||||
|
"25": "Cover Fetcher Tests",
|
||||||
|
"26": "Deployment & Cover ADRs",
|
||||||
|
"27": "Find Skills Guide",
|
||||||
|
"28": "Allocation Patterns",
|
||||||
|
"29": "Observability & Alerting",
|
||||||
|
"30": "PG Test Infrastructure",
|
||||||
|
"31": "Domain Concepts",
|
||||||
|
"32": "Repo Hard Constraints",
|
||||||
|
"33": "Go Testing Guide",
|
||||||
|
"34": "Session Store",
|
||||||
|
"35": "Web UI Filter Logic",
|
||||||
|
"36": "Userscript Test Harness",
|
||||||
|
"37": "Product & Security Context",
|
||||||
|
"38": "Session Store Tests",
|
||||||
|
"39": "UI Critique 2026-07-26A",
|
||||||
|
"40": "UI Critique 2026-07-26B",
|
||||||
|
"41": "DB Cutover Runbook",
|
||||||
|
"42": "Memory Layout Patterns",
|
||||||
|
"43": "Issue Tracker & Triage",
|
||||||
|
"44": "Ticket Workflow",
|
||||||
|
"45": "Go Perf Alert Rules",
|
||||||
|
"46": "Userscript Display Logic",
|
||||||
|
"47": "Go Perf Skill Docs",
|
||||||
|
"48": "Login Page Art",
|
||||||
|
"49": "BookmarkManager Logo",
|
||||||
|
"50": "Skills CLI",
|
||||||
|
"51": "Skills Leaderboard",
|
||||||
|
"52": "Complex Condition Extraction",
|
||||||
|
"53": "Sentinel Errors",
|
||||||
|
"54": "errors.As Patterns",
|
||||||
|
"55": "errors.Is Patterns",
|
||||||
|
"56": "errors.Join Patterns",
|
||||||
|
"57": "Error Wrapping",
|
||||||
|
"58": "Single Error Handling",
|
||||||
|
"59": "SIMD Optimizations",
|
||||||
|
"60": "GOGC Tuning",
|
||||||
|
"61": "GOMEMLIMIT",
|
||||||
|
"62": "Bottleneck Decision Tree",
|
||||||
|
"63": "pprof Profiling",
|
||||||
|
"64": "Test Timeout Helper",
|
||||||
|
"65": "httptest Patterns",
|
||||||
|
"66": "testify Suite Pattern",
|
||||||
|
"67": "go:embed Fixtures",
|
||||||
|
"68": "clockwork Time Mocking",
|
||||||
|
"69": "testify Mocking",
|
||||||
|
"70": "t.ArtifactDir Helper",
|
||||||
|
"71": "Subtests Pitfall",
|
||||||
|
"72": "golang-benchmark Skill",
|
||||||
|
"73": "golang-concurrency Skill",
|
||||||
|
"74": "golang-ci Skill",
|
||||||
|
"75": "golang-database Skill",
|
||||||
|
"76": "golang-lint Skill",
|
||||||
|
"77": "testify Skill",
|
||||||
|
"78": "Build Tag Integration Tests",
|
||||||
|
"79": "Test Naming Convention",
|
||||||
|
"80": "UI Critique A Finding",
|
||||||
|
"81": "UI Critique B Finding",
|
||||||
|
"82": "P0 Overflow Bug",
|
||||||
|
"83": "P1 hx-indicator Gap",
|
||||||
|
"84": "golang-benchmark Skill (ext)",
|
||||||
|
"85": "golang-concurrency Skill (ext)",
|
||||||
|
"86": "golang-ci Skill (ext)",
|
||||||
|
"87": "golang-data-structures Skill (ext)",
|
||||||
|
"88": "golang-database Skill (ext)",
|
||||||
|
"89": "golang-design-patterns Skill (ext)",
|
||||||
|
"90": "golang-documentation Skill (ext)",
|
||||||
|
"91": "golang-gopls Skill (ext)",
|
||||||
|
"92": "golang-lint Skill (ext)",
|
||||||
|
"93": "golang-naming Skill (ext)",
|
||||||
|
"94": "golang-observability Skill (ext)",
|
||||||
|
"95": "golang-refactoring Skill (ext)",
|
||||||
|
"96": "golang-safety Skill (ext)",
|
||||||
|
"97": "golang-samber-oops Skill (ext)",
|
||||||
|
"98": "golang-samber-slog Skill (ext)",
|
||||||
|
"99": "golang-structs-interfaces Skill (ext)",
|
||||||
|
"100": "golang-troubleshooting Skill (ext)",
|
||||||
|
"101": "promql-cli Skill",
|
||||||
|
"102": "Backend Module",
|
||||||
|
"103": "bookmark-api Service",
|
||||||
|
"104": "AGENTS.md",
|
||||||
|
"105": "reviewer.md",
|
||||||
|
"106": "Redeploy runbook",
|
||||||
|
"107": "1. Backend",
|
||||||
|
"108": "Deployment",
|
||||||
|
"109": "Cinder — BookmarkManager design system",
|
||||||
|
"110": "Implement tickets",
|
||||||
|
"111": "SQLite → Postgres cutover runbook",
|
||||||
|
"112": "Testing the userscript",
|
||||||
|
"113": "ADR-0007: The backend hosts every Site's Cover bytes",
|
||||||
|
"114": "Issue tracker: Gitea (`tea` CLI)",
|
||||||
|
"115": "ADR-0006: The browser runs on the home machine, over the tailnet",
|
||||||
|
"116": "ADR-0008: A Series identity is discovered from the Site's links, never derived from an address",
|
||||||
|
"117": "Domain Docs",
|
||||||
|
"118": "ticket-implementer.md",
|
||||||
|
"119": "implementer.md",
|
||||||
|
"120": "Series is a shared entity, and only the Poll may update it",
|
||||||
|
"121": "Postgres replaces SQLite as the primary datastore",
|
||||||
|
"122": "Identity comes from Discord OAuth; we store no passwords and send no email",
|
||||||
|
"123": "The wire format stays flat and deliberately does not mirror the schema",
|
||||||
|
"124": "ADR-0005: On-demand browser sidecar",
|
||||||
|
"125": "AGENTS.md",
|
||||||
|
"126": "Bookmark Manager",
|
||||||
|
"127": "triage-labels.md",
|
||||||
|
"128": "Cross-Ticket Contract",
|
||||||
|
"129": "Implement Tickets Skill",
|
||||||
|
"130": "Orchestrator Role",
|
||||||
|
"131": "resolving-merge-conflicts Skill",
|
||||||
|
"132": "tdd Skill",
|
||||||
|
"133": "Ticket Wave Batching",
|
||||||
|
"134": "Four-Object Browser Stub",
|
||||||
|
"135": "Module Export Hook",
|
||||||
|
"136": "logic.test.js Test Harness",
|
||||||
|
"137": "manga-bookmark.user.js",
|
||||||
|
"138": "stripBuildHash",
|
||||||
|
"139": "Testing the Userscript Skill",
|
||||||
|
"140": "cr-spec Agent",
|
||||||
|
"141": "cr-standards Agent",
|
||||||
|
"142": "Escalate Rather Than Guess",
|
||||||
|
"143": "Status Contract",
|
||||||
|
"144": "Ticket Implementer Agent",
|
||||||
|
"145": "Worktree Isolation",
|
||||||
|
"146": "Escalate Rather Than Guess (opencode)",
|
||||||
|
"147": "Implementer Subagent (opencode)",
|
||||||
|
"148": "Subagent-Driven Development",
|
||||||
|
"149": "Code Quality Review",
|
||||||
|
"150": "Reviewer Subagent (opencode)",
|
||||||
|
"151": "Finding Severity Rubric",
|
||||||
|
"152": "Spec Compliance Review",
|
||||||
|
"153": "CDP Browser Unit (chrome/)",
|
||||||
|
"154": "Cinder Design System",
|
||||||
|
"155": "Cloudflare Challenge Behaviour",
|
||||||
|
"156": "Ember Means New Chapter Only",
|
||||||
|
"157": "Gitea + tea CLI",
|
||||||
|
"158": "Graphify Knowledge Graph",
|
||||||
|
"159": "novel-bookmark.user.js",
|
||||||
|
"160": "Security Invariants",
|
||||||
|
"161": "Why Use samber/oops",
|
||||||
|
"162": "singleflight Cache Stampede Prevention",
|
||||||
|
"163": "Struct Field Alignment",
|
||||||
|
"164": "testing/synctest Deterministic Goroutine Testing",
|
||||||
|
"165": "API Package (Bookmark JSON Handlers)",
|
||||||
|
"166": "Cover Acquisition & Serving Pipeline",
|
||||||
|
"167": "Backend AGENTS.md Guidance",
|
||||||
|
"168": "HTTP Middleware (Auth/Gzip/CORS)",
|
||||||
|
"169": "Latest Package (Site Parsers & Poller)",
|
||||||
|
"170": "Latest-Chapter Poller",
|
||||||
|
"171": "Main Composition Root",
|
||||||
|
"172": "Migration-Owned Schema",
|
||||||
|
"173": "Session Package (Cookie Signing & Rate Limit)",
|
||||||
|
"174": "updated_at List-Order Rule",
|
||||||
|
"175": "Userscript Package (Serving Handler)",
|
||||||
|
"176": "AGENTS.md",
|
||||||
|
"177": "Backend CLAUDE.md Guidance",
|
||||||
|
"178": "Graphify Knowledge Graph (graphify-out/)",
|
||||||
|
"179": "CLAUDE.md (Symlink to AGENTS.md)",
|
||||||
|
"180": "Chapter Slug",
|
||||||
|
"181": "CONTEXT.md Ubiquitous Language",
|
||||||
|
"182": "Favourite",
|
||||||
|
"183": "Latest Chapter",
|
||||||
|
"184": "Library",
|
||||||
|
"185": "Lifecycle Bucket",
|
||||||
|
"186": "New Chapter",
|
||||||
|
"187": "Poll",
|
||||||
|
"188": "Progress",
|
||||||
|
"189": "Reader",
|
||||||
|
"190": "Series",
|
||||||
|
"191": "Site",
|
||||||
|
"192": "ADR-0001 (Drop modernc.org/sqlite)",
|
||||||
|
"193": "ADR-0003 (Split Shared Series Facts)",
|
||||||
|
"194": "SQLite-to-Postgres Cutover Runbook",
|
||||||
|
"195": "Import SQL Generation Rules",
|
||||||
|
"196": "Throwaway Import Generator",
|
||||||
|
"197": "ADR-0002 (Discord OAuth Sign-In)",
|
||||||
|
"198": "ADR-0006 (Browser Out of API Stack)",
|
||||||
|
"199": "ADR-0007 (Absolute Cover URLs)",
|
||||||
|
"200": "bookmark-api Service",
|
||||||
|
"201": "Deployment Runbook",
|
||||||
|
"202": "Issue #24 (Derived Credentials)",
|
||||||
|
"203": "Tailscale ACL Tagging",
|
||||||
|
"204": "TOKEN_KEY Credential Derivation",
|
||||||
|
"205": "Traefik Reverse Proxy",
|
||||||
|
"206": "Real scaling limit is the poller outbound fetch budget",
|
||||||
|
"207": "PostgreSQL (jackc/pgx/v5)",
|
||||||
|
"208": "SQLite (modernc.org/sqlite)",
|
||||||
|
"209": "Postgres chosen for future supportability, not concurrency",
|
||||||
|
"210": "Per-Reader bearer token for userscripts",
|
||||||
|
"211": "Discord OAuth2 (authorization code grant)",
|
||||||
|
"212": "ADR-0002: Discord OAuth, no passwords, no email",
|
||||||
|
"213": "Discord snowflake is the sole identity (lock-in)",
|
||||||
|
"214": "Bookmark (per-Reader state: Progress, Favourite, Lifecycle)",
|
||||||
|
"215": "Deduplicate polling per Series (reader_count DESC queue)",
|
||||||
|
"216": "ADR-0003: Series is shared, only the Poll updates it",
|
||||||
|
"217": "Only the Poll writes Series fields (security boundary)",
|
||||||
|
"218": "Series (shared entity keyed site+series_id)",
|
||||||
|
"219": "ADR-0004: Wire format stays flat, does not mirror schema",
|
||||||
|
"220": "Flat wire shape is a contract, not an implementation detail",
|
||||||
|
"221": "Installed userscripts must keep working (14-day grace window)",
|
||||||
|
"222": "CDP (Chrome DevTools Protocol) endpoint",
|
||||||
|
"223": "headless-shell service (socat-fronted CDP)",
|
||||||
|
"224": "Start Chrome on first CDP connection, reap after 300s idle",
|
||||||
|
"225": "BROWSER_WS_URL configuration seam",
|
||||||
|
"226": "ADR-0006: Browser runs on the home machine over the tailnet",
|
||||||
|
"227": "Browser moved home: VPS memory pressure, no requests served",
|
||||||
|
"228": "Tailnet (Tailscale network)",
|
||||||
|
"229": "Content-addressed filesystem storage (SHA-256 of source URL)",
|
||||||
|
"230": "Cover (Series image bytes)",
|
||||||
|
"231": "Deny-class destination control for outbound fetch",
|
||||||
|
"232": "ADR-0007: Backend hosts every Site's Cover bytes",
|
||||||
|
"233": "kagane CORP same-origin cover restriction",
|
||||||
|
"234": "Backend acquires, stores, serves every Cover (uniformity)",
|
||||||
|
"235": "a[aria-label='All Chapter'] anchor pointer",
|
||||||
|
"236": "Series identity is discovered from the Site's links",
|
||||||
|
"237": "ADR-0008: Series identity discovered, never derived",
|
||||||
|
"238": "Chapter slug vs series slug divergence (~7% measured)",
|
||||||
|
"239": "Scan truncated at first wpd-threads marker",
|
||||||
|
"240": "Surface ADR conflicts explicitly rather than silently overriding",
|
||||||
|
"241": "Domain docs: single-context layout guidance",
|
||||||
|
"242": "/domain-modeling skill (lazy CONTEXT.md creation)",
|
||||||
|
"243": "CONTEXT.md glossary (ubiquitous language)",
|
||||||
|
"244": "Gitea (tea CLI, gitea.violetcrown.my.id)",
|
||||||
|
"245": "wayfinder map/ticket mechanism",
|
||||||
|
"246": "Triage labels: canonical roles to tracker labels",
|
||||||
|
"247": "Canonical triage role labels (needs-triage ... wontfix)",
|
||||||
|
"248": "Cinder (BookmarkManager Web UI design system)",
|
||||||
|
"249": "Heat is typographic: ember reserved for unread chapters",
|
||||||
|
"250": "Design tokens (dark + light branches, no hardcoded hex)",
|
||||||
|
"251": "Three type roles: display serif / mono small-caps / sans",
|
||||||
|
"252": "a[aria-label='All Chapter'] priority pointer",
|
||||||
|
"253": "Research: lightnovelworld chapter slug vs series slug",
|
||||||
|
"254": "Gitea issue #77 (chapter vs series slug)",
|
||||||
|
"255": "Slug divergence measurements (3/41 diverge, 1 split)",
|
||||||
|
"256": "Unscoped chapter regex is SAFE, truncated at wpd-threads",
|
||||||
|
"257": "BookmarkManager",
|
||||||
|
"258": "Bromite (Primary Device)",
|
||||||
|
"259": "Dark-First Design Constraint",
|
||||||
|
"260": "Discord Guild Membership",
|
||||||
|
"261": "Reader Isolation Invariant",
|
||||||
|
"262": "Site Adapters",
|
||||||
|
"263": "Go Backend (backend/)",
|
||||||
|
"264": "localStorage Cache and Retry Queue",
|
||||||
|
"265": "Latest Chapter Poller",
|
||||||
|
"266": "Postgres Store (postgres:17-alpine)",
|
||||||
|
"267": "README Config and Endpoint Reference",
|
||||||
|
"268": "Browser Unit Redeploy",
|
||||||
|
"269": "pg_dump Hot Backup",
|
||||||
|
"270": "Redeploy Runbook",
|
||||||
|
"271": "Rollback Strategy",
|
||||||
|
"272": "Bearer-token API client (apiGet/apiPut/apiDelete)",
|
||||||
|
"273": "Userscript AGENTS guidance",
|
||||||
|
"274": "manga-bookmark.user.js (single-IIFE manga script)",
|
||||||
|
"275": "novel-bookmark.user.js (novel script, bmgr:novel:)",
|
||||||
|
"276": "Offline retry queue (bmgr:manga:queue markers)",
|
||||||
|
"277": "Shadow DOM UI isolation from site CSS",
|
||||||
|
"278": "Site adapters (URL-regex detect, og:title)",
|
||||||
|
"279": "Userscript CLAUDE guidance"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.
|
||||||
@@ -0,0 +1,615 @@
|
|||||||
|
# Graph Report - mangaBookmark (2026-08-11)
|
||||||
|
|
||||||
|
## Corpus Check
|
||||||
|
- 107 files · ~261,410 words
|
||||||
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
- 1634 nodes · 3179 edges · 280 communities (65 shown, 215 thin omitted)
|
||||||
|
- Extraction: 90% EXTRACTED · 10% INFERRED · 0% AMBIGUOUS · INFERRED: 309 edges (avg confidence: 0.77)
|
||||||
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
|
## Graph Freshness
|
||||||
|
- Built from commit: `c400c91a`
|
||||||
|
- 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_Cover Storage|Cover Storage]]
|
||||||
|
- [[_COMMUNITY_Go Code Style Guide|Go Code Style Guide]]
|
||||||
|
- [[_COMMUNITY_Agent Skills|Agent Skills]]
|
||||||
|
- [[_COMMUNITY_Store Migrations|Store Migrations]]
|
||||||
|
- [[_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_Session Store Tests|Session Store Tests]]
|
||||||
|
- [[_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()` - 32 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 (280 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 (77): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+69 more)
|
||||||
|
|
||||||
|
### Community 3 - "Novel Userscript Adapters"
|
||||||
|
Cohesion: 0.06
|
||||||
|
Nodes (74): adapterFor(), anchorsFromDocument(), anchorsFromHTML(), apiDelete(), apiGet(), apiPut(), applyFabPos(), applyLatestChapterIfChanged() (+66 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.07
|
||||||
|
Nodes (71): auth(), getBookmarks(), Handler, Request, Store, T, newTestServer(), newTestStore() (+63 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.14
|
||||||
|
Nodes (44): scanSeries(), Store, T, newTestStore(), readLatestCheckedAt(), readSeries(), secondReader(), seedForCheck() (+36 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.12
|
||||||
|
Nodes (22): Action, awaitPromise(), browserConnectionLost(), classifyBrowserError(), Context, Mutex, isInterstitial(), jsString() (+14 more)
|
||||||
|
|
||||||
|
### Community 16 - "Cover Storage"
|
||||||
|
Cohesion: 0.09
|
||||||
|
Nodes (7): CoverContentType(), coverRelativePath(), coverSourceAddress(), displayChapter(), Store, TestDisplayChapter(), Bookmark
|
||||||
|
|
||||||
|
### 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 Migrations"
|
||||||
|
Cohesion: 0.19
|
||||||
|
Nodes (18): applyMigration(), migrate(), Open(), refreshOwnerToken(), seedOwner(), TestCoverIsContentAddressedOnFilesystem(), TestCoverPersistsAcrossReopen(), TestMigration0002BackfillsExistingBookmarks() (+10 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 38 - "Session Store Tests"
|
||||||
|
Cohesion: 0.48
|
||||||
|
Nodes (6): T, TestCreateAndGetSession(), TestDeleteSessionIsPerReader(), TestDeleteSessionRevokes(), TestExpiredSessionIsGone(), TestGetSessionUnknownID()
|
||||||
|
|
||||||
|
### 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
|
||||||
|
- **544 isolated node(s):** `bookmarkmanager/backend`, `ctxKey`, `loginView`, `ctxKey`, `test` (+539 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`, `Web UI Handlers`, `Store Migrations`?**
|
||||||
|
_High betweenness centrality (0.037) - this node is a cross-community bridge._
|
||||||
|
- **Why does `Open()` connect `Store Migrations` to `Cover Fetch Test Helpers`, `Series Acquisition Tests`, `Bookmarks API Tests`, `Store Tests`, `Cover Storage`, `PG Test Infrastructure`?**
|
||||||
|
_High betweenness centrality (0.033) - 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.020) - 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?**
|
||||||
|
_588 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
File diff suppressed because one or more lines are too long
+51238
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,607 @@
|
|||||||
|
{
|
||||||
|
".agents/skills/golang-code-style/evals/evals.json": {
|
||||||
|
"mtime": 1784884678.6627614,
|
||||||
|
"ast_hash": "bec0e12446e7af3cd05de9b6d42badd8",
|
||||||
|
"semantic_hash": "bec0e12446e7af3cd05de9b6d42badd8"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-error-handling/evals/evals.json": {
|
||||||
|
"mtime": 1784884678.6655047,
|
||||||
|
"ast_hash": "275d710b774fba1e1d0bc098d3646c6d",
|
||||||
|
"semantic_hash": "275d710b774fba1e1d0bc098d3646c6d"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/evals/evals.json": {
|
||||||
|
"mtime": 1784884678.6688662,
|
||||||
|
"ast_hash": "4f06df87f90aa0e4f6deaa318b47689f",
|
||||||
|
"semantic_hash": "4f06df87f90aa0e4f6deaa318b47689f"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/evals/evals.json": {
|
||||||
|
"mtime": 1784884678.6721346,
|
||||||
|
"ast_hash": "60a821bbfd20c6fe8bba996b8b540dd4",
|
||||||
|
"semantic_hash": "60a821bbfd20c6fe8bba996b8b540dd4"
|
||||||
|
},
|
||||||
|
"backend/go.mod": {
|
||||||
|
"mtime": 1786216141.668644,
|
||||||
|
"ast_hash": "dac242903b0e98c3e4395159d609e08e",
|
||||||
|
"semantic_hash": "dac242903b0e98c3e4395159d609e08e"
|
||||||
|
},
|
||||||
|
"backend/main.go": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "6e98a3ae91aaa132df251e43c4dfca6d",
|
||||||
|
"semantic_hash": "6e98a3ae91aaa132df251e43c4dfca6d"
|
||||||
|
},
|
||||||
|
"skills-lock.json": {
|
||||||
|
"mtime": 1784884678.6842625,
|
||||||
|
"ast_hash": "4a94ac85bad6bce330d085bcc0ae3ffd",
|
||||||
|
"semantic_hash": "4a94ac85bad6bce330d085bcc0ae3ffd"
|
||||||
|
},
|
||||||
|
"userscript/manga-bookmark.user.js": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "de4abcf9e0f099fb82b630d443db739f",
|
||||||
|
"semantic_hash": "de4abcf9e0f099fb82b630d443db739f"
|
||||||
|
},
|
||||||
|
".agents/skills/find-skills/SKILL.md": {
|
||||||
|
"mtime": 1784884338.760326,
|
||||||
|
"ast_hash": "62b297abdee9aea84c577ab2e04e1974",
|
||||||
|
"semantic_hash": "62b297abdee9aea84c577ab2e04e1974"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-code-style/SKILL.md": {
|
||||||
|
"mtime": 1784884678.6623824,
|
||||||
|
"ast_hash": "d6a01e6f64550a5c8d59dac2e948000e",
|
||||||
|
"semantic_hash": "d6a01e6f64550a5c8d59dac2e948000e"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-code-style/references/details.md": {
|
||||||
|
"mtime": 1784884678.6627865,
|
||||||
|
"ast_hash": "19891e396a986f1b24bf34b7a2854fcb",
|
||||||
|
"semantic_hash": "19891e396a986f1b24bf34b7a2854fcb"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-error-handling/SKILL.md": {
|
||||||
|
"mtime": 1784884678.665052,
|
||||||
|
"ast_hash": "8b7970f472adb240e5bc4bde863d43a6",
|
||||||
|
"semantic_hash": "8b7970f472adb240e5bc4bde863d43a6"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-error-handling/references/error-creation.md": {
|
||||||
|
"mtime": 1784884678.665524,
|
||||||
|
"ast_hash": "248dbf75492c68faef2334b8d83bd080",
|
||||||
|
"semantic_hash": "248dbf75492c68faef2334b8d83bd080"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-error-handling/references/error-handling.md": {
|
||||||
|
"mtime": 1784884678.6655412,
|
||||||
|
"ast_hash": "c2424ee3999b05963b199e0100727aa3",
|
||||||
|
"semantic_hash": "c2424ee3999b05963b199e0100727aa3"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-error-handling/references/error-wrapping.md": {
|
||||||
|
"mtime": 1784884678.6655717,
|
||||||
|
"ast_hash": "4a15d9266a1ea0c8bb1951e6b9c0f586",
|
||||||
|
"semantic_hash": "4a15d9266a1ea0c8bb1951e6b9c0f586"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/SKILL.md": {
|
||||||
|
"mtime": 1784884678.667833,
|
||||||
|
"ast_hash": "35a15fd129c5bedaada3fd4df0b6ba8c",
|
||||||
|
"semantic_hash": "35a15fd129c5bedaada3fd4df0b6ba8c"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/assets/prometheus-alerts.yml": {
|
||||||
|
"mtime": 1784884678.668527,
|
||||||
|
"ast_hash": "fa9357ffa87c4f894fc21afa9707c4db",
|
||||||
|
"semantic_hash": "fa9357ffa87c4f894fc21afa9707c4db"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/caching.md": {
|
||||||
|
"mtime": 1784884678.6690567,
|
||||||
|
"ast_hash": "807c42a82994e5548dbf7eb6e30c71e0",
|
||||||
|
"semantic_hash": "807c42a82994e5548dbf7eb6e30c71e0"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/cpu.md": {
|
||||||
|
"mtime": 1784884678.669087,
|
||||||
|
"ast_hash": "6d52e532ef51a35cc4134694c944517d",
|
||||||
|
"semantic_hash": "6d52e532ef51a35cc4134694c944517d"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/io-networking.md": {
|
||||||
|
"mtime": 1784884678.6691036,
|
||||||
|
"ast_hash": "95c5dd51f728fd69c945a92ff021d766",
|
||||||
|
"semantic_hash": "95c5dd51f728fd69c945a92ff021d766"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/memory.md": {
|
||||||
|
"mtime": 1784884678.6691158,
|
||||||
|
"ast_hash": "3b2108df06b4cfb3980fa80bbd9ebcff",
|
||||||
|
"semantic_hash": "3b2108df06b4cfb3980fa80bbd9ebcff"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/observability.md": {
|
||||||
|
"mtime": 1784884678.6691446,
|
||||||
|
"ast_hash": "0aa8a498e8d55ccdd4990ad187bae828",
|
||||||
|
"semantic_hash": "0aa8a498e8d55ccdd4990ad187bae828"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-performance/references/runtime.md": {
|
||||||
|
"mtime": 1784884678.669426,
|
||||||
|
"ast_hash": "26386c33b3a3794aaef0556713bf8f3a",
|
||||||
|
"semantic_hash": "26386c33b3a3794aaef0556713bf8f3a"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/SKILL.md": {
|
||||||
|
"mtime": 1784884678.6716368,
|
||||||
|
"ast_hash": "0a9b9793bba2a239db94e980272a393e",
|
||||||
|
"semantic_hash": "0a9b9793bba2a239db94e980272a393e"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/references/helpers.md": {
|
||||||
|
"mtime": 1784884678.6722167,
|
||||||
|
"ast_hash": "0aecb7cfbeb9b374bf61c52e324d9d3f",
|
||||||
|
"semantic_hash": "0aecb7cfbeb9b374bf61c52e324d9d3f"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/references/http-testing.md": {
|
||||||
|
"mtime": 1784884678.67225,
|
||||||
|
"ast_hash": "9111110c28a7fbbffc3537aad786b390",
|
||||||
|
"semantic_hash": "9111110c28a7fbbffc3537aad786b390"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/references/integration-testing.md": {
|
||||||
|
"mtime": 1784884678.67225,
|
||||||
|
"ast_hash": "fcf9861bc36ae56e3fb7a1c18aa0e77f",
|
||||||
|
"semantic_hash": "fcf9861bc36ae56e3fb7a1c18aa0e77f"
|
||||||
|
},
|
||||||
|
".agents/skills/golang-testing/references/mocking.md": {
|
||||||
|
"mtime": 1784884678.6722653,
|
||||||
|
"ast_hash": "3a08979e4603aae5c32a58d5b6c39765",
|
||||||
|
"semantic_hash": "3a08979e4603aae5c32a58d5b6c39765"
|
||||||
|
},
|
||||||
|
"CLAUDE.md": {
|
||||||
|
"mtime": 1786421860.5298452,
|
||||||
|
"ast_hash": "8f79ab45cb9c6466da7c4b65f0bceadf",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"DEPLOY.md": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "7fa7bb75239f8ad3798e44c12dce374c",
|
||||||
|
"semantic_hash": "7fa7bb75239f8ad3798e44c12dce374c"
|
||||||
|
},
|
||||||
|
"README.md": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "bb33ecb93e23c8f039049aec75217263",
|
||||||
|
"semantic_hash": "bb33ecb93e23c8f039049aec75217263"
|
||||||
|
},
|
||||||
|
"docker-compose.prod.yml": {
|
||||||
|
"mtime": 1786292465.8305523,
|
||||||
|
"ast_hash": "0751998a532297b8ac507a01ec48dc31",
|
||||||
|
"semantic_hash": "0751998a532297b8ac507a01ec48dc31"
|
||||||
|
},
|
||||||
|
"docker-compose.yml": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "d9a58147a573517afa4603b41cf55ca8",
|
||||||
|
"semantic_hash": "d9a58147a573517afa4603b41cf55ca8"
|
||||||
|
},
|
||||||
|
".claude/settings.json": {
|
||||||
|
"mtime": 1784951973.1869545,
|
||||||
|
"ast_hash": "e51077b6a7f1f67afc748f1a32a1557d",
|
||||||
|
"semantic_hash": "e51077b6a7f1f67afc748f1a32a1557d"
|
||||||
|
},
|
||||||
|
"backend/web_test.go": {
|
||||||
|
"mtime": 1786216141.700644,
|
||||||
|
"ast_hash": "8f1b093b59eb1ed81bc7fc0c22495c50",
|
||||||
|
"semantic_hash": "8f1b093b59eb1ed81bc7fc0c22495c50"
|
||||||
|
},
|
||||||
|
"backend/main_test.go": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "8a165955cf28ad47481fec5ea7afb3d6",
|
||||||
|
"semantic_hash": "8a165955cf28ad47481fec5ea7afb3d6"
|
||||||
|
},
|
||||||
|
".claude/settings.local.json": {
|
||||||
|
"mtime": 1785697645.350201,
|
||||||
|
"ast_hash": "9a1ac6369f968e8df4be9dcff0948f70",
|
||||||
|
"semantic_hash": "9a1ac6369f968e8df4be9dcff0948f70"
|
||||||
|
},
|
||||||
|
"PRODUCT.md": {
|
||||||
|
"mtime": 1786216141.660644,
|
||||||
|
"ast_hash": "c52072d1978286060087fa0686f9c7f9",
|
||||||
|
"semantic_hash": "c52072d1978286060087fa0686f9c7f9"
|
||||||
|
},
|
||||||
|
"backend/.impeccable/critique/2026-07-26T15-50-42Z__backend-templates-app-html.md": {
|
||||||
|
"mtime": 1785128576.2412457,
|
||||||
|
"ast_hash": "d08627c27f22d453125db6c1ab4b71ec",
|
||||||
|
"semantic_hash": "d08627c27f22d453125db6c1ab4b71ec"
|
||||||
|
},
|
||||||
|
"backend/.impeccable/critique/2026-07-26T17-08-41Z__backend-templates-app-html.md": {
|
||||||
|
"mtime": 1785128576.2452524,
|
||||||
|
"ast_hash": "e69a8340a371579ca3ea689660f7d7bd",
|
||||||
|
"semantic_hash": "e69a8340a371579ca3ea689660f7d7bd"
|
||||||
|
},
|
||||||
|
"AGENTS.md": {
|
||||||
|
"mtime": 1786421860.5298452,
|
||||||
|
"ast_hash": "8f79ab45cb9c6466da7c4b65f0bceadf",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"userscript/test/logic.test.js": {
|
||||||
|
"mtime": 1786363889.5716388,
|
||||||
|
"ast_hash": "03b5c6c93786c55ac771fd79fd4a75bb",
|
||||||
|
"semantic_hash": "03b5c6c93786c55ac771fd79fd4a75bb"
|
||||||
|
},
|
||||||
|
".claude/skills/testing-the-userscript/SKILL.md": {
|
||||||
|
"mtime": 1786363889.5489495,
|
||||||
|
"ast_hash": "8f3c0132eb4787a2c8736eb99f7689af",
|
||||||
|
"semantic_hash": "8f3c0132eb4787a2c8736eb99f7689af"
|
||||||
|
},
|
||||||
|
"REDEPLOY.md": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "d0baf08b95e7b5986234a9f36759c12e",
|
||||||
|
"semantic_hash": "d0baf08b95e7b5986234a9f36759c12e"
|
||||||
|
},
|
||||||
|
"docs/design-system.md": {
|
||||||
|
"mtime": 1786022513.9623306,
|
||||||
|
"ast_hash": "421cd7e57f02d4b467f120ca6ddd7b6a",
|
||||||
|
"semantic_hash": "421cd7e57f02d4b467f120ca6ddd7b6a"
|
||||||
|
},
|
||||||
|
"backend/api_test.go": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "3fbe8423060efbc34517901dce44e9b5",
|
||||||
|
"semantic_hash": "3fbe8423060efbc34517901dce44e9b5"
|
||||||
|
},
|
||||||
|
"backend/cover_test.go": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "c7e313d6c92eb28e6d370e5e89035984",
|
||||||
|
"semantic_hash": "c7e313d6c92eb28e6d370e5e89035984"
|
||||||
|
},
|
||||||
|
"backend/internal/api/handlers.go": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "59e6b8767ab19839bb8f82891a7e4616",
|
||||||
|
"semantic_hash": "59e6b8767ab19839bb8f82891a7e4616"
|
||||||
|
},
|
||||||
|
"backend/internal/httpmw/middleware.go": {
|
||||||
|
"mtime": 1786216141.672644,
|
||||||
|
"ast_hash": "385b36f58488b7e6d93eb6d6034e9ee3",
|
||||||
|
"semantic_hash": "385b36f58488b7e6d93eb6d6034e9ee3"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/browser.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "092dfbd2bc96e7a251672a5a0d922b37",
|
||||||
|
"semantic_hash": "092dfbd2bc96e7a251672a5a0d922b37"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/browser_test.go": {
|
||||||
|
"mtime": 1786262323.6964688,
|
||||||
|
"ast_hash": "e900f92971486f47d7ef76e9a95217fe",
|
||||||
|
"semantic_hash": "e900f92971486f47d7ef76e9a95217fe"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/fetch.go": {
|
||||||
|
"mtime": 1785873769.5475056,
|
||||||
|
"ast_hash": "398a3dc942a2cdbef6786d9868acb216",
|
||||||
|
"semantic_hash": "398a3dc942a2cdbef6786d9868acb216"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/poller.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "ebb0ee4e57d62b6aed97b8d266639a23",
|
||||||
|
"semantic_hash": "ebb0ee4e57d62b6aed97b8d266639a23"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/poller_test.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "d14b179fb7eaab2885374b0aa9cf6967",
|
||||||
|
"semantic_hash": "d14b179fb7eaab2885374b0aa9cf6967"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/sites.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "3c1dfa79e1d50d43f5d4b26f0e612913",
|
||||||
|
"semantic_hash": "3c1dfa79e1d50d43f5d4b26f0e612913"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/sites_test.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "da1bfc7239936ae1fa70fcaf37d4106b",
|
||||||
|
"semantic_hash": "da1bfc7239936ae1fa70fcaf37d4106b"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/smoke_image_test.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "db068cb59575f8c82669acbaf84bcaed",
|
||||||
|
"semantic_hash": "db068cb59575f8c82669acbaf84bcaed"
|
||||||
|
},
|
||||||
|
"backend/internal/pgtest/pgtest.go": {
|
||||||
|
"mtime": 1786216141.6766438,
|
||||||
|
"ast_hash": "f60372d41516e66f7aaeb272da227d6e",
|
||||||
|
"semantic_hash": "f60372d41516e66f7aaeb272da227d6e"
|
||||||
|
},
|
||||||
|
"backend/internal/session/session.go": {
|
||||||
|
"mtime": 1786216141.6766438,
|
||||||
|
"ast_hash": "9952474ffb22c825d6f075b866ee26f4",
|
||||||
|
"semantic_hash": "9952474ffb22c825d6f075b866ee26f4"
|
||||||
|
},
|
||||||
|
"backend/internal/session/session_test.go": {
|
||||||
|
"mtime": 1786216141.680644,
|
||||||
|
"ast_hash": "37ffd00964e7a67350c68ed50c6503c5",
|
||||||
|
"semantic_hash": "37ffd00964e7a67350c68ed50c6503c5"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0001_bookmarks.sql": {
|
||||||
|
"mtime": 1786216141.680644,
|
||||||
|
"ast_hash": "f87ccfb2c25c43f93021177ced0bfae4",
|
||||||
|
"semantic_hash": "f87ccfb2c25c43f93021177ced0bfae4"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0002_series.sql": {
|
||||||
|
"mtime": 1786216141.6820722,
|
||||||
|
"ast_hash": "5dc98771e0c0f6e8416b434c280b0efb",
|
||||||
|
"semantic_hash": "5dc98771e0c0f6e8416b434c280b0efb"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0003_reader.sql": {
|
||||||
|
"mtime": 1786216141.6820722,
|
||||||
|
"ast_hash": "444a97799f38f6222f87d4e9fb2d6258",
|
||||||
|
"semantic_hash": "444a97799f38f6222f87d4e9fb2d6258"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0004_owner_bookmarks.sql": {
|
||||||
|
"mtime": 1786216141.684644,
|
||||||
|
"ast_hash": "e4fa900cc223865d3ecd4c60c5707a65",
|
||||||
|
"semantic_hash": "e4fa900cc223865d3ecd4c60c5707a65"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0005_sessions.sql": {
|
||||||
|
"mtime": 1786216141.684644,
|
||||||
|
"ast_hash": "5158887ebc57cf8c16a7b821b61cd760",
|
||||||
|
"semantic_hash": "5158887ebc57cf8c16a7b821b61cd760"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0006_reader_token_epoch.sql": {
|
||||||
|
"mtime": 1786216141.684644,
|
||||||
|
"ast_hash": "3093cc1c3aae0cd9643d04105d045402",
|
||||||
|
"semantic_hash": "3093cc1c3aae0cd9643d04105d045402"
|
||||||
|
},
|
||||||
|
"backend/internal/store/sessions.go": {
|
||||||
|
"mtime": 1786216141.684644,
|
||||||
|
"ast_hash": "eee3510cc6172ef4b1da820474c26b01",
|
||||||
|
"semantic_hash": "eee3510cc6172ef4b1da820474c26b01"
|
||||||
|
},
|
||||||
|
"backend/internal/store/sessions_test.go": {
|
||||||
|
"mtime": 1786216141.684644,
|
||||||
|
"ast_hash": "0b6764a0ee20f5cb7748eecd31a1d220",
|
||||||
|
"semantic_hash": "0b6764a0ee20f5cb7748eecd31a1d220"
|
||||||
|
},
|
||||||
|
"backend/internal/store/store.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "54367a8ab043983e2491b2eb2650961c",
|
||||||
|
"semantic_hash": "54367a8ab043983e2491b2eb2650961c"
|
||||||
|
},
|
||||||
|
"backend/internal/store/store_test.go": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "dc823fd77bcce2268114e31d759b20a5",
|
||||||
|
"semantic_hash": "dc823fd77bcce2268114e31d759b20a5"
|
||||||
|
},
|
||||||
|
"backend/internal/userscript/userscript.go": {
|
||||||
|
"mtime": 1786216141.692644,
|
||||||
|
"ast_hash": "aa13a71b1c9eefe4930fd31f27722328",
|
||||||
|
"semantic_hash": "aa13a71b1c9eefe4930fd31f27722328"
|
||||||
|
},
|
||||||
|
"backend/internal/userscript/userscript_test.go": {
|
||||||
|
"mtime": 1786216141.692644,
|
||||||
|
"ast_hash": "6c050968d7b8b67956da1a3136d2c3c7",
|
||||||
|
"semantic_hash": "6c050968d7b8b67956da1a3136d2c3c7"
|
||||||
|
},
|
||||||
|
"backend/internal/web/discord.go": {
|
||||||
|
"mtime": 1786216141.692644,
|
||||||
|
"ast_hash": "69e4959c65fa67d7491aedf6a71bb575",
|
||||||
|
"semantic_hash": "69e4959c65fa67d7491aedf6a71bb575"
|
||||||
|
},
|
||||||
|
"backend/internal/web/oauth_test.go": {
|
||||||
|
"mtime": 1786216141.692644,
|
||||||
|
"ast_hash": "a3bddeb70dd8d7eb14139da808723ea8",
|
||||||
|
"semantic_hash": "a3bddeb70dd8d7eb14139da808723ea8"
|
||||||
|
},
|
||||||
|
"backend/internal/web/static/filter.js": {
|
||||||
|
"mtime": 1786022513.9473197,
|
||||||
|
"ast_hash": "b4ee3306201bfd88b148b96801972617",
|
||||||
|
"semantic_hash": "b4ee3306201bfd88b148b96801972617"
|
||||||
|
},
|
||||||
|
"backend/internal/web/static/htmx.min.js": {
|
||||||
|
"mtime": 1785873769.5512016,
|
||||||
|
"ast_hash": "19a573773be4ca22570ca2f8543120c5",
|
||||||
|
"semantic_hash": "19a573773be4ca22570ca2f8543120c5"
|
||||||
|
},
|
||||||
|
"backend/internal/web/web.go": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "8308949c658d3a08ce1c3cdbea6a907c",
|
||||||
|
"semantic_hash": "8308949c658d3a08ce1c3cdbea6a907c"
|
||||||
|
},
|
||||||
|
"backend/reader_credential_test.go": {
|
||||||
|
"mtime": 1786216141.700644,
|
||||||
|
"ast_hash": "2a751ea6d9c06635aa3179db0aef1b2b",
|
||||||
|
"semantic_hash": "2a751ea6d9c06635aa3179db0aef1b2b"
|
||||||
|
},
|
||||||
|
"chrome/entrypoint.sh": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "8008a187690764436540fab47ba0cfcc",
|
||||||
|
"semantic_hash": "8008a187690764436540fab47ba0cfcc"
|
||||||
|
},
|
||||||
|
"userscript/novel-bookmark.user.js": {
|
||||||
|
"mtime": 1786363889.5716388,
|
||||||
|
"ast_hash": "3c8c241f7b67ddb00d2fc5f9c5b927c7",
|
||||||
|
"semantic_hash": "3c8c241f7b67ddb00d2fc5f9c5b927c7"
|
||||||
|
},
|
||||||
|
"userscript/test/novel-logic.test.js": {
|
||||||
|
"mtime": 1786363889.5716388,
|
||||||
|
"ast_hash": "c54599d4beb533b5c522bf48ebacea1f",
|
||||||
|
"semantic_hash": "c54599d4beb533b5c522bf48ebacea1f"
|
||||||
|
},
|
||||||
|
".opencode/agent/implementer.md": {
|
||||||
|
"mtime": 1785873769.5402634,
|
||||||
|
"ast_hash": "000de469c18d68352027e10c8ce8acfb",
|
||||||
|
"semantic_hash": "000de469c18d68352027e10c8ce8acfb"
|
||||||
|
},
|
||||||
|
".opencode/agent/reviewer.md": {
|
||||||
|
"mtime": 1785873769.5416775,
|
||||||
|
"ast_hash": "e44a2f6f624db044e19508bc5ab05592",
|
||||||
|
"semantic_hash": "e44a2f6f624db044e19508bc5ab05592"
|
||||||
|
},
|
||||||
|
"CONTEXT.md": {
|
||||||
|
"mtime": 1786417841.7163916,
|
||||||
|
"ast_hash": "1ff47b5340a725b0b7287ee29f63cd34",
|
||||||
|
"semantic_hash": "1ff47b5340a725b0b7287ee29f63cd34"
|
||||||
|
},
|
||||||
|
"CUTOVER.md": {
|
||||||
|
"mtime": 1786216141.660644,
|
||||||
|
"ast_hash": "6c6f3e4c4c2f57867894280bce728c50",
|
||||||
|
"semantic_hash": "6c6f3e4c4c2f57867894280bce728c50"
|
||||||
|
},
|
||||||
|
"backend/AGENTS.md": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "6356ee58447f299e5fa7aa83486bbbe0",
|
||||||
|
"semantic_hash": "6356ee58447f299e5fa7aa83486bbbe0"
|
||||||
|
},
|
||||||
|
"backend/CLAUDE.md": {
|
||||||
|
"mtime": 1786363889.552731,
|
||||||
|
"ast_hash": "6356ee58447f299e5fa7aa83486bbbe0",
|
||||||
|
"semantic_hash": "6356ee58447f299e5fa7aa83486bbbe0"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/app.html": {
|
||||||
|
"mtime": 1786216141.692644,
|
||||||
|
"ast_hash": "3965e20e204afb71ba2a3aa86cb7c61c",
|
||||||
|
"semantic_hash": "3965e20e204afb71ba2a3aa86cb7c61c"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/card.html": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "ab83ae0dbb34fd40c146a7cc1263173e",
|
||||||
|
"semantic_hash": "ab83ae0dbb34fd40c146a7cc1263173e"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/chrome.html": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "d80b27cf3bd9d131075c485dd169dfcc",
|
||||||
|
"semantic_hash": "d80b27cf3bd9d131075c485dd169dfcc"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/icons.html": {
|
||||||
|
"mtime": 1785873769.553139,
|
||||||
|
"ast_hash": "8e10c507c32934a92463b4bca9e34fe6",
|
||||||
|
"semantic_hash": "8e10c507c32934a92463b4bca9e34fe6"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/list.html": {
|
||||||
|
"mtime": 1786216141.696644,
|
||||||
|
"ast_hash": "365548aace8c06559a1f66db0ae47256",
|
||||||
|
"semantic_hash": "365548aace8c06559a1f66db0ae47256"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/login.html": {
|
||||||
|
"mtime": 1786216141.696644,
|
||||||
|
"ast_hash": "bcc3101498a66cf8b79f9d97c6c9cd6b",
|
||||||
|
"semantic_hash": "bcc3101498a66cf8b79f9d97c6c9cd6b"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/readers.html": {
|
||||||
|
"mtime": 1786216141.696644,
|
||||||
|
"ast_hash": "c5034e76bd20a705d2799cb5ecb328f0",
|
||||||
|
"semantic_hash": "c5034e76bd20a705d2799cb5ecb328f0"
|
||||||
|
},
|
||||||
|
"backend/internal/web/templates/setup.html": {
|
||||||
|
"mtime": 1786216141.696644,
|
||||||
|
"ast_hash": "72e93c0b827414063596f7338987d879",
|
||||||
|
"semantic_hash": "72e93c0b827414063596f7338987d879"
|
||||||
|
},
|
||||||
|
"docs/adr/0001-postgresql-over-sqlite.md": {
|
||||||
|
"mtime": 1786216141.704644,
|
||||||
|
"ast_hash": "abfb08754cee58be67311377904f8ca4",
|
||||||
|
"semantic_hash": "abfb08754cee58be67311377904f8ca4"
|
||||||
|
},
|
||||||
|
"docs/adr/0002-discord-oauth-no-passwords-no-email.md": {
|
||||||
|
"mtime": 1786216141.7071996,
|
||||||
|
"ast_hash": "852a04d86659385085da6ffc8b489933",
|
||||||
|
"semantic_hash": "852a04d86659385085da6ffc8b489933"
|
||||||
|
},
|
||||||
|
"docs/adr/0003-series-shared-and-poll-owned.md": {
|
||||||
|
"mtime": 1786216141.7071996,
|
||||||
|
"ast_hash": "58bb4d24e20f6f7adc1a8b9cf7967c3f",
|
||||||
|
"semantic_hash": "58bb4d24e20f6f7adc1a8b9cf7967c3f"
|
||||||
|
},
|
||||||
|
"docs/adr/0004-wire-format-does-not-mirror-the-schema.md": {
|
||||||
|
"mtime": 1786216141.7071996,
|
||||||
|
"ast_hash": "a6ea2770dec2156f78a65b35ba06902a",
|
||||||
|
"semantic_hash": "a6ea2770dec2156f78a65b35ba06902a"
|
||||||
|
},
|
||||||
|
"docs/agents/domain.md": {
|
||||||
|
"mtime": 1786216141.7071996,
|
||||||
|
"ast_hash": "6f99318ac6cb9825b613bfde55d76091",
|
||||||
|
"semantic_hash": "6f99318ac6cb9825b613bfde55d76091"
|
||||||
|
},
|
||||||
|
"docs/agents/issue-tracker.md": {
|
||||||
|
"mtime": 1786216141.7087462,
|
||||||
|
"ast_hash": "1342e66ccb84a84fd579fb6dc0b8243a",
|
||||||
|
"semantic_hash": "1342e66ccb84a84fd579fb6dc0b8243a"
|
||||||
|
},
|
||||||
|
"docs/agents/triage-labels.md": {
|
||||||
|
"mtime": 1786216141.7087462,
|
||||||
|
"ast_hash": "69114d07ed792d6bb1d13758ba5435e1",
|
||||||
|
"semantic_hash": "69114d07ed792d6bb1d13758ba5435e1"
|
||||||
|
},
|
||||||
|
"userscript/AGENTS.md": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "36ec1d31cb1f4f6a0263f570a146ecfa",
|
||||||
|
"semantic_hash": "36ec1d31cb1f4f6a0263f570a146ecfa"
|
||||||
|
},
|
||||||
|
"userscript/CLAUDE.md": {
|
||||||
|
"mtime": 1786363889.5678573,
|
||||||
|
"ast_hash": "36ec1d31cb1f4f6a0263f570a146ecfa",
|
||||||
|
"semantic_hash": "36ec1d31cb1f4f6a0263f570a146ecfa"
|
||||||
|
},
|
||||||
|
"backend/internal/web/static/login-art.png": {
|
||||||
|
"mtime": 1786022513.9585779,
|
||||||
|
"ast_hash": "05d7863cba344a946256719a0c9ef959",
|
||||||
|
"semantic_hash": "05d7863cba344a946256719a0c9ef959"
|
||||||
|
},
|
||||||
|
"backend/internal/web/static/logo.svg": {
|
||||||
|
"mtime": 1786022513.9585779,
|
||||||
|
"ast_hash": "d0d34d0f08a25b53176cc55989b7babe",
|
||||||
|
"semantic_hash": "d0d34d0f08a25b53176cc55989b7babe"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0007_covers.sql": {
|
||||||
|
"mtime": 1786262323.6964688,
|
||||||
|
"ast_hash": "6033ce0701be1236ed175362363bd96c",
|
||||||
|
"semantic_hash": "6033ce0701be1236ed175362363bd96c"
|
||||||
|
},
|
||||||
|
"docs/adr/0005-on-demand-browser.md": {
|
||||||
|
"mtime": 1786292465.8305523,
|
||||||
|
"ast_hash": "8cf2fb8c0a66c2c7d82ae433b99ca42b",
|
||||||
|
"semantic_hash": "8cf2fb8c0a66c2c7d82ae433b99ca42b"
|
||||||
|
},
|
||||||
|
"chrome/docker-compose.yml": {
|
||||||
|
"mtime": 1786292465.8305523,
|
||||||
|
"ast_hash": "5605599395a3f085904e78a2bfec1e58",
|
||||||
|
"semantic_hash": "5605599395a3f085904e78a2bfec1e58"
|
||||||
|
},
|
||||||
|
"docs/adr/0006-browser-on-the-home-machine.md": {
|
||||||
|
"mtime": 1786292465.8305523,
|
||||||
|
"ast_hash": "dfd6bbc045d23315f2942ee8d98eb7db",
|
||||||
|
"semantic_hash": "dfd6bbc045d23315f2942ee8d98eb7db"
|
||||||
|
},
|
||||||
|
"docs/adr/0007-backend-hosts-cover-bytes.md": {
|
||||||
|
"mtime": 1786292465.8305523,
|
||||||
|
"ast_hash": "b19e38045b3dcda7dd59634ed9227a68",
|
||||||
|
"semantic_hash": "b19e38045b3dcda7dd59634ed9227a68"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0008_filesystem_covers.sql": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "46cf7822d4f667e3cab36b547abe5e97",
|
||||||
|
"semantic_hash": "46cf7822d4f667e3cab36b547abe5e97"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/cover.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "e6749cfe3cd7c2e71d4392dde84f55f9",
|
||||||
|
"semantic_hash": "e6749cfe3cd7c2e71d4392dde84f55f9"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/cover_fetch_test.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "60d9eb7c59a3751baf4f31c7655217e7",
|
||||||
|
"semantic_hash": "60d9eb7c59a3751baf4f31c7655217e7"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/acquire.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "760310097141a864f14318ed3be2703e",
|
||||||
|
"semantic_hash": "760310097141a864f14318ed3be2703e"
|
||||||
|
},
|
||||||
|
"backend/internal/latest/acquire_test.go": {
|
||||||
|
"mtime": 1786363889.5565126,
|
||||||
|
"ast_hash": "7bd9f41814f6bf59d8998dfb81cf990a",
|
||||||
|
"semantic_hash": "7bd9f41814f6bf59d8998dfb81cf990a"
|
||||||
|
},
|
||||||
|
"backend/internal/store/migrations/0009_series_cover_address.sql": {
|
||||||
|
"mtime": 1786363889.5602942,
|
||||||
|
"ast_hash": "4c1f6328b2e1a95828fad6d88d474c2d",
|
||||||
|
"semantic_hash": "4c1f6328b2e1a95828fad6d88d474c2d"
|
||||||
|
},
|
||||||
|
".claude/skills/implement-tickets/SKILL.md": {
|
||||||
|
"mtime": 1786417841.7117643,
|
||||||
|
"ast_hash": "3060e32e19cc571d91871a98f18afe53",
|
||||||
|
"semantic_hash": "3060e32e19cc571d91871a98f18afe53"
|
||||||
|
},
|
||||||
|
".omp/agents/ticket-implementer.md": {
|
||||||
|
"mtime": 1786417841.7163916,
|
||||||
|
"ast_hash": "0150a46c0d21c572b71b3d87d21ac925",
|
||||||
|
"semantic_hash": "0150a46c0d21c572b71b3d87d21ac925"
|
||||||
|
},
|
||||||
|
"docs/adr/0008-series-identity-is-discovered-not-derived.md": {
|
||||||
|
"mtime": 1786417841.7163916,
|
||||||
|
"ast_hash": "3ce6d64ef6a8a39f27c257b39065389e",
|
||||||
|
"semantic_hash": "3ce6d64ef6a8a39f27c257b39065389e"
|
||||||
|
},
|
||||||
|
"docs/research/lightnovelworld-chapter-vs-series-slug.md": {
|
||||||
|
"mtime": 1786417841.7163916,
|
||||||
|
"ast_hash": "74a4e538875f0a7e8ca3d5dc48c0bb53",
|
||||||
|
"semantic_hash": "74a4e538875f0a7e8ca3d5dc48c0bb53"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user