Skip to content

Commit 27ec0d1

Browse files
committed
sdd: signal conceptual Session dialogue synthesized a design for a 7th signal kind — ...
1 parent 61c0f8c commit 27ec0d1

2 files changed

Lines changed: 80 additions & 0 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
type: signal
3+
layer: conceptual
4+
kind: insight
5+
refs:
6+
- 20260410-110420-s-cpt-s43
7+
- 20260504-100323-s-cpt-8tu
8+
- 20260423-203503-d-cpt-ygn
9+
participants:
10+
- Christopher
11+
- Claude
12+
confidence: medium
13+
preflight: skipped
14+
summary: Session dialogue designed a 7th structural signal kind excluded from catch-up narratives and a two-level topic assignment system combining inline labels at capture with post-capture annotation signals, enabling mechanical lightweight catch-up without synthesis. This addresses the topic-clustering gap (s-cpt-s43) and the roadmap-visibility problem (s-cpt-8tu) while building on the type-system expansion (d-cpt-ygn), whose supersession is required to realize the design.
15+
summary_hash: 5b0193217e2039edbbdf2839fa524db7
16+
---
17+
18+
Session dialogue synthesized a design for a 7th signal kind — purely structural, excluded from catch-up narrative, carrying typed edge bundles in frontmatter — and a companion two-level topic assignment system: inline topic labels on entries as the zero-ceremony primary path at capture time, with structural annotation signals for post-capture correction and bulk reorganization. Together these would enable mechanical lightweight catch-up without agent synthesis. The design is exploratory; realising it requires a conceptual decision superseding d-cpt-ygn. See [design dialogue](./05-215805-s-cpt-8h8/annotation-signal-design.md).
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# `kind: annotation` signal + topic system — design synthesis
2+
3+
## The gap
4+
5+
The existing 6 signal kinds (gap, fact, question, insight, done, actor) represent things noticed about the world or the project. None represents a structural annotation about the graph itself — grouping entries into topics, assigning labels, recording cross-cutting relationships.
6+
7+
Using `kind: insight` for topic clustering was considered but rejected: insights appear in the catch-up narrative as actionable items. Structural annotations should be invisible to the catch-up — present only for querying and rendering.
8+
9+
## Proposed: `kind: annotation`
10+
11+
A 7th signal kind — purely mechanical, excluded from catch-up narrative items. Never appears as a numbered item in the catch-up. Queryable for clustering, ranking, and rendering.
12+
13+
### Frontmatter: typed edge bundles
14+
15+
Each annotation carries a bundle of typed edges. Each edge has its own type and payload; multiple edge types can coexist in one bundle:
16+
17+
```yaml
18+
edges:
19+
- type: topic
20+
label: "catch-up/performance"
21+
members: [20260504-100323-s-cpt-8tu, 20260505-153647-d-tac-kv5, 20260505-153654-d-tac-qom]
22+
- type: topic
23+
label: "CLI/UX"
24+
members: [20260428-125737-d-tac-kud, 20260505-163757-d-tac-07q, 20260505-162047-d-tac-y9q]
25+
```
26+
27+
Current known edge type: `topic`. Future types (e.g. `priority`, `external-reference`) can be added without schema changes. The body carries narrative: why this grouping was made, what the topic means, what session produced it.
28+
29+
## Two-level topic assignment
30+
31+
**Primary path (capture time):** Entries carry an inline `topics:` field in frontmatter, assigned at creation. The agent suggests matching labels from existing annotations in the graph. No extra entry needed — zero ceremony for the common case.
32+
33+
```yaml
34+
topics: ["catch-up/performance", "CLI/UX"]
35+
```
36+
37+
**Secondary path (post-capture):** Annotation signals handle entries that predate the topic system, bulk reorganizations, and corrections. One annotation signal can assign topics across many entries at once.
38+
39+
The in-memory model builds the topic index as a union of both sources.
40+
41+
## Hierarchical topics via path labels
42+
43+
Labels follow a path convention: `"UX/CLI"` implies membership in `"UX"` by prefix. The renderer does a prefix match — no extra entries needed for parent topics. Inspired by s-cpt-s43's Zettelkasten hierarchical tags proposal.
44+
45+
## Label stability
46+
47+
Topic labels are stable identifiers, not display names — same principle as canonical participant names. Once used, a label is permanent. To restructure: add new annotation signals with correct labels, supersede old ones. Active cluster membership migrates forward; historical entries retain old labels. This avoids the "rename all backlinks" mess of tools like Logseq.
48+
49+
## Edge mutation: additive union model
50+
51+
- **Adding members**: new annotation signal with same label — no supersession needed
52+
- **Removing members**: supersede the specific annotation signal that added them
53+
54+
Topic membership = union of all non-superseded annotation signals sharing that label + inline `topics:` fields on entries. No negative edges needed; no ordering dependencies.
55+
56+
## Connection to lightweight catch-up
57+
58+
With annotation signals providing pre-computed topic clusters and in-degree + heat-decay providing ranking (s-cpt-rwd), the lightweight catch-up can select and present top-N entries under topic headers using verbatim summaries — no synthesis required.
59+
60+
## Type system impact
61+
62+
Extends signal kinds from 6 to 7, touching the type system contract (d-cpt-ygn). Requires a conceptual decision before implementation. Companion to the `kind: focus` decision proposal (s-cpt-ke6).

0 commit comments

Comments
 (0)