Repository navigation
GraphPaper 0.2: author voice, project folders, humanizer and Codex sign-in - #2
Conversation
… OAuth [source-upload]
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 55463def31
ℹ️ 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".
| if old.get('stat') == signature: | ||
| continue |
There was a problem hiding this comment.
Hash files even when size and mtime match
When an inbox file is replaced with different content that has the same byte length and preserved modification time—for example, by a synchronization or copy tool—this early return skips reading and hashing it. The stale source remains indefinitely, and even an explicit forced scan cannot detect the update because this check runs before the force handling. Compare the content hash during forced scans, or otherwise avoid treating the stat tuple as definitive.
Useful? React with 👍 / 👎.
| ('corporate-language', r'\b(?:leverage synergies|unlock (?:the )?(?:full )?potential|seamless integration|holistic approach|ever[- ]evolving landscape|rich tapestry)\b', 'Prefer the exact action, relationship or image.'), | ||
| ('chat-wrapper', r"(?m)^\s*(?:Certainly!|Absolutely!|Here is (?:the|your) (?:revised|rewritten)|I hope this helps)", 'Remove chat scaffolding from the manuscript.'), | ||
| ] | ||
| PROTECTED = re.compile(r'(?ms)```.*?```|~~~.*?~~~|^---\n.*?\n---(?=\n|$)|^>[^\n]*(?:\n>[^\n]*)*|`[^`\n]+`|\[[^\]\n]*\]\([^\)\n]+\)|\[S\d+\]|https?://[^\s<>]+|“[^”]+”|"[^"\n]+"|(?<!\w)[+-]?\d+(?:[.,:/-]\d+)*(?:\s?%|\b)') |
There was a problem hiding this comment.
Protect curly single-quoted passages during prose edits
For manuscripts using curly single quotation marks, such as the common UK-style ‘quoted passage’, this pattern does not mask the quotation even though the UI and job status promise that quotations are protected. A humanize/deslop model can therefore alter or remove that quoted text without either unmask() or the subsequent protected-span comparison detecting it; the model-based fidelity review is not a deterministic substitute. Include paired curly single quotes among the protected forms.
Useful? React with 👍 / 👎.
Requested update
Actual validation
GitHub's hosted runner remained queued and its bootstrap run was cancelled. The complete update was instead validated in an isolated temporary build environment on a native Windows 11 computer:
A real user OAuth completion and live model/JEV writing calls are not claimed as tested. Model and authentication test doubles are clearly labelled. Reports are committed under docs/validation/v0.2.
Source integrity
All 15 transferred implementation files were checksum-verified before integration. Temporary import scripts/workflow are removed. The 95-file publishing manifest was checked against actual staged Git blobs. Original README artwork and MIT license remain intact. No credentials, real manuscripts, build environments or runtime binaries are committed.