Repository navigation
fix: require specific headlines and include replies in recaps - #1437
paulinevos merged 1 commit into
Conversation
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
|
All this "clear a deleted user's content from the recap" logic feels overly complex when recaps are refreshed every 2 hours anyway... |
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues block approval of the headline and reply-aware recap changes.
No open issues 🎉
What changed in this PR
This PR makes hot-topic headlines identify specific developments and lets public replies contribute to recaps, while extending existing privacy and invalidation safeguards.
Changes:
- Tighten headline eligibility, generation, matching, and deduplication to keep distinct developments separate.
- Include bounded, chronological reply context in both recap eligibility checks and writing.
- Extend recap invalidation, muted/blocked contributor filtering, regression tests, and public documentation.
| File | Description |
|---|---|
tests/Unit/Middleware/HandleInertiaRequestsTest.php |
Covers hidden reply authors in sidebar recaps. |
tests/Unit/Jobs/GenerateHeadlineSummaryTest.php |
Tests reply context, sampling limits, and publication rechecks. |
tests/Unit/Actions/UpdateCommitStatusesTest.php |
Covers recap invalidation when replies are rejected. |
tests/Unit/Actions/DeleteUserTest.php |
Covers recap invalidation after reply-author deletion. |
tests/Unit/Actions/DeleteCommitTest.php |
Tests thread recap clearing when replies are deleted. |
tests/Unit/Actions/DeleteCommitContentTest.php |
Tests recap clearing during reply content erasure. |
tests/Feature/Controllers/HeadlineControllerTest.php |
Covers muted and blocked reply authors on headline pages. |
KNOWLEDGE_BASE.md |
Documents specific headlines and reply-aware recaps. |
app/Services/HeadlineProviders/OpenAIHeadlineProvider.php |
Tightens headline decisions and incorporates replies into recap eligibility. |
app/Queries/HeadlineSummaryQuery.php |
Hides recaps involving muted or blocked reply authors. |
app/Queries/HeadlineSummaryCommitsQuery.php |
Adds up to 100 newest replies across selected root threads. |
app/Contracts/Services/HeadlineProvider.php |
Documents reply context in summary inputs. |
app/Ai/Agents/HeadlineSummaryWriter.php |
Instructs the writer to use substantive replies without inferring consensus. |
app/Ai/Agents/CommitHeadlineWriter.php |
Requires headlines to distinguish specific developments. |
app/Actions/UpdateCommitStatuses.php |
Clears thread recaps when replies are rejected. |
app/Actions/DeleteUser.php |
Clears recaps linked through an erased user's replies. |
app/Actions/DeleteCommitContent.php |
Clears thread recaps during content erasure. |
app/Actions/DeleteCommit.php |
Clears thread recaps when a reply is deleted. |
Review effort: Balanced
cd3e732 to
3a1e588
Compare
Summary
Hot-topic recaps currently see only root posts, so useful answers in their replies cannot influence either recap eligibility or writing. Headline classification also permits broad labels such as “Laravel”, grouping distinct developments together.
Include public reply context in recaps and require headlines to identify a specific release, feature, event, change, problem, or finding rather than a product/category alone.
Changes
Validation
Local checks in an isolated PostgreSQL test database:
composer test:lint— passed; 22 warnings in unchanged frontend test files, no lint errors.composer test:types— passed PHPStan and both TypeScript projects.composer test:type-coverage— passed, 100%.bun run test:unit— 223 passed, zero failures.XDEBUG_MODE=coverage php -d memory_limit=-1 vendor/bin/pest --parallel --ci --coverage --exactly=100.0 --passthru-php="'-d' 'memory_limit=-1'"— full rerun passed: 5,492 tests, 29,747 assertions, 100% total coverage.git diff --check— passed.The first full run on the final tree had one intermittent failure in the unchanged
OrganizationNotificationsTestgroup-order assertion (notifications.data.0.organization.handlemissing), with 5,491 passing tests. That entire file immediately passed on the same revision: 23 tests, 121 assertions. The test and notification creation/grouping code are unchanged from base; no unrelated fix is included.Live model probes used synthetic text, not production data:
Visual and mobile-device verification are not applicable: this changes backend source selection, privacy/invalidation, and model instructions, not layout, components, styles, or device interactions. No inspection media is included in this text-only PR. Hosted CI is separate from these local results.
Independent review
Independent read-only review: PASS, no unresolved correctness, regression, architecture, test, or privacy blockers.
246607a03c54ec62d5bb331c55ca07254f579fa13a1e588968b7503fc2a95b4388b0c5429116da92Limitations
Update to the generated summary below: the earlier reply-removal refresh claim is superseded. Published reply paraphrases are deliberately allowed to survive until the existing two-hour expiry; no reply-based invalidation is added.
Summary by CodeRabbit