DETAILED ACTION
This Action is a response to the RCE filed 8 April 2026. Claims 1, 4, 7-8, 15, 17 and 20 are amended; claim 19 is canceled; claim 21 is newly added. Claims 1-18 and 20-21 remain pending for examination.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 8 April 2026 has been entered.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. §§ 102 and 103 (or as subject to pre-AIA 35 U.S.C. §§ 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. § 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. § 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claims 1-4, 6-11 and 13-18 are rejected under 35 U.S.C. § 103 as being unpatentable over Ocariza, Jr. et al., U.S. 2019/0310931 A1 (“Ocariza”) in view of Ross, Joseph Ari, U.S. 11,403,157 B1 (“Ross”) and Prasad et al., U.S. 9,032,067 B2 (“Prasad”).
Regarding claim 1, Ocariza teaches: A method for curing defects in software applications (Ocariza, e.g., ¶17, “automatically determine performance regression causes …”), the method comprising:
receiving, from a first tracer executing on a web page application and configured to obtain telemetry data and to log tracing data for a first instance of (Ocariza, e.g., ¶22, “execution timelines are generated using the different versions of the application when interacting with a web application … system 102 performs an execution trace, which may record a series of function calls that form call trees … trees include function calls, such as asynchronous function calls … executed during a series of user interactions with the application …” See also, e.g., FIG. 3A, showing old execution timeline 300 which provides function call information associated with each call (event), amd ¶¶23-27, describing the collection of at least total response time (telemetry data). Further, see also that ¶22 describes that computer system 102 performs an execution trace to record series of function calls (i.e. a span interface obtaining telemetry data and logging tracing data comprising information regarding pluralities of spans));
generating, from the first tracing log, a first logical tree that comprises a first plurality of nodes, wherein each node comprises attributes of a respective span of the first plurality of spans, and wherein a first subset of the first plurality of nodes is arranged to represent a first chronological order of execution of events within the first instance of the web page application, and wherein a first additional node of the first plurality of nodes is outside of the first chronological order (Ocariza, e.g., FIG. 8A, showing a first logical tree comprising a first plurality of nodes arranged to represent a first chronological order of events within the first instance (old version), wherein one or more of the nodes may occur outside a particular chronological order);
receiving, from a second tracer configured to log tracing data for a second instance of the web page application, a second tracing log comprising information regarding a second plurality of spans, wherein each span of the second plurality of spans is associated with a corresponding event of the web page application (Ocariza, e.g., ¶22, “execution timelines are generated using the different versions of the application when interacting with a web application … system 102 performs an execution trace, which may record a series of function calls that form call trees … trees include function calls, such as asynchronous function calls … executed during a series of user interactions with the application …” See also, e.g., FIG. 3B, showing new execution timeline 304 which provides function call information associated with each call (event));
generating, from the second tracing log, a second logical tree that comprises a second plurality of nodes, wherein each node comprises attributes of a respective span of the second plurality of spans, and wherein a second subset of the second plurality of nodes is arranged to represent a second chronological order of execution of events within the second instance of the web page application, and wherein a second additional node of the second plurality of nodes is outside of the second chronological order (Ocariza, e.g., FIG. 8B, showing a second logical tree comprising a second plurality of nodes arranged to represent a second chronological order of events within the second instance (new version), wherein one or more of the nodes may occur outside a particular chronological order);
extracting, from nodes of the first logical tree and the nodes of the second logical tree, a set of spans, the extracting comprising:
identifying, (i) a correspondence between a first node in the first logical tree and a second node in the second logical tree, wherein the correspondence indicates that the first node and the second node are associated with a same type of span and (ii) a first difference between a first attribute of the first node and a second attribute of the second node (Ocariza, e.g., ¶52, “function findCriticalGraph assumes that the pair of nodes (rold, rnew) represents matching nodes … findMatchingNodes algorithm, which outputs an array of M node pairs, with each pair representing matching nodes between the children of node rold and the children of node rnew in line 4 where the response time difference is at least the minimum response time difference u …” See also, e.g., ¶¶53-54, distinguishing between a first scenario wherein a new function is present in vnew and second scenario wherein a node in vold and vnew match (are the same function). Examiner’s note: matching nodes are a correspondence between a first node in a first tree (old) and a second node in a second tree (new), i.e., the same function (see ¶45), representative of a same type of span, wherein the attribute is response time having a measurable difference. Applicant provides examples of same span type including being associated with element rendering or a user interaction; these are representative of certain function calls (i.e., a function called in response to a user clicking on a button). Ocariza describes examples of function calls (¶22) as those executed in response to user interactions with the application’s interface. That the function calls are of a same type is consistent with them being of a same span type as set forth in the claim and explained in the response);
identifying, (i) a plurality of common nodes between the first subset of the first plurality of nodes and the second subset of the second plurality of nodes, and (ii) a second difference between the first chronological order and the second chronological order (Ocariza, e.g., ¶39, “determining pairs of matching functions in the execution timelines … even considering some top-level functions may change in order or new functions may be introduced …” ¶56, “main matching algorithm used, which finds the longest common subsequence (LCS) … LCS preserves the order in which the functions are called even in cases where the same function is called in multiple, non-consecutive instances and considers the possibility of function calls being added and removed across versions …”);
extracting one or more spans based on the first difference between the first attribute of the first node and the second attribute of the second node and the second difference between the first chronological order and the second chronological order (Ocariza, e.g., ¶51, “timeline comparison processor 202 iterates through the timelines to generate critical path graphs … Each critical graph generated from each comparison is placed in the set of critical graphs C … critical graph follows the call path to the performance regression causes … call graph of functions needed to reach the performance regression causes is depicted in critical graph 900 …” Examiner’s note: the matching algorithms disclosed in the preceding limitations determines which nodes are extracted, wherein the nodes are consistent with and correspond with their respective spans, and wherein the node functions are called in different orders in the old and new telemetry arrays, as discussed above); and
generating a [] report (Ocariza, e.g., ¶51, “timeline comparison processor 202 outputs the critical path graphs and the root nodes of the critical path graphs.” See also, e.g., ¶66, “embodiments perform automated comparisons of execution timelines to determine performance regression causes …”).
Ocariza does not more particularly teach that the generated report of the set of spans is a textual report. However, Ross does teach: [wherein the report is a] textual report [of the set of spans] (Ross, e.g., FIG. 13 and 17:26-35, “results of a trace analysis … an identified trace 1302 has been determined to be correlated to a highest error rate … shows that ‘payment: /payment/execute’ is the most downstream endpoint that is contributing to the alert … display an identified infrastructure element 1304 that is likely to be causing the alert …” Examiner’s note: the methods disclosed in Ross pertain to comparing traces to identify a trace or subtrace that is the most likely cause of an error. The GUI of FIG. 13 represents a combination of graphical and textual description of the determined trace) for the purpose of providing informative visualizations and additional information regarding application performance issues and alerts (Ross, e.g., 16:50-17:45).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system and method for trace-based software performance regression analysis using execution timelines as taught by Ocariza to provide that the generated report of the set of spans is a textual report because the disclosure of Ross shows that it was known to those of ordinary skill in the pertinent art to improve a system and method for application endpoint performance regression analysis to provide that the generated report of the set of spans is a textual report for the purpose of providing informative visualizations and additional information regarding application performance issues and alerts (Ross, Id.).
Ocariza in view of Ross does not more particularly teach that the textual report provides a comparison of differences between the first logical tree from the first tracing log and the second logical tree from the second tracing log. However, Prasad does teach: [generating a textual report] providing a comparison of differences between the first logical tree from the first tracing log and the second logical tree from the second tracing log (Prasad, e.g., 7:27-39, “example method 400 for determining one or more differences … in an end-user experience of the event-driven application in a client-tier environment …” See also, e.g., 8:8-16, “if any edges or nodes of state graphs G1 and G2 were determined to not be isomorphic, the trace-level differences of the state graphs G1 and G2 are outputted … output may include a list of all the edges and the nodes that were determined to not be isomorphic …”) for the purpose of determining the equivalences and differences between instances of an event-driven application in a plurality of application tiers, and presenting information descriptive of the differences in the event any are identified (Prasad, e.g., 7:27-9:17).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system and method for trace-based software performance regression analysis using execution timelines as taught by Ocariza in view of Ross to provide that the textual report provides a comparison of differences between the first logical tree from the first tracing log and the second logical tree from the second tracing log because the disclosure of Prasad shows that it was known to those of ordinary skill in the pertinent art to improve a system and method for determining differences in event-driven applications utilizing graph structure analysis to provide that the textual report provides a comparison of differences between the first logical tree from the first tracing log and the second logical tree from the second tracing log for the purpose of determining the equivalences and differences between instances of an event-driven application in a plurality of application tiers, and presenting information descriptive of the differences in the event any are identified (Prasad, Id.).
Claims 8 and 15 are rejected for the reasons given in the rejection of claim 1 above. Examiner notes that with respect to claim 8, Ocariza further teaches: A system comprising: a non-transitory computer-readable medium storing computer-executable program instructions; and a processing device communicatively coupled to the non-transitory computer-readable medium for executing the computer-executable program instructions, wherein executing the computer-executable program instructions configures the processing device to perform operations (Ocariza, e.g., ¶68, “computer system 101 includes … processor 1001 coupled with bus 1005 … memory coupled to bus 1005 for storing information and instructions to be executed by processor 1001 …” See also, e.g., ¶72, “a non-transitory computer-readable storage medium for use by … instruction execution system, apparatus … contains instructions for controlling a computer system to perform a method described by the particular embodiments …”) comprising: [[[the method of claim 1]]]; and with respect to claim 15, Ocariza further teaches: A non-transitory computer-readable storage medium storing computer-executable program instructions, wherein when executed by a processing device, the computer-executable program instructions cause the processing device to perform operations (Ocariza, e.g., ¶72, “a non-transitory computer-readable storage medium for use by … instruction execution system, apparatus … contains instructions for controlling a computer system to perform a method described by the particular embodiments …”) comprising: [[[the method of claim 1]]].
Regarding claim 2, the rejection of claim 1 is incorporated, and Ocariza further teaches: identifying, from the extracted spans, a software defect in the second instance of the web page application (Ocariza, e.g., ¶38, “Identification of the function utf as the performance regression …”); and
responsive to identifying the software defect, correcting the software defect in the second instance of the web page application (Ocariza, e.g., ¶38, “… allow a user to search for the software commit that added the new function calls to utf in the source code, which would help the user who developed the change further localize the regression at the source code level and eventually come up with a fix to the regression …”).
Claims 9 and 16 are rejected for the additional reasons given in the rejection of claim 2 above.
Regarding claim 3, the rejection of claim 1 is incorporated, and Ocariza further teaches: wherein the attributes include one or more of: a type of error associated with the span, a timestamp, a duration of the span, a type of operation, a type of event, a parent span of the span, and a child span of the span (Ocariza, e.g., FIGS. 3A-3B, wherein each span includes at least a duration, a type of operation/event, and parent/child spans (if any)).
Claim 10 is rejected for the additional reasons given in the rejection of claim 3 above.
Regarding claim 4, the rejection of claim 1 is incorporated, and Ocariza further teaches: determining, from the identified spans, the first difference and the second difference to be greater than a predetermined threshold (Ocariza, e.g., ¶52, “function findCriticalGraph assumes that the pair of nodes (rold, rnew) represents matching nodes … findMatchingNodes algorithm, which outputs an array of M node pairs, with each pair representing matching nodes between the children of node rold and the children of node rnew in line 4 where the response time difference is at least the minimum response time difference u …” Examiner’s note: Ocariza also considers whether a node in the new timeline is not present in the old timeline, while a plurality of other nodes, including a largest common subsequence, are present in both timelines. The new node without the matching ancestor is determined as critical with an execution time greater than the minimum response time difference (see ¶29). That is, a plurality of nodes executes in a different order (old timeline lacks the new function) with a threshold difference in execution time represented by the changed order); and
receiving, from a third tracer configured to log tracing data for a third instance of the web page application, a third tracing log comprising information regarding a third plurality of spans, wherein each span of the third plurality of spans is associated with a corresponding event of the web page application (Ocariza, e.g., ¶31, “timeline comparison processor 202 receives the old timelines, new timelines, and a set of parameters. The set of old timelines [] are execution timelines from application v1 104-1. A set of new timelines [] are execution timelines from another version of the application …” Examiner’s note: at least one of the old and new timelines represents a third timeline from a first old timeline and a second new timeline).
Claim 11 and 18 are rejected for the additional reasons given in the rejections of claim 4 above.
Regarding claim 6, the rejection of claim 1 is incorporated, and Ross further teaches: wherein the textual report includes a comparison of the second logical tree and the second logical tree (Ross, e.g., FIG. 13 and 17:26-35, “results of a trace analysis … an identified trace 1302 has been determined to be correlated to a highest error rate … shows that ‘payment: /payment/execute’ is the most downstream endpoint that is contributing to the alert … display an identified infrastructure element 1304 that is likely to be causing the alert …” Examiner’s note: the methods disclosed in Ross pertain to comparing traces to identify a trace or subtrace that is the most likely cause of an error. The GUI of FIG. 13 represents a combination of graphical and textual description of the determined trace).
Claim 13 is rejected for the additional reasons given in the rejection of claim 6 above.
Regarding claim 7, the rejection of claim 1 is incorporated, and Ocariza further teaches: identifying an additional difference between an additional attribute of the first node and an additional attribute of the second node; and ignoring the additional difference based on attribute type (Ocariza, e.g., ¶32, “A critical graph represents a new timeline, but with nodes that are considered irrelevant to the performance regressions being filtered out …” See also, e.g., ¶41, “extraneous event handlers that may be triggered by the user while interacting with the application, such as in the case of the function hover …” See also, e.g., ¶42, “performance varies from execution to execution … comparison of an old timeline and a new timeline may show extraneous performance regressions … multiple pairs of timelines often need to be generated and compared …” See also, e.g., ¶48, “Nodes representing anonymous functions may be removed … often provide little valuable information to a user and, more importantly, the functions make the approach more susceptible to false positives since the approach might mistake two different anonymous functions to be the same …” Examiner’s note: anonymous functions will be filtered out (ignored) even if the differences thereof exceed the attribute difference threshold otherwise considered).
Claims 14 and 20 are rejected for the additional reasons given in the rejections of claim 7 above.
Claims 5, 12 and 17 are rejected under 35 U.S.C. § 103 as being unpatentable over Ocariza in view of Ross and Prasad, and in further view of Mola, Jordi, U.S. 2021/0216438 A1 (“Mola”).
Regarding claim 5, the rejection of claim 1 is incorporated, but Ocariza in view of Ross and Prasad does not more specifically teach that the second web page application instance is a simulation of the first web page application instance. However, Mola does teach: wherein the second instance of the web page application is a simulation of the first instance of the web page application (Mola, e.g., ¶55, “debugging component 109 leverages the emulation component 111 in order to emulate execution of code of … application(s) 112, based on execution state data obtained from at least one execution trace …”) for the purpose of determining trace differences among the outputs of live and emulated instances of application variations for robust testing and analysis (Mola, e.g., ¶¶55-60).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system and method for trace-based software performance regression analysis using execution timelines as taught by Ocariza in view of Ross and Prasad to provide that the second web page application instance is a simulation of the first web page application instance because the disclosure of Mola shows that it was known to those of ordinary skill in the pertinent art to improve a system and method for trace differential analysis to provide that the second web page application instance is a simulation of the first web page application instance for the purpose of determining trace differences among the outputs of live and emulated instances of application variations for robust testing and analysis (Mola, Id.).
Claim 12 is rejected for the additional reasons given in the rejection of claim 5 above.
Regarding claim 17, the rejection of claim 15 is incorporated, and Ocariza further teaches: wherein the attributes include one or more of: a type of error associated with the span, a timestamp, a duration of the span, a type of operation, a type of event, a parent span of the span, and a child span of the span (Ocariza, e.g., FIGS. 3A-3B, wherein each span includes at least a duration, a type of operation/event, and parent/child spans (if any)).
Ocariza in view of Ross and Prasad does not more particularly teach that the second instance of the web page application is a simulation of the first instance of the web page application. However, Mola does teach: wherein the second instance of the web page application is a simulation of the first instance of the web page application (Mola, e.g., ¶55, “debugging component 109 leverages the emulation component 111 in order to emulate execution of code of … application(s) 112, based on execution state data obtained from at least one execution trace …”) for the purpose of determining trace differences among the outputs of live and emulated instances of application variations for robust testing and analysis (Mola, e.g., ¶¶55-60).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system and method for trace-based software performance regression analysis using execution timelines as taught by Ocariza in view of Ross and Prasad to provide that the second web page application instance is a simulation of the first web page application instance because the disclosure of Mola shows that it was known to those of ordinary skill in the pertinent art to improve a system and method for trace differential analysis to provide that the second web page application instance is a simulation of the first web page application instance for the purpose of determining trace differences among the outputs of live and emulated instances of application variations for robust testing and analysis (Mola, Id.).
Claim 21 is rejected under 35 U.S.C. § 103 as being unpatentable over Ocariza in view of Ross and Prasad, and in further view of Sfar, Safouane, U.S. 2024/0311282 A1 (“Sfar”).
Regarding claim 21, the rejection of claim 1 is incorporated, but Ocariza in view of Ross and Prasad does not more particularly teach that in response to a difference between the first and the second logical tree exceeding a predetermined threshold, generating a script to be executed by a test execution engine to confirm that a developer device experiences errors experienced by a user on a user device. However, Sfar does teach: wherein in response to a difference between the first logical tree from the first tracing log and the second logical tree from the second tracing log exceeding a predetermined threshold, generating a script to be executed by a test execution engine to confirm that a developer device experiences errors experienced by a user on a user device (Sfar, e.g., ¶8, “ascertaining an error log about an incorrect execution of the software … specifies an execution context of the incorrect execution, preferably … at least one called function and/or input values … and/or an output of the software at the time … and/or as a result of the incorrect execution …” See also, e.g., ¶10, “carrying out an evaluation of the test logs on the basis of the error log, wherein the evaluation preferably takes place on the basis of a similarity of the execution context of the incorrect execution …” See also, e.g., ¶13, “method … generates, on the basis of the evaluation carried out, a test case that is suitable for reproducing the incorrect execution … a new test case that is suitable for reproducing the incorrect execution in contrast to the existing test cases can be generated …” Examiner’s note: in response to a determination that an incorrect execution (as defined by execution context based on the error log) of the software is insufficiently similar (i.e., greater than a threshold different) from previous executions as represented by the error logs and execution contexts of previous executions (caused by other test cases), a new test case for reproducing the error is generated) for the purpose of efficiently adapting a test suite to account for new execution errors and underlying code changes (Sfar, e.g., ¶¶7-29).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the system and method for trace-based software performance regression analysis using execution timelines as taught by Ocariza in view of Ross and Prasad to provide that in response to a difference between the first and the second logical tree exceeding a predetermined threshold, generating a script to be executed by a test execution engine to confirm that a developer device experiences errors experienced by a user on a user device because the disclosure of Sfar shows that it was known to those of ordinary skill in the pertinent art to improve a system and method for test log event sequence difference identification and test case generation to provide that in response to a difference between the first and the second logical tree exceeding a predetermined threshold, generating a script to be executed by a test execution engine to confirm that a developer device experiences errors experienced by a user on a user device for the purpose of efficiently adapting a test suite to account for new execution errors and underlying code changes (Sfar, Id.).
Response to Arguments
In the Remarks, Applicant Argues: The cited art fails to teach or suggest at least “generating a textual report providing a comparison of differences between the first logical tree from the first tracing log and the second logical tree from the second tracing log, wherein errors are confirmed based at least in part on the textual report” as recited in claim 1 (Resp. at 11-12). Thus, claim 1, similar independent claims 8 and 15, and all claims depending therefrom, are in condition for allowance (id. at 12-13).
Examiner’s Response: In view of the amendments, Examiner newly cites to Prasad and Sfar, and maintains the rejections under the new grounds set forth in full above.
Conclusion
Examiner has identified particular references contained in the prior art of record within the body of this action for the convenience of Applicant. Although the citations made are representative of the teachings in the art and are applied to the specific limitations within the enumerated claims, the teaching of the cited art as a whole is not limited to the cited passages. Other passages and figures may apply. Applicant, in preparing the response, should consider fully the entire reference as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art and/or disclosed by Examiner.
Examiner respectfully requests that, in response to this Office Action, support be shown for language added to any original claims on amendment and any new claims. That is, indicate support for newly added claim language by specifically pointing to page(s) and line number(s) in the specification and/or drawing figure(s). This will assist Examiner in prosecuting the application.
When responding to this Office Action, Applicant is advised to clearly point out the patentable novelty which he or she thinks the claims present, in view of the state of the art disclosed by the references cited or the objections made. He or she must also show how the amendments avoid such references or objections. See 37 C.F.R. 1.111(c).
Examiner interviews are available via telephone and video conferencing using a USPTO-supplied web-based collaboration tool. Applicant is encouraged to submit an Automated Interview Request (AIR) which may be done via https://www.uspto.gov/patent/uspto-automated-interview-request-air-form, or may contact Examiner directly via the methods below.
Any inquiry concerning this communication or earlier communication from Examiner should be directed to Andrew M. Lyons, whose telephone number is (571) 270-3529, and whose fax number is (571) 270-4529. The examiner can normally be reached Monday to Friday from 10:00 AM to 6:00 PM ET. If attempts to reach Examiner by telephone are unsuccessful, Examiner’s supervisor, Wei Mui, can be reached at (571) 272-3708. Information regarding the status of an application may be obtained from the Patent Center system. For more information about the Patent Center system, see https://www.uspto.gov/patents/apply/patent-center. If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call (800) 786-9199 (in USA or Canada) or (571) 272-1000.
/Andrew M. Lyons/Primary Examiner, Art Unit 2191