diff --git a/.specify/feature.json b/.specify/feature.json index 548fed208..2d42175a7 100644 --- a/.specify/feature.json +++ b/.specify/feature.json @@ -1 +1 @@ -{"feature_directory": "specs/011-phase3-specify-clarify-testing"} +{"feature_directory": "specs/012-paper-review-convergence"} diff --git a/CLAUDE.md b/CLAUDE.md index 4df06a400..8955d7e73 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -70,5 +70,5 @@ Since this is primarily a research documentation repository without traditional For additional context about technologies to be used, project structure, shell commands, and other important information, read the current plan: -[specs/011-phase3-specify-clarify-testing/plan.md](specs/011-phase3-specify-clarify-testing/plan.md). +[specs/012-paper-review-convergence/plan.md](specs/012-paper-review-convergence/plan.md). diff --git a/README.md b/README.md index 17997d496..70f52eaac 100644 --- a/README.md +++ b/README.md @@ -34,13 +34,38 @@ reports it: `paper init` → `paper spec` → `paper plan` → `paper tasks` → `drafting` (paper-writing + figure-generation + statistics agents; LaTeX is built and citations verified) → `paper complete` → `paper review` → `posted`. -Paper review needs both a points threshold and an accept verdict from **twelve** -specialist reviewers: writing quality, logical consistency, claim accuracy, -over-reach, safety/ethics, scientific evidence, statistical analysis, code -quality, data quality, text formatting, figure critic, jargon police. - +Paper review uses a **convergence pipeline** (spec 012). Every reviewer +emits structured `action_items` with severity ∈ {`writing`, `science`, +`fatal`}, and the advancement evaluator uses the **most-recent verdict per +specialist** (against the live artifact hash — stale reviews are ignored). + +Three terminal outcomes: + +- **All specialists accept** → `paper_accepted` → `posted`. +- **Any `fatal` severity** → `brainstormed` (back to the backlog), with a + rejection rationale appended to the idea record citing each fatal item. +- **Otherwise** (writing/science items, no fatal) → `paper_revision_in_progress`, + which auto-kicks a revision-spec pipeline that produces a complete + spec/plan/tasks/analyze directory under + `specs/auto-revisions//round-/`. The project then sits at + `ready_for_implementation` until an implementer agent picks it up. + +The **per-specialist re-review protocol** prevents endless-nit loops: when +a specialist has prior reviews for the same project, its prompt reduces +to two questions — "(a) prior action items addressed? (b) any new +issues?" — instead of starting fresh and finding new nits each round. + +The twelve specialist reviewers (writing quality, logical consistency, +claim accuracy, over-reach, safety/ethics, scientific evidence, +statistical analysis, code quality, data quality, text formatting, +figure critic, jargon police) each emit action items in their lane. Human reviews count double; self-review is rejected by the schema. +arXiv-submitted papers (third-party, source frozen) skip the writing- +revision pipeline. Instead the consolidated action items land in +`projects//upstream_feedback.yaml`; outcomes are restricted to +accept-with-caveats or reject. + ## The agents There are **50 agents** in [agents/registry.yaml](agents/registry.yaml) — each a diff --git a/agents/prompts/_shared/rereview_block.md b/agents/prompts/_shared/rereview_block.md new file mode 100644 index 000000000..dcf90175f --- /dev/null +++ b/agents/prompts/_shared/rereview_block.md @@ -0,0 +1,50 @@ +# Re-Review Protocol — shared prompt snippet + +# This is the canonical re-review prompt block consumed by every paper-stage +# reviewer prompt. SINGLE SOURCE OF TRUTH (Constitution I): editing this file +# changes the re-review behavior for ALL specialists at once. Do NOT copy this +# text into individual specialist prompts. +# +# Consumers (rendered into the user prompt by `paper_reviewer.py` when prior +# reviews exist FOR THIS SPECIALIST): +# - agents/prompts/paper_reviewer.md (lead) +# - agents/prompts/paper_reviewer_*.md (12 specialists) +# +# The `{prior_action_items_yaml}` placeholder is substituted at render time +# with a YAML list of the most-recent prior review's action_items (this +# specialist's only — not other specialists' priors). + +## Re-Review Protocol (prior action items present for this reviewer) + +You have reviewed this paper before. Your most-recent prior review's action +items are listed below with their stable IDs. For this re-review, your job is +REDUCED to two questions: + + (a) For EACH prior action item: has it been ADEQUATELY ADDRESSED in the + current revision? + (b) Has the revision INTRODUCED ANY NEW ISSUES? + +Output rules: + +- If (a) = YES for ALL prior items AND (b) = NO new issues: + → verdict: `accept` + → score: `0.5` + → `action_items`: EMPTY list (or omit). + +- If (a) = NO for one or more prior items: + → verdict: `minor_revision` (or `major_revision_writing` if any unaddressed + item is writing-class, `major_revision_science` if science-class, or + `fundamental_flaws` if fatal-class). + → score: `0.0` + → `action_items`: MUST contain the unaddressed items WITH THEIR ORIGINAL + IDs PRESERVED (do NOT mint new IDs for re-flags of the same concern). + Append any NEW issues with fresh IDs AFTER the re-flagged items. + +- DO NOT generate a fresh independent critique. This is a diff-check against + the prior bar, not a full review. + +Prior action items (your most-recent prior review for this paper): + +```yaml +{prior_action_items_yaml} +``` diff --git a/agents/prompts/paper_reviewer.md b/agents/prompts/paper_reviewer.md index c598a5de9..9253a2cc6 100644 --- a/agents/prompts/paper_reviewer.md +++ b/agents/prompts/paper_reviewer.md @@ -1,6 +1,6 @@ # Paper-Reviewer Agent -**Version**: 1.0.0 +**Version**: 1.1.0 **Stage owned**: `paper_complete` → `paper_review` (writes a review record; the Advancement-Evaluator decides the next stage based on accumulated vote totals). @@ -56,9 +56,23 @@ verdict: accept | minor_revision | major_revision_writing | major_revision_science | fundamental_flaws feedback: reviewed_at: -prompt_version: 1.0.0 +prompt_version: 1.1.0 model_name: backend: dartmouth | huggingface | local +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts; + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave the id field blank; + # the system will derive it from the text. Severity rules: + # - "writing": fixable by editing the manuscript text alone + # (typo, jargon, missing citation, unclear caption, terminology + # drift, formatting). NO new experiments or data needed. + # - "science": requires re-running an experiment, adding a control, + # re-analyzing data, or otherwise touching the underlying + # research artifact. CANNOT be fixed by text edits alone. + # - "fatal": the central claim is unsupportable; the paper cannot + # be salvaged by any revision. The underlying idea should + # return to the backlog. --- # Free-form review body diff --git a/agents/prompts/paper_reviewer_claim_accuracy.md b/agents/prompts/paper_reviewer_claim_accuracy.md index 4ab9f74bb..0bf14dcfc 100644 --- a/agents/prompts/paper_reviewer_claim_accuracy.md +++ b/agents/prompts/paper_reviewer_claim_accuracy.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_code_quality_paper.md b/agents/prompts/paper_reviewer_code_quality_paper.md index 7e2a421e8..9bdbdab46 100644 --- a/agents/prompts/paper_reviewer_code_quality_paper.md +++ b/agents/prompts/paper_reviewer_code_quality_paper.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_data_quality_paper.md b/agents/prompts/paper_reviewer_data_quality_paper.md index 8ee223be0..fa4affbac 100644 --- a/agents/prompts/paper_reviewer_data_quality_paper.md +++ b/agents/prompts/paper_reviewer_data_quality_paper.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_figure_critic.md b/agents/prompts/paper_reviewer_figure_critic.md index 2b3cf5b1a..e930349f8 100644 --- a/agents/prompts/paper_reviewer_figure_critic.md +++ b/agents/prompts/paper_reviewer_figure_critic.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_jargon_police.md b/agents/prompts/paper_reviewer_jargon_police.md index 166cc0e02..400d1ea43 100644 --- a/agents/prompts/paper_reviewer_jargon_police.md +++ b/agents/prompts/paper_reviewer_jargon_police.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_logical_consistency.md b/agents/prompts/paper_reviewer_logical_consistency.md index b17f48489..7c051f901 100644 --- a/agents/prompts/paper_reviewer_logical_consistency.md +++ b/agents/prompts/paper_reviewer_logical_consistency.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_overreach.md b/agents/prompts/paper_reviewer_overreach.md index 9a8353a87..7ac09148f 100644 --- a/agents/prompts/paper_reviewer_overreach.md +++ b/agents/prompts/paper_reviewer_overreach.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_safety_ethics.md b/agents/prompts/paper_reviewer_safety_ethics.md index aa1d13a22..9e18984ed 100644 --- a/agents/prompts/paper_reviewer_safety_ethics.md +++ b/agents/prompts/paper_reviewer_safety_ethics.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_scientific_evidence.md b/agents/prompts/paper_reviewer_scientific_evidence.md index 4026d4902..ded443d89 100644 --- a/agents/prompts/paper_reviewer_scientific_evidence.md +++ b/agents/prompts/paper_reviewer_scientific_evidence.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_statistical_analysis.md b/agents/prompts/paper_reviewer_statistical_analysis.md index 810f89da9..587b10c00 100644 --- a/agents/prompts/paper_reviewer_statistical_analysis.md +++ b/agents/prompts/paper_reviewer_statistical_analysis.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_text_formatting.md b/agents/prompts/paper_reviewer_text_formatting.md index 70e5c7793..2b2f355d3 100644 --- a/agents/prompts/paper_reviewer_text_formatting.md +++ b/agents/prompts/paper_reviewer_text_formatting.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/prompts/paper_reviewer_writing_quality.md b/agents/prompts/paper_reviewer_writing_quality.md index 9c5c8ded9..a391ab18e 100644 --- a/agents/prompts/paper_reviewer_writing_quality.md +++ b/agents/prompts/paper_reviewer_writing_quality.md @@ -26,6 +26,14 @@ artifact_path: verdict: accept | minor_revision | full_revision | reject score: 1.0 # 1.0 ONLY when verdict == accept; else 0.0 +action_items: # NEW in 1.1.0 — REQUIRED for non-accept verdicts. + - text: "" + severity: writing | science | fatal + # ... one entry per concrete concern. Leave `id` blank — the system + # derives it from text. Severity guide: + # writing — fixable by editing the manuscript text alone + # science — requires re-running an experiment / re-analyzing data + # fatal — central claim unsupportable; paper cannot be salvaged --- <200-500 words of feedback in your lens. Cite specific files / line numbers / requirements. Do NOT critique aspects outside your lens — diff --git a/agents/registry.yaml b/agents/registry.yaml index a7a25ddff..c73411ec9 100644 --- a/agents/registry.yaml +++ b/agents/registry.yaml @@ -424,7 +424,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -507,7 +507,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_writing_quality.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -523,7 +523,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_logical_consistency.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -539,7 +539,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_claim_accuracy.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -555,7 +555,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_overreach.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -571,7 +571,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_safety_ethics.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -587,7 +587,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_scientific_evidence.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -603,7 +603,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_statistical_analysis.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -619,7 +619,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_code_quality_paper.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -635,7 +635,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_data_quality_paper.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -651,7 +651,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_text_formatting.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -667,7 +667,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_figure_critic.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -683,7 +683,7 @@ agents: outputs: - review prompt_path: agents/prompts/paper_reviewer_jargon_police.md - prompt_version: 1.0.0 + prompt_version: 1.1.0 default_backend: dartmouth fallback_backends: - huggingface @@ -804,9 +804,9 @@ agents: wall_clock_budget_seconds: 600 paid_opt_in: false - name: submission_intake - purpose: Triage human-submission GitHub issues from the website — route feedback - to the right pipeline step, create a project, file a submitted paper, or - acknowledge — then comment and close. + purpose: "Triage human-submission GitHub issues from the website \u2014 route feedback\ + \ to the right pipeline step, create a project, file a submitted paper, or acknowledge\ + \ \u2014 then comment and close." inputs: - review outputs: @@ -823,9 +823,9 @@ agents: wall_clock_budget_seconds: 300 paid_opt_in: false - name: personality - purpose: Simulated public-figure personas (spec 008) — one per 30-min tick, - rotating over agents/prompts/personalities/. Action ∈ comment / contribute / - propose_arxiv / abstain, tagged " (simulated)". + purpose: "Simulated public-figure personas (spec 008) \u2014 one per 30-min tick,\ + \ rotating over agents/prompts/personalities/. Action \u2208 comment / contribute\ + \ / propose_arxiv / abstain, tagged \" (simulated)\"." inputs: - review outputs: diff --git a/specs/001-agentic-pipeline-refactor/contracts/project-state.schema.yaml b/specs/001-agentic-pipeline-refactor/contracts/project-state.schema.yaml index 15640d178..fe6603193 100644 --- a/specs/001-agentic-pipeline-refactor/contracts/project-state.schema.yaml +++ b/specs/001-agentic-pipeline-refactor/contracts/project-state.schema.yaml @@ -67,6 +67,10 @@ properties: - paper_major_revision_writing - paper_major_revision_science - paper_fundamental_flaws + # Convergence pipeline (spec 012) + - paper_revision_in_progress + - ready_for_implementation + - paper_revision_blocked - posted # Cross-stage states - human_input_needed @@ -129,6 +133,9 @@ properties: human_escalation_reason: type: ["string", "null"] description: "Set when current_stage=human_input_needed." + revision_spec_path: + type: ["string", "null"] + description: "Spec 012: path to the completed RevisionSpec dir when current_stage=ready_for_implementation; null otherwise." # Cross-field invariants enforced by the runtime (pydantic): # - current_stage='research_accepted' => points_research.research_review meets the diff --git a/specs/001-agentic-pipeline-refactor/contracts/review-record.schema.yaml b/specs/001-agentic-pipeline-refactor/contracts/review-record.schema.yaml index 258a82f61..06c502411 100644 --- a/specs/001-agentic-pipeline-refactor/contracts/review-record.schema.yaml +++ b/specs/001-agentic-pipeline-refactor/contracts/review-record.schema.yaml @@ -70,6 +70,28 @@ properties: web flow. Forged review files (committed directly to the repo with no OAuth token) MUST set this to false; the Advancement-Evaluator awards 0 points for un-authenticated human reviews. + action_items: + type: array + description: | + Spec 012: structured per-concern action items. REQUIRED non-empty for + non-accept verdicts emitted under prompt_version >= 1.1.0; legacy + records (1.0.x) may omit this field (back-compat). + items: + type: object + additionalProperties: false + required: [id, text, severity] + properties: + id: + type: string + pattern: '^[0-9a-f]{12}$' + description: "Stable 12-char hex hash derived from canonicalize(text)." + text: + type: string + minLength: 1 + maxLength: 500 + severity: + type: string + enum: [writing, science, fatal] # Cross-field constraints expressed in the validator (Pydantic): # - if reviewer_kind == 'llm': diff --git a/specs/012-paper-review-convergence/checklists/requirements.md b/specs/012-paper-review-convergence/checklists/requirements.md new file mode 100644 index 000000000..0f90a1a10 --- /dev/null +++ b/specs/012-paper-review-convergence/checklists/requirements.md @@ -0,0 +1,37 @@ +# Specification Quality Checklist: Paper Review Convergence + +**Purpose**: Validate specification completeness and quality before proceeding to planning +**Created**: 2026-05-17 +**Feature**: [spec.md](../spec.md) + +## Content Quality + +- [X] No implementation details (languages, frameworks, APIs) — refers to stages and skills by name (these are project nouns, not implementation), but no Python class names or file paths in FRs. +- [X] Focused on user value and business needs — every story explains the user (pipeline-operator) value. +- [X] Written for non-technical stakeholders — uses domain vocabulary (paper review, verdict, action item, revision), not internal types. +- [X] All mandatory sections completed. + +## Requirement Completeness + +- [X] No [NEEDS CLARIFICATION] markers remain. +- [X] Requirements are testable and unambiguous — each FR cites the exact condition under which it fires and the exact behavior. +- [X] Success criteria are measurable — every SC has a numeric threshold or count. +- [X] Success criteria are technology-agnostic — phrased as observable outcomes ("paper reaches terminal state", "≥80% of IDs are stable"). +- [X] All acceptance scenarios are defined — each user story has Given/When/Then. +- [X] Edge cases are identified — 8 distinct edge cases listed. +- [X] Scope is clearly bounded — arxiv-intake guardrails, implementation-agent boundary, "what stays intact" called out in Assumptions. +- [X] Dependencies and assumptions identified — Assumptions section lists 7. + +## Feature Readiness + +- [X] All functional requirements have clear acceptance criteria — every FR maps to at least one US scenario. +- [X] User scenarios cover primary flows — 7 stories, P1 for the four happy paths (US1-US4) + the action-items prerequisite (US6), P2 for re-review prompt mode (US5) and arxiv-intake guardrail (US7). +- [X] Feature meets measurable outcomes defined in Success Criteria — SC-001 through SC-006 cover the convergence guarantee, the arxiv-intake guardrail, the no-stall property, the schema validity, the ID stability, and the auto-planning success rate. +- [X] No implementation details leak into specification — the closest is references to "stages" by name (`paper_accepted`, `paper_minor_revision`, etc.) which are project-domain nouns established in the existing lifecycle spec, not new implementation choices introduced by this spec. + +## Notes + +- All items pass on first iteration. No outstanding clarifications. +- The spec deliberately treats the implementation-agent (the one that consumes `ready_for_implementation`) as out-of-scope; this spec only commits to setting the flag. +- The choice of "most-recent verdict per specialist" (vs. "any-prior accept counts") for the acceptance gate is the critical convergence lever and is reflected in FR-001/002/003. +- Severity ordering (writing < science < fatal) is the single source of routing truth; FR-004/005 codify it. diff --git a/specs/012-paper-review-convergence/contracts/action_item.md b/specs/012-paper-review-convergence/contracts/action_item.md new file mode 100644 index 000000000..0c0c8e17d --- /dev/null +++ b/specs/012-paper-review-convergence/contracts/action_item.md @@ -0,0 +1,52 @@ +# Contract: ActionItem + +## Purpose + +A structured per-concern record emitted by a specialist reviewer. Replaces free-form prose action items in `feedback` with machine-readable items that survive re-review rounds with stable IDs. + +## Schema + +```yaml +# Embedded in a ReviewRecord's `action_items` list +- id: "a3f1c9b2e5d8" # 12-char lowercase hex, deterministic from canonicalize(text) + text: "Add explicit value for hyperparameter β_k in Section 4.1." + severity: "writing" # one of: writing | science | fatal +``` + +## Field rules + +| Field | Required | Constraint | +|-|-|-| +| `id` | yes | matches `^[0-9a-f]{12}$`. Reviewers MUST compute via the canonical helper `llmxive.types.action_item_id(text)`. | +| `text` | yes | non-empty, ≤500 chars. Should be a single actionable statement, no compound items. | +| `severity` | yes | exactly one of `writing`, `science`, `fatal`. | + +## Severity definitions (canonical — repeated in every paper_reviewer prompt) + +- **`writing`** — fixable by editing the manuscript text alone. Examples: typo, jargon, missing citation, unclear caption, terminology drift, formatting inconsistency, redundant paragraph. +- **`science`** — requires modifying the underlying research: re-running an experiment, adding a control, re-analyzing data, reconsidering methodology. Cannot be patched by text edits. +- **`fatal`** — the central claim is unsupportable; the paper cannot be salvaged by any revision. The underlying idea returns to the backlog. + +## Validation behavior + +- A reviewer that emits `verdict != "accept"` MUST emit `len(action_items) > 0`. The `ReviewRecord` pydantic validator REJECTS records that violate this. +- A reviewer that emits `verdict == "accept"` MAY emit zero action items; non-empty `action_items` on an accept verdict are recorded as informational only and do NOT change the routing. +- ID stability: two reviewers (or the same reviewer across rounds) that flag the SAME concern MUST produce the SAME `id`. The canonicalization in `action_item_id()` is the contract: lowercase, strip punctuation runs, strip section/figure references like `Section \d+\.\d+` and `Figure \d+`, collapse whitespace, sha1 → first 12 hex chars. + +## Round-trip example + +```python +from llmxive.types import action_item_id, ActionItem + +text1 = "Missing value for hyperparameter β_k in Section 4.1." +text2 = "missing value for hyperparameter β_k in Section 4.2." # different section ref +id1 = action_item_id(text1) +id2 = action_item_id(text2) +assert id1 == id2 # canonicalization absorbs the section-ref diff and the case diff +``` + +## Anti-patterns + +- ❌ Reviewer mints a random UUID for an item that's clearly the same as a prior one — breaks stability gate. +- ❌ Reviewer combines multiple concerns into one action item ("Fix the figure caption AND add the missing citation") — defeats severity classification (one might be writing, the other science). +- ❌ Reviewer omits action items on a non-accept verdict and writes them in free-form `feedback` instead — defeats re-review protocol. diff --git a/specs/012-paper-review-convergence/contracts/review_record_v2.md b/specs/012-paper-review-convergence/contracts/review_record_v2.md new file mode 100644 index 000000000..b63d9f6d7 --- /dev/null +++ b/specs/012-paper-review-convergence/contracts/review_record_v2.md @@ -0,0 +1,52 @@ +# Contract: ReviewRecord v2 (extends existing schema) + +## Purpose + +Document the additive change to `ReviewRecord` introduced by spec 012. All other fields are unchanged from the existing schema. + +## New field + +```yaml +# YAML frontmatter of a review file: +--- +artifact_hash: ... +artifact_path: ... +backend: dartmouth +feedback: "Strong methodology; β_k missing reduces reproducibility." +github_authenticated: false +model_name: qwen.qwen3.5-122b +prompt_version: 1.0.0 +reviewed_at: '2026-05-17T14:36:36Z' +reviewer_kind: llm +reviewer_name: paper_reviewer_scientific_evidence +score: 0.0 +verdict: minor_revision +action_items: # NEW field + - id: a3f1c9b2e5d8 + text: "Add explicit value for hyperparameter β_k in Section 4.1." + severity: writing + - id: 7b4d2e1c6f90 + text: "Discuss why the unified model surpasses single-domain experts." + severity: writing +--- + +# Free-form review body +... +``` + +## Schema rules (pydantic, in src/llmxive/types.py) + +- `action_items: list[ActionItem]` with default `[]`. +- Validator (model-level): + - If `verdict in {"minor_revision", "full_revision", "major_revision_writing", "major_revision_science", "fundamental_flaws", "reject"}` AND `reviewer_kind == "llm"` → `len(action_items) >= 1` MUST hold. Else → ValidationError. + - If `verdict == "accept"` → `len(action_items) >= 0` (no constraint). + +## Back-compat rules + +- Loading an OLD `ReviewRecord` (no `action_items` field) MUST succeed with `action_items=[]`. +- The advancement evaluator's gate logic MUST treat old records (action_items=[]) as "valid review, contributes no items to revision plan." Old `accept` records still satisfy the all-accept gate. + +## Test commitments + +- A round-trip test (`tests/unit/test_review_record_action_items.py`) MUST cover: emit → serialize to YAML → re-parse → validate identity. +- A back-compat test MUST cover: load an existing review file from `projects/PROJ-564/paper/reviews/` (which has no action_items field) and confirm it loads with action_items=[]. diff --git a/specs/012-paper-review-convergence/contracts/revision_spec.md b/specs/012-paper-review-convergence/contracts/revision_spec.md new file mode 100644 index 000000000..bb9e95086 --- /dev/null +++ b/specs/012-paper-review-convergence/contracts/revision_spec.md @@ -0,0 +1,87 @@ +# Contract: RevisionSpec directory + +## Purpose + +Define the on-disk layout produced by the `revision_planner` when it auto-kicks the 5-stage speckit pipeline. The implementer agent consumes this layout. + +## Path + +``` +specs/auto-revisions//round-/ +``` + +`` is 1-indexed; round 1 is the first auto-revision triggered for this project. + +## Required files + +| File | Producer stage | Contract | +|-|-|-| +| `spec.md` | speckit-specify | Standard speckit spec. The `User description` field is auto-seeded from the consolidated action items: "Address these reviewer-raised action items: ". | +| `clarifications.md` (or in-place clarifications in spec.md) | speckit-clarify | Auto-mode: no human Q&A — every clarification is auto-resolved using "best practice + spec assumption". | +| `plan.md` | speckit-plan | Standard. | +| `tasks.md` | speckit-tasks | Standard checklist format. MUST have ≥1 task. | +| `analyze-report.md` | speckit-analyze | Standard. After up to 3 iterations of remediation, MUST contain zero findings. | +| `result.yaml` | revision_planner (wrapper) | Records pipeline outcome (see below). | + +## `result.yaml` schema + +```yaml +project_id: PROJ-564-qwen-image-vae-2-0-technical-report +round: 1 +triggered_by_review_round: 2 # the paper-review round whose verdict triggered this auto-revision +revision_kind: paper_writing # paper_writing | paper_science +seed_action_items: + - id: a3f1c9b2e5d8 + text: ... + severity: writing +stage_results: + specify: + status: success + duration_s: 12.4 + started_at: '2026-05-17T14:30:00Z' + ended_at: '2026-05-17T14:30:12Z' + clarify: + status: success + duration_s: 8.1 + plan: + status: success + duration_s: 24.6 + tasks: + status: success + duration_s: 6.3 + task_count: 12 + analyze: + status: success + duration_s: 18.2 + iterations: 1 + final_finding_count: 0 +final_outcome: ready_for_implementation # OR: paper_revision_blocked +``` + +## Allowed `final_outcome` values + +- `ready_for_implementation` — all 5 stages succeeded; analyzer reached 0 findings within 3 iterations. +- `paper_revision_blocked` — analyzer could not reach 0 findings after 3 iterations. `result.yaml` MUST also include a `block_diagnostic` field with the analyzer's last findings list. + +## Discovery contract + +The implementer agent finds work by: + +1. Reading `state/revisions/index.yaml` for `ready_for_implementation` entries. +2. For each entry, the agent runs `speckit-implement` against the `revision_spec_path`. +3. On success, the agent transitions the project to `PAPER_REVIEW` and removes the entry from the index. +4. On failure, the agent attaches a diagnostic to the project YAML and the round counter remains. + +## `state/revisions/index.yaml` schema + +```yaml +ready: + - project_id: PROJ-564-... + revision_spec_path: specs/auto-revisions/PROJ-564-.../round-1 + queued_at: '2026-05-17T14:30:30Z' +blocked: + - project_id: PROJ-565-... + revision_spec_path: specs/auto-revisions/PROJ-565-.../round-2 + blocked_at: '2026-05-17T14:35:00Z' + diagnostic_path: specs/auto-revisions/PROJ-565-.../round-2/result.yaml +``` diff --git a/specs/012-paper-review-convergence/contracts/upstream_feedback.md b/specs/012-paper-review-convergence/contracts/upstream_feedback.md new file mode 100644 index 000000000..49a96a744 --- /dev/null +++ b/specs/012-paper-review-convergence/contracts/upstream_feedback.md @@ -0,0 +1,64 @@ +# Contract: UpstreamFeedbackAnnotation (arxiv-intake guardrail) + +## Purpose + +For arxiv-intake papers (third-party submissions with a frozen `paper/source/`), the writing-revision and science-revision pipelines can't modify the manuscript. Instead, the consolidated action items are recorded as an annotation on the project. The project's final outcome is restricted to `PAPER_ACCEPTED` (with caveats noted) or `BRAINSTORMED` (rejection). + +## Path + +``` +projects//upstream_feedback.yaml +``` + +## Schema + +```yaml +project_id: PROJ-564-qwen-image-vae-2-0-technical-report +arxiv_id: "2510.12345" # mirrored from paper/metadata.json +schema_version: 1 +rounds: + - round_number: 1 + triggered_at: '2026-05-17T14:01:45Z' + verdict_class: writing # writing | science | fatal + note: "First reviewer round; specialists agree the paper is solid but flagged 4 writing nits." + action_items: + - id: a3f1c9b2e5d8 + text: "Add explicit value for hyperparameter β_k in Section 4.1." + severity: writing + - id: 7b4d2e1c6f90 + text: "Discuss why the unified model surpasses single-domain experts." + severity: writing +``` + +## Routing rules + +For an arxiv-intake project: + +1. **All specialists accept** (gate passes) → `PAPER_ACCEPTED` (no annotation needed). +2. **At least one writing OR science action item, no fatal** → write a new `Round` to `upstream_feedback.yaml`; transition to `PAPER_ACCEPTED` with caveats. The web dashboard surfaces the annotation on the project's card. +3. **At least one fatal action item** → write a new `Round` (verdict_class=fatal); transition to `BRAINSTORMED`. + +The `paper_revision_in_progress` stage is NOT used for arxiv-intake projects — no speckit revision pipeline is kicked off. + +## Detection rule + +A project is arxiv-intake iff: + +```python +def is_arxiv_intake(project_dir: Path) -> bool: + return (project_dir / "paper" / "metadata.json").is_file() and not ( + project_dir / "paper" / "specs" + ).is_dir() +``` + +(This matches the existing detection used by `paper_reviewer.py`.) + +## Test commitments + +- `tests/unit/test_upstream_feedback_writer.py` — round-trip schema validation. +- `tests/real_call/test_arxiv_intake_no_source_mutation.py` — drive an arxiv-intake fixture through a writing-class verdict; assert `paper/source/` is unchanged AND `upstream_feedback.yaml` contains the consolidated action items. + +## Anti-patterns + +- ❌ Attempting to call `revision_planner.run_revision_pipeline()` on an arxiv-intake project — the `revision_planner` MUST guard against this and raise `ArxivIntakeError` if called with such a project. +- ❌ Overwriting `upstream_feedback.yaml` on each round — rounds are append-only. diff --git a/specs/012-paper-review-convergence/data-model.md b/specs/012-paper-review-convergence/data-model.md new file mode 100644 index 000000000..79c624e3a --- /dev/null +++ b/specs/012-paper-review-convergence/data-model.md @@ -0,0 +1,134 @@ +# Phase 1 Data Model: Paper Review Convergence + +## Entities + +### E1. ActionItem (NEW) + +A single concrete thing the authors must do, surfaced by a specialist reviewer. + +| Field | Type | Constraints | Notes | +|-|-|-|-| +| `id` | `str` | 12-char lowercase hex; derived deterministically from `canonicalize(text)` (sha1 prefix, see research R1) | Stable across re-reviews: the same concern produces the same ID. | +| `text` | `str` | ≤500 chars, non-empty | Short, actionable statement. Example: "Add explicit value for hyperparameter β_k in Section 4.1." | +| `severity` | `Literal["writing", "science", "fatal"]` | enum | Set by the LLM at emission time per research R5. | + +**Identity**: `id` is the canonical key. Two ActionItems with the same `id` represent the same concern (possibly raised by different specialists across rounds). + +**Validation**: pydantic model in `src/llmxive/types.py`. `id` MUST match `^[0-9a-f]{12}$`. Severity MUST be one of the three literal values. + +### E2. ReviewRecord (EXTENDED) + +Existing entity. New field added; everything else unchanged. + +| Field | Type | Constraints | Notes | +|-|-|-|-| +| (existing fields) | (unchanged) | (unchanged) | `verdict`, `score`, `feedback`, `reviewer_kind`, `reviewer_name`, `artifact_hash`, `artifact_path`, `reviewed_at`, `model_name`, `backend`, `prompt_version`, `github_authenticated` — all retained. | +| `action_items` | `list[ActionItem]` | default `[]`; MUST be non-empty if `verdict != "accept"` | NEW. Validator: if verdict is in {`minor_revision`, `full_revision`, `major_revision_writing`, `major_revision_science`, `fundamental_flaws`, `reject`}, `len(action_items) > 0`. If verdict is `accept`, `action_items` MAY be empty. | + +**Back-compat**: Older records (without `action_items`) load with `action_items=[]` (pydantic default). Advancement gate's "most-recent verdict per specialist" rule still works on those records (they just contribute no action items to the revision plan, which is acceptable for legacy data). + +**Transition rule** (new): The advancement evaluator's gate now examines `action_items` from the most-recent non-stale record per specialist; the max severity across all per-specialist most-recent records drives routing (see FR-004/005). + +### E3. UpstreamFeedbackAnnotation (NEW) + +For arxiv-intake papers only. Recorded under `projects//upstream_feedback.yaml`. Replaces the auto-planned revision pipeline (which can't mutate the frozen source). + +| Field | Type | Constraints | Notes | +|-|-|-|-| +| `project_id` | `str` | `^PROJ-\d{3,}-[a-z0-9-]+$` | Project ID. | +| `arxiv_id` | `str` | Validated against `paper/metadata.json` | Mirrors metadata for cross-reference. | +| `rounds` | `list[Round]` | non-empty | Each round records action items consolidated from one full review pass. | + +`Round`: + +| Field | Type | Notes | +|-|-|-| +| `round_number` | `int` | 1-indexed. | +| `triggered_at` | `datetime` | UTC. | +| `verdict_class` | `Literal["writing", "science", "fatal"]` | Max severity in this round. | +| `action_items` | `list[ActionItem]` | Deduplicated by `id` across all specialists. | +| `note` | `str` | Free-text human-readable summary. | + +**Lifecycle**: Created on first non-accept verdict for an arxiv-intake project. Appended-to (NOT overwritten) on subsequent rounds. Persists for the project lifetime. + +### E4. RevisionSpec (NEW; conceptual entity — physical realization is a directory tree) + +A generated speckit spec directory rooted in the consolidated action items from a triggering review round. + +**Location**: `specs/auto-revisions//round-/` (NOT under `specs/-feature-name/`, to keep auto-revisions distinct from human-authored specs). + +**Contents** (each is a real file produced by the corresponding speckit stage): + +| File | Source stage | Required | +|-|-|-| +| `spec.md` | `speckit-specify` (seeded from action items) | ✅ | +| `clarifications.md` (or `spec.md` updated in place) | `speckit-clarify` (auto-resolves; no human questions for revision specs) | ✅ | +| `plan.md` | `speckit-plan` | ✅ | +| `tasks.md` | `speckit-tasks` | ✅ | +| `analyze-report.md` | `speckit-analyze` | ✅ | +| `result.yaml` | revision_planner | ✅ — records stage outcomes + final flag (`ready_for_implementation` or `paper_revision_blocked`). | + +**Discoverability**: Indexed in `state/revisions/index.yaml` so the implementer agent can find `ready_for_implementation` revisions without scanning the filesystem. + +### E5. Stage enum (EXTENDED) + +Existing entity. ONE new value added: + +| New value | Predecessor stages | Successor stages | +|-|-|-| +| `PAPER_REVISION_IN_PROGRESS` | `PAPER_REVIEW` (when verdict triggers revision) | `READY_FOR_IMPLEMENTATION` (success — see E6) OR `PAPER_REVISION_BLOCKED` (failure) | + +Two more new values support the resolution outcomes: + +| New value | Notes | +|-|-| +| `READY_FOR_IMPLEMENTATION` | Project has a completed `RevisionSpec`; waiting for an implementer agent to pick up `speckit-implement`. | +| `PAPER_REVISION_BLOCKED` | Analyzer couldn't reach zero findings in 3 iterations. Diagnostic record attached. Terminal until human intervention. | + +**Allowed transitions added to `ALLOWED_TRANSITIONS` in `lifecycle.py`**: + +``` +PAPER_REVIEW → {PAPER_ACCEPTED, PAPER_REVISION_IN_PROGRESS, BRAINSTORMED} +PAPER_REVISION_IN_PROGRESS → {READY_FOR_IMPLEMENTATION, PAPER_REVISION_BLOCKED} +READY_FOR_IMPLEMENTATION → {PAPER_REVIEW} # after implementer runs speckit-implement +PAPER_REVISION_BLOCKED → {PAPER_REVIEW, PAPER_MINOR_REVISION, BRAINSTORMED} # human-driven +``` + +(Existing `PAPER_REVIEW → {PAPER_MINOR_REVISION, ...}` transitions are REMOVED — superseded by the consolidated PAPER_REVISION_IN_PROGRESS routing. This keeps the state graph minimal.) + +### E6. ready_for_implementation flag (NEW) + +A project at stage `READY_FOR_IMPLEMENTATION` carries a `revision_spec_path` field on its YAML state file pointing to the relative path of the completed `RevisionSpec` directory. + +| Field on `Project` | Type | Constraints | +|-|-|-| +| `revision_spec_path` | `str \| None` | None unless `current_stage == READY_FOR_IMPLEMENTATION`. Must match an existing directory under `specs/auto-revisions/`. | + +The implementer agent reads `revision_spec_path`, runs `speckit-implement` on it, and on success transitions the project back to `PAPER_REVIEW`. + +## Validation rules summary + +1. Every `ReviewRecord` with non-accept verdict MUST have `len(action_items) > 0` (pydantic validator). +2. Every `ActionItem.id` MUST match `^[0-9a-f]{12}$`. +3. The advancement evaluator MUST use the most-recent non-stale (`artifact_hash` matches live artifact) `ReviewRecord` per specialist when computing the gate. +4. A transition to `PAPER_REVISION_IN_PROGRESS` MUST be accompanied by creation of `state/revisions//round-.yaml` recording the consolidated action items being passed into the revision planner. +5. A transition to `READY_FOR_IMPLEMENTATION` MUST set `Project.revision_spec_path` to a path that exists on disk and contains all 6 required files of a RevisionSpec (E4 table). +6. arXiv-intake detection: a project is arxiv-intake iff `projects//paper/metadata.json` exists AND NO `projects//paper/specs/-/spec.md` exists. + +## Data lifecycle + +``` +[fresh paper, no reviews] + → review round 1 produces 13 ReviewRecords each with action_items[] + → advancement gates fire: + ALL accept? → PAPER_ACCEPTED → POSTED (done) + any fatal? → BRAINSTORMED + rejection rationale (done) + science items? → PAPER_REVISION_IN_PROGRESS (kind=science) + writing items? → PAPER_REVISION_IN_PROGRESS (kind=writing) + (arxiv-intake?) → write UpstreamFeedbackAnnotation; accept-with-caveats OR reject + → revision_planner runs 5 speckit stages → RevisionSpec directory + success: → READY_FOR_IMPLEMENTATION (flag with revision_spec_path) + failure: → PAPER_REVISION_BLOCKED (terminal until human) + → implementer agent picks up READY_FOR_IMPLEMENTATION → speckit-implement + → on completion: → PAPER_REVIEW (back to top; per-specialist re-review protocol activates) +``` diff --git a/specs/012-paper-review-convergence/plan.md b/specs/012-paper-review-convergence/plan.md new file mode 100644 index 000000000..99149c330 --- /dev/null +++ b/specs/012-paper-review-convergence/plan.md @@ -0,0 +1,124 @@ +# Implementation Plan: Paper Review Convergence + +**Branch**: `012-paper-review-convergence` | **Date**: 2026-05-17 | **Spec**: [spec.md](./spec.md) +**Input**: Feature specification from `/specs/012-paper-review-convergence/spec.md` + +## Summary + +Make the paper-review pipeline *converge* instead of oscillating forever between `paper_review` and `paper_minor_revision`. Three coordinated changes: + +1. **Acceptance gate change**: advance to `paper_accepted` when every required specialist's *most-recent (non-stale)* verdict is `accept`. Drop the redundant point threshold. +2. **Structured action items + re-review protocol**: every review now emits a list of `ActionItem{id,text,severity}`. Re-reviewers (per-specialist, only if THAT specialist has prior reviews) ask only "(a) prior items addressed? (b) new issues?" — eliminating endless-nit oscillation. +3. **Three-way revision routing + auto-planned revision pipeline**: route by max severity (writing→`paper_minor_revision`, science→`paper_major_revision_science`, fatal→`brainstormed`). On a revision transition, auto-kick `speckit-{specify,clarify,plan,tasks,analyze}` for the revision spec, parking the project at a new `paper_revision_in_progress` stage (idempotent — scheduler skips). When all 5 stages clear, flip to `ready_for_implementation` flag for an implementer agent to pick up. + +arXiv-intake guardrail: papers without a `paper/source/` we can mutate (third-party submissions) skip the writing-revision path entirely — they record an `upstream_feedback.yaml` annotation and resolve to `paper_accepted` (with caveats) or `brainstormed` (rejection). + +## Technical Context + +**Language/Version**: Python 3.11 +**Primary Dependencies**: pydantic 2.x (schema validation), pyyaml (frontmatter), Dartmouth Chat API (LLM backend via `llmxive.backends.dartmouth`), Hugging Face Inference (fallback backend) +**Storage**: Filesystem under `projects//` (per-project artifacts), `state/projects/.yaml` (project state), `state/run-log//.jsonl` (audit trail), `state/citations/.yaml` (verified citations) +**Testing**: pytest 9.x; tests live under `tests/{unit,contract,real_call,integration}/`. Real-call tests gated on `LLMXIVE_REAL_TESTS=1` per Constitution III. +**Target Platform**: Linux server (GitHub Actions CI) + macOS dev (15.x); Python 3.11 on both. +**Project Type**: Multi-component CLI + cron-driven pipeline (no UI in scope for this feature; web dashboard reads regenerated state). +**Performance Goals**: A revision-spec auto-plan (5 speckit stages) MUST complete within one cron tick (16-hour budget; expected ≤30 minutes wall on Dartmouth at current token rates). Re-review of a paper with ≥1 prior round MUST complete in ≤ the time of a fresh review. +**Constraints**: NO breaking changes to existing `ReviewRecord` schema — `action_items` is additive (optional default `[]` for back-compat with older records). NO breaking changes to existing stage graph except additive: `paper_revision_in_progress` is new. Scheduler concurrency: at most one revision-spec auto-plan per project at a time (enforced by `paper_revision_in_progress` gate). +**Scale/Scope**: ~12 specialist reviewers per paper × ~30 active arxiv-intake papers + ~10 home-grown papers in flight at any time = ~500 review records/week. Action-item ID space is per-project, expected ≤200 distinct items per paper lifetime. + +## Constitution Check + +*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.* + +### Principle I — Single Source of Truth (NON-NEGOTIABLE) + +- ✅ Stage definitions live in `src/llmxive/types.py` `Stage` enum. We add ONE new value (`PAPER_REVISION_IN_PROGRESS`) — no parallel state machine. +- ✅ Advancement logic lives in `src/llmxive/agents/advancement.py` — single decision point. We modify the existing function; do NOT create a parallel `advancement_v2.py`. +- ✅ Reviewer prompts live under `agents/prompts/` keyed by registry — we modify existing prompt files and add the re-review block as a shared snippet (single canonical location), not per-prompt copy-paste. +- ✅ `ReviewRecord` schema lives in `src/llmxive/types.py` — we add `action_items` field there once; everyone (writers + readers) consumes the same schema. + +### Principle II — Verified Accuracy (NON-NEGOTIABLE) + +- ✅ Action items are LLM output; the system records them verbatim as the LLM emitted them. No claim about *what* the LLM said is fabricated. +- ✅ Re-review protocol references prior action items by stable ID — the references resolve to actual prior records; we never invent prior items. +- ✅ The "consolidated action items" passed to the auto-planned revision pipeline is a deduplication of real prior records, not a synthesis. + +### Principle III — Robustness & Reliability (Real-World Testing) + +- ✅ The 5-stage auto-plan pipeline MUST be tested with REAL Dartmouth calls in `tests/real_call/test_paper_review_convergence_e2e.py` — drive a fixture project through one full review→revision→re-review cycle and assert convergence. +- ✅ The re-review protocol MUST be tested with a REAL LLM call (not mocked) to verify the two-question prompt actually elicits accept-or-list-unaddressed behavior. +- ✅ arXiv-intake guardrail MUST be tested on a real arxiv-intake fixture (we have PROJ-564/566/etc. on disk). +- Mock-based unit tests are added as a fast-feedback layer for pure-logic pieces (severity ordering, ID stability, classification routing) ONLY after the real-call test proves the wired-up behavior works. + +### Principle IV — Cost Effectiveness (Free-First) + +- ✅ Dartmouth Chat is free for this project (per memory note `dartmouth-api-free.md`). The new 5-stage auto-plan adds ~5 LLM calls per revision round — well within the free budget. +- ✅ Re-review protocol is *cheaper* than full critique (shorter prompt focused on diff-check) — net cost reduction. +- ✅ Convergence reduces total LLM spend by terminating ping-pong loops that today consume ~13 specialist calls × every cron tick × indefinitely. + +### Principle V — Fail Fast + +- ✅ Action-item validation happens at `handle_response` time (pydantic schema on `ReviewRecord`). A malformed `action_items` field fails the review with a clear error before the project state moves. +- ✅ The 5-stage auto-plan validates each stage's output before proceeding to the next (`plan.md` must exist before `tasks.md`; `tasks.md` must have ≥1 task before `analyze`; etc.) — fail fast at each boundary. +- ✅ `paper_revision_blocked` state is the explicit fail-fast outcome when the analyzer can't reach zero findings in 3 iterations — no silent advancement. +- ✅ arXiv-intake detection (presence of `paper/metadata.json` + absence of feature dir) MUST be evaluated before the revision pipeline is dispatched, not after. + +**Verdict: PASS** — all five principles are satisfied without complexity-tracking justifications. + +## Project Structure + +### Documentation (this feature) + +```text +specs/012-paper-review-convergence/ +├── plan.md # This file +├── research.md # Phase 0: Auto-plan invocation strategy + ID-stability hash + recovery path +├── data-model.md # Phase 1: ReviewRecord (extended), ActionItem, RevisionSpec, UpstreamFeedbackAnnotation +├── quickstart.md # Phase 1: How to drive a paper through revision+re-review end-to-end +├── contracts/ +│ ├── action_item.md # ActionItem record shape + ID generation +│ ├── review_record_v2.md # Extended ReviewRecord schema (action_items added) +│ ├── revision_spec.md # Layout of an auto-planned revision spec dir +│ └── upstream_feedback.md # arXiv-intake annotation file shape +├── checklists/ +│ └── requirements.md # (already created) +└── tasks.md # Phase 2 output (created by /speckit-tasks) +``` + +### Source Code (repository root) + +```text +src/llmxive/ +├── agents/ +│ ├── advancement.py # MODIFY — three-way routing, most-recent-verdict gate +│ ├── paper_reviewer.py # MODIFY — emit action_items; re-review prompt mode (per-specialist toggle) +│ ├── revision_planner.py # NEW — auto-kicks speckit-{specify,clarify,plan,tasks,analyze} +│ └── upstream_feedback.py # NEW — arxiv-intake annotation writer +├── lifecycle.py # MODIFY — add PAPER_REVISION_IN_PROGRESS, allowed transitions, scheduler skip rule +├── types.py # MODIFY — Stage enum + ReviewRecord (add action_items) + ActionItem class +└── state/ + └── reviews.py # MODIFY — list_for must surface action_items; loader/writer pair extends to new field + +agents/prompts/ +├── paper_reviewer.md # MODIFY — instruct emit of action_items YAML block +├── paper_reviewer_*.md # MODIFY (12 files) — same action_items block, severity guidance per specialty +└── _shared/ + └── rereview_block.md # NEW — shared "two-question protocol" snippet, included by all paper_reviewer prompts when prior reviews exist + +tests/ +├── unit/ +│ ├── test_action_item_schema.py # NEW +│ ├── test_advancement_three_way_routing.py # NEW — pure logic: max-severity wins, all-accept gate, arxiv-intake guardrail +│ ├── test_paper_reviewer_action_items.py # NEW — frontmatter parse + emit +│ ├── test_rereview_per_specialist_toggle.py # NEW — toggle activation logic +│ └── test_revision_planner_unit.py # NEW — 5-stage state machine on fakes +├── real_call/ +│ └── test_paper_review_convergence_e2e.py # NEW — full cycle on a fixture project +└── integration/ + └── test_revision_in_progress_idempotency.py # NEW — scheduler skips locked projects +``` + +**Structure Decision**: Single-project Python module (DEFAULT). All new modules live under `src/llmxive/agents/`. The constitution's "single source of truth" requires modifications happen in the canonical files, not parallel copies. The 12 specialist prompts already exist; we modify them in place to emit action_items + include the shared re-review snippet via a small template helper. No new package, no new directory tree at the top level. + +## Complexity Tracking + +(No constitution violations to justify.) diff --git a/specs/012-paper-review-convergence/quickstart.md b/specs/012-paper-review-convergence/quickstart.md new file mode 100644 index 000000000..f613d5869 --- /dev/null +++ b/specs/012-paper-review-convergence/quickstart.md @@ -0,0 +1,117 @@ +# Quickstart: Paper Review Convergence + +This is the operator's how-to for driving a paper through the new converging review pipeline. Read this after `spec.md` and `data-model.md`. + +## 0. Prerequisites + +```bash +# Standard llmXive setup +pip install -e ".[dev]" +python -m llmxive preflight # validates env, keys, prompts, backends +``` + +Confirm a Dartmouth Chat API key is reachable: + +```bash +python -c "from llmxive.credentials import load_dartmouth_key; print('OK' if load_dartmouth_key() else 'MISSING')" +``` + +## 1. Drive a home-grown paper through one revision cycle + +Suppose a project `PROJ-100-my-experiment` is at `paper_review` with at least one prior round of reviews that flagged writing-class action items. + +```bash +# Cron tick (or one-shot manual run) for paper review +python -m llmxive run --max-tasks 13 --stage paper_review --project PROJ-100-my-experiment +``` + +Expected sequence after the change ships: + +1. 12 specialist reviewers + 1 lead reviewer each produce a `ReviewRecord` with `action_items`. +2. Advancement evaluator examines per-specialist most-recent verdicts. +3. Outcome (deterministic given the verdicts): + - All specialists `accept` → `PAPER_ACCEPTED` (terminal). + - Any `fatal` item → `BRAINSTORMED` + rejection rationale appended to idea record. + - Otherwise (writing or science items, no fatal) → `PAPER_REVISION_IN_PROGRESS`. + +If the outcome is `PAPER_REVISION_IN_PROGRESS`, the `revision_planner` is invoked in the same tick: + +```bash +# Driven automatically by the advancement evaluator — no separate command needed +# Internally runs: speckit-specify → clarify → plan → tasks → analyze (auto-mode) +``` + +On success → `READY_FOR_IMPLEMENTATION` (with `revision_spec_path` field set). +On analyzer-stuck failure → `PAPER_REVISION_BLOCKED`. + +## 2. Drive an arxiv-intake paper through the guardrail path + +Suppose `PROJ-564-qwen-image-vae-2-0-technical-report` (arxiv-intake) is at `paper_review`. + +```bash +python -m llmxive run --max-tasks 13 --stage paper_review --project PROJ-564-qwen-image-vae-2-0-technical-report +``` + +Expected: + +1. 13 reviewers produce records. +2. Advancement evaluator detects arxiv-intake (presence of `paper/metadata.json` + absence of `paper/specs/`). +3. Outcome: + - All accept → `PAPER_ACCEPTED`. + - Any fatal → `BRAINSTORMED` + rejection rationale. + - Writing/science items, no fatal → `PAPER_ACCEPTED` (with caveats) + new round appended to `projects/PROJ-564-.../upstream_feedback.yaml`. +4. `paper/source/` MUST be unchanged in all three outcomes. +5. The web dashboard's card for this paper surfaces the `upstream_feedback.yaml` content under a "Reviewer feedback (upstream)" header. + +## 3. Re-review a paper that's been revised + +After an implementer agent runs `speckit-implement` against a `READY_FOR_IMPLEMENTATION` project, the project transitions back to `PAPER_REVIEW`. + +```bash +python -m llmxive run --max-tasks 13 --stage paper_review --project PROJ-100-my-experiment +``` + +Expected (per-specialist re-review protocol): + +1. For each specialist that has ≥1 prior `ReviewRecord` for this project → that specialist's prompt uses the re-review block. Its prior action items are listed; the model checks (a) addressed? (b) new issues? +2. For each specialist with NO prior records (e.g., newly added) → full critique prompt. +3. The model emits one record per specialist. If every specialist's most-recent verdict is `accept` → `PAPER_ACCEPTED`. + +If even one specialist re-flags an unaddressed item → another `PAPER_REVISION_IN_PROGRESS` round. + +## 4. Inspect outcomes + +```bash +# State of all paper-stage projects +python -m llmxive projects ls --stage paper_review,paper_revision_in_progress,paper_revision_blocked + +# Diagnostic for a blocked project +cat specs/auto-revisions/PROJ-X-Y/round-N/result.yaml + +# Upstream feedback for an arxiv-intake project +cat projects/PROJ-564-.../upstream_feedback.yaml +``` + +## 5. Manually unblock a paper_revision_blocked project + +If the analyzer is genuinely stuck on a poorly-formed action item: + +```bash +# 1. Edit the action items file to remove or rephrase +$EDITOR state/revisions/PROJ-X-Y/round-N.yaml + +# 2. Reset state back to paper_minor_revision so the planner re-tries +llmxive project unblock PROJ-X-Y + +# 3. Next cron tick re-attempts the auto-plan +``` + +The `unblock` command validates that the action items file was actually modified (no-op edits are rejected), and resets the round counter. + +## 6. End-to-end smoke test (real LLM) + +```bash +LLMXIVE_REAL_TESTS=1 pytest tests/real_call/test_paper_review_convergence_e2e.py -v +``` + +This test drives a small fixture project through one full review→revision→re-review cycle with the real Dartmouth backend. Expected runtime: ≤5 minutes. diff --git a/specs/012-paper-review-convergence/research.md b/specs/012-paper-review-convergence/research.md new file mode 100644 index 000000000..8c9eeca03 --- /dev/null +++ b/specs/012-paper-review-convergence/research.md @@ -0,0 +1,140 @@ +# Phase 0 Research: Paper Review Convergence + +## Open questions deferred from /speckit-clarify (now resolved here) + +### R1. Action-item ID generation strategy + +**Decision**: `id = sha1(canonicalize(text))[:12]` where `canonicalize` lowercases, strips punctuation+whitespace runs, removes section/figure references (e.g., "in Section 3.2" → ""), and applies a small stop-word filter. The resulting 12-char hex is the stable ID. + +**Rationale**: +- Stability across re-reviews depends on the SAME concern producing the SAME hash. Canonicalization absorbs cosmetic LLM variation (capitalization, "missing β_k value" vs "β_k value is missing", "in Section 4.1" vs "in Section 4.2 after the table was renumbered"). +- 12 hex chars = 48 bits of ID space; collision probability across ≤200 action items per project is effectively zero (birthday bound: ~16M items needed for 50% collision chance). +- Deterministic + content-derived → no need for a stateful ID-allocator; new reviews can compute IDs locally without consulting prior reviews. +- Implementation: a single helper `action_item_id(text: str) -> str` in `src/llmxive/types.py` so callers don't reinvent canonicalization. + +**Alternatives considered**: +- *Random UUIDs*: rejected — re-reviewer would mint a new UUID for the same concern, defeating SC-005 (stable IDs). +- *Sequential numbers per project*: rejected — requires a stateful counter, races between concurrent reviewers, and breaks the "compute locally" property. +- *Semantic embedding similarity*: rejected — depends on a model, expensive at re-review time, hard to make deterministic across model versions. + +### R2. Auto-plan pipeline invocation mechanism + +**Decision**: The 5-stage auto-plan runs as **a subprocess driver in a single Python process**, invoked by the advancement evaluator when it transitions a project to `paper_revision_in_progress`. The driver shells out to the speckit skill scripts (`.specify/scripts/bash/setup-plan.sh`, `.specify/scripts/bash/check-prerequisites.sh`, etc.) and to the speckit-skill-equivalent code paths under `src/llmxive/speckit/` (which already exist for Phase 3 / spec 011). + +The driver is `revision_planner.py`: + +```python +def run_revision_pipeline(project_id: str, action_items: list[ActionItem], + revision_kind: Literal["paper_writing", "paper_science"]) -> RevisionSpecResult: + """Runs specify → clarify → plan → tasks → analyze. + Returns a RevisionSpecResult dataclass with the new spec dir + status. + Raises RevisionPlanningError if any stage fails. + """ +``` + +**Rationale**: +- Spec 011 already added `src/llmxive/speckit/slash_command.py` and `src/llmxive/speckit/_inspection.py` to drive Specifier + Clarifier programmatically with full inspection records. Reusing those keeps the single-source-of-truth principle intact. +- Subprocess (not asyncio task) lets each stage have its own working directory + env, mirroring how the human-driven pipeline works. +- Single process (not multi-machine queue) keeps it simple at current scale (~10s of papers in flight). +- Failure isolation: if stage 3 of 5 fails, the driver writes a `paper_revision_blocked` diagnostic and returns — no partial state corruption. + +**Alternatives considered**: +- *GitHub Actions workflow_dispatch per stage*: rejected — adds 5 round-trips to GitHub per revision, slow + brittle. +- *In-process LLM calls (no shell-out)*: rejected — the speckit scripts already exist and are the canonical entry points; bypassing them duplicates logic. + +### R3. Recovery path from `paper_revision_blocked` + +**Decision**: `paper_revision_blocked` is **terminal until human intervention**. The state surfaces in the web dashboard's diagnostics tab with the analyzer's last report attached. A human can: + +1. Manually edit the action items file under `state/revisions//.yaml` to remove or rephrase items the analyzer can't resolve. +2. Manually transition the project back to `paper_minor_revision` (or whichever was the source) via a CLI command `llmxive project unblock ` — which validates the human did something AND resets the round counter. +3. Manually transition to `brainstormed` (reject) if the situation is genuinely unrecoverable. + +**Rationale**: +- Auto-retry of a stuck analyzer is wasteful (same input → same stuck output). +- This matches the constitution's "fail fast → actionable exception" principle — the analyzer's findings ARE the actionable diagnostic. +- The `unblock` CLI command is small (a state-file rewrite + a history entry) and gives operators a clear escape valve without rewriting the gate logic. + +**Alternatives considered**: +- *Auto-retry after N ticks*: rejected — analyzer is deterministic given inputs; retry without input change is pointless. +- *Auto-escalate to `paper_major_revision_science`*: rejected — masks the planning failure as a science failure; loses diagnostic signal. +- *Auto-transition to `HUMAN_INPUT_NEEDED`*: rejected — `paper_revision_blocked` is more specific and surfaces the diagnostic better. (Note: this is an intentional separate state; HUMAN_INPUT_NEEDED is the existing generic blocker.) + +### R4. Re-review prompt structure + +**Decision**: The shared `agents/prompts/_shared/rereview_block.md` snippet contains: + +``` +## Re-Review Protocol (prior action items present) + +You have reviewed this paper before. Your prior review's action items are listed +below with their stable IDs. For this re-review, your job is REDUCED to two +questions: + +(a) For each prior action item: has it been ADEQUATELY ADDRESSED in the current + revision? +(b) Has the revision INTRODUCED ANY NEW ISSUES? + +Output rules: +- If (a) = YES for ALL prior items AND (b) = NO new issues → verdict: accept. + Your `action_items` list MUST be empty. +- If (a) = NO for one or more prior items → verdict: minor_revision (or + major_revision_writing if the unaddressed items are writing-class, or + major_revision_science if science-class, or fundamental_flaws if fatal-class). + Your `action_items` list MUST contain the unaddressed items with their + ORIGINAL IDs preserved (do NOT mint new IDs for re-flags of the same + concern). Append any NEW issues (with newly-generated IDs) AFTER the + re-flagged items. +- DO NOT generate fresh independent critique. This is a diff-check, not a + full review. + +Prior action items (most recent prior review for THIS specialist): +{prior_action_items_yaml} +``` + +**Rationale**: +- Putting it in `_shared/` and templating-in via `{prior_action_items_yaml}` keeps the protocol identical across all 12 specialists (single source of truth). +- Explicit "ADEQUATELY ADDRESSED" + "REDUCED to two questions" + "DO NOT generate fresh independent critique" is the load-bearing language — without all three, models drift back into full critique on the next round. +- Only the latest prior review (per specialist) is shown — older rounds are stale and inflating the prompt with them just confuses the diff-check. + +**Alternatives considered**: +- *Single round-trip with system-message-only instructions*: rejected — the model needs the prior items in-prompt to actually compare against them. +- *Include ALL prior rounds*: rejected — token-budget pressure + the most recent round is what defines "what was supposed to be fixed in this iteration". + +### R5. Severity classification responsibility + +**Decision**: The reviewer LLM assigns severity at emission time, per action item. The LLM prompt provides explicit definitions: + +- `writing` — the issue can be fixed by editing the manuscript text alone (typos, clarity, missing citation, unclear caption, terminology drift, jargon). +- `science` — the issue requires re-running an experiment, re-analyzing data, adding a control condition, or otherwise touching the underlying research artifact. Cannot be fixed by text edits. +- `fatal` — the central claim is unsupportable, the data is unrecoverable, the design has no scientific merit. The paper cannot be salvaged by any revision; the underlying idea should return to the backlog. + +The advancement evaluator trusts this classification and routes accordingly (writing → paper_minor_revision; science → paper_major_revision_science; fatal in ANY item → reject to BRAINSTORMED). + +**Rationale**: +- The LLM is the only entity with semantic context about what the issue is. Post-hoc reclassification is brittle. +- Trust matches the existing pattern of trusting the LLM's `verdict` field. +- For the rare case where a `writing` item is mis-classified, the worst outcome is a writing-revision pipeline gets kicked off — which is cheaper than under-routing. + +**Alternatives considered**: +- *Post-hoc keyword classifier*: rejected — adds a parallel classifier (constitution violation: single source of truth) and ML drift over time. +- *Per-specialist defaults (jargon_police always writing, scientific_evidence always science)*: rejected — wrong for cross-cutting issues; jargon_police occasionally finds a term that hides a substantive claim. + +## Existing-codebase reuse audit + +Per Constitution I (single source of truth), before adding new modules we verified: + +| New module | Existing equivalent? | Decision | +|-|-|-| +| `revision_planner.py` | `src/llmxive/speckit/slash_command.py` (Phase 3) handles individual stage runs | NEW module reuses slash_command.py as its building block; no parallel implementation. | +| `upstream_feedback.py` | none — annotation file is feature-new | NEW (small, ~50 LOC). | +| `_shared/rereview_block.md` | none — no shared snippet pattern exists yet | NEW (~20 LOC); introduces an `_shared/` convention so future shared snippets follow it. | +| Action item ID helper | none | Added to existing `src/llmxive/types.py` (where the schema lives). | +| `paper_revision_in_progress` stage | `Stage` enum in `src/llmxive/types.py` | EXTEND enum; no parallel state machine. | +| Three-way routing | `advancement.py` already has paper_review handler | MODIFY existing handler; no parallel `advancement_v2.py`. | + +## Out-of-scope (per spec Assumptions) + +- The implementation-agent that consumes `ready_for_implementation` flags. The spec contract is "we set the flag"; the consumer is a separate workstream. +- Real-call hallucination detection on specialist reviews (covered elsewhere). +- Web dashboard UI changes for `paper_revision_in_progress` / `paper_revision_blocked` states (data is regenerated; UI rendering of new states is a follow-up if dashboard breaks). diff --git a/specs/012-paper-review-convergence/spec.md b/specs/012-paper-review-convergence/spec.md new file mode 100644 index 000000000..bccc383d2 --- /dev/null +++ b/specs/012-paper-review-convergence/spec.md @@ -0,0 +1,214 @@ +# Feature Specification: Paper Review Convergence + +**Feature Branch**: `012-paper-review-convergence` +**Created**: 2026-05-17 +**Status**: Draft +**Input**: User description: "redesign paper review acceptance + revision loop" + +## Background + +The current paper-review pipeline ties acceptance to a unanimous-specialists gate: a paper is published only if every one of the 12 specialist reviewers (jargon police, figure critic, statistical analysis, scientific evidence, code/data quality, claim accuracy, logical consistency, overreach, safety/ethics, text formatting, writing quality) records an `accept` verdict at least once. In practice the gate is unreachable — every specialist is calibrated to *find* issues, so at least one always flags a minor revision regardless of paper quality. Reviewed papers therefore ping-pong forever between `paper_review` and `paper_minor_revision`, never advancing to `paper_accepted`. + +A second problem compounds this: on each re-review pass, specialists treat the paper as fresh and surface a *new* set of nits. There is no notion of "did the prior round's concerns get addressed?" — so even if every original action item is fixed, the next round simply produces a new list of equivalent quibbles and the loop continues. + +A third gap: when a verdict *does* trigger a revision (minor or major), there is no automatic kickoff of the revision work itself. The project sits at a `*_revision` stage waiting for a human (or never-quite-wired-up agent) to construct a revision plan and execute it. + +## Clarifications + +### Session 2026-05-17 + +- Q: While the auto-planned revision-spec pipeline (specify→clarify→plan→tasks→analyze) is running, what should the project's `current_stage` be? → A: Add a new stage `paper_revision_in_progress`. The project moves there when auto-planning starts and stays until all five speckit stages complete; then it transitions to a flag/state indicating "ready for implementation". +- Q: When a project has prior reviews from some specialists but not others (e.g., a newly-added specialist), which protocol does each specialist use? → A: Per-specialist toggle. A specialist uses the re-review protocol only if THAT specialist has ≥1 prior review for this project; otherwise it runs the standard full-critique prompt. + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 — A genuinely-good paper converges to acceptance (Priority: P1) + +A paper enters review, is critiqued, has the concrete action items addressed in a revision round, and on re-review the specialists confirm "yes, the prior items are addressed; nothing new is broken" → the paper advances to `paper_accepted` and is published. + +**Why this priority**: This is the failing case today. Without it, no paper ever reaches `paper_accepted`, the pipeline produces no output, and the value of the entire review apparatus is zero. + +**Independent Test**: Drive a fixture paper through one review → minor revision → re-implementation → re-review cycle. Assert that when every prior action item is addressed and no new issues are introduced, the project's stage transitions to `paper_accepted`. Verify a publication record is emitted. + +**Acceptance Scenarios**: + +1. **Given** a paper at `paper_review` with prior reviews recording specific action items, **When** the revision agent addresses every action item and re-review confirms (a) all prior items addressed AND (b) no new issues introduced, **Then** the project transitions to `paper_accepted` and is published. +2. **Given** a paper at `paper_review` with no prior reviews and the LLM is satisfied with the manuscript as-is, **When** every specialist returns `accept` in the first round, **Then** the project transitions to `paper_accepted` without any revision cycle. + +--- + +### User Story 2 — Writing-only concerns trigger an auto-planned revision (Priority: P1) + +A paper has issues that can be fixed by edits to the manuscript text (typos, clarity, missing citations, figure caption work, terminology consistency, etc.) — no new experiments needed. The system constructs a fresh revision spec, plans the work, decomposes into tasks, analyzes for gaps, and flags the project as ready for an implementation agent to pick up and edit the manuscript. + +**Why this priority**: This is the most common revision class. Without auto-planning, projects stall at `paper_minor_revision` waiting for a human. With it, the pipeline self-feeds. + +**Independent Test**: Drive a fixture paper through review with at least one writing-class verdict. Assert that a new paper-revision spec directory is generated, its plan/tasks/analyze stages complete automatically, and the project is flagged as ready for `speckit-implement`. + +**Acceptance Scenarios**: + +1. **Given** a paper at `paper_review` whose specialist verdicts include any of `minor_revision` / `major_revision_writing` (and no `*_science` or `reject`), **When** the advancement evaluator runs, **Then** the system kicks off `speckit-specify` → `speckit-clarify` → `speckit-plan` → `speckit-tasks` → `speckit-analyze` for a paper-revision spec rooted in the consolidated action items, addressing all analyzer findings with the recommended remediation. +2. **Given** the auto-planned revision pipeline has completed all five speckit stages, **When** the project state is inspected, **Then** the project is flagged `ready_for_implementation` with a reference to the new spec directory. +3. **Given** the project is flagged `ready_for_implementation`, **When** an implementation agent next picks up the project, **Then** it runs `speckit-implement` against the new spec; on completion, the project re-enters `paper_review` for re-review. + +--- + +### User Story 3 — Mild science concerns trigger a major revision that re-enters research (Priority: P1) + +A paper has issues that can't be fixed by writing alone — a methodological gap, a missing control condition, an unwarranted claim — but the core research idea is salvageable. The system constructs a research-revision spec and routes the project back to the research-spec phase so the experimental work can be redone. ("Mild" here means at least one action item has `severity: science`, AND no action item has `severity: fatal`.) + +**Why this priority**: Without this path, science-class concerns either silently degrade to "minor revision" (insufficient — the writing pipeline can't fix them) or stall. Both outcomes hide real defects. + +**Independent Test**: Drive a fixture paper through review with at least one `major_revision_science` verdict. Assert that a new research-revision spec is generated, the project's stage moves back to the research-spec phase, and the project is flagged ready for re-implementation. + +**Acceptance Scenarios**: + +1. **Given** a paper at `paper_review` whose specialist verdicts include `major_revision_science` (mild — not "fundamental flaws") and no `reject`, **When** the advancement evaluator runs, **Then** the system kicks off `speckit-specify` → `speckit-clarify` → `speckit-plan` → `speckit-tasks` → `speckit-analyze` for a research-revision spec, the project re-enters the research-spec phase, and is flagged `ready_for_implementation`. + +--- + +### User Story 4 — Severe science concerns reject the paper back to the backlog (Priority: P1) + +A paper has a fundamental flaw the system cannot work around — the central hypothesis was never supportable, the data is fabricated, the design has no scientific merit, or every claim depends on something unverifiable. The paper is rejected and the underlying idea returns to the backlog with a concrete explanation so a human (or future agent) can decide whether to flesh out a new approach. ("Severe" here means at least one action item has `severity: fatal`.) + +**Why this priority**: Without a rejection path, fundamentally broken work consumes review/implementation resources forever. Without a concrete explanation attached, returning ideas to the backlog drops context. + +**Independent Test**: Drive a fixture paper through review with at least one `fundamental_flaws` (or equivalent severe) verdict. Assert that the project transitions to `brainstormed`, the original idea is preserved, and a rejection rationale citing each fatal issue is attached to the idea. + +**Acceptance Scenarios**: + +1. **Given** a paper at `paper_review` whose aggregated specialist verdicts include `fundamental_flaws` or `reject`, **When** the advancement evaluator runs, **Then** the project transitions to `brainstormed`, the rejection rationale (citing each fatal action item) is appended to the idea record, and no revision pipeline is triggered. + +--- + +### User Story 5 — Reviewers stop generating fresh critique on every round (Priority: P2) + +When a paper is re-reviewed after a revision, the reviewer's prompt focuses it on two diff-style questions instead of starting from scratch: (a) have the prior action items been addressed? and (b) has the revision introduced any new issues? This prevents the "endless nit" failure mode where every round surfaces an equally-valid but different set of minor revisions. + +**Why this priority**: Even with the new acceptance criterion (unanimous accept), without the re-review protocol the loop will still oscillate because each round produces new equivalent nits. P2 because the convergence guarantee comes from US1; this story makes convergence *fast* rather than *eventually*. + +**Independent Test**: Construct a paper with N prior reviews each recording specific action items. Drive a re-review pass. Assert the reviewer's output references each prior action item by ID, classifies each as "addressed" / "partially addressed" / "not addressed", explicitly lists or denies new issues, and emits a verdict consistent with the two-question protocol. + +**Acceptance Scenarios**: + +1. **Given** a paper has ≥1 prior paper-review records with action items, **When** a reviewer runs, **Then** its prompt includes the prior action items verbatim and instructs the model to apply the two-question protocol. +2. **Given** the model judges every prior item addressed AND finds no new issues, **When** it emits a verdict, **Then** the verdict is `accept` (not "minor revision because there's always something"). +3. **Given** the model judges some prior item NOT addressed, **When** it emits a verdict, **Then** the verdict explicitly references the unaddressed item(s) by ID, and the action_items list contains only the unaddressed (or newly-broken) items — not a fresh re-critique. + +--- + +### User Story 6 — Every review record carries structured action items (Priority: P1) + +Today reviews are free-form prose. The new pipeline can't apply the re-review protocol or auto-plan revisions without a structured list of concrete things the authors must do. Every review record gains an `action_items` field — a list of short, actionable statements, each with a stable ID and a severity classification. + +**Why this priority**: This is a structural prerequisite for US1, US2, US3, US5. Without it, the rest of the convergence work has no machine-readable input. + +**Independent Test**: Inspect any review record emitted by the new pipeline. Assert it contains an `action_items` field, the field is a list (possibly empty for an `accept`), each item has a stable ID + short text + severity classification (writing / science / fatal), and the union of action_items across the review record's verdict drives advancement. + +**Acceptance Scenarios**: + +1. **Given** a reviewer emits a verdict other than `accept`, **When** the review record is parsed, **Then** `action_items` is non-empty and each item has `id`, `text`, `severity` ∈ {writing, science, fatal}. +2. **Given** a reviewer emits `accept`, **When** the review record is parsed, **Then** `action_items` may be empty. + +--- + +### User Story 7 — arXiv-intake papers don't get mutated by the writing-revision path (Priority: P2) + +arXiv-intake papers are third-party submissions; their source tarball is frozen. The writing-revision path (which would modify the manuscript) cannot apply to them — there is no `paper/source/` for the system to edit. Their only legitimate outcomes are accept-as-is or reject. The science-revision path is even less applicable: the upstream authors aren't going to re-run their experiments on our behalf. + +**Why this priority**: Without this distinction, the system would try to plan a writing revision for an arxiv-intake paper, fail (or worse, succeed and silently corrupt the source), and stall. P2 because the home-grown convergence work matters more in volume, but the arxiv-intake guardrail must exist to avoid a known foot-gun. + +**Independent Test**: Construct an arxiv-intake fixture project and drive it through review with a `minor_revision` verdict. Assert that the system does NOT kick off a writing-revision pipeline against the frozen source — instead it records a "request changes from upstream" annotation against the project and either accepts-with-caveats or rejects. + +**Acceptance Scenarios**: + +1. **Given** an arxiv-intake paper at `paper_review` whose specialists yield writing-class verdicts, **When** the advancement evaluator runs, **Then** the system records the consolidated action items as an upstream-feedback annotation and either (a) advances the paper to `paper_accepted` with caveats noted, or (b) transitions to `brainstormed` with the rationale — but does NOT attempt to mutate `paper/source/`. + +--- + +### Edge Cases + +- **All specialists accept on a paper with prior unresolved action items**: should still accept (the prior items were judged addressed by every specialist; that's the convergence signal). +- **Mixed verdicts spanning writing AND science**: science class wins (worst-case routing — writing fixes can't address science gaps, but a science revision pass will also touch the writing). +- **Specialists hallucinate new "issues" not actually present in the paper**: out of scope here; covered by the existing real-call regression suite. +- **A revision spec auto-plan fails (analyzer can't reach zero findings)**: project stalls at a new `paper_revision_blocked` state with a diagnostic record. No silent advancement, no silent demotion. +- **The same action item appears in multiple specialists' reviews**: deduplicate by canonicalized text when consolidating to a revision-spec input. +- **A reviewer emits an `accept` verdict but their action_items list is non-empty**: the action items are recorded as informational notes but do not gate advancement; the verdict is what matters. +- **An auto-planned revision pipeline runs but the implementation agent is busy/missing**: the project stays flagged `ready_for_implementation` and the next available implementation tick picks it up. +- **A re-review judges some action item "partially addressed"**: counts as "not addressed" for the convergence test; the project goes back through another revision round. + +## Requirements *(mandatory)* + +### Functional Requirements + +#### Acceptance gate (the convergence change) + +- **FR-001**: System MUST advance a paper to `paper_accepted` when every required specialist reviewer's most-recent verdict is `accept`. No additional point threshold is required. +- **FR-002**: System MUST NOT advance a paper to `paper_accepted` if any required specialist's most-recent verdict is other than `accept`, regardless of cumulative points. +- **FR-003**: System MUST evaluate the "most-recent verdict per specialist" against the live artifact hash. Reviews of stale artifacts (hash mismatch) MUST be ignored for the gate. + +#### Three-way revision classification + +- **FR-004**: System MUST classify a non-accept aggregate verdict as exactly one of `writing_revision`, `science_revision`, or `reject` based on the highest-severity action item across all specialists' most-recent reviews. +- **FR-005**: Severity ordering for classification, lowest to highest: `writing` → `science` → `fatal`. The classification is the severity of the most severe action item. +- **FR-006**: `writing_revision` classification MUST transition the project to `PAPER_REVISION_IN_PROGRESS` with a `revision_kind="paper_writing"` discriminator that drives the auto-plan pipeline (FR-009). Intermediate stages such as `paper_minor_revision` and `paper_major_revision_writing` are NO LONGER reachable from `PAPER_REVIEW` directly — they are absorbed into `PAPER_REVISION_IN_PROGRESS`. +- **FR-007**: `science_revision` classification MUST transition the project to `PAPER_REVISION_IN_PROGRESS` with `revision_kind="paper_science"`. Intermediate stage `paper_major_revision_science` is similarly absorbed. +- **FR-008**: `reject` classification MUST transition the project to `BRAINSTORMED`. The rejection rationale (consolidated `fatal` action items) MUST be appended to the idea record so the backlog reflects why it was rejected. + +#### Auto-planned revision + +- **FR-009**: On entering `PAPER_REVISION_IN_PROGRESS`, the system MUST automatically kick off a revision-spec pipeline that runs `speckit-specify` → `speckit-clarify` → `speckit-plan` → `speckit-tasks` → `speckit-analyze`. While `current_stage == PAPER_REVISION_IN_PROGRESS`, the scheduler MUST NOT re-trigger the revision pipeline on subsequent ticks (idempotency). +- **FR-010**: The revision-spec pipeline MUST seed `speckit-specify`'s input with the consolidated action items from the triggering review round (deduplicated, severity-classified, mapped back to the specialist(s) that raised each). +- **FR-011**: The `speckit-analyze` stage of the revision-spec pipeline MUST address every finding it surfaces using its recommended remediation (no findings left unresolved). If after three remediation iterations the analyzer still surfaces findings, the project transitions to a `PAPER_REVISION_BLOCKED` state with a diagnostic record, NOT to acceptance or rejection. +- **FR-012**: On successful completion of all five revision-spec stages, the system MUST transition the project to stage `READY_FOR_IMPLEMENTATION` and set the project field `revision_spec_path` to the new spec directory. +- **FR-013**: The system MUST surface `READY_FOR_IMPLEMENTATION` projects via an index file (`state/revisions/index.yaml`) so that an implementation agent CAN discover them. The system MUST also commit to a transition rule: when an implementation agent reports successful completion of `speckit-implement` against a `READY_FOR_IMPLEMENTATION` project, the project's `current_stage` MUST be set to `PAPER_REVIEW` (and `revision_spec_path` cleared) so a re-review pass starts. The implementation agent itself is out of scope for this spec (see Assumptions); the spec's contract is the discovery index + the transition rule. + +#### Re-review protocol + +- **FR-014**: When a specialist reviewer runs against a project for which THAT SAME SPECIALIST has ≥1 prior review record of the same stage, its prompt MUST include that specialist's prior action items verbatim and the two-question protocol instruction: "(a) Have all prior action items been adequately addressed? (b) Have any new issues been introduced by this revision?" The per-specialist toggle keeps each reviewer-lens honest — a specialist with no prior view of the paper has nothing to "check addressed against" and would silently rubber-stamp if forced into re-review. +- **FR-015**: Under the re-review protocol, if the model judges every prior action item addressed AND finds no new issues, it MUST emit verdict `accept`. The system MUST NOT post-process this verdict to add nits. +- **FR-016**: Under the re-review protocol, if the model judges any prior action item not addressed, the new review's `action_items` list MUST contain those unaddressed items (with their original IDs preserved) plus any newly-discovered items — NOT a fresh independent critique. +- **FR-017**: A specialist with NO prior review record for this project (first-round or newly-added specialist) MUST NOT use the re-review protocol; it runs the standard full-critique prompt. + +#### Action items on reviews + +- **FR-018**: Every review record MUST include an `action_items` field. The field is a list (possibly empty when verdict = `accept`). +- **FR-019**: Each action item MUST have: a stable `id` (durable across re-reviews of the same project), a short `text` (≤500 chars), and a `severity` in {`writing`, `science`, `fatal`}. +- **FR-020**: Action item IDs MUST be stable across re-reviews: if a re-reviewer flags the same concern, it reuses the prior item's ID rather than minting a new one. + +#### arXiv-intake guardrails + +- **FR-021**: For arxiv-intake papers (detected by presence of `paper/metadata.json` and absence of a paper-feature-dir), the writing-revision and science-revision paths MUST NOT attempt to mutate `paper/source/`. Instead, the consolidated action items MUST be recorded as an upstream-feedback annotation file under the project, and the project's final outcome is restricted to `PAPER_ACCEPTED` (with caveats) or `BRAINSTORMED` (rejection). +- **FR-022**: An arxiv-intake paper that reaches `PAPER_ACCEPTED` with non-empty upstream-feedback annotations MUST still be marked `PAPER_ACCEPTED` — the caveats are surfaced on the published artifact but do not block publication. + +#### Operator escape hatch (unblock) + +- **FR-023**: The system MUST provide a CLI subcommand `llmxive project unblock ` that operators can run when a project is at `PAPER_REVISION_BLOCKED`. The command MUST: (a) verify the project's current stage is `PAPER_REVISION_BLOCKED`; (b) refuse to no-op-unblock — i.e., require that the operator has actually modified `state/revisions//round-.yaml` since the block was recorded (mtime check); (c) transition the project back to `PAPER_REVIEW` (or `PAPER_MINOR_REVISION` if the operator passes a flag); (d) append a history entry recording the unblock action. The command MUST raise a clear error and exit non-zero on any precondition failure. + +### Key Entities + +- **ReviewRecord**: an immutable per-reviewer-per-round artifact. Existing fields (`verdict`, `score`, `feedback`, `reviewer_kind`, `reviewer_name`, `artifact_hash`, `artifact_path`, `reviewed_at`, `model_name`, `backend`, `prompt_version`, `github_authenticated`) plus the new `action_items` list. +- **ActionItem**: `{id, text, severity}`. Severity is one of `writing` / `science` / `fatal`. IDs are stable across re-reviews — the same concern keeps the same ID even when raised by different reviewers in different rounds. +- **RevisionSpec**: a generated spec directory rooted in the consolidated action items of a review round. Lives alongside (not inside) the original paper's source. Has its own spec.md / plan.md / tasks.md / analyze report. +- **UpstreamFeedbackAnnotation**: for arxiv-intake papers only. A per-project file recording consolidated action items that would have triggered a revision pipeline, but the source is frozen — so the items are surfaced as feedback rather than executed. + +## Success Criteria *(mandatory)* + +### Measurable Outcomes + +- **SC-001**: At least one paper that previously oscillated forever between `PAPER_REVIEW` and `paper_minor_revision` converges to `PAPER_ACCEPTED` (or, if its content genuinely warrants it, to `BRAINSTORMED`) within ≤3 revision rounds after the change ships. +- **SC-002**: All 8 previously-failing arxiv-intake fixture papers (PROJ-564, 565, 566, 568, 570, 571, 576, 578) reach a terminal state (`PAPER_ACCEPTED` with caveats, or `BRAINSTORMED`) under the test suite, with zero attempts to mutate `paper/source/` for any of them. (Verified by a parameterized real-call test that iterates over all 8 fixtures.) +- **SC-003**: No paper sits at `PAPER_REVISION_IN_PROGRESS` for more than 3 consecutive cron ticks without either advancing to `READY_FOR_IMPLEMENTATION` or transitioning to `PAPER_REVISION_BLOCKED` with a diagnostic record. (Enforced by scheduler-skip logic + the analyzer's 3-iteration cap.) +- **SC-004**: Every review record emitted after the change ships has a parseable, schema-valid `action_items` field. +- **SC-005**: When a re-review records that a prior action item has been "addressed", the re-review's record MUST NOT contain a new item with a different ID describing the same concern as a prior item. Operationally: in the parameterized test fixture that drives ≥2 review rounds, the ID-stability rate `same_id_for_same_concern / re-flagged_items` MUST be ≥0.8. +- **SC-006**: The end-to-end real-call test (T050) MUST drive a fixture through ≥1 successful auto-plan pipeline (all 5 speckit stages green) AND ≥1 simulated analyzer-stuck case (project lands in `PAPER_REVISION_BLOCKED` with a diagnostic). Both branches MUST be exercised; the per-fixture pass/fail rate is recorded but is not a release gate at v1. + +## Assumptions + +- The existing 12-specialist review pipeline stays intact; only the gate logic, the re-review prompt mode, and the post-verdict routing change. +- The advancement evaluator (currently `src/llmxive/agents/advancement.py`) is the single source of truth for stage transitions; this spec's logic lives there. +- The auto-planned revision pipeline reuses the existing speckit-specify/clarify/plan/tasks/analyze skills (no new skill is invented); it just invokes them programmatically with the action-item digest as input. +- Implementation agents that consume `ready_for_implementation` flags are out of scope here — this spec assumes such an agent exists or will be added separately; the spec's contract is "we set the flag; they pick it up." +- The home-grown paper pipeline (which generates `paper/source/` and lets agents edit it) remains the primary workflow; arxiv-intake is the special-case minority that needs the guardrail. +- For SC-005's "stable IDs": the canonical-text-hash approach (id = stable hash of normalized issue text) is acceptable as long as it produces stable IDs in practice for re-raised concerns; exact ID generation strategy is an implementation detail. +- "Fatal" severity is set by the LLM at review-emission time, not inferred post hoc. We trust the specialist to know the difference between "this paragraph is unclear" (writing), "this control condition is missing" (science), and "the entire central claim is unsupportable" (fatal). diff --git a/specs/012-paper-review-convergence/tasks.md b/specs/012-paper-review-convergence/tasks.md new file mode 100644 index 000000000..68d0a553f --- /dev/null +++ b/specs/012-paper-review-convergence/tasks.md @@ -0,0 +1,244 @@ +--- +description: "Task list for spec 012 — paper review convergence" +--- + +# Tasks: Paper Review Convergence + +**Input**: Design documents from `/specs/012-paper-review-convergence/` +**Prerequisites**: plan.md ✓, spec.md ✓, research.md ✓, data-model.md ✓, contracts/ ✓, quickstart.md ✓ + +**Tests**: Real-call + unit tests are REQUIRED by Constitution III (Robustness & Reliability). Every core function MUST have at least one real-call test that exercises the actual Dartmouth backend and filesystem state. Pure-logic helpers (severity ordering, ID canonicalization, schema validators) MUST also have unit tests. + +**Organization**: Tasks are grouped by user story so each can be implemented and validated independently. + +## Format: `[ID] [P?] [Story] Description` + +- **[P]**: Can run in parallel (different files, no dependencies) +- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US6) +- File paths are absolute or repo-relative. + +## Path Conventions + +Single-project Python module. Source under `src/llmxive/`. Tests under `tests/{unit,real_call,integration}/`. Prompts under `agents/prompts/`. Spec artifacts under `specs/012-paper-review-convergence/`. + +--- + +## Phase 1: Setup (Shared Infrastructure) + +**Purpose**: Wire up the new Stage enum values and the canonical ID helper. Both are pure additions to existing files; no new packages. + +- [ ] T001 Add three new Stage enum values to [src/llmxive/types.py](src/llmxive/types.py): `PAPER_REVISION_IN_PROGRESS`, `READY_FOR_IMPLEMENTATION`, `PAPER_REVISION_BLOCKED`. Keep alphabetical order within the enum. +- [ ] T002 Update [src/llmxive/agents/lifecycle.py](src/llmxive/agents/lifecycle.py) `ALLOWED_TRANSITIONS`: add `PAPER_REVIEW → {PAPER_ACCEPTED, PAPER_REVISION_IN_PROGRESS, BRAINSTORMED}`, `PAPER_REVISION_IN_PROGRESS → {READY_FOR_IMPLEMENTATION, PAPER_REVISION_BLOCKED}`, `READY_FOR_IMPLEMENTATION → {PAPER_REVIEW}`, `PAPER_REVISION_BLOCKED → {PAPER_REVIEW, PAPER_MINOR_REVISION, BRAINSTORMED}`. Remove the now-superseded direct `PAPER_REVIEW → PAPER_MINOR_REVISION/...` transitions (the new flow routes through PAPER_REVISION_IN_PROGRESS). +- [ ] T003 [P] Add `action_item_id(text: str) -> str` helper to [src/llmxive/types.py](src/llmxive/types.py). Implements canonicalize-then-sha1 per research R1 (lowercase, strip punctuation runs, strip `Section \d+\.\d+` and `Figure \d+` references, collapse whitespace, return first 12 hex chars). + +**Checkpoint**: New stages exist in the enum + transition graph; canonical ID helper available. + +--- + +## Phase 2: Foundational (Blocking Prerequisites) + +**Purpose**: Add `ActionItem` schema + extend `ReviewRecord` with `action_items` field + shared re-review prompt snippet. Every user story depends on these. + +**⚠️ CRITICAL**: No user story work can begin until this phase is complete. + +- [ ] T004 Add `ActionItem` pydantic model to [src/llmxive/types.py](src/llmxive/types.py) with fields `id: str` (regex `^[0-9a-f]{12}$`), `text: str` (≤500 chars, non-empty), `severity: Literal["writing", "science", "fatal"]`. Add a class-level method `from_text(text, severity)` that auto-computes the id via `action_item_id`. +- [ ] T005 Extend `ReviewRecord` in [src/llmxive/types.py](src/llmxive/types.py) with `action_items: list[ActionItem] = Field(default_factory=list)`. Add a model_validator: if `reviewer_kind == "llm"` and `verdict in {"minor_revision", "full_revision", "major_revision_writing", "major_revision_science", "fundamental_flaws", "reject"}`, MUST have `len(action_items) >= 1`. Otherwise the existing score↔verdict validator continues unchanged. +- [ ] T006 [P] Create [agents/prompts/_shared/rereview_block.md](agents/prompts/_shared/rereview_block.md) with the two-question protocol snippet per research R4. Include the `{prior_action_items_yaml}` placeholder. Add a top-of-file comment explaining this is a shared snippet (single source of truth) and listing the consumers (paper_reviewer prompts). +- [ ] T007 Unit test in [tests/unit/test_action_item_schema.py](tests/unit/test_action_item_schema.py): cover (a) valid ActionItem round-trips, (b) `id` regex validation rejects bad strings, (c) `text` length cap is enforced, (d) `severity` enum is enforced, (e) `from_text` produces the same id for canonicalization-equivalent inputs (e.g., "Missing β_k" and "missing β_k value in Section 4.1."). +- [ ] T008 [P] Unit test in [tests/unit/test_review_record_action_items.py](tests/unit/test_review_record_action_items.py): cover (a) ReviewRecord with empty action_items + verdict=accept is valid, (b) ReviewRecord with empty action_items + verdict=minor_revision RAISES ValidationError, (c) back-compat: a YAML file without action_items field loads with `action_items=[]`. +- [ ] T009 [P] Unit test in [tests/unit/test_action_item_id_canonicalize.py](tests/unit/test_action_item_id_canonicalize.py): assert canonicalize absorbs casing, leading/trailing whitespace, `Section X.Y` refs, `Figure N` refs, and adjacent punctuation; verify ID collision rate is acceptable on a corpus of synthetic action-item phrasings. + +**Checkpoint**: Schema + ID generation + shared snippet are in place. The Stage enum and transition graph are consistent. From here, the user stories can be tackled in priority order. + +--- + +## Phase 3: User Story 6 - Every review record carries structured action items (Priority: P1) 🎯 PREREQUISITE FOR ALL OTHER STORIES + +**Goal**: Reviewers emit `action_items` in their YAML frontmatter; old records still load (back-compat). This is a structural prerequisite for US1, US2, US3, US4, US5. + +**Independent Test**: Drive one specialist reviewer against a fixture project; assert the emitted ReviewRecord has parseable, schema-valid `action_items` matching what the LLM produced. + +### Implementation for User Story 6 + +- [ ] T010 [US6] Update [agents/prompts/paper_reviewer.md](agents/prompts/paper_reviewer.md) (the lead reviewer prompt) to instruct the LLM to emit an `action_items` block in YAML frontmatter. Include the canonical severity definitions (writing / science / fatal) from contracts/action_item.md. +- [ ] T011 [US6] Update each of the 12 specialist prompts: [agents/prompts/paper_reviewer_claim_accuracy.md](agents/prompts/paper_reviewer_claim_accuracy.md), [agents/prompts/paper_reviewer_code_quality_paper.md](agents/prompts/paper_reviewer_code_quality_paper.md), [agents/prompts/paper_reviewer_data_quality_paper.md](agents/prompts/paper_reviewer_data_quality_paper.md), [agents/prompts/paper_reviewer_figure_critic.md](agents/prompts/paper_reviewer_figure_critic.md), [agents/prompts/paper_reviewer_jargon_police.md](agents/prompts/paper_reviewer_jargon_police.md), [agents/prompts/paper_reviewer_logical_consistency.md](agents/prompts/paper_reviewer_logical_consistency.md), [agents/prompts/paper_reviewer_overreach.md](agents/prompts/paper_reviewer_overreach.md), [agents/prompts/paper_reviewer_safety_ethics.md](agents/prompts/paper_reviewer_safety_ethics.md), [agents/prompts/paper_reviewer_scientific_evidence.md](agents/prompts/paper_reviewer_scientific_evidence.md), [agents/prompts/paper_reviewer_statistical_analysis.md](agents/prompts/paper_reviewer_statistical_analysis.md), [agents/prompts/paper_reviewer_text_formatting.md](agents/prompts/paper_reviewer_text_formatting.md), [agents/prompts/paper_reviewer_writing_quality.md](agents/prompts/paper_reviewer_writing_quality.md). Each gets the same shared `action_items` instruction block (use a shared include via render_prompt's template engine — single source of truth per Constitution I). +- [ ] T012 [US6] Modify [src/llmxive/agents/paper_reviewer.py](src/llmxive/agents/paper_reviewer.py) `handle_response`: parse `action_items` from the YAML frontmatter and include it in the `ReviewRecord.model_validate(front)` call. The existing score-normalization stays. +- [ ] T013 [US6] Real-call test in [tests/real_call/test_paper_reviewer_emits_action_items.py](tests/real_call/test_paper_reviewer_emits_action_items.py): drive ONE specialist (`paper_reviewer_jargon_police`) against PROJ-578 with the Dartmouth backend; assert the resulting review file has ≥1 action_item with valid id/text/severity AND the IDs round-trip through `action_item_id`. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: Every new review record carries structured action_items. Old records still load. The pipeline can now reason about per-concern routing. + +--- + +## Phase 4: User Story 1 - A genuinely-good paper converges to acceptance (Priority: P1) 🎯 MVP + +**Goal**: When every specialist's most-recent verdict is `accept`, the project advances to `PAPER_ACCEPTED`. No more "but jargon_police always finds one nit" stall. + +**Independent Test**: Drive a fixture project where every specialist's most-recent record has verdict=accept; assert the advancement evaluator transitions to PAPER_ACCEPTED. + +### Implementation for User Story 1 + +- [ ] T014 [US1] Modify [src/llmxive/agents/advancement.py](src/llmxive/agents/advancement.py) `_all_specialists_accept`: change semantics from "every specialist has EVER accepted" to "every specialist's MOST-RECENT non-stale record has verdict=accept". Add helper `_most_recent_per_specialist(records, live_hash)` that returns one record per specialist (the latest by `reviewed_at` whose `artifact_hash == live_hash`). +- [ ] T015 [US1] Modify the PAPER_REVIEW branch in `advancement.py`: REMOVE the `accept_total >= PAPER_ACCEPT_THRESHOLD` gate (the all-accept gate is now the sole criterion). Keep the no-blocking-citations gate. On all-accept → transition to PAPER_ACCEPTED. +- [ ] T016 [US1] Unit test in [tests/unit/test_advancement_all_accept_gate.py](tests/unit/test_advancement_all_accept_gate.py): construct synthetic records covering (a) 12 specialists all accept → PAPER_ACCEPTED, (b) 11 accept + 1 minor_revision → NOT accepted, (c) 12 accept but 1 has stale artifact_hash → that specialist is treated as "no review" so 11 specialists effective → NOT accepted, (d) one specialist has 2 records (older=minor_revision, newer=accept) → MOST-RECENT is accept so passes for that specialist. +- [ ] T017 [US1] Real-call test in [tests/real_call/test_advancement_paper_accepted_real.py](tests/real_call/test_advancement_paper_accepted_real.py): use a real fixture project where all specialists accepted; run the advancement evaluator; assert the project transitions to PAPER_ACCEPTED and a publication-record artifact is emitted. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: A paper that genuinely passes review can reach PAPER_ACCEPTED. + +--- + +## Phase 5: User Story 4 - Severe science concerns reject the paper back to the backlog (Priority: P1) + +**Goal**: When any specialist's most-recent action_items contains a `fatal` severity item, route to BRAINSTORMED with rejection rationale. + +**Independent Test**: Construct synthetic reviews with one fatal action_item; assert project transitions to BRAINSTORMED + rejection rationale is appended to idea record. + +### Implementation for User Story 4 + +- [ ] T018 [US4] Add `_max_severity_across_specialists(records, live_hash) -> Literal["writing", "science", "fatal"] | None` helper to [src/llmxive/agents/advancement.py](src/llmxive/agents/advancement.py). Returns None if all per-specialist most-recent verdicts are accept; otherwise the highest severity in any non-accept's action_items list. Severity ordering: `writing < science < fatal`. +- [ ] T019 [US4] In `advancement.py` PAPER_REVIEW branch: when `_max_severity_across_specialists` returns `fatal`, transition to BRAINSTORMED. Construct the rejection rationale by deduplicating `fatal` action_items across specialists and append to the idea record at `projects//idea/*.md` (use the canonical idea file matching the project's slug; if multiple, pick the first by mtime). +- [ ] T020 [US4] Unit test in [tests/unit/test_advancement_fatal_routing.py](tests/unit/test_advancement_fatal_routing.py): cover (a) one fatal among many writing/science → BRAINSTORMED, (b) zero fatal → not BRAINSTORMED, (c) rejection rationale text contains all unique fatal items by ID. +- [ ] T021 [US4] Real-call test in [tests/real_call/test_advancement_reject_to_brainstormed_real.py](tests/real_call/test_advancement_reject_to_brainstormed_real.py): construct a fixture project + force one fatal action_item via fixture review; run advancement; verify file system state (idea file has new rejection rationale section, project state is BRAINSTORMED). Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: Fatal-flagged papers are rejected to the backlog with traceable rationale. + +--- + +## Phase 6: User Story 2 - Writing-only concerns trigger an auto-planned revision (Priority: P1) + +**Goal**: When the max severity across specialists is `writing` (and not fatal), auto-kick a paper-revision spec pipeline. Project transitions to PAPER_REVISION_IN_PROGRESS → READY_FOR_IMPLEMENTATION. + +**Independent Test**: Construct a fixture project + reviews with writing action_items; run advancement; verify the project transitions to PAPER_REVISION_IN_PROGRESS, then revision_planner runs the 5 stages, then transitions to READY_FOR_IMPLEMENTATION with revision_spec_path set. + +### Implementation for User Story 2 + +- [ ] T022 [US2] Create [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py). Public API: `run_revision_pipeline(project_id, action_items, revision_kind) -> RevisionSpecResult`. Internals: invokes `llmxive.speckit.slash_command.run()` for each of `specify`, `clarify`, `plan`, `tasks`, `analyze` in sequence; each stage's output feeds the next; on success returns ready_for_implementation; on analyzer-stuck (3 iterations of remediation, still findings) returns blocked. +- [ ] T023 [US2] Add `RevisionSpecResult` dataclass to [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py) with fields `revision_spec_path`, `stage_results`, `final_outcome` (ready_for_implementation | paper_revision_blocked), `block_diagnostic` (None unless blocked). +- [ ] T024 [US2] Implement `_seed_specify_input(action_items)` in [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py): consolidate action_items (deduplicate by id, preserve severity ordering), build the specify input text "Address these reviewer-raised action items: ..." that becomes the spec's `$ARGUMENTS`. +- [ ] T025 [US2] Implement `_write_result_yaml(spec_dir, result)` in [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py): write a `result.yaml` to the revision spec dir per the contract at [specs/012-paper-review-convergence/contracts/revision_spec.md](specs/012-paper-review-convergence/contracts/revision_spec.md). +- [ ] T026 [US2] Implement `_update_index(repo_root, entry)` in [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py): atomically append to `state/revisions/index.yaml` so an implementer can discover ready or blocked revisions. +- [ ] T027 [US2] Modify [src/llmxive/agents/advancement.py](src/llmxive/agents/advancement.py) PAPER_REVIEW branch: when max severity is `writing` and no fatal, transition project to PAPER_REVISION_IN_PROGRESS, then immediately call `revision_planner.run_revision_pipeline(..., revision_kind="paper_writing")`. On success → transition to READY_FOR_IMPLEMENTATION with `revision_spec_path`. On blocked → transition to PAPER_REVISION_BLOCKED. +- [ ] T028 [US2] Add `revision_spec_path: str | None = None` field to the Project model in [src/llmxive/state/project.py](src/llmxive/state/project.py) (or wherever Project is defined). Default None. Set only when stage == READY_FOR_IMPLEMENTATION. +- [ ] T029 [US2] Unit test in [tests/unit/test_revision_planner_unit.py](tests/unit/test_revision_planner_unit.py): use a stubbed `slash_command.run` (NOT a mock of the LLM; the stub is at the slash-command-orchestrator level) to verify the 5-stage state machine; cover (a) all 5 succeed → ready_for_implementation result, (b) analyzer stuck → blocked result with diagnostic. +- [ ] T030 [US2] Real-call test in [tests/real_call/test_writing_revision_pipeline_real.py](tests/real_call/test_writing_revision_pipeline_real.py): drive a small fixture (home-grown project, not arxiv-intake) with writing action_items through the full pipeline; assert all 5 speckit artifacts exist; project state moves to READY_FOR_IMPLEMENTATION; revision_spec_path resolves to a real directory. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: Writing-class revisions are auto-planned and the project is queued for implementation. + +--- + +## Phase 7: User Story 3 - Mild science concerns trigger a major revision that re-enters research (Priority: P1) + +**Goal**: When max severity is `science` (and not fatal), auto-kick a research-spec revision pipeline. Project routes through PAPER_REVISION_IN_PROGRESS to READY_FOR_IMPLEMENTATION. + +**Independent Test**: Construct synthetic reviews with science action_items; run advancement; verify a research-revision spec is generated and project moves to READY_FOR_IMPLEMENTATION. + +### Implementation for User Story 3 + +- [ ] T031 [US3] In [src/llmxive/agents/advancement.py](src/llmxive/agents/advancement.py) PAPER_REVIEW branch: when max severity is `science` and no fatal, transition to PAPER_REVISION_IN_PROGRESS and call `revision_planner.run_revision_pipeline(..., revision_kind="paper_science")`. On success → READY_FOR_IMPLEMENTATION. On blocked → PAPER_REVISION_BLOCKED. +- [ ] T032 [US3] In [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py): the `revision_kind="paper_science"` branch seeds the specify input differently — the action items are framed as research-question gaps rather than writing nits, and the spec is rooted at `specs/auto-revisions//round-/` with a `kind: paper_science` marker. +- [ ] T033 [US3] Unit test in [tests/unit/test_revision_planner_science_kind.py](tests/unit/test_revision_planner_science_kind.py): verify the science branch passes the correct kind to slash_command.run and the generated spec contains a "research-question" framing. +- [ ] T034 [US3] Real-call test in [tests/real_call/test_science_revision_pipeline_real.py](tests/real_call/test_science_revision_pipeline_real.py): drive a fixture with one science action_item; assert science-revision spec is generated. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: Science-class revisions re-enter the research-spec pipeline. + +--- + +## Phase 8: User Story 5 - Re-review protocol (Priority: P2) + +**Goal**: When a specialist has ≥1 prior review for the current project, that specialist's prompt switches to the two-question protocol. Without this, the convergence guarantee from US1/US2 is *eventual*; with it, convergence is *fast*. + +**Independent Test**: Construct a fixture project with 1 prior round of reviews containing action_items. Drive a second round. For each specialist that has a prior record, assert its prompt includes the re-review block; assert the model emits verdict=accept when its prior items are addressed (use a fixture where the source was modified to address them). + +### Implementation for User Story 5 + +- [ ] T035 [US5] Add `_prior_reviews_for_specialist(project_id, specialist_name) -> list[ReviewRecord]` helper to [src/llmxive/state/reviews.py](src/llmxive/state/reviews.py). Returns all prior records for THIS project AND THIS specialist, sorted by `reviewed_at` ascending. Empty list if none. +- [ ] T036 [US5] In [src/llmxive/agents/paper_reviewer.py](src/llmxive/agents/paper_reviewer.py) `build_messages`: when prior reviews exist for THIS specialist, render the shared `_shared/rereview_block.md` snippet (with `{prior_action_items_yaml}` substituted from the most-recent prior record's action_items) and prepend it to the user prompt. Otherwise, the prompt is unchanged. +- [ ] T037 [US5] Add `_load_rereview_snippet()` helper to [src/llmxive/agents/paper_reviewer.py](src/llmxive/agents/paper_reviewer.py) (or to `agents/prompts.py` if a render helper already exists). Returns the rendered snippet given prior action_items. +- [ ] T038 [US5] Unit test in [tests/unit/test_rereview_per_specialist_toggle.py](tests/unit/test_rereview_per_specialist_toggle.py): cover (a) specialist with no prior records → no rereview block in prompt, (b) specialist with 1 prior record → block IS present and action_items are listed, (c) specialist with 2+ prior records → ONLY the most-recent prior is included. +- [ ] T039 [US5] Real-call test in [tests/real_call/test_rereview_protocol_real.py](tests/real_call/test_rereview_protocol_real.py): drive a fixture project through round 1 (manufacture some action_items), then drive round 2 with the same source. Assert the round-2 review references prior action items by their IDs AND emits a verdict consistent with the two-question protocol (either accept-all-addressed, or list-unaddressed-with-original-IDs). Additionally, COMPUTE the ID-stability rate as `(# round-2 items whose id matches a round-1 item's id) / (# round-2 items)`; assert ≥0.8 per SC-005. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: Re-review focuses on diff-check, not fresh critique. Convergence is fast, not just eventual. + +--- + +## Phase 9: User Story 7 - arXiv-intake guardrail (Priority: P2) + +**Goal**: arXiv-intake papers (frozen source) skip the writing-revision pipeline entirely. Action items are recorded as `upstream_feedback.yaml` annotations. Outcomes restricted to accept-with-caveats or reject. + +**Independent Test**: Construct an arxiv-intake fixture with writing action_items; run advancement; assert `paper/source/` is unchanged AND `upstream_feedback.yaml` contains the consolidated action items AND project advances to PAPER_ACCEPTED with caveats noted (NOT PAPER_REVISION_IN_PROGRESS). + +### Implementation for User Story 7 + +- [ ] T040 [US7] Create [src/llmxive/agents/upstream_feedback.py](src/llmxive/agents/upstream_feedback.py) with `record_round(project_id, action_items, verdict_class, note) -> Path`. Atomically appends a new Round to `projects//upstream_feedback.yaml`. Creates the file with `schema_version: 1` if absent. Uses an `.tmp + os.replace` pattern. +- [ ] T041 [US7] Add `is_arxiv_intake(project_dir: Path) -> bool` helper to [src/llmxive/state/project.py](src/llmxive/state/project.py) (single source of truth — paper_reviewer.py also uses this check; consolidate). Returns True iff `paper/metadata.json` exists AND `paper/specs/` does NOT exist. +- [ ] T042 [US7] In [src/llmxive/agents/advancement.py](src/llmxive/agents/advancement.py) PAPER_REVIEW branch: BEFORE dispatching to the revision_planner, call `is_arxiv_intake(project_dir)`. If True: call `upstream_feedback.record_round(...)` instead, then route by verdict_class — `writing` or `science` → PAPER_ACCEPTED with caveats; `fatal` → BRAINSTORMED. Never call `revision_planner.run_revision_pipeline` for arxiv-intake projects. +- [ ] T043 [US7] Add `ArxivIntakeError` exception class to [src/llmxive/agents/revision_planner.py](src/llmxive/agents/revision_planner.py). `run_revision_pipeline` raises this if called with an arxiv-intake project (defensive — should never happen, but fail fast per Constitution V). +- [ ] T044 [US7] Unit test in [tests/unit/test_upstream_feedback_writer.py](tests/unit/test_upstream_feedback_writer.py): cover (a) first call creates upstream_feedback.yaml with schema_version=1 + round 1, (b) second call appends round 2, (c) atomic write (write to .tmp then replace), (d) loaded YAML round-trips through the contract schema. +- [ ] T045 [US7] Real-call test in [tests/real_call/test_arxiv_intake_no_source_mutation.py](tests/real_call/test_arxiv_intake_no_source_mutation.py): parameterize over all 8 previously-failing arxiv-intake fixture projects (PROJ-564, 565, 566, 568, 570, 571, 576, 578). For each: drive advancement; assert (a) `paper/source/` directory tree is byte-identical before/after, (b) `upstream_feedback.yaml` has ≥1 round with the consolidated action items (or no annotation if all-accept), (c) project state is `PAPER_ACCEPTED` (with caveats) or `BRAINSTORMED`. This satisfies SC-002's "all 8 fixtures" claim. Gated on `LLMXIVE_REAL_TESTS=1`. + +**Checkpoint**: arXiv-intake papers reach a terminal state without ever mutating their source. + +--- + +## Phase 10: Integration & End-to-End + +**Purpose**: Wire scheduler idempotency, full-cycle e2e test, and the manual unblock CLI. + +- [ ] T046 In [src/llmxive/pipeline/scheduler.py](src/llmxive/pipeline/scheduler.py): when picking the next project, skip projects in PAPER_REVISION_IN_PROGRESS (the planner is already running for them, OR the planner errored without a clean state — either way the scheduler MUST NOT re-trigger). This is the idempotency guarantee from the spec clarification. +- [ ] T047 Integration test in [tests/integration/test_revision_in_progress_idempotency.py](tests/integration/test_revision_in_progress_idempotency.py): set a fixture project to PAPER_REVISION_IN_PROGRESS; run the scheduler twice; assert (a) the planner is called at most ONCE, (b) on the second tick the project is skipped, (c) no race-condition orphan state. +- [ ] T048 Add `llmxive project unblock ` CLI subcommand to [src/llmxive/cli.py](src/llmxive/cli.py): validates that `state/revisions//round-.yaml` was modified since the block (mtime check); resets `current_stage` to PAPER_MINOR_REVISION; appends a history entry; refuses to no-op-unblock. +- [ ] T049 Unit test in [tests/unit/test_cli_project_unblock.py](tests/unit/test_cli_project_unblock.py): cover (a) unblock with modified action-items file succeeds + sets stage, (b) unblock with un-modified action-items file refuses with clear error, (c) unblock on a non-blocked project errors. +- [ ] T050 End-to-end real-call test in [tests/real_call/test_paper_review_convergence_e2e.py](tests/real_call/test_paper_review_convergence_e2e.py): cover BOTH branches required by SC-006: (a) **Success branch** — drive a small home-grown fixture through review → writing-revision → 5-stage auto-plan → `READY_FOR_IMPLEMENTATION` → (simulated) implementer runs `speckit-implement` → re-review (which uses per-specialist re-review protocol) → eventual `PAPER_ACCEPTED`. The full cycle MUST converge within ≤3 revision rounds (SC-001). (b) **Blocked branch** — drive a fixture whose action items are deliberately constructed to be unresolvable by the analyzer (e.g., circular references); assert the analyzer-stuck path lands the project at `PAPER_REVISION_BLOCKED` with a populated `block_diagnostic` field after ≤3 remediation iterations. Gated on `LLMXIVE_REAL_TESTS=1`. + +--- + +## Phase 11: Polish & Cross-Cutting Concerns + +- [ ] T051 [P] Update [agents/agents.yaml](agents/agents.yaml) registry: bump `prompt_version` for `paper_reviewer` and all 12 specialists from 1.0.0 → 1.1.0 (reflects the action_items emission change). Existing review records keep their 1.0.0 records unmodified per Constitution I. +- [ ] T052 [P] Update [src/llmxive/web_data.py](src/llmxive/web_data.py) `regenerate_web_data` to surface `upstream_feedback.yaml` content on project cards for arxiv-intake projects + surface PAPER_REVISION_IN_PROGRESS / READY_FOR_IMPLEMENTATION / PAPER_REVISION_BLOCKED as distinct stage badges. Keep the schema additive (web data consumers MUST tolerate old + new shapes). +- [ ] T053 [P] Update [README.md](README.md) "Review process" section to describe the new three-way classification + auto-planned revision + the convergence guarantee. +- [ ] T054 Verify Constitution III compliance: every core function added in this spec has at least one real-call test under `tests/real_call/`. Count: T013, T017, T021, T030, T034, T039, T045, T050 — 8 real-call tests covering 8 user-story-bearing surfaces. ✓ +- [ ] T055 Run full test suite (`pytest tests/unit tests/integration` AND `LLMXIVE_REAL_TESTS=1 pytest tests/real_call`). All MUST pass. Per Constitution V, if anything fails, fix the underlying CODE and re-run; do NOT weaken the test. + +**Checkpoint**: Code shipped, tests green, docs updated. + +--- + +## Dependencies + +``` +Phase 1 (T001-T003) ← prerequisite for everything + → Phase 2 (T004-T009) ← prerequisite for US1-US7 + → Phase 3 (US6: T010-T013) ← MUST come first; US1-US5 require action_items + → Phase 4 (US1: T014-T017) + → Phase 5 (US4: T018-T021) + → Phase 6 (US2: T022-T030) ← uses revision_planner.py + → Phase 7 (US3: T031-T034) ← uses revision_planner.py (depends on Phase 6) + → Phase 8 (US5: T035-T039) ← uses per-specialist re-review (independent of US2/US3) + → Phase 9 (US7: T040-T045) ← arxiv-intake guardrail (independent) + → Phase 10 (Integration: T046-T050) ← wires the e2e test + → Phase 11 (Polish: T051-T055) +``` + +## Parallel execution examples + +Within Phase 3 (US6), prompt updates for the 12 specialists (T011) can each be split into a separate sub-task and run in parallel — they touch different files. Marked [P]-eligible. + +Within Phase 11, T051/T052/T053 touch different files and can run in parallel. + +The four real-call tests within different phases (T013, T017, T021, T030, T034, T039, T045) are independent fixture runs — if Dartmouth API is happy, they can run in parallel. + +## Implementation strategy: MVP-first + +**MVP scope** (delivers user value with minimum scope): Phase 1 + Phase 2 + Phase 3 (US6 — action items) + Phase 4 (US1 — all-accept gate). This alone unblocks the 4 already-accepted papers (PROJ-564, 565, 566, 576) immediately and lets them reach PAPER_ACCEPTED. + +**Incremental delivery**: + +1. **MVP** (Phases 1-4): action items + all-accept gate. Existing papers with mostly-accept verdicts converge. ~17 tasks. +2. **Reject path** (Phase 5): fatal items route to backlog. Catches PROJ-578 which has unverifiable model claims. ~4 tasks. +3. **Auto-revision pipelines** (Phases 6-7): writing + science revisions auto-plan. ~12 tasks. +4. **Re-review protocol** (Phase 8): convergence speedup. ~5 tasks. +5. **arXiv-intake guardrail** (Phase 9): prevents source mutation on third-party papers. ~6 tasks. +6. **E2E + integration** (Phase 10): scheduler idempotency, unblock CLI, full-cycle test. ~5 tasks. +7. **Polish** (Phase 11): registry bumps, web data, docs, full-suite verification. ~5 tasks. + +Total: **55 tasks**. diff --git a/src/llmxive/agents/advancement.py b/src/llmxive/agents/advancement.py index 2d7b66a80..f21ab8314 100644 --- a/src/llmxive/agents/advancement.py +++ b/src/llmxive/agents/advancement.py @@ -48,7 +48,12 @@ def _required_specialists(prefix: str, *, repo_root: Path | None = None) -> set[ def _all_specialists_accept(records: list[ReviewRecord], required: set[str]) -> bool: - """True iff every required reviewer has at least one accept record.""" + """True iff every required reviewer has at least one accept record. + + Legacy semantic — pre-spec-012. Retained for the research-review gate + (which has not changed). The paper-stage gate now uses + :func:`_all_specialists_accept_most_recent` per spec 012 / FR-001. + """ if not required: return True # no gate configured accepted_by: set[str] = { @@ -57,6 +62,114 @@ def _all_specialists_accept(records: list[ReviewRecord], required: set[str]) -> return required <= accepted_by +def _most_recent_per_specialist( + records: list[ReviewRecord], + *, + live_hash: str | None = None, +) -> dict[str, ReviewRecord]: + """Return one record per specialist — the latest by ``reviewed_at``. + + If ``live_hash`` is provided, only records whose ``artifact_hash`` + matches are considered (stale-artifact reviews are ignored per + spec 012 / FR-003). + """ + eligible = ( + [r for r in records if r.artifact_hash == live_hash] + if live_hash is not None + else list(records) + ) + by_specialist: dict[str, ReviewRecord] = {} + for r in eligible: + cur = by_specialist.get(r.reviewer_name) + if cur is None or r.reviewed_at > cur.reviewed_at: + by_specialist[r.reviewer_name] = r + return by_specialist + + +def _all_specialists_accept_most_recent( + records: list[ReviewRecord], required: set[str], *, live_hash: str | None = None, +) -> bool: + """Spec 012 / FR-001: every required specialist's MOST-RECENT non-stale + verdict must be ``accept``. Replaces the "any historical accept counts" + semantic — that gate was unreachable in practice because specialists + nit-pick every round. + + "No required specialists configured" (empty ``required``) means the + registry didn't load. The defensible default is to require at least + one accept record — never trivially accept on a vacuous gate. + """ + if not required: + # Defensive: with no required-set, only auto-pass when there ARE + # accept records AND no non-accept records. Otherwise return False + # so the severity branch handles non-accept verdicts. + if not records: + return False + return all(r.verdict == "accept" for r in records) + latest = _most_recent_per_specialist(records, live_hash=live_hash) + for name in required: + rec = latest.get(name) + if rec is None or rec.verdict != "accept": + return False + return True + + +def _max_severity_across_specialists( + records: list[ReviewRecord], *, live_hash: str | None = None, +) -> str | None: + """Spec 012 / FR-004-005: severity ordering writing < science < fatal. + + Returns the highest severity in any per-specialist most-recent record's + action_items list, or ``None`` if all most-recent verdicts are accept + (i.e. no non-accept items exist). + """ + latest = _most_recent_per_specialist(records, live_hash=live_hash) + order = {"writing": 1, "science": 2, "fatal": 3} + rev = {v: k for k, v in order.items()} + max_rank = 0 + for rec in latest.values(): + if rec.verdict == "accept": + continue + for item in rec.action_items: + r = order.get(item.severity, 0) + if r > max_rank: + max_rank = r + return rev.get(max_rank) + + +def _infer_live_hash(records: list[ReviewRecord]) -> str | None: + """The "live" artifact hash for the current paper-review round. + + Spec 012 / FR-003: stale reviews (whose ``artifact_hash`` doesn't match + the live artifact) must be ignored for the gate. We approximate "live" + as the artifact_hash carried by the most-recent review record overall + — this is the artifact every specialist most-recently reviewed. + + Returns ``None`` if there are no records (in which case the gate is + trivially not satisfied). + """ + if not records: + return None + latest = max(records, key=lambda r: r.reviewed_at) + return latest.artifact_hash + + +def _consolidate_action_items( + records: list[ReviewRecord], *, live_hash: str | None = None, +) -> list: + """Deduplicate action items by id across all per-specialist + most-recent non-accept reviews. Preserves first-seen order. + """ + latest = _most_recent_per_specialist(records, live_hash=live_hash) + seen: dict[str, object] = {} + for rec in latest.values(): + if rec.verdict == "accept": + continue + for item in rec.action_items: + if item.id not in seen: + seen[item.id] = item + return list(seen.values()) + + class AdvancementError(RuntimeError): """Raised when a requested transition is invalid.""" @@ -232,7 +345,7 @@ def evaluate(project: Project, *, repo_root: Path | None = None) -> Project: return _transition(project, Stage.RESEARCH_REJECTED) return project # not enough votes yet - # Paper-review handling (US5 wiring). + # Paper-review handling (spec 012 convergence pipeline). if project.current_stage == Stage.PAPER_REVIEW: records = reviews_store.list_for(project.id, stage="paper", repo_root=repo_root) project = _award_review_points( @@ -242,24 +355,114 @@ def evaluate(project: Project, *, repo_root: Path | None = None) -> Project: citations=cits, is_paper_stage=True, ) - accept_total = sum(r.score for r in records if r.verdict == "accept") - winning = _winning_recommendation(records) required = _required_specialists("paper_reviewer_", repo_root=repo_root) - all_accept = _all_specialists_accept(records, required) + # Spec 012 / FR-003: most-recent verdict per specialist against the + # live artifact hash. For the live_hash, we use the most common + # artifact_hash across the most recent records (an arxiv-intake + # paper's metadata.json hash, or a home-grown paper's tasks.md hash). + live_hash = _infer_live_hash(records) + # Spec 012 / FR-001: PAPER_ACCEPTED iff every specialist's + # most-recent non-stale verdict is accept. No additional point + # threshold — the all-accept condition is the sole gate. if ( - accept_total >= PAPER_ACCEPT_THRESHOLD - and all_accept + _all_specialists_accept_most_recent(records, required, live_hash=live_hash) and not _has_blocking_citations(cits) ): return _transition(project, Stage.PAPER_ACCEPTED) - if winning == "minor_revision": - return _transition(project, Stage.PAPER_MINOR_REVISION) - if winning == "major_revision_writing": - return _transition(project, Stage.PAPER_MAJOR_REVISION_WRITING) - if winning == "major_revision_science": - return _transition(project, Stage.PAPER_MAJOR_REVISION_SCIENCE) - if winning == "fundamental_flaws": - return _transition(project, Stage.PAPER_FUNDAMENTAL_FLAWS) + + # Spec 012 / FR-004-008: severity-based routing. + max_sev = _max_severity_across_specialists(records, live_hash=live_hash) + + # Back-compat for legacy records (prompt_version 1.0.x) with no + # action_items: fall back to the pre-spec-012 `_winning_recommendation` + # so we don't regress projects whose reviewers haven't yet been + # re-run under the new prompts. _max_severity returns None in this + # case, which lets us detect "no spec-012-style data available". + if max_sev is None and not _all_specialists_accept_most_recent( + records, required, live_hash=live_hash + ): + winning = _winning_recommendation(records) + if winning == "minor_revision": + return _transition(project, Stage.PAPER_MINOR_REVISION) + if winning == "major_revision_writing": + return _transition(project, Stage.PAPER_MAJOR_REVISION_WRITING) + if winning == "major_revision_science": + return _transition(project, Stage.PAPER_MAJOR_REVISION_SCIENCE) + if winning == "fundamental_flaws": + return _transition(project, Stage.PAPER_FUNDAMENTAL_FLAWS) + return project + + if max_sev == "fatal": + # Reject to backlog with consolidated fatal items appended to + # the idea record (FR-008 + US4). + from llmxive.agents.upstream_feedback import append_rejection_rationale + try: + append_rejection_rationale( + project.id, + _consolidate_action_items(records, live_hash=live_hash), + repo_root=repo_root, + ) + except Exception: # noqa: BLE001 — defensive; rationale failure must not block transition + pass + return _transition(project, Stage.BRAINSTORMED) + + # arxiv-intake guardrail (FR-021/022, US7): for third-party + # arxiv-submitted papers, the writing-revision and science-revision + # paths CANNOT mutate paper/source/ (it's frozen). Record an + # upstream-feedback annotation and accept-with-caveats. + if max_sev in ("writing", "science"): + from llmxive.agents.upstream_feedback import is_arxiv_intake, record_round + project_dir = (repo_root or Path(__file__).resolve().parents[3]) / "projects" / project.id + if is_arxiv_intake(project_dir): + try: + record_round( + project.id, + verdict_class=max_sev, + action_items=_consolidate_action_items(records, live_hash=live_hash), + repo_root=repo_root, + ) + except Exception: # noqa: BLE001 + pass + return _transition(project, Stage.PAPER_ACCEPTED) + + # Home-grown paper with writing/science items: route through + # the auto-plan revision pipeline (FR-006/007/009). + from llmxive.agents.revision_planner import ( + ArxivIntakeError, RevisionPlanningError, run_revision_pipeline, + ) + consolidated = _consolidate_action_items(records, live_hash=live_hash) + kind = "paper_writing" if max_sev == "writing" else "paper_science" + # Move to PAPER_REVISION_IN_PROGRESS first so the scheduler's + # idempotency rule kicks in (FR-009). Even if the planner + # fails below, the project doesn't get re-triggered until + # someone unblocks it. + project = _transition(project, Stage.PAPER_REVISION_IN_PROGRESS) + try: + result = run_revision_pipeline( + project.id, consolidated, revision_kind=kind, repo_root=repo_root, + ) + except ArxivIntakeError: + # Defensive — we already checked is_arxiv_intake above. If + # the planner still detects this case, stay at PAPER_REVISION_IN_PROGRESS + # so a human notices. + return project + except RevisionPlanningError: + # Planner emitted partial state but failed. Transition to + # blocked so the operator notices + can unblock. + return _transition(project, Stage.PAPER_REVISION_BLOCKED) + + if result.final_outcome == "ready_for_implementation": + return project.model_copy(update={ + "current_stage": Stage.READY_FOR_IMPLEMENTATION, + "revision_spec_path": str(result.revision_spec_path.relative_to( + repo_root or Path(__file__).resolve().parents[3] + )), + }) + # final_outcome == "paper_revision_blocked" + return _transition(project, Stage.PAPER_REVISION_BLOCKED) + + # No specialists yet, or some other non-canonical state — keep + # waiting at PAPER_REVIEW for more reviews. return project return project diff --git a/src/llmxive/agents/lifecycle.py b/src/llmxive/agents/lifecycle.py index 0d2886fb8..8e5824a16 100644 --- a/src/llmxive/agents/lifecycle.py +++ b/src/llmxive/agents/lifecycle.py @@ -93,19 +93,40 @@ Stage.PAPER_MAJOR_REVISION_SCIENCE, Stage.PAPER_FUNDAMENTAL_FLAWS, }, - # Final paper review (US5): + # Final paper review (US5). + # + # Spec 012 adds three new outgoing transitions from PAPER_REVIEW to + # support the convergence pipeline: + # - BRAINSTORMED (direct reject when any action item has severity=fatal) + # - PAPER_REVISION_IN_PROGRESS (auto-plan kicks off for writing/science) + # The old direct transitions (PAPER_MINOR_REVISION / WRITING / SCIENCE / + # FUNDAMENTAL_FLAWS) remain valid for back-compat with deployments that + # don't yet have the auto-plan revision pipeline wired up. Stage.PAPER_REVIEW: { Stage.PAPER_ACCEPTED, Stage.PAPER_MINOR_REVISION, Stage.PAPER_MAJOR_REVISION_WRITING, Stage.PAPER_MAJOR_REVISION_SCIENCE, Stage.PAPER_FUNDAMENTAL_FLAWS, + Stage.PAPER_REVISION_IN_PROGRESS, + Stage.BRAINSTORMED, }, Stage.PAPER_ACCEPTED: {Stage.POSTED}, Stage.PAPER_MINOR_REVISION: {Stage.PAPER_TASKED}, Stage.PAPER_MAJOR_REVISION_WRITING: {Stage.PAPER_CLARIFIED}, Stage.PAPER_MAJOR_REVISION_SCIENCE: {Stage.CLARIFIED}, # back to research clarify Stage.PAPER_FUNDAMENTAL_FLAWS: {Stage.BRAINSTORMED}, + # Convergence-pipeline stages (spec 012): + Stage.PAPER_REVISION_IN_PROGRESS: { + Stage.READY_FOR_IMPLEMENTATION, + Stage.PAPER_REVISION_BLOCKED, + }, + Stage.READY_FOR_IMPLEMENTATION: {Stage.PAPER_REVIEW}, + Stage.PAPER_REVISION_BLOCKED: { + Stage.PAPER_REVIEW, + Stage.PAPER_MINOR_REVISION, + Stage.BRAINSTORMED, + }, Stage.POSTED: set(), # terminal Stage.HUMAN_INPUT_NEEDED: set(), # exit only via human action Stage.BLOCKED: set(), diff --git a/src/llmxive/agents/paper_reviewer.py b/src/llmxive/agents/paper_reviewer.py index a37d747a9..86237711b 100644 --- a/src/llmxive/agents/paper_reviewer.py +++ b/src/llmxive/agents/paper_reviewer.py @@ -275,6 +275,35 @@ def build_messages(self, ctx: AgentContext) -> list[ChatMessage]: {"project_id": ctx.project_id, "reviewer_name": self.entry.name}, repo_root=repo, ) + # Spec 012 / FR-014: per-specialist re-review protocol. When THIS + # specialist (self.entry.name) has ≥1 prior paper-stage review + # record for THIS project, prepend the shared rereview block + # listing that specialist's MOST-RECENT prior action_items so the + # model performs a diff-check rather than fresh critique. + rereview_block = "" + try: + prior_for_self = reviews_store.prior_reviews_for_specialist( + ctx.project_id, self.entry.name, stage="paper", repo_root=repo, + ) + except Exception: # noqa: BLE001 — defensive; prior-loading must not break review + prior_for_self = [] + if prior_for_self: + most_recent = prior_for_self[-1] + prior_items_yaml = yaml.safe_dump( + [{"id": ai.id, "text": ai.text, "severity": ai.severity} + for ai in most_recent.action_items], + sort_keys=False, + ) if most_recent.action_items else "[]\n" + snippet_path = repo / "agents" / "prompts" / "_shared" / "rereview_block.md" + try: + snippet = snippet_path.read_text(encoding="utf-8") + except OSError: + snippet = "" + if snippet: + rereview_block = snippet.replace( + "{prior_action_items_yaml}", prior_items_yaml.strip() + ) + "\n\n" + # arXiv-intake metadata block — surface the upstream context the # LLM needs to review a third-party paper (vs. a home-grown one). intake_block = "" @@ -306,6 +335,7 @@ def build_messages(self, ctx: AgentContext) -> list[ChatMessage]: user = ( f"# project_id\n{ctx.project_id}\n\n" f"# title\n{ctx.metadata.get('title', '')}\n\n" + f"{rereview_block}" f"{intake_block}" f"# Paper LaTeX source\n\n{source_concat}\n\n" f"# Compiled PDFs\n\n{pdf_summary}\n\n" @@ -352,6 +382,30 @@ def handle_response(self, ctx: AgentContext, response: ChatResponse) -> list[str "fundamental_flaws"}: front["score"] = 0.0 + # Spec 012 FR-018/019: normalize action_items emitted by the LLM. + # The prompt tells the LLM to leave `id` blank and let the system + # derive it from text via the canonical action_item_id() helper. + # We also tolerate the LLM accidentally including an `id` (use it + # only if it matches the canonical hex pattern; else recompute). + items = front.get("action_items") or [] + if not isinstance(items, list): + items = [] + from llmxive.types import action_item_id # local import to avoid cycle at module load + import re as _re + normalized: list[dict] = [] + for raw in items: + if not isinstance(raw, dict): + continue + text = raw.get("text") + severity = raw.get("severity") + if not text or severity not in ("writing", "science", "fatal"): + continue + raw_id = raw.get("id") or "" + if not _re.fullmatch(r"[0-9a-f]{12}", str(raw_id)): + raw_id = action_item_id(text) + normalized.append({"id": raw_id, "text": text, "severity": severity}) + front["action_items"] = normalized + # Compute artifact_hash + artifact_path. Two paths: # (a) Home-grown paper pipeline: tasks.md under paper/specs/-/ # (b) arXiv-intake paper: paper/metadata.json (no feature_dir) diff --git a/src/llmxive/agents/revision_planner.py b/src/llmxive/agents/revision_planner.py new file mode 100644 index 000000000..4bc03cd3b --- /dev/null +++ b/src/llmxive/agents/revision_planner.py @@ -0,0 +1,379 @@ +"""Revision planner — auto-plans a revision spec from a review round's +action items (spec 012 / FR-009-013, T022-T034). + +When the advancement evaluator transitions a project to +``PAPER_REVISION_IN_PROGRESS``, this module is responsible for producing +a complete revision spec directory under +``specs/auto-revisions//round-/`` containing all five +artifacts (``spec.md``, ``clarifications.md`` or in-place clarifications, +``plan.md``, ``tasks.md``, ``analyze-report.md``) PLUS a ``result.yaml`` +recording the outcome. + +The current implementation is **deterministic** — the spec/plan/tasks/ +analyze artifacts are generated directly from the consolidated action +items (no LLM call). This is the minimum viable contract: an implementer +agent can pick up the revision spec and execute against the action items +directly. A follow-up PR replaces the deterministic generation with the +full LLM-driven speckit pipeline (``speckit-specify`` → ``speckit-clarify`` +→ ``speckit-plan`` → ``speckit-tasks`` → ``speckit-analyze``). + +The PUBLIC API contract (used by ``advancement.py``) is stable across +the deterministic v1 and the LLM-driven v2. +""" + +from __future__ import annotations + +import os +import re +from dataclasses import dataclass, field +from datetime import datetime, timezone +from pathlib import Path +from typing import Iterable, Literal + +import yaml + + +RevisionKind = Literal["paper_writing", "paper_science"] + + +class ArxivIntakeError(RuntimeError): + """Raised when the revision planner is invoked on an arxiv-intake project. + + Spec 012 / FR-021: the writing/science revision paths MUST NOT + mutate ``paper/source/`` of third-party papers. ``advancement.py`` + routes arxiv-intake projects through ``upstream_feedback.record_round`` + instead; this exception is a defensive fail-fast for the case where + advancement.py is bypassed. + """ + + +class RevisionPlanningError(RuntimeError): + """Raised when the revision-spec pipeline fails for a reason other + than arxiv-intake mis-routing. The diagnostic is in the message.""" + + +@dataclass +class StageResult: + name: str + status: Literal["success", "failed"] + duration_s: float = 0.0 + finding_count: int = 0 # only meaningful for analyze + iterations: int = 0 # only meaningful for analyze + note: str = "" + + +@dataclass +class RevisionSpecResult: + project_id: str + round_number: int + revision_kind: RevisionKind + revision_spec_path: Path + final_outcome: Literal["ready_for_implementation", "paper_revision_blocked"] + stage_results: list[StageResult] = field(default_factory=list) + block_diagnostic: str | None = None + seed_action_items: list = field(default_factory=list) + + +def _repo_root(repo_root: Path | None) -> Path: + if repo_root is not None: + return Path(repo_root) + return Path(__file__).resolve().parents[3] + + +def _next_round_number(repo: Path, project_id: str) -> int: + base = repo / "specs" / "auto-revisions" / project_id + if not base.is_dir(): + return 1 + nums: list[int] = [] + for d in base.iterdir(): + m = re.fullmatch(r"round-(\d+)", d.name) + if m: + nums.append(int(m.group(1))) + return (max(nums) if nums else 0) + 1 + + +def _seed_specify_input(action_items: Iterable) -> str: + """Build the SPECIFY arguments seeded from consolidated action items. + + The output becomes the spec's ``Input`` / ``$ARGUMENTS`` — readable + by a human or an implementer agent. + """ + lines = ["Address the following reviewer-raised action items:", ""] + for it in action_items: + text = getattr(it, "text", None) or (it.get("text") if isinstance(it, dict) else "") + severity = getattr(it, "severity", None) or (it.get("severity") if isinstance(it, dict) else "") + id_ = getattr(it, "id", None) or (it.get("id") if isinstance(it, dict) else "") + if not text: + continue + lines.append(f"- **[{id_}] (severity: {severity})** {text}") + if len(lines) == 2: + lines.append("- (no action items consolidated — defensive empty seed)") + return "\n".join(lines) + "\n" + + +def _render_spec(action_items: list, kind: RevisionKind, project_id: str, round_num: int) -> str: + """Generate a minimal but valid spec.md for the revision.""" + title = ("Paper Writing Revision" if kind == "paper_writing" + else "Paper Science Revision") + return f"""# Revision Specification: {title} — {project_id} round {round_num} + +**Generated**: {datetime.now(timezone.utc).isoformat()} +**Kind**: {kind} +**Project**: {project_id} +**Round**: {round_num} + +## Input + +{_seed_specify_input(action_items)} + +## Success Criterion + +After the implementer applies this revision, the project returns to +``paper_review`` and the per-specialist re-review protocol confirms +each of the {len(action_items)} action item(s) above as ADEQUATELY ADDRESSED. + +## Out of scope + +- New experiments not directly required by a ``science``-severity item above. +- Refactors / cleanups not required by an action item. +""" + + +def _render_plan(action_items: list, kind: RevisionKind) -> str: + """Generate a minimal plan.md.""" + writing_count = sum(1 for it in action_items + if getattr(it, "severity", None) == "writing" + or (isinstance(it, dict) and it.get("severity") == "writing")) + science_count = sum(1 for it in action_items + if getattr(it, "severity", None) == "science" + or (isinstance(it, dict) and it.get("severity") == "science")) + return f"""# Implementation Plan + +**Kind**: {kind} +**Action item severity counts**: writing={writing_count}, science={science_count} + +## Approach + +For each `writing`-severity action item: edit the manuscript LaTeX source +(under `paper/source/`) to address the concern. Re-compile after each +batch of edits. + +For each `science`-severity action item: assess whether the underlying +research artifact (data, analysis, experiments) requires modification. +If yes: edit code under the project's research spec; re-run; integrate +results into the manuscript. + +## Constraints + +- All citations remain verified. +- LaTeX must compile cleanly after the revision (proofreader flags empty). +- The action items list is the authoritative scope — do NOT pull in + refactors / cleanups beyond what each item demands. +""" + + +def _render_tasks(action_items: list) -> str: + """Generate tasks.md with one task per action item, in severity order.""" + sev_order = {"writing": 0, "science": 1, "fatal": 2} + sorted_items = sorted(action_items, + key=lambda it: sev_order.get( + getattr(it, "severity", None) or + (it.get("severity") if isinstance(it, dict) else ""), 99)) + lines = ["# Tasks", ""] + for i, it in enumerate(sorted_items, start=1): + text = getattr(it, "text", None) or (it.get("text") if isinstance(it, dict) else "") + severity = getattr(it, "severity", None) or (it.get("severity") if isinstance(it, dict) else "") + id_ = getattr(it, "id", None) or (it.get("id") if isinstance(it, dict) else "") + lines.append(f"- [ ] T{i:03d} [REV] Address action item **[{id_}]** (severity: {severity}): {text}") + if len(sorted_items) == 0: + lines.append("- [ ] T001 [REV] (no action items — empty seed; verify the seed was correct before proceeding)") + return "\n".join(lines) + "\n" + + +def _render_analyze_report() -> str: + """Generate an empty analyze report — the deterministic v1 path + surfaces zero findings by construction (every action item became a + task; coverage is 100%).""" + return """# Analyze Report + +No findings. The deterministic auto-plan emits one task per action +item, so requirement-to-task coverage is 100% by construction. + +(A future LLM-driven version of this pipeline may surface real +findings here; in that case, the planner retries up to 3 times and +either reaches zero findings or transitions the project to +``paper_revision_blocked`` with the last report attached.) +""" + + +def _atomic_write_yaml(path: Path, payload: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_suffix(path.suffix + ".tmp") + tmp.write_text(yaml.safe_dump(payload, sort_keys=False), encoding="utf-8") + os.replace(tmp, path) + + +def _update_index(repo: Path, entry: dict, *, status: Literal["ready", "blocked"]) -> None: + """Append an entry to ``state/revisions/index.yaml`` so the implementer + agent can discover this project's revision spec. + """ + idx_path = repo / "state" / "revisions" / "index.yaml" + if idx_path.is_file(): + idx = yaml.safe_load(idx_path.read_text(encoding="utf-8")) or {} + else: + idx = {"ready": [], "blocked": []} + idx.setdefault("ready", []) + idx.setdefault("blocked", []) + idx[status].append(entry) + _atomic_write_yaml(idx_path, idx) + + +def run_revision_pipeline( + project_id: str, + action_items: list, + *, + revision_kind: RevisionKind, + repo_root: Path | None = None, +) -> RevisionSpecResult: + """Generate a complete revision-spec directory for the given project + + consolidated action items. + + Defensive checks: + - Raises ``ArxivIntakeError`` if the project is detected as + arxiv-intake (the writing/science paths can't mutate frozen source). + - Raises ``RevisionPlanningError`` for filesystem or schema failures + during artifact generation. + + Returns + ------- + RevisionSpecResult + Records every stage's outcome and the final disposition + (``ready_for_implementation`` or ``paper_revision_blocked``). + The caller (advancement.py) uses this to set the project's + ``current_stage`` and ``revision_spec_path``. + """ + from llmxive.agents.upstream_feedback import is_arxiv_intake + + repo = _repo_root(repo_root) + project_dir = repo / "projects" / project_id + if is_arxiv_intake(project_dir): + raise ArxivIntakeError( + f"{project_id} is an arxiv-intake project; revision planner " + f"must not be called on frozen-source third-party submissions" + ) + + round_num = _next_round_number(repo, project_id) + spec_dir = repo / "specs" / "auto-revisions" / project_id / f"round-{round_num}" + spec_dir.mkdir(parents=True, exist_ok=True) + + stages: list[StageResult] = [] + + # Stage 1: specify — generate spec.md + t0 = datetime.now(timezone.utc) + try: + (spec_dir / "spec.md").write_text( + _render_spec(action_items, revision_kind, project_id, round_num), + encoding="utf-8", + ) + stages.append(StageResult(name="specify", status="success", + duration_s=(datetime.now(timezone.utc) - t0).total_seconds())) + except OSError as e: + raise RevisionPlanningError(f"specify failed: {e}") from e + + # Stage 2: clarify — auto-resolve (no human Q&A). For v1, this is a no-op: + # the spec is already concrete (every action item is explicit). + stages.append(StageResult(name="clarify", status="success", + duration_s=0.0, + note="auto-resolved; deterministic auto-plan needs no clarifications")) + + # Stage 3: plan — generate plan.md + t0 = datetime.now(timezone.utc) + try: + (spec_dir / "plan.md").write_text( + _render_plan(action_items, revision_kind), + encoding="utf-8", + ) + stages.append(StageResult(name="plan", status="success", + duration_s=(datetime.now(timezone.utc) - t0).total_seconds())) + except OSError as e: + raise RevisionPlanningError(f"plan failed: {e}") from e + + # Stage 4: tasks — generate tasks.md + t0 = datetime.now(timezone.utc) + try: + (spec_dir / "tasks.md").write_text( + _render_tasks(action_items), + encoding="utf-8", + ) + stages.append(StageResult(name="tasks", status="success", + duration_s=(datetime.now(timezone.utc) - t0).total_seconds(), + note=f"{len(action_items)} tasks emitted (one per action item)")) + except OSError as e: + raise RevisionPlanningError(f"tasks failed: {e}") from e + + # Stage 5: analyze — generate analyze-report.md. + # Deterministic v1: zero findings by construction (1 task per action + # item → 100% coverage). The 3-iteration retry loop is in place for v2 + # but is effectively a single iteration here. + t0 = datetime.now(timezone.utc) + try: + (spec_dir / "analyze-report.md").write_text(_render_analyze_report(), encoding="utf-8") + stages.append(StageResult( + name="analyze", + status="success", + duration_s=(datetime.now(timezone.utc) - t0).total_seconds(), + iterations=1, + finding_count=0, + )) + except OSError as e: + raise RevisionPlanningError(f"analyze failed: {e}") from e + + # Write result.yaml + result = RevisionSpecResult( + project_id=project_id, + round_number=round_num, + revision_kind=revision_kind, + revision_spec_path=spec_dir, + final_outcome="ready_for_implementation", + stage_results=stages, + seed_action_items=[ + {"id": getattr(it, "id", None) or (it.get("id") if isinstance(it, dict) else ""), + "text": getattr(it, "text", None) or (it.get("text") if isinstance(it, dict) else ""), + "severity": getattr(it, "severity", None) or (it.get("severity") if isinstance(it, dict) else "")} + for it in action_items + ], + ) + _atomic_write_yaml(spec_dir / "result.yaml", { + "project_id": project_id, + "round": round_num, + "revision_kind": revision_kind, + "seed_action_items": result.seed_action_items, + "stage_results": [ + {"name": s.name, "status": s.status, "duration_s": s.duration_s, + "iterations": s.iterations, "finding_count": s.finding_count, + "note": s.note} + for s in stages + ], + "final_outcome": result.final_outcome, + "produced_at": datetime.now(timezone.utc).isoformat(), + }) + + # Update state/revisions/index.yaml so an implementer agent can find this. + rel_spec = spec_dir.relative_to(repo) + _update_index(repo, { + "project_id": project_id, + "revision_spec_path": str(rel_spec), + "queued_at": datetime.now(timezone.utc).isoformat(), + }, status="ready") + + return result + + +__all__ = [ + "ArxivIntakeError", + "RevisionPlanningError", + "RevisionKind", + "RevisionSpecResult", + "StageResult", + "run_revision_pipeline", +] diff --git a/src/llmxive/agents/upstream_feedback.py b/src/llmxive/agents/upstream_feedback.py new file mode 100644 index 000000000..f2415bdf7 --- /dev/null +++ b/src/llmxive/agents/upstream_feedback.py @@ -0,0 +1,181 @@ +"""Upstream feedback annotations for arxiv-intake papers (spec 012 / US7). + +arXiv-submitted papers are third-party: the source tarball is frozen and +the llmXive pipeline must NOT mutate ``paper/source/``. When such a paper +attracts a non-accept verdict, the consolidated action items are recorded +as an annotation file (``projects//upstream_feedback.yaml``) +rather than triggering the auto-planned revision pipeline. The project's +final outcome is restricted to ``paper_accepted`` (with caveats noted) or +``brainstormed`` (rejection). + +See specs/012-paper-review-convergence/contracts/upstream_feedback.md +for the canonical schema. +""" + +from __future__ import annotations + +import json +import os +from datetime import datetime, timezone +from pathlib import Path +from typing import Iterable + +import yaml + + +SCHEMA_VERSION = 1 + + +def is_arxiv_intake(project_dir: Path) -> bool: + """A project is arxiv-intake iff it has ``paper/metadata.json`` AND no + ``paper/specs/`` feature directory (we can't generate a revision spec + for source we don't own). + """ + project_dir = Path(project_dir) + return (project_dir / "paper" / "metadata.json").is_file() and not ( + project_dir / "paper" / "specs" + ).is_dir() + + +def _repo_root(repo_root: Path | None) -> Path: + if repo_root is not None: + return Path(repo_root) + return Path(__file__).resolve().parents[3] + + +def _arxiv_id_for(project_id: str, *, repo_root: Path) -> str: + """Read arxiv_id from ``paper/metadata.json`` (best-effort).""" + meta_path = repo_root / "projects" / project_id / "paper" / "metadata.json" + try: + meta = json.loads(meta_path.read_text(encoding="utf-8")) + return str(meta.get("arxiv_id", "")) + except (OSError, json.JSONDecodeError): + return "" + + +def _atomic_write_yaml(path: Path, payload: dict) -> None: + """Atomic write via .tmp + os.replace; preserves YAML formatting.""" + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_suffix(path.suffix + ".tmp") + tmp.write_text(yaml.safe_dump(payload, sort_keys=False), encoding="utf-8") + os.replace(tmp, path) + + +def record_round( + project_id: str, + *, + verdict_class: str, + action_items: Iterable, + note: str = "", + repo_root: Path | None = None, +) -> Path: + """Append a new Round to ``upstream_feedback.yaml`` for an arxiv-intake + project. Creates the file with ``schema_version: 1`` on first write. + + Parameters + ---------- + project_id : str + e.g. ``"PROJ-564-qwen-image-vae-2-0-technical-report"``. + verdict_class : str + One of ``writing``, ``science``, ``fatal`` — the max severity in + this review round. + action_items : Iterable[ActionItem | dict] + Consolidated (deduplicated) action items for this round. + note : str + Free-text human-readable summary of the round. + repo_root : Path | None + Repo root override (test fixtures); defaults to the package root. + + Returns + ------- + Path + Absolute path to the written YAML file. + """ + repo = _repo_root(repo_root) + path = repo / "projects" / project_id / "upstream_feedback.yaml" + if path.is_file(): + existing = yaml.safe_load(path.read_text(encoding="utf-8")) or {} + else: + existing = { + "project_id": project_id, + "arxiv_id": _arxiv_id_for(project_id, repo_root=repo), + "schema_version": SCHEMA_VERSION, + "rounds": [], + } + + items_yaml = [] + for it in action_items: + if hasattr(it, "model_dump"): + items_yaml.append(it.model_dump()) + elif isinstance(it, dict): + items_yaml.append({"id": it.get("id"), "text": it.get("text"), + "severity": it.get("severity")}) + # else: skip unknown shapes — better to under-record than corrupt the file. + + rounds = existing.setdefault("rounds", []) + rounds.append({ + "round_number": len(rounds) + 1, + "triggered_at": datetime.now(timezone.utc).isoformat(), + "verdict_class": verdict_class, + "note": note, + "action_items": items_yaml, + }) + _atomic_write_yaml(path, existing) + return path + + +def append_rejection_rationale( + project_id: str, + fatal_action_items: Iterable, + *, + repo_root: Path | None = None, +) -> Path | None: + """Spec 012 / FR-008: when a paper is rejected to BRAINSTORMED, append + a rejection-rationale block to the project's idea record so the + backlog reflects WHY it was rejected. + + The rationale lists each fatal action item by id + text, prepended by + a short timestamped header. We pick the FIRST ``.md`` file under + ``projects//idea/`` as the canonical idea file (most projects + have exactly one). If no idea file exists, returns None and the + caller proceeds with the transition anyway (defensive — the spec's + primary requirement is the stage transition; the rationale annotation + is best-effort). + """ + repo = _repo_root(repo_root) + idea_dir = repo / "projects" / project_id / "idea" + if not idea_dir.is_dir(): + return None + candidates = sorted(idea_dir.glob("*.md")) + if not candidates: + return None + idea_file = candidates[0] + + rationale_lines = [ + "", + "", + f"## Rejection rationale ({datetime.now(timezone.utc).date().isoformat()})", + "", + "Paper-stage review found one or more `fatal`-severity action items. " + "The underlying research question is returned to the backlog so a " + "fresh approach can be considered:", + "", + ] + for it in fatal_action_items: + text = getattr(it, "text", None) or (it.get("text") if isinstance(it, dict) else "") + id_ = getattr(it, "id", None) or (it.get("id") if isinstance(it, dict) else "") + if text: + rationale_lines.append(f"- **[{id_}]** {text}") + rationale_lines.append("") + + existing = idea_file.read_text(encoding="utf-8") + idea_file.write_text(existing.rstrip() + "\n".join(rationale_lines), encoding="utf-8") + return idea_file + + +__all__ = [ + "SCHEMA_VERSION", + "is_arxiv_intake", + "record_round", + "append_rejection_rationale", +] diff --git a/src/llmxive/cli.py b/src/llmxive/cli.py index b484f3150..ee09d279a 100644 --- a/src/llmxive/cli.py +++ b/src/llmxive/cli.py @@ -613,6 +613,71 @@ def _cmd_pdf_audit(args: argparse.Namespace) -> int: return 0 if agg["total_failures"] == 0 else 1 +def _cmd_project_unblock(args: argparse.Namespace) -> int: + """`llmxive project unblock ` (spec 012 / FR-023). + + Operator escape hatch for projects stuck at PAPER_REVISION_BLOCKED. + Refuses to no-op-unblock: requires the operator to have actually + modified `state/revisions//round-.yaml` since the block + was recorded (mtime check). On success, transitions the project to + PAPER_REVIEW (or PAPER_MINOR_REVISION if --to-minor is passed). + """ + from datetime import datetime, timezone + from pathlib import Path + + from llmxive.state import project as project_store + from llmxive.types import Stage + + project_id = args.project_id + repo = Path.cwd() + try: + project = project_store.load(project_id, repo_root=repo) + except Exception as exc: # noqa: BLE001 + print(f"[unblock] ERROR: cannot load {project_id}: {exc}", file=sys.stderr) + return 2 + + if project.current_stage != Stage.PAPER_REVISION_BLOCKED: + print( + f"[unblock] ERROR: {project_id} is at {project.current_stage.value}, " + f"not paper_revision_blocked; refusing to unblock.", + file=sys.stderr, + ) + return 2 + + # FR-023(b): require the action-items file to have been touched since the block. + # We approximate "since the block" as "in the last 24h relative to project.updated_at" + # OR "mtime is newer than project.updated_at" if the file exists. + revisions_dir = repo / "state" / "revisions" / project_id + round_files = sorted(revisions_dir.glob("round-*.yaml")) if revisions_dir.is_dir() else [] + if not round_files: + print( + f"[unblock] ERROR: no state/revisions/{project_id}/round-*.yaml files found. " + f"Nothing to validate as 'operator-edited'.", + file=sys.stderr, + ) + return 2 + latest_round = round_files[-1] + file_mtime = datetime.fromtimestamp(latest_round.stat().st_mtime, tz=timezone.utc) + if file_mtime <= project.updated_at: + print( + f"[unblock] ERROR: {latest_round.name} mtime ({file_mtime.isoformat()}) is " + f"NOT newer than project.updated_at ({project.updated_at.isoformat()}). " + f"Refusing no-op-unblock — edit the action items first.", + file=sys.stderr, + ) + return 2 + + target = Stage.PAPER_MINOR_REVISION if args.to_minor else Stage.PAPER_REVIEW + project = project.model_copy(update={ + "current_stage": target, + "updated_at": datetime.now(timezone.utc), + "revision_spec_path": None, + }) + project_store.save(project, repo_root=repo) + print(f"[unblock] {project_id}: paper_revision_blocked → {target.value}") + return 0 + + def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(prog="llmxive") subs = parser.add_subparsers(dest="cmd", required=True) @@ -734,6 +799,20 @@ def build_parser() -> argparse.ArgumentParser: ) p_pdf_audit.set_defaults(func=_cmd_pdf_audit) + # Spec 012 / FR-023: project unblock CLI. + p_project = subs.add_parser("project", help="project state operations") + project_subs = p_project.add_subparsers(dest="project_cmd", required=True) + p_unblock = project_subs.add_parser( + "unblock", + help="manually unblock a project stuck at paper_revision_blocked", + ) + p_unblock.add_argument("project_id", help="e.g. PROJ-564-qwen-image-vae-2-0-...") + p_unblock.add_argument( + "--to-minor", action="store_true", + help="transition to paper_minor_revision (default: paper_review)", + ) + p_unblock.set_defaults(func=_cmd_project_unblock) + return parser diff --git a/src/llmxive/pipeline/scheduler.py b/src/llmxive/pipeline/scheduler.py index 61a78d581..739edce8e 100644 --- a/src/llmxive/pipeline/scheduler.py +++ b/src/llmxive/pipeline/scheduler.py @@ -87,6 +87,15 @@ Stage.HUMAN_INPUT_NEEDED, Stage.BLOCKED, Stage.POSTED, + # Spec 012 / FR-009: scheduler MUST NOT re-trigger work on a project + # while its revision-spec auto-plan is running. The driver that owns + # the planning loop is the only entity that should advance such + # projects. + Stage.PAPER_REVISION_IN_PROGRESS, + # Spec 012: blocked-or-waiting-for-implementer states. The dedicated + # implementer agent (out of scope for this spec) picks these up. + Stage.READY_FOR_IMPLEMENTATION, + Stage.PAPER_REVISION_BLOCKED, } diff --git a/src/llmxive/state/reviews.py b/src/llmxive/state/reviews.py index da7e35eda..e496742fb 100644 --- a/src/llmxive/state/reviews.py +++ b/src/llmxive/state/reviews.py @@ -110,4 +110,22 @@ def list_for( return [read(p) for p in sorted(review_dir.glob("*.md"))] -__all__ = ["write", "read", "list_for", "SelfReviewRefused"] +def prior_reviews_for_specialist( + project_id: str, + specialist_name: str, + *, + stage: str = "paper", + repo_root: Path | None = None, +) -> list[ReviewRecord]: + """Spec 012 / FR-014: return all prior review records for THIS project + AND THIS specialist, sorted by ``reviewed_at`` ascending. Returns an + empty list if the specialist has no prior reviews — in which case the + re-review protocol does NOT activate for this specialist (FR-017). + """ + records = list_for(project_id, stage=stage, repo_root=repo_root) + matching = [r for r in records if r.reviewer_name == specialist_name] + matching.sort(key=lambda r: r.reviewed_at) + return matching + + +__all__ = ["write", "read", "list_for", "prior_reviews_for_specialist", "SelfReviewRefused"] diff --git a/src/llmxive/types.py b/src/llmxive/types.py index 523cadc42..7d4bc9957 100644 --- a/src/llmxive/types.py +++ b/src/llmxive/types.py @@ -11,6 +11,7 @@ from __future__ import annotations +import hashlib import re from datetime import datetime from enum import Enum @@ -18,6 +19,47 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator + +# ----- action item id (spec 012) --------------------------------------------- + +# Strip section/figure references (e.g., "in Section 4.1", "Figure 3") before +# hashing so cosmetic LLM rephrasings that change only the reference don't +# break ID stability across re-reviews. +_SECTION_REF_RE = re.compile(r"\b(?:Section|Sec\.?)\s*\d+(?:\.\d+)*\b", re.IGNORECASE) +_FIGURE_REF_RE = re.compile(r"\b(?:Figure|Fig\.?)\s*\d+(?:\.\d+)*\b", re.IGNORECASE) +_TABLE_REF_RE = re.compile(r"\b(?:Table|Tab\.?)\s*\d+(?:\.\d+)*\b", re.IGNORECASE) +_EQ_REF_RE = re.compile(r"\b(?:Equation|Eq\.?)\s*\d+(?:\.\d+)*\b", re.IGNORECASE) +_PUNCT_RE = re.compile(r"[\s,;:!?\.\(\)\[\]\{\}'\"`\-_/\\]+") + + +def _canonicalize_action_item_text(text: str) -> str: + """Normalize an action item's text for stable ID derivation. + + Steps (in order): + 1. Strip section/figure/table/equation references. + 2. Lowercase. + 3. Collapse all punctuation runs and whitespace to a single space. + 4. Strip leading/trailing whitespace. + """ + s = _SECTION_REF_RE.sub("", text) + s = _FIGURE_REF_RE.sub("", s) + s = _TABLE_REF_RE.sub("", s) + s = _EQ_REF_RE.sub("", s) + s = s.lower() + s = _PUNCT_RE.sub(" ", s) + return s.strip() + + +def action_item_id(text: str) -> str: + """Compute a stable 12-char hex ID for an action item from its text. + + Two action items whose texts are canonicalize-equivalent will share an + ID. This is the contract from spec 012's research R1: stability across + re-reviews depends on the SAME concern producing the SAME hash. + """ + canonical = _canonicalize_action_item_text(text) + return hashlib.sha1(canonical.encode("utf-8")).hexdigest()[:12] + # ----- shared regexes --------------------------------------------------------- PROJ_ID_RE: re.Pattern[str] = re.compile(r"^PROJ-\d{3,}-[a-z0-9-]+$") @@ -86,6 +128,13 @@ class Stage(str, Enum): PAPER_MAJOR_REVISION_WRITING = "paper_major_revision_writing" PAPER_MAJOR_REVISION_SCIENCE = "paper_major_revision_science" PAPER_FUNDAMENTAL_FLAWS = "paper_fundamental_flaws" + # Convergence-pipeline stages (spec 012): + # PAPER_REVISION_IN_PROGRESS — auto-plan pipeline is generating a revision spec + # READY_FOR_IMPLEMENTATION — revision spec ready; implementer agent picks it up + # PAPER_REVISION_BLOCKED — analyzer stuck; terminal until human unblock + PAPER_REVISION_IN_PROGRESS = "paper_revision_in_progress" + READY_FOR_IMPLEMENTATION = "ready_for_implementation" + PAPER_REVISION_BLOCKED = "paper_revision_blocked" POSTED = "posted" # Cross-stage states HUMAN_INPUT_NEEDED = "human_input_needed" @@ -169,6 +218,10 @@ class Project(_Strict): speckit_paper_dir: str | None = None revision_round: int = Field(default=0, ge=0) human_escalation_reason: str | None = None + # Spec 012: points to a completed RevisionSpec dir when current_stage + # == READY_FOR_IMPLEMENTATION. Cleared back to None when the implementer + # agent completes and the project re-enters PAPER_REVIEW. + revision_spec_path: str | None = None @field_validator("points_research", "points_paper") @classmethod @@ -225,6 +278,25 @@ def _under_project(cls, value: str) -> str: return value +class ActionItem(_Strict): + """One concrete reviewer-raised concern (spec 012). + + Two action items with the same `id` represent the same concern (the id + is deterministic from `canonicalize(text)`). When a re-reviewer flags + the same concern they MUST reuse the prior id rather than minting a + new one — see FR-020 and contracts/action_item.md. + """ + + id: str = Field(pattern=r"^[0-9a-f]{12}$") + text: str = Field(min_length=1, max_length=500) + severity: Literal["writing", "science", "fatal"] + + @classmethod + def from_text(cls, text: str, severity: Literal["writing", "science", "fatal"]) -> ActionItem: + """Build an ActionItem from text + severity, auto-deriving the id.""" + return cls(id=action_item_id(text), text=text, severity=severity) + + class ReviewRecord(_Strict): """Frontmatter of a review file under projects//reviews/{research,paper}/.""" @@ -253,6 +325,10 @@ class ReviewRecord(_Strict): # set this; the advancement-evaluator refuses to count points # from human reviews where this is False/missing. github_authenticated: bool = False + # Spec 012: structured action items per-reviewer. Empty for accept; + # non-empty for non-accept (validator below). Old records (without this + # field) load with the default empty list — back-compat preserved. + action_items: list[ActionItem] = Field(default_factory=list) @model_validator(mode="after") def _score_matches_verdict(self) -> ReviewRecord: @@ -267,6 +343,20 @@ def _score_matches_verdict(self) -> ReviewRecord: raise ValueError( "LLM reviews must declare prompt_version, model_name, backend" ) + # Spec 012 / FR-018: structured action items required for + # non-accept verdicts emitted under prompt_version >= 1.1.0. + # Legacy records (prompt_version 1.0.x) are grandfathered to + # preserve back-compat with reviews emitted before this spec. + if ( + self.prompt_version is not None + and self.prompt_version >= "1.1.0" + and self.verdict != "accept" + and len(self.action_items) == 0 + ): + raise ValueError( + f"LLM non-accept verdict {self.verdict!r} under prompt_version " + f"{self.prompt_version} must include at least one action_item" + ) else: # human if self.verdict == "accept" and self.score != 1.0: raise ValueError("human accept must score 1.0") diff --git a/src/llmxive/web_data.py b/src/llmxive/web_data.py index 81af1b5d9..93ee4a894 100644 --- a/src/llmxive/web_data.py +++ b/src/llmxive/web_data.py @@ -83,6 +83,10 @@ Stage.PAPER_MAJOR_REVISION_WRITING: "paper_review", Stage.PAPER_MAJOR_REVISION_SCIENCE: "paper_review", Stage.PAPER_FUNDAMENTAL_FLAWS: "paper_review", + # Spec 012 convergence pipeline stages + Stage.PAPER_REVISION_IN_PROGRESS: "paper_review", + Stage.READY_FOR_IMPLEMENTATION: "paper_review", + Stage.PAPER_REVISION_BLOCKED: "paper_review", Stage.POSTED: "posted", Stage.HUMAN_INPUT_NEEDED: "blocked", Stage.BLOCKED: "blocked", @@ -1019,6 +1023,13 @@ def _project_to_entry(repo: Path, project: Project) -> dict[str, Any]: "authors": _project_authors(repo, project.id), "speckit_research_dir": project.speckit_research_dir, "speckit_paper_dir": project.speckit_paper_dir, + # Spec 012: revision_spec_path is set only when current_stage is + # READY_FOR_IMPLEMENTATION. The web dashboard renders it as a link + # to the auto-planned revision spec dir. + "revision_spec_path": project.revision_spec_path, + # Spec 012: upstream_feedback summary for arxiv-intake papers + # whose specialists raised non-fatal action items. + "upstream_feedback": _upstream_feedback_summary(repo, project.id), "artifact_links": links, "current_artifact": _current_artifact(repo, project, links), "citation_summary": _citation_summary(repo, project.id), @@ -1026,6 +1037,31 @@ def _project_to_entry(repo: Path, project: Project) -> dict[str, Any]: } +def _upstream_feedback_summary(repo: Path, project_id: str) -> dict[str, Any] | None: + """Spec 012: surface upstream_feedback.yaml content (if present) so + the web dashboard can render reviewer feedback on arxiv-intake papers. + """ + path = repo / "projects" / project_id / "upstream_feedback.yaml" + if not path.is_file(): + return None + try: + import yaml as _yaml + data = _yaml.safe_load(path.read_text(encoding="utf-8")) or {} + except Exception: # noqa: BLE001 + return None + rounds = data.get("rounds", []) or [] + if not isinstance(rounds, list): + return None + return { + "schema_version": data.get("schema_version"), + "round_count": len(rounds), + "latest_verdict_class": rounds[-1].get("verdict_class") if rounds else None, + "latest_action_item_count": ( + len(rounds[-1].get("action_items", [])) if rounds else 0 + ), + } + + def _aggregates(projects: list[Project], contributors: list[dict[str, Any]], reviews_by_kind: dict[ReviewerKind, set[str]]) -> dict[str, int]: """Aggregates derived from the *final* contributor list, so the headline diff --git a/tests/integration/test_revision_in_progress_idempotency.py b/tests/integration/test_revision_in_progress_idempotency.py new file mode 100644 index 000000000..c2771c210 --- /dev/null +++ b/tests/integration/test_revision_in_progress_idempotency.py @@ -0,0 +1,66 @@ +"""Integration test for the scheduler's idempotency rule on +PAPER_REVISION_IN_PROGRESS (spec 012 / FR-009). + +When a project is at PAPER_REVISION_IN_PROGRESS the auto-plan revision +pipeline is mid-flight. The regular scheduler MUST skip this project +(it must NOT re-trigger the planner). This test exercises the scheduler +on a fixture set that mixes runnable and in-progress projects and +asserts the in-progress one is not picked. +""" + +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest + +from llmxive.pipeline.scheduler import pick_next, _NEVER_PICK +from llmxive.state import project as project_store +from llmxive.types import Project, Stage + + +def _save_project(repo: Path, project_id: str, *, stage: Stage) -> Project: + (repo / "state" / "projects").mkdir(parents=True, exist_ok=True) + now = datetime.now(timezone.utc) + project = Project( + id=project_id, + title=f"Test {project_id}", + field="computer science", + current_stage=stage, + created_at=now - timedelta(days=1), + updated_at=now, + ) + project_store.save(project, repo_root=repo) + return project + + +class TestSchedulerIdempotency: + def test_paper_revision_in_progress_is_in_never_pick(self) -> None: + """The scheduler's _NEVER_PICK set MUST include the three spec-012 + stages so paper_revision_in_progress (the in-flight auto-plan), + ready_for_implementation (waiting for implementer agent), and + paper_revision_blocked (waiting for human) are all skipped by the + regular tick-scheduler.""" + assert Stage.PAPER_REVISION_IN_PROGRESS in _NEVER_PICK + assert Stage.READY_FOR_IMPLEMENTATION in _NEVER_PICK + assert Stage.PAPER_REVISION_BLOCKED in _NEVER_PICK + + def test_in_progress_project_not_picked_over_runnable(self, tmp_path: Path) -> None: + """Pick a project at PAPER_REVISION_IN_PROGRESS and one at BRAINSTORMED; + the runnable one MUST be selected. (This is the operational meaning + of the idempotency guarantee.)""" + _save_project(tmp_path, "PROJ-100-locked", stage=Stage.PAPER_REVISION_IN_PROGRESS) + _save_project(tmp_path, "PROJ-200-runnable", stage=Stage.BRAINSTORMED) + picked = pick_next(repo_root=tmp_path) + assert picked is not None + assert picked.id == "PROJ-200-runnable" + + def test_only_in_progress_returns_none(self, tmp_path: Path) -> None: + """If every project is in a _NEVER_PICK state, pick_next returns + None (the scheduler doesn't pick anything to advance).""" + _save_project(tmp_path, "PROJ-100-locked-a", stage=Stage.PAPER_REVISION_IN_PROGRESS) + _save_project(tmp_path, "PROJ-200-locked-b", stage=Stage.READY_FOR_IMPLEMENTATION) + _save_project(tmp_path, "PROJ-300-locked-c", stage=Stage.PAPER_REVISION_BLOCKED) + picked = pick_next(repo_root=tmp_path) + assert picked is None diff --git a/tests/real_call/test_paper_review_convergence_e2e.py b/tests/real_call/test_paper_review_convergence_e2e.py new file mode 100644 index 000000000..b77dbe42b --- /dev/null +++ b/tests/real_call/test_paper_review_convergence_e2e.py @@ -0,0 +1,172 @@ +"""End-to-end convergence test for spec 012 / SC-001 / T050. + +Real-call workflow gates this on ``LLMXIVE_REAL_TESTS=1``. The test +exercises the FULL spec-012 pipeline against a fixture project (no +external service mocks for the in-scope logic): + + 1. Build a fixture home-grown project with action_items recorded. + 2. Verify the advancement evaluator routes to PAPER_REVISION_IN_PROGRESS + and the revision_planner produces a complete revision-spec dir. + 3. Verify state/revisions/index.yaml is updated. + 4. Simulate the implementer agent transitioning back to PAPER_REVIEW. + 5. Verify the re-review protocol activates (rereview block present in + paper_reviewer.build_messages output) when a specialist has prior + records. + +This test does NOT call Dartmouth: the deterministic v1 of revision_planner +emits artifacts directly from action items (no LLM round-trip), and the +re-review prompt assembly is pure-Python. The "real-call" gate is here +because Constitution III requires the integrated pipeline to be tested +against REAL filesystem state + REAL pydantic validation, not mocks. +""" + +from __future__ import annotations + +import os +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest +import yaml + + +pytestmark = pytest.mark.skipif( + os.environ.get("LLMXIVE_REAL_TESTS") != "1", + reason="real-call test; set LLMXIVE_REAL_TESTS=1 to enable", +) + + +from llmxive.agents.advancement import evaluate +from llmxive.agents.revision_planner import run_revision_pipeline +from llmxive.state import project as project_store +from llmxive.state import reviews as reviews_store +from llmxive.types import ( + ActionItem, + BackendName, + Project, + ReviewerKind, + ReviewRecord, + Stage, +) + + +_NOW = datetime.now(timezone.utc) + + +def _save_project(repo: Path, project_id: str, *, stage: Stage = Stage.PAPER_REVIEW) -> Project: + (repo / "state" / "projects").mkdir(parents=True, exist_ok=True) + proj = Project( + id=project_id, + title="Test paper for convergence e2e", + field="computer science", + current_stage=stage, + created_at=_NOW - timedelta(days=1), + updated_at=_NOW, + ) + project_store.save(proj, repo_root=repo) + return proj + + +def _make_home_grown(repo: Path, project_id: str) -> None: + """Home-grown paper has paper/specs/-/ (NOT arxiv-intake).""" + (repo / "projects" / project_id / "paper" / "specs" / "001-paper").mkdir(parents=True) + (repo / "projects" / project_id / "paper" / "specs" / "001-paper" / "spec.md").write_text("# spec\n") + + +def _write_review( + repo: Path, + project_id: str, + reviewer_name: str, + *, + verdict: str, + when: datetime, + items: list[ActionItem] | None = None, +) -> None: + review_dir = repo / "projects" / project_id / "paper" / "reviews" + review_dir.mkdir(parents=True, exist_ok=True) + score = 0.5 if verdict == "accept" else 0.0 + rec = ReviewRecord( + reviewer_name=reviewer_name, + reviewer_kind=ReviewerKind.LLM, + artifact_path=f"projects/{project_id}/paper/metadata.json", + artifact_hash="a" * 64, + score=score, + verdict=verdict, + feedback="e2e fixture review", + reviewed_at=when, + prompt_version="1.1.0", + model_name="qwen.qwen3.5-122b", + backend=BackendName.DARTMOUTH, + action_items=items or ([ActionItem.from_text("placeholder.", "writing")] + if verdict != "accept" else []), + ) + front = rec.model_dump(mode="json") + path = review_dir / f"{reviewer_name}__{when.date().isoformat()}__paper.md" + path.write_text("---\n" + yaml.safe_dump(front, sort_keys=True) + "---\n\n# body\n") + + +class TestConvergenceE2E: + def test_writing_revision_lands_in_ready_for_implementation(self, tmp_path: Path) -> None: + """Full cycle: PAPER_REVIEW → PAPER_REVISION_IN_PROGRESS → READY_FOR_IMPLEMENTATION.""" + pid = "PROJ-100-e2e-writing" + _save_project(tmp_path, pid, stage=Stage.PAPER_REVIEW) + _make_home_grown(tmp_path, pid) + # Write 12 specialist reviews: 11 accept, 1 minor_revision (one writing item). + # All have the SAME artifact_hash (live). + for slug in ("claim_accuracy", "code_quality_paper", "data_quality_paper", + "figure_critic", "logical_consistency", "overreach", + "safety_ethics", "scientific_evidence", "statistical_analysis", + "text_formatting", "writing_quality"): + _write_review(tmp_path, pid, f"paper_reviewer_{slug}", verdict="accept", when=_NOW) + _write_review(tmp_path, pid, "paper_reviewer_jargon_police", + verdict="minor_revision", when=_NOW, + items=[ActionItem.from_text("Define MLP at first use.", "writing")]) + + project = project_store.load(pid, repo_root=tmp_path) + new_project = evaluate(project, repo_root=tmp_path) + # Should be READY_FOR_IMPLEMENTATION (advancement chains through + # PAPER_REVISION_IN_PROGRESS → revision_planner → ready). + assert new_project.current_stage == Stage.READY_FOR_IMPLEMENTATION + assert new_project.revision_spec_path is not None + assert (tmp_path / new_project.revision_spec_path).is_dir() + # Verify all 5 artifacts emitted + spec_dir = tmp_path / new_project.revision_spec_path + for name in ("spec.md", "plan.md", "tasks.md", "analyze-report.md", "result.yaml"): + assert (spec_dir / name).is_file(), f"missing {name}" + # Index updated + idx = yaml.safe_load((tmp_path / "state" / "revisions" / "index.yaml").read_text()) + assert any(e["project_id"] == pid for e in idx.get("ready", [])) + + def test_fatal_routes_to_brainstormed(self, tmp_path: Path) -> None: + """One fatal action item among writing items → BRAINSTORMED.""" + pid = "PROJ-200-e2e-fatal" + _save_project(tmp_path, pid, stage=Stage.PAPER_REVIEW) + _make_home_grown(tmp_path, pid) + (tmp_path / "projects" / pid / "idea").mkdir(parents=True) + (tmp_path / "projects" / pid / "idea" / "idea.md").write_text("# Idea\n\nOriginal idea.\n") + # Sole specialist review: fatal severity + _write_review(tmp_path, pid, "paper_reviewer_scientific_evidence", + verdict="fundamental_flaws", when=_NOW, + items=[ActionItem.from_text("Central hypothesis is unsupportable.", "fatal")]) + project = project_store.load(pid, repo_root=tmp_path) + new_project = evaluate(project, repo_root=tmp_path) + assert new_project.current_stage == Stage.BRAINSTORMED + # Idea record should have rejection rationale appended + idea_text = (tmp_path / "projects" / pid / "idea" / "idea.md").read_text() + assert "Rejection rationale" in idea_text + assert "Central hypothesis is unsupportable" in idea_text + + def test_all_accept_lands_in_paper_accepted(self, tmp_path: Path) -> None: + """Every specialist accepts → PAPER_ACCEPTED (the convergence success case).""" + pid = "PROJ-300-e2e-accept" + _save_project(tmp_path, pid, stage=Stage.PAPER_REVIEW) + _make_home_grown(tmp_path, pid) + # Every specialist accepts + for slug in ("claim_accuracy", "code_quality_paper", "data_quality_paper", + "figure_critic", "jargon_police", "logical_consistency", + "overreach", "safety_ethics", "scientific_evidence", + "statistical_analysis", "text_formatting", "writing_quality"): + _write_review(tmp_path, pid, f"paper_reviewer_{slug}", verdict="accept", when=_NOW) + project = project_store.load(pid, repo_root=tmp_path) + new_project = evaluate(project, repo_root=tmp_path) + assert new_project.current_stage == Stage.PAPER_ACCEPTED diff --git a/tests/unit/test_action_item_schema.py b/tests/unit/test_action_item_schema.py new file mode 100644 index 000000000..d66d88f95 --- /dev/null +++ b/tests/unit/test_action_item_schema.py @@ -0,0 +1,96 @@ +"""Unit tests for ActionItem schema + id canonicalization (spec 012).""" + +from __future__ import annotations + +import pytest +from pydantic import ValidationError + +from llmxive.types import ActionItem, action_item_id + + +class TestActionItemSchema: + def test_valid_round_trip(self) -> None: + item = ActionItem(id="a3f1c9b2e5d8", text="Add a citation for Smith 2024.", + severity="writing") + assert item.id == "a3f1c9b2e5d8" + assert item.severity == "writing" + + def test_id_regex_rejects_uppercase(self) -> None: + with pytest.raises(ValidationError): + ActionItem(id="ABCDEF123456", text="x", severity="writing") + + def test_id_regex_rejects_wrong_length(self) -> None: + with pytest.raises(ValidationError): + ActionItem(id="abc123", text="x", severity="writing") + with pytest.raises(ValidationError): + ActionItem(id="a3f1c9b2e5d8a", text="x", severity="writing") # 13 chars + + def test_text_length_cap(self) -> None: + with pytest.raises(ValidationError): + ActionItem(id="a" * 12, text="x" * 501, severity="writing") + # 500 chars passes + ActionItem(id="a" * 12, text="x" * 500, severity="writing") + + def test_text_non_empty(self) -> None: + with pytest.raises(ValidationError): + ActionItem(id="a" * 12, text="", severity="writing") + + def test_severity_enum(self) -> None: + for sev in ("writing", "science", "fatal"): + ActionItem(id="a" * 12, text="x", severity=sev) + with pytest.raises(ValidationError): + ActionItem(id="a" * 12, text="x", severity="critical") + + def test_from_text_auto_derives_id(self) -> None: + item = ActionItem.from_text("Add citation for Smith 2024.", "writing") + # The id must be deterministic + valid + assert len(item.id) == 12 + assert all(c in "0123456789abcdef" for c in item.id) + # Two ActionItems with the same text get the same id + item2 = ActionItem.from_text("Add citation for Smith 2024.", "science") + assert item.id == item2.id # severity doesn't affect id + + +class TestCanonicalization: + """Spec 012 SC-005: re-reviewer must produce SAME id for SAME concern.""" + + def test_casing_absorbed(self) -> None: + a = action_item_id("Missing hyperparameter beta_k value.") + b = action_item_id("MISSING HYPERPARAMETER BETA_K VALUE.") + assert a == b + + def test_section_ref_absorbed(self) -> None: + a = action_item_id("Missing β_k value in Section 4.1.") + b = action_item_id("Missing β_k value in Section 4.2.") + assert a == b + + def test_figure_ref_absorbed(self) -> None: + a = action_item_id("Caption needs more detail in Figure 3.") + b = action_item_id("Caption needs more detail in Figure 5.") + assert a == b + + def test_table_ref_absorbed(self) -> None: + a = action_item_id("Table 1 lacks units.") + b = action_item_id("Table 7 lacks units.") + assert a == b + + def test_equation_ref_absorbed(self) -> None: + a = action_item_id("Equation 3 has typo.") + b = action_item_id("Equation 12 has typo.") + assert a == b + + def test_whitespace_collapsed(self) -> None: + a = action_item_id("Multiple spaces between\twords.") + b = action_item_id("Multiple spaces between words.") + assert a == b + + def test_different_concerns_different_ids(self) -> None: + # Sanity: truly different concerns must NOT collide. + a = action_item_id("Missing hyperparameter β_k.") + b = action_item_id("Missing experimental control group.") + assert a != b + + def test_id_format(self) -> None: + out = action_item_id("Any text.") + assert len(out) == 12 + assert all(c in "0123456789abcdef" for c in out) diff --git a/tests/unit/test_advancement_convergence.py b/tests/unit/test_advancement_convergence.py new file mode 100644 index 000000000..2118bd92e --- /dev/null +++ b/tests/unit/test_advancement_convergence.py @@ -0,0 +1,232 @@ +"""Unit tests for the spec-012 convergence pipeline routing in advancement.py. + +Covers FR-001-008 (most-recent-verdict acceptance gate + severity-based +routing), FR-021/022 (arxiv-intake guardrail), and the helper functions +that compose them. +""" + +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest + +from llmxive.agents.advancement import ( + _all_specialists_accept_most_recent, + _consolidate_action_items, + _infer_live_hash, + _max_severity_across_specialists, + _most_recent_per_specialist, +) +from llmxive.agents.upstream_feedback import is_arxiv_intake, record_round +from llmxive.types import ActionItem, BackendName, ReviewerKind, ReviewRecord + + +# --- Helpers ----------------------------------------------------------------- + + +_HASH_A = "a" * 64 +_HASH_B = "b" * 64 +_NOW = datetime(2026, 5, 17, 12, 0, 0, tzinfo=timezone.utc) + + +def _rec(name: str, verdict: str, *, hash_: str = _HASH_A, when: datetime = _NOW, + items: list[ActionItem] | None = None, prompt_version: str = "1.1.0") -> ReviewRecord: + score = 0.5 if verdict == "accept" else 0.0 + if verdict != "accept" and not items: + items = [ActionItem.from_text("placeholder concern.", "writing")] + return ReviewRecord( + reviewer_name=name, + reviewer_kind=ReviewerKind.LLM, + artifact_path="projects/PROJ-100-test/paper/metadata.json", + artifact_hash=hash_, + score=score, + verdict=verdict, + feedback="x", + reviewed_at=when, + prompt_version=prompt_version, + model_name="qwen.qwen3.5-122b", + backend=BackendName.DARTMOUTH, + action_items=items or [], + ) + + +# --- Most-recent-per-specialist gate ----------------------------------------- + + +class TestAllSpecialistsAcceptMostRecent: + def test_all_accept_passes(self) -> None: + required = {"paper_reviewer_a", "paper_reviewer_b"} + records = [_rec("paper_reviewer_a", "accept"), _rec("paper_reviewer_b", "accept")] + assert _all_specialists_accept_most_recent(records, required, live_hash=_HASH_A) is True + + def test_one_minor_revision_fails(self) -> None: + required = {"paper_reviewer_a", "paper_reviewer_b"} + records = [_rec("paper_reviewer_a", "accept"), + _rec("paper_reviewer_b", "minor_revision")] + assert _all_specialists_accept_most_recent(records, required, live_hash=_HASH_A) is False + + def test_most_recent_overrides_older(self) -> None: + """Specialist A's old verdict was minor_revision; new one is accept. + The gate honors the NEW verdict.""" + required = {"paper_reviewer_a"} + old = _rec("paper_reviewer_a", "minor_revision", when=_NOW - timedelta(hours=1)) + new = _rec("paper_reviewer_a", "accept", when=_NOW) + assert _all_specialists_accept_most_recent([old, new], required, live_hash=_HASH_A) is True + + def test_stale_hash_treated_as_no_review(self) -> None: + """Specialist A's record has stale artifact_hash → as if they hadn't reviewed. + Gate fails (not all required have non-stale most-recent accepts).""" + required = {"paper_reviewer_a", "paper_reviewer_b"} + records = [ + _rec("paper_reviewer_a", "accept", hash_=_HASH_A), + _rec("paper_reviewer_b", "accept", hash_=_HASH_B), # stale + ] + assert _all_specialists_accept_most_recent(records, required, live_hash=_HASH_A) is False + + def test_empty_required_no_records_returns_false(self) -> None: + """Empty required + no records is the 'unconfigured' case — defensively + refuse to advance rather than vacuously accepting.""" + assert _all_specialists_accept_most_recent([], set(), live_hash=_HASH_A) is False + + def test_empty_required_all_accept_records(self) -> None: + """Empty required + every record accept → True (no specialists + registered to gate against, but every reviewer that DID record a + verdict accepted).""" + records = [_rec("a", "accept"), _rec("b", "accept")] + assert _all_specialists_accept_most_recent(records, set(), live_hash=_HASH_A) is True + + def test_empty_required_any_non_accept_returns_false(self) -> None: + """Empty required + any non-accept record → False.""" + records = [_rec("a", "accept"), + _rec("b", "minor_revision", + items=[ActionItem.from_text("typo.", "writing")])] + assert _all_specialists_accept_most_recent(records, set(), live_hash=_HASH_A) is False + + +# --- Severity-based routing -------------------------------------------------- + + +class TestMaxSeverityAcrossSpecialists: + def test_all_accept_returns_none(self) -> None: + records = [_rec("paper_reviewer_a", "accept"), _rec("paper_reviewer_b", "accept")] + assert _max_severity_across_specialists(records, live_hash=_HASH_A) is None + + def test_writing_only(self) -> None: + items = [ActionItem.from_text("typo in abstract.", "writing")] + records = [_rec("paper_reviewer_a", "minor_revision", items=items)] + assert _max_severity_across_specialists(records, live_hash=_HASH_A) == "writing" + + def test_science_outranks_writing(self) -> None: + records = [ + _rec("paper_reviewer_a", "minor_revision", + items=[ActionItem.from_text("typo.", "writing")]), + _rec("paper_reviewer_b", "minor_revision", + items=[ActionItem.from_text("missing control condition.", "science")]), + ] + assert _max_severity_across_specialists(records, live_hash=_HASH_A) == "science" + + def test_fatal_outranks_all(self) -> None: + records = [ + _rec("paper_reviewer_a", "minor_revision", + items=[ActionItem.from_text("typo.", "writing")]), + _rec("paper_reviewer_b", "fundamental_flaws", + items=[ActionItem.from_text("central hypothesis is unsupportable.", "fatal")]), + ] + assert _max_severity_across_specialists(records, live_hash=_HASH_A) == "fatal" + + def test_stale_records_ignored(self) -> None: + records = [ + _rec("paper_reviewer_a", "accept", hash_=_HASH_A), + _rec("paper_reviewer_b", "fundamental_flaws", hash_=_HASH_B, + items=[ActionItem.from_text("fatal.", "fatal")]), + ] + # The fatal record is on a stale hash → ignored. Live is all-accept. + assert _max_severity_across_specialists(records, live_hash=_HASH_A) is None + + +# --- Consolidation ----------------------------------------------------------- + + +class TestConsolidateActionItems: + def test_deduplicates_by_id(self) -> None: + item_a = ActionItem.from_text("missing β_k.", "writing") + item_b = ActionItem.from_text("missing β_k value.", "writing") + # These canonicalize differently in our helper (different texts), but + # the canonical IDs may not collide. We test that EXACTLY identical + # items dedupe. + same = ActionItem.from_text("missing β_k.", "writing") + records = [ + _rec("paper_reviewer_a", "minor_revision", items=[item_a]), + _rec("paper_reviewer_b", "minor_revision", items=[same]), # same id as item_a + ] + out = _consolidate_action_items(records, live_hash=_HASH_A) + assert len(out) == 1 + assert out[0].id == item_a.id + + def test_accept_records_contribute_nothing(self) -> None: + records = [_rec("paper_reviewer_a", "accept"), + _rec("paper_reviewer_b", "minor_revision", + items=[ActionItem.from_text("x.", "writing")])] + out = _consolidate_action_items(records, live_hash=_HASH_A) + assert len(out) == 1 + + +# --- Live-hash inference ----------------------------------------------------- + + +class TestInferLiveHash: + def test_picks_most_recent(self) -> None: + records = [ + _rec("paper_reviewer_a", "accept", hash_=_HASH_A, when=_NOW - timedelta(hours=2)), + _rec("paper_reviewer_b", "accept", hash_=_HASH_B, when=_NOW), + ] + assert _infer_live_hash(records) == _HASH_B + + def test_empty_returns_none(self) -> None: + assert _infer_live_hash([]) is None + + +# --- arxiv-intake guardrail (FR-021/022) ------------------------------------- + + +class TestArxivIntakeGuardrail: + def test_is_arxiv_intake_true_for_metadata_no_specs(self, tmp_path: Path) -> None: + proj = tmp_path / "projects" / "PROJ-999-x" / "paper" + proj.mkdir(parents=True) + (proj / "metadata.json").write_text("{}", encoding="utf-8") + assert is_arxiv_intake(tmp_path / "projects" / "PROJ-999-x") + + def test_is_arxiv_intake_false_when_specs_exist(self, tmp_path: Path) -> None: + proj = tmp_path / "projects" / "PROJ-999-x" / "paper" + (proj / "specs").mkdir(parents=True) + (proj / "metadata.json").write_text("{}", encoding="utf-8") + assert not is_arxiv_intake(tmp_path / "projects" / "PROJ-999-x") + + def test_is_arxiv_intake_false_when_no_metadata(self, tmp_path: Path) -> None: + proj = tmp_path / "projects" / "PROJ-999-x" / "paper" + proj.mkdir(parents=True) + assert not is_arxiv_intake(tmp_path / "projects" / "PROJ-999-x") + + def test_record_round_creates_then_appends(self, tmp_path: Path) -> None: + # Make a project dir + metadata so arxiv_id can be read + (tmp_path / "projects" / "PROJ-100-x" / "paper").mkdir(parents=True) + (tmp_path / "projects" / "PROJ-100-x" / "paper" / "metadata.json").write_text( + '{"arxiv_id": "2605.99999"}', encoding="utf-8" + ) + items1 = [ActionItem.from_text("Add citation.", "writing")] + items2 = [ActionItem.from_text("Re-run baseline.", "science")] + p1 = record_round("PROJ-100-x", verdict_class="writing", + action_items=items1, note="round 1", repo_root=tmp_path) + p2 = record_round("PROJ-100-x", verdict_class="science", + action_items=items2, note="round 2", repo_root=tmp_path) + assert p1 == p2 # same target path + import yaml as Y + data = Y.safe_load(p1.read_text()) + assert data["schema_version"] == 1 + assert data["arxiv_id"] == "2605.99999" + assert len(data["rounds"]) == 2 + assert data["rounds"][0]["round_number"] == 1 + assert data["rounds"][1]["round_number"] == 2 + assert data["rounds"][1]["verdict_class"] == "science" diff --git a/tests/unit/test_cli_project_unblock.py b/tests/unit/test_cli_project_unblock.py new file mode 100644 index 000000000..dfbe0cc12 --- /dev/null +++ b/tests/unit/test_cli_project_unblock.py @@ -0,0 +1,105 @@ +"""Unit tests for `llmxive project unblock` (spec 012 / FR-023).""" + +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest +import yaml + +from llmxive.cli import build_parser +from llmxive.state import project as project_store +from llmxive.types import Project, Stage + + +def _build_project( + repo: Path, project_id: str, stage: Stage = Stage.PAPER_REVISION_BLOCKED, + *, updated_at: datetime | None = None, +) -> Project: + """Write a project state YAML at the given stage.""" + (repo / "state" / "projects").mkdir(parents=True, exist_ok=True) + now = updated_at or datetime.now(timezone.utc) + project = Project( + id=project_id, + title="Test paper", + field="computer science", + current_stage=stage, + created_at=now - timedelta(days=1), + updated_at=now, + ) + project_store.save(project, repo_root=repo) + return project + + +def _make_round_file(repo: Path, project_id: str, *, mtime_offset_s: int = 60) -> Path: + """Create state/revisions//round-1.yaml with mtime offset from now.""" + d = repo / "state" / "revisions" / project_id + d.mkdir(parents=True, exist_ok=True) + p = d / "round-1.yaml" + p.write_text(yaml.safe_dump({"project_id": project_id, "action_items": []})) + import os + target = datetime.now(timezone.utc).timestamp() + mtime_offset_s + os.utime(p, (target, target)) + return p + + +def _run_cli(args: list[str], cwd: Path) -> int: + """Invoke build_parser/main, redirecting cwd to a fixture.""" + import os + parser = build_parser() + parsed = parser.parse_args(args) + old_cwd = os.getcwd() + try: + os.chdir(cwd) + return int(parsed.func(parsed)) + finally: + os.chdir(old_cwd) + + +class TestProjectUnblock: + def test_unblock_with_edited_round_file_succeeds(self, tmp_path: Path) -> None: + pid = "PROJ-100-test" + _build_project(tmp_path, pid) + # round-1.yaml mtime is in the future relative to project.updated_at + _make_round_file(tmp_path, pid, mtime_offset_s=300) + rc = _run_cli(["project", "unblock", pid], cwd=tmp_path) + assert rc == 0 + project = project_store.load(pid, repo_root=tmp_path) + assert project.current_stage == Stage.PAPER_REVIEW + + def test_unblock_to_minor_revision(self, tmp_path: Path) -> None: + pid = "PROJ-100-test" + _build_project(tmp_path, pid) + _make_round_file(tmp_path, pid, mtime_offset_s=300) + rc = _run_cli(["project", "unblock", pid, "--to-minor"], cwd=tmp_path) + assert rc == 0 + project = project_store.load(pid, repo_root=tmp_path) + assert project.current_stage == Stage.PAPER_MINOR_REVISION + + def test_unblock_refuses_when_file_not_edited(self, tmp_path: Path) -> None: + pid = "PROJ-100-test" + # round file mtime BEFORE project.updated_at + _build_project(tmp_path, pid, updated_at=datetime.now(timezone.utc) + timedelta(hours=1)) + _make_round_file(tmp_path, pid, mtime_offset_s=-3600) # an hour ago + rc = _run_cli(["project", "unblock", pid], cwd=tmp_path) + assert rc != 0 + # Stage MUST be unchanged + project = project_store.load(pid, repo_root=tmp_path) + assert project.current_stage == Stage.PAPER_REVISION_BLOCKED + + def test_unblock_refuses_on_wrong_stage(self, tmp_path: Path) -> None: + pid = "PROJ-100-test" + _build_project(tmp_path, pid, stage=Stage.PAPER_REVIEW) + _make_round_file(tmp_path, pid, mtime_offset_s=300) + rc = _run_cli(["project", "unblock", pid], cwd=tmp_path) + assert rc != 0 + project = project_store.load(pid, repo_root=tmp_path) + assert project.current_stage == Stage.PAPER_REVIEW + + def test_unblock_refuses_when_no_round_files(self, tmp_path: Path) -> None: + pid = "PROJ-100-test" + _build_project(tmp_path, pid) + # No round files at all + rc = _run_cli(["project", "unblock", pid], cwd=tmp_path) + assert rc != 0 diff --git a/tests/unit/test_rereview_per_specialist_toggle.py b/tests/unit/test_rereview_per_specialist_toggle.py new file mode 100644 index 000000000..970ae68a5 --- /dev/null +++ b/tests/unit/test_rereview_per_specialist_toggle.py @@ -0,0 +1,167 @@ +"""Unit tests for the per-specialist re-review toggle (spec 012 / FR-014/017).""" + +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest + +from llmxive.state.reviews import prior_reviews_for_specialist +from llmxive.types import ActionItem, BackendName, ReviewerKind, ReviewRecord + + +_NOW = datetime(2026, 5, 17, 12, 0, 0, tzinfo=timezone.utc) + + +def _write_review_file( + repo: Path, + project_id: str, + reviewer_name: str, + *, + verdict: str, + when: datetime, + items: list[ActionItem] | None = None, +) -> Path: + """Write a valid review file under projects//paper/reviews/.""" + review_dir = repo / "projects" / project_id / "paper" / "reviews" + review_dir.mkdir(parents=True, exist_ok=True) + path = review_dir / f"{reviewer_name}__{when.date().isoformat()}__paper.md" + score = 0.5 if verdict == "accept" else 0.0 + rec = ReviewRecord( + reviewer_name=reviewer_name, + reviewer_kind=ReviewerKind.LLM, + artifact_path=f"projects/{project_id}/paper/metadata.json", + artifact_hash="a" * 64, + score=score, + verdict=verdict, + feedback="x", + reviewed_at=when, + prompt_version="1.1.0", + model_name="qwen.qwen3.5-122b", + backend=BackendName.DARTMOUTH, + action_items=items or ([ActionItem.from_text("placeholder.", "writing")] + if verdict != "accept" else []), + ) + front = rec.model_dump(mode="json") + import yaml + body = "# body\n" + path.write_text("---\n" + yaml.safe_dump(front, sort_keys=True) + "---\n\n" + body) + return path + + +class TestPriorReviewsForSpecialist: + def test_returns_only_this_specialist(self, tmp_path: Path) -> None: + proj = "PROJ-100-test" + _write_review_file(tmp_path, proj, "paper_reviewer_jargon_police", + verdict="minor_revision", when=_NOW) + _write_review_file(tmp_path, proj, "paper_reviewer_figure_critic", + verdict="accept", when=_NOW) + out = prior_reviews_for_specialist( + proj, "paper_reviewer_jargon_police", stage="paper", repo_root=tmp_path, + ) + assert len(out) == 1 + assert out[0].reviewer_name == "paper_reviewer_jargon_police" + + def test_sorted_ascending_by_time(self, tmp_path: Path) -> None: + proj = "PROJ-100-test" + _write_review_file(tmp_path, proj, "paper_reviewer_jargon_police", + verdict="minor_revision", when=_NOW - timedelta(days=2)) + _write_review_file(tmp_path, proj, "paper_reviewer_jargon_police", + verdict="accept", when=_NOW) + out = prior_reviews_for_specialist( + proj, "paper_reviewer_jargon_police", stage="paper", repo_root=tmp_path, + ) + assert len(out) == 2 + assert out[0].verdict == "minor_revision" + assert out[1].verdict == "accept" + + def test_no_priors_returns_empty(self, tmp_path: Path) -> None: + proj = "PROJ-100-test" + out = prior_reviews_for_specialist( + proj, "paper_reviewer_jargon_police", stage="paper", repo_root=tmp_path, + ) + assert out == [] + + def test_specialist_never_reviewed_returns_empty(self, tmp_path: Path) -> None: + """The trigger for re-review is THIS specialist's prior records, not + ANY specialist's. A specialist with no priors must not activate + re-review (FR-017).""" + proj = "PROJ-100-test" + _write_review_file(tmp_path, proj, "paper_reviewer_jargon_police", + verdict="minor_revision", when=_NOW) + out = prior_reviews_for_specialist( + proj, "paper_reviewer_safety_ethics", stage="paper", repo_root=tmp_path, + ) + assert out == [] + + +class TestRereviewSnippet: + """The shared snippet at agents/prompts/_shared/rereview_block.md is + the single source of truth for the two-question protocol (FR-014/015/016). + """ + + def test_snippet_file_exists_and_has_protocol_markers(self) -> None: + repo = Path(__file__).resolve().parents[2] + snippet = (repo / "agents" / "prompts" / "_shared" / "rereview_block.md").read_text() + # Load-bearing instruction phrases + assert "REDUCED to two questions" in snippet + assert "ADEQUATELY ADDRESSED" in snippet + assert "DO NOT generate a fresh independent critique" in snippet + # Placeholder for action items substitution + assert "{prior_action_items_yaml}" in snippet + # Verdict-rule guidance + assert "verdict: `accept`" in snippet + # ID preservation language (may wrap across lines) + flat = " ".join(snippet.split()) + assert "ORIGINAL IDs PRESERVED" in flat + + +class TestPaperReviewerBuildsRereviewPrompt: + """When THIS specialist has prior records, build_messages prepends the + re-review block. When it doesn't, the block is absent. + """ + + def _make_agent(self, name: str = "paper_reviewer_jargon_police") -> object: + """Build a PaperReviewerAgent with __init__ bypassed (registry-entry + not needed for build_messages — only entry.name is referenced).""" + from llmxive.agents.paper_reviewer import PaperReviewerAgent + agent = object.__new__(PaperReviewerAgent) + # Stub the registry entry minimally + from dataclasses import dataclass + @dataclass + class _StubEntry: + name: str + prompt_path: str + prompt_version: str + agent.entry = _StubEntry( + name=name, + prompt_path="agents/prompts/paper_reviewer.md", + prompt_version="1.1.0", + ) + return agent + + def test_no_priors_no_rereview_block(self, tmp_path: Path, monkeypatch) -> None: + # The actual build_messages call hits render_prompt, which needs the + # real repo's prompt file. Easier: directly call prior_reviews_for_specialist + # and assert it returns empty for a fresh fixture, then trust that + # the build_messages code path skips the rereview branch when so. + proj = "PROJ-100-test" + out = prior_reviews_for_specialist( + proj, "paper_reviewer_jargon_police", stage="paper", repo_root=tmp_path, + ) + assert out == [] # no priors → rereview branch skipped in build_messages + + def test_priors_present_for_self(self, tmp_path: Path) -> None: + proj = "PROJ-100-test" + items = [ActionItem.from_text("Add citation for Smith 2024.", "writing")] + _write_review_file(tmp_path, proj, "paper_reviewer_jargon_police", + verdict="minor_revision", when=_NOW, items=items) + out = prior_reviews_for_specialist( + proj, "paper_reviewer_jargon_police", stage="paper", repo_root=tmp_path, + ) + # build_messages would use out[-1] (most recent) to populate the + # rereview block with its action_items. + assert len(out) == 1 + assert len(out[0].action_items) == 1 + assert out[0].action_items[0].id == items[0].id diff --git a/tests/unit/test_review_record_action_items.py b/tests/unit/test_review_record_action_items.py new file mode 100644 index 000000000..184b41886 --- /dev/null +++ b/tests/unit/test_review_record_action_items.py @@ -0,0 +1,67 @@ +"""Tests for ReviewRecord.action_items field (spec 012 / FR-018).""" + +from __future__ import annotations + +from datetime import datetime, timezone + +import pytest +from pydantic import ValidationError + +from llmxive.types import ActionItem, BackendName, ReviewerKind, ReviewRecord + + +def _base_kwargs(verdict: str = "accept", score: float = 0.5, prompt_version: str = "1.1.0", + action_items: list[ActionItem] | None = None) -> dict: + return { + "reviewer_name": "paper_reviewer_jargon_police", + "reviewer_kind": ReviewerKind.LLM, + "artifact_path": "projects/PROJ-100-test/paper/metadata.json", + "artifact_hash": "a" * 64, + "score": score, + "verdict": verdict, + "feedback": "x", + "reviewed_at": datetime.now(timezone.utc), + "prompt_version": prompt_version, + "model_name": "qwen.qwen3.5-122b", + "backend": BackendName.DARTMOUTH, + "action_items": action_items if action_items is not None else [], + } + + +class TestReviewRecordActionItems: + def test_accept_with_empty_action_items_is_valid(self) -> None: + rec = ReviewRecord(**_base_kwargs(verdict="accept", score=0.5)) + assert rec.action_items == [] + + def test_accept_with_action_items_is_valid_informational(self) -> None: + # Per spec: accept verdict MAY have action_items (informational only). + items = [ActionItem.from_text("minor: consider rewording intro.", "writing")] + rec = ReviewRecord(**_base_kwargs(verdict="accept", score=0.5, + action_items=items)) + assert len(rec.action_items) == 1 + + def test_minor_revision_without_action_items_v110_raises(self) -> None: + # FR-018: non-accept verdict under prompt_version >= 1.1.0 must have ≥1 item. + with pytest.raises(ValidationError): + ReviewRecord(**_base_kwargs(verdict="minor_revision", score=0.0, + prompt_version="1.1.0", action_items=[])) + + def test_minor_revision_with_action_items_v110_is_valid(self) -> None: + items = [ActionItem.from_text("Add unit to Table column.", "writing")] + rec = ReviewRecord(**_base_kwargs(verdict="minor_revision", score=0.0, + prompt_version="1.1.0", action_items=items)) + assert rec.verdict == "minor_revision" + + def test_backcompat_v100_legacy_record_loads_without_items(self) -> None: + # Legacy records emitted under prompt_version 1.0.0 are grandfathered: + # the action_items validator doesn't fire. + rec = ReviewRecord(**_base_kwargs(verdict="minor_revision", score=0.0, + prompt_version="1.0.0", action_items=[])) + assert rec.action_items == [] + + def test_fatal_severity_action_item(self) -> None: + # A fatal action item is allowed alongside any non-accept verdict. + items = [ActionItem.from_text("Central hypothesis is unsupportable.", "fatal")] + rec = ReviewRecord(**_base_kwargs(verdict="fundamental_flaws", score=0.0, + prompt_version="1.1.0", action_items=items)) + assert rec.action_items[0].severity == "fatal" diff --git a/tests/unit/test_revision_planner.py b/tests/unit/test_revision_planner.py new file mode 100644 index 000000000..d5759ed44 --- /dev/null +++ b/tests/unit/test_revision_planner.py @@ -0,0 +1,137 @@ +"""Unit tests for revision_planner (spec 012 / T029).""" + +from __future__ import annotations + +from pathlib import Path + +import pytest +import yaml + +from llmxive.agents.revision_planner import ( + ArxivIntakeError, + RevisionPlanningError, + run_revision_pipeline, +) +from llmxive.types import ActionItem + + +def _make_home_grown_project(repo: Path, project_id: str) -> Path: + """Build a minimal home-grown project layout (no arxiv-intake markers).""" + pdir = repo / "projects" / project_id / "paper" / "specs" / "001-paper" + pdir.mkdir(parents=True) + (pdir / "spec.md").write_text("# spec\n", encoding="utf-8") + return repo / "projects" / project_id + + +def _make_arxiv_intake_project(repo: Path, project_id: str) -> Path: + """Build an arxiv-intake project layout (metadata.json + no specs/).""" + pdir = repo / "projects" / project_id / "paper" + pdir.mkdir(parents=True) + (pdir / "metadata.json").write_text('{"arxiv_id": "2605.99999"}', encoding="utf-8") + return repo / "projects" / project_id + + +class TestRunRevisionPipeline: + def test_writing_revision_produces_5_artifacts(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ + ActionItem.from_text("Add citation for Smith 2024.", "writing"), + ActionItem.from_text("Fix typo in abstract.", "writing"), + ] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + assert result.final_outcome == "ready_for_implementation" + assert result.round_number == 1 + spec_dir = result.revision_spec_path + assert (spec_dir / "spec.md").is_file() + assert (spec_dir / "plan.md").is_file() + assert (spec_dir / "tasks.md").is_file() + assert (spec_dir / "analyze-report.md").is_file() + assert (spec_dir / "result.yaml").is_file() + + def test_arxiv_intake_raises_defensive_error(self, tmp_path: Path) -> None: + _make_arxiv_intake_project(tmp_path, "PROJ-200-arxiv") + items = [ActionItem.from_text("x.", "writing")] + with pytest.raises(ArxivIntakeError): + run_revision_pipeline( + "PROJ-200-arxiv", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + + def test_action_items_become_tasks(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ + ActionItem.from_text("Add citation.", "writing"), + ActionItem.from_text("Re-run baseline.", "science"), + ActionItem.from_text("Fix typo.", "writing"), + ] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + tasks_text = (result.revision_spec_path / "tasks.md").read_text() + # One task per action item, sorted by severity (writing first, then science) + for it in items: + assert f"[{it.id}]" in tasks_text + # 3 tasks total + assert tasks_text.count("- [ ] T") == 3 + + def test_seed_specify_includes_action_items(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ActionItem.from_text("Add citation for Smith 2024.", "writing")] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + spec_text = (result.revision_spec_path / "spec.md").read_text() + assert "Add citation for Smith 2024" in spec_text + assert items[0].id in spec_text + + def test_science_kind_produces_science_revision_marker(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ActionItem.from_text("Re-run baseline.", "science")] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_science", repo_root=tmp_path, + ) + assert result.revision_kind == "paper_science" + spec_text = (result.revision_spec_path / "spec.md").read_text() + assert "paper_science" in spec_text + # result.yaml records kind + result_yaml = yaml.safe_load((result.revision_spec_path / "result.yaml").read_text()) + assert result_yaml["revision_kind"] == "paper_science" + + def test_round_number_increments(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ActionItem.from_text("x.", "writing")] + r1 = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + r2 = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + assert r1.round_number == 1 + assert r2.round_number == 2 + assert r1.revision_spec_path != r2.revision_spec_path + + def test_index_yaml_updated(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ActionItem.from_text("x.", "writing")] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + idx_path = tmp_path / "state" / "revisions" / "index.yaml" + assert idx_path.is_file() + idx = yaml.safe_load(idx_path.read_text()) + assert len(idx["ready"]) == 1 + assert idx["ready"][0]["project_id"] == "PROJ-100-test" + assert "round-1" in idx["ready"][0]["revision_spec_path"] + + def test_result_yaml_records_stage_outcomes(self, tmp_path: Path) -> None: + _make_home_grown_project(tmp_path, "PROJ-100-test") + items = [ActionItem.from_text("x.", "writing")] + result = run_revision_pipeline( + "PROJ-100-test", items, revision_kind="paper_writing", repo_root=tmp_path, + ) + rdata = yaml.safe_load((result.revision_spec_path / "result.yaml").read_text()) + names = [s["name"] for s in rdata["stage_results"]] + assert names == ["specify", "clarify", "plan", "tasks", "analyze"] + assert all(s["status"] == "success" for s in rdata["stage_results"]) + assert rdata["final_outcome"] == "ready_for_implementation" diff --git a/web/data/projects.json b/web/data/projects.json index 756f5faef..315cfd154 100644 --- a/web/data/projects.json +++ b/web/data/projects.json @@ -3340,7 +3340,7 @@ "name": "Zuhao Yang" } ], - "generated_at": "2026-05-18T12:47:30.607421+00:00", + "generated_at": "2026-05-18T13:14:52.930031+00:00", "personalities": [ { "display_name": "Ada Lovelace", @@ -4434,11 +4434,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-001-mechanistic-interpretability-of-ctcf-bin/specs/001-mechanistic-interpretability-of-ctcf-bin", "submitter": "system:brainstorm-seed", "title": "Mechanistic Interpretability of CTCF Binding-Site Selection", - "updated_at": "2026-05-15T12:35:01+00:00" + "updated_at": "2026-05-15T12:35:01+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -4603,11 +4605,13 @@ "phase_group": "blocked", "points_paper_total": 0.0, "points_research_total": 6.0, + "revision_spec_path": null, "speckit_paper_dir": "projects/PROJ-002-evolutionary-pressure-on-alternative-spl/paper/specs/001-paper", "speckit_research_dir": "projects/PROJ-002-evolutionary-pressure-on-alternative-spl/specs/001-evolutionary-pressure-on-alternative-spl", "submitter": null, "title": "Evolutionary Pressure on Alternative Splicing in Primates", - "updated_at": "2026-05-15T01:50:29.184055+00:00" + "updated_at": "2026-05-15T01:50:29.184055+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -4680,11 +4684,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "system:brainstorm-seed", "title": "Single-Cell Trajectories of T-Cell Exhaustion", - "updated_at": "2026-04-30T05:17:43.438672+00:00" + "updated_at": "2026-04-30T05:17:43.438672+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -4828,11 +4834,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-004-solvent-effects-on-photo-fries-rearrange/specs/001-solvent-effects-on-photo-fries-rearrange", "submitter": "system:brainstorm-seed", "title": "Solvent Effects on Photo-Fries Rearrangement Kinetics", - "updated_at": "2026-05-15T11:42:05+00:00" + "updated_at": "2026-05-15T11:42:05+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -4897,11 +4905,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "system:brainstorm-seed", "title": "Machine-Learned Potentials for Transition-Metal Catalysis", - "updated_at": "2026-04-29T15:34:54.286399+00:00" + "updated_at": "2026-04-29T15:34:54.286399+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5049,11 +5059,13 @@ "phase_group": "research_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/proj-tmp-003-agriculture-optimization/specs/001-agriculture-optimization", "submitter": "legacy:llmxive-automation", "title": "Climate-Smart Agricultural Practices in Rural Areas to Improve Food Security", - "updated_at": "2026-04-30T00:34:31.498379+00:00" + "updated_at": "2026-04-30T00:34:31.498379+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5202,11 +5214,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-007-energy-systems/specs/001-energy-systems", "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Developing Novel Solutions to Address Energy Inequity in Low-Income Communities", - "updated_at": "2026-05-15T12:35:01+00:00" + "updated_at": "2026-05-15T12:35:01+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5363,11 +5377,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/proj-tmp-006-psychology-research/specs/001-psychology-research", "submitter": "Claude 3 Sonnet", "title": "The Role of Mindfulness in Improving Social Skills Among Children with Autism", - "updated_at": "2026-05-15T11:42:05+00:00" + "updated_at": "2026-05-15T11:42:05+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5440,11 +5456,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Mesh Network Supercomputer Using Pooled Idle Computing Resources", - "updated_at": "2026-04-29T15:35:24.329665+00:00" + "updated_at": "2026-04-29T15:35:24.329665+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5517,11 +5535,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Qwen2.5-1.5B-Instruct", "title": "Quantitative Analysis of Gene Expression Dynamics during Human Brain Development", - "updated_at": "2026-04-29T15:35:57.018401+00:00" + "updated_at": "2026-04-29T15:35:57.018401+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5594,11 +5614,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Qwen2.5-3B-Instruct", "title": "Neural Mechanisms Underlying Adaptive Decision-Making in Response to Social Feedback", - "updated_at": "2026-04-29T15:36:20.248940+00:00" + "updated_at": "2026-04-29T15:36:20.248940+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5671,11 +5693,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Qwen/Qwen2.5-3B-Instruct", "title": "Submarine Hydrothermal Vent Microbial Communities as Indicators of Ocean Acidification", - "updated_at": "2026-04-29T15:37:33.757536+00:00" + "updated_at": "2026-04-29T15:37:33.757536+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5820,11 +5844,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Developing a Low-Cost Solar-Powered Water Purification System", - "updated_at": "2026-04-30T01:02:05.981876+00:00" + "updated_at": "2026-04-30T01:02:05.981876+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5897,11 +5923,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Robotic Artificial Intelligence Algorithms for Autonomous Vehicle Navigation", - "updated_at": "2026-04-30T01:03:27.335804+00:00" + "updated_at": "2026-04-30T01:03:27.335804+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -5974,11 +6002,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Improving Accessibility and Usability of Complex Computer Systems for People with Disabilities", - "updated_at": "2026-04-30T01:04:59.104189+00:00" + "updated_at": "2026-04-30T01:04:59.104189+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6051,11 +6081,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Evaluating the Effectiveness of Community-Based Natural Resource Management in Developing Countries", - "updated_at": "2026-04-30T01:07:44.959893+00:00" + "updated_at": "2026-04-30T01:07:44.959893+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6128,11 +6160,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Developing a Sustainable Solar-Powered Hydrogen Fuel Production System", - "updated_at": "2026-04-30T01:10:24.952372+00:00" + "updated_at": "2026-04-30T01:10:24.952372+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6205,11 +6239,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Adoption of Sustainable Agricultural Practices in Low-Income Areas through Community Engagement", - "updated_at": "2026-04-30T03:18:50.467564+00:00" + "updated_at": "2026-04-30T03:18:50.467564+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6282,11 +6318,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "TinyLlama-1.1B-Chat-v1.0", "title": "Exploring the Mechanisms of Gene Regulation Across Different Cell Types", - "updated_at": "2026-04-30T03:19:12.800514+00:00" + "updated_at": "2026-04-30T03:19:12.800514+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6359,11 +6397,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Claude 3 Sonnet", "title": "The Use of Climate-Smart Agricultural Practices in Rural Areas to Improve Food Security and Livelihoods", - "updated_at": "2026-04-30T03:19:42.309231+00:00" + "updated_at": "2026-04-30T03:19:42.309231+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6436,11 +6476,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Claude 3 Sonnet", "title": "Understanding Oceanic Phytoplankton Communities through Remote Sensing and Oceanographic Data", - "updated_at": "2026-04-30T03:20:10.772670+00:00" + "updated_at": "2026-04-30T03:20:10.772670+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6529,11 +6571,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Claude 3 Sonnet", "title": "Developing New Methods to Synthesize High-Performance Membranes using Sustainable Materials", - "updated_at": "2026-04-30T05:16:23.213134+00:00" + "updated_at": "2026-04-30T05:16:23.213134+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6689,11 +6733,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-023-bayesian-nonparametrics-for-anomaly-dete/specs/002-bayesian-nonparametrics-for-anomaly-dete", "submitter": "google.gemma-3-27b-it", "title": "Bayesian Nonparametrics for Anomaly Detection in Time Series", - "updated_at": "2026-05-15T12:35:01+00:00" + "updated_at": "2026-05-15T12:35:01+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6858,11 +6904,13 @@ "phase_group": "research_speckit", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-024-bayesian-nonparametrics-for-anomaly-dete/specs/001-bayesian-nonparametrics-for-anomaly-dete", "submitter": "google.gemma-3-27b-it", "title": "Bayesian Nonparametrics for Anomaly Detection in Time Series", - "updated_at": "2026-05-04T04:36:46.604284+00:00" + "updated_at": "2026-05-04T04:36:46.604284+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -6933,11 +6981,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Social Media Algorithm Transparency on User Well-being", - "updated_at": "2026-04-30T08:58:55.356622+00:00" + "updated_at": "2026-04-30T08:58:55.356622+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7008,11 +7058,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Visual Complexity on Implicit Bias", - "updated_at": "2026-04-30T08:59:22.874241+00:00" + "updated_at": "2026-04-30T08:59:22.874241+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7083,11 +7135,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Antibiotic Resistance Evolution from Genomic Sequences", - "updated_at": "2026-04-30T08:59:48.056399+00:00" + "updated_at": "2026-04-30T08:59:48.056399+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7158,11 +7212,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Different Prompting Strategies for Code Generation", - "updated_at": "2026-04-30T09:52:22.508968+00:00" + "updated_at": "2026-04-30T09:52:22.508968+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7233,11 +7289,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Cognitive Decline from Resting-State fMRI Network Topology", - "updated_at": "2026-04-30T09:53:38.972127+00:00" + "updated_at": "2026-04-30T09:53:38.972127+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7308,11 +7366,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Crystal Structures from Molecular Fingerprints", - "updated_at": "2026-04-30T09:54:36.448966+00:00" + "updated_at": "2026-04-30T09:54:36.448966+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7383,11 +7443,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Solar Flare Characteristics and Geomagnetic Storm Intensities", - "updated_at": "2026-04-30T10:43:51.038648+00:00" + "updated_at": "2026-04-30T10:43:51.038648+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7458,11 +7520,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Comment Style on Maintainability", - "updated_at": "2026-04-30T10:44:51.095915+00:00" + "updated_at": "2026-04-30T10:44:51.095915+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7533,11 +7597,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Properties from Compositional Data with Graph Neural Networks", - "updated_at": "2026-04-30T10:45:27.044042+00:00" + "updated_at": "2026-04-30T10:45:27.044042+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7608,11 +7674,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying Uncertainty in Small Sample Regression Models", - "updated_at": "2026-04-30T11:38:24.275228+00:00" + "updated_at": "2026-04-30T11:38:24.275228+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7683,11 +7751,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Crystal Structure and Thermal Conductivity in Perovskites", - "updated_at": "2026-04-30T11:40:35.096869+00:00" + "updated_at": "2026-04-30T11:40:35.096869+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7758,11 +7828,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Impact of Cosmic Microwave Background Anomalies on Early Universe Simulations", - "updated_at": "2026-04-30T11:42:06.763031+00:00" + "updated_at": "2026-04-30T11:42:06.763031+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7833,11 +7905,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Circadian Rhythm Disruption in Publicly Available Datasets", - "updated_at": "2026-04-30T12:45:56.799594+00:00" + "updated_at": "2026-04-30T12:45:56.799594+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7908,11 +7982,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Code Complexity Metrics and Bug Prediction Accuracy", - "updated_at": "2026-04-30T12:46:55.744081+00:00" + "updated_at": "2026-04-30T12:46:55.744081+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -7983,11 +8059,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Gut Microbiome Composition and Resting-State EEG Alpha Power", - "updated_at": "2026-04-30T12:47:39.336023+00:00" + "updated_at": "2026-04-30T12:47:39.336023+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8058,11 +8136,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Robustness of Statistical Tests to Data Contamination", - "updated_at": "2026-04-30T13:45:03.685780+00:00" + "updated_at": "2026-04-30T13:45:03.685780+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8133,11 +8213,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Use of Graph Neural Networks for Anomaly Detection in Network Traffic", - "updated_at": "2026-04-30T13:46:35.297808+00:00" + "updated_at": "2026-04-30T13:46:35.297808+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8208,11 +8290,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Stress Response from Publicly Available Transcriptomic Data", - "updated_at": "2026-04-30T13:47:34.536250+00:00" + "updated_at": "2026-04-30T13:47:34.536250+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8283,11 +8367,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Leveraging Large Language Models for Automated Code Refactoring", - "updated_at": "2026-04-30T15:43:17.902708+00:00" + "updated_at": "2026-04-30T15:43:17.902708+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8358,11 +8444,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Differential Privacy in Federated Learning", - "updated_at": "2026-04-30T15:43:44.512441+00:00" + "updated_at": "2026-04-30T15:43:44.512441+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8433,11 +8521,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Defect Chemistry and Ionic Conductivity in Solid Electrolytes", - "updated_at": "2026-04-30T15:44:10.433209+00:00" + "updated_at": "2026-04-30T15:44:10.433209+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8508,11 +8598,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Relationship Between Sleep Chronotype and Moral Judgement", - "updated_at": "2026-04-30T17:39:30.411606+00:00" + "updated_at": "2026-04-30T17:39:30.411606+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8583,11 +8675,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Impact of Data Imputation Methods on Causal Inference", - "updated_at": "2026-04-30T17:40:07.024472+00:00" + "updated_at": "2026-04-30T17:40:07.024472+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8658,11 +8752,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Decoding Internal States from Longitudinal Calcium Imaging Data", - "updated_at": "2026-04-30T17:41:14.167884+00:00" + "updated_at": "2026-04-30T17:41:14.167884+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8733,11 +8829,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Musical Preference and Personality Traits", - "updated_at": "2026-04-30T18:41:23.714429+00:00" + "updated_at": "2026-04-30T18:41:23.714429+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8808,11 +8906,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Priming on Prosocial Behavior in Online Communities", - "updated_at": "2026-04-30T18:42:50.719093+00:00" + "updated_at": "2026-04-30T18:42:50.719093+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8883,11 +8983,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Fractal Dimension and Energy Dissipation in Turbulent Flows", - "updated_at": "2026-04-30T18:43:21.883257+00:00" + "updated_at": "2026-04-30T18:43:21.883257+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -8958,11 +9060,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Leveraging LLMs for Automated Test Case Generation from Natural Language Requirements", - "updated_at": "2026-04-30T19:40:02.424307+00:00" + "updated_at": "2026-04-30T19:40:02.424307+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9033,11 +9137,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Unveiling Hidden Correlations Between Processing Parameters and Mechanical Properties in Additively Manufactured Alloys", - "updated_at": "2026-04-30T19:40:37.498281+00:00" + "updated_at": "2026-04-30T19:40:37.498281+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9108,11 +9214,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of p-Values in High-Dimensional Data", - "updated_at": "2026-04-30T19:41:35.353235+00:00" + "updated_at": "2026-04-30T19:41:35.353235+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9183,11 +9291,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Telomere Length on Lifespan Variation in Wild Bird Populations", - "updated_at": "2026-04-30T20:34:18.949859+00:00" + "updated_at": "2026-04-30T20:34:18.949859+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9258,11 +9368,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Musical Training on Functional Connectivity in Adolescent Brains", - "updated_at": "2026-04-30T20:34:53.302407+00:00" + "updated_at": "2026-04-30T20:34:53.302407+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9333,11 +9445,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Compiler Optimizations on LLM Inference Latency", - "updated_at": "2026-04-30T20:35:22.975877+00:00" + "updated_at": "2026-04-30T20:35:22.975877+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9408,11 +9522,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Role of Epigenetic Drift in Adaptive Landscape Exploration", - "updated_at": "2026-04-30T21:29:07.352541+00:00" + "updated_at": "2026-04-30T21:29:07.352541+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9483,11 +9599,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Automated Detection of Algorithmic Bias in Public Code Repositories", - "updated_at": "2026-04-30T21:29:41.740733+00:00" + "updated_at": "2026-04-30T21:29:41.740733+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9558,11 +9676,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Leveraging LLMs to Generate Unit Tests from API Documentation", - "updated_at": "2026-04-30T21:31:12.776097+00:00" + "updated_at": "2026-04-30T21:31:12.776097+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9633,11 +9753,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Reliability of Statistical Power Calculations in Real-World Datasets", - "updated_at": "2026-04-30T22:26:49.857908+00:00" + "updated_at": "2026-04-30T22:26:49.857908+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9708,11 +9830,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Code Ownership on Software Quality", - "updated_at": "2026-04-30T22:28:12.412725+00:00" + "updated_at": "2026-04-30T22:28:12.412725+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9783,11 +9907,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Computational Screening of Deep Eutectic Solvent Mixtures for CO2 Capture", - "updated_at": "2026-04-30T22:28:33.470329+00:00" + "updated_at": "2026-04-30T22:28:33.470329+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9858,11 +9984,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Discrepancies in Publicly Available Election Data", - "updated_at": "2026-04-30T23:26:39.470506+00:00" + "updated_at": "2026-04-30T23:26:39.470506+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -9933,11 +10061,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Generalizability of Statistical Significance in Pre-Registered Studies", - "updated_at": "2026-04-30T23:27:42.999477+00:00" + "updated_at": "2026-04-30T23:27:42.999477+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10008,11 +10138,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating Correlations Between Molecular Descriptors and Drug-Likeness Scores", - "updated_at": "2026-04-30T23:28:49.834996+00:00" + "updated_at": "2026-04-30T23:28:49.834996+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10083,11 +10215,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Brain Network Dynamics and Individual Differences in Dream Recall Frequency", - "updated_at": "2026-05-01T01:10:34.335676+00:00" + "updated_at": "2026-05-01T01:10:34.335676+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10158,11 +10292,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Performance of Different Data Structures in Implementing Bloom Filters", - "updated_at": "2026-05-01T01:13:08.441611+00:00" + "updated_at": "2026-05-01T01:13:08.441611+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10233,11 +10369,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Sentiment Drift in Social Media During Economic Recessions", - "updated_at": "2026-05-01T01:13:48.725731+00:00" + "updated_at": "2026-05-01T01:13:48.725731+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10308,11 +10446,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Information Content of Quantum Entanglement in Many-Body Systems", - "updated_at": "2026-05-01T03:18:51.395548+00:00" + "updated_at": "2026-05-01T03:18:51.395548+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10383,11 +10523,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Molecular Complexity and Degradation Rates in Pharmaceuticals", - "updated_at": "2026-05-01T03:19:18.479598+00:00" + "updated_at": "2026-05-01T03:19:18.479598+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10458,11 +10600,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Predictive Power of Brain Network Metrics for Schizophrenia Diagnosis", - "updated_at": "2026-05-01T03:19:54.501436+00:00" + "updated_at": "2026-05-01T03:19:54.501436+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10533,11 +10677,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Linguistic Style Matching on Perceived Rapport in Text-Based Communication", - "updated_at": "2026-05-01T05:25:42.324552+00:00" + "updated_at": "2026-05-01T05:25:42.324552+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10608,11 +10754,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Modeling of Network Propagation in Online Misinformation", - "updated_at": "2026-05-01T05:26:12.953711+00:00" + "updated_at": "2026-05-01T05:26:12.953711+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10683,11 +10831,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Bias in Pre-Print Server Publication Trends", - "updated_at": "2026-05-01T05:26:26.901586+00:00" + "updated_at": "2026-05-01T05:26:26.901586+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10758,11 +10908,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of Modified Newtonian Dynamics (MOND) with Galaxy Rotation Curves", - "updated_at": "2026-05-01T08:50:30.140912+00:00" + "updated_at": "2026-05-01T08:50:30.140912+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10833,11 +10985,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Diversity and Cognitive Performance Using UK Biobank Data", - "updated_at": "2026-05-01T08:51:40.352305+00:00" + "updated_at": "2026-05-01T08:51:40.352305+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10908,11 +11062,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Polymer Degradation Pathways with Graph Neural Networks", - "updated_at": "2026-05-01T08:52:06.205220+00:00" + "updated_at": "2026-05-01T08:52:06.205220+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -10983,11 +11139,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Predictive Power of Viral Sequence Features for Host Immune Response", - "updated_at": "2026-05-01T09:42:32.726123+00:00" + "updated_at": "2026-05-01T09:42:32.726123+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11058,11 +11216,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Phase Transitions in Amorphous Solids Under Shear Stress", - "updated_at": "2026-05-01T09:43:03.081645+00:00" + "updated_at": "2026-05-01T09:43:03.081645+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11133,11 +11293,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Plant Secondary Metabolite Profiles and Herbivore Resistance", - "updated_at": "2026-05-01T09:43:28.576637+00:00" + "updated_at": "2026-05-01T09:43:28.576637+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11224,11 +11386,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Structural Brain Connectivity and Individual Music Preferences", - "updated_at": "2026-05-01T11:31:58.430843+00:00" + "updated_at": "2026-05-01T11:31:58.430843+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11299,11 +11463,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Molecular Topology and Reaction Selectivity", - "updated_at": "2026-05-01T11:32:57.413673+00:00" + "updated_at": "2026-05-01T11:32:57.413673+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11374,11 +11540,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Predictive Power of Machine Learning for Organic Reaction Outcomes", - "updated_at": "2026-05-01T11:35:21.182046+00:00" + "updated_at": "2026-05-01T11:35:21.182046+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11449,11 +11617,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Battery Electrolyte Decomposition Products via DFT and Machine Learning", - "updated_at": "2026-05-01T12:34:10.951016+00:00" + "updated_at": "2026-05-01T12:34:10.951016+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11524,11 +11694,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Impact of Molecular Dynamics Simulation Parameters on Predicted Protein-Ligand Binding Affinity", - "updated_at": "2026-05-01T12:34:43.506207+00:00" + "updated_at": "2026-05-01T12:34:43.506207+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11599,11 +11771,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Sleep Quality Using Public Datasets", - "updated_at": "2026-05-01T12:36:15.446872+00:00" + "updated_at": "2026-05-01T12:36:15.446872+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11674,11 +11848,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Reaction Mechanisms from Spectroscopic Data with Machine Learning", - "updated_at": "2026-05-01T13:39:06.765808+00:00" + "updated_at": "2026-05-01T13:39:06.765808+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11749,11 +11925,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Code Churn and Technical Debt", - "updated_at": "2026-05-01T13:39:36.686755+00:00" + "updated_at": "2026-05-01T13:39:36.686755+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11824,11 +12002,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Robustness of LLM-Generated Code to Input Perturbations", - "updated_at": "2026-05-01T13:40:39.720124+00:00" + "updated_at": "2026-05-01T13:40:39.720124+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11899,11 +12079,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Polarity from SMILES Strings with Machine Learning", - "updated_at": "2026-05-01T14:34:12.101177+00:00" + "updated_at": "2026-05-01T14:34:12.101177+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -11974,11 +12156,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Feature Importance Drift in Pre-trained Models", - "updated_at": "2026-05-01T14:35:34.105885+00:00" + "updated_at": "2026-05-01T14:35:34.105885+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12049,11 +12233,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Cognitive Load on Decision-Making Accuracy in Simulated Environments", - "updated_at": "2026-05-01T14:37:12.718035+00:00" + "updated_at": "2026-05-01T14:37:12.718035+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12124,11 +12310,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Retrieval-Augmented Generation for Code Search", - "updated_at": "2026-05-01T15:29:43.442425+00:00" + "updated_at": "2026-05-01T15:29:43.442425+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12199,11 +12387,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Lottery Number Frequency and Player Behavior", - "updated_at": "2026-05-01T15:30:14.559426+00:00" + "updated_at": "2026-05-01T15:30:14.559426+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12274,11 +12464,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Role of Network Topology on Synchronization in Coupled Oscillators", - "updated_at": "2026-05-01T15:31:58.457727+00:00" + "updated_at": "2026-05-01T15:31:58.457727+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12349,11 +12541,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Corrosion Rates of Common Metals Using Machine Learning on Public Databases", - "updated_at": "2026-05-01T17:30:27.567987+00:00" + "updated_at": "2026-05-01T17:30:27.567987+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12424,11 +12618,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Corrosion Rates in Alloys Using Machine Learning on Public Datasets", - "updated_at": "2026-05-01T17:32:10.307011+00:00" + "updated_at": "2026-05-01T17:32:10.307011+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12499,11 +12695,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Algorithmic Fairness Metrics", - "updated_at": "2026-05-01T18:34:54.687253+00:00" + "updated_at": "2026-05-01T18:34:54.687253+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12574,11 +12772,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Influence of Microstructural Features on Fatigue Life in Aluminum Alloys", - "updated_at": "2026-05-01T18:35:34.674719+00:00" + "updated_at": "2026-05-01T18:35:34.674719+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12649,11 +12849,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Influence of Initial Conditions on Chaotic Systems", - "updated_at": "2026-05-01T18:37:05.814012+00:00" + "updated_at": "2026-05-01T18:37:05.814012+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12724,11 +12926,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Sleep Stage Transitions from Scalp EEG Using Deep Learning", - "updated_at": "2026-05-01T19:35:29.879508+00:00" + "updated_at": "2026-05-01T19:35:29.879508+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12799,11 +13003,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Mindfulness Training on Default Mode Network Activity", - "updated_at": "2026-05-01T19:36:00.177717+00:00" + "updated_at": "2026-05-01T19:36:00.177717+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12874,11 +13080,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Use of LLMs for Automated Documentation Generation from Code Commits", - "updated_at": "2026-05-01T19:36:34.412294+00:00" + "updated_at": "2026-05-01T19:36:34.412294+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -12949,11 +13157,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Flight Delay Data", - "updated_at": "2026-05-01T20:27:19.115743+00:00" + "updated_at": "2026-05-01T20:27:19.115743+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13024,11 +13234,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Narrative Framing on Attitudes Towards AI Assistance", - "updated_at": "2026-05-01T20:28:39.857774+00:00" + "updated_at": "2026-05-01T20:28:39.857774+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13099,11 +13311,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Effects of Dark Matter Halo Shapes on Galaxy Formation", - "updated_at": "2026-05-01T20:29:53.251324+00:00" + "updated_at": "2026-05-01T20:29:53.251324+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13174,11 +13388,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Code Style Consistency on LLM Code Understanding", - "updated_at": "2026-05-01T21:25:30.871845+00:00" + "updated_at": "2026-05-01T21:25:30.871845+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13249,11 +13465,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Statistical Properties of Simulated Dark Matter Halos", - "updated_at": "2026-05-01T21:26:53.525588+00:00" + "updated_at": "2026-05-01T21:26:53.525588+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13324,11 +13542,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Circadian Gene Expression and Metabolic Syndrome Risk", - "updated_at": "2026-05-01T21:28:10.834850+00:00" + "updated_at": "2026-05-01T21:28:10.834850+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13399,11 +13619,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Potential for Machine Learning to Identify Novel Phase Transitions in Isotropic Systems", - "updated_at": "2026-05-01T22:25:35.286777+00:00" + "updated_at": "2026-05-01T22:25:35.286777+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13474,11 +13696,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Dietary Fiber Intake and Gut Microbiome Composition Using Publicly Available Data", - "updated_at": "2026-05-01T22:26:49.892056+00:00" + "updated_at": "2026-05-01T22:26:49.892056+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13549,11 +13773,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Anticipated Regret on Choice Deferral", - "updated_at": "2026-05-01T22:27:58.806828+00:00" + "updated_at": "2026-05-01T22:27:58.806828+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13624,11 +13850,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Ambient Noise on Cognitive Flexibility in Remote Workers", - "updated_at": "2026-05-01T23:26:21.931618+00:00" + "updated_at": "2026-05-01T23:26:21.931618+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13699,11 +13927,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Connection Between Muon Anomalous Magnetic Dipole Moment and Dark Matter Interactions", - "updated_at": "2026-05-01T23:27:46.102347+00:00" + "updated_at": "2026-05-01T23:27:46.102347+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13774,11 +14004,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Stability using Machine Learning and DFT Calculations", - "updated_at": "2026-05-01T23:29:10.793237+00:00" + "updated_at": "2026-05-01T23:29:10.793237+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13849,11 +14081,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Grain Boundary Character on Diffusivity in Polycrystalline Materials", - "updated_at": "2026-05-02T01:47:58.677475+00:00" + "updated_at": "2026-05-02T01:47:58.677475+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13924,11 +14158,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Neural Correlates of Predictive Coding Errors in Auditory Perception", - "updated_at": "2026-05-02T01:49:16.250296+00:00" + "updated_at": "2026-05-02T01:49:16.250296+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -13999,11 +14235,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Modeling of Temporal Dependence in Cryptocurrency Price Fluctuations", - "updated_at": "2026-05-02T01:50:29.883383+00:00" + "updated_at": "2026-05-02T01:50:29.883383+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14074,11 +14312,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Machine Learning Prediction of Glass Transition Temperature from Composition", - "updated_at": "2026-05-02T03:17:18.165567+00:00" + "updated_at": "2026-05-02T03:17:18.165567+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14149,11 +14389,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Cosmic Ray Anisotropy and Solar Cycle Variations", - "updated_at": "2026-05-02T03:18:32.788512+00:00" + "updated_at": "2026-05-02T03:18:32.788512+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14224,11 +14466,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Identifying Structure-Property Relationships in Polymer Blends Using Public Databases", - "updated_at": "2026-05-02T03:19:45.074262+00:00" + "updated_at": "2026-05-02T03:19:45.074262+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14292,11 +14536,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Role of Microglial Morphology in Age-Related Cognitive Decline", - "updated_at": "2026-05-02T05:12:16.106390+00:00" + "updated_at": "2026-05-02T05:12:16.106390+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14367,11 +14613,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Effect of Alloying Elements on the Glass-Forming Ability of Metallic Glasses", - "updated_at": "2026-05-02T05:13:41.394608+00:00" + "updated_at": "2026-05-02T05:13:41.394608+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14442,11 +14690,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of OpenStreetMap Data for Urban Heat Island Effects", - "updated_at": "2026-05-02T05:15:04.827953+00:00" + "updated_at": "2026-05-02T05:15:04.827953+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14517,11 +14767,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Avian Migration Patterns from Publicly Available eBird Data", - "updated_at": "2026-05-02T06:52:12.148476+00:00" + "updated_at": "2026-05-02T06:52:12.148476+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14592,11 +14844,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Coral Bleaching Susceptibility from Environmental Data", - "updated_at": "2026-05-02T06:53:28.950734+00:00" + "updated_at": "2026-05-02T06:53:28.950734+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14667,11 +14921,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Influence of Network Topology on Spontaneous Brain Activity Patterns", - "updated_at": "2026-05-02T06:54:49.468581+00:00" + "updated_at": "2026-05-02T06:54:49.468581+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14742,11 +14998,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Polymer Glass Transition Temperatures with Graph Neural Networks", - "updated_at": "2026-05-02T07:41:08.193405+00:00" + "updated_at": "2026-05-02T07:41:08.193405+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14817,11 +15075,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Explainability of LLM-Based Bug Fixes", - "updated_at": "2026-05-02T07:42:16.642919+00:00" + "updated_at": "2026-05-02T07:42:16.642919+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14892,11 +15152,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Perceived Social Support on Resilience to Online Harassment", - "updated_at": "2026-05-02T07:43:33.649025+00:00" + "updated_at": "2026-05-02T07:43:33.649025+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -14967,11 +15229,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Bird Migration Patterns and Climate Change", - "updated_at": "2026-05-02T08:41:43.977652+00:00" + "updated_at": "2026-05-02T08:41:43.977652+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15042,11 +15306,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Stability of Rotating Bose-Einstein Condensates with Dipolar Interactions", - "updated_at": "2026-05-02T08:42:57.046024+00:00" + "updated_at": "2026-05-02T08:42:57.046024+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15117,11 +15383,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Cognitive Mechanisms Underlying Intuitive Moral Judgments in Virtual Environments", - "updated_at": "2026-05-02T08:44:11.299453+00:00" + "updated_at": "2026-05-02T08:44:11.299453+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15192,11 +15460,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Identifying Predictive Biomarkers of Chemotherapy Response in Public Cancer Datasets", - "updated_at": "2026-05-02T09:34:51.190313+00:00" + "updated_at": "2026-05-02T09:34:51.190313+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15267,11 +15537,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Soil Microbiome Diversity on Plant Disease Resistance", - "updated_at": "2026-05-02T09:37:01.081006+00:00" + "updated_at": "2026-05-02T09:37:01.081006+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15342,11 +15614,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Alloying on Creep Resistance via Public Data", - "updated_at": "2026-05-02T09:38:15.851482+00:00" + "updated_at": "2026-05-02T09:38:15.851482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15417,11 +15691,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effects of Gamified Habit Tracking on Long-Term Behavioral Change", - "updated_at": "2026-05-02T10:27:25.149899+00:00" + "updated_at": "2026-05-02T10:27:25.149899+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15492,11 +15768,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Emotional Contagion on Collective Decision-Making in Online Forums", - "updated_at": "2026-05-02T10:28:36.167152+00:00" + "updated_at": "2026-05-02T10:28:36.167152+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15567,11 +15845,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Efficacy of Code Summarization Techniques for Bug Localization", - "updated_at": "2026-05-02T10:29:52.240322+00:00" + "updated_at": "2026-05-02T10:29:52.240322+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15642,11 +15922,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Developer Productivity", - "updated_at": "2026-05-02T11:23:40.693918+00:00" + "updated_at": "2026-05-02T11:23:40.693918+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15717,11 +15999,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Solubility in Mixed Solvents with Machine Learning", - "updated_at": "2026-05-02T11:24:52.005807+00:00" + "updated_at": "2026-05-02T11:24:52.005807+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15792,11 +16076,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Attention on False Memory Formation", - "updated_at": "2026-05-02T11:26:08.998931+00:00" + "updated_at": "2026-05-02T11:26:08.998931+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15867,11 +16153,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Disease Resistance from Publicly Available Metabolomic Data", - "updated_at": "2026-05-02T12:30:21.681965+00:00" + "updated_at": "2026-05-02T12:30:21.681965+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -15942,11 +16230,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Predictive Power of Machine Learning for Identifying Novel High-Entropy Alloy Compositions", - "updated_at": "2026-05-02T12:31:37.111506+00:00" + "updated_at": "2026-05-02T12:31:37.111506+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16017,11 +16307,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Sensory Deprivation on Dream Recall and Bizarreness", - "updated_at": "2026-05-02T12:32:46.200341+00:00" + "updated_at": "2026-05-02T12:32:46.200341+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16092,11 +16384,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Uncovering Correlations Between Processing Conditions and Texture in Rolled Metals", - "updated_at": "2026-05-02T13:38:01.592155+00:00" + "updated_at": "2026-05-02T13:38:01.592155+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16167,11 +16461,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Code Complexity Metrics and Bug Prediction", - "updated_at": "2026-05-02T13:39:14.966570+00:00" + "updated_at": "2026-05-02T13:39:14.966570+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16242,11 +16538,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Individual Differences in Sensory Processing Speed from Resting-State EEG Power Spectra", - "updated_at": "2026-05-02T13:40:31.227806+00:00" + "updated_at": "2026-05-02T13:40:31.227806+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16317,11 +16615,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Detecting Statistical Power Drift in Replicated Studies", - "updated_at": "2026-05-02T14:28:39.165699+00:00" + "updated_at": "2026-05-02T14:28:39.165699+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16392,11 +16692,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Review Efficiency", - "updated_at": "2026-05-02T14:29:57.019464+00:00" + "updated_at": "2026-05-02T14:29:57.019464+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16467,11 +16769,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Security", - "updated_at": "2026-05-02T14:31:31.352545+00:00" + "updated_at": "2026-05-02T14:31:31.352545+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16542,11 +16846,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Decoding Regulatory Element Contributions to Phenotypic Plasticity in Yeast", - "updated_at": "2026-05-02T15:24:10.633216+00:00" + "updated_at": "2026-05-02T15:24:10.633216+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16617,11 +16923,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Complexity on LLM Code Understanding", - "updated_at": "2026-05-02T15:25:25.525452+00:00" + "updated_at": "2026-05-02T15:25:25.525452+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16692,11 +17000,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Cognitive Flexibility from Resting-State Functional Connectivity Variability", - "updated_at": "2026-05-02T15:26:39.999309+00:00" + "updated_at": "2026-05-02T15:26:39.999309+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16767,11 +17077,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Video Game Speedrun Data", - "updated_at": "2026-05-02T16:26:13.225117+00:00" + "updated_at": "2026-05-02T16:26:13.225117+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16842,11 +17154,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Security: A Fuzzing Study", - "updated_at": "2026-05-02T16:28:35.037442+00:00" + "updated_at": "2026-05-02T16:28:35.037442+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16917,11 +17231,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Molecular Structure and Dye-Sensitized Solar Cell Performance", - "updated_at": "2026-05-02T16:30:04.667612+00:00" + "updated_at": "2026-05-02T16:30:04.667612+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -16992,11 +17308,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Permeability Through Porous Materials Using Graph Neural Networks", - "updated_at": "2026-05-02T17:24:05.545643+00:00" + "updated_at": "2026-05-02T17:24:05.545643+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17067,11 +17385,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Early Life Stress on Hippocampal Subfield Volumes", - "updated_at": "2026-05-02T17:25:20.743331+00:00" + "updated_at": "2026-05-02T17:25:20.743331+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17142,11 +17462,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Uncovering Latent Relationships Between Molecular Descriptors and Antibiotic Resistance", - "updated_at": "2026-05-02T17:26:33.634250+00:00" + "updated_at": "2026-05-02T17:26:33.634250+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17217,11 +17539,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Resolution on Gravitational Wave Signal Detection", - "updated_at": "2026-05-02T18:29:26.168519+00:00" + "updated_at": "2026-05-02T18:29:26.168519+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17292,11 +17616,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Role of Network Structure in Superconducting Qubit Coupling", - "updated_at": "2026-05-02T18:30:43.972316+00:00" + "updated_at": "2026-05-02T18:30:43.972316+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17367,11 +17693,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Oscillations as a Biomarker for Predicting Response to Transcranial Direct Current Stimulation", - "updated_at": "2026-05-02T18:32:08.928269+00:00" + "updated_at": "2026-05-02T18:32:08.928269+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17442,11 +17770,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Chemical Reaction Yields from Spectroscopic Data with Attention Mechanisms", - "updated_at": "2026-05-02T19:30:09.908531+00:00" + "updated_at": "2026-05-02T19:30:09.908531+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17517,11 +17847,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Code Authorship Diversity on Software Security", - "updated_at": "2026-05-02T19:31:23.575773+00:00" + "updated_at": "2026-05-02T19:31:23.575773+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17592,11 +17924,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Self-Compassion on Resilience to Negative Feedback", - "updated_at": "2026-05-02T19:32:37.416881+00:00" + "updated_at": "2026-05-02T19:32:37.416881+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17667,11 +18001,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Evaluation of Dimensionality Reduction Techniques on Gene Expression Data", - "updated_at": "2026-05-02T20:22:00.748413+00:00" + "updated_at": "2026-05-02T20:22:00.748413+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17742,11 +18078,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Elastic Moduli of 2D Materials from First-Principles Calculations", - "updated_at": "2026-05-02T20:23:15.005798+00:00" + "updated_at": "2026-05-02T20:23:15.005798+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17817,11 +18155,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Catalytic Activity from Electronic Structure and Reaction Path Features", - "updated_at": "2026-05-02T20:24:22.515843+00:00" + "updated_at": "2026-05-02T20:24:22.515843+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17892,11 +18232,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying Neural Representation Drift During Skill Learning", - "updated_at": "2026-05-02T21:22:46.683548+00:00" + "updated_at": "2026-05-02T21:22:46.683548+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -17967,11 +18309,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Sports Data for Predictive Modeling", - "updated_at": "2026-05-02T21:24:08.334507+00:00" + "updated_at": "2026-05-02T21:24:08.334507+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18042,11 +18386,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Transposable Element Activity on Gene Expression Variation in Drosophila", - "updated_at": "2026-05-02T21:25:38.201220+00:00" + "updated_at": "2026-05-02T21:25:38.201220+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18117,11 +18463,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Pupil Dilation and Cognitive Load During Visual Search", - "updated_at": "2026-05-02T22:21:21.597984+00:00" + "updated_at": "2026-05-02T22:21:21.597984+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18192,11 +18540,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Recipe Data for Ingredient Substitution Prediction", - "updated_at": "2026-05-02T22:22:28.219005+00:00" + "updated_at": "2026-05-02T22:22:28.219005+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18267,11 +18617,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Properties from Vibrational Spectra with Deep Learning", - "updated_at": "2026-05-02T22:23:45.547548+00:00" + "updated_at": "2026-05-02T22:23:45.547548+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18342,11 +18694,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Validity of the Equipartition Theorem in Driven Granular Systems", - "updated_at": "2026-05-02T23:24:03.340628+00:00" + "updated_at": "2026-05-02T23:24:03.340628+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18417,11 +18771,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Mitochondrial DNA Variation and Aging Rates in Publicly Available Datasets", - "updated_at": "2026-05-02T23:25:29.111331+00:00" + "updated_at": "2026-05-02T23:25:29.111331+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18492,11 +18848,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Metacognitive Awareness on Reality Testing", - "updated_at": "2026-05-02T23:26:40.373416+00:00" + "updated_at": "2026-05-02T23:26:40.373416+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18567,11 +18925,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Automated Code Review Tools on Open-Source Projects", - "updated_at": "2026-05-03T03:19:08.822157+00:00" + "updated_at": "2026-05-03T03:19:08.822157+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18642,11 +19002,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Species Distribution Shifts Using Historical Occurrence Records and Climate Data", - "updated_at": "2026-05-03T03:20:22.519194+00:00" + "updated_at": "2026-05-03T03:20:22.519194+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18717,11 +19079,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Different Missing Data Mechanisms on Regression Discontinuity Designs", - "updated_at": "2026-05-03T03:21:35.513550+00:00" + "updated_at": "2026-05-03T03:21:35.513550+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18792,11 +19156,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Perspective-Taking on Moral Outrage in Online Discourse", - "updated_at": "2026-05-03T05:17:25.545994+00:00" + "updated_at": "2026-05-03T05:17:25.545994+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18867,11 +19233,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Statistical Significance of Fine-Structure Constant Variations", - "updated_at": "2026-05-03T05:18:32.994249+00:00" + "updated_at": "2026-05-03T05:18:32.994249+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -18942,11 +19310,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Protein-Protein Interactions from Co-expression Networks in Public Plant Databases", - "updated_at": "2026-05-03T05:19:52.165489+00:00" + "updated_at": "2026-05-03T05:19:52.165489+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19017,11 +19387,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Stability of Perovskite Structures Using Machine Learning", - "updated_at": "2026-05-03T08:44:28.239339+00:00" + "updated_at": "2026-05-03T08:44:28.239339+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19092,11 +19464,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Statistical Properties of Synthetic Data Generation Techniques", - "updated_at": "2026-05-03T08:45:43.839905+00:00" + "updated_at": "2026-05-03T08:45:43.839905+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19167,11 +19541,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Generated Code Explanations on Comprehension", - "updated_at": "2026-05-03T08:46:57.125665+00:00" + "updated_at": "2026-05-03T08:46:57.125665+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19242,11 +19618,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Cognitive Decline in Aging Populations", - "updated_at": "2026-05-03T09:39:40.034039+00:00" + "updated_at": "2026-05-03T09:39:40.034039+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19317,11 +19695,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Efficiency and Fluid Intelligence", - "updated_at": "2026-05-03T09:41:30.967558+00:00" + "updated_at": "2026-05-03T09:41:30.967558+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19392,11 +19772,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Validity of the Inverse Square Law at Sub-Millimeter Scales", - "updated_at": "2026-05-03T09:42:40.500845+00:00" + "updated_at": "2026-05-03T09:42:40.500845+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19467,11 +19849,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Environmental Factors on Fungal Community Structure in Soil", - "updated_at": "2026-05-03T10:29:10.753757+00:00" + "updated_at": "2026-05-03T10:29:10.753757+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19542,11 +19926,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Battery Degradation from Public Cycling Data with Recurrent Neural Networks", - "updated_at": "2026-05-03T10:30:28.298916+00:00" + "updated_at": "2026-05-03T10:30:28.298916+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19617,11 +20003,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Style on LLM Code Understanding and Generation", - "updated_at": "2026-05-03T10:31:44.122228+00:00" + "updated_at": "2026-05-03T10:31:44.122228+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19692,11 +20080,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Examining the Impact of Auditory Feedback on Motor Sequence Learning", - "updated_at": "2026-05-03T11:22:38.755309+00:00" + "updated_at": "2026-05-03T11:22:38.755309+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19767,11 +20157,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Role of Temporal Discounting in Procrastination on Cognitive Tasks", - "updated_at": "2026-05-03T11:23:46.345233+00:00" + "updated_at": "2026-05-03T11:23:46.345233+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19842,11 +20234,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Drought Tolerance from Publicly Available Physiological and Genomic Data", - "updated_at": "2026-05-03T11:25:00.868944+00:00" + "updated_at": "2026-05-03T11:25:00.868944+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19917,11 +20311,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Secondary Metabolite Profiles from Publicly Available Genomic Data", - "updated_at": "2026-05-03T12:30:32.703122+00:00" + "updated_at": "2026-05-03T12:30:32.703122+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -19992,11 +20388,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Cold Rolling Reduction on Texture Evolution in FCC Metals", - "updated_at": "2026-05-03T12:31:45.280136+00:00" + "updated_at": "2026-05-03T12:31:45.280136+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20067,11 +20465,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Incidental Music on Autobiographical Memory Retrieval", - "updated_at": "2026-05-03T12:33:00.709328+00:00" + "updated_at": "2026-05-03T12:33:00.709328+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20142,11 +20542,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Testing Lorentz Violation with Publicly Available CMB Data", - "updated_at": "2026-05-03T13:38:30.923664+00:00" + "updated_at": "2026-05-03T13:38:30.923664+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20217,11 +20619,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Molecular Chirality on Flavor Perception", - "updated_at": "2026-05-03T13:39:44.388828+00:00" + "updated_at": "2026-05-03T13:39:44.388828+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20292,11 +20696,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Phase Transitions in Amorphous Solids Using Machine Learning", - "updated_at": "2026-05-03T13:40:59.189356+00:00" + "updated_at": "2026-05-03T13:40:59.189356+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20367,11 +20773,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Spatial Correlations on Perovskite Solar Cell Efficiency", - "updated_at": "2026-05-03T14:27:41.731298+00:00" + "updated_at": "2026-05-03T14:27:41.731298+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20442,11 +20850,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Visual Aesthetics on Perceived Credibility of Online Information", - "updated_at": "2026-05-03T14:28:52.770188+00:00" + "updated_at": "2026-05-03T14:28:52.770188+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20517,11 +20927,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Election Poll Aggregates", - "updated_at": "2026-05-03T14:30:09.401870+00:00" + "updated_at": "2026-05-03T14:30:09.401870+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20592,11 +21004,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Identifying Genetic Markers Associated with Honeybee Colony Collapse Disorder", - "updated_at": "2026-05-03T15:23:38.738184+00:00" + "updated_at": "2026-05-03T15:23:38.738184+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20667,11 +21081,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available GitHub Issue Resolution Times", - "updated_at": "2026-05-03T15:24:53.886811+00:00" + "updated_at": "2026-05-03T15:24:53.886811+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20742,11 +21158,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Influence of Topological Defects on 2D Material Properties", - "updated_at": "2026-05-03T15:26:09.078840+00:00" + "updated_at": "2026-05-03T15:26:09.078840+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20817,11 +21235,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Yield Strength of Steel Alloys from Composition and Heat Treatment Parameters", - "updated_at": "2026-05-03T17:25:23.766436+00:00" + "updated_at": "2026-05-03T17:25:23.766436+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20892,11 +21312,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Gene Expression from Chromatin Accessibility in Human Cells", - "updated_at": "2026-05-03T17:26:36.052037+00:00" + "updated_at": "2026-05-03T17:26:36.052037+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -20967,11 +21389,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Impact of Network Structure on Synchronization in Complex Physical Systems", - "updated_at": "2026-05-03T17:27:05.621989+00:00" + "updated_at": "2026-05-03T17:27:05.621989+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21042,11 +21466,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Code Simplification on LLM Performance", - "updated_at": "2026-05-03T18:29:00.183670+00:00" + "updated_at": "2026-05-03T18:29:00.183670+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21117,11 +21543,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Decoding Emotional Valence from Facial EMG Patterns with Machine Learning", - "updated_at": "2026-05-03T18:30:32.797671+00:00" + "updated_at": "2026-05-03T18:30:32.797671+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21192,11 +21620,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Gut Microbiome Composition and Mental Health in Public Datasets", - "updated_at": "2026-05-03T18:31:02.772169+00:00" + "updated_at": "2026-05-03T18:31:02.772169+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21267,11 +21697,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Brain Network Dynamics and Musical Creativity", - "updated_at": "2026-05-03T19:29:32.532718+00:00" + "updated_at": "2026-05-03T19:29:32.532718+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21342,11 +21774,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Generated Code Comments on Code Readability", - "updated_at": "2026-05-03T19:30:23.781725+00:00" + "updated_at": "2026-05-03T19:30:23.781725+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21417,11 +21851,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Fluorescence Quantum Yields with Graph Neural Networks", - "updated_at": "2026-05-03T19:30:52.542216+00:00" + "updated_at": "2026-05-03T19:30:52.542216+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21492,11 +21928,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Leveraging LLMs for Automated Generation of Code Complexity Metrics", - "updated_at": "2026-05-03T20:21:58.397950+00:00" + "updated_at": "2026-05-03T20:21:58.397950+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21567,11 +22005,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Amine Reactivity Using Graph Neural Networks and Public Databases", - "updated_at": "2026-05-03T20:22:30.424089+00:00" + "updated_at": "2026-05-03T20:22:30.424089+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21642,11 +22082,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Role of Cognitive Dissonance in Justifying Unethical AI Use", - "updated_at": "2026-05-03T20:23:46.282446+00:00" + "updated_at": "2026-05-03T20:23:46.282446+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21717,11 +22159,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Predictive Coding Errors on Subjective Time Perception", - "updated_at": "2026-05-03T21:22:51.114036+00:00" + "updated_at": "2026-05-03T21:22:51.114036+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21792,11 +22236,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Traffic Accident Data", - "updated_at": "2026-05-03T21:24:02.373733+00:00" + "updated_at": "2026-05-03T21:24:02.373733+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21867,11 +22313,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Ductility of Additively Manufactured Nickel-Based Superalloys", - "updated_at": "2026-05-03T21:24:33.935421+00:00" + "updated_at": "2026-05-03T21:24:33.935421+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -21942,11 +22390,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Interactions in Ionic Liquids via Machine Learning", - "updated_at": "2026-05-03T22:21:27.296034+00:00" + "updated_at": "2026-05-03T22:21:27.296034+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22017,11 +22467,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Surface Treatments on the Adhesion Strength of Polymers", - "updated_at": "2026-05-03T22:21:57.552870+00:00" + "updated_at": "2026-05-03T22:21:57.552870+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22092,11 +22544,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Trade-offs Between Static and Dynamic Analysis for LLM-Generated Code", - "updated_at": "2026-05-03T22:23:01.502231+00:00" + "updated_at": "2026-05-03T22:23:01.502231+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22167,11 +22621,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Visual Complexity on Prefrontal Cortex Activity", - "updated_at": "2026-05-03T23:24:29.574574+00:00" + "updated_at": "2026-05-03T23:24:29.574574+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22242,11 +22698,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Predictive Power of Machine Learning for Identifying Novel Phase-Change Materials", - "updated_at": "2026-05-03T23:25:02.276117+00:00" + "updated_at": "2026-05-03T23:25:02.276117+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22317,11 +22775,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of Prompt Engineering for LLM-Based Code Translation", - "updated_at": "2026-05-03T23:25:35.708365+00:00" + "updated_at": "2026-05-03T23:25:35.708365+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22392,11 +22852,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Climate Model Output Ensembles", - "updated_at": "2026-05-04T01:03:42.719678+00:00" + "updated_at": "2026-05-04T01:03:42.719678+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22467,11 +22929,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Individual Differences in Musical Emotion Perception", - "updated_at": "2026-05-04T01:04:38.205488+00:00" + "updated_at": "2026-05-04T01:04:38.205488+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22542,11 +23006,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Diffusion Coefficient of Hydrogen in Metals from Compositional and Microstructural Descriptors", - "updated_at": "2026-05-04T01:07:00.627824+00:00" + "updated_at": "2026-05-04T01:07:00.627824+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22617,11 +23083,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing Statistical Power in Reproducible Research with Public Datasets", - "updated_at": "2026-05-04T03:20:16.344032+00:00" + "updated_at": "2026-05-04T03:20:16.344032+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22692,11 +23160,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Weight from Vibrational Spectroscopy with Machine Learning", - "updated_at": "2026-05-04T03:20:48.044584+00:00" + "updated_at": "2026-05-04T03:20:48.044584+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22767,11 +23237,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Influence of Network Topology on Heat Transport in Disordered Materials", - "updated_at": "2026-05-04T03:21:31.190992+00:00" + "updated_at": "2026-05-04T03:21:31.190992+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22842,11 +23314,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Interactions in Polymer Blends Using Machine Learning", - "updated_at": "2026-05-04T05:18:56.808664+00:00" + "updated_at": "2026-05-04T05:18:56.808664+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22917,11 +23391,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Crystal Packing from Structural Descriptors", - "updated_at": "2026-05-04T05:19:20.281102+00:00" + "updated_at": "2026-05-04T05:19:20.281102+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -22992,11 +23468,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Statistical Significance of A/B Test Results with Non-Independent Observations", - "updated_at": "2026-05-04T05:20:45.049600+00:00" + "updated_at": "2026-05-04T05:20:45.049600+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23067,11 +23545,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Cold Work on Recrystallization Kinetics in Aluminum Alloys", - "updated_at": "2026-05-04T07:18:14.074357+00:00" + "updated_at": "2026-05-04T07:18:14.074357+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23142,11 +23622,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Surface Roughness on Tribological Properties", - "updated_at": "2026-05-04T07:18:39.024040+00:00" + "updated_at": "2026-05-04T07:18:39.024040+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23217,11 +23699,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Mapping Cosmic Microwave Background Cold Spots to Large-Scale Structure", - "updated_at": "2026-05-04T07:19:11.011990+00:00" + "updated_at": "2026-05-04T07:19:11.011990+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23292,11 +23776,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Reactivity Using Graph Neural Networks and Public Databases", - "updated_at": "2026-05-04T09:01:38.742661+00:00" + "updated_at": "2026-05-04T09:01:38.742661+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23367,11 +23853,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Strain Rate on the Yield Strength of Metals", - "updated_at": "2026-05-04T09:02:11.057509+00:00" + "updated_at": "2026-05-04T09:02:11.057509+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23442,11 +23930,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Adsorption Isotherm Parameters from Molecular Features", - "updated_at": "2026-05-04T09:02:39.747957+00:00" + "updated_at": "2026-05-04T09:02:39.747957+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23517,11 +24007,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Estimating Causal Effects with Doubly Robust Methods on Observational Data", - "updated_at": "2026-05-04T09:59:46.713675+00:00" + "updated_at": "2026-05-04T09:59:46.713675+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23592,11 +24084,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Long-Term Code Maintainability", - "updated_at": "2026-05-04T10:00:09.389750+00:00" + "updated_at": "2026-05-04T10:00:09.389750+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23667,11 +24161,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Alloying on Magnetic Properties via Public Data", - "updated_at": "2026-05-04T10:01:42.359417+00:00" + "updated_at": "2026-05-04T10:01:42.359417+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23742,11 +24238,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Digital Decluttering on Cognitive Performance and Well-being", - "updated_at": "2026-05-04T10:51:37.459253+00:00" + "updated_at": "2026-05-04T10:51:37.459253+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23817,11 +24315,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Temporal Prediction Errors in Auditory Scene Analysis", - "updated_at": "2026-05-04T10:52:03.153384+00:00" + "updated_at": "2026-05-04T10:52:03.153384+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23892,11 +24392,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Immune Response to Influenza Vaccination", - "updated_at": "2026-05-04T10:53:23.360611+00:00" + "updated_at": "2026-05-04T10:53:23.360611+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -23967,11 +24469,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Atmospheric Pressure and Earthquake Precursors", - "updated_at": "2026-05-04T11:42:10.320351+00:00" + "updated_at": "2026-05-04T11:42:10.320351+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24042,11 +24546,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Band Gap of Perovskite Materials", - "updated_at": "2026-05-04T11:43:24.505811+00:00" + "updated_at": "2026-05-04T11:43:24.505811+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24117,11 +24623,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Music Streaming Data for Genre Evolution", - "updated_at": "2026-05-04T11:44:36.576908+00:00" + "updated_at": "2026-05-04T11:44:36.576908+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24192,11 +24700,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Avian Vocal Complexity from Environmental Noise Levels", - "updated_at": "2026-05-04T13:45:40.731509+00:00" + "updated_at": "2026-05-04T13:45:40.731509+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24267,11 +24777,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Cleaning on Statistical Inference", - "updated_at": "2026-05-04T13:46:13.524418+00:00" + "updated_at": "2026-05-04T13:46:13.524418+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24342,11 +24854,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Statistical Properties of Simulated Black Hole Mergers", - "updated_at": "2026-05-04T13:48:38.483190+00:00" + "updated_at": "2026-05-04T13:48:38.483190+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24441,11 +24955,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Simulated Social Rejection on Neural Responses to Positive Feedback", - "updated_at": "2026-05-04T15:50:25.731170+00:00" + "updated_at": "2026-05-04T15:50:25.731170+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24516,11 +25032,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Disease Resistance from Publicly Available Genomic and Metabolomic Data", - "updated_at": "2026-05-04T15:50:53.303895+00:00" + "updated_at": "2026-05-04T15:50:53.303895+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24591,11 +25109,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Influence of Network Structure on Heat Conduction in Amorphous Solids", - "updated_at": "2026-05-04T15:51:46.221006+00:00" + "updated_at": "2026-05-04T15:51:46.221006+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24734,11 +25254,13 @@ "phase_group": "research_speckit", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-261-evaluating-the-impact-of-code-duplicatio/specs/001-evaluating-the-impact-of-code-duplicatio", "submitter": null, "title": "Evaluating the Impact of Code Duplication on LLM Code Understanding", - "updated_at": "2026-05-17T04:28:52.579110+00:00" + "updated_at": "2026-05-17T04:28:52.579110+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24880,11 +25402,13 @@ "phase_group": "research_speckit", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": "projects/PROJ-262-predicting-molecular-dipole-moments-with/specs/001-predicting-molecular-dipole-moments-with", "submitter": null, "title": "Predicting Molecular Dipole Moments with Graph Neural Networks", - "updated_at": "2026-05-17T04:29:44.149282+00:00" + "updated_at": "2026-05-17T04:29:44.149282+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -24955,11 +25479,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of Frequentist Confidence Intervals with Small Sample Sizes", - "updated_at": "2026-05-05T18:43:01.001219+00:00" + "updated_at": "2026-05-05T18:43:01.001219+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25030,11 +25556,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Network Proximity on Epidemic Spreading in Scale-Free Networks", - "updated_at": "2026-05-04T16:45:18.970190+00:00" + "updated_at": "2026-05-04T16:45:18.970190+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25105,11 +25633,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Stability of Statistical Model Performance Across Data Subsets", - "updated_at": "2026-05-05T18:44:21.405470+00:00" + "updated_at": "2026-05-05T18:44:21.405470+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25180,11 +25710,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Phenology from Satellite Imagery and Climate Data", - "updated_at": "2026-05-04T17:40:11.731302+00:00" + "updated_at": "2026-05-04T17:40:11.731302+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25255,11 +25787,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Data Ordering on Bootstrapping Results", - "updated_at": "2026-05-05T18:45:47.241034+00:00" + "updated_at": "2026-05-05T18:45:47.241034+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25330,11 +25864,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of LLM-Driven Code Simplification on Performance", - "updated_at": "2026-05-04T17:41:01.950400+00:00" + "updated_at": "2026-05-04T17:41:01.950400+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25405,11 +25941,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Molecular Flexibility and Drug Transport Across Cell Membranes", - "updated_at": "2026-05-05T18:46:40.090663+00:00" + "updated_at": "2026-05-05T18:46:40.090663+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25480,11 +26018,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Machine Learning Prediction of Fracture Toughness from Microstructure Images", - "updated_at": "2026-05-04T17:41:29.097783+00:00" + "updated_at": "2026-05-04T17:41:29.097783+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25555,11 +26095,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Atmospheric River Intensity and Regional Gravity Variations", - "updated_at": "2026-05-04T18:44:39.754835+00:00" + "updated_at": "2026-05-04T18:44:39.754835+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25630,11 +26172,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Stress Response from Publicly Available Proteomic Data", - "updated_at": "2026-05-04T20:24:56.545673+00:00" + "updated_at": "2026-05-04T20:24:56.545673+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25705,11 +26249,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Ionization Energies with Graph Neural Networks", - "updated_at": "2026-05-04T18:45:08.038101+00:00" + "updated_at": "2026-05-04T18:45:08.038101+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25780,11 +26326,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Network Centrality on Neural Synchrony in Resting-State fMRI", - "updated_at": "2026-05-04T20:25:33.971016+00:00" + "updated_at": "2026-05-04T20:25:33.971016+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25855,11 +26403,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Data Augmentation on Statistical Power in Small Samples", - "updated_at": "2026-05-04T18:45:52.873789+00:00" + "updated_at": "2026-05-04T18:45:52.873789+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -25930,11 +26480,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Insect Pollinator Networks from Floral Trait Data", - "updated_at": "2026-05-04T19:41:13.276849+00:00" + "updated_at": "2026-05-04T19:41:13.276849+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26005,11 +26557,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of LLMs for Detecting Code Smells", - "updated_at": "2026-05-04T19:42:30.790232+00:00" + "updated_at": "2026-05-04T19:42:30.790232+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26080,11 +26634,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Textual Data for Detecting Cognitive Decline", - "updated_at": "2026-05-04T19:43:01.594424+00:00" + "updated_at": "2026-05-04T19:43:01.594424+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26155,11 +26711,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Compression on Gravitational Wave Event Reconstruction", - "updated_at": "2026-05-04T21:32:58.262016+00:00" + "updated_at": "2026-05-04T21:32:58.262016+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26230,11 +26788,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Generated Code Documentation on Developer Onboarding", - "updated_at": "2026-05-04T21:33:28.314284+00:00" + "updated_at": "2026-05-04T21:33:28.314284+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26305,11 +26865,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Movie Review Sentiment and Box Office Revenue", - "updated_at": "2026-05-04T21:35:00.421821+00:00" + "updated_at": "2026-05-04T21:35:00.421821+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26380,11 +26942,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Impurities on the Superconductivity of Magnesium Diboride", - "updated_at": "2026-05-04T22:29:30.361153+00:00" + "updated_at": "2026-05-04T22:29:30.361153+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26455,11 +27019,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Alloying on High-Temperature Oxidation Resistance", - "updated_at": "2026-05-04T22:31:58.516243+00:00" + "updated_at": "2026-05-04T22:31:58.516243+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26530,11 +27096,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Diffusion of Carbon in BCC Metals from Compositional Data", - "updated_at": "2026-05-04T22:32:55.438498+00:00" + "updated_at": "2026-05-04T22:32:55.438498+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26605,11 +27173,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Network Structure on Heat Transport in Amorphous Silicon", - "updated_at": "2026-05-04T23:26:41.164914+00:00" + "updated_at": "2026-05-04T23:26:41.164914+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26680,11 +27250,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating Microbial Community Succession in Constructed Wetlands", - "updated_at": "2026-05-04T23:27:53.535232+00:00" + "updated_at": "2026-05-04T23:27:53.535232+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26755,11 +27327,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Perceived Control Over Digital Environments on Anxiety", - "updated_at": "2026-05-04T23:29:42.608371+00:00" + "updated_at": "2026-05-04T23:29:42.608371+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26830,11 +27404,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Effectiveness of LLMs for Identifying Security Vulnerabilities in Open-Source Code", - "updated_at": "2026-05-05T01:00:15.975421+00:00" + "updated_at": "2026-05-05T01:00:15.975421+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26905,11 +27481,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Chess Game Data for Elo Rating Prediction", - "updated_at": "2026-05-05T01:01:21.747196+00:00" + "updated_at": "2026-05-05T01:01:21.747196+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -26980,11 +27558,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Individual Differences in Proprioceptive Accuracy", - "updated_at": "2026-05-05T01:01:54.337228+00:00" + "updated_at": "2026-05-05T01:01:54.337228+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27055,11 +27635,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Data Filtering on Gravitational Lens Detection Rates", - "updated_at": "2026-05-05T01:45:51.480515+00:00" + "updated_at": "2026-05-05T01:45:51.480515+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27130,11 +27712,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Perceived Agency in AI Interactions on Trust", - "updated_at": "2026-05-05T01:47:25.007820+00:00" + "updated_at": "2026-05-05T01:47:25.007820+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27205,11 +27789,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Academic Paper Abstracts for Topic Drift", - "updated_at": "2026-05-05T01:48:57.250099+00:00" + "updated_at": "2026-05-05T01:48:57.250099+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27280,11 +27866,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Time", - "updated_at": "2026-05-05T03:17:34.221078+00:00" + "updated_at": "2026-05-05T03:17:34.221078+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27355,11 +27943,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Gene Regulatory Network Dynamics from Time-Series RNA-Seq Data", - "updated_at": "2026-05-05T03:18:06.980048+00:00" + "updated_at": "2026-05-05T03:18:06.980048+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27430,11 +28020,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Search Strategies on Attentional Capture by Emotional Faces", - "updated_at": "2026-05-05T03:18:36.129371+00:00" + "updated_at": "2026-05-05T03:18:36.129371+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27505,11 +28097,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Residual Stress on Fatigue Life Using Public Datasets", - "updated_at": "2026-05-05T05:15:52.030225+00:00" + "updated_at": "2026-05-05T05:15:52.030225+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27580,11 +28174,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Relationship Between Personality Traits and Response to Personalized AI Feedback", - "updated_at": "2026-05-05T05:17:36.693859+00:00" + "updated_at": "2026-05-05T05:17:36.693859+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27655,11 +28251,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Laser Surface Texturing on Wear Resistance", - "updated_at": "2026-05-05T05:18:05.540168+00:00" + "updated_at": "2026-05-05T05:18:05.540168+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27730,11 +28328,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Testability", - "updated_at": "2026-05-05T07:00:35.072392+00:00" + "updated_at": "2026-05-05T07:00:35.072392+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27805,11 +28405,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Cognitive Load from EEG Spectral Power Changes During Naturalistic Viewing", - "updated_at": "2026-05-05T07:01:45.657792+00:00" + "updated_at": "2026-05-05T07:01:45.657792+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27880,11 +28482,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Refractive Indices from Graph-Based Molecular Representations", - "updated_at": "2026-05-05T07:49:07.878672+00:00" + "updated_at": "2026-05-05T07:49:07.878672+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -27955,11 +28559,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing Statistical Significance of Observed Correlations in Public Databases", - "updated_at": "2026-05-05T07:49:41.475933+00:00" + "updated_at": "2026-05-05T07:49:41.475933+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28030,11 +28636,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Stack Overflow Question Tags", - "updated_at": "2026-05-05T07:50:09.314778+00:00" + "updated_at": "2026-05-05T07:50:09.314778+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28105,11 +28713,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Network Centrality on Age-Related Cognitive Decline", - "updated_at": "2026-05-05T08:56:58.542762+00:00" + "updated_at": "2026-05-05T08:56:58.542762+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28180,11 +28790,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Solar Wind Speed and Geomagnetic Tail Reconnection Rates", - "updated_at": "2026-05-05T08:58:06.763307+00:00" + "updated_at": "2026-05-05T08:58:06.763307+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28255,11 +28867,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Descriptors from Quantum Chemical Calculations with Machine Learning", - "updated_at": "2026-05-05T08:59:03.653243+00:00" + "updated_at": "2026-05-05T08:59:03.653243+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28330,11 +28944,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Time: A Large-Scale Study", - "updated_at": "2026-05-05T09:48:13.267382+00:00" + "updated_at": "2026-05-05T09:48:13.267382+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28405,11 +29021,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Weather Data for Extreme Event Prediction", - "updated_at": "2026-05-05T09:49:18.308063+00:00" + "updated_at": "2026-05-05T09:49:18.308063+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28480,11 +29098,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available Urban Noise Pollution Data", - "updated_at": "2026-05-05T09:49:49.631053+00:00" + "updated_at": "2026-05-05T09:49:49.631053+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28555,11 +29175,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Publicly Available COVID-19 Vaccine Adverse Event Reports", - "updated_at": "2026-05-05T10:42:58.617955+00:00" + "updated_at": "2026-05-05T10:42:58.617955+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28630,11 +29252,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Generated Code on Code Coverage", - "updated_at": "2026-05-05T10:45:17.424315+00:00" + "updated_at": "2026-05-05T10:45:17.424315+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28705,11 +29329,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Machine Learning Prediction of Crack Propagation Rates in Metals", - "updated_at": "2026-05-05T10:46:40.203482+00:00" + "updated_at": "2026-05-05T10:46:40.203482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28780,11 +29406,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying Entanglement Entropy in Randomly Perturbed Quantum Spin Chains", - "updated_at": "2026-05-05T11:36:48.425065+00:00" + "updated_at": "2026-05-05T11:36:48.425065+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28855,11 +29483,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Effects of Data Noise on Dynamical Systems Reconstruction", - "updated_at": "2026-05-05T11:38:19.556576+00:00" + "updated_at": "2026-05-05T11:38:19.556576+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -28930,11 +29560,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Stress Response from Publicly Available Metabolomic Data and Environmental Factors", - "updated_at": "2026-05-05T12:39:32.341208+00:00" + "updated_at": "2026-05-05T12:39:32.341208+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29005,11 +29637,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Self-Talk on Resilience to Microaggressions", - "updated_at": "2026-05-05T12:39:58.397907+00:00" + "updated_at": "2026-05-05T12:39:58.397907+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29080,11 +29714,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Turnaround Time", - "updated_at": "2026-05-05T12:41:16.336530+00:00" + "updated_at": "2026-05-05T12:41:16.336530+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29155,11 +29791,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Bacterial Antibiotic Resistance from Public Genomic Databases", - "updated_at": "2026-05-05T13:46:56.037302+00:00" + "updated_at": "2026-05-05T13:46:56.037302+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29230,11 +29868,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Weibull Modulus of Ceramics", - "updated_at": "2026-05-05T13:48:14.305654+00:00" + "updated_at": "2026-05-05T13:48:14.305654+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29305,11 +29945,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Quality", - "updated_at": "2026-05-05T13:49:53.475958+00:00" + "updated_at": "2026-05-05T13:49:53.475958+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29380,11 +30022,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Subtle Linguistic Cues on Perceived Authenticity in AI Chatbots", - "updated_at": "2026-05-05T15:45:44.140899+00:00" + "updated_at": "2026-05-05T15:45:44.140899+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29455,11 +30099,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Detail on False Memory Susceptibility", - "updated_at": "2026-05-05T15:46:26.284173+00:00" + "updated_at": "2026-05-05T15:46:26.284173+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29530,11 +30176,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Documentation Completeness", - "updated_at": "2026-05-05T15:47:47.034576+00:00" + "updated_at": "2026-05-05T15:47:47.034576+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29605,11 +30253,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Artifacts on Planetary Nebula Morphology", - "updated_at": "2026-05-05T16:47:17.524916+00:00" + "updated_at": "2026-05-05T16:47:17.524916+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29680,11 +30330,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Quality Using LLMs", - "updated_at": "2026-05-05T16:48:42.392434+00:00" + "updated_at": "2026-05-05T16:48:42.392434+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29755,11 +30407,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Viscosity from Structural Features with Machine Learning", - "updated_at": "2026-05-05T16:49:14.241546+00:00" + "updated_at": "2026-05-05T16:49:14.241546+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29830,11 +30484,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Reconfiguration and Recovery from Mild Traumatic Brain Injury", - "updated_at": "2026-05-05T17:42:34.164451+00:00" + "updated_at": "2026-05-05T17:42:34.164451+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29905,11 +30561,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Glass Transition Temperature from Compositional Descriptors with Explainable Boosting Machines", - "updated_at": "2026-05-05T17:43:03.767207+00:00" + "updated_at": "2026-05-05T17:43:03.767207+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -29980,11 +30638,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Properties from Open Babel Fingerprints with Random Forests", - "updated_at": "2026-05-05T17:43:31.092885+00:00" + "updated_at": "2026-05-05T17:43:31.092885+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30055,11 +30715,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Data Imputation on Variance Estimation in Public Surveys", - "updated_at": "2026-05-05T19:41:40.549057+00:00" + "updated_at": "2026-05-05T19:41:40.549057+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30130,11 +30792,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Structure on Energy Transfer in Spin Systems", - "updated_at": "2026-05-05T19:42:19.575775+00:00" + "updated_at": "2026-05-05T19:42:19.575775+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30205,11 +30869,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Can Publicly Available Microbiome Data Predict Host Plant Defense Responses?", - "updated_at": "2026-05-05T21:31:11.667121+00:00" + "updated_at": "2026-05-05T21:31:11.667121+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30280,11 +30946,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Vickers Hardness of Solder Alloys", - "updated_at": "2026-05-05T23:25:20.025564+00:00" + "updated_at": "2026-05-05T23:25:20.025564+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30355,11 +31023,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Quantization on Gravitational Wave Signal Reconstruction", - "updated_at": "2026-05-05T23:26:00.576473+00:00" + "updated_at": "2026-05-05T23:26:00.576473+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30430,11 +31100,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Reliability of Statistical Significance in Openly Available Genomic Datasets", - "updated_at": "2026-05-05T23:26:37.572654+00:00" + "updated_at": "2026-05-05T23:26:37.572654+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30505,11 +31177,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Parkinson\u2019s Disease Progression", - "updated_at": "2026-05-04T16:43:49.943402+00:00" + "updated_at": "2026-05-04T16:43:49.943402+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30580,11 +31254,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Influence of Network Motifs on Resting-State Functional Connectivity", - "updated_at": "2026-05-06T00:58:34.927923+00:00" + "updated_at": "2026-05-06T00:58:34.927923+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30655,11 +31331,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Influence of Network Topology on Thermal Conductivity in Nanomaterials", - "updated_at": "2026-05-06T00:59:43.102689+00:00" + "updated_at": "2026-05-06T00:59:43.102689+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30730,11 +31408,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Magnetic Field Topology on Plasma Confinement", - "updated_at": "2026-05-04T16:44:53.677492+00:00" + "updated_at": "2026-05-04T16:44:53.677492+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30805,11 +31485,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Coral Resilience to Thermal Stress Using Publicly Available Genomic Data", - "updated_at": "2026-05-06T01:00:54.745133+00:00" + "updated_at": "2026-05-06T01:00:54.745133+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30880,11 +31562,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Avian Song Variation with Climatic and Geographic Factors", - "updated_at": "2026-05-06T01:47:51.366971+00:00" + "updated_at": "2026-05-06T01:47:51.366971+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -30955,11 +31639,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Alpha Oscillations and Working Memory Capacity", - "updated_at": "2026-05-06T01:48:44.742980+00:00" + "updated_at": "2026-05-06T01:48:44.742980+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31030,11 +31716,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Simulated Sensory Deprivation on Resting-State Brain Network Dynamics", - "updated_at": "2026-05-06T03:19:07.073936+00:00" + "updated_at": "2026-05-06T03:19:07.073936+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31105,11 +31793,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Biomass from Publicly Available Hyperspectral Imagery", - "updated_at": "2026-05-06T03:19:42.209521+00:00" + "updated_at": "2026-05-06T03:19:42.209521+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31180,11 +31870,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Sensitivity of Regression Models to Outlier Removal Strategies", - "updated_at": "2026-05-06T03:20:10.903915+00:00" + "updated_at": "2026-05-06T03:20:10.903915+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31255,11 +31947,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Volatile Organic Compound Emission Profiles from Publicly Available Genomic and Environmental Data", - "updated_at": "2026-05-06T05:15:31.020466+00:00" + "updated_at": "2026-05-06T05:15:31.020466+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31330,11 +32024,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Sleep Architecture", - "updated_at": "2026-05-06T05:15:45.516118+00:00" + "updated_at": "2026-05-06T05:15:45.516118+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31405,11 +32101,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Sensitivity of Common Statistical Tests to Dataset Size", - "updated_at": "2026-05-06T05:16:24.009654+00:00" + "updated_at": "2026-05-06T05:16:24.009654+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31480,11 +32178,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Influence of Alloying on the Glass Transition Temperature of Metallic Glasses", - "updated_at": "2026-05-06T07:09:10.311021+00:00" + "updated_at": "2026-05-06T07:09:10.311021+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31555,11 +32255,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Gut Microbiome Response to Dietary Interventions Using Publicly Available Data", - "updated_at": "2026-05-06T07:10:12.779497+00:00" + "updated_at": "2026-05-06T07:10:12.779497+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31630,11 +32332,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Emotional Expression in AI Avatars on User Trust", - "updated_at": "2026-05-06T07:10:40.642771+00:00" + "updated_at": "2026-05-06T07:10:40.642771+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31705,11 +32409,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Visual Priming on Implicit Attitudes Towards Ambiguous Social Stimuli", - "updated_at": "2026-05-06T09:01:34.956185+00:00" + "updated_at": "2026-05-06T09:01:34.956185+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31780,11 +32486,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Cognitive Flexibility", - "updated_at": "2026-05-06T09:03:10.213947+00:00" + "updated_at": "2026-05-06T09:03:10.213947+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31855,11 +32563,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Software Security: A Static Analysis Study", - "updated_at": "2026-05-06T09:05:05.085923+00:00" + "updated_at": "2026-05-06T09:05:05.085923+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -31930,11 +32640,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Validity of the Weak Equivalence Principle with Publicly Available Planetary Orbital Data", - "updated_at": "2026-05-06T09:58:37.745006+00:00" + "updated_at": "2026-05-06T09:58:37.745006+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32005,11 +32717,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Ball Milling on Particle Size Distribution", - "updated_at": "2026-05-06T09:59:16.638134+00:00" + "updated_at": "2026-05-06T09:59:16.638134+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32080,11 +32794,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of Statistical Power in Publicly Available Pre-Registered Studies", - "updated_at": "2026-05-06T09:59:49.783573+00:00" + "updated_at": "2026-05-06T09:59:49.783573+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32155,11 +32871,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Solubility of Pharmaceutical Compounds in Water Using Graph Neural Networks", - "updated_at": "2026-05-06T10:52:06.083770+00:00" + "updated_at": "2026-05-06T10:52:06.083770+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32230,11 +32948,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Analysis of Early Universe CMB Fluctuations and Topological Defects", - "updated_at": "2026-05-06T10:53:17.679888+00:00" + "updated_at": "2026-05-06T10:53:17.679888+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32305,11 +33025,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Effectiveness of Different Loss Functions for Training Graph Neural Networks on Small Worlds", - "updated_at": "2026-05-06T10:54:28.789892+00:00" + "updated_at": "2026-05-06T10:54:28.789892+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32380,11 +33102,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Cognitive Function in Aging Using UK Biobank Data", - "updated_at": "2026-05-06T11:41:32.094124+00:00" + "updated_at": "2026-05-06T11:41:32.094124+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32455,11 +33179,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Impurity Clustering on Grain Boundary Segregation", - "updated_at": "2026-05-06T11:42:04.819843+00:00" + "updated_at": "2026-05-06T11:42:04.819843+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32530,11 +33256,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Toxicity from Structural Alerts via Rule-Based Systems", - "updated_at": "2026-05-06T11:43:17.627812+00:00" + "updated_at": "2026-05-06T11:43:17.627812+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32605,11 +33333,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Crowding on Facial Emotion Recognition Accuracy", - "updated_at": "2026-05-06T12:52:57.185842+00:00" + "updated_at": "2026-05-06T12:52:57.185842+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32680,11 +33410,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Network Topology on Neural Synchrony During Cognitive Tasks", - "updated_at": "2026-05-06T12:53:29.266774+00:00" + "updated_at": "2026-05-06T12:53:29.266774+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32755,11 +33487,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Response to Cognitive Training", - "updated_at": "2026-05-06T13:44:55.223379+00:00" + "updated_at": "2026-05-06T13:44:55.223379+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32830,11 +33564,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Network Structure on Heat Diffusion in Crystalline Solids", - "updated_at": "2026-05-06T13:45:46.304828+00:00" + "updated_at": "2026-05-06T13:45:46.304828+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32905,11 +33641,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Topology and Susceptibility to Visual Illusions", - "updated_at": "2026-05-06T13:46:29.087571+00:00" + "updated_at": "2026-05-06T13:46:29.087571+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -32980,11 +33718,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Statistical Validity of Common Ranking Metrics", - "updated_at": "2026-05-06T15:04:41.017275+00:00" + "updated_at": "2026-05-06T15:04:41.017275+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33055,11 +33795,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Additive Manufacturing Parameters on the Porosity of 316L Stainless Steel", - "updated_at": "2026-05-06T15:08:00.235775+00:00" + "updated_at": "2026-05-06T15:08:00.235775+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33130,11 +33872,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Impact of Network Topology on Heat Dissipation in 2D Materials", - "updated_at": "2026-05-06T15:08:42.442866+00:00" + "updated_at": "2026-05-06T15:08:42.442866+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33205,11 +33949,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Diffusion Coefficients in Liquids with Graph Neural Networks", - "updated_at": "2026-05-06T16:42:35.439877+00:00" + "updated_at": "2026-05-06T16:42:35.439877+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33280,11 +34026,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Influence of Network Topology on Thermal Conductivity in Amorphous Silicon", - "updated_at": "2026-05-06T16:44:30.525892+00:00" + "updated_at": "2026-05-06T16:44:30.525892+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33355,11 +34103,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Algorithmic Recommendations on Exploration vs. Exploitation in Online Learning", - "updated_at": "2026-05-06T16:45:11.359312+00:00" + "updated_at": "2026-05-06T16:45:11.359312+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33430,11 +34180,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of the Cosmological Principle with Public CMB Data", - "updated_at": "2026-05-06T17:41:16.581064+00:00" + "updated_at": "2026-05-06T17:41:16.581064+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33505,11 +34257,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Robustness of Statistical Methods to Non-Independence in Publicly Available Time Series", - "updated_at": "2026-05-06T17:41:51.935640+00:00" + "updated_at": "2026-05-06T17:41:51.935640+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33580,11 +34334,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Quality with LLM Assistance", - "updated_at": "2026-05-06T17:42:33.912251+00:00" + "updated_at": "2026-05-06T17:42:33.912251+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33655,11 +34411,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Elastic Anisotropy of FCC Metals from Composition", - "updated_at": "2026-05-06T18:45:41.122289+00:00" + "updated_at": "2026-05-06T18:45:41.122289+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33730,11 +34488,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Sensitivity of Regression Coefficients to Dataset Subset Selection", - "updated_at": "2026-05-06T18:46:47.209564+00:00" + "updated_at": "2026-05-06T18:46:47.209564+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33805,11 +34565,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Rate Constants of SN1 Reactions from Molecular Structure", - "updated_at": "2026-05-06T18:47:33.935827+00:00" + "updated_at": "2026-05-06T18:47:33.935827+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33880,11 +34642,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Influence of Alloying on the Seebeck Coefficient Using Public Data", - "updated_at": "2026-05-06T20:39:17.880574+00:00" + "updated_at": "2026-05-06T20:39:17.880574+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -33955,11 +34719,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Influence of Composition on the Thermal Expansion of Metallic Glasses", - "updated_at": "2026-05-06T20:39:47.880530+00:00" + "updated_at": "2026-05-06T20:39:47.880530+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34030,11 +34796,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Corrosion Potential from Composition and Environment via Public Databases", - "updated_at": "2026-05-06T21:33:18.490610+00:00" + "updated_at": "2026-05-06T21:33:18.490610+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34105,11 +34873,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Centrality on the Consolidation of Motor Memories", - "updated_at": "2026-05-06T21:33:33.711150+00:00" + "updated_at": "2026-05-06T21:33:33.711150+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34180,11 +34950,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Degradation Under Cyclic Loading from Public Datasets", - "updated_at": "2026-05-06T21:34:06.931117+00:00" + "updated_at": "2026-05-06T21:34:06.931117+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34255,11 +35027,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Excitation Wavelengths from SMILES with Graph Neural Networks", - "updated_at": "2026-05-06T22:25:02.196573+00:00" + "updated_at": "2026-05-06T22:25:02.196573+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34330,11 +35104,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Shear Modulus of Bulk Metallic Glasses", - "updated_at": "2026-05-06T22:25:37.242496+00:00" + "updated_at": "2026-05-06T22:25:37.242496+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34405,11 +35181,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Reconstructing Solar Irradiance from Historical Sunspot Records", - "updated_at": "2026-05-06T22:26:33.002358+00:00" + "updated_at": "2026-05-06T22:26:33.002358+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34480,11 +35258,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Simulated Social Exclusion on Subsequent Prosocial Behavior", - "updated_at": "2026-05-06T23:27:18.091347+00:00" + "updated_at": "2026-05-06T23:27:18.091347+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34555,11 +35335,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Role of Network Module Dynamics in Predicting Individual Differences in Working Memory Capacity", - "updated_at": "2026-05-06T23:28:54.670363+00:00" + "updated_at": "2026-05-06T23:28:54.670363+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34630,11 +35412,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Simulated Social Feedback on Self-Esteem Fluctuations", - "updated_at": "2026-05-06T23:29:46.500053+00:00" + "updated_at": "2026-05-06T23:29:46.500053+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34705,11 +35489,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Text Message Tone on Perceived Emotional Support", - "updated_at": "2026-05-07T01:02:41.226477+00:00" + "updated_at": "2026-05-07T01:02:41.226477+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34780,11 +35566,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Processing Temperature on the Grain Size of Rolled Aluminum Alloys", - "updated_at": "2026-05-07T01:03:49.121585+00:00" + "updated_at": "2026-05-07T01:03:49.121585+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34855,11 +35643,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Attention Allocation on Recall of Emotionally Valenced Stories", - "updated_at": "2026-05-07T03:20:15.154357+00:00" + "updated_at": "2026-05-07T03:20:15.154357+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -34930,11 +35720,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Pathogen Virulence from Publicly Available Genomic and Phenotypic Data", - "updated_at": "2026-05-07T03:21:48.237117+00:00" + "updated_at": "2026-05-07T03:21:48.237117+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35005,11 +35797,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Simulated Social Comparison on Self-Evaluation in Online Environments", - "updated_at": "2026-05-07T03:22:23.781335+00:00" + "updated_at": "2026-05-07T03:22:23.781335+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35080,11 +35874,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Disease Susceptibility from Publicly Available Genomic and Environmental Data", - "updated_at": "2026-05-07T05:17:28.073824+00:00" + "updated_at": "2026-05-07T05:17:28.073824+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35155,11 +35951,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Linguistic Accommodation on Perceived Empathy in AI Assistants", - "updated_at": "2026-05-07T05:17:53.166187+00:00" + "updated_at": "2026-05-07T05:17:53.166187+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35230,11 +36028,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Simulated Social Exclusion on Neural Responses to Reward", - "updated_at": "2026-05-07T10:52:10.565000+00:00" + "updated_at": "2026-05-07T10:52:10.565000+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35305,11 +36105,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Influence of Composition on the Magnetic Hysteresis of Heusler Alloys", - "updated_at": "2026-05-07T10:54:20.145888+00:00" + "updated_at": "2026-05-07T10:54:20.145888+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35380,11 +36182,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Conformational Landscapes with Variational Autoencoders", - "updated_at": "2026-05-07T11:41:48.947367+00:00" + "updated_at": "2026-05-07T11:41:48.947367+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35455,11 +36259,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Generated Code on Memory Usage", - "updated_at": "2026-05-07T11:42:28.148607+00:00" + "updated_at": "2026-05-07T11:42:28.148607+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35530,11 +36336,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Glass Forming Region of Metallic Glass Alloys via Machine Learning", - "updated_at": "2026-05-07T11:43:18.653215+00:00" + "updated_at": "2026-05-07T11:43:18.653215+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35605,11 +36413,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Avian Foraging Behavior from Public eBird Data and Land Cover Maps", - "updated_at": "2026-05-07T13:47:09.735819+00:00" + "updated_at": "2026-05-07T13:47:09.735819+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35680,11 +36490,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Complexity on Cognitive Load During Remote Meetings", - "updated_at": "2026-05-07T13:47:44.547609+00:00" + "updated_at": "2026-05-07T13:47:44.547609+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35755,11 +36567,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Framing on Perceived Severity of Online Misinformation", - "updated_at": "2026-05-07T13:48:17.952528+00:00" + "updated_at": "2026-05-07T13:48:17.952528+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35830,11 +36644,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Can Publicly Available Data Reveal Subtle Violations of Time-Reversal Symmetry in Beta Decay?", - "updated_at": "2026-05-07T15:06:24.215856+00:00" + "updated_at": "2026-05-07T15:06:24.215856+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35905,11 +36721,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Emoji Use on Perceived Emotional Intensity in Text", - "updated_at": "2026-05-07T15:07:58.083687+00:00" + "updated_at": "2026-05-07T15:07:58.083687+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -35980,11 +36798,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Interoceptive Awareness on Emotional Regulation During Simulated Stress", - "updated_at": "2026-05-07T16:44:55.181470+00:00" + "updated_at": "2026-05-07T16:44:55.181470+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36055,11 +36875,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Correlation Between Atmospheric River Frequency and Global Geopotential Height Variability", - "updated_at": "2026-05-07T16:45:28.926560+00:00" + "updated_at": "2026-05-07T16:45:28.926560+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36130,11 +36952,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Surface Charge Distribution from Quantum Chemical Calculations", - "updated_at": "2026-05-07T16:46:13.020168+00:00" + "updated_at": "2026-05-07T16:46:13.020168+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36205,11 +37029,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Disease Severity from Publicly Available Image Data and Meteorological Records", - "updated_at": "2026-05-07T18:46:34.553762+00:00" + "updated_at": "2026-05-07T18:46:34.553762+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36280,11 +37106,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating Neural Signatures of Predictive Processing in Visual Illusions", - "updated_at": "2026-05-07T18:47:13.070959+00:00" + "updated_at": "2026-05-07T18:47:13.070959+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36355,11 +37183,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Herbivore Resistance from Publicly Available Metabolomic Data", - "updated_at": "2026-05-07T18:48:19.137839+00:00" + "updated_at": "2026-05-07T18:48:19.137839+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36430,11 +37260,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Predictive Power of Plant Phylogeny on Secondary Metabolite Profiles", - "updated_at": "2026-05-07T19:39:09.213763+00:00" + "updated_at": "2026-05-07T19:39:09.213763+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36505,11 +37337,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Codebase Age on LLM Code Understanding", - "updated_at": "2026-05-07T19:41:46.052038+00:00" + "updated_at": "2026-05-07T19:41:46.052038+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36580,11 +37414,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Root System Architecture from Publicly Available Genomic Data", - "updated_at": "2026-05-07T19:43:27.101059+00:00" + "updated_at": "2026-05-07T19:43:27.101059+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36655,11 +37491,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Review Burden", - "updated_at": "2026-05-07T21:28:26.149791+00:00" + "updated_at": "2026-05-07T21:28:26.149791+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36730,11 +37568,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Surface Area from Graph Convolutional Networks", - "updated_at": "2026-05-07T21:29:04.985069+00:00" + "updated_at": "2026-05-07T21:29:04.985069+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36805,11 +37645,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Interactions in Polymer Composites with Graph Neural Networks", - "updated_at": "2026-05-07T21:30:34.602963+00:00" + "updated_at": "2026-05-07T21:30:34.602963+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36880,11 +37722,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Individual Differences in Musical Improvisation Skill", - "updated_at": "2026-05-07T22:31:10.938430+00:00" + "updated_at": "2026-05-07T22:31:10.938430+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -36955,11 +37799,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Alloying on the Diffusion Activation Energy in FCC Metals", - "updated_at": "2026-05-07T22:31:52.072560+00:00" + "updated_at": "2026-05-07T22:31:52.072560+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37030,11 +37876,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Response to Virtual Reality Exposure Therapy", - "updated_at": "2026-05-07T22:32:30.413268+00:00" + "updated_at": "2026-05-07T22:32:30.413268+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37105,11 +37953,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Data Heterogeneity on Meta-Analysis Results", - "updated_at": "2026-05-07T23:26:08.936785+00:00" + "updated_at": "2026-05-07T23:26:08.936785+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37180,11 +38030,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Yield Strength of High-Entropy Alloys via Compositional Descriptors", - "updated_at": "2026-05-07T23:26:52.497946+00:00" + "updated_at": "2026-05-07T23:26:52.497946+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37255,11 +38107,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Coating Adhesion Strength from Composition and Surface Features", - "updated_at": "2026-05-07T23:27:18.349284+00:00" + "updated_at": "2026-05-07T23:27:18.349284+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37330,11 +38184,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Effect of Alloying on the Poisson's Ratio of Aluminum Alloys", - "updated_at": "2026-05-08T01:04:15.448617+00:00" + "updated_at": "2026-05-08T01:04:15.448617+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37405,11 +38261,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Data Resolution on Statistical Power in Publicly Available Spatial Datasets", - "updated_at": "2026-05-08T01:06:41.495828+00:00" + "updated_at": "2026-05-08T01:06:41.495828+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37480,11 +38338,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Permeability Coefficients Using Graph Neural Networks and Publicly Available Datasets", - "updated_at": "2026-05-08T01:07:55.363388+00:00" + "updated_at": "2026-05-08T01:07:55.363388+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37563,11 +38423,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Simulated Social Status on Risk-Taking Behavior", - "updated_at": "2026-05-08T03:23:11.157578+00:00" + "updated_at": "2026-05-08T03:23:11.157578+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37638,11 +38500,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Predictive Power of Molecular Dynamics for Estimating Diffusion Coefficients", - "updated_at": "2026-05-08T03:24:10.508655+00:00" + "updated_at": "2026-05-08T03:24:10.508655+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37713,11 +38577,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Complexity Using Information Theory", - "updated_at": "2026-05-08T05:09:42.998145+00:00" + "updated_at": "2026-05-08T05:09:42.998145+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37788,11 +38654,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Parasocial Relationships with AI Companions on Loneliness", - "updated_at": "2026-05-08T05:10:47.849826+00:00" + "updated_at": "2026-05-08T05:10:47.849826+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37863,11 +38731,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Robustness of Statistical Methods to Common Data Errors", - "updated_at": "2026-05-08T05:13:08.606896+00:00" + "updated_at": "2026-05-08T05:13:08.606896+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -37938,11 +38808,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Outlier Removal Methods on Variance Estimation", - "updated_at": "2026-05-08T07:42:41.510893+00:00" + "updated_at": "2026-05-08T07:42:41.510893+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38013,11 +38885,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Network Efficiency on Age-Related Changes in Resting-State EEG", - "updated_at": "2026-05-08T07:43:17.678336+00:00" + "updated_at": "2026-05-08T07:43:17.678336+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38088,11 +38962,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Asynchronous Communication Delays on Team Cohesion", - "updated_at": "2026-05-08T08:44:30.096310+00:00" + "updated_at": "2026-05-08T08:44:30.096310+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38163,11 +39039,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Complexity with Information Theory", - "updated_at": "2026-05-08T08:45:37.021314+00:00" + "updated_at": "2026-05-08T08:45:37.021314+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38238,11 +39116,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Muon Flux and Atmospheric Temperature Profiles", - "updated_at": "2026-05-08T09:43:55.476699+00:00" + "updated_at": "2026-05-08T09:43:55.476699+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38313,11 +39193,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Subjective Time Perception", - "updated_at": "2026-05-08T09:45:51.663436+00:00" + "updated_at": "2026-05-08T09:45:51.663436+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38388,11 +39270,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Root Architecture from Soil Nutrient Profiles", - "updated_at": "2026-05-08T09:49:38.328207+00:00" + "updated_at": "2026-05-08T09:49:38.328207+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38463,11 +39347,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Attention Patterns on Susceptibility to Misleading Headlines", - "updated_at": "2026-05-08T11:39:47.934718+00:00" + "updated_at": "2026-05-08T11:39:47.934718+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38538,11 +39424,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Validity of Statistical Significance in Randomized Controlled Trials with Missing Data", - "updated_at": "2026-05-08T11:40:41.254722+00:00" + "updated_at": "2026-05-08T11:40:41.254722+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38613,11 +39501,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Power Analysis of Openly Available fMRI Datasets", - "updated_at": "2026-05-08T11:41:04.325641+00:00" + "updated_at": "2026-05-08T11:41:04.325641+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38688,11 +39578,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Personalized Feedback Timing on Skill Acquisition", - "updated_at": "2026-05-08T12:44:24.262788+00:00" + "updated_at": "2026-05-08T12:44:24.262788+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38763,11 +39655,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Statistical Validity of Crowdsourced Labels", - "updated_at": "2026-05-08T12:44:41.723754+00:00" + "updated_at": "2026-05-08T12:44:41.723754+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38838,11 +39732,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Structure on Energy Dissipation in Driven Oscillators", - "updated_at": "2026-05-08T12:45:39.365526+00:00" + "updated_at": "2026-05-08T12:45:39.365526+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38913,11 +39809,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Code Ownership on LLM Code Understanding", - "updated_at": "2026-05-08T13:42:43.220698+00:00" + "updated_at": "2026-05-08T13:42:43.220698+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -38988,11 +39886,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Reactivity Using Machine Learning and Public Reaction Databases", - "updated_at": "2026-05-08T13:43:32.653746+00:00" + "updated_at": "2026-05-08T13:43:32.653746+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39063,11 +39963,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Effect of Alloying on the Elastic Modulus of High-Entropy Alloys", - "updated_at": "2026-05-08T13:44:07.767692+00:00" + "updated_at": "2026-05-08T13:44:07.767692+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39138,11 +40040,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Properties from Topological Data Analysis of Molecular Structures", - "updated_at": "2026-05-08T15:42:51.129768+00:00" + "updated_at": "2026-05-08T15:42:51.129768+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39213,11 +40117,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Glass Transition Temperature of Chalcogenide Glasses", - "updated_at": "2026-05-08T15:46:19.471207+00:00" + "updated_at": "2026-05-08T15:46:19.471207+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39288,11 +40194,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Halide Binding Affinities with Machine Learning", - "updated_at": "2026-05-08T15:47:10.159726+00:00" + "updated_at": "2026-05-08T15:47:10.159726+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39363,11 +40271,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Simulated Social Validation on Self-Perception in Adolescents", - "updated_at": "2026-05-08T16:42:34.717341+00:00" + "updated_at": "2026-05-08T16:42:34.717341+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39438,11 +40348,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying Composition-Dependent Grain Boundary Segregation in BCC Alloys", - "updated_at": "2026-05-08T16:43:16.451038+00:00" + "updated_at": "2026-05-08T16:43:16.451038+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39513,11 +40425,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Cosmic Ray Composition and Solar Activity Cycles", - "updated_at": "2026-05-08T16:43:51.888231+00:00" + "updated_at": "2026-05-08T16:43:51.888231+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39588,11 +40502,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Species-Specific Responses to Climate Change from Museum Collection Data", - "updated_at": "2026-05-08T17:39:03.225132+00:00" + "updated_at": "2026-05-08T17:39:03.225132+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39663,11 +40579,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Glass Forming Region of Metallic Glass Alloys Using Machine Learning", - "updated_at": "2026-05-08T17:40:33.426165+00:00" + "updated_at": "2026-05-08T17:40:33.426165+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39738,11 +40656,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Gene Essentiality from Protein Interaction Network Topology", - "updated_at": "2026-05-08T18:42:24.671995+00:00" + "updated_at": "2026-05-08T18:42:24.671995+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39813,11 +40733,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Social Media Consumption Patterns on Cognitive Flexibility", - "updated_at": "2026-05-08T18:43:09.608858+00:00" + "updated_at": "2026-05-08T18:43:09.608858+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39888,11 +40810,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Neural Entropy and Cognitive Flexibility in Aging", - "updated_at": "2026-05-08T19:38:43.429591+00:00" + "updated_at": "2026-05-08T19:38:43.429591+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -39963,11 +40887,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Stress Resilience from Publicly Available Metabolomic Data", - "updated_at": "2026-05-08T19:39:08.460297+00:00" + "updated_at": "2026-05-08T19:39:08.460297+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40038,11 +40964,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Decoding Affective State from Resting-State EEG Microstates", - "updated_at": "2026-05-08T19:39:51.676079+00:00" + "updated_at": "2026-05-08T19:39:51.676079+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40113,11 +41041,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Root Architecture from Soil Nutrient Availability Using Public Datasets", - "updated_at": "2026-05-08T20:32:01.941056+00:00" + "updated_at": "2026-05-08T20:32:01.941056+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40188,11 +41118,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Dataset Sparsity on Machine Learning Models of Material Stability", - "updated_at": "2026-05-08T20:34:00.221865+00:00" + "updated_at": "2026-05-08T20:34:00.221865+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40263,11 +41195,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Musical Genre Preference", - "updated_at": "2026-05-08T21:29:38.660780+00:00" + "updated_at": "2026-05-08T21:29:38.660780+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40338,11 +41272,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Centrality on Resting-State Functional Connectivity in Autism Spectrum Disorder", - "updated_at": "2026-05-08T21:30:20.806326+00:00" + "updated_at": "2026-05-08T21:30:20.806326+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40413,11 +41349,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Impact of Composition on the Density of Metallic Glasses", - "updated_at": "2026-05-08T22:28:41.222023+00:00" + "updated_at": "2026-05-08T22:28:41.222023+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40488,11 +41426,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Developer Cognitive Load", - "updated_at": "2026-05-08T22:29:19.971704+00:00" + "updated_at": "2026-05-08T22:29:19.971704+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40563,11 +41503,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Defense Allocation from Publicly Available Transcriptomic Data", - "updated_at": "2026-05-08T22:29:34.240735+00:00" + "updated_at": "2026-05-08T22:29:34.240735+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40638,11 +41580,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Drought Tolerance from Publicly Available Root System Architecture Data", - "updated_at": "2026-05-08T23:27:41.726028+00:00" + "updated_at": "2026-05-08T23:27:41.726028+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40713,11 +41657,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Resolution on Gravitational Wave Parameter Estimation", - "updated_at": "2026-05-08T23:29:21.411083+00:00" + "updated_at": "2026-05-08T23:29:21.411083+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40788,11 +41734,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Style on LLM Code Generation Diversity", - "updated_at": "2026-05-08T23:30:22.176988+00:00" + "updated_at": "2026-05-08T23:30:22.176988+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40863,11 +41811,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Individual Differences in Tactile Discrimination", - "updated_at": "2026-05-09T01:02:07.443502+00:00" + "updated_at": "2026-05-09T01:02:07.443502+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -40938,11 +41888,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Network Structure on Energy Dissipation in Driven Granular Materials", - "updated_at": "2026-05-09T01:03:35.729805+00:00" + "updated_at": "2026-05-09T01:03:35.729805+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41013,11 +41965,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Repeated Exposure to Neutral Faces on Implicit Bias", - "updated_at": "2026-05-09T03:17:57.515415+00:00" + "updated_at": "2026-05-09T03:17:57.515415+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41088,11 +42042,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Cognitive Fatigue from Resting-State EEG Complexity", - "updated_at": "2026-05-09T03:18:31.679113+00:00" + "updated_at": "2026-05-09T03:18:31.679113+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41163,11 +42119,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Visual Salience on Attentional Bias in Moral Judgements", - "updated_at": "2026-05-09T03:18:51.286319+00:00" + "updated_at": "2026-05-09T03:18:51.286319+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41238,11 +42196,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Structure on Neural Avalanche Dynamics", - "updated_at": "2026-05-09T05:13:37.983520+00:00" + "updated_at": "2026-05-09T05:13:37.983520+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41313,11 +42273,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Narrative Perspective on Empathy and Moral Judgement", - "updated_at": "2026-05-09T05:14:13.163404+00:00" + "updated_at": "2026-05-09T05:14:13.163404+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41388,11 +42350,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Simulated Social Exclusion on Default Mode Network Dynamics", - "updated_at": "2026-05-09T06:55:36.031226+00:00" + "updated_at": "2026-05-09T06:55:36.031226+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41463,11 +42427,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Defense Compound Production from Public Genomic and Environmental Data", - "updated_at": "2026-05-09T06:56:10.506639+00:00" + "updated_at": "2026-05-09T06:56:10.506639+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41538,11 +42504,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying Correlations Between Solar Wind Composition and Geomagnetic Indices", - "updated_at": "2026-05-09T06:56:40.939255+00:00" + "updated_at": "2026-05-09T06:56:40.939255+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41613,11 +42581,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Strength from Microstructure Images with Convolutional Neural Networks", - "updated_at": "2026-05-09T07:41:44.835254+00:00" + "updated_at": "2026-05-09T07:41:44.835254+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41688,11 +42658,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Predictive Power of Plant Functional Traits for Species Distribution Models", - "updated_at": "2026-05-09T07:42:58.685986+00:00" + "updated_at": "2026-05-09T07:42:58.685986+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41763,11 +42735,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Distraction on Cognitive Control in Remote Work Environments", - "updated_at": "2026-05-09T08:42:18.480181+00:00" + "updated_at": "2026-05-09T08:42:18.480181+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41838,11 +42812,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Glass Formation Tendency with Machine Learning on Public Data", - "updated_at": "2026-05-09T08:43:45.461598+00:00" + "updated_at": "2026-05-09T08:43:45.461598+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41913,11 +42889,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Code Complexity on LLM Code Understanding", - "updated_at": "2026-05-09T08:44:16.123165+00:00" + "updated_at": "2026-05-09T08:44:16.123165+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -41988,11 +42966,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Sensitivity of Common Statistical Tests to Dataset Size", - "updated_at": "2026-05-09T09:39:51.984168+00:00" + "updated_at": "2026-05-09T09:39:51.984168+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42063,11 +43043,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Robustness of Common Statistical Tests to Non-Independence in Public Datasets", - "updated_at": "2026-05-09T09:40:30.280418+00:00" + "updated_at": "2026-05-09T09:40:30.280418+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42138,11 +43120,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Attention on Recall of Emotional Stimuli in Rapid Visual Sequences", - "updated_at": "2026-05-09T09:40:59.771561+00:00" + "updated_at": "2026-05-09T09:40:59.771561+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42213,11 +43197,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Alloy Phase Diagrams from Compositional Data with Machine Learning", - "updated_at": "2026-05-09T10:30:34.053797+00:00" + "updated_at": "2026-05-09T10:30:34.053797+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42288,11 +43274,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Topology on Neural Entrainment to Rhythmic Stimuli", - "updated_at": "2026-05-09T10:31:09.065805+00:00" + "updated_at": "2026-05-09T10:31:09.065805+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42363,11 +43351,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Social Media \u201cDoomscrolling\u201d on Anticipatory Anxiety", - "updated_at": "2026-05-09T11:25:52.100104+00:00" + "updated_at": "2026-05-09T11:25:52.100104+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42438,11 +43428,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Review Quality with LLM-Assisted Metrics", - "updated_at": "2026-05-09T11:27:27.695268+00:00" + "updated_at": "2026-05-09T11:27:27.695268+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42513,11 +43505,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Impact of Network Centrality on Neural Synchrony During Sleep Stages", - "updated_at": "2026-05-09T11:28:08.933010+00:00" + "updated_at": "2026-05-09T11:28:08.933010+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42588,11 +43582,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Effect of Simulated Social Comparison on Self-Esteem in Virtual Reality", - "updated_at": "2026-05-09T12:32:08.914358+00:00" + "updated_at": "2026-05-09T12:32:08.914358+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42663,11 +43659,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Anticipatory Reward Processing", - "updated_at": "2026-05-09T12:33:11.390308+00:00" + "updated_at": "2026-05-09T12:33:11.390308+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42738,11 +43736,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Statistical Validity of Publicly Available A/B Test Summaries", - "updated_at": "2026-05-09T13:37:50.802457+00:00" + "updated_at": "2026-05-09T13:37:50.802457+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42813,11 +43813,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Data Scaling on Statistical Test Sensitivity", - "updated_at": "2026-05-09T13:38:46.298214+00:00" + "updated_at": "2026-05-09T13:38:46.298214+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42888,11 +43890,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Dielectric Constants from Graph-Based Descriptors", - "updated_at": "2026-05-09T14:31:31.658034+00:00" + "updated_at": "2026-05-09T14:31:31.658034+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -42963,11 +43967,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Vulnerability Density", - "updated_at": "2026-05-09T14:32:42.804066+00:00" + "updated_at": "2026-05-09T14:32:42.804066+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43038,11 +44044,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Simulated Social Validation on Neural Responses to Novel Information", - "updated_at": "2026-05-09T15:27:26.548907+00:00" + "updated_at": "2026-05-09T15:27:26.548907+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43113,11 +44121,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation Models on Code Vulnerability Density", - "updated_at": "2026-05-09T15:28:02.446205+00:00" + "updated_at": "2026-05-09T15:28:02.446205+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43188,11 +44198,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Neural Synchrony and Attention Switching Costs", - "updated_at": "2026-05-09T15:28:41.762073+00:00" + "updated_at": "2026-05-09T15:28:41.762073+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43263,11 +44275,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Reconstructing Early Universe Phase Transitions from CMB B-Mode Polarization", - "updated_at": "2026-05-09T17:26:26.634758+00:00" + "updated_at": "2026-05-09T17:26:26.634758+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43338,11 +44352,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Predictive Error Signals During Tactile Discrimination Learning", - "updated_at": "2026-05-09T17:27:55.864736+00:00" + "updated_at": "2026-05-09T17:27:55.864736+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43413,11 +44429,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Stellar Flare Frequency and Exoplanet Atmospheric Retention", - "updated_at": "2026-05-09T17:29:15.061294+00:00" + "updated_at": "2026-05-09T17:29:15.061294+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43488,11 +44506,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Perceived AI Personality Consistency on User Trust", - "updated_at": "2026-05-09T18:29:55.624274+00:00" + "updated_at": "2026-05-09T18:29:55.624274+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43563,11 +44583,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Defense Compound Production from Publicly Available Genomic and Transcriptomic Data", - "updated_at": "2026-05-09T20:22:52.915414+00:00" + "updated_at": "2026-05-09T20:22:52.915414+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43638,11 +44660,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Variable Selection on Statistical Power in Linear Regression", - "updated_at": "2026-05-09T21:27:03.033670+00:00" + "updated_at": "2026-05-09T21:27:03.033670+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43713,11 +44737,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Statistical Relationship Between Solar Wind Composition and Geomagnetic Indices", - "updated_at": "2026-05-09T21:28:21.995552+00:00" + "updated_at": "2026-05-09T21:28:21.995552+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43788,11 +44814,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Stiffness from Microstructure Images Using Convolutional Neural Networks", - "updated_at": "2026-05-09T22:24:36.195543+00:00" + "updated_at": "2026-05-09T22:24:36.195543+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43863,11 +44891,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Visual Salience on Moral Judgments of Simulated Scenarios", - "updated_at": "2026-05-09T22:25:05.043638+00:00" + "updated_at": "2026-05-09T22:25:05.043638+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -43938,11 +44968,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of LLM-Based Code Completion on Developer Cognitive Load", - "updated_at": "2026-05-09T22:25:43.240576+00:00" + "updated_at": "2026-05-09T22:25:43.240576+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44013,11 +45045,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Correlation Between Compositional Features and Predicted Formation Energy in Inorganic Materials", - "updated_at": "2026-05-09T23:24:16.506966+00:00" + "updated_at": "2026-05-09T23:24:16.506966+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44088,11 +45122,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Glass Forming Region of Alloy Systems with Machine Learning", - "updated_at": "2026-05-09T23:26:01.252225+00:00" + "updated_at": "2026-05-09T23:26:01.252225+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44163,11 +45199,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Packing Efficiency in Crystals from SMILES Representations", - "updated_at": "2026-05-09T23:26:31.232949+00:00" + "updated_at": "2026-05-09T23:26:31.232949+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44238,11 +45276,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Permeability of Polymers via Graph Neural Networks", - "updated_at": "2026-05-10T01:07:32.644086+00:00" + "updated_at": "2026-05-10T01:07:32.644086+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44313,11 +45353,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Social Comparison on Self-Perception in AI-Generated Image Platforms", - "updated_at": "2026-05-10T01:08:55.139984+00:00" + "updated_at": "2026-05-10T01:08:55.139984+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44388,11 +45430,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Code Generation on Code Smell Frequency", - "updated_at": "2026-05-10T03:19:11.469118+00:00" + "updated_at": "2026-05-10T03:19:11.469118+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44463,11 +45507,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Plant Pathogen Host Range from Publicly Available Genomic and Interaction Data", - "updated_at": "2026-05-10T03:19:47.989448+00:00" + "updated_at": "2026-05-10T03:19:47.989448+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44538,11 +45584,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Perovskite Stability via Compositional Fingerprints", - "updated_at": "2026-05-10T03:20:34.835277+00:00" + "updated_at": "2026-05-10T03:20:34.835277+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44613,11 +45661,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Anticipatory Reward Processing in Vocal Learning", - "updated_at": "2026-05-10T05:22:51.696283+00:00" + "updated_at": "2026-05-10T05:22:51.696283+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44688,11 +45738,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Relationship Between Brain Network Dynamics and Creative Problem Solving", - "updated_at": "2026-05-10T05:23:26.421656+00:00" + "updated_at": "2026-05-10T05:23:26.421656+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44763,11 +45815,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Metaphorical Framing on Attitudes Towards Mental Health Treatment", - "updated_at": "2026-05-10T05:23:58.865663+00:00" + "updated_at": "2026-05-10T05:23:58.865663+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44838,11 +45892,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Visuospatial Attention Shifts During Simulated Navigation", - "updated_at": "2026-05-10T08:46:29.515264+00:00" + "updated_at": "2026-05-10T08:46:29.515264+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44913,11 +45969,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Linguistic Complexity on Trust in AI-Generated Text", - "updated_at": "2026-05-10T08:47:03.633192+00:00" + "updated_at": "2026-05-10T08:47:03.633192+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -44988,11 +46046,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Permeability Coefficients via Graph Neural Networks and Public Datasets", - "updated_at": "2026-05-10T09:38:45.918319+00:00" + "updated_at": "2026-05-10T09:38:45.918319+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45063,11 +46123,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Gaps on Reconstructed Cosmic Microwave Background Maps", - "updated_at": "2026-05-10T09:39:24.209577+00:00" + "updated_at": "2026-05-10T09:39:24.209577+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45154,11 +46216,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Nostalgia on Cognitive Flexibility in Aging Adults", - "updated_at": "2026-05-10T10:42:10.330642+00:00" + "updated_at": "2026-05-10T10:42:10.330642+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45229,11 +46293,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Yield Strength of BCC Alloys Using Machine Learning and Public Data", - "updated_at": "2026-05-10T10:42:47.264593+00:00" + "updated_at": "2026-05-10T10:42:47.264593+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45304,11 +46370,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Dataset Size on the Accuracy of Machine Learning Models for Predicting Material Properties", - "updated_at": "2026-05-10T10:43:27.945650+00:00" + "updated_at": "2026-05-10T10:43:27.945650+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45379,11 +46447,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Prompt Complexity on LLM Code Generation Performance", - "updated_at": "2026-05-10T11:27:06.932392+00:00" + "updated_at": "2026-05-10T11:27:06.932392+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45454,11 +46524,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Conductivity from Graph-Based Features", - "updated_at": "2026-05-10T12:31:39.171049+00:00" + "updated_at": "2026-05-10T12:31:39.171049+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45529,11 +46601,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Assessing the Impact of Sample Size on the Reliability of Meta-Analytic Effect Sizes", - "updated_at": "2026-05-10T12:32:19.167978+00:00" + "updated_at": "2026-05-10T12:32:19.167978+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45604,11 +46678,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Neural Correlates of Error Monitoring During Simulated Navigation", - "updated_at": "2026-05-10T12:33:02.280511+00:00" + "updated_at": "2026-05-10T12:33:02.280511+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45679,11 +46755,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Visual Motion on Perceived Agency in Virtual Interactions", - "updated_at": "2026-05-10T13:38:07.404293+00:00" + "updated_at": "2026-05-10T13:38:07.404293+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45754,11 +46832,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Material Degradation Pathways from Compositional Data", - "updated_at": "2026-05-10T13:40:01.161674+00:00" + "updated_at": "2026-05-10T13:40:01.161674+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45829,11 +46909,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Data Transformation on Statistical Test Sensitivity", - "updated_at": "2026-05-10T14:32:56.155104+00:00" + "updated_at": "2026-05-10T14:32:56.155104+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45904,11 +46986,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Investigating the Correlation Between Gut Microbiome Composition and Cognitive Flexibility in Aging", - "updated_at": "2026-05-10T14:33:30.284110+00:00" + "updated_at": "2026-05-10T14:33:30.284110+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -45979,11 +47063,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Data Resolution on Simulated Fluid Turbulence", - "updated_at": "2026-05-10T15:27:50.142164+00:00" + "updated_at": "2026-05-10T15:27:50.142164+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46054,11 +47140,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Reactivity Using Graph Neural Networks and Reaction Datasets", - "updated_at": "2026-05-10T15:28:22.668088+00:00" + "updated_at": "2026-05-10T15:28:22.668088+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46129,11 +47217,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Yield Strength of BCC Steels from Compositional Data and Density Functional Theory", - "updated_at": "2026-05-10T16:27:47.992066+00:00" + "updated_at": "2026-05-10T16:27:47.992066+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46204,11 +47294,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Impact of Network Structure on Heat Transport in Disordered Alloys", - "updated_at": "2026-05-10T16:28:11.810611+00:00" + "updated_at": "2026-05-10T16:28:11.810611+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46279,11 +47371,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Statistical Power and Sample Size in Open Neuroimaging Datasets", - "updated_at": "2026-05-10T17:26:57.818542+00:00" + "updated_at": "2026-05-10T17:26:57.818542+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46362,11 +47456,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Influence of Social Media \u201cDoomscrolling\u201d on Anticipatory Anxiety", - "updated_at": "2026-05-10T18:30:12.858132+00:00" + "updated_at": "2026-05-10T18:30:12.858132+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46437,11 +47533,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Evaluating the Impact of Data Scaling on Robustness of Statistical Tests", - "updated_at": "2026-05-10T18:30:44.150375+00:00" + "updated_at": "2026-05-10T18:30:44.150375+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46521,11 +47619,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Defect Formation Energies in Perovskites with Machine Learning", - "updated_at": "2026-05-10T19:31:39.036621+00:00" + "updated_at": "2026-05-10T19:31:39.036621+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46613,11 +47713,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Interactions in Protein-Ligand Complexes Using Graph Neural Networks", - "updated_at": "2026-05-10T20:23:44.034862+00:00" + "updated_at": "2026-05-10T20:23:44.034862+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46697,11 +47799,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting the Glass Forming Region of Multi-Component Alloys via Machine Learning", - "updated_at": "2026-05-10T20:25:30.912988+00:00" + "updated_at": "2026-05-10T20:25:30.912988+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46839,11 +47943,13 @@ "phase_group": "blocked", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": null, "title": "The Influence of Visual Salience on Attentional Bias in Moral Decision-Making", - "updated_at": "2026-05-15T01:48:06.884476+00:00" + "updated_at": "2026-05-15T01:48:06.884476+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -46931,11 +48037,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Predicting Molecular Properties from Quantum Chemical Calculations with Limited Computational Resources", - "updated_at": "2026-05-10T21:23:27.362369+00:00" + "updated_at": "2026-05-10T21:23:27.362369+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47015,11 +48123,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "The Impact of Perceived Agency in AI-Driven Cognitive Behavioral Therapy on Treatment Adherence", - "updated_at": "2026-05-10T21:23:27.362369+00:00" + "updated_at": "2026-05-10T21:23:27.362369+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47090,11 +48200,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Relationship Between Prime Gaps and the Riemann Hypothesis", - "updated_at": "2026-05-12T17:34:15.485482+00:00" + "updated_at": "2026-05-12T17:34:15.485482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47148,11 +48260,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Distribution of Smooth Numbers in Short Intervals", - "updated_at": "2026-05-12T17:34:15.485482+00:00" + "updated_at": "2026-05-12T17:34:15.485482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47223,11 +48337,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Exploring the Convergence of Iterated Function Systems with Non-Contractive Maps", - "updated_at": "2026-05-12T17:34:15.485482+00:00" + "updated_at": "2026-05-12T17:34:15.485482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47281,11 +48397,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Asymptotic Behavior of Random Matrix Eigenvalues with Sparse Perturbations", - "updated_at": "2026-05-12T17:34:15.485482+00:00" + "updated_at": "2026-05-12T17:34:15.485482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47364,11 +48482,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "google.gemma-3-27b-it", "title": "Quantifying the Complexity of Knot Diagrams via Crossing Number and Braid Index", - "updated_at": "2026-05-12T17:34:15.485482+00:00" + "updated_at": "2026-05-12T17:34:15.485482+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47447,11 +48567,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Cognitive Load Optimization: Adaptive Complexity Scaling for Personalized Learning", - "updated_at": "2026-05-13T11:52:57.078364+00:00" + "updated_at": "2026-05-13T11:52:57.078364+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47505,11 +48627,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Qwen2.5-3B-Instruct", "title": "Characterization of Exoplanetary Atmospheres through Advanced Spectroscopic", - "updated_at": "2026-05-13T11:53:55.123333+00:00" + "updated_at": "2026-05-13T11:53:55.123333+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47563,11 +48687,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "Claude 3 Sonnet", "title": "Investigating the Potential Benefits of Ecotourism in Regenerating Deforested Areas", - "updated_at": "2026-05-13T11:54:03.476212+00:00" + "updated_at": "2026-05-13T11:54:03.476212+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47656,11 +48782,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "llmXive Automation System: Fully Autonomous Scientific Discovery Pipeline", - "updated_at": "2026-05-13T11:54:17.854201+00:00" + "updated_at": "2026-05-13T11:54:17.854201+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47740,11 +48868,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Memory Palace Pedagogy: VR-Enhanced Spatial Learning for Abstract Concepts", - "updated_at": "2026-05-13T11:54:21.299452+00:00" + "updated_at": "2026-05-13T11:54:21.299452+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47858,11 +48988,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Consciousness Bootstrapping: Self-Aware AI Through Recursive Introspection", - "updated_at": "2026-05-13T11:54:25.167051+00:00" + "updated_at": "2026-05-13T11:54:25.167051+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -47975,11 +49107,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Neuro-Symbolic Learning Networks: Bridging Neural and Symbolic Reasoning in Education", - "updated_at": "2026-05-13T11:54:28.638780+00:00" + "updated_at": "2026-05-13T11:54:28.638780+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -48059,11 +49193,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Embodied Curriculum Learning: Physical Simulation for Abstract Concept Teaching", - "updated_at": "2026-05-13T11:54:37.025884+00:00" + "updated_at": "2026-05-13T11:54:37.025884+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -48211,11 +49347,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Self-improving LLM: recursive architecture refinement and re-training", - "updated_at": "2026-05-13T11:55:11.900705+00:00" + "updated_at": "2026-05-13T11:55:11.900705+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -48302,11 +49440,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "A Stylometric Application of Large Language Models", - "updated_at": "2026-05-13T13:15:00+00:00" + "updated_at": "2026-05-13T13:15:00+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -48410,11 +49550,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Many-Shot CoT-ICL: Making In-Context Learning Truly Learn", - "updated_at": "2026-05-14T04:19:49.344997+00:00" + "updated_at": "2026-05-14T04:19:49.344997+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -48801,11 +49943,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Qwen-Image-VAE-2.0 Technical Report", - "updated_at": "2026-05-17T15:07:33.302301+00:00" + "updated_at": "2026-05-17T15:07:33.302301+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -49039,11 +50183,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Edit-Compass & EditReward-Compass: A Unified Benchmark for Image Editing and Reward Modeling", - "updated_at": "2026-05-17T15:12:45.286423+00:00" + "updated_at": "2026-05-17T15:12:45.286423+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -49687,11 +50833,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": null, "title": "MinT: Managed Infrastructure for Training and Serving Millions of LLMs", - "updated_at": "2026-05-17T15:06:57.385623+00:00" + "updated_at": "2026-05-17T15:06:57.385623+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -49793,11 +50941,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation", - "updated_at": "2026-05-14T04:19:58.404415+00:00" + "updated_at": "2026-05-14T04:19:58.404415+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -49954,11 +51104,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Identifying stimulus-driven neural activity patterns in multi-patient intracranial recordings", - "updated_at": "2026-05-17T15:12:46.235843+00:00" + "updated_at": "2026-05-17T15:12:46.235843+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -50142,11 +51294,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Intern-Atlas: A Methodological Evolution Graph as Research Infrastructure for AI Scientists", - "updated_at": "2026-05-15T15:14:06.489170+00:00" + "updated_at": "2026-05-15T15:14:06.489170+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -50365,11 +51519,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Leveraging Verifier-Based Reinforcement Learning in Image Editing", - "updated_at": "2026-05-17T15:09:12.305469+00:00" + "updated_at": "2026-05-17T15:09:12.305469+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -50597,11 +51753,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Co-Evolving Policy Distillation", - "updated_at": "2026-05-17T14:54:28.496117+00:00" + "updated_at": "2026-05-17T14:54:28.496117+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -50863,11 +52021,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Visual Generation in the New Era: An Evolution from Atomic Mapping to Agentic World Modeling", - "updated_at": "2026-05-15T15:15:06.955755+00:00" + "updated_at": "2026-05-15T15:15:06.955755+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -50985,11 +52145,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Heterogeneous Scientific Foundation Model Collaboration", - "updated_at": "2026-05-15T15:15:23.165950+00:00" + "updated_at": "2026-05-15T15:15:23.165950+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -51139,11 +52301,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "EVA-Bench: A New End-to-end Framework for Evaluating Voice Agents", - "updated_at": "2026-05-15T15:15:26.205401+00:00" + "updated_at": "2026-05-15T15:15:26.205401+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -51285,11 +52449,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Training Long-Context Vision-Language Models Effectively with Generalization Beyond 128K Context", - "updated_at": "2026-05-15T15:15:29.442396+00:00" + "updated_at": "2026-05-15T15:15:29.442396+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -51509,11 +52675,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "SANA-WM: Efficient Minute-Scale World Modeling with Hybrid Linear Diffusion Transformer", - "updated_at": "2026-05-17T14:58:53.491975+00:00" + "updated_at": "2026-05-17T14:58:53.491975+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -51647,11 +52815,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "MulTaBench: Benchmarking Multimodal Tabular Learning with Text and Image", - "updated_at": "2026-05-15T15:15:40.493506+00:00" + "updated_at": "2026-05-15T15:15:40.493506+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -51911,11 +53081,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "MemLens: Benchmarking Multimodal Long-Term Memory in Large Vision-Language Models", - "updated_at": "2026-05-17T14:33:43.472050+00:00" + "updated_at": "2026-05-17T14:33:43.472050+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52049,11 +53221,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Self-Distilled Agentic Reinforcement Learning", - "updated_at": "2026-05-16T21:50:33.224121+00:00" + "updated_at": "2026-05-16T21:50:33.224121+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52171,11 +53345,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Causal Forcing++: Scalable Few-Step Autoregressive Diffusion Distillation for Real-Time Interactive Video Generation", - "updated_at": "2026-05-16T21:50:33.482959+00:00" + "updated_at": "2026-05-16T21:50:33.482959+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52462,11 +53638,13 @@ "phase_group": "paper_review", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "github-actions[bot]", "title": "Achieving Gold-Medal-Level Olympiad Reasoning via Simple and Unified Scaling", - "updated_at": "2026-05-16T21:50:33.802916+00:00" + "updated_at": "2026-05-16T21:50:33.802916+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52588,11 +53766,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Socratic Transformers: Dialogue-Based Self-Teaching Through Adversarial Questioning", - "updated_at": "2026-05-17T00:34:36.384921+00:00" + "updated_at": "2026-05-17T00:34:36.384921+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52655,11 +53835,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Astrocyte-Inspired Meta-Learning: Glial Modulation of Neural Networks", - "updated_at": "2026-05-17T00:34:39.095304+00:00" + "updated_at": "2026-05-17T00:34:39.095304+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52722,11 +53904,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Predictive Coding LLMs: Implementing Hierarchical Error Minimization", - "updated_at": "2026-05-17T00:34:41.811207+00:00" + "updated_at": "2026-05-17T00:34:41.811207+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52789,11 +53973,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Dendritic Computation in Transformers: Beyond Point Neurons", - "updated_at": "2026-05-17T00:34:44.524738+00:00" + "updated_at": "2026-05-17T00:34:44.524738+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52890,11 +54076,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Social Memory Networks: Modeling Collective Remembering in Multi-Agent LLMs", - "updated_at": "2026-05-17T00:34:47.276590+00:00" + "updated_at": "2026-05-17T00:34:47.276590+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -52973,11 +54161,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Episodic Future Thinking in LLMs: Implementing Mental Time Travel", - "updated_at": "2026-05-17T00:34:50.027822+00:00" + "updated_at": "2026-05-17T00:34:50.027822+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53081,11 +54271,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Narrative Archaeology: Reverse-Engineering Story Memories from Brain Data", - "updated_at": "2026-05-17T00:34:52.688656+00:00" + "updated_at": "2026-05-17T00:34:52.688656+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53164,11 +54356,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Dream-State Learning: Implementing REM-like Consolidation in Language Models", - "updated_at": "2026-05-17T00:34:55.430883+00:00" + "updated_at": "2026-05-17T00:34:55.430883+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53247,11 +54441,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Cortical Column LLMs: Implementing Canonical Microcircuits for Universal Computation", - "updated_at": "2026-05-17T00:34:58.018863+00:00" + "updated_at": "2026-05-17T00:34:58.018863+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53314,11 +54510,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Neuromorphic Transformer Networks: Spiking Neural Dynamics in Language Models", - "updated_at": "2026-05-17T00:35:00.653136+00:00" + "updated_at": "2026-05-17T00:35:00.653136+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53381,11 +54579,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Phenomenological AI: First-Person Experience Modeling in Language Models", - "updated_at": "2026-05-17T00:35:03.248665+00:00" + "updated_at": "2026-05-17T00:35:03.248665+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53448,11 +54648,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "The Binding Problem in LLMs: Implementing Synchronized Oscillations for Feature Integration", - "updated_at": "2026-05-17T00:35:05.950030+00:00" + "updated_at": "2026-05-17T00:35:05.950030+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53598,11 +54800,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Quantum Cognition in LLMs: Superposition States for Ambiguous Reasoning", - "updated_at": "2026-05-17T00:35:08.618445+00:00" + "updated_at": "2026-05-17T00:35:08.618445+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53665,11 +54869,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Neural Narrative Networks: Brain-Inspired Story Generation and Comprehension", - "updated_at": "2026-05-17T00:35:11.429106+00:00" + "updated_at": "2026-05-17T00:35:11.429106+00:00", + "upstream_feedback": null }, { "artifact_links": { @@ -53765,11 +54971,13 @@ "phase_group": "idea", "points_paper_total": 0.0, "points_research_total": 0.0, + "revision_spec_path": null, "speckit_paper_dir": null, "speckit_research_dir": null, "submitter": "jeremymanning", "title": "Memory Palaces in LLMs: Spatial Reasoning for Enhanced Episodic Recall", - "updated_at": "2026-05-17T00:35:14.157228+00:00" + "updated_at": "2026-05-17T00:35:14.157228+00:00", + "upstream_feedback": null } ], "recent_activity": [