| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| feat(review-form): fixed-point reminder that the author decides the review form (#921) (#922) Whether to run a systematic review is the author's decision. ARS now shows one fixed note listing five review forms (systematic, scoping, narrative or integrative, rapid, no formal review), each with one line on what it serves and roughly what it costs, with no default, ranking, or recommendation. - shared/references/review_form_note.md holds the rules and the note text in English and Traditional Chinese; every other language gets the English text. deep-research/SKILL.md and academic-paper/SKILL.md carry the block verbatim. - The note appears at the first of two author actions: selecting lit-review mode, or confirming the research question (full mode's RQ Brief before Phase 2, or the Socratic closing RQ Brief or RQ Summary). It never depends on the question's content, is skipped when the author already named a form, and appears at most once per project or run. The session waits for the reply; skipping counts as a decision. With a passport file the note and the reply go to the run ledger as a review-form-note checkpoint, and an unanswered checkpoint is resumed rather than reopened. - Paths that could move into systematic-review mode on the model's reading now require the author's choice (three-way-scan escalation, the lit-review -> systematic-review transition, lit-review trigger examples), and requests to conduct a systematic review no longer route to academic-paper lit-review. - scripts/check_review_form_note_sync.py keeps the copies byte-identical and checks each note's five labels, order, neutrality sentence, quoting, ranking words, and selection marks; 34 mutation tests; wired into spec-consistency and the pytest manifest. - Routing fixtures 13-16 add the negative case, its content-independence pair, a named-form case, and a broader-synthesis case; 02 and 04 now expect the note. The fixtures have not been run; session behaviour is prompt-level and unmeasured. Cost lines are sourced in the canonical file (Borah et al. 2017; Tricco et al. 2018; Garritty et al. 2021; Whittemore & Knafl 2005). Cross-model review (gpt-6-astra, xhigh) converged in three rounds: 9 -> 2 -> 0 P1/P2. Closes #921 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 1 个月前 |
| feat(reviewer): check the panel's findings against the manuscript (#1002, part two) (#1017) * feat(reviewer): check the panel's findings against the manuscript (#1002) An advisory attachment to the Editorial Decision Letter. After the decision is final, the session sends the five Phase 2 reports' findings and the manuscript to one subagent with the part 1 auditor prompt, seats hidden behind neutral ids. scripts/audit_panel_claims.py builds the prompt and renders the reply; a false verdict shows as contradicted only when its quote passes the part 1 mechanical check. The report never changes the decision, the consensus counts, or the roadmap. ARS_PANEL_CLAIM_CHECK=0 turns it off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(reviewer): name the tested judge models in the attachment; CHANGELOG (#1002) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(changelog): match the #1002 entry to the skill text Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): claim check review round 1 (duplicates, unread seats, one-pass prompt, CLI stops, blinding wording) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): count only string claim ids (review round 2) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(reviewer): the #1001 attachment now precedes the #1002 claim check Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): claim check security review round 1 (literal letter text, quote-only wording, unreadable W headings) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): claim check security review round 2 (Severity lines outside W headings, quote-words-only wording) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): claim check security review round 3 (Severity lines read by position) The scoring-report check now walks the Review Body line by line, as w_claims does. A Severity line must sit under a heading that w_claims reads; a heading line is a title and does not count. Matching totals could no longer hide a finding under an unreadable heading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(reviewer): claim check summary counts answered findings, wrapped quotations, tested models The summary now says how many findings the judge answered, not only how many there were. A quotation in a finding can wrap onto the next line. The note names every model that passed the #1002 contrast test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 10 天前 |
| docs(guard): state the write-scope fence's actual coverage; pin real hook payloads (#973) (#974) Closes #973 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 22 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(guard): state the write-scope fence's actual coverage; pin real hook payloads (#973) (#974) Closes #973 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 22 天前 |
| docs(models): support Claude Opus 5.5 alongside Fable 5.1 (#883) (#884) Two-reader audit of the Claude Opus 5.5 system card (audits/harness-retirement-2026-09-opus-5-5.md); no guardrail retired. The docs name both session models with effort, cost, tiering, and paste guidance; shared/model_tiering.md defines family and tier and corrects the classifier-fallback note; the revision coach inlines the instruction/data boundary (DG-1), with the lint's mutation tests parametrized over every hot-spot agent; docs/RISK_REGISTER.md R1/R3/R5/R11 point to the new evidence. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SK9a1EanckyNXLe1ZdGXEx | 1 个月前 |
| feat(review-form): fixed-point reminder that the author decides the review form (#921) (#922) Whether to run a systematic review is the author's decision. ARS now shows one fixed note listing five review forms (systematic, scoping, narrative or integrative, rapid, no formal review), each with one line on what it serves and roughly what it costs, with no default, ranking, or recommendation. - shared/references/review_form_note.md holds the rules and the note text in English and Traditional Chinese; every other language gets the English text. deep-research/SKILL.md and academic-paper/SKILL.md carry the block verbatim. - The note appears at the first of two author actions: selecting lit-review mode, or confirming the research question (full mode's RQ Brief before Phase 2, or the Socratic closing RQ Brief or RQ Summary). It never depends on the question's content, is skipped when the author already named a form, and appears at most once per project or run. The session waits for the reply; skipping counts as a decision. With a passport file the note and the reply go to the run ledger as a review-form-note checkpoint, and an unanswered checkpoint is resumed rather than reopened. - Paths that could move into systematic-review mode on the model's reading now require the author's choice (three-way-scan escalation, the lit-review -> systematic-review transition, lit-review trigger examples), and requests to conduct a systematic review no longer route to academic-paper lit-review. - scripts/check_review_form_note_sync.py keeps the copies byte-identical and checks each note's five labels, order, neutrality sentence, quoting, ranking words, and selection marks; 34 mutation tests; wired into spec-consistency and the pytest manifest. - Routing fixtures 13-16 add the negative case, its content-independence pair, a named-form case, and a broader-synthesis case; 02 and 04 now expect the note. The fixtures have not been run; session behaviour is prompt-level and unmeasured. Cost lines are sourced in the canonical file (Borah et al. 2017; Tricco et al. 2018; Garritty et al. 2021; Whittemore & Knafl 2005). Cross-model review (gpt-6-astra, xhigh) converged in three rounds: 9 -> 2 -> 0 P1/P2. Closes #921 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 1 个月前 |
| fix: block missing required inputs in the state machine; drop ranking from the Socratic example (#990, #992) (#994) The Missing Materials section of pipeline_state_machine.md let the user skip a required input at their own risk, while handoff_schemas.md rule 5 and the state tracker's gap table block the transition. The section now follows the state tracker: required inputs return HANDOFF_INCOMPLETE and are backfilled, recommended inputs do not block, and integrity checks still cannot be skipped. The #528 content lock is updated. The Socratic mentor's direct-answer example praised the user's "second idea", which the Research-Question Authorship Boundary forbids. It now asks which of the user's own directions they most want to understand. The ideation-diversity non-production variant pins the new source hash. Closes #990 Closes #992 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 14 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| feat(evals): Claude Opus 5.5 and Fable 5.1 pass the #1002 contrast gate (plan v10) (#1016) * feat(evals): contrast-only Claude judges for the #1002 part-two judge test (plan v10) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(evals): check the Claude judge's temp folder chain before the lock (round 1) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(evals): record the plan v10 contrast results for the Claude judges Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(changelog): plan v10 contrast test (#1002) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(evals): a Claude reply needs exactly one successful result event (review round 1) Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(evals): state the one-result rule in plan v10 Refs #1002 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 10 天前 |
| docs(readme): correct front-page and showcase claims to match the evidence (#908) * docs(readme): correct front-page and showcase claims to match the evidence - Tagline: say that ARS can draft a whole paper in full mode, that the pipeline stops for confirmation at every stage, and that the user remains the author and answers for every submitted claim. - Showcase: add a version note (academic-pipeline v2.3, March 2026; the current gates were not measured on this paper; why the byline names Claude); drop the 10-stage label; restate the Stage 2.5 counts as the report gives them (8 bibliographic errors, 6-8 likely fabricated); describe the post-publication audit as a Claude Code + WebSearch run that found problems in 21 of the 68 final references, 19 of which were removed or corrected; call the Round 1 panel role-separated reviews generated by Claude, not independent reviews. - Calibration (README, ARCHITECTURE): the gold set has 25 synthetic tuples, the shipped test uses a stub judge that returns the gold labels, and no live-judge result is recorded. - Pipeline section: "guarantees" becomes rules that are protocol, not runtime guarantees; Schema 11 maps each reviewer concern to the author's revision claim and records whether re-review verified it. - Cost and time (QUICKSTART, README cost pointer): use the 2026-09 list-price estimate from docs/PERFORMANCE.md (about US$3-7 per run, before cache discounts); collaborative work spans hours to days. All six README locales carry the same changes, per the README sync rule in CONTRIBUTING.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(readme): keep the audit row's translations as neutral as the English The English row says 21 of the 68 final references still had problems after three rounds of integrity checks. The zh-TW, zh-CN, ja-JP, and ko-KR rows said the checks missed those problems, which is stronger: several of the affected references had been flagged at Stage 2.5 and marked FIXED before the audit found other errors in them. The four rows now say the problems remained after the three rounds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(changelog): record the front-page claim corrections (#908) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 1 个月前 |
| fix(guard): one Python process per tool call (#1015) (#1019) * fix(guard): launch Python through py -3 once per tool call, not three times (#1015) On Windows, each launch through the py App Execution Alias makes AppXSvc run an update check that leaks memory. The launcher's probe now prints sys.executable, and the guard run and the JSON check use that path. With no usable path they use the candidate as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): #1015 review round 1 (Windows-only path, exact probe line, -I) The probe prints sys.executable only on Windows, and only when stdout can encode it, so a POSIX wrapper's environment still applies. The probe line must be exactly "<marker>|<path>|", so a candidate that prints more is skipped as before. The guard run and the JSON check pass -I. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): #1015 review round 2 (one "|" pair in the probe line, ASCII path only) A probe line with a "|" beyond its two separators is skipped, as before. The path is used only when it is ASCII, since Python's stdout encoding and Git Bash can read other bytes differently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): one Python process per tool call runs the probe, guard, and check (#1015) Replace the interpreter-path approach. Each candidate now runs one process: a short runner writes the marker to fd 1, runs the guard in-process with its stdout captured and fd 1 on the null device, and writes the decision as ASCII JSON only when the guard exited 0 with a JSON object holding hookSpecificOutput. The runner uses -I and ends with os._exit. Text before the marker or after the decision skips the candidate; a failure after the marker gives a pass-through. The timeout call passes -k 1s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): #1015 review round 1 (UTF-8 stdin, end line, exit status, stderr flush) The runner reads stdin as UTF-8, since -I drops PYTHONUTF8 and PYTHONIOENCODING. The decision is followed by an end line, written in a loop, so trailing or cut-off output skips the candidate. SystemExit codes map to the status Python gives them, and stderr is flushed before os._exit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): #1015 review round 2 (marker-only output is a broken guard, wide exit codes) Only the marker with exit 0 means the guard ended the process itself, so it gives a pass-through and no other candidate runs. An exit code outside the C int range counts as a failure. The trailing-output test checks that the next candidate ran. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 10 天前 |
| fix(pi): compose ARS with structured prompt sections (#985) When Pi provides systemPromptOptions.sections and no earlier extension has set forceSystemPrompt, the wrapper edits the structured options instead of returning a rendered systemPrompt, so other extensions' sections survive. Older runners and earlier complete-prompt overrides keep the rendered fallback from #880. Closes #966. | 17 天前 |
| feat(commands): /ars-citation-check inherits the session model (#912) * feat(commands): /ars-citation-check inherits the session model Drop the `model: sonnet` pin from the citation-check command so it runs on the session model, like the three heavy commands. The Sonnet 5.5 system card (§6.3.2.1) reports a higher incorrect-answer rate on closed-book factual questions for Sonnet 5.5 (27%) than for Opus 5.5 (17%) or Mythos 5.1 (21%), and citation checking depends on factual recall. The other twelve light commands keep the sonnet pin. The SessionStart announcement and the citation-check eval README now match. Eval cases keep `model: sonnet` as a fixed eval model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtcbD3kmENUCYaNYEWTSNf * docs(evals): describe the eval model as a moving alias `sonnet` resolves to each new Sonnet release, so eval runs are comparable only at matching resolved agent and judge versions. Replace the "fixed, reproducible" wording in the eval README and CHANGELOG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtcbD3kmENUCYaNYEWTSNf --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 1 个月前 |
| fix: restore citation mode loading and Chinese APA checks (#857, #882) (#881) * fix: route plugin modes through core skills and bound descriptions * docs: retain citation retest failures separately from routing coverage * fix: preserve Chinese APA author and ordering rules (#882) * docs: record final Chinese citation regression outcomes | 1 个月前 |
| fix(academic-paper): keep peer review out of the committee-correspondence variant (#854) (#900) The revision coach's committee guard now names the case it must not route: journal or conference reviewers, editors, area chairs, and program committees are peer review, not a committee for the #668 committee-correspondence variant, even when the user names the venue or the venue calls the role a committee. The sentence sits in the three places a run reads before it can build committee output: the academic-paper SKILL.md routing paragraph, the revision coach agent, and the committee-correspondence protocol's activation gate. A test pins the whole sentence in each file. plugin-evals case 03 (ICLR reviews) gains a with-only regex grader that fails when an answer emits a line of the committee variant's output; an answer that declines the variant in prose passes. On Claude Opus 5.5 the retest did not reproduce the misroute (0 of 7 runs with the guard, 0 of 7 on main), so the guard's effect is unmeasured. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 个月前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| fix(reviewer): suggested-reference partial marker names either part (#1001) (#1018) The panel_reference_check_partial diagnostic marker joined the 'Not read:' list and the 'Not checked' result with "and", but render() prints each only when its own case occurs. The marker now says the coverage line comes with either one, or both. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 10 天前 |
| feat(sr-screener): add protocol-driven study screening as the fifth skill (#919) (#920) * feat(sr-screener): add protocol-driven study screening as the fifth skill Adds sr-screener v1.0.0: turns a proposal or PROSPERO protocol into user-confirmed eligibility rules, then screens titles/abstracts and full texts with two blinded reviewer subagents and a third-reviewer adjudicator. Eight modes; standard-library scripts for parsing, de-duplication, merging and PRISMA/RIS/literature_corpus outputs. Registers the skill on every inventory surface and lint registry (skills/ symlink, CLAUDE.md table + routing rule 8, manifests, MODE_REGISTRY, mode spectrum, announce routing, model-tiering manifest, Bucket C rosters, agent mirror, data_access pin, instruction/data boundary list), updates docs/READMEs, and adds scripts/test_sr_screener_pipeline.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(sr-screener): keep only the skill folder; drop repo-wide registration changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Revert "chore(sr-screener): keep only the skill folder" The maintainer asked for the skill to be registered on the inventory, model-tiering and instruction/data-boundary surfaces (#919). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(sr-screener): address #919 review (Sonnet defaults, required QC, pilot gate, routing) - Reviewers A/B (and every screening role) default to Sonnet; no profile offers a smaller model; the cost check prints any per-role override. - The QC recheck of records both reviewers excluded is required: a reproducible sample (min 20, default 100) is drawn once screening is complete and stays pending until the senior reviewer decides it. - The full title/abstract run needs a pilot compared with the team's own labels (merge_decisions.py --pilot-labels) that missed no record the team advanced; --pilot-override records a reason for the methods text. - Routing: a Screening boundary paragraph in the routing core and its six copies (screening starts only when the user asks; no automatic handover from systematic-review mode); fixtures 13-17 incl. three negative cases. - Registration restored (inventory, model tiering, boundary block). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): close model, pilot and full-text QC review gaps * docs(changelog): point the sr-screener entry at renumbered fixtures 17-21 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): bind review revisions and close screening report gaps Freeze the first pilot's scope, require audited scope expansion, reject runtime job replacements and validate the actual dispatched IDs. Bind generated labels and pilot comparisons to review, dataset, protocol and config identities. Amendments archive prior decisions/QC state and begin a new revision. Reject foreign or obsolete results; explicitly verified legacy imports require an audited reason. Preserve prior results and decisions in the local audit trail. Derive completeness from every prepared record/report and validate full-text retrieval coverage against the current TA decision snapshot. Escape spreadsheet text, compare complete normalized titles without conflicting identifiers, reject ambiguous/prefix PDF matches, refresh empty RIS categories and diagram reports awaiting classification. Replace personal-looking examples with marked synthetic ones and advance the letter whose abstract does not establish whether it has data. Validation: 77 synthetic screening regression tests; 12 relevant spec/security/ inventory/version checks pass with repository LF content. Broader companion tests yield 476 passes and the same 71 Windows failures on both this change and the unchanged bcf394b baseline. No live model calls or screening accuracy claims. * fix(sr-screener): preserve stage decisions across reporting edits Hash the effective screening inputs for each stage, excluding reporting and preparation metadata and models/codes used only by the other stage. Preserve existing result identities when upgrading an unchanged whole-config hash; refuse to clear a legacy review whose original config cannot be verified. Quote every field in CSV exports, synchronize the screening agent mirror, and accept either preserved or normalized carriage returns in the XLSX test. Add regressions for CSV quoting, completed decisions and pilot preservation, stage-specific amendments, and safe legacy identity upgrades. Validate both openpyxl XML backends, the agent mirror, and repository consistency checks. * fix(sr-screener): neutralize formulas after alternative CSV separators Escape formula prefixes after embedded semicolons and tabs in spreadsheet exports, while preserving original bibliographic records. Keep QUOTE_ALL. Exercise all four formula prefixes with both alternative delimiters across duplicates, not-retrieved, audit, pending and screening-log exports. Verify the exported values with comma readers and semicolon/tab readers. Validation: 105 screening tests and the real-repository agent mirror test pass; all 12 repository consistency checks pass. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Imbad0202 <132531341+Imbad0202@users.noreply.github.com> | 1 个月前 |
| fix(sr-screener): sniff only the CSV delimiter; read quotes by RFC 4180 (#979) (#982) * fix(sr-screener): keep RFC 4180 quote doubling after sniffing a CSV (#979) csv.Sniffer inferred doublequote from the first 5,000 characters. A sample without a doubled quote turned it off, so a later quoted field was split: comma exports lost the year and moved abstract text into the DOI or journal; semicolon exports kept the fields but added stray quotes to the abstract. Keep the sniffed delimiter and always enable quote doubling. Closes #979 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7yiDzBvMyYSU3KY5xjw3b * fix(sr-screener): sniff only the CSV delimiter; read quotes by RFC 4180 (#979) Review of the first fix found three more misreads from trusting a 5,000-character sample: apostrophes made "'" the quote character, a quote-free sample split a later `, "a, b"` field, and a single-column export with semicolons was read as semicolon-delimited. Sniff only the delimiter, fall back to a comma when the header row lacks it, and use a fixed RFC 4180 quote dialect with a space allowed before a quoted field. Refs #979 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7yiDzBvMyYSU3KY5xjw3b * fix(sr-screener): decide single-column CSV from the header record (#979) Checking only the first physical line misread a header whose first quoted field holds a line break and returned no records. Read the first record with the CSV reader instead. CHANGELOG now says the leading-space allowance is an extension beyond RFC 4180. Refs #979 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7yiDzBvMyYSU3KY5xjw3b --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 19 天前 |
| fix(routing): say in the routing core that a mid-message [direct-mode] token is not the escape hatch (#892) (#961) Adds one Step 0 sentence to the routing core and its six copies, re-pins the academic-pipeline/SKILL.md content lock, and records the 2026-10 #133 fixture pass. Fixture 06 on Claude Fable 5.1 in the plugin install moved from 0 of 6 to 3 of 6; the acceptance rule (6 of 6) is not met, so #892 stays open. Fixture 16 failure tracked in #960. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 25 天前 |
| feat(ci): command-invariants gate + announce sync to 16 commands (#486) - scripts/announce-ars-loaded.sh: add missing /ars-3w and /ars-rebuttal-audit to both announce forms; stated count 14 -> 16; script version 1.0.0 -> 1.1.0 - vendor release-discipline-toolkit v0.3.2 under tools/release-discipline/ - .command-invariants.toml: per-repo lint config (ars token pattern, per-form region pattern so drift in one announce form cannot hide behind the other, count pattern, plugin.json <-> CHANGELOG version lockstep) - .github/workflows/command-invariants.yml: CI gate Claude-Session: https://claude.ai/code/session_01PVcesfz4RTLdfekQH5XcX6 Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 4 个月前 |
| feat(ci): command-invariants gate + announce sync to 16 commands (#486) - scripts/announce-ars-loaded.sh: add missing /ars-3w and /ars-rebuttal-audit to both announce forms; stated count 14 -> 16; script version 1.0.0 -> 1.1.0 - vendor release-discipline-toolkit v0.3.2 under tools/release-discipline/ - .command-invariants.toml: per-repo lint config (ars token pattern, per-form region pattern so drift in one announce form cannot hide behind the other, count pattern, plugin.json <-> CHANGELOG version lockstep) - .github/workflows/command-invariants.yml: CI gate Claude-Session: https://claude.ai/code/session_01PVcesfz4RTLdfekQH5XcX6 Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 4 个月前 |
| fix(#454): Windows Python hook portability + graceful no-Python degradation The PreToolUse write-scope guard was wired as a bare `python3 ".../ars_write_scope_guard.py"`. On Windows `python3` is commonly a 0-byte Microsoft Store alias stub (exit 49, no output), so the hook failed before the guard's own fail-safes ran and spammed the hook log every call. A new cross-platform launcher `hooks/run_guard.sh` (POSIX sh; `hooks.json` invokes it via bash) finds a real interpreter — `py -3` / `python3` / `python`, each verified by a marker probe that must exit 0 AND print the marker (a stub is skipped) — then runs the guard as a supervised, time-bounded subprocess. Plan A graceful degradation: if no real interpreter is found or the guard subprocess misbehaves, the launcher emits a valid pass-through hook JSON and exits 0, never blocking and staying silent on stderr on the degraded paths. Hardened across a two-model dual-track review (codex + gemini, both POSIX-reproduced): the no-`timeout` watchdog fallback's stdin/stdout/timeout handling, a pid-reuse race (done-file handshake), a predictable-/tmp symlink fail-open (mktemp failure degrades to pass-through), and a gameable CI exec assertion (line-anchored). 76 tests (21 launcher + 55 guard); README documents the Git Bash prerequisite on Windows. Verified against the reporter's confirmed environment (py -3 real, python3 an exit-49 stub): the stub is skipped, the guard runs via py -3, and the decision is forwarded. Closes #454. 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 4 个月前 |
| evals: add `claude plugin eval` suite for the academic-paper citation-check flow (#859) * evals: add `claude plugin eval` suite for the academic-paper citation-check flow Eight cases (six fire, two negative) under plugin-evals-citation-check/, graded as a with/without-plugin ablation. Fire cases carry a synthetic source pack so the four author-defined citation failures (no source on file, wrong authors, hedged finding cited as established, retracted or concern-flagged paper cited as live) are detectable offline. Styles: APA 7 (en / zh-TW mixed / es), IEEE, Vancouver (style unnamed), Chicago NB. Cases pin model: sonnet; run with --judge-model opus. Calibration (two pilots, 2026-09-13) and caveats are in the suite README. The with-plugin arm cannot load the mode prompt in the eval sandbox because the command stub references plugin files by relative path (#857), and plain-language prompts fired the skill in 3 of 6 cases (#858; the Spanish case is one data point for #850). No uplift figure is claimed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEbmXsHyQ3dzYoep74zSmH * evals(citation-check): apply cross-model review findings and re-calibrate Twelve of thirteen review findings applied: replace the disputable four-author "et al." planting in 04 with a year mismatch; make the clean citations in 02 and 06 supported by their abstracts; replace real Taiwan journal names in 02 with fictional ones; tie the 08 presence regexes to an "unused" statement; require metadata preservation and reject audit content on the 07 conversion negative; add no-overreach to 05; turn the 02 language check into an llm grader; exempt unchanged entries in a complete corrected list from no-false-positive and drop its DOI claim; drop the 04 style-name regex (both arms fixed the year without naming the style). The one rejected finding (08 skill check "display-only") was wrong: it carries arm: both and is scored; README says so. Pilot 3 on the revised suite: $4.65, max 142 s / 7 turns / $0.45 per run; 04 and 08 re-run clean after the last two grader fixes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEbmXsHyQ3dzYoep74zSmH --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> | 1 个月前 |
| feat: add hermetic tortured-phrase screening (#699) Refs #660. Measurement and issue closure follow in the separately preregistered post-main mechanical conformance PR. | 2 个月前 |
| test(evals): promote the adjudicated 2026-08-04/05 #610 v0.2 baseline cohort (#643) * test(evals): promote the adjudicated 2026-08-04/05 #610 v0.2 baseline cohort (#610) Nine panels at the frozen post-#638 SHA 112a869 under the #608 harness (claude-opus-5 @ xhigh, isolated per-seat two-phase claude -p --bare dispatch): seven score-eligible records — smoke ms00 r99 + the 2026-08-04 2 x 3 fleet's MS00 r1/r2, MS01 r1, MS02 r2, plus the authorized 2026-08-05 supplementary replicates MS01 r3 and MS02 r3 under the two-replicate rule — and two blocked panels (MS01 r2, MS02 r1) recorded, not replaced. All nine provenance-valid; byte-for-byte promotion verified per stem with check_e4_promotion.py. This cohort is the adjudicated v0.2 baseline: MS01 11/11 and MS02 9/9 strict recall on both replicates, clean-control false findings 0 on all three clean panels, severity agreement 0.672. The #637 decoration abort family did not recur (0 SYNTHESIS-PARSE found-0 events vs 6/6 in the attempt fleet), confirming #638; conformance aborts 0.50 -> 0.33 with the residual a new single-seat content-grammar family. README run-history gains the baseline row and retires the pending corrected-cohort row. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * test(evals): add #610 recompute_adjudication + row metrics after dual-track round 1 (#610) Round-1 findings applied: - codex P1 (valid): both MS01 records gain the mandatory recompute_adjudication block — SD-01 grim, SD-02 n_from_df, SD-03 p_from_test_statistic, SD-11 grimmer, all VERIFIED in both replicates via prose receipts (baseline provision), maintainer-confirmed; arithmetic independently recomputed. - codex P2 (valid): README baseline row now reports receipt-backed recompute recall 4/4, class-wide statistical recall 5/5 (incl. MS02 SD-07 reporting_only), and the 0-numeric/0-narrative clean-control split. - security P3 (valid): severity_source gains a seeded-defect scope qualifier on all four defect records to stop lexical collision with the synthesizer's [SEVERITY-SOURCE: letter-fallback] markers on secondary/corroborating cells. - codex P2 #3 (rejected): nested adjudication shape without notes matches the merged 2026-08-03 precedent; notes is a no-response disclosure field and no such event occurred. - codex P2 #4 (rejected): check_e4_promotion.py is an operator-time gate by design (#616); same statement shape as the merged #639 entry. Work-dir copies updated in lockstep; check_e4_promotion.py re-PASS on the four touched stems (byte-identical). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * test(evals): align receipt_fields_present key with the #610 spec name (#610) Security-track round-2 P2: derived_value -> derived_value_or_range in both MS01 recompute_adjudication blocks (spec docs/design/2026-08-02-610-...-spec.md line 77); the post fleet will emit under the spec name and the frozen baseline must compare key-for-key. Work-dir copies updated in lockstep; check_e4_promotion.py re-PASS byte-identical on both stems. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * test(evals): re-adjudicate three recompute cells per spec §5 procedure rules (#610) Codex round-2 P1s (both valid, verified against the spec's own worked examples): SD-03 receipts in both MS01 replicates show only the two-tailed p ≈ .19 where §5.1 requires both tails shown when the paper states none (the silent two-tailed default §7 bans); the r3 SD-01 receipt argues from the integer product alone without the §5.2 rounding-interval reachability check (r1 carries the full check with the 3.839/3.851 neighbours and stays VERIFIED). Full-bundle sweep confirmed no other seat supplies the missing elements in either replicate. Maintainer-confirmed re-adjudication: the three cells become MISCOMPUTED (complete-looking attempt, unsupported assumption), receipt-backed recompute recall corrects to 3/4 (r1) and 2/4 (r3), README and CHANGELOG updated to the honest baseline numbers. per_defect content-level detection and all other row metrics unchanged. Work-dir in lockstep; check_e4_promotion.py re-PASS on both stems. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * docs(design): pin MISCOMPUTED-over-CLAIM_ONLY precedence for dual-trigger receipts (#610) Security-track round-3 P3: the three downgraded baseline cells set a receipt field absent AND record an unsupported assumption; the verdict table stated no precedence between CLAIM_ONLY (absence trigger) and MISCOMPUTED (procedural trigger). One sentence pins MISCOMPUTED as the governing class before these records freeze as the classification precedent the post fleet is compared against. No record change; both verdicts carry numerator 0 so no published number moves. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * chore(ci): fingerprint-ignore a gitleaks false positive in frozen E4 evidence (#610) Model venue-fit prose in the promoted r1 field_analysis.md ('(SoLAR, open access, Q1-equivalent in field)') trips generic-api-key entropy. The bundle is byte-frozen promotion evidence, so per the .gitleaks.toml maintenance note this is a one-off .gitleaksignore fingerprint, not a rule edit. Local re-scan: no leaks found. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * chore(ci): reword .gitleaksignore comment that re-triggered the rule (#610) The previous comment quoted the flagged prose verbatim, so the ignore file itself matched generic-api-key on the PR merge ref. Paraphrased; the fingerprint line is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * chore(ci): promote frozen-E4-bundle prose to a gitleaks path allowlist class (#610) Two-layer correction of the earlier fingerprint approach, which cannot survive this repo's squash-merge flow (the squash SHA that introduces the promoted bundle to main is unknowable in advance, so a per-commit fingerprint would turn main red on merge): - .gitleaks.toml gains the frozen E4 raw-bundle .md prose as the second documented false-positive class (path entry per its own maintenance note); machine logs and JSON records in the bundles stay scanned. - .gitleaksignore shrinks to the single historical occurrence where commit 08ddaca's version of the ignore file itself quoted the flagged prose. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 * chore(ci): scope the E4-prose gitleaks exemption to the misfiring rule (#610) Security-track ack round: the E4 raw-bundle .md path entry moves from the all-rules allowlist into a [[allowlists]] block with targetRules=[generic-api-key], so private-key / PAT / token detection stays live over the frozen prose (8.30.1 forbids mixing legacy [allowlist] with [[allowlists]], so the citation-keys class converts to an untargeted [[allowlists]] block, semantics unchanged). Mutation-tested with the pinned binary: a synthetic ghp_ token planted in the exempted path still fires github-pat while generic-api-key is suppressed there; a control copy outside the path fires both. .gitleaksignore gains the post-squash removal note. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016oZptTA3LpqeXWSxynzSz9 --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 2 个月前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(readme): keep the three most recent releases in the six READMEs; history moves to CHANGELOG.md and frozen locale archives (#870) * docs(readme): keep only the three most recent releases in the six READMEs; history moves to CHANGELOG.md and frozen locale archives README.md carried 60 release summaries (76 KB, 68% of the file), and the five translated READMEs mirrored the same list. Every release added one more paragraph to six files, and check_spec_consistency.py pinned 127 old headings across them, so the section could only grow. - Each README changelog section now keeps the three most recent releases and links to CHANGELOG.md. The 60 English one-paragraph summaries (58 of which CHANGELOG.md did not have) are merged verbatim as the leading blockquote under each CHANGELOG.md entry; the 11 releases that existed only in README.md (v1.0 .. v2.6.2, v3.0, v3.1) are backfilled as new CHANGELOG.md sections. - The five translated summary lists are frozen verbatim under docs/changelog-archive/<locale>.md (root-relative links rewritten), with a bilingual note that later releases live in the English CHANGELOG.md. - check_spec_consistency.py: the per-locale heading pins are replaced by one README_CHANGELOG_KEEP constant plus check_readme_changelog_section, which fails on any extra `### v` heading and on a missing CHANGELOG.md / archive link; the archives join the relative-link check. Fixtures and two new regression tests (fourth heading, missing archive link). - stage_capability_matrix.json: the three README.md claim anchors that pointed into the changelog now point at CHANGELOG.md (matrix re-rendered). - The Windows / real-Python prerequisite paragraph moves from README.md (and the ko-KR / es-ES translations) to docs/SETUP.md "Python (optional)" with a zh-TW counterpart; the READMEs keep a one-line pointer. - CONTRIBUTING.md release checklist records the prepend-one / drop-one rule. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CZxeK5emwXRAAqdNDfmc78 * docs(changelog): record the README changelog slimming under [Unreleased] (#870) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CZxeK5emwXRAAqdNDfmc78 * docs(readme): retarget the three README consumers codex found, harden the changelog-section lint Codex round 1 on #870 (gpt-6-astra, xhigh) found three consumers that only ever matched README text through the release history, all confirmed locally: - shared/contracts/degradation_registry.json: two write-scope-guard authorities anchored on the Windows / real-Python paragraph now point at docs/SETUP.md, where that paragraph lives. - scripts/venue_disclosure_contract_harness.py: the five READMEs leave SURFACE_FILES; they never carried a maintained venue inventory and matched only via the v3.12.1 / v3.20 summaries. - scripts/test_reading_probe_lint.py: the ARS_SOCRATIC_READING_PROBE cross-repo check reads docs/SETUP.md and docs/SETUP.zh-TW.md (the flag table) instead of the two READMEs. Two advisory findings applied: check_readme_changelog_section strips fenced code and HTML comments before locating the section, resolves links through extract_link_targets, and rejects a kept release heading that appears more than once (two new regression tests). The five archives gain a localized H2 between the note and the copied list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CZxeK5emwXRAAqdNDfmc78 * docs(changelog): full dates on the four backfilled early releases, from git history (#870) v1.0 and v2.0 (2026-02-26), v2.0.1 (2026-03-01) and v2.2 (2026-03-05, the README had said 2025) take the dates of the commits that introduced their README entries; the command-invariants lint requires a full YYYY-MM-DD date on every release heading. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CZxeK5emwXRAAqdNDfmc78 --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> | 1 个月前 |
| docs: solo-maintainer governance statement + SECURITY triage procedure (#760) (#778) * docs: solo-maintainer governance statement + SECURITY triage procedure (#760) GOVERNANCE.md: decision authority, honest cross-model scope (error-detection control, not organizational independence), release authority, EOL posture, and the operating-principles section (three distilled principles with informative ISO/IEC 42001 anchors, the #753-#760 coverage map, Annex C not-applicable assessments). SECURITY.md: 7-day promise becomes acknowledgement-only hard promise plus a written severity-tiered best-effort triage procedure. NOTICE.md: governance pointer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: apply dual-agent review to #760 (order-safe claims, honest ceilings, sustainable promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: close codex R1 on #760 (per-operator cross-model attribution, fairness signals disclosed, EOL-scoped promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: narrow fairness scoring absolute to persons/real-world allocation (codex R2) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 2 个月前 |
| fix: update LICENSE to official CC BY-NC 4.0 legalcode with personal copyright - Remove HEEACT from copyright holder, keep personal name only - Replace summary with official Creative Commons legalcode text - Enables GitHub to properly recognize the license type Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 7 个月前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs: solo-maintainer governance statement + SECURITY triage procedure (#760) (#778) * docs: solo-maintainer governance statement + SECURITY triage procedure (#760) GOVERNANCE.md: decision authority, honest cross-model scope (error-detection control, not organizational independence), release authority, EOL posture, and the operating-principles section (three distilled principles with informative ISO/IEC 42001 anchors, the #753-#760 coverage map, Annex C not-applicable assessments). SECURITY.md: 7-day promise becomes acknowledgement-only hard promise plus a written severity-tiered best-effort triage procedure. NOTICE.md: governance pointer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: apply dual-agent review to #760 (order-safe claims, honest ceilings, sustainable promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: close codex R1 on #760 (per-operator cross-model attribution, fairness signals disclosed, EOL-scoped promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: narrow fairness scoring absolute to persons/real-world allocation (codex R2) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 2 个月前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| feat(sr-screener): add protocol-driven study screening as the fifth skill (#919) (#920) * feat(sr-screener): add protocol-driven study screening as the fifth skill Adds sr-screener v1.0.0: turns a proposal or PROSPERO protocol into user-confirmed eligibility rules, then screens titles/abstracts and full texts with two blinded reviewer subagents and a third-reviewer adjudicator. Eight modes; standard-library scripts for parsing, de-duplication, merging and PRISMA/RIS/literature_corpus outputs. Registers the skill on every inventory surface and lint registry (skills/ symlink, CLAUDE.md table + routing rule 8, manifests, MODE_REGISTRY, mode spectrum, announce routing, model-tiering manifest, Bucket C rosters, agent mirror, data_access pin, instruction/data boundary list), updates docs/READMEs, and adds scripts/test_sr_screener_pipeline.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(sr-screener): keep only the skill folder; drop repo-wide registration changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Revert "chore(sr-screener): keep only the skill folder" The maintainer asked for the skill to be registered on the inventory, model-tiering and instruction/data-boundary surfaces (#919). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(sr-screener): address #919 review (Sonnet defaults, required QC, pilot gate, routing) - Reviewers A/B (and every screening role) default to Sonnet; no profile offers a smaller model; the cost check prints any per-role override. - The QC recheck of records both reviewers excluded is required: a reproducible sample (min 20, default 100) is drawn once screening is complete and stays pending until the senior reviewer decides it. - The full title/abstract run needs a pilot compared with the team's own labels (merge_decisions.py --pilot-labels) that missed no record the team advanced; --pilot-override records a reason for the methods text. - Routing: a Screening boundary paragraph in the routing core and its six copies (screening starts only when the user asks; no automatic handover from systematic-review mode); fixtures 13-17 incl. three negative cases. - Registration restored (inventory, model tiering, boundary block). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): close model, pilot and full-text QC review gaps * docs(changelog): point the sr-screener entry at renumbered fixtures 17-21 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): bind review revisions and close screening report gaps Freeze the first pilot's scope, require audited scope expansion, reject runtime job replacements and validate the actual dispatched IDs. Bind generated labels and pilot comparisons to review, dataset, protocol and config identities. Amendments archive prior decisions/QC state and begin a new revision. Reject foreign or obsolete results; explicitly verified legacy imports require an audited reason. Preserve prior results and decisions in the local audit trail. Derive completeness from every prepared record/report and validate full-text retrieval coverage against the current TA decision snapshot. Escape spreadsheet text, compare complete normalized titles without conflicting identifiers, reject ambiguous/prefix PDF matches, refresh empty RIS categories and diagram reports awaiting classification. Replace personal-looking examples with marked synthetic ones and advance the letter whose abstract does not establish whether it has data. Validation: 77 synthetic screening regression tests; 12 relevant spec/security/ inventory/version checks pass with repository LF content. Broader companion tests yield 476 passes and the same 71 Windows failures on both this change and the unchanged bcf394b baseline. No live model calls or screening accuracy claims. * fix(sr-screener): preserve stage decisions across reporting edits Hash the effective screening inputs for each stage, excluding reporting and preparation metadata and models/codes used only by the other stage. Preserve existing result identities when upgrading an unchanged whole-config hash; refuse to clear a legacy review whose original config cannot be verified. Quote every field in CSV exports, synchronize the screening agent mirror, and accept either preserved or normalized carriage returns in the XLSX test. Add regressions for CSV quoting, completed decisions and pilot preservation, stage-specific amendments, and safe legacy identity upgrades. Validate both openpyxl XML backends, the agent mirror, and repository consistency checks. * fix(sr-screener): neutralize formulas after alternative CSV separators Escape formula prefixes after embedded semicolons and tabs in spreadsheet exports, while preserving original bibliographic records. Keep QUOTE_ALL. Exercise all four formula prefixes with both alternative delimiters across duplicates, not-retrieved, audit, pending and screening-log exports. Verify the exported values with comma readers and semicolon/tab readers. Validation: 105 screening tests and the real-repository agent mirror test pass; all 12 repository consistency checks pass. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Imbad0202 <132531341+Imbad0202@users.noreply.github.com> | 1 个月前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs(release): prepare v3.24.0 (#1029) Promote [Unreleased] to 3.24.0 (2026-10-27), add the #1027/#1028 entry, and bump the version surfaces, README summaries, lint pins, and the SKILL.md content lock. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 8 天前 |
| docs: solo-maintainer governance statement + SECURITY triage procedure (#760) (#778) * docs: solo-maintainer governance statement + SECURITY triage procedure (#760) GOVERNANCE.md: decision authority, honest cross-model scope (error-detection control, not organizational independence), release authority, EOL posture, and the operating-principles section (three distilled principles with informative ISO/IEC 42001 anchors, the #753-#760 coverage map, Annex C not-applicable assessments). SECURITY.md: 7-day promise becomes acknowledgement-only hard promise plus a written severity-tiered best-effort triage procedure. NOTICE.md: governance pointer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: apply dual-agent review to #760 (order-safe claims, honest ceilings, sustainable promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: close codex R1 on #760 (per-operator cross-model attribution, fairness signals disclosed, EOL-scoped promises) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC * docs: narrow fairness scoring absolute to persons/real-world allocation (codex R2) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFJbYZyrJmSPFMJKQZhVHC --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> | 2 个月前 |
| docs(third-party): list md-to-word as an out-of-tree DOCX layout companion (#969) Adds a row to the Listed projects table for md-to-word, a deterministic Markdown to Word (.docx) typesetting engine that pairs with ARS Stage 5 output. Per THIRD_PARTY.md eligibility: the project credits ARS and links back from its README, and the description states only what the tool does. Refs #967 Co-authored-by: 刘 <1750422899@qq.com> | 22 天前 |
| feat(platform): add community-maintained Pi wrapper (#636) * feat(platform): add pi wrapper * feat(pi): scope ARS activation and add evidence * fix(pi): gate automatic ARS skill invocation * fix(pi): preserve args and tree activation * docs(pi): scope prompt guarantees to idle runs * fix(pi): canonicalize hidden skill paths Pi preserves lexical resource paths while Node resolves extension imports through symlinks. Compare real filesystem identity after XML decoding. * fix(pi): substitute command arguments once Avoid reprocessing placeholder-like text introduced from user arguments. * fix(pi): bound inactive skill block matching Prevent alternate skill formatting from extending a match into an adjacent unrelated skill block. | 2 个月前 |
| refactor(tests): move shared helpers into tests package (#311) | 4 个月前 |
| feat(sr-screener): add protocol-driven study screening as the fifth skill (#919) (#920) * feat(sr-screener): add protocol-driven study screening as the fifth skill Adds sr-screener v1.0.0: turns a proposal or PROSPERO protocol into user-confirmed eligibility rules, then screens titles/abstracts and full texts with two blinded reviewer subagents and a third-reviewer adjudicator. Eight modes; standard-library scripts for parsing, de-duplication, merging and PRISMA/RIS/literature_corpus outputs. Registers the skill on every inventory surface and lint registry (skills/ symlink, CLAUDE.md table + routing rule 8, manifests, MODE_REGISTRY, mode spectrum, announce routing, model-tiering manifest, Bucket C rosters, agent mirror, data_access pin, instruction/data boundary list), updates docs/READMEs, and adds scripts/test_sr_screener_pipeline.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(sr-screener): keep only the skill folder; drop repo-wide registration changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Revert "chore(sr-screener): keep only the skill folder" The maintainer asked for the skill to be registered on the inventory, model-tiering and instruction/data-boundary surfaces (#919). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(sr-screener): address #919 review (Sonnet defaults, required QC, pilot gate, routing) - Reviewers A/B (and every screening role) default to Sonnet; no profile offers a smaller model; the cost check prints any per-role override. - The QC recheck of records both reviewers excluded is required: a reproducible sample (min 20, default 100) is drawn once screening is complete and stays pending until the senior reviewer decides it. - The full title/abstract run needs a pilot compared with the team's own labels (merge_decisions.py --pilot-labels) that missed no record the team advanced; --pilot-override records a reason for the methods text. - Routing: a Screening boundary paragraph in the routing core and its six copies (screening starts only when the user asks; no automatic handover from systematic-review mode); fixtures 13-17 incl. three negative cases. - Registration restored (inventory, model tiering, boundary block). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): close model, pilot and full-text QC review gaps * docs(changelog): point the sr-screener entry at renumbered fixtures 17-21 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(sr-screener): bind review revisions and close screening report gaps Freeze the first pilot's scope, require audited scope expansion, reject runtime job replacements and validate the actual dispatched IDs. Bind generated labels and pilot comparisons to review, dataset, protocol and config identities. Amendments archive prior decisions/QC state and begin a new revision. Reject foreign or obsolete results; explicitly verified legacy imports require an audited reason. Preserve prior results and decisions in the local audit trail. Derive completeness from every prepared record/report and validate full-text retrieval coverage against the current TA decision snapshot. Escape spreadsheet text, compare complete normalized titles without conflicting identifiers, reject ambiguous/prefix PDF matches, refresh empty RIS categories and diagram reports awaiting classification. Replace personal-looking examples with marked synthetic ones and advance the letter whose abstract does not establish whether it has data. Validation: 77 synthetic screening regression tests; 12 relevant spec/security/ inventory/version checks pass with repository LF content. Broader companion tests yield 476 passes and the same 71 Windows failures on both this change and the unchanged bcf394b baseline. No live model calls or screening accuracy claims. * fix(sr-screener): preserve stage decisions across reporting edits Hash the effective screening inputs for each stage, excluding reporting and preparation metadata and models/codes used only by the other stage. Preserve existing result identities when upgrading an unchanged whole-config hash; refuse to clear a legacy review whose original config cannot be verified. Quote every field in CSV exports, synchronize the screening agent mirror, and accept either preserved or normalized carriage returns in the XLSX test. Add regressions for CSV quoting, completed decisions and pilot preservation, stage-specific amendments, and safe legacy identity upgrades. Validate both openpyxl XML backends, the agent mirror, and repository consistency checks. * fix(sr-screener): neutralize formulas after alternative CSV separators Escape formula prefixes after embedded semicolons and tabs in spreadsheet exports, while preserving original bibliographic records. Keep QUOTE_ALL. Exercise all four formula prefixes with both alternative delimiters across duplicates, not-retrieved, audit, pending and screening-log exports. Verify the exported values with comma readers and semicolon/tab readers. Validation: 105 screening tests and the real-repository agent mirror test pass; all 12 repository consistency checks pass. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Imbad0202 <132531341+Imbad0202@users.noreply.github.com> | 1 个月前 |
| feat(pdf): sandbox optional content classification (#724) * feat(pdf): sandbox optional content classification * fix(pdf): bind advisory to complete input * fix(pdf): close classifier protocol edge cases * fix(pdf): reject overflowing confidence values * fix(pdf): keep worker adapter outcomes closed * fix(pdf): close worker and publication races | 2 个月前 |