DHS procurement forecast · September 2026 data audit
43 DHS forecast change rows. 42 requirements after source-aware review.
Audit the September 2 DHS APFS update: 43 change rows, 42 source requirements, 27 active first-seen plans, schedule shifts, two no-longer-planned records, and one marker-driven ID pair.
The September 2 federal procurement-forecast release contains 43 published change rows, but they represent 42 DHS source requirements after one evidence-backed APFS marker pair is reconciled. The useful review set is smaller still: 27 active first-seen plans, one returned record, four continuously present requirements with material content changes, two explicit “no longer planned” signals across the wider set, and nine source requirements that need absence investigation.
That distinction matters because a row label is not a business verdict. new means first observed under a published dataset identity, not a new contract. updated can include a record that was missing yesterday and returned today. not_in_current_snapshot is not a cancellation. A leading asterisk in a DHS APFS number marks a changed record in the source interface; it should not create a second real-world requirement.
This report audits WebTruffle’s US federal procurement forecasts release dated September 2, 2026 against the September 1 edition. The August 31 edition recovers the prior state of one reappearing record, while every accepted edition from August 26 through September 1 is used to test whether the canonical first-seen keys appeared earlier in the complete published release history available at the cutoff. Every consequential example was checked against the official DHS Acquisition Planning Forecast System.
| Edition | Current rows | DHS rows | Change rows | Manifest bytes | Manifest SHA-256 |
|---|---|---|---|---|---|
| September 1 | 2,446 | 786 | 87 | 17,393 | 2e6668c8201b7dc5a100e321a31810b381e48b79c32138c2a1706579202539a0 |
| September 2 | 2,466 | 806 | 43 | 17,392 | 416a3f958628c60f177e07ea4cb54f371f7ed6b2ef64f6198c5b55971d400575 |
DHS APFS
786→806
+20 rows · Changed
Energy
823→823
0 rows · Same source bytes
Education
370→370
0 rows · Same source bytes
Justice
467→467
0 rows · Same source bytes
What the September 2 DHS forecast update shows
Six findings survive the identity, membership, and source checks:
- All 43 published change rows came from DHS APFS. The Energy, Education, and Justice source files had the same hashes and row counts in both accepted editions. This is a DHS source update, not evidence of a government-wide procurement shift.
- The adjacent raw-ID equation needs one reappearance. September 2 has 30 raw IDs that were not in the September 1 current snapshot: 29 labelled
newand one labelledupdated. The exact membership equation is2,446 + 29 + 1 − 10 = 2,466. - One raw absence/new pair is one changed APFS record.
F2026073754became*F2026073754in the collected source value. Both rows point to/record/73754/, and the official change log says the title and requirement changed from four mobile boat hoists to three. Counting both as separate requirements would overstate movement. - Twenty-nine
newrows do not equal 29 new active opportunities. After the marker pair is collapsed, 28 DHS source requirements are first observed across the complete eight-edition WebTruffle history available on September 2. One is already markedNLR—no longer required—leaving 27 active planning candidates. This is a dataset-observation claim, not evidence that DHS created or first published them that day. - The timing window is compressed and partly retrospective. Of those 27 active first-seen plans, four carried projected solicitation dates before the September 2 cutoff, three pointed to September 2, and 11 pointed to September 3–9. A projected date is a search-and-verification trigger, not a response deadline.
- The highest-information changes are not the largest row bucket. One known requirement became no longer planned; two other continuously present records changed material schedule or fiscal-year fields; one record returned after a one-day absence with a new projected date; and the marker pair changed a stated quantity.
The correct headline is therefore not “29 new DHS contracts.” It is “42 source requirements changed state or content in one accepted DHS snapshot, with 27 active first-seen planning candidates after source-aware triage.”
Scope, cutoff, and method
The measured cutoff is the September 2 release generated at 2026-09-02T14:35:14Z. It contains 2,466 current records across four selected sources: DHS APFS, the Department of Energy acquisition forecast, the Department of Education procurement forecast, and the Department of Justice forecast. The product is explicitly not government-wide.
The audit followed five steps:
- Verify each independently recorded manifest byte count and SHA-256 before trusting any file identity declared inside it.
- Require schema version
1.0, all 62 ordered fields, an atomic release, four successful source partitions, exact row counts, and unique published IDs. - Parse the CSVs with a real CSV reader because descriptions contain commas, quotes, and line breaks.
- Compare adjacent snapshot membership and content hashes at the published raw-ID grain.
- Derive a separate DHS source key from the numeric
/record/{id}/URL, preserving the raw APFS number, and use that key only to reconcile evidence-backed marker changes.
No title similarity, contractor name, NAICS code, or date proximity was used to merge records. The only collapsed pair has the same numeric source-record URL and an official source change log. This is deterministic source identity, not fuzzy entity resolution.
The full-history classification check loads all eight accepted releases from August 26 through September 2, verifies each current CSV against its own manifest, and compares the 28 candidate DHS source keys with every earlier snapshot. None appears in the seven earlier editions. Several source creation dates are much older—including one from August 15, 2025—so “first observed” here means first observed in WebTruffle’s published history, never newly created by DHS.
The field-level review ignores observation bookkeeping such as edition date, first-seen time, last-seen time, and the content hash itself. It prioritizes status, strategy, set-aside, value band, incumbent, contract reference, fiscal year, projected solicitation and award timing, performance dates, title, and requirement narrative.
Pin the September 1 and September 2 editions
A release tag names an edition. A separately recorded digest establishes the exact bytes used for the audit.
September 1 manifest
bytes 17,393
SHA-256 2e6668c8201b7dc5a100e321a31810b381e48b79c32138c2a1706579202539a0
September 1 current CSV
bytes 2,879,560
SHA-256 7c2c44924aa23b1845dfb30cbf3b8a7a492cff24eee260dc402c437d75253e9a
September 2 manifest
bytes 17,392
SHA-256 416a3f958628c60f177e07ea4cb54f371f7ed6b2ef64f6198c5b55971d400575
September 2 current CSV
bytes 2,910,835
SHA-256 ba67750c34cca578d55eb16bd035777bb033dc7a3e255af1505f589c16d2b2e3
September 2 changes CSV
bytes 60,959
SHA-256 4320b6ff2cefc92182105784e16ecd630863b33bf3e09f9da6f7c9acaec8fec0
September 2 source health
bytes 10,076
SHA-256 2376855caf9981354d71c0ef5c381d44eb96daf49df10650210d45daf643bfd6
The September 2 manifest declares 2,466 current records and 43 changes: 29 new, four updated, and 10 not_in_current_snapshot. Its verified source-health artifact says all four required sources succeeded. The full current CSV and changes CSV match their declared sizes and hashes.
The August 31 snapshot is not needed for the adjacent membership equation. It is used only because one September 2 updated record was absent from September 1. Its last observed content appears in the August 31 accepted edition, which makes the reappearance’s prior state reproducible rather than guessed.
All 43 published changes came from DHS
The September 1 and September 2 source counts are:
| Source | Sep 1 | Sep 2 | Net |
|---|---|---|---|
| DHS APFS | 786 | 806 | +20 |
| Energy | 823 | 823 | 0 |
| Education | 370 | 370 | 0 |
| Justice | 467 | 467 | 0 |
The stable counts alone would not prove stable content. The stronger evidence is that the recorded source-download SHA-256 for Energy, Education, and Justice is identical in both manifests. DHS has different source bytes, and every row in the September 2 change product is dhs_apfs.
That does not establish that DHS is generally more volatile than the other agencies. It shows only that the accepted source input changed across this one adjacent-edition comparison. Agency forecast publication cadences differ, and unchanged source bytes can persist across many daily collection runs.
The DHS APFS homepage describes the portal as an early view of anticipated contract actions, particularly for small businesses. Its planning notice also says projected procurements may be revised or cancelled and are not presolicitation synopses, invitations for bids, requests for proposals, or commitments to purchase. FAR 5.404-1 likewise requires long-range estimates to be presented as best available information that is subject to modification and non-binding. (FAR 5.404-1)
Why 43 change rows represent 42 source requirements
new- 29
- First appearance under the published dataset ID
updated- 4
- Changed content or a previously absent ID that returned
not_in_current_snapshot- 10
- Present in the prior active state, absent now
Adjacent raw-ID reconciliation
2,446 + 29 + 1 − 10 = 2,466
The extra one is an updated record that was absent on September 1 and returned on September 2. The label carries persistent history; it is not an adjacent-snapshot join result.
Source-aware requirement count
43 rows → 42 APFS requirements
One old/new pair shares APFS record F2026073754 and source URL /record/73754/. The leading asterisk is a changed-record marker, so preserve the raw value and derive a stable source key beside it.
At the raw published-ID grain, the two current snapshots reconcile exactly:
2,436 IDs present in both editions
30 IDs present only on September 2
10 IDs present only on September 1
2,446 + 30 − 10 = 2,466
The 30 incoming IDs contain 29 new rows and one updated row. The latter is APFS record F2025070136: it was present August 31, absent September 1, and present again September 2. The release manifest defines updated as either changed content or a previously absent identifier that reappeared. It is therefore correct at persistent-history grain and impossible to interpret from the September 1/2 set difference alone.
One outgoing/incoming pair needs a different treatment. September 1 contains F2026073754; September 2 contains *F2026073754. Both use the official URL https://apfs-cloud.dhs.gov/record/73754/public-print/. The APFS public user guide explains that a changed record displays an asterisk before its APFS number. The official record F2026073754 renders without the marker in its heading and records a September 2 change from “Purchase of Four New Mobile Boat Hoists” to “Purchase of Three New Mobile Boat Hoists.”
The safe model keeps both values:
raw_source_forecast_id *F2026073754
source_record_key dhs_apfs:73754
source_url https://apfs-cloud.dhs.gov/record/73754/public-print/
identity_evidence exact numeric official record route
Do not globally strip punctuation from every source ID. This rule is source-specific and evidence-specific. Prefer the numeric official record route when it is present; otherwise remove exactly one leading asterisk only for a DHS APFS value that matches the expected *F... pattern. Retain the raw value so the normalized record remains traceable to the bytes that were published.
After that one pair is collapsed, the September 2 review set is:
- 28 source requirements first observed across all eight accepted editions;
- one previously observed requirement that returned with updated content;
- four content changes among continuously present source requirements, including the marker pair;
- nine source requirements absent after canonical identity; and
- 42 distinct source requirements in total.
29 new rows reduce to 27 active first-seen plans
The released new bucket has 29 rows. One is the starred half of the marker pair, so 28 canonical source requirements remain. None of those 28 stable APFS keys appears in any earlier accepted snapshot from August 26 through September 1. One of them—Vendor IT Research Licenses, F2025071432—is already marked NLR, and its description says the requirement is no longer planned and was republished for vendor awareness.
That leaves 27 active first-seen planning records: 20 with source status NEW and seven with REC, or recompete/follow-on semantics. They are not 27 solicitations. They are current APFS planning candidates under the release’s source snapshot.
Before Sep 2
Already behind the release cutoff
4
Sep 2
Projected for the edition date
3
Sep 3–9
Inside the next seven days
11
Sep 10–Oct 2
Eight to 30 days out
5
Oct 3–Dec 1
31 to 90 days out
2
After Dec 1
More than 90 days out
2
Selection
Start with 29 published new rows; collapse one APFS marker pair; remove one first-seen record already marked NLR. The denominator is 27.
Interpretation
These are projected solicitation-release dates, not response deadlines. A date in the past is a verification trigger, not proof that a notice was posted or missed.
All 27 have a populated projected solicitation date. 18—66.67%—point to September 9 or earlier relative to the September 2 cutoff. Four are already behind the cutoff. This is why a forecast monitor should not send “deadline approaching” alerts from this field. It should send “verify whether a current notice exists” tasks.
The 27 records also illustrate why value ranges should remain bands. Their distribution is eight at $2M to $5M, seven at $500K to $1M, seven at $1M to $2M, three at $5M to $10M, one at $10M to $20M, and one at Over $100M. The open-ended top band has no defensible midpoint, and none of the values is an obligation, award, payment, or guaranteed procurement amount.
Small-business screening needs the same restraint. The normalized set_aside_type field is True on 10 of the 27 rows, False on one, and blank on 16. Blank is unknown in that field, not “not set aside.” The source-published program field provides additional labels—SB, SDVOSB, 8(a), TBD, or None—but final competition and set-aside decisions belong to the initiated acquisition and current solicitation, not the forecast alone.
Five requirements deserve field-level review
The release labels four rows updated: three are present under the same raw ID in both adjacent snapshots, while one returned after a one-day absence. Canonical source identity exposes a fifth changed requirement encoded as the raw absent/new marker pair.
| APFS record | Requirement | Release encoding | Observed source change | Review action |
|---|---|---|---|---|
F2024067091 | NSEPC Support | Updated in place | Follow-on → no longer required; incumbent and contract cleared | Retire from active pursuit; retain the source decision |
F2025070136 | C3S Operations II | Reappeared as updated | Projected solicitation Sep 1 → Sep 8 | Restore to review; verify current notice state |
F2025070335 | C3S Architecture II | Updated in place | Projected solicitation Sep 4 → Oct 6 | Move the review date; keep prior projection |
F2025070833 | Three mobile boat hoists | Updated in place | FY2026/Q4 → FY2027/Q1; solicitation Aug 3 → Sep 24 | Refresh fiscal-year and schedule assumptions |
F2026073754 | Four → three mobile boat hoists | Raw absent + new pair | Same source record; title and quantity changed | Collapse by stable source key; review as one change |
The table prioritizes decision fields, not every normalized hash difference. Publication timestamps and narrative change-log text remain evidence, but they should not drown out status, schedule, scope, quantity, strategy, set-aside, value, incumbent, or identifier changes.
The exact source evidence is:
- NSEPC Support, F2024067091 changed from a follow-on record to
No Longer Required; the incumbent and current contract number were cleared, and the source description now says the requirement is no longer planned. - C3S Operations II, F2025070136 returned after its September 1 absence. Compared with its August 31 state, the projected solicitation date moved from September 1 to September 8.
- C3S Architecture II, F2025070335 moved its projected solicitation date from September 4 to October 6, a 32-day shift.
- Acquisition of Three Mobile Boat Hoists, F2025070833 moved from fiscal year 2026 and Q4 FY2026 to fiscal year 2027 and Q1 FY2027. Its projected solicitation date moved from August 3 to September 24, and its award and performance dates also moved.
- Purchase of Mobile Boat Hoists, F2026073754 changed its stated quantity and title from four to three. The release encodes it as one absent raw ID and one new starred raw ID; the official URL and change log establish one continuing source record.
These are planning-record changes, not confirmed procurement outcomes. The No Longer Required status is an explicit source statement and can close an active forecast lead. A shifted solicitation date should reschedule verification, not be relabelled an amended bid deadline. A reduced quantity can change qualification and likely value interpretation, but the forecast still does not create an order.
Ten raw absences do not mean ten cancellations
The release contains 10 not_in_current_snapshot rows. One is the unstarred half of the F2026073754 marker pair and remains present under the same official source-record route. Nine canonical source requirements are actually absent from the September 2 source snapshot.
The dataset deliberately does not assign a cause. A record can be removed, archived, temporarily omitted, replaced, republished under a changed identifier, or affected by source-state behavior. An absence can also precede a later reappearance, as F2025070136 demonstrates across August 31, September 1, and September 2.
An operational system should therefore keep three distinct resolutions:
- explicitly no longer planned: the current official record says
NLRor equivalent; - currently absent from the accepted snapshot: the source requirement needs investigation; and
- identity changed or reissued: exact source evidence connects the old and new representations.
Only the first is an explicit planning-status decision. Even then, retain the historical row, official source URL, observed-at edition, and verification time instead of deleting the lead record. The other two remain unresolved until the source supplies enough evidence.
Turn the release into five review queues
A useful daily monitor routes evidence rather than treating every delta equally.
1. Stop or close explicit no-longer-planned records
Put current NLR records first. The review set contains two explicit signals: the existing NSEPC Support record changed to no longer required, and Vendor IT Research Licenses was first observed already carrying that status. Remove both from an active-pursuit queue, but retain their history and official evidence.
2. Reconcile source identity before counting
Compare stable numeric APFS record routes before treating raw new/absent pairs as two requirements. Preserve both raw IDs, record the deterministic match method, and require a one-to-one relationship. Send collisions, missing URLs, and many-to-one matches to manual review rather than falling back to title similarity.
3. Escalate compressed or elapsed projected dates
Route past dates and the next seven days to immediate source verification. Do not call them deadlines. Search for an official SAM.gov notice using APFS number, title, component, NAICS, contracting office, and any solicitation or contract reference. If no notice is found, keep a checked-at timestamp and search criteria rather than asserting none exists.
4. Review material fields, not every hash difference equally
Prioritize status, scope, quantity, competition, set-aside, value range, incumbent, fiscal year, projected solicitation or award timing, and performance dates. Publication timestamps and appended narrative history can still explain the source state, but they should not generate the same alert severity as “no longer planned” or a 32-day schedule shift.
5. Investigate canonical absences separately
Keep the nine unresolved source absences out of the active-new queue and out of the confirmed-closed queue. Check the official record, the APFS forecast list, and later accepted editions. A reappearance should restore continuity to the same source requirement, not create a second lead.
The broader government contract tracker guide owns polling, event storage, alert routing, and operational recovery. The federal forecast Python guide owns one-edition verification and bounded NAICS, agency, set-aside, and timing watchlists. This report owns the dated September 1/2 empirical reconciliation and the APFS marker finding.
Reproduce the adjacent-edition audit
Download the two manifests and current snapshots from their pinned tags, plus the September 2 change file. Do not use a moving latest URL.
curl -fL -o sep01-manifest.json \
https://github.com/webtruffle/us-federal-procurement-forecasts/releases/download/2026-09-01/manifest.json
curl -fL -o sep01-current.csv \
https://github.com/webtruffle/us-federal-procurement-forecasts/releases/download/2026-09-01/us-federal-procurement-forecasts.csv
curl -fL -o sep02-manifest.json \
https://github.com/webtruffle/us-federal-procurement-forecasts/releases/download/2026-09-02/manifest.json
curl -fL -o sep02-current.csv \
https://github.com/webtruffle/us-federal-procurement-forecasts/releases/download/2026-09-02/us-federal-procurement-forecasts.csv
curl -fL -o sep02-changes.csv \
https://github.com/webtruffle/us-federal-procurement-forecasts/releases/download/2026-09-02/changes.csv
Verify the two manifest roots against the independent receipts above. Only then verify the current and change files against the files declarations in their matching manifest. Do not let the September 2 manifest authenticate a September 1 asset.
Use encoding="utf-8-sig" and newline="" with Python’s CSV reader. The BOM and multiline descriptions make line counting and naive string splitting unsafe.
import csv
import re
from pathlib import Path
APFS_ROUTE = re.compile(r"/record/(\d+)/")
APFS_NUMBER = re.compile(r"^\*?(F\d+)$")
def rows(path: str) -> list[dict[str, str]]:
with Path(path).open("r", encoding="utf-8-sig", newline="") as handle:
return list(csv.DictReader(handle))
def source_key(row: dict[str, str]) -> str:
if row["source"] != "dhs_apfs":
return f"dataset_id:{row['id']}"
route = APFS_ROUTE.search(row["source_url"])
if route:
return f"dhs_apfs:{route.group(1)}"
number = APFS_NUMBER.fullmatch(row["source_forecast_id"])
if not number:
raise ValueError("No deterministic DHS APFS source key")
return f"dhs_apfs:{number.group(1)}"
previous = rows("sep01-current.csv")
current = rows("sep02-current.csv")
changes = rows("sep02-changes.csv")
previous_ids = {row["id"] for row in previous}
current_ids = {row["id"] for row in current}
assert len(previous_ids) == len(previous) == 2_446
assert len(current_ids) == len(current) == 2_466
assert len(previous_ids & current_ids) == 2_436
assert len(current_ids - previous_ids) == 30
assert len(previous_ids - current_ids) == 10
dhs_changes = [row for row in changes if row["source"] == "dhs_apfs"]
assert len(dhs_changes) == len(changes) == 43
Build separate maps by raw dataset ID and stable source key. Reject duplicate keys rather than overwriting them. The helper deliberately applies the numeric-record rule only to dhs_apfs; unchanged source-specific identities from the other three partitions retain their published dataset IDs. At source-key grain, the adjacent snapshots have 2,437 shared requirements, 29 incoming requirements, and nine outgoing requirements. The incoming group is 28 release-classified first appearances plus one reappearance; four shared source requirements have material content changes when the APFS marker pair is included.
To reproduce the reappeared record’s prior content, add the pinned August 31 current snapshot and select the most recent earlier observation for the same raw or stable source key. Do not compare its September 2 row with null and call every populated field a change. To reproduce the complete-history first-observation claim, add the accepted August 26–30 current snapshots as well, verify every file against its matching manifest, and confirm that none of the 28 candidate APFS keys appears in the seven earlier editions.
Publish both grains in the output receipt:
released_change_rows 43
canonical_source_requirements 42
first_observed 28
reappeared 1
continuously_present_changed 4
canonical_absent 9
The four categories reconcile to 42 distinct affected source requirements. They do not imply 42 solicitations, awards, cancellations, or contracts.
Verify a forecast against APFS and SAM.gov
The official APFS record is the authority for the forecast state and its source-native change log. Use the normalized dataset to find and prioritize candidates; use APFS to confirm the current planning representation.
Then search SAM.gov Contract Opportunities for a procurement-stage notice. SAM.gov describes those records as notices from federal contracting offices, including presolicitations, solicitations, award notices, and sole-source notices. That is a different lifecycle object from an APFS forecast.
For every consequential candidate:
- Open the current APFS
source_urland confirm the APFS number, status, projected timing, requirement, component, NAICS, value band, and source change log. - Search SAM.gov using the APFS number and contract or solicitation reference first, then a bounded combination of title, component, office, and NAICS.
- If a plausible notice exists, confirm its notice ID, type, status, posted date, response deadline, set-aside, documents, and amendments in the official page.
- Keep the APFS source key and SAM.gov notice ID separate. Store the match rule, evidence URLs, checked-at timestamp, reviewer, and confidence.
- If no match is found, record “not found under documented search at this time.” Do not overwrite the forecast as cancelled, closed, or never solicited.
The source can also change after this report’s cutoff. A hash-verified September 2 release proves the edition analyzed here; it does not freeze the live APFS page or establish today’s SAM.gov status.
Choose the release, official source, or a managed monitor
Use the free federal procurement forecasts dataset when the four covered sources, current snapshot, daily observed changes, and published fields fit the question. Pin the edition used for a decision.
Use APFS directly when one DHS record, its live change log, source contacts, or current source-native status matters. Use SAM.gov when the question is whether a procurement notice exists, is active, has been amended, or has a response deadline.
Use a managed monitor when the workflow needs more agency forecasts, longer state history, source-key normalization, forecast-to-notice matching, reviewed material-change alerts, account-specific qualification, CRM routing, or a service-level commitment. Define those additions explicitly; they are not implied by the public four-source product.
Limitations and interpretation boundaries
- The core change audit measures one adjacent edition pair. The first-observation check spans all eight accepted editions available from August 26 through September 2, and August 31 also supplies the prior state of one reappearance. That short history does not establish long-run source volatility, seasonality, or forecast accuracy.
- The WebTruffle dataset covers four selected agency sources. It is neither every federal procurement forecast nor every possible requirement inside a covered department.
- Every published September 2 change row is DHS. The findings must not be generalized to Energy, Education, Justice, or the federal market as a whole.
newmeans first observed under local history and published identity. It is not necessarily newly created by DHS, newly funded, active, or open for bids.updatedcovers changed public content and reappearance. It does not prove the record existed in the immediately prior snapshot.not_in_current_snapshotis an observed membership state. It does not prove cancellation, deletion, award, funding loss, or source intent.- The 42-requirement count depends on one deterministic APFS source-key reconciliation. The raw 43-row count remains the correct released-product count.
- An asterisk is handled only under the documented DHS APFS change-marker semantics. No cross-source punctuation stripping or fuzzy title merge is justified.
- Projected solicitation and award dates are planning information, not response deadlines or guaranteed events.
- Value bands are source text, include an open-ended band, and cannot be summed into spend or pipeline value.
- Blank set-aside values are unknown in that normalized field, not false. Final acquisition strategy and small-business treatment can change.
- Structured contact names, emails, and phone numbers are excluded from the bulk dataset. Use the official source for an authorized contact route.
- Live APFS and SAM.gov records can change after the September 2 cutoff. Recheck time-sensitive decisions.
Frequently asked questions
Did DHS publish 29 new contract opportunities on September 2?
No. The release contains 29 rows labelled new under the dataset’s history. One is the changed-marker representation of an existing APFS record, and one of the remaining 28 first-seen source requirements is already marked no longer required. The 27 active rows are non-binding planning records, not published solicitations.
Why does the article say 43 rows but 42 requirements?
Forty-three is the exact released change-product row count. One absence/new pair uses F2026073754 and *F2026073754, but both point to official APFS record 73754. The APFS guide documents the asterisk as a changed-record marker, and the source change log shows a title and quantity edit. Collapsing that evidence-backed pair leaves 42 source requirements for review.
What does the asterisk before a DHS APFS number mean?
The official APFS public user guide says a changed record displays an asterisk before its APFS number. Preserve the raw value, but derive a stable source key from the official numeric record route when reconciling editions. Do not apply this rule to unrelated source systems.
Does not_in_current_snapshot mean a requirement was cancelled?
No. It means a previously active dataset identity was absent from the accepted current source snapshot. One record in this three-edition review disappeared and then returned, and another raw absence is only the old half of a marker-driven ID pair. Require an explicit current source status before calling a requirement no longer planned.
Are the estimated solicitation dates bid deadlines?
No. They are projected release dates in a non-binding acquisition forecast. Use them to schedule APFS and SAM.gov verification. The response deadline, if any, belongs to the current official procurement notice.
Can I add the estimated value ranges to size the DHS pipeline?
No. They are categorical planning bands, one is open-ended, and they are neither awards nor obligations. Keep each source label with its requirement and report counts by band only when the population and cutoff are explicit.
Does the release cover every federal agency forecast?
No. It covers selected forecast publications from DHS, Energy, Education, and Justice. Acquisition.gov maintains a broader directory of agency procurement forecasts, and agencies publish with different formats and cadences.
Where should I verify an actionable DHS forecast?
Open the official APFS record first, then search SAM.gov Contract Opportunities for a current notice. Keep the forecast ID and notice ID separate, and retain the evidence URLs, match rule, verification time, and reviewer.