Sync write-guard.js: a protected file git already tracks no longer asks before a write, since the write is diffable and revertible; untracked, new and gitignored protected files still ask, and .claude/settings*.json and .pre-commit-config.yaml always ask.
Sync the adversarial-loop rule: reviewer briefs that run adversarial shell cases require case files written with a file-editing tool and fake gh/git binaries.
Keep review coverage and confidence gaps as factual limitations; require a specific user decision for additional review and omit declined requests from findings and final actions.
Sync the quality-gates rule: after each validated adversarial-loop round, print the progress table exactly, with all rows kept and each cell as old + new.
Write Research skill contracts atomically with validated optional gate metadata and a session/digest owner stamp, allowing the continuation path to verify which session produced the contract.
At main-thread phase boundaries, consult Foundry’s optional compaction gate and continue safely when it is unavailable. A compact decision emits a /compact keep payload and waits for continuation; restore saved report and task inputs without repeating the phase, require confirmation for unverified contracts, and skip foreign-session stamps.
Require topic follow-up questions to name the report path, title and outcome within the 1,500-character question budget. Save longer workflow context to a file and summarize it in question text; retain the full report header in the final response after the answer.
Remove broad GitHub API, branch and tag commands from Research’s shipped allow list. Remove shipped GitHub-write and local branch/tag deletion denies while retaining destructive-operation protections.
Keep existing user allow and deny entries during Research setup; stale-deny cleanup remains with Foundry setup, so already-installed entries persist until that migration is performed.
Accept the report header in the first follow-up question’s text or eligible option previews; when the delivery budget is exceeded, require a compact summary and saved-report path instead of silently dropping the context.
Add a SessionStart stale-plugin warning naming loaded and installed versions and restart/resume steps. Ask once per session and loaded version whether to restart or knowingly continue; compaction can repeat the warning without re-asking.
Move shared output-routing policy to Foundry while retaining Research’s follow-up examples in its quality-gate delta; remove the obsolete Git-slug helper and run commit-sentinel steps.
Resolve the router’s API model through an override, a 24-hour cache, the Models API or a logged fallback. Disable thinking for bounded routing replies and report API or timeout failures before falling back to a general-purpose agent.
Require quality-gate completion claims to cite concrete evidence and stay within the scope of checks actually performed.
Require a representative real case alongside TDD and recheck it before completion; mocks supplement real validation and unavailable real acceptance remains explicit.
Re-read missing visible report-header delivery for up to two seconds to allow transcript output to flush, and include the observed visible-character count in diagnostics. Reasoning and tool output do not count as user-visible delivery.
Check report delivery again at Stop, track delivery by report version and read the Stop payload’s last assistant message when available.
Require two-decimal confidence deductions that sum to the reported shortfall, including tier and fetch penalties; separate retrospective finding confidence from statistical-test availability.
Add native Windows Python fallback for Research helper recipes, preserving arguments, exit status and one-time workload execution after runtime validation.
Add a Python fallback for unchanged skill and agent recipes; try known Node locations for hooks and report inactive hooks at SessionStart when Node is unavailable.
Remove the fixed three-review cap from Research’s adversarial loop: continue while the unchanged-scope score strictly decreases, stop on a plateau or caller budget, and resolve feasible authorized findings before requesting a new decision.
Select targeted tests during fix loops, then run the full suite once at the final gate; wait for agents through notifications and report timed-out agents.
Add stale-root detection from installation-registry paths and orphan markers; callers can distinguish a loaded stale root from the active installation.
Use concise descriptive fields in Research report templates and keep authoring instructions out of completed reports.
Install Research’s quality-gate delta only when Foundry rule ownership is proven; otherwise deliver the complete Research rule so standalone installations retain every obligation.
Discover deferred task tools before calling them, combine bookkeeping with substantive work, and batch related cleanup, contract and context-loading calls.
Adopt the shared notebook-authoring contract in Kaggle workflows while keeping Kaggle-specific guidance as a small extension; update the Jupytext blank-cell helper to use the named Markdown rule.
Inventory review coverage and finding origins before repair. Require each fix to name its invariant, original counterexample, downstream consumer and sibling route, with failing-before and passing-after evidence.
Dispatch data-steward modes from caller prompt intent, prioritizing review intent over acquisition keywords; label the judge's merged scientist/architect review accurately.
Record lower-priority data-integrity and hygiene observations instead of omitting them when more severe findings exist, cap confidence for acknowledged missed findings, and execute compound fortify metric commands through the shell.
Show completed convergence rows in status, approval/recovery and pause messages; use not-run/N/A when no round is validated and retain the final Results table.
Show cumulative old/new finding counts and weighted scores after each completed challenge, before the next fix, review or stop. Keep pending reviews distinct from completed clean rounds.
Reject failed Codemap query output and distinguish static test/mock relationships from measured coverage while keeping formula and source verification explicit.
Ship the common skill compaction-contract format and boundary lifecycle, recording the active skill, source paths, progress and next steps for continuation after compaction.
Resolve the Codemap gate contract from the active codemap-py installation, remove Research’s frozen gate copy and preserve the fallback when the provider is absent. Follow the loaded provider contract’s documented stale-index policy.
Add the shared adversarial review loop to Research quality gates, with evidence-backed convergence scoring and an explicit stop when findings remain open.
Parse skill flags with Python helpers instead of shell regexes, fixing captures that were empty under zsh. Match --team as a complete token and keep flag-shaped words inside --keep values from becoming workflow options.
Ship Research’s propagated Codemap gate contract and load it from the active Research root, retaining the fallback when the optional provider is absent.
Validate program.md section headers before judging a research proposal, so malformed input stops at the schema gate.
Trigger additional review for a specific actionable gap or unproven claim instead of routine score thresholds; preserve all discoveries before filtering the presented summary.
Reduce research workflow spawns and repeated work: combine related plan and judge advisors, fetch paper content once, avoid redundant timing runs, and report actual launch batches.
Persist Codex usage counters in experiment state; make topic SOTA search single-owner and let hypothesis oracles annotate feasibility.
Reduce fortify’s per-variant shell calls while ensuring skip paths still advance the variant cursor.
Replace the legacy Codex integration with the self-contained Bridge implement, advise, and review calls, including explicit unavailable and disabled behavior.
Format plugin Markdown through the repository formatter and condense Research ML reference guidance.
Add a tested Jupytext helper that removes heading-spacer lines inside Markdown cells only; Kaggle generation now applies the cell-scoped repair instead of a file-wide regex.
Anchor Codemap paths at the Git root so subdirectory invocations select the same index. Preserve UTF-8 paths and raw basenames through Research’s resolver and flag handling.
Read stale-index currency from the returned JSON even when the provider exits nonzero, so the gate does not lose its stale verdict.
Normalize Windows extended-length symlink targets so setup recognizes and updates its own rule links.
Ground Kaggle notebooks in the authenticated Kaggle CLI’s competition files, leaderboard, and sample submission instead of guessing the submission schema.
Keep Kaggle credentials out of prompts, notebooks, and artifacts; gate full archive downloads behind a size-aware user choice.
Route Research Python scripts through the interpreter so skill commands work on native Windows, where extensionless shell-style calls are not portable.
Record an agent-spawn budget and avoid parallel specialist calls when inline work is cheaper.
Move agent sidecar references out of the scanned agents/ tree and update loaders to use the new references/ location, preventing sidecars from being registered as agents.
Fix zero-match grep -c handling where the fallback could append a second zero and corrupt numeric output.
Add a hardened sentinel-read allow hook across Research skills so only read-only sentinel substitutions bypass permission prompts; writes, traversal, and environment-changing forms remain denied.
Replace command-substitution sentinel reads with IFS= read -r to avoid triggering broad expansion permissions.
Require Kaggle notebooks to both optimize the competition metric and teach the workflow top-to-bottom; add an executable check that repairs bare Markdown heading spacers.
Run Codemap index builds through the foreground CLI instead of invoking the slash-only scan skill, which could not be dispatched through the Skill tool.
Compose the existing Kaggle workflow from selected foundation, EDA, training, inference and submission contracts; validate the sections required by full, EDA-only and inference-only modes.
Require notebook steps to fail promptly on errors and reject mutually exclusive EDA-only and inference-only selections before generation.
Harden Research helpers and workflows: constrain Docker verification commands, make run discovery resilient to concurrent deletion, support detached Git states, and align quality-gate confidence thresholds.
Add per-skill compaction contracts to Research’s phased workflows so progress, decisions, and next steps survive automatic context compaction.
Save contract state at workflow boundaries and clear it when the task completes; the first boundary remains the earliest point at which skill-specific context can be preserved.
Wire the Docker sandbox runner into research metric-computation modes; it had been tested but was not used by the workflow.
Replace unreachable synchronous-agent polling with post-return artifact checks; missing or empty expected artifacts produce timeout markers and partial-result handling.
Recompute variables lost between shell blocks across fortify, Kaggle, judge, and retro, restoring correct run paths, selected modes, output filenames, and specialist dispatch.
Re-derive topic arguments before unknown-flag and plan mode routing, and rebuild the commit-sentinel path before cleanup.
Cache local-role descriptions at SessionStart; reroute unavailable roles through semantic matching, using embeddings when configured and API selection otherwise before general-purpose fallback.
Add /research:kaggle to generate competition notebooks as Jupytext scripts, with full, EDA-only, and inference-only modes and modality-aware data exploration.
Add an offline-setup path for inference notebooks and shared unsupported-flag handling across research workflows.
Route broad topic searches to web search and reserve the scientist agent for deep analysis of one paper.
Persist fortify, judge and topic paths across separate shell calls; distinguish verification sentinels by branch and date so concurrent work does not reuse the wrong state.
Extract run metric-computation and resume modes into loadable files, and tighten the scientist’s plugin-prefixed agent references.
Promote judge findings about optimizing a proxy at the expense of the real objective to blocking severity; skipping validation cannot produce an APPROVED outcome.
Validate sweep output paths and load explicitly supplied hypothesis files. Harden run-directory, health-monitor and Docker helpers so invalid inputs fail before work starts.
Make Research run, retro, and fortify report paths anti-overwrite by selecting the next unused suffix; remove the obsolete retro health-monitor sentinel.
Fix research audit findings: remove an agent-name collision, repair fallback paths and allowed tools, and mark optional cross-plugin references explicitly.
Move plan's unsupported-flag check before input processing and use an interactive goal choice after file profiling; resolve sweep shared paths before its first step.
Add agent routing through an exact installed role, optional API-assisted local-role selection, and a general-purpose fallback when the preferred agent is unavailable.
Require a follow-up skill selected through a quality-gate question to execute in the same turn.
Add the topic workflow’s standalone agent-resolution fallback and explicit follow-up question; make the planning workflow’s --team path a named task-tracked phase.
Create the standalone Research plugin with scientist and data-steward agents and the topic, plan, judge, run, and sweep skills.
Add skill metadata, team/advisory modes, and resume handling; migrate research run constants and shared quality guidance into the new plugin structure.
Make research commands use their namespaced plugin invocations and document standalone installation with graceful general-purpose agent fallbacks.
Move the run protocol into the plugin and standardize research report paths and plugin-prefixed agent references.