Prosecution Insights
Last updated: July 17, 2026
Application No. 19/223,260

EFFICIENT CREATION OF BUCKET-LEVEL SNAPSHOTS AND EFFICIENT SNAPSHOT PROTECTION DETERMINATION

Non-Final OA §102§103§112
Filed
May 30, 2025
Priority
May 31, 2024 — provisional 63/654,388
Examiner
WILLIS, AMANDA LYNN
Art Unit
2156
Tech Center
2100 — Computer Architecture & Software
Assignee
Netapp Inc.
OA Round
1 (Non-Final)
36%
Grant Probability
At Risk
1-2
OA Rounds
3y 7m
Est. Remaining
62%
With Interview

Examiner Intelligence

Grants only 36% of cases
36%
Career Allowance Rate
127 granted / 354 resolved
-19.1% vs TC avg
Strong +26% interview lift
Without
With
+25.9%
Interview Lift
resolved cases with interview
Typical timeline
4y 8m
Avg Prosecution
15 currently pending
Career history
381
Total Applications
across all art units

Statute-Specific Performance

§101
1.6%
-38.4% vs TC avg
§103
86.1%
+46.1% vs TC avg
§102
6.1%
-33.9% vs TC avg
§112
1.0%
-39.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 354 resolved cases

Office Action

§102 §103 §112
DETAILED ACTION Priority Applicant’s claim for the benefit to 63/654388 filed May 31, 2024 is acknowledged. 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 . Drawings The drawings are objected to because the grey shading in some of the boxes makes it difficult to read the text within those boxes. All text within the figures must be legible. It is suggested that the shading be removed, and the boxes be indicated as distinct using a different method (e.g. thicker lines, cross hash patterns, different shapes, double outlines, etc.) or the text be modified to make it more legible (e.g. making the text larger, making the text bold, etc.). The following figures contain elements with grey shading rendering the text difficult to read: Figure 9, element 911 and 912, Figure 10A, 1013, Figure 10B, 1011, 1012, 1013, and 1014. Corrected drawing sheets in compliance with 37 CFR 1.121(d) are required in reply to the Office action to avoid abandonment of the application. Any amended replacement drawing sheet should include all of the figures appearing on the immediate prior version of the sheet, even if only one figure is being amended. The figure or figure number of an amended drawing should not be labeled as “amended.” If a drawing figure is to be canceled, the appropriate figure must be removed from the replacement sheet, and where necessary, the remaining figures must be renumbered and appropriate changes made to the brief description of the several views of the drawings for consistency. Additional replacement sheets may be necessary to show the renumbering of the remaining figures. Each drawing sheet submitted after the filing date of an application must be labeled in the top margin as either “Replacement Sheet” or “New Sheet” pursuant to 37 CFR 1.121(d). If the changes are not accepted by the examiner, the applicant will be notified and informed of any required corrective action in the next Office action. The objection to the drawings will not be held in abeyance. Claim Interpretation The following is a quotation of 35 U.S.C. 112(f): (f) Element in Claim for a Combination. – An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof. The following is a quotation of pre-AIA 35 U.S.C. 112, sixth paragraph: An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof. The claims in this application are given their broadest reasonable interpretation using the plain meaning of the claim language in light of the specification as it would be understood by one of ordinary skill in the art. The broadest reasonable interpretation of a claim element (also commonly referred to as a claim limitation) is limited by the description in the specification when 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is invoked. As explained in MPEP § 2181, subsection I, claim limitations that meet the following three-prong test will be interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph: (A) the claim limitation uses the term “means” or “step” or a term used as a substitute for “means” that is a generic placeholder (also called a nonce term or a non-structural term having no specific structural meaning) for performing the claimed function; (B) the term “means” or “step” or the generic placeholder is modified by functional language, typically, but not always linked by the transition word “for” (e.g., “means for”) or another linking word or phrase, such as “configured to” or “so that”; and (C) the term “means” or “step” or the generic placeholder is not modified by sufficient structure, material, or acts for performing the claimed function. Use of the word “means” (or “step”) in a claim with functional language creates a rebuttable presumption that the claim limitation is to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites sufficient structure, material, or acts to entirely perform the recited function. Absence of the word “means” (or “step”) in a claim creates a rebuttable presumption that the claim limitation is not to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is not interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites function without reciting sufficient structure, material or acts to entirely perform the recited function. Claim limitations in this application that use the word “means” (or “step”) are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action. Conversely, claim limitations in this application that do not use the word “means” (or “step”) are not being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action. This application includes one or more claim limitations that do not use the word “means,” but are nonetheless being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, because the claim limitation(s) uses a generic placeholder that is coupled with functional language without reciting sufficient structure to perform the recited function and the generic placeholder is not preceded by a structural modifier. Such claim limitation(s) is/are: “one or more processing resources” in claims 12 and 26. Because this/these claim limitation(s) is/are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, it/they is/are being interpreted to cover the corresponding structure described in the specification as performing the claimed function, and equivalents thereof. If applicant does not intend to have this/these limitation(s) interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, applicant may: (1) amend the claim limitation(s) to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph (e.g., by reciting sufficient structure to perform the claimed function); or (2) present a sufficient showing that the claim limitation(s) recite(s) sufficient structure to perform the claimed function so as to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. Claim Rejections - 35 USC § 112 The following is a quotation of 35 U.S.C. 112(b): (b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention. The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph: The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention. Claims 12-15 and 26-30 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention. Claim limitation “one or more processing resources” invokes 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. However, the written description fails to disclose the corresponding structure, material, or acts for performing the entire claimed function and to clearly link the structure, material, or acts to the function. It is suggested that the claims be amended to recite “one or more processors” so as to not invoke 112f/6th. Therefore, the claim is indefinite and is rejected under 35 U.S.C. 112(b) or pre-AIA 35 U.S.C. 112, second paragraph. Applicant may: (a) Amend the claim so that the claim limitation will no longer be interpreted as a limitation under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph; (b) Amend the written description of the specification such that it expressly recites what structure, material, or acts perform the entire claimed function, without introducing any new matter (35 U.S.C. 132(a)); or (c) Amend the written description of the specification such that it clearly links the structure, material, or acts disclosed therein to the function recited in the claim, without introducing any new matter (35 U.S.C. 132(a)). If applicant is of the opinion that the written description of the specification already implicitly or inherently discloses the corresponding structure, material, or acts and clearly links them to the function so that one of ordinary skill in the art would recognize what structure, material, or acts perform the claimed function, applicant should clarify the record by either: (a) Amending the written description of the specification such that it expressly recites the corresponding structure, material, or acts for performing the claimed function and clearly links or associates the structure, material, or acts to the claimed function, without introducing any new matter (35 U.S.C. 132(a)); or (b) Stating on the record what the corresponding structure, material, or acts, which are implicitly or inherently set forth in the written description of the specification, perform the claimed function. For more information, see 37 CFR 1.75(d) and MPEP §§ 608.01(o) and 2181. Claim Rejections - 35 USC § 102 The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action: A person shall be entitled to a patent unless – (a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention. Claims 1, 2, 4-7, 9-13, 15-30 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Demoor [2020/0409566]. With regard to claim 1 Demoor taches A method comprising: maintaining, by a storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102,”), a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions (Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); creating, by the storage system as the data store, e.g. key data store 102 (Demoor, ¶42, ¶29), a snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of the bucket as the group, e.g. bucket (Demoor, ¶33) by adding a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78) including a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”) to a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N); and after creation of the snapshot as creating the new entry in the set of object key entries (Demoor, ¶78), protecting (Demoor, ¶104; ¶105 “protect against”), by the storage system as the data store, e.g. key data store 102 (Demoor, ¶42, ¶29), those of the one or more object versions (Demoor, ¶41) of respective objects as the objects to which the operation impacts (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of the plurality of objects as the objects in the group (Demoor, ¶33) existing at a specific point in time (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “For example, the previously described write operation on object A at A_S0_ W may be followed by a second write from a different client at 30 ms”) indicated by the snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35). With regard to claims Demoor further teaches 2, 7, and 13 wherein the snapshot comprises a manual snapshot as the user updating the document and saving a new version (Demoor, ¶57 “For example, a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) in which the snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35) is specified by a requestor as determining the timestamp (Demoor, ¶76 “Responsive to receiving the storage instruction from storage service 322, key data store controller 320 computes an inverse timestamp using the key-related data, generates the key using the inverse timestamp, the object identifier, etc. (e.g., a prefix, an operation type, etc.),”) when the user clicking to save the updated version (Demoor, ¶57) of the snapshot (Demoor, ¶57). With regard to claims 4, 10 and 15 Demoor further teaches wherein said protecting comprises one or more of: prohibiting, by the storage system, deletion or modification as not immediately modifying the parameter (Demoor, ¶102 “Storage service 322 may immediately render the data object invisible to the user, but log operations 332 may not immediately modify related parameter calculations.”) of object index nodes (inodes) as metadata entry in the log entry, indexed by timestamp and other information (Demoor, ¶49 “the information is maintained in log entry metadata even when the log entry is migrated or replicated”; ¶84 “object data to be stored in the object storage 240 (e.g., comprising a new object, modification to the object, object metadata describing the object, updates, etc.”; ¶89 “indexed by timestamp values and/or key values including timestamp values or inverse timestamp values.”; Please note the term “inode” has been read in light of Paragraph [0045] as being a file data structure that stores metadata for data containers) and associated blocks as shards (Demoor, ¶28 “In some embodiments, the key data store may be sharded or distributed and the technology may include shard identifiers in the key data store to correct for timing differences in storage management processes across shards.”) for those of the one or more object versions (Demoor, ¶41) of the respective objects as the objects to which the operation impacts (Demoor, ¶104, ¶105); prohibiting, by the storage system, deletion or modification as not immediately modifying the parameter (Demoor, ¶102 “Storage service 322 may immediately render the data object invisible to the user, but log operations 332 may not immediately modify related parameter calculations.”) of system metadata (Demoor, ¶49 “Original shard identifier 178 and original shard timestamp 180 may enable an accurate record of where and when the log entry originated that is maintained as the log entry is managed across sharded logs, such that the information is maintained in log entry metadata even when the log entry is migrated or replicated.”; ¶84) from object inodes as metadata entry in the log entry, indexed by timestamp and other information (Demoor, ¶49; ¶84; ¶89) for those of the one or more object versions (Demoor, ¶41) of the respective objects (Demoor, ¶104; ¶105); and prohibiting, by the storage system, deletion or modification as not immediately modifying the parameter (Demoor, ¶102 “Storage service 322 may immediately render the data object invisible to the user, but log operations 332 may not immediately modify related parameter calculations.”) of index node (inode) labels as the delete key data entry remains (Demoor, ¶104 “The end result may be total storage capacity of OB and only the delete key data entries remaining in the key database.”) of object inodes as metadata entry in the log entry, indexed by timestamp and other information (Demoor, ¶49; ¶84; ¶89) for those of the one or more object versions (Demoor, ¶41) of the respective objects (Demoor, ¶104; ¶105). With regard to claims 5 and 11 Demoor further teaches wherein a given object of the plurality of objects having a deletion timestamp set as the time 41 of the delete operations (Demoor, ¶104 “For example, two users may issue delete operations for data object A at times 40 and 41.”) is considered a hidden object as invisible for the user (Demoor, ¶104 “For example, two users may issue delete operations for data object A at times 40 and 41. As described above, the initial write would be logged at A_S0 W and the first delete would be logged at A_60_K. The second delete would be logged as: A_59 K; from: None.<0B>; to:<deleteOP>. Storage service 322 rendering the data object invisible for users and marking object A for garbage collection is not impacted by multiple instances.”) and wherein the method further comprises excluding as the entry from:None.<0B> for the second delete operation (Demoor, ¶104 “The second delete would be logged as: A_59 K; from: None.<0B>; to:<deleteOP>.”) from said protecting hidden objects as the second entry does not impact the garbage collection operation (Demoor, ¶104 “Storage service 322 rendering the data object invisible for users and marking object A for garbage collection is not impacted by multiple instances.”) in which the respective deletion timestamp as the inverted timestamp for the second delete is logged at A_59_K tied to time 41 (Demoor, ¶104 “For example, two users may issue delete operations for data object A at times 40 and 41. As described above, the initial write would be logged at A_S0 Wand the first delete would be logged at A_60_K. The second delete would be logged as: A_59 K; from: None.<0B>; to:<deleteOP>. Storage service 322 rendering the data object invisible for users and marking object A for garbage collection is not impacted by multiple instances.”) is earlier as 59 is ordered earlier than 60 (Demoor, ¶35) than the snapshot timestamp as the timestamp 41 for the first delete operation is logged as A_60_K (Demoor, ¶104 “For example, two users may issue delete operations for data object A at times 40 and 41. As described above, the initial write would be logged at A_S0 Wand the first delete would be logged at A_60_K.). With regard to claim 6 Demoor teaches A non-transitory machine readable medium storing instructions, which when executed by one or more processing resources of a storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102,”), cause the storage system to: Maintain a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions (Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); create a snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of the bucket as the group, e.g. bucket (Demoor, ¶33) by adding a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78) including a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”) to a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N); and after creation of the snapshot as creating the new entry in the set of object key entries (Demoor, ¶78), protecting (Demoor, ¶104; ¶105 “protect against”) those of the one or more object versions (Demoor, ¶41) of respective objects as the objects to which the operation impacts (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of the plurality of objects as the objects in the group (Demoor, ¶33) existing at a specific point in time (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “For example, the previously described write operation on object A at A_S0_ W may be followed by a second write from a different client at 30 ms”) indicated by the snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35). With regard to claim 9 Demoor further teaches wherein the snapshot comprises a scheduled (Demoor, ¶113 “schedules various processes”; ¶114 “may include process scheduler 352”; ¶115) snapshot (Demoor, ¶41) that is automatically created by the storage system in accordance with a predefined or configurable schedule (Demoor, ¶115 “process scheduler 352 may include active scheduling of log post-processing and manage schedules, elapsed times, trigger conditions, and/or priority queues for one or more post-processing storage management processes”). With regard to claim 12 Demoor further teaches A storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102,”) comprising: one or more processing resources (Demoor, ¶160 “processor(s)); and instructions that when executed by the one or more processing resources (Demoor, ¶160 “The processor(s) 302 may execute software instructions by performing various input/output, logical, and/or mathematical operations”) cause the storage system to: Maintain a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions (Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); create a snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of the bucket as the group, e.g. bucket (Demoor, ¶33) by adding a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78) including a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”) to a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N); and after creation of the snapshot as creating the new entry in the set of object key entries (Demoor, ¶78), protecting (Demoor, ¶104; ¶105 “protect against”) those of the one or more object versions (Demoor, ¶41) of respective objects as the objects to which the operation impacts (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of the plurality of objects as the objects in the group (Demoor, ¶33) existing at a specific point in time (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “For example, the previously described write operation on object A at A_S0_ W may be followed by a second write from a different client at 30 ms”) indicated by the snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35). With regard to claim 16 Demoor further teaches A method comprising: maintaining, by a storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102,”), a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions(Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); maintaining, by the storage system as the data store, e.g. key data store 102 (Demoor, ¶42, ¶29), a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) within a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N) for each snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of a plurality of snapshots of the bucket as the group, e.g. bucket (Demoor, ¶33), wherein the snapshot entry includes a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”); and after receiving, by the storage system, a request that would result in deletion (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of a particular version as data object A (Id, ¶41) of the one or more object versions (Demoor, ¶41) of a given object of the plurality of objects as the objects in the group (Demoor, ¶33), prior to deleting the particular version (Demoor, ¶152 “For example, garbage collection may be a dependent process that should allow one or more other prerequisite processes, such as a replication process, to complete”), determining whether as determining if Dependent condition is met (Figure 7, 710) the particular version is protected by one or more snapshots of the plurality of snapshots (Demoor, ¶104 “The foregoing process may protect against mishandling of multiple delete operations”; ¶105 “In some embodiments, the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users”) by comparing (Figure 7, 708; ¶154 “At block 708, the computer system may compare the original timestamp value to a last known progress value for the prerequisite process. For example, on a prior iteration through method 700 for a prior log entry, a progress value for the prerequisite process may have been queried and stored”) one or more time indicators of the particular version as original timestamp values (Id) to the respective snapshot time indicators as last known progress value (Id) of the one or more snapshot entries for the one or more snapshots (Demoor, ¶78). With regard to claims 17, 22, and 27 Demoor further teaches permitting, by the storage system, deletion of the particular version to proceed as performing garbage collection once the dependent process is complete (Demoor, ¶152 “For example, garbage collection may be a dependent process that should allow one or more other prerequisite processes, such as a replication process, to complete”) based on a determination that the particular version is not protected (Demoor, ¶155 “If the next log entry is still before the stored progress value, the condition is met and successful verification may be returned at block 712.”). With regard to claims 18, 23, and 28 Demoor further teaches marking the particular version as hidden externally but retaining the particular version internally (Demoor, ¶102 “Storage service 322 may immediately render the data object invisible to the user, but log operations 332”; ¶104 “Storage service 322 rendering the data object invisible for users and marking object A for garbage collection is not impacted by multiple instances.”) based on a determination that the particular version is protected (Demoor, ¶104 “The foregoing process may protect against mishandling of multiple delete operations”; ¶152 “For example, garbage collection may be a dependent process that should allow one or more other prerequisite processes, such as a replication process, to complete.”). With regard to claims 19, 24, and 29 Demoor further teaches wherein the particular version is marked as hidden by setting a deletion timestamp of the particular version as the <deleteOP> tag (Demoor, ¶104 “As described above, the initial write would be logged at A_S0 Wand the first delete would be logged at A_60_K. The second delete would be logged as: A_59 K; from: None.<0B>; to:<deleteOP>. Storage service 322 rendering the data object invisible for users and marking object A for garbage collection is not impacted by multiple instances.”). With regard to claims 20, 25 and 30 Demoor further teaches wherein the snapshot ID comprises a snapshot name as the prefix 122, which may be a domain identifier, bucket identifier, client identifier or any combination thereof (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”), wherein the snapshot time indicator comprises a snapshot timestamp as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”), and wherein the snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N) is dual-indexed by snapshot names and snapshot timestamps (Demoor, ¶90 “progress through operation log 310 may be indexed by timestamp values and/or key values including timestamp values or inverse timestamp values.”; Figure 1B). With regard to claim 21 Demoor teaches A non-transitory machine readable medium storing instructions(Demoor, ¶160 “The processor(s) 302 may execute software instructions by performing various input/output, logical, and/or mathematical operations”), which when executed by one or more processing resources of a storage system, cause the storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102,”) to: maintain a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions(Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); maintain a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) within a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N) for each snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of a plurality of snapshots of the bucket as the group, e.g. bucket (Demoor, ¶33), wherein the snapshot entry includes a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”); and after receiving a request that would result in deletion (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of a particular version as data object A (Id, ¶41) of the one or more object versions (Demoor, ¶41) of a given object of the plurality of objects as the objects in the group (Demoor, ¶33), prior to deleting the particular version (Demoor, ¶152 “For example, garbage collection may be a dependent process that should allow one or more other prerequisite processes, such as a replication process, to complete”), determine whether as determining if Dependent condition is met (Figure 7, 710) the particular version is protected by one or more snapshots of the plurality of snapshots (Demoor, ¶104 “The foregoing process may protect against mishandling of multiple delete operations”; ¶105 “In some embodiments, the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users”) by comparing (Figure 7, 708; ¶154 “At block 708, the computer system may compare the original timestamp value to a last known progress value for the prerequisite process. For example, on a prior iteration through method 700 for a prior log entry, a progress value for the prerequisite process may have been queried and stored”) one or more time indicators of the particular version as original timestamp values (Id) to the respective snapshot time indicators as last known progress value (Id) of the one or more snapshot entries for the one or more snapshots (Demoor, ¶78). With regard to claim 26 Demoor teaches A storage system as the data store, e.g. key data store 102 (Demoor, ¶42, “Log entries 140 may be stored as a key entry in a key data store as described with regard to FIGS. lA-lC.”; ¶29 “key data store 102”) comprising: one or more processing resources(Demoor, ¶160 “processor(s)”); and instructions that when executed by the one or more processing resources(Demoor, ¶160 “The processor(s) 302 may execute software instructions by performing various input/output, logical, and/or mathematical operations”) cause the storage system to: maintain a bucket as the group, e.g. bucket with specific ID (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) containing a plurality of objects as the clients object that are grouped together (Id), wherein each of the plurality of objects has one or more object versions(Demoor, ¶41 “Versioning of an object includes the tracking and preservation of more than one version of the object as the object changes over time, and allows for the archival of the different versions of the object as they occur over time ( e.g., due to modifications made over time to the object), retrieval of a prior version of the object, and/or recovery from unintended overwrites and/or deletions made to the object.”); maintain a snapshot entry as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) within a snapshot metafile as the ordered set of object entries, e.g. the log set of entries (Demoor, ¶29 “The subsets 106-1 through 106-N comprise the ordered set of object key entries 104”; ¶31 “In some embodiments, key entries 106-1, 106-N may include a log set of entries that define a log that may be traversed to determine the state of one or more data objects and their properties and/or determine one or more data storage parameters.”; Figure 1A, see 104 comprised of S1, 106-1, SN and 1060N) for each snapshot as creating the new entry in the set of object key entries (Demoor, ¶78 “the new entry is situated first for that object (relative to other existing entries) in the ordered set of object key entries since it is the most recent based on the inverse timestamp…. This advantageously allows for scalable and flexible versioning of a data object”; the user saving an updated version (Demoor, ¶57 “a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N,”) of a plurality of snapshots of the bucket as the group, e.g. bucket (Demoor, ¶33), wherein the snapshot entry includes a snapshot identifier (ID) as the prefix 122, which is the bucket identifier (Demoor, ¶33 “The prefix 122 may comprise an identifier for identifying a group of object key entries from the ordered set of object key entries that are logically related. For example, the prefix may include a domain identifier, a bucket identifier, a client identifier, or any suitable combination thereof. In this way, a given client's object keys can be grouped together”) and a snapshot time indicator as suffix 126, which may include the inverse timestamp (Demoor, ¶35 “The suffix 126 may comprise a ticket value for ordering different object keys associated with a particular object. The ticket value (also simply called ticket in some embodiments) may be an inverse timestamp.”); and after receiving a request that would result in deletion (Demoor, ¶104 “two users may issue delete operations for data object A at times 40 and 41.”; ¶105 “the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users.”) of a particular version as data object A (Id, ¶41) of the one or more object versions (Demoor, ¶41) of a given object of the plurality of objects as the objects in the group (Demoor, ¶33), prior to deleting the particular version (Demoor, ¶152 “For example, garbage collection may be a dependent process that should allow one or more other prerequisite processes, such as a replication process, to complete”), determine whether as determining if Dependent condition is met (Figure 7, 710) the particular version is protected by one or more snapshots of the plurality of snapshots (Demoor, ¶104 “The foregoing process may protect against mishandling of multiple delete operations”; ¶105 “In some embodiments, the foregoing process may also protect against multiple and conflicting write operations, such as write operations for the same object received from two different users”) by comparing (Figure 7, 708; ¶154 “At block 708, the computer system may compare the original timestamp value to a last known progress value for the prerequisite process. For example, on a prior iteration through method 700 for a prior log entry, a progress value for the prerequisite process may have been queried and stored”) one or more time indicators of the particular version as original timestamp values (Id) to the respective snapshot time indicators as last known progress value (Id) of the one or more snapshot entries for the one or more snapshots (Demoor, ¶78). 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. Claims 3, 5, and 14 are rejected under 35 U.S.C. 103 as being unpatentable over Demoor in view of Arur [2020/0382378]. With regard to claims 3, 5 and 14 Demoor further teaches wherein the snapshot time indicator comprises a timestamp as suffix 126, which may include the inverse timestamp (Demoor, ¶35) and wherein the manual snapshot as the user updating the document and saving a new version (Demoor, ¶57 “For example, a user 204 may update a document using a word processing application and may save the updated version to the server system 220-N, ”) comprises a [[ as suffix 126, which may include the inverse timestamp (Demoor, ¶35) is [[ as the operational timestamp (Demoor, ¶7 “The operation timestamp may be included in the instruction data or may be determined by key data store controller 320 ( e.g., using a clock of the local system, issuing a call to the operating system, etc.).”) of the storage system as the local system (Id). Demoor does not explicitly teach where the snapshot is a retroactive snapshot in which the timestamp is earlier than a current system time. Arur teaches wherein the manual snapshot comprises a retroactive snapshot in which the timestamp is earlier than a current system time (¶33 “in another example, the second snapshot may also be a retroactive snapshot of the past state of the network fabric. That is, rather than generating a snapshot representing the current state of the network fabric, the second snapshot can represent the fabric state ten seconds after the event completed (which may be in the past relative to the current time).”). It would have been obvious to one of ordinary skill to which said subject matter pertains at the time the invention was filed to have used the stored event logs taught by Demoor to generate retroactive snapshots as taught by Aurur as it yields the predictable results of being able to detect events occurring with in the network, which may assist in reboots due to unexpected crashes (Aurur, ¶3). Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to AMANDA WILLIS whose telephone number is (571)270-7691. The examiner can normally be reached Monday-Friday 8am-2pm. 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, Ajay Bhatia can be reached at 571-272-3906. 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. /AMANDA L WILLIS/ Primary Examiner, Art Unit 2156
Read full office action

Prosecution Timeline

May 30, 2025
Application Filed
Apr 30, 2026
Non-Final Rejection mailed — §102, §103, §112 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12670193
SPARSE EMBEDDING INDEX FOR SEARCH
4y 7m to grant Granted Jun 30, 2026
Patent 12639369
Dynamic Audio File Generation
6y 6m to grant Granted May 26, 2026
Patent 12639306
DATABASE OPERATOR CLAUSE VARIABLE CALCULATION IN DISTRIBUTED SYSTEMS
1y 11m to grant Granted May 26, 2026
Patent 12619635
METHODS AND SYSTEMS FOR SUPPLY CHAIN ANALYTICS USING VISUALIZATIONS AND STANDARDIZATION CONSTRUCTS
2y 1m to grant Granted May 05, 2026
Patent 12608395
EXTRACTION OF AUDIT TRAILS
10y 0m to grant Granted Apr 21, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

1-2
Expected OA Rounds
36%
Grant Probability
62%
With Interview (+25.9%)
4y 8m (~3y 7m remaining)
Median Time to Grant
Low
PTA Risk
Based on 354 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month