Repository navigation
Build Week Phase 2: integrate Argus with the Sentinel World Model - #93
Merged
Merged
Conversation
CodeBuildder
marked this pull request as ready for review
July 17, 2026 22:59
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 2 connects Argus to the Sentinel World Model through a schema-compatible, idempotent, and failure-isolated write path.
Once Argus completes enrichment, reasoning, action routing, and audit logging, it publishes the completed security finding into shared cross-agent state. Eligible high-confidence decisions also raise the affected pod or node's security posture. Sentinel can now consume Argus evidence without becoming a runtime dependency of the local security pipeline.
Closes #92.
Why this change
The Sentinel platform needs one shared operational model across its specialist agents:
The initial Argus integration draft established HTTP calls but was not safe to publish:
Architecture
World Model synchronization happens only after the complete local pipeline:
The webhook response remains asynchronous, and local remediation is never gated on shared-platform availability.
What changed
Deterministic event identity
Each finding receives a UUIDv5 derived from:
Reprocessing the same alert produces the same UUID and is safely handled as a duplicate. Different workloads, processes, namespaces, or alert times produce different IDs.
Shared finding contract
Argus publishes:
event_id,type,source,timestamp,severity, andentity_id;Entity posture synchronization
Entity IDs match Sentinel's Kubernetes topology reconciler:
pod/{namespace}/{pod-name}node/cluster/{node-name}Critical, high, and medium decisions update posture only when Argus does not classify the finding as a likely false positive.
Failure isolation and observability
World Model operations return structured outcomes:
disabledacceptedduplicateskippedfailedTransport errors and 5xx responses receive one bounded retry. Client errors and 4xx responses fail immediately. Every synchronization completes with structured logs containing finding and posture status, while no integration exception can escape into the local response pipeline.
Deployment and documentation
WORLD_MODEL_URLto central Argus configuration.sentinel-world-model.sentinel-platformservice address.Test coverage
New tests verify:
Validation
make testgit diff --checkReviewer guide
agent/src/world_model.pyfor identity, contract, and failure semantics.agent/src/webhook.pyto confirm synchronization occurs after local action and audit completion.agent/tests/test_world_model.pyfor contract and outage coverage.sentinel-world-modelService insentinel-platform.Operational behavior
WORLD_MODEL_URLis empty, synchronization reportsdisabledand performs no I/O.failed, and completes normally.duplicatewithout storing it twice.Out of scope and follow-ups