← Về thư mục
📄 / / proc / 256 / cwd / opt / ai-os / products / ceo / academic-research-skills / CHANGELOG.md

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]

Security

Fixed

Added

[3.16.0] - 2026-07-12 — Model tiering, cross-model gate hardening, WP advisory sharpening

Added

Changed

Docs

[3.15.0] - 2026-07-04 — Release-gate hardening, prompt-debt retirement round 2, defrift locks

Added

Changed

Fixed

[3.14.0] - 2026-07-02 — Claude Science importability, eval-comment rendering, prompt-debt retirement

Added

Changed

Docs

Rolled up from [Unreleased] (code landed before the v3.13.0 tag)

Provenance note: the entries below shipped in the repository between the v3.12.0 and v3.13.0 tags, but their changelog bullets had accumulated under [Unreleased] across releases. They are versioned here so the release record is complete — no new code ships with these bullets in v3.14.0.

Added

Changed

[3.13.0] - 2026-06-18 — Hook portability, provider-agnostic verification, guard correctness

Fixed

Added

Chore

[3.12.1] - 2026-06-15 — Reviewer-response triage modes (PR #433 integration)

Added

Credit

Integrated from @Yaobin29's PR #433. The original PR proposed a standalone reviewer-response skill; this release folds its genuinely-novel parts into existing skills as modes, per ARS's mode-based architecture. The rebuttal-audit mode rescues that PR's audit concept. Suite mode count 25 → 27 (still 4 skills).

[3.12.0] - 2026-06-08 — Kong auto-research feature track: experiment provenance, figure fidelity, cross-paper contradiction, partial-evidence decomposition

Added

Fixed

[3.11.1] - 2026-06-06 — Post-ship correctness, hardening, and provenance fixes (#182 follow-up)

A patch release rolling up the post-ship advisory fixes surfaced after v3.11.0: a cross-model consent-gate extension to the integrity + collaboration paths (#322), a per-entry backfill parallelization (#138), and seven correctness/hardening fixes across the citation-existence gate, the v3.10 policy layer, the eval harness, the domain evidence profiles, and the #310 security-boundary edge cases (#323/#327/#328/#329/#331/#332/#333). No new features and no breaking schema changes. One API note: the #332 verify_citation/ verify_passport signature gains required keyword-only parameters. This is a fix to a contract-violating code path that first shipped in v3.11.0, not a deliberate signature revision — the old signature emitted a schema-invalid ref_slug: null, so any v3.11.0 caller relying on it was already producing contract-invalid output. The only in-repo callers (the CLI + the internal verify_passportverify_citation call) are updated in lockstep; see the #332 entry below for the full C-V4 rationale.

Security

Performance

Fixed

[3.11.0] - 2026-06-04 — Deterministic citation verification gate (#182)

The v3.11.0 minor release ships #182 — a deterministic citation-existence verification gate that runs independently of LLM peer review. It cross-checks every cited reference against up to four bibliographic indexes (Semantic Scholar + OpenAlex + Crossref + the new arXiv resolver) and surfaces a per-citation lookup_verified status, so a fabricated citation with a provably-bogus DOI/arXiv ID is caught by deterministic lookup rather than by hoping a reviewer agent notices. The gate inherits the v3.10 terminal_policies opt-in model — default advisory, opt-in strict — rather than introducing a second hard-block philosophy: detection always runs and populates the summary, but a lookup_verified == false row is terminal only under terminal_policies.citation_existence == strict. Default behavior is non-blocking (advisory, /ars-mark-read-acknowledgeable); a user must opt into strict to make existence-failure terminal. The false definition is deliberately narrowed to ID-keyed unmatched (an exact DOI/arXiv lookup that provably fails), so a legitimately-unindexed humanities / non-English / regional citation with only a title-unmatched stays unresolvable and never blocks (C-V6(a); an acknowledged precision-over-recall tradeoff documented in the spec, mirroring strict_articles_only).

Five delta items (#182):

Lint + CI:

Spec: docs/design/2026-05-21-v3.10-182-promote-citation-gate-spec.md (§0 v3.11 amendment + INVARIANT C-V6).

[3.10.0] - 2026-06-01 — Triangulation policy layer, Kong et al. survey adoptions, eval harness, scoped-write guard

The v3.10.0 minor release bundles the opt-in contamination-triangulation terminal policy layer (#127 PR-B — default behavior byte-equivalent to v3.9.0), several Kong et al. 2026 survey adoptions (Rebuttal Commitment Ledger #256/#266/#268/#269, discipline-relative domain evidence profiles #259), the v3.10 measurement infrastructure (generalized eval gold set + ranking-lift gate, #184), the #134 scoped-write guard MVP (a deterministic PreToolUse hook fencing the 23 single-phase agents to their own phase directory; all Bash denied for those agents), the /ars-mark-read plugin commands (#190) + a broken-on-arrival fix (#195), a Simplified-Chinese README (#185), and CI hardening (#156/#155). Default citation-policy behavior is byte-equivalent to v3.9.0 unless a user opts into a strict mode (#127). The one default-on behavior change is #134's PreToolUse write-scope guard: the 23 single-phase agents are now fenced to their own phase directory and denied Bash — this constrains those subagents, not the user-facing skill outputs.

v3.10 triangulation policy layer (#127 PR-B — opt-in terminal modes, default behavior byte-equivalent to v3.9.0):

Added

Bug fixes (no version bump — corrects a broken-on-arrival behavior from #190):

Plugin commands (prep for v3.10 — no behavior change to existing skills):

v3.10 measurement infrastructure (prep for v3.10 — no behavior change to existing skills):

Localization (no version bump — no behavior change to skills):

CI / infrastructure (no version bump — no behavior change to skills):


[3.9.4.2] - 2026-05-19 — Post-ship hotfix for PR #149 CI discipline gates

Trigger: Codex post-ship review of PR #149 (7 CI discipline gates mechanizing the release-cycle review chain) surfaced 4 P2 findings. v3.9.4.2 hardens 3 of 4; the 4th (test-count-monotonic harden) was reverted because it surfaced a pre-existing scripts/ package issue, tracked as #154 (since fixed by PR #158) and re-attempt #155.

CI gate hardening (PR #149 + #153): - F1 — harness-retirement scheduler context: harness-retirement-monthly.yml adds GH_REPO so scheduled runs have repo context for gh issue create (workflow was silently failing on cron without it). - F2 — release-cooldown tag filter: release-cooldown.yml filters PREV_TAG lookup to v* tags so non-release tags (e.g., legacy plugin tags) cannot bypass the cooldown gate. - F3 — release-cooldown hot-fix detection: release-cooldown.yml also reads annotated tag subject + accepts the hot-fix spelling variant; v3.9.2 was previously a false-negative hotfix under the old detector. - F4 (reverted): test-count-monotonic.yml harden landed in 8121dfa and reverted in 4abf9de when it surfaced scripts/ package import errors (ModuleNotFoundError: No module named 'scripts') — pre-existing latent defect masked by the prior 2>/dev/null | || true pattern. Tracked as #154 (now closed by PR #158) and re-attempt #155.

Release-cooldown symmetry follow-up (PR #157): - Override token [skip-cooldown] now read from both the commit message AND the annotated tag message. This v3.9.4.2 tag itself is the self-bootstrapping fix — the gate correctly identified v3.9.4.1 (3h prior) as the previous hotfix and fired the 24h cooldown, proving F2+F3 work end-to-end. The override symmetry patch makes the tag shippable.

Closes: #152. Follow-ups: #154 (closed by PR #158), #155, #156.


[3.9.4.1] - 2026-05-19 — Post-ship hotfix for v3.9.4 temporal verification

Trigger: Codex post-ship review of v3.9.4 squash commit af09cf5 surfaced 4 real bugs that per-task subagent reviewers missed during v3.9.4 implementation. v3.9.4 tag remains immutable; v3.9.4.1 patches the verifier and schema layer + brings docs in alignment.

Bug fixes: - #135 P1 (audit wiring): audit() now passes citation_provenance through to _pass_2_anachronism and _pass_4_causal. When a ref slug has confidence: low or conflict in citation_provenance.yaml, the verifier emits TEMPORAL-METADATA-MISSING instead of using timeline dates as arithmetic ground truth. v3.9.4 dropped citation_provenance on the floor — spec §3.4 first-party safety check was structurally broken. - #135 P1 (date parser): _date_to_interval() now parses all schema-valid date shapes including YYYY-MM (Crossref month-precision output) and YYYY-MM-DD..YYYY-MM-DD (interval precision used by effective_date_range). v3.9.4 only handled day/year/prose-month forms — schema-valid month/interval shapes raised ValueError and P2/P4 silently skipped the check via the existing except ValueError: continue guard. - #135 P2 (P4 direct-date binding): P4 now binds each side of a causal trigger to either a <!--ref:slug--> marker OR a direct date capture in the sentence. v3.9.4 required refs on both sides, silently dropping sentences like "The 2026 policy enabled the 2020 rollout." bound_dates.source distinguishes timeline_ref from draft_capture; bound_refs is empty when both sides came from direct date capture. - #135 P2 (schema absent-property bypass): citation_provenance.schema.json confidence:high allOf branch now requires both crossref_issued and pdftotext_cover_first_line to be present in addition to non-null (then.required added). v3.9.4 used then.properties only, which doesn't fire when a property is absent — so entries with confidence:high and both source fields omitted silently passed validation.

Documentation: - docs/ARCHITECTURE.md updated from stale v3.8.0 baseline to v3.9.4.1; Section 8 Evolution Timeline filled in v3.8.1 / v3.8.2 / v3.9.0 / v3.9.1 / v3.9.2 / v3.9.3 / v3.9.4 / v3.9.4.1 entries; Section 9 Skill Modes table aligned to current versions. - Suite-version needles aligned across MODE_REGISTRY.md, README.md badge + tag URL + section heading, README.zh-TW.md badge + tag URL + section heading, academic-pipeline/SKILL.md frontmatter, .claude-plugin/plugin.json, scripts/check_spec_consistency.py expected-text constants, .claude/CLAUDE.md skill suite table.

Test count: 1549 → 1561 (+12 net new tests covering all 4 fixes, 0 regression).


[3.9.4] - 2026-05-18 — Temporal Verification Layer (advisory)

External motivation: Issue #135 — LLM next-token objectives are systematically blind to deterministic factual classes including temporal ordering. v3.9.4 adds a deterministic advisory verifier at the Phase 4 → 5 boundary covering 5 failure modes.

Mechanisms: - M1: new Phase 2 sibling timeline_extraction_agent owning phase2_investigation/timeline.yaml + phase2_investigation/citation_provenance.yaml - M2: Phase 4 → 5 deterministic verifier scripts/temporal_integrity_audit.py (5 passes) - M3: Temporal Integrity Iron Rule in report_compiler_agent + draft_writer_agent - M6-minimal: First-party Crossref issued + pdftotext cover verification - M7-minimal: Date provenance + comparator materialization - M5-stub: User-declared version_family_id only

Zero modification to literature_corpus_entry, claim_audit_result, claim_intent_manifest. bibliography_agent unmodified (F2 invariant). 3 new sidecar schemas (aggregate-level with $defs).

Coverage estimate: 55-70% baseline / 65-75% with M7 minimal (LLM extractor blindness on tuple extraction is structural; advisory architecture acknowledges this).

Out of v3.9.4 scope (deferred to v3.10): M4 reviewer integration, M5 full version discovery, M6 full PDF audit, M8 relation manifest, CC5 catalog-completeness semantics, hard-block policy, OpenAlex lookup.

Spec: docs/design/2026-05-18-ars-v3.9.4-temporal-verification-spec.md.


[3.9.3] - 2026-05-18 — Housekeeping (#128 §1-3, §5-6)

Pure refactor + one latent-bug fix carrying over from the v3.9.0 /simplify review backlog. The v3.9.0 cross-index triangulation client family (Semantic Scholar + OpenAlex + Crossref) shipped intentionally byte-equivalent across 3 client modules for code locality; now that the family is stable, the dedup prevents sibling drift when threshold tuning, normalization rules, or throttle measurement need adjustment.

Refactor — extracted helpers (no behavior change)

Latent-bug fix — throttle measurement standardized on time.monotonic

Dual-path import infrastructure

Deferred from #128

Regression status


[3.9.2] - 2026-05-18 — Phase boundary hot-fix (#133)

Hot-fix for issue #133 (phase scope inflation). A user incident showed that ARS auto-dispatched a single-phase agent (bibliography_agent) when given ambiguous cross-phase input (pre-written abstract + pre-collected literature), and the dispatched agent then autonomously executed Phases 3-6, skipping mandatory independent crosschecks (DA / EIC / Ethics).

This release ships the prompt-discipline + advisory-verifier hot-fix. The deterministic gate (PreToolUse hook + multi-phase task envelope schema + author provenance) is tracked separately as v3.10 active conductor (#134) — long-term architectural fix.

Design history: 4 design rounds (v1-v4) + mid-impl review. Triple-track reviewer use cases (codex review --base main + inline opus subagent + self-review). Codex 0.130 broke on this repo context 5x consecutive per memory feedback_codex_0_130_docs_review_broken.md (49 files / 1529 lines on full branch is firmly in the broken corner); inline opus was the substantive reviewer throughout. Net effect: design has been challenged thoroughly; honest framing applied where prompt-only mitigation is known insufficient.

Added

Fixed

Tests

Out of scope (carry to v3.10 conductor, issue #134)

Migration notes

Existing in-flight projects: no break expected. v3.9.2 only adds prompt sections and an opt-in advisory verifier. Existing slash commands (/ars-*) continue to work without change.

User-facing behavior change: if you previously dropped pre-existing materials (abstract + literature) into a fresh session without invoking a specific slash command, ARS may now clarify with a-d options instead of silent dispatch. To bypass clarification for direct agent dispatch, prefix your first message with [direct-mode]. To run the full pipeline on pre-existing materials, invoke /ars-full.

If you see a Bucket B multi-phase agent (devils_advocate, report_compiler, argument_builder, visualization) producing out-of-scope content, this is a known v3.9.2 limitation — recurrence is expected for these 4 agents until v3.10 envelope ships. Remediation: switch to orchestrator-driven Mode A via /ars-full or report the case to issue #134 with transcript excerpt.


[3.9.1] - 2026-05-18 — v3.9.0 client hardening (#129 + #130)

Two-bug hotfix surfaced by codex review of ars-codex PR #13 (vendor sync to v3.9.0 74413a4). Both bugs exist in v3.9.0 main: #129 violates the v3.9.0 §3.7 per-API degradation contract; #130 crashes a defensive lint on malformed input. Neither changes the spec or schema.

Fixed

Tests

Out of scope


[3.9.0] - 2026-05-17

Added

Design philosophy

Migration path

Review trail


[3.8.2] - 2026-05-17 — #118 uncited audit_tool_failure surface

Fixes the #118 carry-over from #103 R3 codex P2 #5. The ARS_CLAIM_AUDIT=1 uncited constraint-judging path used to silently substitute {"judgment": "NOT_VIOLATED", "rationale": "..."} on JudgeInvocationError, suppressing HIGH-WARN constraint checks on transient judge outage (judge timeout, API 5xx, network error, etc.). v3.8.2 routes those failures through a dedicated uncited_audit_failures[] aggregate at MED-WARN advisory tier, mirroring INV-14 semantics on the cited path but using a separate schema because claim_audit_result.ref_slug is required and the uncited path has no ref to bind.

The #118 issue body listed four candidate options. Option 1 (extend constraint_violation.schema.json) would have broken the judge_verdict: const VIOLATED invariant and re-derived every CV-INV. Option 3 (overload uncited_assertions[] with a fault_class field) would have polluted the D4-c LOW-WARN advisory channel with audit-time infrastructure signal. Option 4 (re-raise JudgeInvocationError and abort the audit pass) would have dropped audit coverage for the entire run on a single transient outage — bad UX for N>50 papers running against flaky judge endpoints. Option 2 (new aggregate) ships here: structural honesty, schema integrity preserved, audit coverage preserved.

Added

Changed

Fixed

Review trail

Single-PR ship after spec → TDD → impl. UAF schema design followed the design-phase brainstorming rule: option 1-4 trade-off analysis happened in conversation with the user before any code, captured in a local gitignored decision memo. Implementation followed strict TDD RED → GREEN — 15 schema/lint tests + 3 pipeline tests all failed in their intended way (no schema file, no lint logic, swallow site still active) before the schema, lint, helper, and pipeline change landed. No regression on the 694 pre-existing tests.


[3.8.1] - 2026-05-17 — claim_audit lint hardening (#119 + #120 4×P2 closure)

Defense-in-depth patch on ARS_CLAIM_AUDIT=1 opt-in lint paths. Five fixes carried over from #103 R6 + R8 independent review, consolidated into one v3.8.1 release. No schema semantic change, no behavior change for well-formed payloads — pre-fix surfaces all crashed the CLI with TypeError / AttributeError instead of returning actionable lint findings or routing through the INV-14 audit_tool_failure translation boundary.

Fixed

Tests

Design memo

A local, gitignored design memo carries the option-1 vs option-2 analysis, CV-INV-4 dedupe key shape rationale, and the release-framing decision.

Closes #119. Refs #120 P2-1, P2-2, P2-3, P2-4 (all four R8 findings).


[3.8.0] - 2026-05-16 — L3 Claim-Faithfulness Locator + Audit (v3.7.3 + #103 paired milestone)

v3.7.3 + v3.8 close the L3 (claim-faithfulness) gap end-to-end. v3.7.3 ships the locator infrastructure (every citation carries a three-layer anchor so the audit can fetch the cited passage); v3.8 ships the audit pass that consumes those anchors, judges whether the cited source supports the claim, and gate-refuses HIGH-WARN violations at the formatter terminal hard gate. The release also bundles 5 audit-trail-shipped feature PRs accumulated on main since v3.7.0 (#104 / #105 / #108 / #111 / #115). External motivation: Zhao et al. arXiv:2605.07723 (2026-05) — 146,932 hallucinated citations across arXiv / bioRxiv / SSRN / PMC in 2025.

#103 — v3.8 claim ↔ reference faithfulness audit agent (2026-05-16)

Parent issue: #103 — closes the L3 (claim-faithfulness) gap left open by v3.7.3 (which closed the locator-channel half). Spec: docs/design/2026-05-15-issue-103-claim-alignment-audit-spec.md + decision doc docs/design/2026-05-15-issue-103-claim-alignment-audit-decision.md (D1-D6 settled).

Why: Zhao et al. arXiv:2605.07723 (2026-05) shows 146,932 hallucinated citations across arXiv / bioRxiv / SSRN / PMC in 2025; v3.7.3 stopped the "no locator" path but a present-but-wrong claim ↔ source mismatch was still undetected. v3.8 adds a Stage 4→5 audit pass that judges every sampled citation against its retrieved excerpt, emits 5 new passport aggregates, and drives 5 new HIGH-WARN annotation classes through the formatter terminal hard gate.

New components:

Review trail (Step 13 dual-track, 2026-05-16): 8 rounds codex (gpt-5.5 xhigh) + 1 round Gemini 3.1-pro-preview before Gemini quota exhausted. Trajectory R1 4P1+2P2 → R2 0P1+3P2 → R3 0P1+5P2 → R4 2P1+2P2 → R5 0P1+2P2+1P3 → R6 1P1+1P2 → R7 1P1+1P2+1P3 → R8 0P1+4P2 → ship. Per feedback_codex_review_surface_loop_design_phase.md design-phase P2 noise floor doesn't auto-converge; the user declared ship signal at R8 with all P0/P1 closed and 4 R8 P2 carried over to v3.8.1 (#120).

Carry-over follow-up issues:

Regression baseline (post-ship):

#115 — Semantic Scholar client maturity: throttle + outage latch (2026-05-15)

Parent issue: #115 — follow-up to #105 PR codex round-5 [P2]×2 findings (R5-2 throttle + R5-3 outage latch). Both deferred during #105 ship per architectural-inflection discipline; this entry closes the SS-client maturity gap.

Modified files:

Production behavior change:

Out of scope: migration tool (migrate_literature_corpus_to_v3_7_3.py) — #105 partial-fill / provenance contract correct as shipped. Protocol doc — already correct; this issue is implementation alignment.

Regression: 472 unittest (+8 #115 tests) + 201 pytest adapters + spec_consistency + preprint_venues all green.

#105 — v3.7.3 contamination_signals backfill migration tool (2026-05-15)

Parent issue: #105. Spec anchor: v3.7.3 §3.2 R-L3-2-B (the deferred batch operation; bibliography_agent computes signals at ingest, this tool delivers post-hoc backfill on legacy corpora). Design: docs/design/2026-05-15-issue-105-contamination-signals-backfill-design.md.

New files:

Modified files:

Open-question resolutions (user-chosen 2026-05-15):

Spec discipline (per v3.7.3 R-L3-2-B):

Files explicitly NOT touched:

Regression status: 1053 #108 baseline + 17 #111 baseline + 25 resolver + 9 migration + 3 schema = 1107 total. All green. No regression on the existing 4 allOf cross-field invariants (manual exemption + preprint year=2024 boundary verified by adapter pytest).

#104 — README motivation: add Zhao et al. corpus-scale evidence anchor (2026-05-15)

Parent issue: #104. Doc-only — no code changes.

Adds a third evidence anchor to the ### Why human-in-the-loop, not full automation? README section, between the ARS positioning paragraph and the PaperOrchestra paragraph. Closes the gap where v3.7.x trust-and-locator machinery appeared in the codebase without its corpus-scale motivation surfaced in the public-facing README.

Modified files:

Three motivation anchors now read in sequence:

Discipline (#104 acceptance criteria):

#111 — slr_lineage emission on systematic-review → academic-paper full handoff (2026-05-15, unreleased)

Parent issue: #111, follow-up to #108 (PR #110, merged 70c8678) round-8 P2 #1. Design: docs/design/2026-05-15-issue-111-slr-lineage-emission-design.md.

Version label v3.7.4 below is provisional and will be confirmed at the next release sweep per feedback_version_bump_sweep_checklist.md. If this work ships as part of v3.7.3 (the in-progress release at writing time), the version stamps in this entry and the prose files below are swept to the final label at release tag.

Closes the pipeline-plumbing gap surfaced by #108: disclosure --policy-anchor=prisma-trAIce now dispatches automatically when the documented deep-research systematic-review → academic-paper full → disclosure path runs, without the user manually supplying mode=systematic-review at cold-start.

New files added:

Modified files:

Files explicitly NOT touched (matches #111 §Scope out-of-scope):

G1 boundary clarification: Decision Doc §4.4 #11 G1 invariant scope is literature_corpus_entry.schema.json (corpus entry data schema). Schema 9 Material Passport top-level extensions follow the v3.6.3 (reset_boundary[]) / v3.6.4 (literature_corpus[]) / v3.6.7 (audit_artifact[]) precedent and are permitted per Decision Doc §4.4 #11's "non-renderer code changes for §4.4 concerns are permitted" provision.

Backward compat: passports written by pre-v3.7.4 runs lack the slr_lineage field; renderer treats absence as false (cold-start path requiring explicit mode_param='systematic-review'). Identical to pre-v3.7.4 behavior.

Regression status: 1053-baseline frozen (no #108 contract drift); +17 new tests cover this issue's acceptance criteria #1-#3 plus codex round-1 [P2] (monotonic-OR emit across resume).

#108 — AI disclosure policy-anchor renderer (2026-05-14, audit-trail-shipped)

Parent docs: Decision Doc (docs/design/2026-05-14-ai-disclosure-schema-decision.md, PR #109, merged commit 20ed72d) + implementation spec (docs/design/2026-05-14-ai-disclosure-impl-spec.md).

Migration note (G1 + G6 invariants): no migration required. Decision Doc §2.1 G1 invariant: no ai_disclosure field is added to shared/contracts/passport/literature_corpus_entry.schema.json. Decision Doc §3 G6: no deprecation horizon — legacy entries (which by §1 fact-check do not carry any AI-disclosure field today) stay byte-equivalent. The implementation extends the runtime renderer path, not the data schema.

New files added:

Modified files:

§4.4 11 open concerns resolved (4 user-chosen, 7 inline; full table in impl spec §3): 1. Track-selection lookup: explicit slr_lineage input from pipeline orchestrator (user-chosen). 2. Tool identity collection: auto-detect from session metadata (mirror v3.2 Phase 4). 3. Prompt scope: per-(tool × task) tuple per PRISMA M6.a. 4. IEEE section locator: free-form list with recommended IMRaD exemplars. 5. Nature image metadata: hybrid output channel (annotation block + suggested inline patches) (user-chosen). 6. UNCERTAIN per-facet finalization: USED-full + per-facet annotation alongside still-UNCERTAIN (user-chosen). 7. Venue+anchor conflict: reject conflicting selectors with explicit error. 8. Three-state completeness flag: full computation logic encoded in §6 of protocol doc. 9. Test set scope: 86 new tests covering 8 invariants + 10 concerns × {positive, negative}. 10. ai_used:true substantive-content gate: force v3.2 categorization flow (user-chosen). 11. G1 invariant scope: data layer untouched; non-renderer pipeline plumbing permitted.

Known follow-up (out of #108 scope): the academic-pipeline orchestrator does not yet emit slr_lineage on the documented systematic-review → academic-paper full handoff. Authors targeting --policy-anchor=prisma-trAIce must supply mode=systematic-review manually until that plumbing lands in a separate PR (touches academic-pipeline/ + shared/handoff_schemas.md, outside §4.1 items 1-5 NO-CHANGE boundary).

Regression status: 967 baseline + 86 new tests = 1053 passing / 3 skipped / 0 failed. Public-repo boundary clean. Eight rounds of codex gpt-5.5 xhigh review (R1 4 P2 → R8 2 P2); shipped audit-trail-complete per user decision rather than pushing past Decision Doc 11-round high water mark. R8 P2 #1 captured as the known follow-up above.

v3.7.3 — claim faithfulness locator + contaminated-source advisory (2026-05-12, in progress)

External motivation: Zhao, Wang, Stuart, De Vaan, Ginsparg, Yin "LLM hallucinations in the wild: Large-scale evidence from non-existent citations" (arXiv:2605.07723, 2026-05). Corpus-scale audit of 111M references across 2.5M papers across arXiv / bioRxiv / SSRN / PMC finds 146,932 hallucinated citations estimated for 2025 alone, with the inflection point at mid-2024, 85.3% of preprint hallucinations surviving into the published record, and Google Scholar increasingly indexing citation-only entries. The paper names the L3 (claim faithfulness) gap explicitly: "real citations deployed to support claims the cited references do not actually make ... remains an open challenge for which reliable detection methods remain under active development." v3.7.3 closes the locator-channel half of that gap (anchor infrastructure for future L3 audit) and surfaces two contamination signals (preprint post-LLM-inflection + Semantic Scholar unmatched) as advisory cite-time markers.

L3-1 — Three-Layer Citation Emission (claim faithfulness locator):

L3-2 — Contaminated-source advisory signals:

Lint + tests:

Regression status (final, post round-10 convergence): 967 tests pass, 3 skipped, 0 failed (42 new tests across rounds 1-10 fixes; pre-review baseline was 925). v3.6.7 + v3.6.8 + v3.7.1 + v3.7.2 lints all PASS unmodified. v3.6.7 PATTERN PROTECTION blocks remain byte-equivalent (SHA gate v2 unchanged). Material Passport literature_corpus_entry schema backward compatible (new contamination_signals field optional; cross-field rules only fire when explicitly set). New v3.7.3 lint wired into spec-consistency.yml CI workflow per F18.

Cross-model review closure (2026-05-12, 11 rounds total — 10 codex + 1 gemini cross-model):

Round Reviewer Findings Closures
1 (initial) Codex 0 P1 / 2 P2 F3 (untracked artifacts → closed at commit), F4 (NO-LOCATOR acknowledgment contradiction → removed /ars-mark-read promise from formatter+finalizer+spec Q5)
1 (initial) Gemini 3.1-pro-preview 2 P1 / 2 P2 / 1 P3 F1 (hyphen-encode → 3 prompts + lint + 3 tests), F2 (whitespace/newline tolerance → finalizer clarification + 4 tests), F5 (year<2024 schema cross-field → allOf + 4 tests), F6 (venue list 6 → 10 added ChemRxiv / EarthArXiv / OSF Preprints / TechRxiv), F7 (fenced code block isolation → helper + 4 tests)
2 Codex 0 P1 / 2 P2 F8 (lint regex widened to {0,2} suffix tokens → 3 tests), F9 (empty non-none anchor value rejection → 5 tests)
3 Codex 0 P1 / 2 P2 F10 (premature HTML comment terminator sentinel scan → 3 tests), F11 (schema manual-entry exemption → 4 tests)
4 Codex 0 P1 / 1 P2 / 1 P3 F12 (orphan_pattern lookbehind removed → 3 tests), F13 (schema venue list description sync 6 → 10)
5 Codex 0 P1 / 1 P2 F14 (malformed ref broad-scan detector → 4 tests)
6 Codex 0 P1 / 1 P2 F15 (prompt-vs-lint alignment on -- rule → 2 tests; prompts loosened to match lint's narrower contract)
7 Codex 0 P1 / 3 P2 F16 (finalizer status-suffix-tolerant for revision-loop reruns), F17 (standalone deep-research self-gate), F18 (CI workflow wires v3.7.3 lint into spec-consistency.yml)
8 Codex 0 P1 / 3 P2 F19 (decode value before empty check → 3 tests), F20 (formatter raw anchor:none gate), F21 (F17 self-gate scoped to standalone mode only via prompt mode-detection)
9 Codex 0 P1 / 1 P2 F22 (self-gate also rejects bare refs without anchor — parity with pipeline finalizer's precedence-zero "no anchor = anchor=none" rule)
10 (final) Codex 0 findings Convergence achieved.

Out of v3.7.3 scope (tracked as follow-up issues):

Spec: docs/design/2026-05-12-ars-v3.7.3-claim-faithfulness-and-contaminated-source-spec.md.

Backlog — gbrain harness borrow analysis (2026-05-10, post codex review)

Source: 2026-05-10 analysis of garrytan/gbrain (14.2k★ agent harness for OpenClaw/Hermes), with codex cross-model review same day. Two candidates surfaced; they have different risk profiles and are tracked separately.

Candidate A — Shared shared/_invariants.md cross-skill rules file (gbrain pattern P3). Status: backlog, low-risk.

ARS cross-cutting rules are scattered today: Iron Rules in adapter overview, hedging contract in protected_hedging_phrases.md, citation precedence in agents' frontmatter, integrity gates referenced from multiple SKILL.md. When a rule evolves (e.g. v3.6.5 corpus protocol Iron Rules), secondary mentions drift.

Shape if adopted: - shared/_invariants.md enumerating positive invariants only (no rejected-reasoning column; that was the contamination vector in the 2026-05-10 anti-pattern-table evaluation) - File stays short, normative, and example-free — additional examples turn invariants into demonstrations and re-introduce few-shot drift - Each SKILL.md references it via a stronger convention than ## See Also (which reads as optional reading); proposed wording at adoption time - Frontmatter validated_against: <version> enables a stale-reference grep job on minor bumps. The grep job detects version drift only — it does NOT validate semantic compliance. Semantic checks remain a human / codex review responsibility.

Candidate B — Declarative shared/_review_pairs.yaml cross-model review config (gbrain pattern P6). Status: needs design spike before becoming a real candidate, higher-risk.

ARS cross-model review is currently invoked imperatively: ARS_CROSS_MODEL=1 env flag + manual codex review per phase. A declarative (deliverable_kind, reviewer_model, dimensions, when_to_invoke) map could improve reproducibility for Stage 2.5 / 4.5 integrity gates and Phase 6 in-pair evaluator review.

Three open problems before this is shippable: 1. Refusal-routing semantics conflict. gbrain's chain (primary → DeepSeek → Qwen → Groq, silent switch) routes past refusal; ARS treats reviewer disagreement as signal. Borrowing the YAML format without resolving this imports the wrong invariant. Likely answer is "borrow the declarative-pairing shape, drop the refusal-routing chain entirely." 2. Embedding governance in config. A YAML that decides "this deliverable triggers this reviewer with these dimensions" is workflow policy. Wrong shape locks in a bad routing decision across all phases. Needs a usage survey of existing manual invocations before designing the schema. 3. Lower confidence than Candidate A. ARS already has review phases and cross-model invocation working manually; the missing piece is reproducibility, not the capability. If manual invocation isn't causing missed reviews or inconsistent reviews in practice, this should drop too.

Rejected from same gbrain analysis: P1 RESOLVER.md dispatcher (10 slash commands serve dispatch), P4 trust boundary (research tool, no untrusted caller class), P5 pain-triggered subagent routing (covered in user CLAUDE.md, repo-level not relevant). P2 friction protocol is a soft reject — codex review pointed out a first-class friction CLI captures pain at the moment of pain, which 5+ round codex review at deliverable-time does not. Re-examine if ARS skill development surfaces recurring author-time pain that retrospective review doesn't capture.

Meta-lesson from this analysis: "we already do something adjacent" is weaker than it sounds as a reject reason. The test is whether the existing mechanism captures the same signal at the same time with the same enforcement strength.

Added (v3.6.7 Step 6 Phase 6.8 — Step 8 evaluation case)

Notes

[3.7.0] - 2026-05-05

Claude Code plugin packaging. ARS now installs in one line on Claude Code CLI / VS Code / JetBrains via /plugin marketplace add Imbad0202/academic-research-skills + /plugin install academic-research-skills. The traditional git clone + symlink to ~/.claude/skills/ flow continues to work — both tracks are first-class.

Added

Deferred (future release)

Changed

Unchanged

The four skill directories, all 25 modes, agent prompts, schema files, and lint contracts. Plugin packaging only adds new top-level surface (commands/, agents/, hooks/, .claude-plugin/, skills/ symlink dir, three plugin-agent model: inherit frontmatter additions). Existing 4.3k clone-install users see no breaking change.

Codex review chain

8 inline iterative rounds + 3 fresh PR-level rounds across the three PRs (#68 / #69 / #70), all converging to 0 P0/P1/P2 findings before merge. The Phase 2.2 fresh PR review caught one P2 (unquoted ${CLAUDE_PLUGIN_ROOT} breaking install paths with spaces) that the inline rounds missed — confirms the value of separating implementation review (inline) from contract / install-time review (fresh). Reference: feedback_codex_review_vs_resume_audit_scope.md.

[3.6.8] - 2026-05-03

Naming note: this release ships the v3.6.6 generator-evaluator contract spec (docs/design/2026-04-27-ars-v3.6.6-generator-evaluator-contract-design.md) and its implementation. The v3.6.6 work landed after v3.6.7 due to project sequencing; the design doc retains the v3.6.6 internal naming for the contract gate version (writer_full / evaluator_full mode, Schema 13.1, pre_commitment_artifacts + disagreement_handling schema fields), while the suite release is tagged v3.6.8 to keep the CHANGELOG monotonic.

Added

Changed

Deferred

[3.6.7] - 2026-04-30

Added

Changed

Notes

[3.6.5.2] - 2026-04-27

Changed

Notes

[3.6.5.1] - 2026-04-27

Fixed

Notes

[3.6.5] - 2026-04-27

Added

Changed

Notes

[3.6.4] - 2026-04-25

Added

Changed

Not changed (explicit non-goals)

[3.6.3] - 2026-04-23

Added

Changed

Changed (post-P1 fixes)

Notes

[3.6.2] - 2026-04-23

Added

Changed

Notes

[3.5.1] - 2026-04-22

Added

Changed

Version

[3.5.0] - 2026-04-21

Added

Changed

Notes

[3.4.0] - 2026-04-20

Added

Changed

Notes

[3.3.6] - 2026-04-15

Added

Changed

Notes

[3.3.5] - 2026-04-15

Added

Changed

[3.3.4] - 2026-04-15

Fixed

Changed

[3.3.3] - 2026-04-15

Fixed

Changed

[3.3.2] - 2026-04-15

Added

Changed

[3.3.1] - 2026-04-14

Fixed

Added

[3.3] - 2026-04-09

Added — PaperOrchestra-inspired enhancements

Integrates techniques from Song et al. (2026, arXiv:2604.05018) "PaperOrchestra: A Multi-Agent Framework for Automated AI Research Paper Writing."

Version bumps: deep-research v2.8, academic-paper v3.0, academic-pipeline v3.2

[3.2] - 2026-04-09

Added — Lu 2026 integration

Integrates insights from Lu et al. (2026, Nature 651:914-919) — the first end-to-end autonomous AI research system to pass blind peer review.

Changed

Version bumps: academic-paper v2.9, academic-paper-reviewer v1.8, academic-pipeline v3.1

[3.1.1] - 2026-04-09

Added

[2.9.1] - 2026-04-03

Added

[2.9] - 2026-03-27

Added

Fixed

[2.8] - 2026-03-22

Added

[2.7.3] - 2026-03-10

Fixed

[2.7.2] - 2026-03-10

Added

[2.7.1] - 2026-03-10

Fixed

[2.7] - 2026-03-09

Added