Releases: SeoNaRu/nulnul-harness
Release list
nulnul harness 2.2.0
nulnul harness 2.2.0
Make evolution confirmation executable, fix dirty-worktree documentation debt, and bind release evidence to exact candidate bytes.
A Gate-passing schema-v4 evolution candidate now remains provisional while the confirmed agent version stays active. The shipped executor confirms it only after one healthy observed cycle, or records rollback when the frozen numeric threshold fires. Legacy accepted-version rollback remains compatible.
Documentation-debt checks now distinguish the active host and treat a dirty document as updated for the current change while still reporting dirty source against a clean document. Release freshness requires both exact version and archive SHA; a closed NO_PROMOTION episode receives no product-behavior credit.
The consent/continuity behavior candidate was tested and removed. Its corrected DEV/VALIDATION comparison met the core routing observations but failed the frozen strict Gate and controls, so Navigator remains v20 and no consent or ordinary-product routing claim ships in this candidate.
No dependency, service, permission, credential, external-write scope, MCP server, hook, app, or additional product skill was added.
This is the local final 2.2.0 build. Publication and exact-version public Claude and Meta adoption remain intentionally unperformed and unauthorized.
codex plugin marketplace add SeoNaRu/nulnul-harness --ref main
codex plugin add nulnul-harness@nulnul-harnessclaude plugin marketplace add SeoNaRu/nulnul-harness
claude plugin install nulnul-harness@nulnul-harnessnulnul harness 2.1.1
nulnul harness 2.1.1
Make the required documentation-debt check fast on tracked repositories without weakening its fallback.
The detector now scans the repository by modification time only when it encounters a document with no Git history. Tracked documents continue to use commit order, and repositories without usable history retain the existing modification-time behavior.
Four counterbalanced A/B rounds against exact v2.1.0 returned the same debt inventory in every pair while median elapsed time fell from 17.73645 seconds to 0.2308 seconds, a 98.70% reduction on the release repository. Seven focused controls cover Git-history and modification-time paths. A separate same-model context-routing candidate was rejected because it increased paired input tokens by 11.07%; the shipped skill entry remains unchanged.
No dependency, service, permission, credential, or external-write scope was added.
Fresh exact-tag Claude adoption preserved the inactive host entry and both existing agent profiles while all five executable checks passed. Exact-final Meta adoption retained the correct apply with full compatibility checks reduced from three to one, and Release Gate closed at 100/100.
codex plugin marketplace add SeoNaRu/nulnul-harness --ref main
codex plugin add nulnul-harness@nulnul-harnessclaude plugin marketplace add SeoNaRu/nulnul-harness
claude plugin install nulnul-harness@nulnul-harnessnulnul harness 2.1.0
nulnul harness 2.1.0
Keep governed evolution history without loading all of it into every resumed task.
The standard-library compactor leaves open work and each agent's latest accepted rollback point in evolution.json, moves closed feedback, proposals, promotions, and autonomous episodes to an adjacent evolution.archive.json, and binds the two with SHA-256. Deterministic validation reconstructs the complete state without exposing the archive to normal model context. Targeted rejected-history lookup remains available before the Coach proposes a matching change.
The real 164,211-byte project state compacted to a 20,560-byte active state in the regression check, with every record identity preserved. Compaction is idempotent, archive tampering fails closed, legacy schema versions remain supported, and no dependency, service, permission, credential, or external-write scope was added.
codex plugin marketplace add SeoNaRu/nulnul-harness --ref main
codex plugin add nulnul-harness@nulnul-harnessclaude plugin marketplace add SeoNaRu/nulnul-harness
claude plugin install nulnul-harness@nulnul-harnessNULNUL 2.0.1
nulnul harness 2.0.1
Use Codex and Claude Code in the same repository without letting either one take over the other's project instructions.
This patch gives Codex and Claude Code separate root session-entry ownership when they are used sequentially in one repository. Codex creates or updates only AGENTS.md; Claude Code creates or updates only CLAUDE.md; both point to the existing single docs/nulnul/checkpoint.json or docs/nulnul/evolution.json writer.
The standard-library writer preserves existing user guidance outside one managed block, fails closed when shared state is missing or duplicated, and leaves the inactive host entry byte-identical. All four first-use and sequential-order cases, eight negative controls, legacy migration, and one post-freeze mixed-host cycle passed with no permission, dependency, service, or external-write change.
This patch does not claim simultaneous Codex and Claude Code mutation, automatic conflict merging, other host support, or global configuration management. Fresh exact-public Claude and changed-migration Meta adoption both passed before main closure.
codex plugin marketplace add SeoNaRu/nulnul-harness --ref main
codex plugin add nulnul-harness@nulnul-harnessclaude plugin marketplace add SeoNaRu/nulnul-harness
claude plugin install nulnul-harness@nulnul-harnessNULNUL 2.0.1-rc.1
nulnul harness 2.0.1-rc.1
This patch candidate gives Codex and Claude Code separate root session-entry ownership when they are used sequentially in one repository. Codex creates or updates only AGENTS.md; Claude Code creates or updates only CLAUDE.md; both point to the existing single docs/nulnul/checkpoint.json or docs/nulnul/evolution.json writer.
The standard-library writer preserves existing user guidance outside one managed block, fails closed when shared state is missing or duplicated, and leaves the inactive host entry byte-identical. All four first-use and sequential-order cases, eight negative controls, legacy migration, and one post-freeze mixed-host cycle passed with no permission, dependency, service, or external-write change.
This release candidate does not claim simultaneous Codex and Claude Code mutation, automatic conflict merging, other host support, or global configuration management. Public 2.0.0 remains the released baseline until exact-version public adoption evidence closes the patch gate.
NULNUL 2.0.0
NULNUL 2.0.0
Start small. Let the project prove what the harness needs next.
NULNUL is an open-source, project-local agent harness for Codex and Claude Code. It inspects the repository and existing setup first, reuses what already works, adds only proven gaps, continues the user's actual task, and keeps changes behind executable checks.
Try it
For Codex:
codex plugin marketplace add SeoNaRu/nulnul-harness --ref main
codex plugin add nulnul-harness@nulnul-harnessFor Claude Code:
claude plugin marketplace add SeoNaRu/nulnul-harness
claude plugin install nulnul-harness@nulnul-harnessThen ask for the work normally:
Set up the smallest useful harness for this project, reuse what already works,
and then complete the task I asked for.
If anything feels intrusive, overly cautious, or unnecessarily complex, report the normal task and the uncomfortable behavior in GitHub Issues. Please do not include private project data or raw transcripts.
What 2.0 adds
This release adds bounded cross-project selection on top of opt-in Personal Evolution. NULNUL uses privacy-safe activation and contraindication summaries to narrow which verified personal adaptations deserve a full compatibility check in the current project; past success never forces application.
Three independent families passed the existing Personal Gate lifecycle: checkpoint verification freshness, local migration atomicity, and nonpass learning linkage. On the sealed local episode, meta-selector-v1 preserved all three flat-lookup decisions while reducing full compatibility checks from 9 to 4. Fresh no-relevant and unresolved-conflict controls failed closed, and the promoted selector passed one live cycle plus an executable rollback control.
The registry remains a user-selected local privacy boundary. Raw project data, project identity, cross-user learning, cloud memory, background learning, arbitrary conflict resolution, permission expansion, and open-ended recursion are excluded.
The exact public 2.0.0 archive matched the validated local bytes. Fresh Claude Code adoption preserved two existing profiles, made zero protected writes, and passed five checks. Fresh exact-final Meta adoption loaded the three-family registry without user-named adaptations and reduced Project M full compatibility checks from 3 to 1 with the same correct apply and downstream result. No-match, conflict, privacy, permission, exposure, and rollback controls passed; Generalization remains narrower_scope.
NULNUL 2.0.0-rc.2
nulnul harness 2.0.0-rc.2
This release candidate adds bounded cross-project selection on top of opt-in Personal Evolution. NULNUL uses privacy-safe activation and contraindication summaries to narrow which verified personal adaptations deserve a full compatibility check in the current project; past success never forces application.
Three independent families passed the existing Personal Gate lifecycle: checkpoint verification freshness, local migration atomicity, and nonpass learning linkage. On the sealed local episode, meta-selector-v1 preserved all three flat-lookup decisions while reducing full compatibility checks from 9 to 4. Fresh no-relevant and unresolved-conflict controls failed closed, and the promoted selector passed one live cycle plus an executable rollback control.
The registry remains a user-selected local privacy boundary. Raw project data, project identity, cross-user learning, cloud memory, background learning, arbitrary conflict resolution, permission expansion, and open-ended recursion are excluded. This RC is not final release closure: exact public artifact identity, fresh Claude Code adoption, and fresh public meta adoption must pass before 2.0.0 is released.
nulnul harness 2.0.0-rc.1
nulnul harness 2.0.0-rc.1
This release candidate adds bounded cross-project selection on top of opt-in Personal Evolution. NULNUL uses privacy-safe activation and contraindication summaries to narrow which verified personal adaptations deserve a full compatibility check in the current project; past success never forces application.
Three independent families passed the existing Personal Gate lifecycle: checkpoint verification freshness, local migration atomicity, and nonpass learning linkage. On the sealed local episode, meta-selector-v1 preserved all three flat-lookup decisions while reducing full compatibility checks from 9 to 4. Fresh no-relevant and unresolved-conflict controls failed closed, and the promoted selector passed one live cycle plus an executable rollback control.
The registry remains a user-selected local privacy boundary. Raw project data, project identity, cross-user learning, cloud memory, background learning, arbitrary conflict resolution, permission expansion, and open-ended recursion are excluded. This RC is not final release closure: exact public artifact identity, fresh Claude Code adoption, and fresh public meta adoption must pass before 2.0.0 is released.
nulnul harness 1.7.0
nulnul harness 1.7.0
This release candidate adds opt-in Personal Evolution without adding raw project memory. A project-verified mechanism can become a personal adaptation only after a frozen source identity, representative transfer checks, an incompatible-shape skip, and an independent Personal Gate. A new project must still pass a compatibility and completion check before reuse.
The first candidate reuses the already accepted checkpoint-freshness mechanism. Fresh Node and Make shapes passed, a one-shot shape skipped, and a fresh data-CLI project discovered and verified the adaptation from an isolated user-selected temporary home. The no-registry baseline also completed its task but did not discover an approved adaptation; no token, runtime, or universal task-quality win is claimed.
The registry is a user-selected existing local directory and stores only generalized bounded evidence, activation conditions, contraindications, provenance, permissions, and revocation state. Missing home, private data, self-approval, hidden failed transfer, false activation, duplicate identity, conflict, permission expansion, and stale or revoked adaptations fail closed. Publication is not complete until exact-version public 1.7.0 adoption evidence passes the final Release Gate.
nulnul harness 1.6.0
nulnul harness 1.6.0
This release adds one-generation bounded evolution episodes. A Coach may propose a small candidate set from a reproduced failure, but fixed budgets, archive deduplication, permission and HOLDOUT boundaries, deterministic evaluation, and an independent Gate own the decision. NO_PROMOTION remains a valid result.
The retrospective episode deduplicated a rejected mechanism and selected an already verified winner. A later live episode started from a new public-positioning failure: two unchanged champion checks each found seven violations, while one newly generated metadata candidate reduced the result to zero and stopped on SUCCESS within two model invocations. The claim is limited to that activation-metadata failure family; it is not open-ended, personal, cross-project, or harness-wide autonomous improvement.
The plugin remains skills-only with no server, daemon, recursive Coach, background loop, raw transcript store, new permission, or reused HOLDOUT. All 114 repository tests and the final 100/100 Release Gate pass. A post-publication fresh GitHub-marketplace-installed 1.6.0 adoption preserved two existing agent profiles, made zero protected writes, produced verified resumable state, and passed five executable checks; no 1.5.0 evidence was relabeled.