@@ -979,6 +979,49 @@ describe("PullRequestSyncReactor", () => {
979979 ) ,
980980 ) ;
981981
982+ it . effect ( "stops reading a pull request a day after it closed, until a refresh asks" , ( ) =>
983+ Effect . scoped (
984+ Effect . gen ( function * ( ) {
985+ yield * TestClock . setTime ( Date . parse ( NOW ) ) ;
986+ const closed = ( closedAt : string | null ) => ( { state : "closed" as const , closedAt } ) ;
987+ const fixture = yield * makeHarness ( {
988+ snapshot : makeSnapshot ( [
989+ makeThread ( "closed" , {
990+ pullRequests : [
991+ makeLink ( 1 , closed ( "2026-08-20T00:00:00.000Z" ) ) ,
992+ makeLink ( 2 , closed ( "2026-08-26T00:00:00.000Z" ) ) ,
993+ makeLink ( 3 , closed ( "2026-08-28T11:00:00.000Z" ) ) ,
994+ makeLink ( 4 , closed ( null ) ) ,
995+ ] ,
996+ } ) ,
997+ ] ) ,
998+ summary : ( input ) =>
999+ Effect . succeed ( makeSummary ( input , { state : "closed" , closedAt : NOW } ) ) ,
1000+ } ) ;
1001+ const reads = Ref . get ( fixture . summaryCalls ) . pipe (
1002+ Effect . map ( ( calls ) => calls . map ( ( call ) => call . number ) . toSorted ( ) ) ,
1003+ ) ;
1004+
1005+ yield * Effect . gen ( function * ( ) {
1006+ const reactor = yield * startAndSweep ( fixture ) ;
1007+ // Closed within the day, or with no close time, keeps the fifteen-minute cadence.
1008+ assert . deepStrictEqual ( yield * reads , [ 3 , 4 ] ) ;
1009+ for ( let index = 0 ; index < 15 ; index += 1 ) yield * sweepAgain ( fixture , reactor ) ;
1010+ assert . deepStrictEqual ( yield * reads , [ 3 , 3 , 4 , 4 ] ) ;
1011+
1012+ yield * reactor . requestSync ( {
1013+ host : "github.com" ,
1014+ repository : "owner/repository" ,
1015+ number : 1 ,
1016+ } ) ;
1017+ yield * Queue . take ( fixture . snapshotReads ) ;
1018+ yield * reactor . drain ;
1019+ assert . deepStrictEqual ( yield * reads , [ 1 , 3 , 3 , 4 , 4 ] ) ;
1020+ } ) . pipe ( Effect . provide ( fixture . layer ) ) ;
1021+ } ) ,
1022+ ) ,
1023+ ) ;
1024+
9821025 it . effect ( "re-reads a merged pull request until the host supplies its merge time" , ( ) =>
9831026 Effect . scoped (
9841027 Effect . gen ( function * ( ) {
0 commit comments