Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: Aspegio/nelson

v2.4.0 — Dynamic Workflows & Standing Goals

Choose a tag to compare

@harrymunro harrymunro released this 03 Jul 17:05

This release makes Nelson suitable to two Claude Code features so power users can drive both from the framework: dynamic workflows (deterministic multi-agent orchestration) and /goal (session-scoped Stop hooks that keep a session working until a completion condition is met). Nelson wraps each with doctrine, gates, and verification — it governs these features, it does not auto-invoke them.

Features

  • Dynamic workflow alignment (v1) — Two new execution modes, workflow (one approved autonomous run for large fan-out, audits, migrations, or cross-checked research) and hybrid-workflow (a Nelson-gated sequence of runs with human approval between stages, for Station 2/3 work). Adds references/workflow-doctrine.md (suitability, Sounding-the-Channel probes, cost guardrails, verification contracts, telemetry), battle-plan Workflow Charter fields, a charter-to-runnable-script bridge so the approved charter maps onto a real Workflow script, and workflow_* telemetry events. Saved workflows live in .claude/workflows/*.js and run as /<name>.
  • Goal alignment — Nelson now aligns with Claude Code's /goal. New references/goal-alignment.md doctrine, built on the load-bearing fact that the /goal evaluator judges only the conversation transcript — so completion evidence must be surfaced into chat, not left on disk. New nelson-data.py goal-condition composes a transcript-verifiable /goal string from the sailing orders (outcome + metric + stop criteria, plus a scuttle-and-reform escape), with --max-turns, --record (persists the condition + logs a goal_set event for resumption), and --json. Wired into SKILL.md at Sailing Orders (offer/reconcile), Stand Down (surface evidence so the goal auto-clears), and session resumption (re-establish on a fresh session). Adds goal_set / goal_cleared events and an optional persisted goal_condition field. The standing goal and the Mission Complete Gate reinforce each other.

Maintainability & docs

  • Backlog triage (#124) — admiralty-decision documentation, mission session-marker sidecar cleanup, and an incremental (per-module) strict-mypy sensor rollout.
  • New test_nelson_data_goal.py (composer purity/immutability, CLI output/JSON/record/limit, event validity, schema preservation); tool-mapping.md, structured-data.md, README.md, and docs/project_structure.md updated. All sensors green: Ruff, formatter, pytest, pre-commit, markdownlint, typos, and the doc cross-reference check.

Commits since v2.3.0

  • `0b78726` feat: align Nelson with Claude Code dynamic workflows and /goal (#126)
  • `be54ded` chore: backlog triage delivery — admiralty-decision docs, sidecar cleanup, incremental mypy sensor (#124)

v2.3.0 — Override-Learned Trust Calibration

Choose a tag to compare

@harrymunro harrymunro released this 04 Jun 16:08

This release introduces override-learned trust calibration — Nelson now learns how much to trust its own admiralty decisions from how often they get overridden — and lands the first tier of agent-hardening "sensors" that keep the codebase maintainable as agents work on it.

Features

  • Override-learned trust calibration (#88, v1) — Nelson records admiralty decisions and the human overrides against them, then aggregates per-key calibration so future decisions are weighted by their historical override rate. Hardened for correctness: per-task_id dedupe (latest wins), required --recorded-by + session_marker_present provenance, corrupt-store .bak rotation, and index --rebuild now resets and recomputes the calibration store rather than silently accumulating stale double-counts. Key validation is enforced at the aggregation boundary, not just the CLI.
    • v2 (auto-elevation, Fisher/Wilson gating, raise-only mutation) remains tracked for a future release per #88.

Maintainability & CI

  • Tier-1 agent-hardening sensors (#123) — AI-targeted Ruff thresholds, formatter, secret scanning (Gitleaks), and a documented suppress-with-reason / bump-threshold workflow so lint output is feedback an agent self-corrects against. See CLAUDE.md → "Maintainability sensors".
  • CI hardening — actions and pre-commit hooks SHA-pinned, a pre-commit parity job mirroring local hooks, and per-directory parallel test jobs.
  • Secret scanning fixGITLEAKS_LICENSE is now wired into the secret-scan job env, so the gitleaks check passes on the org-owned repo.

Docs

  • README polished for clarity and scannability; brownfield wording softened; the sensors workflow documented in CLAUDE.md / AGENTS.md.

Commits since v2.2.4

  • 8804ebd chore: release v2.3.0
  • c70c434 ci: pass GITLEAKS_LICENSE secret to gitleaks-action
  • 01e5d37 docs: polish README for clarity and scannability
  • 32eec71 feat: override-learned trust calibration (#88, v1)
  • c8a27b3 Merge #123 — chore/harden-for-agents
  • 7ade8fe ci: SHA-pin actions and pre-commit, add parity job, parallel tests
  • 0a60bf7 chore: suppression hygiene + safer subprocess test pattern
  • 21df007 chore: tighten lint config and triage surfaced violations
  • 361a506 fix: restore LICENSE and README ownership
  • 27460f9 chore: harden codebase for AI coding agents (Tier 1 sensors)

v2.2.4 — Learned Standing Orders

Choose a tag to compare

@harrymunro harrymunro released this 12 May 19:41

Painting by Salvatore Colacicco - Pair of marine paintings of Royal Navy warships

This release adds a Darwin Gödel Machine-inspired pipeline that learns new standing orders from accumulated mission data, with human review before any candidate is promoted.

Features

  • Learned standing orders pipeline (#87, #120) — skills/nelson/scripts/nelson_data_patterns.py mines avoid patterns from accumulated mission data, scores them with Fisher's exact test + log-odds, filters against existing orders and a dismissed archive, and synthesises candidate standing orders for human review. Falls back to a heuristic stub when no FM client is wired.
  • Three new nelson-data CLI subcommandsdetect-patterns, promote-candidate, dismiss-candidate. Promotion writes a new .md under references/standing-orders/ with an audit-lineage comment and adds a row to the SKILL.md lookup table. Dismissal archives the fingerprint so re-runs cannot resurface it.
  • Intelligence Brief surfaces pending candidatesCANDIDATE STANDING ORDERS (awaiting review): N appears in both the text and JSON brief when the queue is non-empty.

Design notes

  • Ranking is confidence × (1 + novelty), not sigmoid(confidence) × (1 + novelty). Sigmoid maps [0, 1] confidence into [0.5, 0.73] — too compressed to discriminate when novelty's range is [1, 2]. Documented inline in _review_score.
  • Novelty uses token containment (fraction of a pattern's tokens covered by an existing order) rather than TF-IDF Jaccard — better fit for short avoid-phrases vs. full standing-order documents.
  • Add-only invariant: candidates may never modify or remove existing orders, mitigating the objective-hacking failure mode in DGM Appendix H.
  • detect-patterns skips writing an empty queue file on first runs to avoid littering the memory directory.

Testing

  • 35 new tests in test_nelson_data_patterns.py
  • Full Python suite: 338/338 passing
  • ruff check clean on new code

Commits since v2.2.3

  • b1fd1ca Update README.md
  • 9e158d5 feat: learn standing orders from mission patterns (#87)
  • 352de9b fix: address PR review findings on learned standing orders
  • 9113af9 Merge pull request #120 from Aspegio/feat/issue-87-learned-standing-orders
  • 5ff5acf chore: release v2.2.4

v2.2.3 — Phase-Aware Recovery, Estimate Split, and Squadron Validation

Choose a tag to compare

@harrymunro harrymunro released this 08 May 19:50
image

Painting by Salvatore Colacicco - Pair of marine paintings of Royal Navy warships

This release consolidates everything shipped since v2.2.1, including the work that was version-bumped as v2.2.2 in source but never tagged on GitHub.

Features

  • Phase-aware recovery after /compact — Nelson is now resumable at every phase boundary. The recovery briefing also surfaces fleet-status staleness so a relieving admiral can spot a stale handoff.
  • Estimate phase split into subagents (#111, #114) — Q2–Q3 and Q4–Q7 now run as separate Estimate subagents in SKILL.md Step 2, with split-dispatch and pulling-the-oar wiring. Model-selection guidance carves the Estimate phase out from generic cost-savings advice.
  • pulling-the-oar standing order (#111) — codifies the anti-pattern where the admiral does work that should be delegated.
  • GitHub star prompt at Stand Down (#117) — one-time prompt asking users to star the repo, with hardened preflight checks.
  • Restored TaskCreate captain-misuse enforcement via an admiral session marker (#119), replacing the mode-check hook removed in #112. The session marker uses a fail-open posture so a missing or unreadable marker never blocks legitimate work.
  • Fleet-status freshness — new event constants and a staleness threshold; cmd_event now updates fleet-status for state-changing events (#114).

Fixes

  • Squadron shape validation in form — the composite form command used to crash with a TypeError when admiral, red_cell, or a captain entry in plan-input.json was a bare string instead of an object, after tasks had already been registered. _validate_plan_json now checks the squadron sub-document fully and emits a clear error with an example of the expected shape.
  • Mission lookup picks the most recent active mission (#114) — older active markers no longer shadow a newer mission.
  • Dedupe active-mission markers by resolved path — symlink and trailing-slash variants of the same path no longer produce duplicate markers.
  • Removed contradictory TaskCreate mode-check hook (#112) — the hook fought against the documented admiral-uses-TaskCreate exception.

Refactors & Docs

  • Threaded the event index from _append_event and deduped progress arithmetic.
  • README refreshed for accuracy; redundancy trimmed.
  • Documented fleet-status freshness fields and the staleness warning.

Commits since v2.2.1

  • 634f445 fix: mission lookup picks the most recent active mission (#114)
  • 9df7000 feat: add fleet-status event constants and staleness threshold
  • 651b38d feat: cmd_event updates fleet-status for state-changing events (#114)
  • 78bc3f2 feat: recovery briefing surfaces fleet-status staleness (#114)
  • 562eb79 feat: add pulling-the-oar standing order (#111)
  • d15260f docs: model-selection — Estimate phase carved out from cost-savings (#111)
  • de2b2eb feat: split Q2-Q3 and Q4-Q7 into Estimate subagents (#111, #114)
  • cc5f759 feat: SKILL.md Step 2 split-dispatch + pulling-the-oar wiring (#111, #114)
  • e05566e docs: document fleet-status freshness fields and staleness warning
  • c449ef3 fix: dedupe active-mission markers by resolved path
  • 62ba0c6 refactor: thread event index from _append_event, dedupe progress arithmetic
  • 7fb028b fix: remove TaskCreate mode-check hook that contradicts admiral exception (#112)
  • 2317485 docs: refresh README accuracy and trim redundancy
  • 208cfc0 feat: make nelson resumable after /compact at every phase boundary
  • d7a61ab refactor: address self-review fixes for phase-aware recovery
  • 26ae592 feat: restore TaskCreate captain-misuse enforcement via admiral session marker
  • 7a1117c fix: tighten admiral session marker fail-open posture
  • b992488 feat: add one-time GitHub star prompt at Stand Down
  • b68cdd4 fix: harden star prompt preflight and reposition README note
  • e41ec0e fix: validate squadron shape in plan JSON before forming

v2.2.1 — Scope Preservation Fixes

Choose a tag to compare

@harrymunro harrymunro released this 27 Apr 13:45

Fixes

  • Scope preservation in Battle Plan (#110): captains no longer create parallel implementations when extending existing code; the Battle Plan step now includes an explicit scope-preservation clause.
  • Persist modification_targets in structured data capture so scope is retained across the mission.

Commits since v2.2.0

  • af5521d fix: persist modification_targets in structured data capture
  • 172c894 fix: prevent captains from creating parallel implementations when extending existing code
  • 572f971 fix: add scope-preservation clause to Battle Plan step

v2.2.0 — The Estimate Phase

Choose a tag to compare

@harrymunro harrymunro released this 21 Apr 11:43
580024086-72adcdcd-6632-4dc4-bf32-1feb05a16c35

What's Changed

Minor release adding The Estimate — a new 7-Question Maritime Tactical Estimate phase.

New Features

  • The Estimate phase — a structured decision-making step between Sailing Orders and Battle Plan, using the 7-Question Maritime Tactical Estimate format. Elevates Nelson from a six-step to an eight-step operational framework. (#105)

Bug Fixes

  • Restore cost-savings instruction in Battle Plan step
  • Consolidate phase authority and address review findings
  • Unlink lock file after release in _file_lock
  • Move nelson_conflict_radar.py next to its dependency
  • Sync marketplace.json version

Internal

  • Added unit tests for scripts/count-tokens.py
  • CI now runs tests in scripts/ directory
  • Gitignore docs/superpowers/ and remove tracked plan artifacts (#108)
  • Removed empty codemap.md templates

Full Changelog: v2.1.2...v2.2.0

v2.1.2 — Mission Directory Desync Fix

Choose a tag to compare

@harrymunro harrymunro released this 16 Apr 19:28

What's Changed

Patch release fixing a setup-phase desync between SKILL.md and `nelson-data.py` that caused Nelson to leave an orphan mission directory and break SESSION_ID-based recovery.

Bug Fixes

  • `nelson-data.py init` now owns mission-directory creation end-to-end — generates the SESSION_ID, creates `.nelson/missions/{stamp}_{SESSION_ID}/`, writes the three initial JSON files, and writes the `.nelson/.active-{SESSION_ID}` sidecar in one atomic step. SKILL.md no longer instructs Claude to `mkdir` manually. Eliminates the "The script is creating a new timestamped directory rather than using mine" behavior. (#102, #103)

Internal

  • New `--session-id` arg on `init` for deterministic tests and known-id resumes (8 lowercase hex chars, validated)
  • 4 new tests covering auto-generation, explicit session id, sidecar contents, and invalid-id rejection

Full Changelog: v2.1.1...v2.1.2

v2.1.1 — Plugin Cache Fix

Choose a tag to compare

@harrymunro harrymunro released this 15 Apr 18:17

What's Changed

Patch release to trigger plugin cache refresh for the auto-exec path fix in #101.

Bug Fixes

  • Version bump so plugins/cache auto-invalidates — no more manual file copying needed (#99)

v2.1.0 — Budget Circuit Breakers & Plugin Root Fix

Choose a tag to compare

@harrymunro harrymunro released this 15 Apr 13:40
e69ce4e

What's New

Automated Budget Circuit Breakers (#85, #97)

  • Advisory circuit breakers that evaluate thresholds at each quarterdeck checkpoint and on TeammateIdle
  • Logs structured circuit_breaker_tripped events and recommends damage control procedures
  • Configurable via sailing-orders.json circuit_breakers key
  • Advisory only — no auto-abort

Bug Fixes

  • Plugin root path fix (#99, #100, #101): replaced {skill-dir} placeholder with ${CLAUDE_PLUGIN_ROOT} in SKILL.md auto-exec block; corrected script path to include skills/nelson/ prefix so nelson-data.py is found at the correct location; added regression checks to check-references.sh to prevent recurrence
  • CI fix: removed AGENTS.local.md from tracking to fix CI markdown lint

Documentation

  • README refresh (#98): added Conflict Radar, Enforcement Hooks, Cross-mission Intelligence, and Admiral Synthesis sections; expanded file tree; fixed stale paths for the split nelson_data_* modules

v2.0.0

Choose a tag to compare

@harrymunro harrymunro released this 10 Apr 23:17

What's New

Cross-Mission Memory Store (#94)

  • Persistent pattern library (.nelson/memory/patterns.json): accumulates adopt/avoid patterns from every mission
  • Standing order stats (.nelson/memory/standing-order-stats.json): tracks violation frequency and correlations across missions
  • Pattern capture: stand-down now accepts --adopt and --avoid flags to record reusable patterns
  • Intelligence brief (brief command): pre-mission command that surfaces relevant patterns, win rate, standing order hot spots, and context-matched precedents
  • Cross-mission analytics (analytics command): focused metric queries (success-rate, standing-orders, efficiency) with text and JSON output
  • Index sync: running index backfills the memory store for missions completed before this feature existed

Modular Architecture

  • Split monolithic nelson-data.py (2500+ lines) into 5 focused modules:
    • nelson-data.py — thin CLI entry point (340 lines)
    • nelson_data_utils.py — shared I/O, validation, constants
    • nelson_data_memory.py — cross-mission memory store
    • nelson_data_lifecycle.py — mission lifecycle commands
    • nelson_data_fleet.py — fleet intelligence and analytics
  • Test suite split into 3 files with shared conftest.py

Bug Fixes

  • Replaced bare open()+try/finally lock pattern with _file_lock() context manager across all lock sites
  • Fixed mid-file import and replaced time.sleep with deterministic mission IDs in tests
  • Fixed duplicate record-building code in cmd_index() that ran outside the file lock

Test Coverage

  • 234 total tests (182 scripts + 52 hooks), all passing
  • 21 new tests for memory store, brief, analytics, and index sync