Releases: cdeust/zetetic-team-subagents
Releases · cdeust/zetetic-team-subagents
Release list
v2.28.1
Fixed
agent-definition-auditor.shnow actually gates in CI — the script's defaultROOTwas a hardcoded personal absolute path that didn't exist on the CI runner, so the glob silently matched 0 files and the whole audit (F1-F9, FD, B1-B3, G1-G3, P1) passed vacuously.ROOTnow resolves relative to the script's own location, and a 0-match glob fails explicitly (exit 2) instead of reporting an empty pass. All 97 genius agents also gained an explicittools:frontmatter field (previously scoped only via the plugin manifest's blanket "All tools" grant), bringing F8/F9 from 22/119 to 119/119 passing.- 26 genius agent descriptions repaired — 4 agents (
deming,fisher,leguin,ranganathan) shipped with frontmatterdescriptiontruncated mid-sentence by a JSON double-encoding bug (e.g."W."); a further 10 had the same corruption undetected until a new quality gate (check FD: description ≥ 40 chars, no broken escape artifacts) was added to the auditor, and 16 more had valid-but-terse descriptions. Sincedescriptionis the spawn/routing criterion, corrupted values made these agents unroutable;rules/agent-routing-table.mdwas regenerated so the fix reaches routing consumers. - Orchestrator now validates a subagent's result against its artifact contract before forwarding it downstream, and isolates a failed subtask so it does not invalidate already-validated independent results — encoded as new Move 6 steps and refusal conditions.
- Encoded the anti-passive-waiting lesson (long-running work is foreground-blocking or terminate-and-handoff, never a sleep/poll loop on a background monitor) as binding §8c in the shared memory contract.
v2.28.0
v2.27.0
Added
- git-historian team agent — regression provenance and abandoned-approach recovery: traces when a behavior changed, which commit introduced it, and surfaces approaches tried-and-reverted so a session doesn't re-walk a dead end.
Changed
- Registered the
cortex-vizmemory scope in the central registry so cross-agent recall resolves it.
Fixed
- Corrected
get_impactdrift inrules/agent-reference/codebase-intelligence.md— the doc over-promised the tool's blast-radius (it returns one reverse-edge hop, not transitive/test-aware); wording now matches the implementation.
v2.26.0
Changed
- Spine beat 2 (
evidence/sources) now enforces the direction of evidence,
across all 117 agents (team + genius) via the single generator
scripts/generate-spine.pyand its elaboration
rules/agent-reference/zetetic-spine.md. The prior wording — "every claim traces
to a source" — was direction-agnostic: it was satisfied equally by rigor (read a
source, derive the code from it) and by fabrication (write the code, then find a
resembling paper and attach the citation as post-hoc justification). Scientific
rigor is source-first: start from a factual, verifiable, demonstrable source and
produce the implementation from it. A citation attached after the fact to a
lookalike paper is fabricated proof, not evidence — even when the citation is real,
because the code was never derived from it. - Beat 2 now names three refused failure modes, backed by observed provenance audits
(invented arXiv ids, fabricated benchmark deltas, constants mislabeled with
unrelated papers): retrofitted citation (added after the code, chosen for
resemblance), resemblance ≠ prescription (a paper about your topic is not a
source for your specific value/equation unless it states it and its experimental
conditions match yours), and borrowed authority (a hardcoded constant wearing a
paper's name with no line the paper actually prescribes). The honesty discriminator
is the provenance comment written before the value plus an explicit
"engineering-default / hand-tuned" disclaimer when a value is not paper-prescribed —
never the citation alone. - No source → "I don't know" and stop is now explicit that this is a gate failure,
not a formatting gap to fill later: do not ship, then justify.
Notes
- Content-only change to the injected
<zetetic-spine>blocks; no tool, hook, or
memory-contract surface changed.scripts/generate-spine.py --checkis clean
(idempotent) and all seven release-gate memory suites pass locally.
v2.25.0
No CHANGELOG entry found for 2.25.0; using tag message
v2.24.0
Added
- New
simplifierteam agent (agents/simplifier.md). De-over-engineers code
that already works and breaks no hard rule but carries more complexity than its
problem requires — premature abstraction, needless indirection, speculative
generality, premature optimization, and drifted duplication. Distinct trigger from
refactorer: refactorer fixes hard-rule violations; simplifier removes
superfluous complexity that violates no hard rule (already-functional,
already-compliant code never invokes refactorer, so over-engineering needs its own
trigger — folding both into one agent would be an SRP violation in agent design).
Behavior-preserving (tests pass before and after, one simplification per commit),
stakes-calibrated, and language-/project-agnostic (idiom-mapping across Python,
TypeScript, Go, Rust, Java, Swift). Its over-engineering heuristics are an open,
non-exhaustive catalog (YAGNI, rule-of-three, needless indirection, premature
optimization, speculative generality, drifted duplication, plus KISS, Gall's Law,
Ousterhout shallow modules, dead code, boolean blindness, …) — each removal must
name and source its principle per the zetetic §8 standard. Newsimplifiermemory
scope (memory/scope-registry.json). - A2 / CR-4 — adversarial-verify pre-verdict workflow now carries a fifth,
perspective-diverse lens:simplicity(agentTypesimplifier), prompted to
REFUTE by hunting superfluous complexity that no hard rule forbids. Joins the four
existing refute lenses (residual-fp, missed-cases, robustness, test-adequacy);
synthesis stays deterministic and fail-closed. (The A2/adversarial-verify work
shipped in code prior to this release without a CHANGELOG entry; recorded here.)
Changed
code-reviewerMove 5 now hands off superfluous-complexity smells (over-
engineering with no hard-rule violation) tosimplifieras an advisory note,
distinct from the §4 size-breach blocking gate. Output format and blind-spot
hand-off list updated accordingly.- README badge, body,
CONTRIBUTING.md, and the marketplace plugin/metadata
descriptions refreshed: 97 reasoning patterns + 21 team agents (118 total).
rules/agent-routing-table.mdregenerated (118 agents). memory/scope-coverage.md: simplifier added to the team table; counts reconciled
to 20 scope-owning team agents, 117 tabulated agents, 27 distinct registry
scopes (7 systemic + 18 team + 1 research + 1 genius). This doc tabulates only
scope-owning agents, so its total is intentionally one less than the 118 agent
definition files the README/marketplace count —memory-writeris a scribe that
owns no scope. A new footnote in the doc records the distinction.
Tests
tools/tests/adversarial-verify/core.test.mjsupdated for the five-lens core
(lens count, lens-keys ordering, distinct-agentType count, five-element fixtures).
13/13 deterministic synthesis-core tests pass.
v2.23.0
Added
- CAP-2 — adapt to a demanding team lead. New
reviewer-prefsmemory scope
(memory/scope-registry.json) holding a lead's standing review preferences.
Owners are the lead (_user) and the orchestrator/curator; the reviewed agents
(engineer,refactorer,code-reviewer) are readers only, so an agent cannot
invent its own prefs. The three agents read the scope at the top of their workflow
with a fixed precedence — acoding-standards.mdblocking rule always outranks a
preference — and a graceful fallback when the scope is absent. tools/seed-reviewer-prefs.sh— bootstraps a lead's prefs from evidence of how
they already work (theirghreview comments + merged PRs), emitting a
provenance-taggedstatus: inferreddraft. It presents raw evidence only;
abstracting it into confirmed preferences is the lead/orchestrator's judgment step
(§9 — no faked judgment). Injection-safe, owner-only writes, deterministic exit
codes. 19-case test suite undertools/tests/seed-reviewer-prefs/.
Changed
- README badge,
assets/banner.svg,CONTRIBUTING.md, and the marketplace plugin
description refreshed to the current reproducible counts: 64 skills, 18 hooks,
35 tools, 25 commands, 97 reasoning patterns + 20 team agents (117 total),
288 tests.
Fixed
memory/scope-coverage.mdmiscount: thecheckpointssystemic scope was never
tabulated. Reconciled to 26 scopes (7 systemic + 17 team + 1 research + 1 genius);
the doc's embedded verification command now matches.
v2.22.0
No CHANGELOG entry found for 2.22.0; using tag message
v2.20.0
Added
- Closed-loop autonomous build (
.claude/workflows/autonomous-build-loop.js).
Drives a build task to a candidate on an isolated iteration branch:
refine → plan → verify-plan → orchestrator build → best-effort in-loop
acceptance checks → iterate until green or the budget is spent. Repo-generic —
repoPath,gateRunner, and an optional basegateConfigare inputs, so the
loop runs from any working directory against a repo that need not contain this
tooling. It drafts and converges a candidate; it does not self-certify. - Deterministic acceptance gate (
tools/acceptance_gate.py,
tools/acceptance-gate.sh). Runs configured command gates and aggregates
their exit codes — a gate passes iff its command exits 0, never a model grading
its own output (Huang et al., arXiv:2310.01798). Gates any repo via--root,
evaluates the committed tip via--diff-base/--diff-headin a throwaway
worktree, rejects an empty diff, and fails closed. Unit-tested under
tools/tests/acceptance-gate/(incl. external-repo-from-a-foreign-cwd and
fail-closed cases). - Real-exec Stop-hook gate (
hooks/stop-acceptance-gate.py) — the build
loop's gate component (invoked by the workflow, not registered as a global
lifecycle hook). - Self-hosted web ingestion engine (
tools/web_ingest.py,
tools/web_extract.py,tools/web-ingest.sh). A dependency-free replica of
Firecrawl's self-hostable core (scrape/map/crawl): stdlib fetch,
robots.txtrespected, main-content markdown extraction, conditional-GET
caching. No web search and no LLM extraction by design; TLS verification is
never disabled. - Query-indexed semantic layer over Cortex (
tools/semantic_layer.py,
tools/semantic-layer.sh,memory/semantic-layer.yaml,
memory/semantic-layer.schema.yaml). A YAML index keyed by query + intent
(ingest/verify/compare/monitor) withfresh/stale/
supersededstates. Never writes Cortex itself — the agent owns the write and
passes back thecortex_idas a pointer. - Manifest-membership gate (
tools/manifest_gate.py,tools/manifest-gate.sh,
tests undertools/tests/manifest-gate/). Fail-closed grounding check: every
fact'ssourcemust be a URL the web-ingest engine actually fetched this
session. Complements the semantic layer's presence check with a membership
check; a purestdin → stdoutfilter.
Changed
- README: broader refresh. Corrected counts to ground truth — agents
116 → 117 (a 20th team-role agent,memory-writer), skills 63 → 64; documented
the autonomous build loop and the new knowledge-ingestion / semantic-layer
subsystems; refreshed the genius-trigger source comment (recounted 2026-06-23). - Marketplace manifest counts refreshed (20 team agents, 64 skills,
25 commands, 24 logical tools, 17 registered hooks).
Fixed
web-ingestfollows 308 redirects and records the final resolved URL.- Manifest-gate comments reworded to satisfy the absolute-claim checker (§8).
v2.19.1
Fixed
- Release workflow no longer references a non-existent
tests/run-all.sh.
The tag-timerelease.ymlinvokedbash tests/run-all.sh, which has never
existed, so every tagged release failed at the test step with exit 127. It
now runs the same suite asci.yml(thescripts/test-memory-*.shand
scripts/test-agent-id-propagation.shsuites) plus the structural auditor. - Corrected the zetetic-checker invocation from the unsupported
--tree
flag to--full; valid modes are--staged,--files, and--full. - Added
jqto the release job's apt dependencies (required by the memory
suites, matching CI).