Skip to content

docs(devlog): record WP6 and WP17 of the 2026-08-08 bug campaign - #1314

Merged
lidge-jun merged 1 commit into
devfrom
codex/260808-campaign-devlog-wp6-wp17
Aug 8, 2026
Merged

docs(devlog): record WP6 and WP17 of the 2026-08-08 bug campaign#1314
lidge-jun merged 1 commit into
devfrom
codex/260808-campaign-devlog-wp6-wp17

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

Two more planning documents from today's campaign, continuing the set merged in #1307. Docs-only, under devlog/_plan/260808_bug_campaign/.

Doc Unit
028 WP6 — the bug issues that had no fix PR (#1296, #1297)
029 WP17 — the unblock sweep

028 covers #1297 (shipped as #1311) and #1296 (diagnosed, deliberately left open). The substantive record is the pattern review kept catching across four rounds: each time I had read a name or a comment as evidence of behaviour.

  • promptCacheKey used as a conversation identity because the name sounded right — it is unvalidated client input this repo already warns against in cursor/request-builder.ts.
  • vertexReplaySessionId, whose comment claims a stable thread key while the code reads promptCacheKey — a second instance of the reported bug, which I mistook for the fixed version. Filed separately as [Bug] Vertex replay session id uses promptCacheKey, which is shared across conversations #1312.
  • [Bug]: a local Windows ACL hardening failure is returned to the client as 401 authentication_error #1296 "confirmed" by reading three lines that pass err.message into a 401, without checking whether anything can reach them carrying an ACL error. Nothing can: two of those exceptions take fixed messages, the third preserves neither code nor cause, and read-path hardening is required: false. A synthetic-error regression would have been green while proving nothing.
  • codex-thread: prefixing called a namespace that "cannot collide", then the collision reproduced.

029 covers the sweep that stopped me closing the goal on a false signal. The goalplan read complete while nine pre-cutoff PRs had never had CI executed. 37 pending workflow runs approved SHA-matched, scoped to the current head of each open PR — 712 sit at action_required repo-wide and none match a current head, so approving by queue would have released commits no PR points at. All nine now have a recorded outcome: eight green, and #1155 documented as having no run object to approve.

It also records two corrections: an approval starts CI and is not a disposition, so the completion gate is an outcome per item; and my claim that a cutoff campaign cannot close against its starting snapshot contradicts 000_plan.md, which freezes the inventory at the cutoff.

Verification

  • bun run privacy:scan — passed (it does read devlog/)
  • bun test tests/repo-hygiene.test.ts — 11 pass / 0 fail
  • prepush hook ran the full suite before push
  • No Cross-platform CI run is expected: devlog/ is outside ci.yml's paths:

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed. (This is the documentation change.)
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults. Contributor identities appear only as Name <addr> in code spans, which privacy:scan enforces. [Bug]: a local Windows ACL hardening failure is returned to the client as 401 authentication_error #1296's detail is limited to what is already public on the issue, and it describes a path found not to be reachable rather than an exploitable one.

Summary by CodeRabbit

  • Documentation
    • Added development logs documenting investigations into session identification, access-control error handling, and related bug reports.
    • Recorded validation results, testing evidence, CI reruns, and final dispositions for outstanding bug-fix pull requests.
    • Added further evidence regarding repeated shard timeouts and clarified campaign status and scope.

028 WP6 — the two bug issues that had no fix PR. #1297 shipped; #1296
diagnosed and deliberately left open.

The record worth keeping is the pattern review kept catching: four rounds,
and each time I had read a name or a comment as evidence of behaviour. I
used promptCacheKey as a conversation identity because the name sounded
right, when it is unvalidated client input the repo already warns against.
I then found vertexReplaySessionId, whose comment claims a stable thread key
while the code reads promptCacheKey, and mistook a second instance of the
reported bug for the fixed version. I confirmed #1296 by reading three lines
that pass err.message into a 401 without checking whether anything can reach
them carrying an ACL error — nothing can. And I called codex-thread:
prefixing a namespace that cannot collide, then reproduced the collision
myself.

029 WP17 — the goalplan read complete while nine pre-cutoff PRs had never
had CI executed. Approved 37 pending runs SHA-matched and drove all nine to
a recorded outcome: eight green, and #1155 documented as having no run
object to approve.

Two corrections folded there too. An approval starts CI and is not a
disposition, so the completion gate became an outcome per item rather than
an unblock per item. And my claim that a cutoff campaign cannot close
against its starting snapshot contradicts 000_plan.md, which freezes the
inventory at the cutoff — complete means every item open then has a final
disposition, not that the repository has no open bug work now.
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds two development logs. One records corrected findings and outcomes for issues #1296 and #1297. The other records a cutoff-based CI unblock sweep, final PR dispositions, and repeated timeout evidence for #1302.

Changes

Bug campaign records

Layer / File(s) Summary
Orphan issue investigation
devlog/_plan/260808_bug_campaign/028_wp6_orphan_issue_fixes.md
Records the _clientThreadId session-ID fix for #1297, related wire-level tests, and the decision not to patch #1296 because no current producer-to-401 path was found.
CI unblock sweep
devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md
Records the nine-PR CI sweep, reruns, missing-run handling for #1155, cutoff scope corrections, final outcomes, and repeated timeout evidence for #1302.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: wibias, ingwannu

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the documentation changes for WP6 and WP17 in the 2026-08-08 bug campaign.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/260808-campaign-devlog-wp6-wp17

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 8, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5cbc5f3d78

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +357 to +361
## #1296 — diagnosed, not patched, and not closed

The misclassification shape is real; the reachability is not established. I
drafted a fix that pushed a synthetically coded error through the three branches
and abandoned it, because a regression against a state production never creates

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Move the open auth investigation out of devlog

Because #1296 is explicitly not patched or closed, committing its auth-error analysis, synthetic reproduction approach, and abandoned pre-disclosure fix to this public devlog/ exposes an unresolved security investigation. Remove this material from the tracked document and retain it in .tmp/ or another scratch directory until a fix or public advisory has shipped.

AGENTS.md reference: AGENTS.md:L61-L64

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md`:
- Line 167: Label the unlabeled output code fence at the referenced location
with the text language identifier by changing its opening fence to a text fence,
while preserving the enclosed content.
- Around line 27-33: Add run-level provenance to the WP17 sweep record: document
observation timestamps and scope, and link each approval or rerun to its run ID,
PR number, head SHA, and outcome so the current-head checks and reported counts
can be reproduced. Include the relevant `.tmp/ocx_approval_ledger.tsv` rows, or
a sanitized public ledger, covering all 37 approvals and confirming zero SHA
mismatches; update the summary counts only to match this evidence.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 490c9a8a-c2dd-4a92-9657-68c7710b3255

📥 Commits

Reviewing files that changed from the base of the PR and between b5d44a5 and 5cbc5f3.

📒 Files selected for processing (2)
  • devlog/_plan/260808_bug_campaign/028_wp6_orphan_issue_fixes.md
  • devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md

Comment on lines +27 to +33
Approved every `action_required` run on every open PR, SHA-matched, logged to
`.tmp/ocx_approval_ledger.tsv`: **37 approvals**, zero SHA mismatches.

The repository had **735** runs sitting at `action_required` overall. Most
belong to superseded heads of PRs already handled, which is why the sweep is
scoped to the *current head of each open PR* rather than to the queue. Approving
by queue would have released runs for commits no PR points at any more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

fd -HI -t f 'ocx_approval_ledger.tsv' . || true
rg -n -C 3 \
  '735|712|37 approvals|action_required|FINAL_SWEEP|`#1304`|`#1300`|`#1294`|`#1264`|`#1260`|`#1258`|`#1192`|`#1155`|`#1302`' \
  --glob '*.md' --glob '*.tsv' .

Repository: lidge-jun/opencodex

Length of output: 50378


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== target file relevant sections =="
sed -n '1,180p' devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md | nl -ba | sed -n '1,180p'

echo
echo "== current-head/action_required tables nearby =="
rg -n -C 4 \
  'current.head|current head|head head|735|712|Final resweep|ocx_approval_ledger|31157296632|1304|1300|1294|1264|1260|1258|1256|1192|1155' \
  devlog/_plan/260808_bug_campaign/*.md

echo
echo "== ledger files =="
git ls-files | grep -E '(^|/)(\.tmp/)?ocx_approval_ledger\.tsv$' || true

echo
echo "== all mentions of ocx_approval_ledger.tsv =="
rg -n '\.tmp/ocx_approval_ledger\.tsv|ocx_approval_ledger' --glob '*.md' --glob '*.tsv' .

Repository: lidge-jun/opencodex

Length of output: 233


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== target file relevant sections =="
wc -l devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md
cat -n devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md | sed -n '1,180p'

echo
echo "== current-head/action_required counts in target doc =="
python3 - <<'PY'
import re
from pathlib import Path
p = Path('devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md')
s = p.read_text(encoding='utf-8')
for line in s.splitlines():
    if re.search(r'(\d{3,}) runs|approvals|head head|current.head|current head|head SHA|Run|run', line, re.I):
        print(f'{s.splitlines().index(line)+1:4d}: {line}')
PY

echo
echo "== mentions of ledger and count anchors =="
python3 - <<'PY'
from pathlib import Path
for p in Path('.').rglob('*.md'):
    if '.git' in p.parts:
        continue
    txt=p.read_text(errors='ignore')
    if '.tmp/ocx_approval_ledger.tsv' in txt or 'ocx_approval_ledger' in txt or '31157296632' in txt or '735' in txt or '712' in txt:
        print(p)
PY

echo
echo "== ledger files in repo manifest =="
git ls-files | grep -E '(^|/)ocx_approval_ledger\.tsv$' || true

Repository: lidge-jun/opencodex

Length of output: 15603


Add run-level provenance for the WP17 approvals.

Lines 27-28, 30-31, and 107 state 37 approvals and 735 vs 712 action_required runs, but lines 147-157 only link PRs to outcomes. Add the observation timestamps/scope and run-level evidence (run IDs, PR numbers, head SHAs, approvals vs reruns) so a future reader can reproduce the current-head checks and reconcile all counts. Include the .tmp/ocxApproval_ledger.tsv rows or a sanitized public ledger for 37 approvals and zero SHA mismatches.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~33-~33: Did you mean the adverb “anymore”?
Context: ...leased runs for commits no PR points at any more. ### A fail-closed check that worked ...

(ANY_MORE)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md` around lines 27 -
33, Add run-level provenance to the WP17 sweep record: document observation
timestamps and scope, and link each approval or rerun to its run ID, PR number,
head SHA, and outcome so the current-head checks and reported counts can be
reproduced. Include the relevant `.tmp/ocx_approval_ledger.tsv` rows, or a
sanitized public ledger, covering all 37 approvals and confirming zero SHA
mismatches; update the summary counts only to match this evidence.


Its first run had **two shards hang in the same run**:

```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language to the output fence.

The unlabeled fence at Line 167 triggers markdownlint MD040. Mark it as text.

Proposed fix
-```
+```text
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 167-167: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@devlog/_plan/260808_bug_campaign/029_wp17_unblock_sweep.md` at line 167,
Label the unlabeled output code fence at the referenced location with the text
language identifier by changing its opening fence to a text fence, while
preserving the enclosed content.

Source: Linters/SAST tools

@lidge-jun
lidge-jun merged commit 6a7e5f0 into dev Aug 8, 2026
6 checks passed
@lidge-jun
lidge-jun deleted the codex/260808-campaign-devlog-wp6-wp17 branch August 8, 2026 19:38
lidge-jun added a commit that referenced this pull request Aug 8, 2026
…ng (#1316)

Published devlog 028/029 as #1314, rebased #1301 onto current dev, and
reported #1244's new conflict to its author.

The part worth keeping is a retraction, and its own correction. I claimed two
CI runs shared a stall signature -- cli-native-profile handing off to
cli-restart-health with 'killed 1 dangling process' last -- and posted it to
#1302 as a narrowing. False: run 31152916419 never hung at all. It hit the
Bun epoll_ctl error while loading autostart-health, kept running, and
finished as a failure in 85 seconds. I had compared two logs by memory of
what one of them said.

Then the retraction itself was wrong twice. It named claude-messages-endpoint
as the first affected file in 31263738953, when that is where output stops
and baseten-provider is where the error first appears -- two different
questions I had collapsed into one column. And it said the EEXIST has 'two
outcomes', which asserts causation the logs do not establish: the error
appears in all three runs, one of which completed normally.

Three passes to state three sentences accurately. Both corrections are public
on #1302 with the chain left visible.

Also corrected here: 'two cancelled runs at the exact head' was wrong -- they
were consecutive heads, before and after the rebase.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant