feat: deliver monthly Featured lineups with search intelligence - #47
Conversation
Preserve weekly search intelligence, all 16 slots per catalog and pending editorial choices. Freeze complete reports and rendered parts while reusing the existing uncertain-send delivery owner. Refs CLAW-724.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. Reviewed September 16, 2026, 4:38 PM ET / 20:38 UTC. ClawSweeper reviewWhat this changesAdds sixteen-slot monthly Featured reports, bounded multipart Discord delivery, durable per-part receipts, and matching validation, tests, documentation, and proof-reader support. Merge readiness⛔ Blocked before merge - 3 items remain This remains useful work: current main rejects v4 reports, and the earlier merged lineup work covers only eight selections per catalog. One display defect and the real-behavior proof gate remain unresolved. Priority: P2 Review scores
Verification
How this fits togetherHermit receives authenticated search-intelligence reports from ClawHub and posts advisory Featured recommendations to a configured Discord review channel. ClawHub owns selection and ranking; Hermit validates, renders, and records delivery without publishing Featured selections. flowchart TD
A[ClawHub frozen report] --> B[Authentication and validation]
B --> C[Monthly report layout]
C --> D[Bounded message parts]
D --> E[Durable delivery receipts]
E --> F[Discord review channel]
F --> G[Replay and reconciliation]
G --> E
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Deliver complete advisory lineups with visible completeness caveats, preserved legacy receipts, and verified multipart delivery before enabling the v4 sender. Do we have a high-confidence way to reproduce the issue? Yes for the display defect: a valid v4 payload with either truncation flag set passes validation, but the monthly renderer never reads those flags. This is source-established; no runtime reproduction was executed. Is this the best way to solve the issue? The versioned receiver and shared delivery owner are a reasonable approach, but the new layout must retain completeness warnings before it is an acceptable replacement for earlier report formats. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 0f3b5f801e67. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: feat: deliver monthly Featured lineups with search intelligence This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Related: CLAW-724
What Problem This Solves
ClawHub's monthly Featured report has sixteen slots per catalog, which the existing eight-slot receiver rejects.
User Impact
The weekly digest shows every plugin and skill recommendation, pending editorial slot, rationale, monthly/final-seven-day install count and metadata freshness. Existing search totals, source counts, coverage, company opportunities, official gaps and movers remain separate from install ranking.
Deploy this receiver before enabling ClawHub's v4 sender. This PR does not send a digest or change Featured selections. Actual Discord delivery remains untested in this task; all transport proof used local fixtures.
Why This Change Was Made
V4 validates the complete monthly contract and renders bounded Carbon messages without dropping selected identities or pending reasons. Reports fitting one message stay together; longer reports use deterministic parts. The existing weekly key freezes the full payload and rendered-part hashes, and each part reuses the existing atomic claim, nonce and uncertain-send reconciliation owner. Overall success requires every part's receipt. Confirmed parts never repost; uncertain parts require reconciliation before delivery continues.
Frozen v1/v2/v3 validation, rendering and receipts remain unchanged. The existing proof script now follows multipart receipts. No new D1 table, configuration or dependency is introduced.
Runtime growth is +421 net lines for the v4 contract, sixteen-slot rendering and multipart receipt ownership; tests add 447 net lines, the proof tool 27, and docs 37. Reusing the existing message owner avoids a second retry/recovery implementation.
Evidence
99d7a44:bun run testpassed all 369 tests across 39 files (185,546 assertions). All 39 receiver tests also passed locally; the unchanged actual producer replay again retained all 32 IDs in three parts.bun run typecheckandbun run deploy:dry-run: passed.Review disposition
The ClawSweeper truncation finding is fixed. Four public-handler cases cover each flag independently and their combination: three failed before the fix, all four pass afterward. The catalog warning describes bounded adoption metadata inspection, not a capped monthly numeric census. The global warning describes omitted supporting evidence while preserving all proposed slots.
The requested live Discord send/readback proof is intentionally not performed under this task's explicit no-send instruction. Local HTTP, real Carbon serialization, SQLite-backed D1 and persistent native Wrangler D1 prove payload bounds, receipts, replay and recovery; Discord acceptance and visible rendering remain unverified. Receiver deployment will be verified read-only before enabling the v4 sender. This is an explicit proof limitation, not a claim that real Discord delivery passed.