Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
515 commits
Select commit Hold shift + click to select a range
767a1d7
test(grading): majority-vote detection across --trials dispatches
vladolaru Aug 4, 2026
413328a
test(grading): vote abstention issue counts and keep per-trial failures
vladolaru Aug 4, 2026
9f8c72e
test(grading): emit structured detection benchmark reports
vladolaru Aug 4, 2026
c59737f
test(grading): pre-flight the report path before paying for dispatches
vladolaru Aug 4, 2026
3eddf24
docs(testing): document the detection benchmark and answer-key guard
vladolaru Aug 4, 2026
5e4a61b
test(grading): validate --trials and scope the report pre-flight
vladolaru Aug 4, 2026
88b3a73
test(grading): make benchmark reports self-discriminating and harden …
vladolaru Aug 4, 2026
c5a360a
test(grading): unbias detection fixtures and reject empty selections
vladolaru Aug 5, 2026
6a08542
test(grading): validate selection before artifacts and mark keyed ent…
vladolaru Aug 5, 2026
402ca3a
test(grading): rebuild truncated fixtures and guard hunk-count exactness
vladolaru Aug 5, 2026
0a95b81
fix(grading): dispatch the configured reviewer, not generic Claude
vladolaru Aug 6, 2026
df2543b
fix(grading): dispatch reviewers natively with full frontmatter contract
vladolaru Aug 6, 2026
dce10d3
fix(grading): run the session as the reviewer and key to agent doctrine
vladolaru Aug 6, 2026
726a32f
fix(grading): remediate the four-reviewer independent audit round
vladolaru Aug 6, 2026
bac630e
fix(grading): enforce doctrine severity floors and honest headline me…
vladolaru Aug 7, 2026
ee2189f
fix(grading): doctrine floors, reviewer identity, evidence-derived flags
vladolaru Aug 8, 2026
808268b
fix(grading): api-key floor, model-usage dispatch evidence, trial iso…
vladolaru Aug 8, 2026
c5ee85b
docs(grading): plan input contract fixes
vladolaru Aug 8, 2026
ac2c469
fix(grading): interpret model usage explicitly
vladolaru Aug 8, 2026
73eb521
fix(grading): preserve explicit trials presence
vladolaru Aug 8, 2026
251ea47
docs(grading): plan changelog condensation
vladolaru Aug 9, 2026
ebde8f3
docs(grading): condense detection benchmark notes
vladolaru Aug 9, 2026
65f683c
fix(grading): keep benchmark evidence internally consistent
vladolaru Aug 9, 2026
c8dd8d6
fix(grading): preserve benchmark report intent
vladolaru Aug 9, 2026
0d3f76c
refactor(grading): collapse trial aggregation to the outright-majorit…
vladolaru Aug 9, 2026
06fa790
refactor(grading): report explicit entry status instead of inferred d…
vladolaru Aug 9, 2026
c9d8b13
fix(grading): surface trial diagnostics in failed aggregates
vladolaru Aug 9, 2026
708dcc7
docs(grading): plan the detection benchmark simplification
vladolaru Aug 9, 2026
256e00c
test(grading): consolidate answer-key diff parsing into one walker
vladolaru Aug 9, 2026
e561940
test(grading): validate keyed fixtures through the harness repo setup
vladolaru Aug 9, 2026
8689b79
test(grading): drop the duplicated line_tolerance validation
vladolaru Aug 9, 2026
6c4919a
refactor(grading): collapse split_agent_definition to frontmatter_model
vladolaru Aug 9, 2026
c3b51ce
refactor(grading): let merge_grades own detection failure attribution
vladolaru Aug 9, 2026
182535f
refactor(grading): compute the dispatch-only flag set once
vladolaru Aug 9, 2026
2a5c892
refactor(grading): compute the reviewer review path once
vladolaru Aug 9, 2026
a6aec31
refactor(grading): emit the full aggregate detail schema from the agg…
vladolaru Aug 9, 2026
c4cc9d6
refactor(grading): derive benchmark report metadata from graded results
vladolaru Aug 9, 2026
d5eb3f6
fix(grading): classify CLI failures before model routing
vladolaru Aug 9, 2026
d38ec47
fix(grading): match findings by repository identity
vladolaru Aug 9, 2026
0ca0f41
refactor(containment): hoist the invariant to the scripts root
vladolaru Aug 10, 2026
55741c7
refactor(review): share repo path containment
vladolaru Aug 10, 2026
f765dd9
refactor(containment): centralize POSIX lexical decisions
vladolaru Aug 10, 2026
1cd371c
docs(containment): record the pipeline-wide invariant
vladolaru Aug 10, 2026
db83a55
feat(review): refuse dependency refresh on a dirty worktree
vladolaru Aug 10, 2026
ea5a97e
refactor(review): drop the stash choreography from the refresh briefing
vladolaru Aug 10, 2026
bf5e1ad
docs: record the clean-worktree precondition for dependency refresh
vladolaru Aug 10, 2026
8bf0158
fix(review): prevent config from hiding dirty submodules
vladolaru Aug 10, 2026
a86187f
refactor(review): extract shared pipeline vocabulary
vladolaru Aug 10, 2026
bca1438
refactor(review): extract step briefings from the pipeline module
vladolaru Aug 10, 2026
5fb5d2c
refactor(review): split orchestration into per-step functions
vladolaru Aug 10, 2026
be256c5
refactor(review): extract step orchestration
vladolaru Aug 10, 2026
d5e9b5e
docs: record the three-module pipeline layout
vladolaru Aug 10, 2026
85fc703
fix(review): preserve step 10 decision key after split
vladolaru Aug 10, 2026
0259ab1
docs(review): map the split pipeline architecture
vladolaru Aug 10, 2026
dcecd60
test(grading): make the unbounded-query fixture flagrant
vladolaru Aug 10, 2026
6fdd5d6
test(grading): enforce the doctrine floor for unbounded queries
vladolaru Aug 10, 2026
3ef01ba
test(grading): require a declared basis for answer-key severity floors
vladolaru Aug 10, 2026
2ad1d57
docs(testing): document the severity-basis policy
vladolaru Aug 10, 2026
57f0b2d
refactor(review): materialize reviewer Markdown at the readiness gate
vladolaru Aug 10, 2026
c3f7bde
feat(review): record and surface reviewer-Markdown materialization
vladolaru Aug 10, 2026
8af4d28
docs: correct the reviewer Markdown materialization point
vladolaru Aug 10, 2026
d6426f4
test(review): cover step 10 orchestration
vladolaru Aug 10, 2026
67d67d0
test(grading): correct the tests-reviewer severity floors
vladolaru Aug 10, 2026
d943588
docs(testing): require dispatch verification for severity floor changes
vladolaru Aug 10, 2026
661aceb
fix(review): validate the finding channel vocabulary
vladolaru Aug 11, 2026
4fea7e3
feat(review): gate advisory findings on declared entitlement
vladolaru Aug 11, 2026
836e70e
feat(review): record channel-suppressed findings as measurement
vladolaru Aug 11, 2026
049029f
docs: correct the advisory channel contract
vladolaru Aug 11, 2026
41335e1
test(grading): source grade_review_markdown from helpers.graders dire…
vladolaru Aug 12, 2026
0358800
refactor(grading): remove two dead grader imports from eval runner
vladolaru Aug 12, 2026
d7f82c9
docs(grading): document the max_unexpected answer-key field
vladolaru Aug 12, 2026
285a882
docs(grading): tighten the answer-key field table
vladolaru Aug 12, 2026
1da9841
docs(grading): correct the helpers/ import convention claim
vladolaru Aug 12, 2026
4e1d76e
test(grading): guard the answer-key field documentation
vladolaru Aug 12, 2026
e8e2900
test(grading): import GradeResult directly instead of via the eval mo…
vladolaru Aug 12, 2026
b47d92d
docs(grading): fix the helpers/ import example and trim a table cell
vladolaru Aug 12, 2026
160f3f2
fix(grading): make the answer-key documentation guards actually guard
vladolaru Aug 12, 2026
606519a
fix(review): stop deriving NOT DIFFED count from bootstrap's own rend…
vladolaru Aug 12, 2026
f533dc1
fix(review): close the review findings on the NOT DIFFED count wiring
vladolaru Aug 12, 2026
e2d9af1
fix(review): distinguish a coverage-manifest builder bug from legitim…
vladolaru Aug 12, 2026
6d99ab0
fix(review): stop deriving DYNAMIC_DISPATCH_RISK from bootstrap's own…
vladolaru Aug 12, 2026
c8ba149
docs: close the final-review findings on the cleanup batch
vladolaru Aug 12, 2026
4a956c1
test(review): pin TESTING.md's bootstrap test counts to real collection
vladolaru Aug 12, 2026
913eb64
feat(tooling): add claude-dev for running the worktree plugin
vladolaru Aug 13, 2026
98b2f41
refactor(tooling): rename the dev wrapper to claude-pirategoat-tools-dev
vladolaru Aug 13, 2026
341239e
feat(tooling): skip permission prompts in the dev wrapper
vladolaru Aug 13, 2026
937b39f
fix(review): validate unreviewed declarations at save time from disk
vladolaru Aug 14, 2026
861a2df
refactor(review): consolidate deferred-set rejection into one batch-r…
vladolaru Aug 14, 2026
ad60810
feat(review): record explicit deferred-review claims in the builder
vladolaru Aug 14, 2026
5929a3c
refactor(review): unify the deferred-path grammar across both claim APIs
vladolaru Aug 14, 2026
0cb667a
feat(review): auto-declare unaccounted deferred files at save
vladolaru Aug 14, 2026
a38e4df
fix(review): recompute auto-fill on every save so claim-and-resave cl…
vladolaru Aug 14, 2026
7f3efec
fix(review): declaration provenance outranks backfill; reject declare…
vladolaru Aug 14, 2026
bab73e5
fix(review): coerce builder pr_id to string; harden fail-open contrad…
vladolaru Aug 14, 2026
c2d8e6e
feat(review): read explicit deferred-review claims in coverage aggreg…
vladolaru Aug 14, 2026
7396024
refactor(review): consolidate coverage test fixtures and the deferred…
vladolaru Aug 14, 2026
4cdf6e6
docs(review): teach the claim-or-declare deferred contract to agents
vladolaru Aug 14, 2026
fa7192c
feat(review): add critic_adjustments to land critic decisions in the …
vladolaru Aug 14, 2026
9c165d0
fix(review): make critic adjustments crash-safe and batch-coherent
vladolaru Aug 14, 2026
318ad60
feat(review): apply pending critic adjustments during step 11
vladolaru Aug 14, 2026
81ac20a
fix(review): guard findings shape in critic adjustments; correct two …
vladolaru Aug 19, 2026
881ed13
feat(review): route critic REVISE through the adjustments ledger
vladolaru Aug 19, 2026
d16427f
fix(review): gate the step-11 adjustments apply on a REVISE verdict
vladolaru Aug 19, 2026
5912f3e
fix(review): surface ledger ids to the critic and close the REVISE ro…
vladolaru Aug 19, 2026
7c9ba03
feat(review): snapshot worktree git status at context gathering
vladolaru Aug 19, 2026
d67ce03
feat(review): sweep probe residue and measure worktree hygiene at fin…
vladolaru Aug 19, 2026
c521511
fix(review): bind the probe sweep to a verified repo identity
vladolaru Aug 19, 2026
d61c9a3
fix(review): isolate the full-sequence test from the developer's repo
vladolaru Aug 19, 2026
8ec6eeb
feat(review): surface worktree hygiene in the run manifest
vladolaru Aug 19, 2026
04abf22
docs(review): publish the pirategoat-probe convention to all particip…
vladolaru Aug 19, 2026
6cf4187
fix(review): delete the always-defaulted thoughts_length telemetry field
vladolaru Aug 19, 2026
6c0aeff
feat(review): record step-skip decisions in state and manifest
vladolaru Aug 19, 2026
4d8ef52
test(review): pin the thoughts_length drop at both projection allowlists
vladolaru Aug 19, 2026
61188a5
docs(review): document opus in the model_tier vocabulary and pin it
vladolaru Aug 19, 2026
a566edc
docs(review): correct the skip-ledger's stated constraints and semantics
vladolaru Aug 19, 2026
b7bf623
fix(review): utf-8 findings writes and current-contract coverage wording
vladolaru Aug 19, 2026
5a53e26
fix(analysis): admit bracketed model-variant tags in the transcript s…
vladolaru Aug 19, 2026
fcbeed8
feat(analysis): add a durable token-usage snapshot CLI
vladolaru Aug 19, 2026
aa01b43
feat(review): publish the captured token usage on the run's artifacts
vladolaru Aug 19, 2026
2861317
fix(analysis): pin the substituted-window guard and surface window.cl…
vladolaru Aug 19, 2026
a0d5d90
feat(review): stamp the producing plugin version on durable artifacts
vladolaru Aug 20, 2026
782bc88
refactor(review): converge every artifact on one `schema` field
vladolaru Aug 20, 2026
43c845c
fix(analysis): guard step-event schemas, unknown-not-false for legacy…
vladolaru Aug 20, 2026
df1b192
refactor(review): consolidate atomic JSON writes into atomic_io
vladolaru Aug 20, 2026
ed52c61
fix(review): close atomic-write gaps found in review
vladolaru Aug 20, 2026
dedaf64
fix(review): match atomic-write drift guard on AST, not prose
vladolaru Aug 20, 2026
3e324de
docs(test): state the atomic-drift guard's import-convention scope
vladolaru Aug 20, 2026
883efaa
fix(review): decode C-quoted porcelain paths in the probe-residue sweep
vladolaru Aug 20, 2026
aba9d30
test(review): require explicit cwd in pipeline test helpers
vladolaru Aug 20, 2026
25cfb64
fix(review): stop quick-mode dispatch test from depending on the ambi…
vladolaru Aug 20, 2026
9260337
test(review): drop run_pipeline's never-used timeout parameter
vladolaru Aug 20, 2026
ca87637
fix(review): gate critic adjustment apply on a REVISE verdict
vladolaru Aug 20, 2026
c94968c
fix(review): close quality-review findings on the critic-verdict gate
vladolaru Aug 20, 2026
6ee8190
fix(review): record verdict-sync failures instead of silent success
vladolaru Aug 20, 2026
c5aeb54
fix(review): close quality-review findings on the verdict-sync source…
vladolaru Aug 20, 2026
2acd0ac
fix(review): make deferred-review claims all-or-nothing
vladolaru Aug 20, 2026
8ec7976
fix(review): collect grammar errors across deferred-claim batches
vladolaru Aug 20, 2026
e568b80
feat(review): render review-findings.md mechanically from findings JSON
vladolaru Aug 20, 2026
f1cc635
refactor(review): stop the reconciliator from authoring narrative Mar…
vladolaru Aug 20, 2026
91edb16
fix(review): close spec-review minors on the findings render
vladolaru Aug 20, 2026
b5aeadd
fix(review): withdraw ledger prose the critic invalidates but cannot …
vladolaru Aug 20, 2026
47cd4c1
fix(review): key the withdrawal notice on the withdrawal record itself
vladolaru Aug 20, 2026
8239c2e
feat(review): make out-of-channel edits to the findings ledger visible
vladolaru Aug 20, 2026
33c5310
docs(review): state both meanings of an absent post_apply_integrity key
vladolaru Aug 20, 2026
eeb6739
fix(review): make the ledger integrity check total and pin its unpinn…
vladolaru Aug 20, 2026
a41a2e7
test(review): reach the digest totality path in the surrogate test
vladolaru Aug 20, 2026
287613f
fix(review): teach rescope+line patching in the decision-critic example
vladolaru Aug 20, 2026
26330e3
fix(review): validate the adjustments schema and audit rejected decis…
vladolaru Aug 20, 2026
c836925
fix(review): move the declare-claim contradiction teaching out of a s…
vladolaru Aug 20, 2026
82bf8dd
fix(review): close five review findings on the critic-adjustments har…
vladolaru Aug 20, 2026
a50a82c
feat(review): add script-owned --wait/--max-seconds to agents_status.py
vladolaru Aug 20, 2026
2094b86
feat(review): host-matched reviewer-wait briefing guidance
vladolaru Aug 20, 2026
0b91bc1
fix(review): close review findings on the reviewer-wait mechanism
vladolaru Aug 20, 2026
1a83768
fix(review): order the step-8 waiting watchdog before ending the turn
vladolaru Aug 20, 2026
accec0e
feat(review): measure the reconciliator and decision critic lifecycles
vladolaru Aug 20, 2026
1f5b8aa
fix(review): stop a step-10 re-entry from manufacturing a critic stall
vladolaru Aug 20, 2026
d8c152b
fix(review): carry worktree_hygiene, usage, and skipped_steps payload…
vladolaru Aug 20, 2026
0d8a6cd
refactor(review): consolidate optional-section sanitizers into one de…
vladolaru Aug 20, 2026
a95114c
docs(review): drop a drifting line-number citation from the usage bullet
vladolaru Aug 20, 2026
bc352e5
feat(review): retrofit availability to dependency_refresh, reviewer_m…
vladolaru Aug 20, 2026
ae71cc3
feat(review): measure the agent-vs-system NOT DIFFED honesty split
vladolaru Aug 20, 2026
67322b9
fix(review): close the review findings on the NOT DIFFED honesty split
vladolaru Aug 20, 2026
534aad7
refactor(review): route step 8's review-file stems through reviewer_n…
vladolaru Aug 20, 2026
5c7132d
fix(review): finish usage-snapshot's post-close upgrade (backlog #27 …
vladolaru Aug 20, 2026
cc43054
refactor(review): move usage-snapshot manifest reprojection into tele…
vladolaru Aug 20, 2026
e9de4b2
fix(review): guard the marker read in reproject_usage and report reasons
vladolaru Aug 20, 2026
52ee1c5
docs(review): reconcile the TS contract with every serialized key
vladolaru Aug 20, 2026
de0b738
docs(review): pin README model-tier prose to the registry
vladolaru Aug 20, 2026
2a9b64a
docs(test): TESTING.md truth pass + isolation-mutation lessons
vladolaru Aug 20, 2026
69c374e
docs: changelog coherence pass and schema-rule corrections
vladolaru Aug 20, 2026
b080b7c
fix(review): namespace synthesis dispatch markers off the reviewer su…
vladolaru Aug 20, 2026
1aec606
fix(review): route telemetry's findings-reader extractors through rea…
vladolaru Aug 20, 2026
1fc8373
docs: close the doc-map omissions from the whole-branch review's sweep 2
vladolaru Aug 20, 2026
169f5b3
refactor(review): remove the findings integrity digest — scope trim
vladolaru Aug 21, 2026
dcff122
refactor(review): simplify synthesis lifecycle to one clock — scope trim
vladolaru Aug 21, 2026
c0513e7
refactor(test): remove the TESTING.md count-pinning apparatus — scope…
vladolaru Aug 21, 2026
a756fcf
docs: distill the 1.114.0 changelog to release notes — scope trim
vladolaru Aug 21, 2026
97b69e8
test: remove redundant multi-level and per-section duplicate pins — s…
vladolaru Aug 21, 2026
51b0a56
test: fix the mislabelled run-config pin and drop its duplicate
vladolaru Aug 21, 2026
e6b60e9
test: remove instrument-verified redundant pins — scope trim
vladolaru Aug 21, 2026
ce47f94
test: pin the guards the volume was hiding
vladolaru Aug 21, 2026
9d1eeba
fix(analysis): resolve tool results this module mines no evidence from
vladolaru Aug 21, 2026
c43718d
fix(analysis): stop gating usage availability on tool-call evidence
vladolaru Aug 21, 2026
8e89955
fix(analysis): bucket cohort model usage on the dispatched model
vladolaru Aug 21, 2026
1b8413c
fix(analysis): keep dispatch results flowing through the classifier
vladolaru Aug 21, 2026
ac7ade3
docs(analysis): record why only the subagent usage half is decoupled
vladolaru Aug 21, 2026
d886227
fix(analysis): gate model usage on the field the grouping reads
vladolaru Aug 21, 2026
fcb5d96
docs(pirategoat-tools): changelog the measurement-layer fixes
vladolaru Aug 21, 2026
d1f2aea
fix(review): move budget pressure from unenforceable prose to the sav…
vladolaru Aug 21, 2026
0fd62cd
fix(review): make add_unreviewed variadic, matching its sibling API
vladolaru Aug 21, 2026
bbe773a
feat(review): teach reviewers that OUTPUT_DIR is artifacts-only
vladolaru Aug 21, 2026
f4e3877
fix(review): report builder meta as measured or null, never a default…
vladolaru Aug 21, 2026
04bf7b1
docs(pirategoat-tools): changelog the reviewer-facing layer fixes
vladolaru Aug 21, 2026
e78a9d9
Revert "fix(analysis): keep dispatch results flowing through the clas…
vladolaru Aug 21, 2026
0e89551
test(analysis): pin _EVIDENCE_TOOL_NAMES to its own branch sources
vladolaru Aug 21, 2026
0d9abad
refactor(analysis): give model attribution one shared spelling
vladolaru Aug 21, 2026
5d6e092
docs(pirategoat-tools): drop a changelog claim about a dead code path
vladolaru Aug 21, 2026
bbb869d
fix(review): count reviewers, not scope-summary files
vladolaru Aug 21, 2026
d6058af
fix(review): surface changed files that matched no reviewer's domain
vladolaru Aug 21, 2026
cd931fc
fix(review): render the report's coverage section instead of describi…
vladolaru Aug 21, 2026
1d2f129
fix(review): account for critic adjustments per entry, never in aggre…
vladolaru Aug 21, 2026
1f65785
fix(review): carry surviving clearances into the reconciled ledger
vladolaru Aug 21, 2026
3f9b58a
test(review): pin the reconciliator marker alias to both names it bri…
vladolaru Aug 21, 2026
19dc95b
test(analysis): exercise the budgeted envelope through the real renderer
vladolaru Aug 21, 2026
8467872
docs(review): reflow the NOT DIFFED contract into clean sentences
vladolaru Aug 21, 2026
998d0f3
docs(review): scope the OUTPUT_DIR comment's $TMPDIR claim to briefed…
vladolaru Aug 21, 2026
1c76bf8
feat(review): make completion events self-describing about re-saves
vladolaru Aug 21, 2026
8360d36
fix(review): scope a11y on UI evidence, not extension guilt
vladolaru Aug 21, 2026
f06a1bb
feat(review): record the producing build commit in run-config
vladolaru Aug 21, 2026
0139e3c
docs(review): log the field-audit batch in the unreleased changelog
vladolaru Aug 21, 2026
21fd318
fix(review): compare coverage paths in one alphabet
vladolaru Aug 21, 2026
4a41391
fix(review): publish the reviewer's in-scope list in every scope mode
vladolaru Aug 21, 2026
1f0619d
fix(review): treat an absent changed-file list as unmeasured coverage
vladolaru Aug 21, 2026
033ab63
docs(review): judge every clearance by its method, not only contested…
vladolaru Aug 21, 2026
4c8e48d
docs(review): document the attribution convention on clearance evidence
vladolaru Aug 21, 2026
9714975
fix(review): neutralize unscoped paths before rendering them
vladolaru Aug 21, 2026
a8b499b
fix(review): record the unscoped-files gap once, not once per file
vladolaru Aug 21, 2026
3f0a77d
fix(review): demand a verdict gap acknowledgement only when one exists
vladolaru Aug 21, 2026
9eca0f1
test(review): pin the clearance-conflict contract on its meaning
vladolaru Aug 21, 2026
b451d03
fix(review): resolve a11y disk evidence against the repository root
vladolaru Aug 21, 2026
7769caa
test(review): pin removal-only UI evidence in a11y scope
vladolaru Aug 21, 2026
c73fb91
revert: unbundle the six-issue commit 7769caa2
vladolaru Aug 21, 2026
7a9ab3b
test(review): pin removal-only UI evidence in a11y scope
vladolaru Aug 21, 2026
f0ce868
docs(review): state the lifecycle contract the projection implements
vladolaru Aug 21, 2026
a77f7a1
docs(review): record the resave field in the schema carve-out ledger
vladolaru Aug 21, 2026
aa494c1
docs(review): correct the plugin_commit rationale on marketplace inst…
vladolaru Aug 21, 2026
1eff2b0
fix(review): enumerate changed files in one path alphabet
vladolaru Aug 21, 2026
958f747
docs: catalogue the unscoped-path escaping fix in the changelog
vladolaru Aug 21, 2026
8a9c274
docs(pirategoat-tools): state the completion contract the projection …
vladolaru Aug 21, 2026
84fae5b
docs(tests): record the stale-bytecode discipline for mutation probes
vladolaru Aug 21, 2026
d444477
feat(pirategoat-tools): give deferred work a committed canonical home
vladolaru Aug 21, 2026
485dee5
docs: add changelog entry-style rules to stop essay-bullet drift
vladolaru Aug 21, 2026
434d936
docs(pirategoat-tools): distill the unreleased entry to the new style
vladolaru Aug 21, 2026
4dbbe61
refactor(analysis): rename --max-sessions to --limit
vladolaru Aug 22, 2026
7d62735
refactor(analysis): rename --agents to --agent
vladolaru Aug 22, 2026
3ec6f37
docs(analysis): update examples for the renamed flags
vladolaru Aug 22, 2026
6b48412
feat(analysis): add Codex thread metadata parsing
vladolaru Aug 22, 2026
ed0cf08
feat(analysis): add date-windowed Codex thread discovery
vladolaru Aug 22, 2026
5629662
feat(analysis): add single-pass Codex thread scan
vladolaru Aug 22, 2026
133e764
feat(analysis): build Codex thread trees from agent_path
vladolaru Aug 22, 2026
4790258
fix(analysis): scope Codex thread trees to their session
vladolaru Aug 22, 2026
36cdd31
feat(analysis): add codex_session_analyzer.py
vladolaru Aug 22, 2026
e7d0801
feat(analysis): add codex_session_metrics.py
vladolaru Aug 22, 2026
6ef53e9
feat(skills): add analyzing-codex-sessions
vladolaru Aug 22, 2026
122d800
docs: document the Codex session analysis scripts
vladolaru Aug 22, 2026
837c948
docs: map the Codex analysis scripts to their test commands
vladolaru Aug 22, 2026
99cd311
fix(analysis): keep failed-command lines readable in text output
vladolaru Aug 22, 2026
5e77de5
feat(analysis): make --since select whole Codex sessions
vladolaru Aug 22, 2026
5112dce
fix(analysis): stop a running session from hiding its finished work
vladolaru Aug 22, 2026
0992d7d
feat(analysis): make one named session the primary way in
vladolaru Aug 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"name": "pirategoat-tools",
"source": "./plugins/pirategoat-tools",
"description": "Code review orchestration (28 domain reviewers + pipeline/cross-validation agents), WordPress/WooCommerce development patterns, Figma-to-code workflow, accessibility guidance, testing patterns, and browser automation.",
"version": "1.111.0",
"version": "1.114.0",
"author": {
"name": "Vlad Olaru"
},
Expand Down
67 changes: 67 additions & 0 deletions .claude/docs/analysis/2026-08-01-codex-review-hardening.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
Last updated: 2026-08-01 14:52

> **Prompt:** "Fix these cleanly, preferably by going to the root cause and ensure better architectural basis and more robust behavior. Take opportunities to simply rather than expand. Commit when done."

# Review hardening investigation

## Scope

Validate and resolve the five supplied review findings around repo-contributed reviewer provenance, in-place Composer containment, symlinked dependency-input staging, Git-quoted changed paths, and the public host-context reason type.

## Initial state

- Branch: `feat/review-pipeline-measurement`.
- Worktree was clean at investigation start.
- The plugin contract explicitly requires canonical-path provenance checks and forbids host-install writes to the reviewed worktree.
- Runtime already emits `dep_roots_capped`; the TypeScript output contract must be checked for drift.

## Investigation log

All five findings are valid:

1. `load_review_config._gate()` always reads `resolved_path`, but reviewer normalization publishes `resolved_ref`. A reviewer symlink whose target is changed remains trusted; the equivalent rule case is already covered.
2. In-place Composer installs override vendor and bin output only. A relative `config.cache-dir` therefore remains rooted in the reviewed dependency directory; `COMPOSER_CACHE_DIR` is absent from the subprocess environment.
3. Staging resolves an input for the source read and then derives the destination from that resolved identity. For `package.json -> config/package.json`, staging creates `cache/config/package.json` and omits the declared `cache/package.json` manifest.
4. Dependency-root scoping treats backslashes as path separators before interpreting Git C-quoting. A changed path such as `"packages/caf\303\251/src/x.php"` selects no nested Composer root. Three existing callers already implement the same Git `quote.c` grammar with different error policies; adding a fourth local parser would deepen documented drift.
5. Python runtime output includes `dep_roots_capped`, while `HostContextBanner.reason` in `schemas/review-output.ts` omits it.

Minimal reproductions confirmed the first four behavior failures directly. The fifth is a literal producer/consumer contract mismatch.

## Design options

### A. Patch each call site independently

Add the missing reviewer field lookup, Composer environment variable, declared staging destination, a fourth Git path decoder, and the TypeScript literal. This is the smallest diff, but it preserves the decoder-drift root cause already called out in code comments.

### B. Fix identity boundaries and centralize Git path grammar (recommended)

- Make provenance gating derive the resolved-field name from the declaration field (`path` -> `resolved_path`, `ref` -> `resolved_ref`) so the two normalized entry shapes share one gate without another branch.
- Treat staging source and destination as separate identities: read from the containment-checked resolved source, write to a containment-checked normalized destination based on the declared relative path.
- Redirect every known Composer write root (vendor, bin, cache) into the atomic cache staging directory and extend the end-to-end immutability fake to model relative cache configuration.
- Extract the existing Git C-quote grammar into one small stdlib module. Keep caller-specific failure policies in thin wrappers, and use the shared decoder before dependency-root path normalization.
- Add `dep_roots_capped` to the public TypeScript union plus a drift test comparing the Python and TypeScript banner-reason vocabularies.

This touches more existing decoder call sites than option A, but removes duplicated grammar and follows the repository's own documented threshold: a fourth decoder is the evidence to consolidate.

### C. Change only Git collection to NUL-delimited output

Use `git diff --name-only -z` in `review/context.py`. This fixes locally collected paths at the source, including newlines, but not precomputed bot context or direct `ensure_installed --scope-path/--scope-json` inputs. It is useful independently but incomplete for this review finding.

## Implementation outcome

Implemented option B and covered every reported boundary:

- Reviewer provenance now derives the resolved identity field from the declared field, so both rule paths and reviewer refs gate their canonical targets.
- Dependency staging reads from the resolved, containment-checked source but writes to the independently checked declared path.
- In-place Composer installs force vendor, bin, and cache output into the atomic staging transaction.
- Git C-quoted path grammar now has one canonical implementation. Existing consumers retain their caller-specific malformed-input policies, while dependency-root selection decodes before path normalization.
- Python and TypeScript host-context reason vocabularies now include `dep_roots_capped`, with an exact cross-language drift test.

## Verification evidence

- Focused regression aggregate: `717 passed`.
- Pirategoat Tools suite: `4084 passed, 24 skipped`.
- All plugin suites: `4948 passed, 24 skipped`.
- Generated Codex compatibility check: all 48 generated files current.
- Direct Python compile and CLI entry-point smoke checks passed.
- Independent code review found no critical, important, or minor issues and judged the change ready to merge.
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Last updated: 2026-08-02 13:24

> **Prompt:** "Work on the branch feat/review-pipeline-measurement (already checked out; working tree must be clean
> before you start).
>
> Execute the implementation plan at .claude/docs/plans/2026-08-01-host-seam-identity-fixes.md using the
> superpowers:subagent-driven-development skill — fresh subagent per task, review between tasks.
>
> Context: the plan fixes three host-boundary identity defects confirmed by an independent review — Codex
> task-name collisions for repo reviewers, a Claude-only session variable baked into generated Codex
> skills, and contradictory model-tier provenance for Codex-dispatched repo reviewers. Background and
> finding verification: .claude/docs/analysis/2026-08-01-claude-review-findings-architecture.md, § "Cluster
> B". The design direction is settled; do not re-litigate it.
>
> Important: a previous implementer was assigned this plan and skipped it entirely while completing two
> sibling plans — the companion plans 1 and 3 are already merged into the branch (commits
> 086121c1..00bf92bb), so the changelog's 1.113.0 entry already exists. Your work is exactly this plan's
> tasks 1–4; before reporting completion, verify each fix landed in code (pipeline.py task names, generated
> skills, plan_dispatch.py), not just that tasks were attempted.
>
> Rules:
> - Execute tasks 1–4 in order. One commit per task using the plan's prepared messages; run each task's
> specified pytest command and confirm it passes before committing.
> - Task 1 deliberately reverses an existing test's assertions (test_pipeline.py ~line 638 pinned the
> colliding design) — rewrite that test as the plan specifies; do not preserve its old assertions.
> - Task 2 has a mandatory verification prerequisite: confirm what session/thread env var Codex actually
> exposes before implementing (the reviewer's CODEX_THREAD_ID is unverified — zero hits in
> docs/codex-cli-reference.md). The plan carries both outcomes; pick the one the evidence supports and
> record the result in the commit message.
> - Never hand-edit generated files under codex-skills/ — the fix goes in translate_command_body in
> scripts/generate_codex_compat.py, then regenerate.
> - Changelog: 1.113.0 is committed but unpushed — fold these fixes into its ### Fixed section; do not bump
> the version.
> - Finish with python3 scripts/generate_codex_compat.py --check and the full pytest plugins/ run
> (baseline: 4,817 passed, 24 skipped), then report the git range as <pre-plan-HEAD>...<last-commit>.
> - Do not push. If a commit fails on GPG signing, leave changes staged, note the intended message, and
> continue to the next task."

## Investigation

The required runtime probe was run from the repository root:

```text
codex exec --ephemeral 'Run this exact shell command and paste its raw output: env | grep -i -E "codex|thread|session" | sort' 2>&1 | tail -20
```

Relevant raw output (the thread identifier value is redacted; the variable name and presence are preserved):

```text
CODEX_MANAGED_PACKAGE_ROOT=/opt/homebrew/lib/node_modules/@openai/codex
CODEX_PERMISSION_PROFILE=:workspace
CODEX_SANDBOX=seatbelt
CODEX_SANDBOX_NETWORK_DISABLED=1
CODEX_THREAD_ID=<redacted-thread-id>
__EXIT_STATUS__=0
```

The probe exited successfully with status `0`. It proves that commands run by
an ephemeral Codex task can see `CODEX_THREAD_ID` in their environment.

## Decision

**Outcome A:** translate `${CLAUDE_SESSION_ID}` to `${CODEX_THREAD_ID}` in
generated Codex command bodies. This uses the exact skill-visible variable
verified at runtime and preserves transcript correlation without changing the
canonical Claude commands.

## TDD evidence

The required RED command was:

```text
pytest plugins/pirategoat-tools/tests/test_codex_marketplace.py -k claude_session -v
```

It exited `1` with one selected test failure. The offender list contained the
three expected generated review skills:

```text
plugins/pirategoat-tools/codex-skills/code-review/SKILL.md
plugins/pirategoat-tools/codex-skills/full-code-review/SKILL.md
plugins/pirategoat-tools/codex-skills/pr-review/SKILL.md
```

The failure therefore demonstrates the missing host-seam translation rather
than a test setup or collection error.

After adding the generator translation and regenerating, the focused command
passed (`1 passed, 13 deselected`). The full marketplace compatibility test
file then passed (`14 passed`), and
`python3 scripts/generate_codex_compat.py --check` reported all 48 generated
files current.

Generated-body inspection found `${CODEX_THREAD_ID}` on the `--session-id`
line in each of `code-review`, `full-code-review`, and `pr-review`, with no
generated `${CLAUDE_SESSION_ID}` reference. The three canonical Claude command
files remain unchanged and continue to use `${CLAUDE_SESSION_ID}`.
Loading