Skip to content

Commit 0e8dea9

Browse files
authored
Merge pull request #1513 from Hellblazer/release/v7.34.1
release: conexus 7.34.1
2 parents 9b6e6f2 + 858582b commit 0e8dea9

33 files changed

Lines changed: 2789 additions & 32 deletions

.claude-plugin/marketplace.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
"source": "git-subdir",
1212
"url": "https://github.com/Hellblazer/nexus.git",
1313
"path": "conexus",
14-
"ref": "v7.34.0"
14+
"ref": "v7.34.1"
1515
},
1616
"description": "Self-hosted three-tier knowledge management with 13 specialized agents, plan-centric retrieval via nx_answer, semantic search, and RDR decision tracking for Claude Code.",
17-
"version": "7.34.0"
17+
"version": "7.34.1"
1818
},
1919
{
2020
"name": "sn",
2121
"source": {
2222
"source": "git-subdir",
2323
"url": "https://github.com/Hellblazer/nexus.git",
2424
"path": "sn",
25-
"ref": "v7.34.0"
25+
"ref": "v7.34.1"
2626
},
2727
"description": "Injects Serena and Context7 MCP tool usage guidance into subagents via SubagentStart hook.",
28-
"version": "7.34.0"
28+
"version": "7.34.1"
2929
}
3030
]
3131
}

AGENTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ Collection prefixes coexist in one T3 database. Always `__` (double underscore)
5050

5151
**Catalog/T3 split (RDR-108, widths per RDR-180)**: Catalog Documents are graph nodes addressed by tumblers (`Document.tumbler`); T3 chunks are content-addressed blobs whose natural ID is the FULL `sha256(chunk_text)` — 64 lowercase hex on the wire, 32 raw bytes in storage (`bytea`, `octet_length=32`); hex only at boundaries (see `docs/architecture.md` § Chunk identity). Document structure (which chashes compose a doc, in what order) lives in the catalog `document_chunks` manifest, not in chunk metadata. The doc-to-chunks join is `documents.tumbler -> document_chunks.doc_id -> document_chunks.chash`; the chash is the chunk id directly, no further lookup. Identical chunk text in the same collection collapses to one T3 row by design; the manifest preserves position via `(doc_id, position)` rows pointing at the shared chash.
5252

53+
**Creating or naming a collection** follows [`docs/collections.md`](docs/collections.md): `code`/`docs`/`rdr` are minted only by `nx index repo`; a `knowledge` collection is a durable subject area (`distributed-systems`), never a document, session, task, source app, or placeholder (`default`, `knowledge`, `test`); reuse an existing subject before creating one; type the bare subject and never a model token or version.
54+
5355
For the full module map, post-store hook contracts, T2 schema, and design heritage see [`docs/architecture.md`](docs/architecture.md). For module-local guidance see the `AGENTS.md` files inside `src/nexus/catalog/`, `src/nexus/db/`, and `src/nexus/mcp/`.
5456

5557
## Critical conventions

CHANGELOG.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,79 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
88

9+
## [7.34.1] - 2026-09-07
10+
11+
Client-only patch. Engine unchanged at engine-service-v0.1.106
12+
(`REQUIRED_ENGINE_VERSION` 0.1.106); no `service/` change since 7.34.0.
13+
14+
### RDR gate: re-gates surface the prior round (nexus-7vdf9)
15+
16+
- `nx rdr preamble rdr-gate <id>` prints a **Re-gate** block when the RDR's
17+
`<id>-gate-latest` record is BLOCKED: the prior outcome and date, every
18+
Critical and Significant finding from the stored critique (a section-aware
19+
parser for the substantive-critic's canonical `## Critical Issues` /
20+
`### Issue:` format plus a free-form fallback, verified against the four
21+
real RDR-204 critiques), the RDR file's `git diff --stat` since the gated
22+
commit (a bad or unknown commit is reported as unknown, never rendered as
23+
"no changes"), and the Layer 0 survivor-sweep instruction. A missing
24+
`critique:` pointer, a pointer to an absent record, and an unreachable T2
25+
are each named distinctly. A first gate, or a re-gate after PASSED, prints
26+
nothing extra. Origin: RDR-204 took four gate rounds; rounds three and four
27+
were blocked on sentences restating facts already fixed elsewhere in the
28+
same file, because nothing surfaced the prior round's findings.
29+
- The `/conexus:rdr-gate` command and the `rdr-gate` skill now store the
30+
critique in T2 as `{id}-gate-critique-{date}` BEFORE writing the gate
31+
result, and the result carries `critique:` and `commit:`; the preamble
32+
reads both. A T3 copy under the old `gate-rdr-NNN-{date}` title is
33+
optional and never the only copy. Both gain a Layer 0 section.
34+
- `conexus/resources/rdr/TEMPLATE.md` Technical Design guidance: state each
35+
measured value once in Research Findings and cite it elsewhere; a set the
36+
implementation can derive (tables with a foreign key into X, call sites
37+
of Y) is derived at run time and pinned by a test, never typed into the
38+
RDR as the condition.
39+
40+
### Collections: guidance and a shape audit (nexus-ger23)
41+
42+
- New `docs/collections.md`: the rules for choosing and naming a
43+
collection. `code`/`docs`/`rdr` collections are minted only by
44+
`nx index repo`; a `knowledge` collection is a durable subject area,
45+
never a document, session, task, source application, or placeholder;
46+
reuse an existing subject before creating one; type the bare subject and
47+
never a model token or version; a collection holds many documents; where
48+
each source kind goes; lifecycle only through the `nx collection` verbs.
49+
Wired into AGENTS.md, Storage Tiers, the docs index, the CLI reference,
50+
and the `store_put` / `nx_tidy` MCP docstrings; the `--collection` help
51+
on `nx store put|list|delete` and `nx index md|pdf` states the rule, and
52+
the CLI examples that taught `--collection knowledge` now show subjects.
53+
- `nx collection shape [--json] [--full]`: read-only audit of the whole
54+
collection set against those rules. Fifteen checks over the six rules,
55+
pinned to the rule headings by test: placeholder, date-like,
56+
task-or-document-shaped, and source-app subjects; the `default` corpus;
57+
likely duplicate subjects (name evidence, with `merge-candidates` named
58+
as the confirmation); a model the install no longer writes with; a stored
59+
dimension disagreeing with the name's model (the GH #667 class); thin,
60+
one-document, and below-fan-out-floor collections; test residue; ghost
61+
rows; grandfathered relics; blank catalog attributes; superseded-but-live;
62+
chunks with no catalog row. One finding per violation with a proposed
63+
action; never writes, never calls a model; a read failure is an error,
64+
never an empty report. Distinct from the RDR-087 per-collection
65+
`nx collection audit NAME`. The single attribute accessor
66+
(`collection_attributes`) is the RDR-204 repoint seam.
67+
- `nx doctor --check-collection-shape`: one row per check with its count
68+
and an examined count; findings never fail doctor, an unreadable tenant
69+
exits 1.
70+
71+
### Documentation
72+
73+
- RDR-204 (draft, in gate): an install-scoped embedding profile and
74+
`catalog_collections` as the authority for a collection's attributes.
75+
- RDR-203 closed as implemented with post-mortem (nexus-dt2tu).
76+
77+
### Plugin surface becoming live at this pin
78+
79+
- `conexus/commands/rdr-gate.md`, `conexus/skills/rdr-gate/SKILL.md`,
80+
`conexus/resources/rdr/TEMPLATE.md` (nexus-7vdf9, above).
81+
982
## [7.34.0] - 2026-09-06
1083

1184
Paired with engine-service-v0.1.106 (`REQUIRED_ENGINE_VERSION` 0.1.106).

conexus/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "conexus",
3-
"version": "7.34.0",
3+
"version": "7.34.1",
44
"description": "Self-hosted three-tier knowledge management with plan-centric retrieval (nx_answer), specialized agents, semantic search, and RDR decision tracking for Claude Code.",
55
"author": {
66
"name": "Hal Hildebrand",

conexus/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to the conexus plugin are documented here.
44
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55
Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [7.34.1] - 2026-09-07
8+
9+
- `rdr-gate` command and skill: a Layer 0 re-gate survivor sweep driven by
10+
the new `nx rdr preamble rdr-gate` Re-gate block; the critique is stored
11+
in T2 as `{id}-gate-critique-{date}` before the gate result, and the
12+
result carries `critique:` and `commit:` (nexus-7vdf9).
13+
- `resources/rdr/TEMPLATE.md`: Technical Design guidance to state each
14+
measured value once and to derive sets at run time rather than list them
15+
(nexus-7vdf9).
16+
717
## [7.34.0] - 2026-09-06
818

919
- Plugin version aligned with conexus 7.34.0. No plugin-side changes.

conexus/PENDING_RELEASE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ mechanize, it matters enough to ship.
2929
---
3030

3131

32-
## Awaiting the next release or plugin cut (pinned: v7.34.0)
32+
## Awaiting the next release or plugin cut (pinned: v7.34.1)
3333

3434
(none)

conexus/commands/rdr-gate.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ line — free text with apostrophes/quotes breaks the quoting (nexus-ybvyo).
2121
All data is pre-loaded above — no additional tool calls needed.
2222

2323
- RDR directory is shown above (from `.nexus.yml` `indexing.rdr_paths[0]`).
24+
- **Layer 0 — Re-gate survivor sweep** (only when the preamble printed a `### Re-gate` block, i.e. the prior gate was BLOCKED): for every prior finding listed there, grep the RDR file for the refuted phrasing AND the corrected one; every occurrence must agree before Layer 3. A fact lives in Problem Statement, Research Findings, Technical Design and the Implementation Plan at once, and the last two are where survivors hide. Brief the Layer 3 critic to verify each prior finding closed everywhere, then run a full-document consistency pass; re-read related RDRs only if the diff touched the Relationship section (nexus-7vdf9).
2425
- Run all three gate layers in sequence:
2526
- **Layer 1 — Structural**: Use the Section Structure and Section Summaries above to check completeness (required headings present, no empty sections). **If no research findings exist** and `--skip-research` was NOT passed, report **BLOCKED** and stop — do not proceed to Layer 2 or 3. If `--skip-research` was passed, note the override and continue.
2627
- **Layer 2 — Assumption audit**: Use T2 Research Findings above to verify assumptions are evidenced. Every finding classified as "Assumed" must have an explicit risk assessment.
2728
- **Layer 3 — AI critique**: Dispatch the `substantive-critic` agent via Agent tool with the full RDR content. If the RDR has `related_issues` listing other RDR IDs, read those RDRs and include their content in the critique prompt — the critic should check for consistency and contradictions between related RDRs (P7). Include the register question from `resources/rdr/REGISTER.md` in the brief as criterion 6, warn-class only (a readability miss never fails or blocks the gate): could a smart reader who does not know this project's jargon follow the problem and the decision from this RDR alone? Ask for a list of undefined terms and tribal-knowledge sentences. The critique itself is addressed to the author: name the defect, where it is, and what better looks like.
2829
- Gate outcomes: **BLOCKED** (critical issues found, must fix and re-gate) or **PASSED** (no critical issues). Do not use "Conditional Accept" or other ad-hoc outcomes.
30+
- **Store the critique in T2 FIRST**: memory_put project="{repo_name}_rdr", title="{id}-gate-critique-{date}" (same-day re-gates append a letter: `{date}b`, `{date}c`), ttl="permanent", tags="rdr,gate,critique", content=the critic's full report. T2 is where `nx rdr preamble rdr-gate` reads it back on a re-gate; a T3 copy is optional and never the only copy.
2931
- **Write T2 gate result** after completing all layers. Use the repo name from above:
3032
Use **memory_put** tool: project="{repo_name}_rdr", title="{id}-gate-latest", ttl="permanent", tags="rdr,gate", content with:
3133
```
@@ -35,7 +37,9 @@ All data is pre-loaded above — no additional tool calls needed.
3537
significant_count: 2
3638
observation_count: 3
3739
summary: "One-sentence summary of gate result"
40+
critique: {repo_name}_rdr/{id}-gate-critique-{date}
41+
commit: <output of: git log -1 --format=%h -- <rdr file>>
3842
```
39-
This overwrites any previous gate result for this RDR, so only the latest gate run is stored.
43+
`critique:` and `commit:` are what the re-gate block reads. This overwrites any previous gate result for this RDR, so only the latest gate run is stored.
4044
- **If PASSED**, print: `> Run '/conexus:rdr-accept <id>' to accept this RDR.`
4145
- If no ID given, show the available RDR table above and prompt for an ID.

conexus/resources/rdr/TEMPLATE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,15 @@ extension points.]
134134
- Limit illustrative code to patterns that cannot be
135135
expressed as prose (e.g., callback signatures,
136136
serialization formats)
137+
- State each measured value ONCE, in Research Findings,
138+
and cite it here and in the plan ("the census count")
139+
rather than restating the number; a fix then has one
140+
site. Two blocked gates on RDR-204 were numbers that
141+
had been fixed in one section and not the others.
142+
- A set the implementation can derive (tables with a
143+
foreign key into X, call sites of Y) is derived by the
144+
implementation at run time and pinned by a test; never
145+
typed into the RDR as the condition. Hand lists miss.
137146

138147
```text
139148
// Illustrative — verify API signatures during implementation

conexus/skills/rdr-gate/SKILL.md

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@ Resolve RDR directory from `.nexus.yml` `indexing.rdr_paths[0]`; default `docs/r
2626

2727
## Three Validation Layers (run in sequence)
2828

29+
### Layer 0 — Re-gate survivor sweep (only when the prior gate was BLOCKED)
30+
31+
`nx rdr preamble rdr-gate <id>` prints a **Re-gate** block when the RDR's
32+
`{id}-gate-latest` record is BLOCKED: the prior outcome, the critique's
33+
Critical and Significant lines verbatim, and the diff of the RDR file since the
34+
gated commit. Do this before anything else:
35+
36+
1. For every prior finding, grep the RDR file for the refuted phrasing AND the
37+
corrected one. Every occurrence must agree. A fact lives in the Problem
38+
Statement, Research Findings, Technical Design and the Implementation Plan
39+
at once; the last two paraphrase the design and are where survivors hide.
40+
Fix every site; a fix at the quoted line alone is what produced two blocked
41+
rounds on RDR-204 (nexus-7vdf9).
42+
2. If a finding changed a design decision, read Implementation Plan, Test Plan,
43+
Day 2 Operations, Trade-offs and Proportionality in full.
44+
3. Brief the Layer 3 critic with the prior findings and ask it to verify each is
45+
closed everywhere, then run a full-document consistency pass. Re-read related
46+
RDRs only if the diff touched the Relationship section; otherwise the prior
47+
round's P7 check stands.
48+
49+
A first gate, or a re-gate after a PASSED result, has no Layer 0.
50+
2951
### Layer 1 — Structural Validation (no AI)
3052

3153
Read the RDR markdown file. Check that these sections are present AND non-empty (not just the heading with placeholder text):
@@ -128,17 +150,17 @@ If no collections found: "No prior RDRs indexed. Cross-project prior-art search
128150

129151
### On Pass
130152

131-
1. Write gate result to T2: mcp__plugin_conexus_nexus__memory_put(content="outcome: PASSED\ndate: YYYY-MM-DD\ncritical_count: 0\nsignificant_count: N\nobservation_count: N\nsummary: One-sentence summary", project="{repo}_rdr", title="{id}-gate-latest", ttl="permanent", tags="rdr,gate"
132-
2. Store gate critique to T3: mcp__plugin_conexus_nexus__store_put(content="# Gate: RDR NNN\n\n{critique}", collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique")
153+
1. Store the critique in T2 FIRST: mcp__plugin_conexus_nexus__memory_put(content="{critique}", project="{repo}_rdr", title="{id}-gate-critique-{date}", ttl="permanent", tags="rdr,gate,critique"). Same-day re-gates append a letter (`{date}b`, `{date}c`). T2 is where the preamble reads; a T3 copy (collection="knowledge", title="gate-rdr-NNN-{date}") is optional and never the only copy.
154+
2. Write gate result to T2: mcp__plugin_conexus_nexus__memory_put(content="outcome: PASSED\ndate: YYYY-MM-DD\ncritical_count: 0\nsignificant_count: N\nobservation_count: N\nsummary: One-sentence summary\ncritique: {repo}_rdr/{id}-gate-critique-{date}\ncommit: <git log -1 --format=%h -- <rdr file>>", project="{repo}_rdr", title="{id}-gate-latest", ttl="permanent", tags="rdr,gate"). `critique:` and `commit:` are what the re-gate block reads.
133155
3. Append gate findings to the RDR's Revision History section
134156
4. Print: `> Run '/conexus:rdr-accept <id>' to accept this RDR.`
135157

136158
Status remains **Draft** until the author explicitly accepts via `/conexus:rdr-accept`.
137159

138160
### On Fail
139161

140-
1. Write gate result to T2 (same format, `outcome: "BLOCKED"`)
141-
2. Store gate critique to T3: mcp__plugin_conexus_nexus__store_put(content="# Gate BLOCKED: RDR NNN\n\n{critique}", collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique,blocked")
162+
1. Store the critique in T2 first (same title scheme as On Pass), then write the gate result (same format, `outcome: "BLOCKED"`, with `critique:` and `commit:`). The next `nx rdr preamble rdr-gate` run turns these two fields into the Layer 0 block.
163+
2. T3 copy optional (collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique,blocked")
142164
3. Display the critique with specific sections to address
143165
4. Status remains Draft
144166

@@ -193,7 +215,7 @@ For additional optional fields, see [RELAY_TEMPLATE.md](../../agents/_shared/REL
193215

194216
Outputs generated by the substantive-critic agent (Layer 3):
195217

196-
- **T3 knowledge**: Gate results via store_put tool: content="# Gate: RDR NNN\n{critique}", collection="knowledge", title="gate-rdr-NNN-{date}", tags="rdr,gate,critique"
218+
- **T2 memory**: the critique itself via memory_put tool: project="{repo}_rdr", title="{id}-gate-critique-{date}", tags="rdr,gate,critique" (the preamble reads this on a re-gate); T3 copy optional
197219
- **T2 memory**: Gate result record via memory_put tool: project="{repo}_rdr", title="{id}-gate-latest", ttl="permanent", tags="rdr,gate" (outcome: PASSED or BLOCKED)
198220
- **T1 scratch**: Layer 1/2 validation notes via scratch tool: action="put", content="Gate RDR NNN: Layer 1 structural check", tags="rdr,gate" (promoted to T2 on completion)
199221

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Start with [Getting Started](getting-started.md) for installation. Then find you
1212

1313
## I want to...
1414

15+
- **Decide which collection something belongs in, or name a new one**[Choosing and Naming Collections](collections.md) — content type by source, `knowledge` subjects not containers, reuse before create, bare names only
1516
- **Back up my knowledge store**[Storage Tiers § T3 Backup and Migration](storage-tiers.md#t3-backup-and-migration-exportimport)`nx store export`/`import`, live T3, `.nxexp` format
1617
- **Fix empty search results after upgrading**[Getting Started § Troubleshooting](getting-started.md#troubleshooting) (`nx search` returns no results); if you upgraded straight from a pre-PG install, see [Upgrading an existing install](getting-started.md#upgrading-an-existing-install-skip-this-if-this-is-your-first-install) for the two-hop path
1718
- **Check my install's health**`nx doctor`, see [CLI Reference — nx doctor](cli-reference.md#nx-doctor)

0 commit comments

Comments
 (0)