Repository navigation
v1.28.0 — parity with canonical stride v1.24.0–v1.28.0 (G231)
Parity release: brings the Gemini variant up from canonical stride v1.23.0 (its own v1.16.0) to canonical v1.28.0, porting all five intervening canonical releases (v1.24.0–v1.28.0) into the Gemini hooks, skills, and reviewer prompt. The version jumps 1.16.0 → 1.28.0 to align the Gemini variant's number with the canonical release it now matches. Both hook test suites pass (bash 184/0, PowerShell 145/0). stride-gemini is not distributed through a marketplace, so there is no marketplace pin to update (goal G231).
Changed — complete-delivery review reports (canonical v1.24.0 / G222, W1120)
skills/stride-workflow/SKILL.md+skills/stride-subagent-workflow/SKILL.md— the reviewer-dispatch step now passes every review field the task supplies (acceptance_criteria,pitfalls,patterns_to_follow,testing_strategy,security_considerations,description,what,why) with emphatic no-exceptions wording, so a task-supplied section can never come backnot_assessedbecause it was withheld from the reviewer.agents/task-reviewer.md—not_assessedis reserved STRICTLY for a section the task itself left empty (per-section verdict clauses + a combined four-tile override rule), and the input contract is declared authoritative across variants.skills/stride-workflow/SKILL.md+skills/stride-completing-tasks/SKILL.md—reviewer_resultis built by a whole-object copy of the reviewer's JSON plus a mandatory self-check (every section present;project_checkscount matches), backed by a hard pre-submission gate instride-completing-tasks.
Fixed — the changed-files diff upload survives the after_doing timeout (canonical v1.25.0, W1093–W1096; D72)
hooks/stride-hook.sh+hooks/stride-hook.ps1— the per-file diff snapshot is captured and PUT before theafter_doinggate commands run (with the post-loop call kept as a refresh), so a hook-timeout no longer loses the diffs. A new.stride-diff-upload-statefile records the last upload's task id + HTTP code (no URL/token), and thebefore_reviewhook — running on a fresh timeout budget — re-uploads when no healthy upload is on record. The PowerShell hook gains the net-newInvoke-ChangedFilesUpload,Write-DiffUploadState, andInvoke-SelfHealChangedFilesUploadfunctions.hooks/hooks.json— the tworun_shell_commandhook timeouts are raised120000 → 300000ms (5 minutes); theactivate_skillgate stays at 10000 ms.
Fixed — a passing after_doing gate no longer renders as a red hook error (canonical v1.26.0 / D65; D73)
hooks/stride-hook.sh+hooks/stride-hook.ps1— the success branch no longer writes passing-command output to fd 2 /Console.Error(which the host mislabels as a hook error even on exit 0). Each passing command's tail-truncated stdout/stderr is folded into a newcommands_outputarray on the success JSON, encoded viajq --arg/ConvertTo-Jsonso command output cannot inject JSON fields. The failure branch is unchanged; the no-jq path still emits no success JSON.
Changed — the task-reviewer restates acceptance criteria verbatim, including on re-review (canonical v1.26.0 / D66; W1121)
agents/task-reviewer.md— theacceptance_criteriaarray is governed by a hard 1:1 rule: exactly one entry per criterion line of the task'sacceptance_criteria, verbatim and in order, never split/merged/reworded/added/dropped.skills/stride-workflow/SKILL.md— Step 6 gains a re-review/follow-up dispatch rule and a self-check asserting the reviewer'sacceptance_criteriacount equals the task's own criterion-line count.
Fixed — the hook's own state artifacts are excluded from changed_files (canonical v1.27.0 / D67; part of D74)
hooks/stride-hook.sh—capture_changed_filesexcludes the repo-root.stride-diff-upload-stateand.stride-changed-files.json(exact whole-line match; a same-named file in a subdirectory is still captured).hooks/stride-hook.ps1—Invoke-ChangedFilesUploadstrips the same root artifacts from the snapshot before PUT (the PowerShell hook has no capture step).
Fixed — claim-time TASK_BASE_REF is always refreshed (canonical v1.28.0 / G224, W1086/W1087; part of D74)
hooks/stride-hook.sh+hooks/stride-hook.ps1— thebefore_doingclaim path adds a persisted-output-file fallback (read the "Full output saved to: <path>" file, validated as a regular file and parsed with jq /ConvertFrom-Jsononly — never sourced/eval'd; space/quote-tolerant) and refreshesTASK_BASE_REFto current HEAD unconditionally: even when no task JSON is obtainable it rewritesTASK_BASE_REF, clears the stale snapshot/upload-state, and preserves existingTASK_identity lines (skipping silently in a non-git dir). The PowerShell hook now writesTASK_BASE_REFfor the first time, withPSObject.Properties.NameStrictMode guards on the response-parse cascade.
Backward compatibility
D65 changes the success-path output shape only (stderr empty on a passing gate; the success JSON gains an additive commands_output array). D66, G222 are documentation/agent-contract changes with no wire-shape change. D72 (v1.25.0) raises hook timeouts and adds .stride-diff-upload-state; D67/G224 change capture and claim-time cache behavior. Add .stride-env-cache, .stride-changed-files.json, and .stride-diff-upload-state to your .gitignore (all are temp files cleaned up after after_review).
Source
Goal G231 — the Gemini port of canonical stride v1.24.0 (G222), v1.25.0 (W1093–W1096), v1.26.0 (D65 + D66), v1.27.0 (D67), and v1.28.0 (G224), across child tasks W1120, D72, D73, W1121, and D74. stride-gemini is not distributed through a marketplace, so no marketplace pin update.