graphmark 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. {graphmark-0.1.0 → graphmark-0.1.1}/.gitignore +4 -0
  2. {graphmark-0.1.0 → graphmark-0.1.1}/PKG-INFO +1 -1
  3. {graphmark-0.1.0 → graphmark-0.1.1}/pyproject.toml +1 -1
  4. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/metrics.py +1 -1
  5. graphmark-0.1.1/tests/fixtures/gaps/expected_oog.json +7 -0
  6. graphmark-0.1.1/tests/fixtures/gaps/similar_oog.json +4 -0
  7. graphmark-0.1.1/tests/test_gaps_oog.py +41 -0
  8. {graphmark-0.1.0 → graphmark-0.1.1}/LICENSE +0 -0
  9. {graphmark-0.1.0 → graphmark-0.1.1}/README.md +0 -0
  10. {graphmark-0.1.0 → graphmark-0.1.1}/docs/ROADMAP.md +0 -0
  11. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/__init__.py +0 -0
  12. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/cli.py +0 -0
  13. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/config.py +0 -0
  14. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/dismiss.py +0 -0
  15. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/export.py +0 -0
  16. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/graph.py +0 -0
  17. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/interfaces.py +0 -0
  18. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/model.py +0 -0
  19. {graphmark-0.1.0 → graphmark-0.1.1}/src/graphmark/parse.py +0 -0
  20. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/README.md +0 -0
  21. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/config.toml +0 -0
  22. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/expected.json +0 -0
  23. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/daily/2026-07-01.md +0 -0
  24. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/docs/alpha.md +0 -0
  25. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/docs/center.md +0 -0
  26. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/misc/echo.md +0 -0
  27. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/misc/foxtrot.md +0 -0
  28. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/misc/orphan.md +0 -0
  29. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/misc/stub.md +0 -0
  30. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/refs/beta.md +0 -0
  31. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/refs/delta.md +0 -0
  32. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/alt/vault/refs/gamma.md +0 -0
  33. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/dismiss/expected.json +0 -0
  34. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/dismiss/vault/.claude/data/connect-dismissed.json +0 -0
  35. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/dismiss/vault/alpha.md +0 -0
  36. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/dismiss/vault/beta.md +0 -0
  37. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/dismiss/vault/gamma.md +0 -0
  38. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/config.toml +0 -0
  39. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/expected.json +0 -0
  40. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/similar.json +0 -0
  41. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/docs/a.md +0 -0
  42. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/docs/hub.md +0 -0
  43. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/misc/c.md +0 -0
  44. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/misc/d.md +0 -0
  45. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/refs/b.md +0 -0
  46. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/gaps/vault/refs/e.md +0 -0
  47. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/config.toml +0 -0
  48. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/expected.json +0 -0
  49. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/vault/docs/one.md +0 -0
  50. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/vault/junk/ignored.md +0 -0
  51. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/vault/misc/excluded.md +0 -0
  52. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/scoped/vault/refs/two.md +0 -0
  53. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/selflink/config.toml +0 -0
  54. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/selflink/expected.json +0 -0
  55. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/selflink/vault/a.md +0 -0
  56. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/selflink/vault/b.md +0 -0
  57. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/config.toml +0 -0
  58. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/expected.json +0 -0
  59. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/brain/alpha.md +0 -0
  60. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/brain/hub.md +0 -0
  61. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/personal/beta.md +0 -0
  62. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/personal/gamma.md +0 -0
  63. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/reference/island.md +0 -0
  64. {graphmark-0.1.0 → graphmark-0.1.1}/tests/fixtures/simple/vault/reference/stub.md +0 -0
  65. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_cli.py +0 -0
  66. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_config.py +0 -0
  67. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_dismiss.py +0 -0
  68. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_export.py +0 -0
  69. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_gaps.py +0 -0
  70. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_graph.py +0 -0
  71. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_metrics.py +0 -0
  72. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_pagerank.py +0 -0
  73. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_parse.py +0 -0
  74. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_scoped.py +0 -0
  75. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_selflink.py +0 -0
  76. {graphmark-0.1.0 → graphmark-0.1.1}/tests/test_smoke.py +0 -0
@@ -8,3 +8,7 @@ dist/
8
8
  .venv/
9
9
  venv/
10
10
  .DS_Store
11
+
12
+ # afk build artifacts (keep config.toml, ignore the noise)
13
+ .afk/transcripts/
14
+ .afk/worktrees/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphmark
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Deterministic knowledge-graph analysis for markdown / [[wikilink]] vaults.
5
5
  Project-URL: Homepage, https://github.com/cdcoonce/graphmark
6
6
  Project-URL: Repository, https://github.com/cdcoonce/graphmark
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "graphmark"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "Deterministic knowledge-graph analysis for markdown / [[wikilink]] vaults."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -154,7 +154,7 @@ def gaps(
154
154
  G = _undirected(graph)
155
155
 
156
156
  def _hub(r: str) -> bool:
157
- return hub_degree is not None and G.degree(r) >= hub_degree
157
+ return hub_degree is not None and r in G and G.degree(r) >= hub_degree
158
158
 
159
159
  dedup_map: dict = {}
160
160
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "_provenance": "FROZEN ORACLE — DO NOT EDIT. Computed via brain_map.py's gaps() on the gaps/ graph with the out-of-graph similar_fn (similar_oog.json). brain_map treats a note outside the graph as degree 0 (non-hub) rather than crashing; graphmark must match. afk-agent-system#654.",
3
+ "params": { "threshold": 0.6, "k": 8, "max_score": 0.92, "hub_degree": 3 },
4
+ "gaps": [
5
+ { "a": "docs/a.md", "b": "misc/ghost.md", "score": 0.9, "sig": "weaklink|docs/a.md|misc/ghost.md" }
6
+ ]
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_note": "Out-of-graph similar_fn for afk #10: docs/a.md is 'similar' to misc/ghost.md, which is NOT a node in the graph (no such file). Exercises the defensive-degree path — gaps() must rank it (ghost = non-hub, degree 0) instead of crashing on G.degree(missing).",
3
+ "docs/a.md": [["misc/ghost.md", 0.9]]
4
+ }
@@ -0,0 +1,41 @@
1
+ """gaps() must not crash when similar_fn returns a note outside the graph (afk #10)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+
8
+ from graphmark.config import load_config
9
+ from graphmark.graph import NormalizeResolver, VaultGraph
10
+ from graphmark.metrics import gaps
11
+ from graphmark.parse import WikilinkExtractor
12
+
13
+ FIXTURE_DIR = Path(__file__).parent / "fixtures" / "gaps"
14
+ EXPECTED = json.loads((FIXTURE_DIR / "expected_oog.json").read_text())
15
+ _MAP = {
16
+ k: v
17
+ for k, v in json.loads((FIXTURE_DIR / "similar_oog.json").read_text()).items()
18
+ if not k.startswith("_")
19
+ }
20
+
21
+
22
+ def _similar_fn(rel, k):
23
+ return [tuple(x) for x in _MAP.get(rel, [])][:k]
24
+
25
+
26
+ def _graph():
27
+ cfg = load_config(FIXTURE_DIR / "config.toml")
28
+ return VaultGraph.build(cfg, WikilinkExtractor(), NormalizeResolver())
29
+
30
+
31
+ def test_gaps_tolerates_out_of_graph_nodes():
32
+ p = EXPECTED["params"]
33
+ result = gaps(
34
+ _graph(),
35
+ _similar_fn,
36
+ threshold=p["threshold"],
37
+ k=p["k"],
38
+ max_score=p["max_score"],
39
+ hub_degree=p["hub_degree"],
40
+ )
41
+ assert result == EXPECTED["gaps"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes