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 .
Claims 1, 7, 8, 14, and 15 have been amended. No claims have been added or canceled. Claims 1-20 are presented for examination, of which claims 1, 8, and 15 are independent.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more.
Claims 1, 8 and 15 as drafted, recite a process that, under its broadest reasonable interpretation, covers steps that could reasonably be performed in the mind, including with the aid of pen and paper, but for the recitation of generic computer components. That is, the limitations “identifying that the software change operation corresponds to a software change to make a pipeline change to a configuration of the deployment pipeline; determining from the simulating that one or more functionalities with respect to the use case are adversely affected by the software change; mapping the software change to the one or more functionalities that are determined ... to be adversely affected by the software change, the mapping comprising structuring data to associate the software change with the one or more functionalities and the use case adversely affected” as drafted, recite the abstract idea of mental processes. These limitations encompass a human mind carrying out these functions through observation, evaluation, judgment, and/or opinion, or even with the aid of pen and paper. Thus, these limitations recite, and fall within, the Mental Processes grouping of abstract ideas.
This judicial exception is not integrated into a practical application. The claims recite the following additional elements: “a system comprising: one or more processing devices; and memory communicatively coupled with and readable by the one or more processing devices and having stored therein processor-readable instructions,” “one or more non-transitory, machine-readable media having machine-readable instructions thereon which, when executed by one or more processing devices,” and “simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.” These additional elements are recited at a high level of generality and are merely instructions to implement the abstract idea on a computer, or merely use a generic computer or generic computer components as a tool to perform the abstract idea. Creating a copy of a pipeline configuration from its specifications and executing a test application against that copy is recited only by its intended result, without any particular technical manner of creating the copy or executing the application. See MPEP § 2106.05(f). The claims further recite the additional elements “processing a software change operation within a deployment pipeline” and “based at least in part on the determining and the mapping, blocking deployment of the software change to production.” The processing limitation amounts to mere data gathering, and the blocking limitation amounts to nominal post-solution activity that merely withholds a deployment according to the outcome of the abstract determining and mapping, without reciting any particular technical mechanism for doing so. Each of these is insignificant extra-solution activity. See MPEP § 2106.05(g). Accordingly, the additional elements do not impose any meaningful limits on practicing the abstract idea and fail to integrate the abstract idea into a practical application.
The claims do not include additional elements that are sufficient to amount to significantly more than the judicial exception. As discussed above with respect to integration into a practical application, the processing devices, memory, non-transitory machine-readable media, and the simulating using a copy of the deployment pipeline and a dummy application are generic computer components and functions used as tools to perform the abstract idea (MPEP § 2106.05(f)), and the processing and blocking limitations are insignificant extra-solution activity (MPEP § 2106.05(g)); the courts have recognized receiving data and acting on the result of an analysis in a merely conditional manner as well-understood, routine, and conventional (MPEP § 2106.05(d)). Considered individually and as an ordered combination, the additional elements do not provide an inventive concept. Thus, the claims are not patent eligible.
Claims 2-5, 9-12 and 16-19 further define the “software change operation” as part of the processing and identifying functions of the claims from which they depend, and are therefore also considered to recite a mental process that can reasonably be carried out through observation, evaluation, judgment, and/or opinion, or even with the aid of pen and paper. These claims do not recite any additional elements that integrate the abstract idea into a practical application or amount to significantly more.
Claims 6, 13 and 20 further define the “simulating” and “mapping” functions of the claims from which they depend, and are therefore also considered to recite a mental process. The recited performing a test of a plurality of tests on the deployment pipeline for each use case is the use of a generic computing tool to perform the abstract idea (MPEP § 2106.05(f)) and does not amount to significantly more.
Claims 7 and 14 recite the additional element “exposing, via a user interface, details of the one or more functionalities and the use case adversely affected by the software change,” which does nothing more than add insignificant extra-solution activity to the judicial exception, such as outputting and displaying the result of the abstract idea, and the recited user interface is a generic computer component. See MPEP §§ 2106.05(f) and (g). The courts have identified displaying the output of an abstract idea as well-understood, routine, conventional activity. See MPEP § 2106.05(d). Accordingly, the additional element cannot provide an inventive concept, and these claims are not patent eligible.
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
Claims 1-20 are rejected on the ground of nonstatutory double patenting as being unpatentable over claim 1 of U.S. Patent No. 12,174,732. Although the claims at issue are not identical, they are not patentably distinct from each other because the referenced patent and the instant application are claiming common subject matter. For illustration, the rejection of claim 1 is provided as follows:
Current Application 18/947,454
U.S. Patent No. 12,174,732
1. A system comprising: one or more processing devices; and memory communicatively coupled with and readable by the one or more processing devices and having stored therein processor-readable instructions which, when executed by the one or more processing devices, cause the system to perform operations comprising:
processing a software change operation within a deployment pipeline;
identifying that the software change operation corresponds to a software change to make a pipeline change to a configuration of the deployment pipeline;
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change; determining from the simulating that one or more functionalities with respect to the use case are adversely affected by the software change; mapping the software change to the one or more functionalities that are determined, based on results of the simulating using the dummy application, to be adversely affected by the software change, the mapping comprising structuring data to associate the software change with the one or more functionalities and the use case adversely affected; and based at least in part on the determining and the mapping, blocking deployment of the software change to production.
1. A system comprising: one or more processing devices; and memory communicatively coupled with and readable by the one or more processing devices and having stored therein processor-readable instructions which, when executed by the one or more processing devices, cause the one or more processing devices to perform operations comprising:
processing a software change operation within a deployment pipeline for testing and deploying a software change to a production computing service;
identifying that the software change operation corresponds to a software change with the deployment pipeline, where the software change is identified as being configured to make a pipeline change to a configuration of the deployment pipeline itself;
responsive to the identifying, invoking a regression suite configured to run a plurality of test applications on the deployment pipeline to test the deployment pipeline with respect to the software change, and running the plurality of test applications with the software change, where the running the plurality of test applications comprises:
simulating pipeline runs with a plurality of use cases, where the simulating the pipeline runs comprises: for each simulation of a pipeline run with respect to a use case of the plurality of use cases: identifying functionalities of the use case; and determining whether one or more of the functionalities of the use case is adversely affected by the software change; where one or more of the simulations comprise using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the deployment pipeline to test the software change; determining from the running of at least one test application of the plurality of test applications that one or more of the functionalities of one or more of the use cases is adversely affected by the software change; mapping the software change to the one or more of the functionalities and the one or more of the use cases adversely affected by the software change; and exposing the mapping via a user interface.
Claim 1 of the instant application differs from claim 1 of U.S. Patent No. 12,174,732 in that the instant claim recites that the simulating is based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline with the dummy application executed with respect to that copy, that the mapping comprises structuring data to associate the software change with the affected functionalities and use case, and that deployment of the software change to production is blocked based at least in part on the determining and the mapping. The instant claim omits the invoking of a regression suite and the exposing of the mapping via a user interface recited in the patented claim and is broader in those respects. The additional limitations do not render the instant claims patentably distinct. Creating a copy of the deployment pipeline in accordance with a declarative specification and testing a pipeline change on that copy would have been obvious in view of Wiegley (US 2022/0236976 A1), which teaches hydrating a pipeline template for each environment, including development and test environments (Para [0158] and Para [0103]), and testing the latest pipeline version in a development environment while the stable version continues to be deployed in production (Para [0198]); and the structuring and blocking limitations would have been obvious in view of Frank (US 2017/0255460 A1), which teaches composing the mapping report in a structured interchange format (Para [0155]) and blocking a deployment pipeline based on the rule violations identified by the pipeline analysis (Para [0141] and Para [0038]). Accordingly, the instant claims are not patentably distinct from claim 1 of U.S. Patent No. 12,174,732 and are rejected on the ground of nonstatutory double patenting.
Claim Rejections - 35 USC § 103
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-20 are rejected under 35 U.S.C. 103 as being unpatentable over Frank (US 2017/0255460 A1) in view of Mirantes (US 2021/0232388 A1), and further in view of Wiegley (US 2022/0236976 A1).
Regarding Claim 1, Frank (US 2017/0255460 A1) teaches
A system comprising one or more processing devices and memory communicatively coupled with and readable by the one or more processing devices and having stored therein processor-readable instructions which, when executed by the one or more processing devices, cause the system to perform operations comprising:
processing a software change operation within a deployment pipeline (Para [0054], “the meta-pipeline 210 includes a version of an LPT package 212 and a version of an LPT instance 214, which inherits from the LPT package 212. The meta-pipeline also includes a build stage 216 and a test stage 218.”). Examiner Comments: Frank teaches a meta-pipeline that processes a change, namely a software change operation, committed to the live pipeline template source code within a continuous deployment pipeline infrastructure, such that the LPT package change constitutes a software change operation being processed within the deployment pipeline.
identifying that the software change operation corresponds to a software change to make a pipeline change to a configuration of the deployment pipeline (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank teaches identifying that the software change operation, namely the LPT package version change, corresponds to a software change configured to make a pipeline change to the configuration of the deployment pipeline itself, because the LPT package directly specifies and configures the deployment pipeline stages, services, and monitors.
determining from the simulating that one or more functionalities with respect to the use case are adversely affected by the software change (Para [0131], “the pipeline analysis 1236 may evaluate the application definition 1234 against a set of rules 1238. The rules 1238 may be used to capture the best practices or configuration requirements for a deployment pipeline. That is, the rules 1238 may be used to ensure that deployment pipeline 1229 follows the best practices established by an enterprise for deployment pipelines.”). Examiner Comments: Frank teaches determining, from evaluation of the pipeline against rules 1238 during testing, which pipeline functionalities, such as a missing rollback monitor or a missing gamma stage test, are adversely affected by the software change, where the rules represent the expected functionalities of the deployment pipeline that must be preserved.
mapping the software change to the one or more functionalities that are determined, based on results of the simulating using the dummy application, to be adversely affected by the software change, the mapping comprising structuring data to associate the software change with the one or more functionalities and the use case adversely affected (Para [0161], “the pipeline analysis engine may generate a report specifying any rule violations identified at step 1620 or differences between the current configuration of the deployment pipeline and a reference configuration generated for the deployment pipeline.”; Para [0155], “the report 1508 is also composed using an interchange format (e.g., JSON), allowing it to be consumed by a publishing engine 1507.”). Examiner Comments: Frank teaches generating an analysis report that associates each identified rule violation, namely a functionality adversely affected by the pipeline software change, with the specific pipeline configuration discrepancy caused by that software change, and composes that report using a structured interchange format such as JSON, which reads on mapping the software change to the adversely affected functionalities and structuring data to associate the software change with those functionalities and the use case adversely affected.
based at least in part on the determining and the mapping, blocking deployment of the software change to production (Para [0141], “the approval workflow could block a deployment pipeline based on a customizable severity level of any rule violations identified by the pipeline analysis 1236.”; Para [0038], “In some cases, the LPT engine block a deployment pipeline from being activated until it satisfies one or more of the rules.”). Examiner Comments: Frank teaches that deployment of the pipeline is blocked based on the rule violations identified by the pipeline analysis, namely the determining, and recorded in the analysis report that associates each violation with the changed pipeline configuration, namely the mapping, which reads on blocking deployment of the software change to production based at least in part on the determining and the mapping, because the blocked pipeline configuration is itself the changed artifact that would otherwise be deployed to production.
Frank did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Mirantes (US 2021/0232388 A1) teaches
simulating a pipeline run with a use case ... using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the ... deployment pipeline to test the software change (Para [0006], “a system obtains a configuration file having a set of attribute values that is descriptive of an application... processes the configuration file using the gate mapping file to determine a set of gates to be invoked for progressing the application in the pipeline, and invokes the set of gates causing the corresponding set of software routines to be executed for progressing the application.”; Para [0021], “System 100 may determine the gates to be invoked for the application based on a configuration file associated with the application. The configuration file may include properties of the application as attributes and attribute values... the configuration file may include attributes such as process type (‘A1’), destination (‘A2’), release type (‘A3’), geographical region (‘A4’) where the application is to be deployed... programming language of the application (‘A5’).”). Examiner Comments: Mirantes teaches an application, namely a dummy application, whose variables and associated configurations are stored in a configuration file, namely a template, where the configuration file stores attribute values descriptive of the application, and the application is executed through the pipeline by invoking the corresponding gate mapping in order to test the pipeline for a particular combination of attribute values constituting a use case.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Frank and Mirantes did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application ... that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Wiegley (US 2022/0236976 A1) teaches
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change (Para [0158], “a partially hydrated pipeline template is generated from a pipeline template by substituting templating expressions representing placeholders for values with actual values, wherein at least some of the actual values are obtained from metadata describing datacenter entities of a datacenter... For example, if there are multiple environments created in a datacenter, for example, development, testing, canary, and production environments, the pipeline template may be partially hydrated for each environment based on variable values for that specific environment.”; Para [0103], “The test environment pipeline 820 comprises a test master pipeline that feeds into datacenter pipelines D21, D22, . . . , depending on the number of datacenters specified as having test environment in the declarative specification of the datacenters.”; Para [0198], “The service owners may change the version pointer for specific environments, for example, to test the latest version in a development environment while the stable version continues to be deployed in the production environment.”). Examiner Comments: Wiegley teaches generating, from the same pipeline template and the declarative specification of the datacenters, a separate environment-specific pipeline such as a development or test environment pipeline and testing the latest pipeline template version on that environment-specific pipeline while the stable version remains in production, which reads on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, such that the dummy application of Mirantes is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
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 combination of Frank and Mirantes with Wiegley’s teaching of generating an environment-specific copy of a deployment pipeline from pipeline templates and a declarative specification, and testing the latest pipeline version in a development environment while the stable version continues to be deployed in production, in order to execute the dummy application of Mirantes against a copy of the deployment pipeline rather than against the production pipeline itself, thereby evaluating a pipeline change without disrupting production deployments, which would yield the predictable result of allowing pipeline customizations to be rolled out in a staggered way and rolled back if a failure is encountered (Wiegley, Para [0176]).
Regarding Claim 2, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Frank further teaches
where the software change operation corresponds to an instantiation of a branch of the deployment pipeline (Para [0051], “client system 105 includes an integrated development environment (IDE) 107, which may be used to generate a service-specific instance of a live pipeline template 109, i.e., to generate LPT instance 103 which inherits the source code of the live pipeline template 109.”). Examiner Comments: instantiating an LPT instance, a service-specific version of the live pipeline template, corresponds to an instantiation of a branch of the deployment pipeline, because the LPT instance represents a branch of the pipeline template source code from which pipeline changes are made and tested prior to merging.
Regarding Claim 3, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Frank further teaches
where the software change operation corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline (Para [0053], “Proposed changes to a deployment pipeline may be peer reviewed before being committed in the source code of live pipeline template 109 or LPT instance 103 and deployed to the pipeline in manner controlled by the meta-pipeline.”). Examiner Comments: the peer review and committing of changes from the LPT instance (branch) into the main live pipeline template (the deployment pipeline) via the meta-pipeline corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline, because the version control system manages this process of integrating branch changes into the main pipeline.
Regarding Claim 4, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Frank further teaches
where the software change operation corresponds to communicating code corresponding to the software change to a software repository system (Para [0103], “the LPT engine may monitor for changes to the source code of a live pipeline template being committed to a deploy-version branch within a version control system.”). Examiner Comments: Frank teaches committing the updated live pipeline template source code, namely code corresponding to the software change, to a deploy-version branch within a version control system, namely a software repository system, which reads on communicating code corresponding to the software change to a software repository system under the broadest reasonable interpretation.
Regarding Claim 5, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Frank further teaches
where the software change comprises a change to a deployment pipeline template (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank explicitly teaches that the software change is a change to the LPT package, namely the live pipeline template, which directly reads on a change to a deployment pipeline template, because the LPT package is the source code template that defines and configures the deployment pipeline.
Regarding Claim 6, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Mirantes further teaches
where the simulating the pipeline run comprises performing a test of a plurality of tests on the deployment pipeline for each use case of a plurality of use cases, and where each test of the plurality of tests is mapped to a particular use case of the plurality of use cases (Para [0025], “Each mapping in gate mapping file 204 indicates a set of gates to be invoked for a set of attribute values. In other words, each mapping indicates a set of actions to be performed for progressing an application having a set of attribute values.”). Examiner Comments: under the broadest reasonable interpretation, each distinct set of attribute values in Mirantes constitutes a use case, each gate represents a test, and the gate mapping file maps each gate (test) to a particular set of attribute values (use case), thus teaching performing a plurality of tests on the deployment pipeline for each use case with each test mapped to a particular use case of the plurality of use cases.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Regarding Claim 7, Frank, Mirantes and Wiegley teach
the system as recited in claim 1.
Frank further teaches
the operations further comprising exposing, via a user interface, details of the one or more functionalities and the use case adversely affected by the software change (Para [0143] and FIG. 14, “A risk report panel 1410 shows a set of results generated by the evaluation component 1305 in assessing the actual configuration of the deployment pipeline identified in panel 1405.”). Examiner Comments: Frank’s interface 1400 (FIG. 14) exposes, via a graphical user interface, details of the specific pipeline functionalities that are adversely affected, such as a missing rollback monitor or a missing gamma stage, per specific computing region (use case), which reads on exposing details of the one or more functionalities and the use case adversely affected by the software change.
Regarding Claim 8, Frank (US 2017/0255460 A1) teaches
A method comprising:
processing a software change operation within a deployment pipeline (Para [0054], “the meta-pipeline 210 includes a version of an LPT package 212 and a version of an LPT instance 214, which inherits from the LPT package 212. The meta-pipeline also includes a build stage 216 and a test stage 218.”). Examiner Comments: Frank teaches a meta-pipeline that processes a change, namely a software change operation, committed to the live pipeline template source code within a continuous deployment pipeline infrastructure, such that the LPT package change constitutes a software change operation being processed within the deployment pipeline.
identifying that the software change operation corresponds to a software change to make a pipeline change to a configuration of the deployment pipeline (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank teaches identifying that the software change operation, namely the LPT package version change, corresponds to a software change configured to make a pipeline change to the configuration of the deployment pipeline itself, because the LPT package directly specifies and configures the deployment pipeline stages, services, and monitors.
determining from the simulating that one or more functionalities with respect to the use case are adversely affected by the software change (Para [0131], “the pipeline analysis 1236 may evaluate the application definition 1234 against a set of rules 1238. The rules 1238 may be used to capture the best practices or configuration requirements for a deployment pipeline. That is, the rules 1238 may be used to ensure that deployment pipeline 1229 follows the best practices established by an enterprise for deployment pipelines.”). Examiner Comments: Frank teaches determining, from evaluation of the pipeline against rules 1238 during testing, which pipeline functionalities, such as a missing rollback monitor or a missing gamma stage test, are adversely affected by the software change, where the rules represent the expected functionalities of the deployment pipeline that must be preserved.
mapping the software change to the one or more functionalities that are determined, based on results of the simulating using the dummy application, to be adversely affected by the software change, the mapping comprising structuring data to associate the software change with the one or more functionalities and the use case adversely affected (Para [0161], “the pipeline analysis engine may generate a report specifying any rule violations identified at step 1620 or differences between the current configuration of the deployment pipeline and a reference configuration generated for the deployment pipeline.”; Para [0155], “the report 1508 is also composed using an interchange format (e.g., JSON), allowing it to be consumed by a publishing engine 1507.”). Examiner Comments: Frank teaches generating an analysis report that associates each identified rule violation, namely a functionality adversely affected by the pipeline software change, with the specific pipeline configuration discrepancy caused by that software change, and composes that report using a structured interchange format such as JSON, which reads on mapping the software change to the adversely affected functionalities and structuring data to associate the software change with those functionalities and the use case adversely affected.
based at least in part on the determining and the mapping, blocking deployment of the software change to production (Para [0141], “the approval workflow could block a deployment pipeline based on a customizable severity level of any rule violations identified by the pipeline analysis 1236.”; Para [0038], “In some cases, the LPT engine block a deployment pipeline from being activated until it satisfies one or more of the rules.”). Examiner Comments: Frank teaches that deployment of the pipeline is blocked based on the rule violations identified by the pipeline analysis, namely the determining, and recorded in the analysis report that associates each violation with the changed pipeline configuration, namely the mapping, which reads on blocking deployment of the software change to production based at least in part on the determining and the mapping, because the blocked pipeline configuration is itself the changed artifact that would otherwise be deployed to production.
Frank did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Mirantes (US 2021/0232388 A1) teaches
simulating a pipeline run with a use case ... using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the ... deployment pipeline to test the software change (Para [0006], “a system obtains a configuration file having a set of attribute values that is descriptive of an application... processes the configuration file using the gate mapping file to determine a set of gates to be invoked for progressing the application in the pipeline, and invokes the set of gates causing the corresponding set of software routines to be executed for progressing the application.”; Para [0021], “System 100 may determine the gates to be invoked for the application based on a configuration file associated with the application. The configuration file may include properties of the application as attributes and attribute values... the configuration file may include attributes such as process type (‘A1’), destination (‘A2’), release type (‘A3’), geographical region (‘A4’) where the application is to be deployed... programming language of the application (‘A5’).”). Examiner Comments: Mirantes teaches an application, namely a dummy application, whose variables and associated configurations are stored in a configuration file, namely a template, where the configuration file stores attribute values descriptive of the application, and the application is executed through the pipeline by invoking the corresponding gate mapping in order to test the pipeline for a particular combination of attribute values constituting a use case.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Frank and Mirantes did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application ... that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Wiegley (US 2022/0236976 A1) teaches
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change (Para [0158], “a partially hydrated pipeline template is generated from a pipeline template by substituting templating expressions representing placeholders for values with actual values, wherein at least some of the actual values are obtained from metadata describing datacenter entities of a datacenter... For example, if there are multiple environments created in a datacenter, for example, development, testing, canary, and production environments, the pipeline template may be partially hydrated for each environment based on variable values for that specific environment.”; Para [0103], “The test environment pipeline 820 comprises a test master pipeline that feeds into datacenter pipelines D21, D22, . . . , depending on the number of datacenters specified as having test environment in the declarative specification of the datacenters.”; Para [0198], “The service owners may change the version pointer for specific environments, for example, to test the latest version in a development environment while the stable version continues to be deployed in the production environment.”). Examiner Comments: Wiegley teaches generating, from the same pipeline template and the declarative specification of the datacenters, a separate environment-specific pipeline such as a development or test environment pipeline and testing the latest pipeline template version on that environment-specific pipeline while the stable version remains in production, which reads on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, such that the dummy application of Mirantes is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
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 combination of Frank and Mirantes with Wiegley’s teaching of generating an environment-specific copy of a deployment pipeline from pipeline templates and a declarative specification, and testing the latest pipeline version in a development environment while the stable version continues to be deployed in production, in order to execute the dummy application of Mirantes against a copy of the deployment pipeline rather than against the production pipeline itself, thereby evaluating a pipeline change without disrupting production deployments, which would yield the predictable result of allowing pipeline customizations to be rolled out in a staggered way and rolled back if a failure is encountered (Wiegley, Para [0176]).
Regarding Claim 9, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Frank further teaches
where the software change operation corresponds to an instantiation of a branch of the deployment pipeline (Para [0051], “client system 105 includes an integrated development environment (IDE) 107, which may be used to generate a service-specific instance of a live pipeline template 109, i.e., to generate LPT instance 103 which inherits the source code of the live pipeline template 109.”). Examiner Comments: instantiating an LPT instance, a service-specific version of the live pipeline template, corresponds to an instantiation of a branch of the deployment pipeline, because the LPT instance represents a branch of the pipeline template source code from which pipeline changes are made and tested prior to merging.
Regarding Claim 10, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Frank further teaches
where the software change operation corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline (Para [0053], “Proposed changes to a deployment pipeline may be peer reviewed before being committed in the source code of live pipeline template 109 or LPT instance 103 and deployed to the pipeline in manner controlled by the meta-pipeline.”). Examiner Comments: the peer review and committing of changes from the LPT instance (branch) into the main live pipeline template (the deployment pipeline) via the meta-pipeline corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline, because the version control system manages this process of integrating branch changes into the main pipeline.
Regarding Claim 11, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Frank further teaches
where the software change operation corresponds to communicating code corresponding to the software change to a software repository system (Para [0103], “the LPT engine may monitor for changes to the source code of a live pipeline template being committed to a deploy-version branch within a version control system.”). Examiner Comments: Frank teaches committing the updated live pipeline template source code, namely code corresponding to the software change, to a deploy-version branch within a version control system, namely a software repository system, which reads on communicating code corresponding to the software change to a software repository system under the broadest reasonable interpretation.
Regarding Claim 12, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Frank further teaches
where the software change comprises a change to a deployment pipeline template (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank explicitly teaches that the software change is a change to the LPT package, namely the live pipeline template, which directly reads on a change to a deployment pipeline template, because the LPT package is the source code template that defines and configures the deployment pipeline.
Regarding Claim 13, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Mirantes further teaches
where the simulating the pipeline run comprises performing a test of a plurality of tests on the deployment pipeline for each use case of a plurality of use cases, and where each test of the plurality of tests is mapped to a particular use case of the plurality of use cases (Para [0025], “Each mapping in gate mapping file 204 indicates a set of gates to be invoked for a set of attribute values. In other words, each mapping indicates a set of actions to be performed for progressing an application having a set of attribute values.”). Examiner Comments: under the broadest reasonable interpretation, each distinct set of attribute values in Mirantes constitutes a use case, each gate represents a test, and the gate mapping file maps each gate (test) to a particular set of attribute values (use case), thus teaching performing a plurality of tests on the deployment pipeline for each use case with each test mapped to a particular use case of the plurality of use cases.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Regarding Claim 14, Frank, Mirantes and Wiegley teach
the method as recited in claim 8.
Frank further teaches
further comprising exposing, via a user interface, details of the one or more functionalities and the use case adversely affected by the software change (Para [0143] and FIG. 14, “A risk report panel 1410 shows a set of results generated by the evaluation component 1305 in assessing the actual configuration of the deployment pipeline identified in panel 1405.”). Examiner Comments: Frank’s interface 1400 (FIG. 14) exposes, via a graphical user interface, details of the specific pipeline functionalities that are adversely affected, such as a missing rollback monitor or a missing gamma stage, per specific computing region (use case), which reads on exposing details of the one or more functionalities and the use case adversely affected by the software change.
Regarding Claim 15, Frank (US 2017/0255460 A1) teaches
One or more non-transitory, machine-readable media having machine-readable instructions thereon which, when executed by one or more processing devices, cause a system to perform operations comprising:
processing a software change operation within a deployment pipeline (Para [0054], “the meta-pipeline 210 includes a version of an LPT package 212 and a version of an LPT instance 214, which inherits from the LPT package 212. The meta-pipeline also includes a build stage 216 and a test stage 218.”). Examiner Comments: Frank teaches a meta-pipeline that processes a change, namely a software change operation, committed to the live pipeline template source code within a continuous deployment pipeline infrastructure, such that the LPT package change constitutes a software change operation being processed within the deployment pipeline.
identifying that the software change operation corresponds to a software change to make a pipeline change to a configuration of the deployment pipeline (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank teaches identifying that the software change operation, namely the LPT package version change, corresponds to a software change configured to make a pipeline change to the configuration of the deployment pipeline itself, because the LPT package directly specifies and configures the deployment pipeline stages, services, and monitors.
determining from the simulating that one or more functionalities with respect to the use case are adversely affected by the software change (Para [0131], “the pipeline analysis 1236 may evaluate the application definition 1234 against a set of rules 1238. The rules 1238 may be used to capture the best practices or configuration requirements for a deployment pipeline. That is, the rules 1238 may be used to ensure that deployment pipeline 1229 follows the best practices established by an enterprise for deployment pipelines.”). Examiner Comments: Frank teaches determining, from evaluation of the pipeline against rules 1238 during testing, which pipeline functionalities, such as a missing rollback monitor or a missing gamma stage test, are adversely affected by the software change, where the rules represent the expected functionalities of the deployment pipeline that must be preserved.
mapping the software change to the one or more functionalities that are determined, based on results of the simulating using the dummy application, to be adversely affected by the software change, the mapping comprising structuring data to associate the software change with the one or more functionalities and the use case adversely affected (Para [0161], “the pipeline analysis engine may generate a report specifying any rule violations identified at step 1620 or differences between the current configuration of the deployment pipeline and a reference configuration generated for the deployment pipeline.”; Para [0155], “the report 1508 is also composed using an interchange format (e.g., JSON), allowing it to be consumed by a publishing engine 1507.”). Examiner Comments: Frank teaches generating an analysis report that associates each identified rule violation, namely a functionality adversely affected by the pipeline software change, with the specific pipeline configuration discrepancy caused by that software change, and composes that report using a structured interchange format such as JSON, which reads on mapping the software change to the adversely affected functionalities and structuring data to associate the software change with those functionalities and the use case adversely affected.
based at least in part on the determining and the mapping, blocking deployment of the software change to production (Para [0141], “the approval workflow could block a deployment pipeline based on a customizable severity level of any rule violations identified by the pipeline analysis 1236.”; Para [0038], “In some cases, the LPT engine block a deployment pipeline from being activated until it satisfies one or more of the rules.”). Examiner Comments: Frank teaches that deployment of the pipeline is blocked based on the rule violations identified by the pipeline analysis, namely the determining, and recorded in the analysis report that associates each violation with the changed pipeline configuration, namely the mapping, which reads on blocking deployment of the software change to production based at least in part on the determining and the mapping, because the blocked pipeline configuration is itself the changed artifact that would otherwise be deployed to production.
Frank did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Mirantes (US 2021/0232388 A1) teaches
simulating a pipeline run with a use case ... using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the ... deployment pipeline to test the software change (Para [0006], “a system obtains a configuration file having a set of attribute values that is descriptive of an application... processes the configuration file using the gate mapping file to determine a set of gates to be invoked for progressing the application in the pipeline, and invokes the set of gates causing the corresponding set of software routines to be executed for progressing the application.”; Para [0021], “System 100 may determine the gates to be invoked for the application based on a configuration file associated with the application. The configuration file may include properties of the application as attributes and attribute values... the configuration file may include attributes such as process type (‘A1’), destination (‘A2’), release type (‘A3’), geographical region (‘A4’) where the application is to be deployed... programming language of the application (‘A5’).”). Examiner Comments: Mirantes teaches an application, namely a dummy application, whose variables and associated configurations are stored in a configuration file, namely a template, where the configuration file stores attribute values descriptive of the application, and the application is executed through the pipeline by invoking the corresponding gate mapping in order to test the pipeline for a particular combination of attribute values constituting a use case.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Frank and Mirantes did not specifically teach
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application ... that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
However, Wiegley (US 2022/0236976 A1) teaches
simulating a pipeline run with a use case based at least in part on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, and using a dummy application, with its variables and associated configurations stored in a template, that is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change (Para [0158], “a partially hydrated pipeline template is generated from a pipeline template by substituting templating expressions representing placeholders for values with actual values, wherein at least some of the actual values are obtained from metadata describing datacenter entities of a datacenter... For example, if there are multiple environments created in a datacenter, for example, development, testing, canary, and production environments, the pipeline template may be partially hydrated for each environment based on variable values for that specific environment.”; Para [0103], “The test environment pipeline 820 comprises a test master pipeline that feeds into datacenter pipelines D21, D22, . . . , depending on the number of datacenters specified as having test environment in the declarative specification of the datacenters.”; Para [0198], “The service owners may change the version pointer for specific environments, for example, to test the latest version in a development environment while the stable version continues to be deployed in the production environment.”). Examiner Comments: Wiegley teaches generating, from the same pipeline template and the declarative specification of the datacenters, a separate environment-specific pipeline such as a development or test environment pipeline and testing the latest pipeline template version on that environment-specific pipeline while the stable version remains in production, which reads on creating a copy of at least a portion of the deployment pipeline in accordance with pipeline state specifications corresponding to the deployment pipeline, such that the dummy application of Mirantes is executed with respect to the copy of at least the portion of the deployment pipeline to test the software change.
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 combination of Frank and Mirantes with Wiegley’s teaching of generating an environment-specific copy of a deployment pipeline from pipeline templates and a declarative specification, and testing the latest pipeline version in a development environment while the stable version continues to be deployed in production, in order to execute the dummy application of Mirantes against a copy of the deployment pipeline rather than against the production pipeline itself, thereby evaluating a pipeline change without disrupting production deployments, which would yield the predictable result of allowing pipeline customizations to be rolled out in a staggered way and rolled back if a failure is encountered (Wiegley, Para [0176]).
Regarding Claim 16, Frank, Mirantes and Wiegley teach
the one or more non-transitory, machine-readable media as recited in claim 15.
Frank further teaches
where the software change operation corresponds to an instantiation of a branch of the deployment pipeline (Para [0051], “client system 105 includes an integrated development environment (IDE) 107, which may be used to generate a service-specific instance of a live pipeline template 109, i.e., to generate LPT instance 103 which inherits the source code of the live pipeline template 109.”). Examiner Comments: instantiating an LPT instance, a service-specific version of the live pipeline template, corresponds to an instantiation of a branch of the deployment pipeline, because the LPT instance represents a branch of the pipeline template source code from which pipeline changes are made and tested prior to merging.
Regarding Claim 17, Frank, Mirantes and Wiegley teach
the one or more non-transitory, machine-readable media as recited in claim 15.
Frank further teaches
where the software change operation corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline (Para [0053], “Proposed changes to a deployment pipeline may be peer reviewed before being committed in the source code of live pipeline template 109 or LPT instance 103 and deployed to the pipeline in manner controlled by the meta-pipeline.”). Examiner Comments: the peer review and committing of changes from the LPT instance (branch) into the main live pipeline template (the deployment pipeline) via the meta-pipeline corresponds to a merge request to merge a branch of the deployment pipeline into the deployment pipeline, because the version control system manages this process of integrating branch changes into the main pipeline.
Regarding Claim 18, Frank, Mirantes and Wiegley teach
the one or more non-transitory, machine-readable media as recited in claim 15.
Frank further teaches
where the software change operation corresponds to communicating code corresponding to the software change to a software repository system (Para [0103], “the LPT engine may monitor for changes to the source code of a live pipeline template being committed to a deploy-version branch within a version control system.”). Examiner Comments: Frank teaches committing the updated live pipeline template source code, namely code corresponding to the software change, to a deploy-version branch within a version control system, namely a software repository system, which reads on communicating code corresponding to the software change to a software repository system under the broadest reasonable interpretation.
Regarding Claim 19, Frank, Mirantes and Wiegley teach
the one or more non-transitory, machine-readable media as recited in claim 15.
Frank further teaches
where the software change comprises a change to a deployment pipeline template (Para [0103], “the method 800 begins at step 805, where the meta-pipeline (or component of the LPT engine) detects a triggering event changing the record version of an LPT package associated with a continuous deployment pipeline.”). Examiner Comments: Frank explicitly teaches that the software change is a change to the LPT package, namely the live pipeline template, which directly reads on a change to a deployment pipeline template, because the LPT package is the source code template that defines and configures the deployment pipeline.
Regarding Claim 20, Frank, Mirantes and Wiegley teach
the one or more non-transitory, machine-readable media as recited in claim 15.
Mirantes further teaches
where the simulating the pipeline run comprises performing a test of a plurality of tests on the deployment pipeline for each use case of a plurality of use cases, and where each test of the plurality of tests is mapped to a particular use case of the plurality of use cases (Para [0025], “Each mapping in gate mapping file 204 indicates a set of gates to be invoked for a set of attribute values. In other words, each mapping indicates a set of actions to be performed for progressing an application having a set of attribute values.”). Examiner Comments: under the broadest reasonable interpretation, each distinct set of attribute values in Mirantes constitutes a use case, each gate represents a test, and the gate mapping file maps each gate (test) to a particular set of attribute values (use case), thus teaching performing a plurality of tests on the deployment pipeline for each use case with each test mapped to a particular use case of the plurality of use cases.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Frank’s teaching of meta-pipeline-based pipeline change detection and analysis with Mirantes’s teaching of template-based application configuration in order to provide a regression testing system that uses a template-stored dummy application configuration to simulate pipeline runs, thereby systematically verifying that pipeline changes do not break existing use case functionalities, which would yield the predictable result of a more organized and scalable pipeline regression testing system, since using a configuration file (template) to drive different application type simulations (use cases) within the pipeline testing framework was a known technique in CI/CD pipeline development.
Response to Arguments
Applicant’s arguments with respect to claims 1-20 have been considered but are moot because the arguments do not apply to the previous cited sections of the references used in the previous office action. The current office action is now citing additional references to address the newly added claimed limitations.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to AMIR SOLTANZADEH whose telephone number is (571)272-3451. The examiner can normally be reached M-F, 9am - 5pm ET.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Wei Mui can be reached at (571) 272-3708. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/AMIR SOLTANZADEH/Examiner, Art Unit 2191 /WEI Y MUI/Supervisory Patent Examiner, Art Unit 2191