A current feed cannot show what a visitor knew when they planned a trip. The application retains observations, corrections and source-check gaps, then connects saved plans to an exact public snapshot.
Public application capture. No signed-in account, private notes or synthetic incidents are shown.
Follow an observation to a saved checkpoint.
Collection is scheduled once daily. A visitor reads materialized data; a page view does not trigger NPS collection or an AI model.
01
Observe the source
Parks collector
Fetch selected official NPS news feeds. Separate publication time from observation time; retain unsuccessful checks as gaps.
02
Admit exact references
Parks adapter · Kam Rust
Validate records and call the unmodified, hash-pinned evaluateState executable for the proposed catalog and timeline. Admission does not establish source truth.
03
Publish one generation
Parks collector · S3
Stage immutable catalog, timeline and evidence objects. A conditional current-pointer write publishes their references together. Admission alone is not a committed publication.
04
Read the retained version
Parks historical reader
Resolve the exact snapshot and verify its content hash. An unavailable version stays unavailable; the reader does not substitute the latest record.
05
Compare with a saved plan
Parks app · optional account API
Save a small public-snapshot reference with a park or trip. Later compare additions, revisions and records no longer listed. Private notes stay outside public share links.
One kernel. Explicit application ownership.
Kam Rust admission
The embedded executable evaluates bounded references supplied by the adapter. The application checks the returned identity, generation and content fingerprint. It does not certify real-world conditions or perform the S3 publication.
National Parks Nearby
The application owns NPS fetching, record normalization, change detection, the timeline journal, historical readers, source coverage, retention rules and S3 persistence. Its separate account API owns identity, explicit consent, pending saves and conditional DynamoDB commits.
This application uses the embedded Kam kernel, not the hosted Kam History service or AWS AgentCore Runtime. Its local and live application checks do not qualify those separate services.
How timeline references and saved checkpoints are represented
Timeline events reference exact catalog generations. Saved parks and trips retain only a bounded public reference, not a copy of the source dataset. These are application contracts around the kernel, not calls to the hosted History SDK.
Exact retained snapshot reads and saved-plan baselines are implemented in this application. The timeline covers feed titles and summaries, not every change to an official webpage.
History must remain honest when something fails.
A source cannot be checked
Preserve earlier records and disclose the coverage gap. A blank day is not proof that nothing happened.
An exact version is missing
Report unavailable evidence instead of displaying the latest record under an old date.
A saved record changes
Compare the pinned baseline with the later snapshot. A notice leaving the current window is not proof that a closure was resolved.
Application evidence, not a platform benchmark.
Reviewed source and public readback establish the deployed timeline, retained snapshots and content-hash checks. Synthetic multi-generation fixtures exercise correction, tampering and stale-response behavior; they are not inserted into the public feed.
A 365-day publication window is not a year of prior monitoring, permanent retention, or historical park operating status. Account-email simulator acceptance is not proof of delivery to every human inbox. No adoption, latency or uptime benchmark is claimed.
Retention, privacy, and relevance to AgentCore builders
Source-history and personal-state limits are separate. History is bounded; failed or unmonitored periods stay distinguishable from successful checks. Old saved records without a baseline can explicitly start one now.
Guest plans stay in the browser until cloud saving and import are explicitly chosen. Account state is separate from the public dataset. Public sharing excludes private notes and trip identities.
For AgentCore builders, the pattern is reusable without claiming AgentCore runs this app: the application supplies domain meaning, admission checks references, persistence establishes acceptance, and later exact reads support inspection.