You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude-plugin/marketplace.json
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -11,21 +11,21 @@
11
11
"source": "git-subdir",
12
12
"url": "https://github.com/Hellblazer/nexus.git",
13
13
"path": "conexus",
14
-
"ref": "v7.32.0"
14
+
"ref": "v7.33.0"
15
15
},
16
16
"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.32.0"
17
+
"version": "7.33.0"
18
18
},
19
19
{
20
20
"name": "sn",
21
21
"source": {
22
22
"source": "git-subdir",
23
23
"url": "https://github.com/Hellblazer/nexus.git",
24
24
"path": "sn",
25
-
"ref": "v7.32.0"
25
+
"ref": "v7.33.0"
26
26
},
27
27
"description": "Injects Serena and Context7 MCP tool usage guidance into subagents via SubagentStart hook.",
Copy file name to clipboardExpand all lines: .claude/skills/release/SKILL.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -99,6 +99,7 @@ away.
99
99
### 1. Run unit + integration suite
100
100
101
101
```bash
102
+
tests/e2e/release-battery.sh # nexus-mfage: every E2E gate below (and 1b, 6, 6b, 6c) in ONE parallel run — artifacts built once, per-leg logs, verdict table, exit 1 on any red; the unit suite still runs SERIAL to it
102
103
uv run pytest # unit suite (no API keys)
103
104
tests/e2e/local-service-gate.sh # integration incl. the local-service functional gate
Copy file name to clipboardExpand all lines: AGENTS.md
+7-3Lines changed: 7 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ uv run pytest -m integration # E2E (requires .env from .env.example)
18
18
uv sync && scripts/reinstall-tool.sh && nx --version # after edits
19
19
```
20
20
21
-
Unit tests use the in-process `InMemoryVectorClient` (`nexus.db.inmemory_vector_store`) + bundled ONNX MiniLM — no API keys or network; engine-substrate tests self-provision a local service (`ensure_engine`/`mint_test_tenant` in `tests/conftest.py`) or skip. **After any pull/rebase touching `service/`, run `scripts/build-gate-jar.sh`** — the substrate's freshness gate rejects a stale/unstamped jar and the whole suite errors at setup. Test-authoring directives (scenario journeys, lint bucket, contract-suite patterns, parametrize rules) live in [`tests/AGENTS.md`](tests/AGENTS.md).
21
+
Unit tests use the in-process `InMemoryVectorClient` (`nexus.db.inmemory_vector_store`) + bundled ONNX MiniLM — no API keys or network; engine-substrate tests self-provision a local service (`ensure_engine`/`mint_test_tenant` in `tests/conftest.py`) or skip. **After any pull/rebase or edit touching `service/` (a comment in a Java file or a changelog XML counts: the gate is mtime-keyed), run `scripts/build-gate-jar.sh`** — the substrate's freshness gate rejects a stale/unstamped jar and every substrate-backed test errors at setup, lint-marked ones included, so a suite run beside a jar rebuild reports a wall of setup errors that is not a test failure. Never backdate mtimes to get past it; rebuild. Test-authoring directives (scenario journeys, lint bucket, contract-suite patterns, parametrize rules) live in [`tests/AGENTS.md`](tests/AGENTS.md).
22
22
23
23
## Architecture at a glance
24
24
@@ -238,11 +238,15 @@ A green here proves only that no requirement was present in the snapshot the
238
238
releaser took — not that none was missed. The snapshot is one developer's
239
239
clone (see `docs/contributing.md` § Step 0b KNOWN LIMITATION, nexus-2zmfw).
240
240
241
-
1.**Run the full release test battery.**
241
+
1.**Run the full release test battery.** Step 0 is the pin sweep: `scripts/pins-preflight.sh` (about four minutes: lint bucket, the non-lint pin tests, wire-contract pairing, ruff on src, continuing past failures) so every stale ratchet, ledger, parity pin and reference-rot surfaces in ONE report before the first hour-long gate, instead of one per gate run (2026-09-06: the pattern was "expected fail, bump the pin, rerun for an hour, find the next one"). Then run the whole battery to completion collecting reds; fix once; rerun only the reds.
242
+
`tests/e2e/release-battery.sh` (nexus-mfage fix B) runs the whole gate group below in ONE invocation: leg 0 builds every artifact once (`tests/e2e/migration-rehearsal/build-artifacts.sh`: wheel, stamped dev jar, linux native candidate, plus a manifest keyed on the working tree's identity) and runs the pin sweep; then every gate runs in one parallel group (`--max-parallel`, default 4), each consuming the artifacts by manifest (`run.sh --artifacts`, `NX_GATE_ARTIFACTS`, `NEXUS_SANDBOX_HOME`), each in its own log with its verdict line captured verbatim and timed; the throughput-baselined shakeout leg runs alone afterwards. Reds never stop it; one table at the end; a leg with no verdict line is MISSING, never passed. Consumers refuse artifacts whose manifest tree identity is not this checkout's, so a dirtied tree rebuilds rather than reusing (nexus-mbeke). The serial commands below remain the per-leg reference and are what the driver runs.
242
243
```bash
243
-
uv run pytest # unit suite (no API keys)
244
+
tests/e2e/release-battery.sh # the whole battery, parallel, ~30 min on this box
245
+
scripts/pins-preflight.sh # step 0: every cheap pin at once
246
+
uv run pytest -n auto && uv run pytest -m lint # unit suite and the lint bucket (two runs)
244
247
tests/e2e/local-service-gate.sh # integration incl. the local-service functional gate
tests/e2e/migration-rehearsal/run.sh --candidate-migration # REQUIRED when the tree carries a changeset: --package-upgrade and fresh-install-mvv both converge to the PINNED engine, so only this leg walks the tree's own changesets over a populated existing store (nexus-z0ylb)
246
250
```
247
251
All must pass. Bare `uv run pytest -m integration` is not enough on its own — the local-service round-trip family self-provisions inside `local-service-gate.sh` and otherwise skip-gates silently on an absent service (the 74/516 ambient-degradation class the gate was built to end). Integration is excluded from CI — this battery is your last line of defense before tag-push.
248
252
1b. **Run the fresh-install MVV.** `./tests/e2e/fresh-install-mvv.sh` (nexus-nolqs). The VIRGIN-journey gate — every other E2E gate tests the upgrade axis from a populated install. The unit suite then pinned the SQLite opt-out backend (since retired at RDR-158), which is how the 2026-07-21 fresh-box defect class (f1itv/e9ru2/kmo9h/r5f3c/9xfx5) shipped unseen; today the suite pins the engine substrate instead, and the MVV still covers the virgin journey no unit test walks. Builds the wheel under test, then on a scrubbed-env virgin HOME: local init (engine + portable PG + bge-768), ladder converged at init, store put + index md with ENGINE-CATALOG registration asserted (not just T3 chunks), semantic search returns both, doctor with zero ✗ and warnings checked against the allowlist, and — leg 9 of 10 (nexus-utpuw.19) — a generation install on that same virgin HOME. That last leg is the only fresh-journey coverage of the `<tools>/gen-<stamp>` + shim path, and the only proof the built WHEEL actually ships `nexus/_install/*.sh`: every other test of `packaged_install_dir()` runs against an editable checkout, where that path exists because the repo does. Must end `FRESH-INSTALL MVV PASSED — ... (LOCAL WHEEL, release-battery layer)`. **This is the pre-tag LOCAL WHEEL layer only** — it resolves dependencies from this checkout's `uv.lock`/wheel metadata, not PyPI, so it cannot reproduce a defect that lives in dependency RESOLUTION (nexus-l2ku5: `mcp>=1.0` unbounded resolved `mcp` 2.0.0 fresh from PyPI on a `uv tool install`, killing both MCP servers for 4 days while every gate — this one included — ran pinned to the dev venv and saw nothing). `./tests/e2e/fresh-install-mvv.sh --published [X.Y.Z]` (nexus-796zn) installs the PUBLISHED artifact via `uv tool install conexus[==X.Y.Z]` in the identical scrubbed sandbox (never touches the live `~/.local/share/uv`/`~/.local/bin`) and is the POST-publish SHAKEDOWN layer (T2 `nexus/shakedown-playbook` §2 S1) — there is nothing on PyPI yet to install at pre-tag time, so it does not belong in this numbered step; run it after a tag publishes.
Copy file name to clipboardExpand all lines: conexus/.claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "conexus",
3
-
"version": "7.32.0",
3
+
"version": "7.33.0",
4
4
"description": "Self-hosted three-tier knowledge management with plan-centric retrieval (nx_answer), specialized agents, semantic search, and RDR decision tracking for Claude Code.",
Copy file name to clipboardExpand all lines: conexus/agents/developer.md
+2-5Lines changed: 2 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -154,11 +154,8 @@ You are an expert software developer who adapts to any language and build system
154
154
155
155
- Check /beads:ready for available work before starting
156
156
- Update bead status when starting: /beads:update <id> --status=in_progress
157
-
- Close beads when complete: /beads:close <id>
158
-
- Create new beads for discovered work: /beads:create
159
-
- Always commit .beads/issues.jsonl with code changes
160
-
161
-
157
+
- Record discovered work as a note on the bead you hold, or hand it back; do not file beads for it
158
+
- Do NOT close the bead and do NOT commit `.beads/issues.jsonl`: the caller owns close and commit behind the stacked-review gate (see § Completion Protocol)
162
159
163
160
## Completion Hand-Back (the review gate is the caller's standing job, not a per-turn reminder)
0 commit comments