@imunitic/synapse 0.1.1 → 0.1.2

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.
@@ -97,7 +97,7 @@ yours and cannot be scripted because what counts as signal differs per codebase.
97
97
  (hash, digest, `## Sources` mirror, PUT), `synapse push-nodes`, `synapse build-index`,
98
98
  `synapse build-project-index`.
99
99
 
100
- **The work directory** defaults to `~/.claude/synapse-work/{repo}@{branch}/`, created on demand, and
100
+ **The work directory** defaults to `~/.cache/synapse/work/{repo}@{branch}/`, created on demand, and
101
101
  holds `manifest.tsv`, `all.txt`, `lists/`, the authored `b-NN.md` bodies and the coverage files. Override with `$SYNAPSE_WORK_DIR` if you need to. Two things never to do: point it
102
102
  at the repo (`synapse` runs from inside the repo, so its working files would land in the user's
103
103
  checkout) or at the vault (Obsidian would index a file list that runs to six figures of lines).
@@ -85,7 +85,7 @@ this command when it does. What no longer happens is arriving here merely becaus
85
85
  because it is not this checkout's namespace to diff at all. Never conflate the two: a non-ancestor
86
86
  baseline on a branch-identity match still proceeds normally, per the "One mechanical fact about
87
87
  branches" section above.
88
- - The work directory (`$SYNAPSE_WORK_DIR`, default `~/.claude/synapse-work/{repo}@{branch}/`) ideally
88
+ - The work directory (`$SYNAPSE_WORK_DIR`, default `~/.cache/synapse/work/{repo}@{branch}/`) ideally
89
89
  holds the `manifest.tsv` from the original build. Without it, new paths cannot be classified as
90
90
  auto-claimable, and clustering decisions have to be re-derived — say so rather than proceeding as if
91
91
  nothing were missing. `synapse/{repo}@{branch}/_manifest.tsv` is the fallback copy.
@@ -60,7 +60,8 @@ step patches a compiled design note with a `> Compiled task: [[...]]` line right
60
60
  **3. Design notes (any status) with a non-empty `## Open Questions`.** Match the heading followed by
61
61
  at least one bullet -- a heading with nothing under it (fully pruned, per the Ready-gate convention
62
62
  `/synapse-design-note` now follows) doesn't count as open. Since this section spans every status,
63
- each line in the composed report also shows *which* status the note is currently in:
63
+ each line in the composed report also shows *which* status the note is currently in, and whether it
64
+ has a compiled task note:
64
65
 
65
66
  ```
66
67
  {"and": [
@@ -69,16 +70,17 @@ each line in the composed report also shows *which* status the note is currently
69
70
  ]}
70
71
  ```
71
72
 
72
- `regexp` is boolean-only (no captured groups), so getting each match's actual status needs a second
73
- pass. Run the same query three more times, `and`-ed with `{"regexp": ["## Status\\nDiscussing", ...]}`
74
- / `Ready` / `Reference` respectively, to sort the matches from the first query into the three known
75
- statuses without a body read. **A design note written before `## Status` was standardized on those
76
- exact three words can carry free text there instead** (e.g. `Superseded by [[...]]`) -- it matches
77
- the first query but none of the three status-scoped ones. Whatever's left over after removing the
78
- Discussing/Ready/Reference matches from the first query's full result set is exactly this case:
79
- report those under a fourth bucket, "Other", rather than silently dropping them -- surfacing an odd
80
- note beats losing it, the same reasoning behind reporting a 0-unchecked task instead of hiding it
81
- (see Query 4 below).
73
+ Do not chain further `and`/`regexp` conditions onto this query to sort matches by status -- compound
74
+ `regexp` conditions against `content` have been observed to return results that are logically
75
+ impossible (a query with strictly more AND-ed conditions returning *more* matches than one with
76
+ fewer), so any query beyond a single `glob` + single `regexp` pair is unverified and not to be
77
+ trusted here. Instead, `mcp__obsidian__vault_read` each match directly and take two things from the
78
+ result, no second query needed for either: the line following `## Status` in `content` (normally
79
+ `Discussing`/`Ready`/`Reference`, but a note written before the three-word convention can carry free
80
+ text instead, e.g. `Superseded by [[...]]` -- report that verbatim rather than forcing it into a
81
+ bucket, surfacing an odd note beats losing it) and, from the `links` array, any path under `tasks/`
82
+ -- that's the compiled task, if one exists, with no separate `Compiled task:` regex needed since a
83
+ resolved wikilink already appears in `links` regardless of where in the body it's written.
82
84
 
83
85
  **4. Open task notes with at least one unchecked item.** Task notes carry `status:` in frontmatter,
84
86
  unlike design notes -- filter there first:
@@ -104,10 +106,11 @@ note past `REVIEW` on its own:
104
106
 
105
107
  One section per category, in the order above. Each line names the note (title, or filename if no
106
108
  `title` frontmatter) plus the one identifying detail that category needs. The Open Questions section
107
- is the one place a note's status also belongs on the line -- every other section's heading already
108
- implies it (the "Discussing" section only ever holds `Discussing` notes), but Open Questions spans
109
- every status (`Discussing`/`Ready`/`Reference`/the "Other" catch-all from Query 3 above), so put the
110
- status first, before the title, so it's the first thing scanned:
109
+ is the one place a note's status and compiled-task link also belong on the line -- every other
110
+ section's heading already implies status (the "Discussing" section only ever holds `Discussing`
111
+ notes) and compiled-task-ness (the "Ready, not yet compiled" section only ever holds notes without
112
+ one), but Open Questions spans every status and both compiled and uncompiled notes, so put the status
113
+ first, before the title, so it's the first thing scanned:
111
114
 
112
115
  ```
113
116
  ## Discussing
@@ -117,7 +120,7 @@ status first, before the title, so it's the first thing scanned:
117
120
  - {title}
118
121
 
119
122
  ## Open questions
120
- - **{status}** — {title}
123
+ - **{status}** — {title} — {compiled task title, or "not compiled"}
121
124
 
122
125
  ## In progress (unchecked items)
123
126
  - {title} ({N} unchecked)
@@ -97,7 +97,7 @@ yours and cannot be scripted because what counts as signal differs per codebase.
97
97
  (hash, digest, `## Sources` mirror, PUT), `synapse push-nodes`, `synapse build-index`,
98
98
  `synapse build-project-index`.
99
99
 
100
- **The work directory** defaults to `~/.claude/synapse-work/{repo}@{branch}/`, created on demand, and
100
+ **The work directory** defaults to `~/.cache/synapse/work/{repo}@{branch}/`, created on demand, and
101
101
  holds `manifest.tsv`, `all.txt`, `lists/`, the authored `b-NN.md` bodies and the coverage files. Override with `$SYNAPSE_WORK_DIR` if you need to. Two things never to do: point it
102
102
  at the repo (`synapse` runs from inside the repo, so its working files would land in the user's
103
103
  checkout) or at the vault (Obsidian would index a file list that runs to six figures of lines).
@@ -85,7 +85,7 @@ this skill when it does. What no longer happens is arriving here merely because
85
85
  because it is not this checkout's namespace to diff at all. Never conflate the two: a non-ancestor
86
86
  baseline on a branch-identity match still proceeds normally, per the "One mechanical fact about
87
87
  branches" section above.
88
- - The work directory (`$SYNAPSE_WORK_DIR`, default `~/.claude/synapse-work/{repo}@{branch}/`) ideally
88
+ - The work directory (`$SYNAPSE_WORK_DIR`, default `~/.cache/synapse/work/{repo}@{branch}/`) ideally
89
89
  holds the `manifest.tsv` from the original build. Without it, new paths cannot be classified as
90
90
  auto-claimable, and clustering decisions have to be re-derived — say so rather than proceeding as if
91
91
  nothing were missing. `synapse/{repo}@{branch}/_manifest.tsv` is the fallback copy.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imunitic/synapse",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Memory for Claude Code, Codex CLI, and OpenCode: a durable Obsidian vault plus a per-repo code graph.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,9 +22,9 @@
22
22
  "*.conf.template"
23
23
  ],
24
24
  "optionalDependencies": {
25
- "@imunitic/synapse-darwin-arm64": "0.1.1",
26
- "@imunitic/synapse-linux-x64": "0.1.1",
27
- "@imunitic/synapse-linux-arm64": "0.1.1"
25
+ "@imunitic/synapse-darwin-arm64": "0.1.2",
26
+ "@imunitic/synapse-linux-x64": "0.1.2",
27
+ "@imunitic/synapse-linux-arm64": "0.1.2"
28
28
  },
29
29
  "license": "SEE LICENSE IN LICENSE"
30
30
  }
@@ -76,7 +76,7 @@ needs one.
76
76
  `built_at`, `commit`, `stale: false`, and preserving `## Notes` — belongs to
77
77
  `synapse write-node`, because a hub node's `sources` can no more be *emitted* into a tool call
78
78
  than read into a window. Let `$W` be the project's work directory,
79
- `~/.claude/synapse-work/{repo}@{branch}/`.
79
+ `~/.cache/synapse/work/{repo}@{branch}/`.
80
80
 
81
81
  - **Get the node's path list into a file, never into context:**
82
82
 
@@ -103,5 +103,5 @@ and regenerated by the `synapse-node` skill — never hand-edited, because the w
103
103
  `sources` hashes, `sources_digest` and the `## Sources` mirror, and a hand edit desynchronises
104
104
  them. `_profile.txt` and `_manifest.tsv` are human-readable and may be edited directly. The
105
105
  machine-only artifacts -- `_index.bin`, `_refs.tsv`, `_tags_cache.bin` -- are not here at all: they
106
- live in `~/.claude/synapse-work/{repo}@{branch}/`, because they are derived, rebuildable and large,
106
+ live in `~/.cache/synapse/work/{repo}@{branch}/`, because they are derived, rebuildable and large,
107
107
  and the vault is version-controlled.