AURA client-side protection engine and Apple integration
Rust
0
211 commits
updated Sep 3, 2026
AURA Runtime is the client-side, messenger-native trust and safety library for child and teen protection. It combines per-message moderation with stateful conversation analysis, contact profiling, policy actions, and evidence-driven evaluation while keeping analysis on device.
Current product direction is narrow on purpose:
UiAction outputs are refined by risk horizon, escalation likelihood, and latent psychological statesAuraBufferSenderId, ConversationId, ReasonCode newtypes prevent string ID misuse at compile time; AnalysisMode enum replaces boolean flagscargo test --workspace --all-targets --all-features is the default workspace gate used locally and in CIWarnBeforeSend, WarnBeforeDisplay, BlurUntilTap, ConfirmBeforeOpenLink, SuggestBlockContact, SuggestReport, RestrictUnknownContact, SlowDownConversation, ShowCrisisSupport, EscalateToGuardianaura-runtime Public on-device runtime facade and lifecycle orchestration
aura-core Analyzer, action engine, context engine, evaluation stack, typed IDs
aura-patterns Pattern matching, strict rule validation, normalizer, IDN-aware URL checker, emoji signals
aura-ml Toxicity + sentiment (fallback + optional local ONNX runtime)
aura-proto Protobuf contracts for messenger runtime and FFI
aura-agent-ffi Protobuf-only C ABI for mobile and desktop clients
AURA (central core)
├─ AURA.KIDS child/teen safety domain
└─ AURA.MILITARY OPSEC/psyops/military social-engineering domain
Domain modules are scaffolded as dedicated crates:
crates/aura-domain shared domain contract (traits, input/output, registry)
crates/aura-kids AURA.KIDS detectors/policy/hooks
crates/aura-military AURA.MILITARY detectors/policy/hooks
Message / Event
│
├─ Layer 1: Pattern matching
│ ├─ keyword + phrase matcher
│ ├─ URL safety
│ ├─ text normalization
│ └─ emoji threat signals
│
├─ Layer 2: ML classification
│ └─ toxicity + sentiment
│
└─ Layer 3: Context analysis
├─ signal enricher
├─ grooming
├─ bullying
├─ manipulation
├─ self-harm
├─ coercion
├─ raid
├─ timing
└─ contact profiler
AnalysisResult is messenger-oriented rather than model-oriented. It includes:
risk_breakdown across content, conversation, link, abusecontact_snapshotreason_codesui_actionsinference summary for uncertainty, horizon, escalation likelihood, protective-factor strength, and latent statesThat inference summary is active policy input, not passive metadata. Immediate self-harm, coercive-control escalation, and group-escalation pathways now refine UiAction, parent_alert, and short-horizon intervention behavior.
| Detector | What it catches |
|---|---|
| Grooming | trust building, secrecy, platform migration, dependency, staged escalation |
| Bullying | sustained harassment, isolation, pile-on, bystander silence |
| Manipulation | gaslighting, DARVO, love-bomb/devalue, emotional blackmail, screenshot/reputation threats |
| Self-Harm | hopelessness, ideation, farewell, contagion, protective signals |
| Coercion | suicide coercion, debt leverage, reputation blackmail, combined tactics |
| Raid | many hostile senders in a short window |
| Timing | late-night contact, response asymmetry, message bombing, rapid attachment |
Per-contact state includes:
0..1000.0..1.0RoleReversal and RapidWorseningThis is one of the main differentiators of AURA: it reasons over contact behavior over time, not only over isolated messages.
AURA now has multiple evaluation layers, each targeting a different failure mode.
seed_reviewed / gold_reviewed / mixed_review_tiers), manifest-aware quality gates, and a derived gold-only suite with stricter thresholdsDetection is not enough. AURA also gates policy quality:
You can run the evaluation layers directly:
cargo run --example scenario_eval -p aura-core
cargo run --example manipulation_eval -p aura-core
cargo run --example multilingual_eval -p aura-core
cargo run --example noisy_eval -p aura-core
cargo run --example robustness_eval -p aura-core
cargo run --example corpus_eval -p aura-core
cargo run --example social_context_eval -p aura-core
cargo run --example realistic_eval -p aura-core
cargo run --example external_curated_eval -p aura-core
external_curated_eval prints both the mixed manifest run and the derived gold-only run.
The default production-oriented verification path is:
cargo build --workspace --all-targets --all-features
cargo test --workspace --all-targets --all-features
Coverage areas include:
Optional ONNX path:
brew install onnxruntime
python scripts/download_models.py
AURA_REQUIRE_ONNX_MODELS=1 cargo test --workspace --all-targets --all-features
If models are not present, the ONNX integration tests skip by default so a clean checkout still has a reproducible full-workspace verification path:
cargo test --workspace --all-targets --all-features
Current CI automation uses the same all-targets/all-features build and test
path in both Rust and Promotion Gate workflows.
Local promotion rehearsal:
python3 ci/run_promotion_rehearsal.py --target staging
This writes a full local evidence bundle under artifacts/promotion-rehearsal/.
If no C compiler is installed locally, the rehearsal records a clearly labeled
ffi_smoke stub, the manifest is reported as blocked locally rather than
fail, and the real compile is left to GitHub Actions on ubuntu-latest. The generated
promotion-rehearsal-summary.json also mirrors compact release signals such as
release_operator_summary, social-context inference expectation counters, and
the explicit local blocker reason.
Promotion is driven by machine-readable evidence, not by manually reading example output. The current release bundle includes:
schema_version = 3)aura.evidence_manifest.v1)Default workflow entrypoints:
cargo run --quiet --example release_report -p aura-core -- --output artifacts/release-report.json --require-pass
cargo run --quiet --example contract_evidence -p aura-core -- --output artifacts/contract-evidence.json
python3 ci/generate_dataset_evidence.py --output artifacts/dataset-evidence.json
cargo run --quiet --example audit_evidence -p aura-core -- --output artifacts/audit-evidence.json
bash ci/temporal_shadow_gate.sh
python3 ci/run_ffi_soak.py --output artifacts/ffi-state-sync-soak.json --iterations 2 --label local-check
python3 ci/generate_evidence_manifest.py --output artifacts/evidence-manifest.json --label local-check --release-report artifacts/release-report.json --contract-evidence artifacts/contract-evidence.json --dataset-evidence artifacts/dataset-evidence.json --audit-evidence artifacts/audit-evidence.json --temporal-shadow-report artifacts/temporal-shadow-report.json --temporal-shadow-telemetry-validation artifacts/temporal-shadow-telemetry-validation.json --ffi-soak artifacts/ffi-state-sync-soak.json --ffi-smoke artifacts/ffi-header-smoke.json
See docs/temporal-independent-review.md,
docs/temporal-study-attestation.md,
docs/temporal-study-timestamp.md,
docs/rfc3161-historical-revocation.md,
docs/evidence-renewal-envelope.md,
docs/release-decision.md,
docs/temporal-review-roster.md,
docs/temporal-review-receipts.md,
docs/temporal-shadow-telemetry.md, and
docs/evidence-manifest-attestation.md for the research-readiness and release
trust boundaries. Confirmatory temporal review uses packet-bound v3 material
bound to a fixed preregistration, external corpus, public study commitment,
trusted-key study attestation, RFC 3161 commitment timestamp, and a chain of
an independently signed/timestamped participant-key roster plus individually
signed and RFC 3161 timestamped reviewer/adjudicator receipts. Every timestamp
requires offline full-chain CRL evidence covering its genTime; copied
timestamp-verification reports are not trusted by receipt-chain v4. The
v5 report binds computed metrics to the exact canonical review bundle; legacy,
unsigned, untimestamped, receipt-free, or public-seed review cannot satisfy
policy activation readiness.
use aura_core::{Analyzer, AuraConfig, ContentType, ConversationId, MessageInput, SenderId};
use aura_patterns::PatternDatabase;
let config = AuraConfig::default();
let patterns = PatternDatabase::default_mvp();
let analyzer = Analyzer::new(config, &patterns);
let input = MessageInput {
content_type: ContentType::Text,
text: Some("Hello".into()),
image_data: None,
sender_id: "user_1".into(),
conversation_id: "conv_1".into(),
language: None,
conversation_type: Default::default(),
member_count: None,
};
let result = analyzer.analyze(&input);
Public header: include/aura_ffi.h
AuraBuffer is the output transport typeaura_last_error() is the only string-based error channel; it is
thread-local and must be read on the same thread as the failed callpatterns_path = None explicitly selects the built-in pattern pack; when a
path is supplied, a missing or invalid pack fails initialization with
PATTERN_PACK_LOAD_FAILED and is never silently replacedThe Apple/C boundary exposes the canonical Safety Case lifecycle and one product-facing local decision operation:
aura_agent_initaura_apply_execution_policyaura_analyze_canonical_safetyaura_analyze_local_decisionaura_acknowledge_source_checkpointaura_apply_safety_case_lifecycleaura_activate_safety_case_successoraura_remove_safety_case_accountaura_export_contextaura_import_contextaura_export_safety_case_stateaura_import_safety_case_stateaura_agent_versionaura_last_erroraura_freeaura_free_bufferaura_free_stringThe exact symbol list, including guardian-report lifecycle operations, is
maintained in include/aura_ffi.exports. aura_analyze_local_decision returns
only a compact typed projection plus the canonical source receipt; it does not
restore the former general-purpose analysis API. Duplicate and stale calls are
content-free and never analyze the source revision again. After the host inbox
event is durably terminal, aura_acknowledge_source_checkpoint transfers replay
ownership to the host and compacts only receipts that do not cover retained
Safety Case observations.
Batch/shadow utilities, live config/pattern mutation, raw signals, explanations, and contact/profile convenience APIs remain Rust-side concerns and are not part of the Apple ABI. Context export/import uses native protobuf tracker/contact state end-to-end; Safety Case state is separately exported as bounded, content-free JSON for host encryption.
Account-level domain selection now uses AuraConfig.domain_mode:
DOMAIN_MODE_NONE: base Aura onlyDOMAIN_MODE_KIDS: base Aura + Kids extensionDOMAIN_MODE_MILITARY: base Aura + Military extensionRuntime rules at the FFI boundary:
domain_mode as the effective selector.DOMAIN_MODE_KIDS; a configured
DOMAIN_MODE_MILITARY is rejected.enabled=false is rejected at
initialization, while Rust-side effective getters remain fail closed if an
invalid configuration is constructed without validation.DOMAIN_MODE_UNSPECIFIED is rejected; the host must choose an explicit mode.active_module has been removed from the protobuf config contract.The evaluation stack is data-driven. Important artifacts currently include:
crates/aura-patterns/data/patterns_mvp.jsoncrates/aura-core/data/corpus_style_profiles.jsoncrates/aura-core/data/corpus_curated_cases.jsoncrates/aura-core/data/social_context_cohorts.jsoncrates/aura-core/data/realistic_chat_cases.jsoncrates/aura-core/data/external_curated_chat_cases.jsoncrates/aura-core/data/dataset_changelog.jsonThe external curated corpus carries manifest metadata and tiered review quality:
schema_versiondataset_iddataset_labelcuration_status (seed_reviewed | gold_reviewed | mixed_review_tiers)maintainercreated_at_msupdated_at_msEach case has an independent review_status. Gold-reviewed cases are held to stricter quality gates (lower Brier score, tighter calibration, higher detection rate, lower false positive rate). Mixed corpora validate consistency between corpus-level curation_status and per-case review_status.
The built-in external artifact is currently a mixed review corpus. From that manifest, AURA can derive a gold-only bundle and run the stricter external suite without changing the contract.
The current corpus snapshot, coverage counts, and changelog linkage are tracked
in docs/dataset-governance.md and the
machine-readable dataset evidence artifact.
The release-hardening track for Phase 2 is operational. The codebase now has support-aware release reports, persisted evidence artifacts, compatibility proofs, privacy-safe audit evidence, and promotion automation.
seed_reviewed and gold_reviewedmixed_review_tiers) with per-slice gate adaptationcuration_status and per-case review_statusrun_external_curated_gold_suitePASS, FAIL, INSUFFICIENT_SUPPORT, and BLOCKEDui_actions into parent_alert and follow_ups, especially for trusted-adult boundary and supportive self-harm boundary casesThe concrete execution plan for this phase now lives in
docs/phase-3-pilot-readiness-roadmap.md.
pilot_regressionAnalysisResult.product_surface exposes stable child/guardian/review contractpilot_gate provides machine-readable pilot-ready decisions with repeated
shadow-run checks, review signoffs, and rollback triggersOperator-facing documentation for this phase now lives in:
After policy and psychological pathways are stronger:
What AURA Core is:
What AURA Core is not:
If an AI companion ever exists, it should be a separate layer on top of AURA, not part of the safety-critical core.
For child-safety use cases, privacy and explainability should be treated as product requirements, not optional polish.
Production-oriented stabilization docs now live in docs/README.md.
The main closeout and handoff document for the release-hardening track is
docs/phase-2-production-roadmap.md.
Proprietary — Ecliptix.
AURA client-side protection engine and Apple integration
Rust
0
211 commits
updated Sep 3, 2026
AURA Runtime is the client-side, messenger-native trust and safety library for child and teen protection. It combines per-message moderation with stateful conversation analysis, contact profiling, policy actions, and evidence-driven evaluation while keeping analysis on device.
Current product direction is narrow on purpose:
UiAction outputs are refined by risk horizon, escalation likelihood, and latent psychological statesAuraBufferSenderId, ConversationId, ReasonCode newtypes prevent string ID misuse at compile time; AnalysisMode enum replaces boolean flagscargo test --workspace --all-targets --all-features is the default workspace gate used locally and in CIWarnBeforeSend, WarnBeforeDisplay, BlurUntilTap, ConfirmBeforeOpenLink, SuggestBlockContact, SuggestReport, RestrictUnknownContact, SlowDownConversation, ShowCrisisSupport, EscalateToGuardianaura-runtime Public on-device runtime facade and lifecycle orchestration
aura-core Analyzer, action engine, context engine, evaluation stack, typed IDs
aura-patterns Pattern matching, strict rule validation, normalizer, IDN-aware URL checker, emoji signals
aura-ml Toxicity + sentiment (fallback + optional local ONNX runtime)
aura-proto Protobuf contracts for messenger runtime and FFI
aura-agent-ffi Protobuf-only C ABI for mobile and desktop clients
AURA (central core)
├─ AURA.KIDS child/teen safety domain
└─ AURA.MILITARY OPSEC/psyops/military social-engineering domain
Domain modules are scaffolded as dedicated crates:
crates/aura-domain shared domain contract (traits, input/output, registry)
crates/aura-kids AURA.KIDS detectors/policy/hooks
crates/aura-military AURA.MILITARY detectors/policy/hooks
Message / Event
│
├─ Layer 1: Pattern matching
│ ├─ keyword + phrase matcher
│ ├─ URL safety
│ ├─ text normalization
│ └─ emoji threat signals
│
├─ Layer 2: ML classification
│ └─ toxicity + sentiment
│
└─ Layer 3: Context analysis
├─ signal enricher
├─ grooming
├─ bullying
├─ manipulation
├─ self-harm
├─ coercion
├─ raid
├─ timing
└─ contact profiler
AnalysisResult is messenger-oriented rather than model-oriented. It includes:
risk_breakdown across content, conversation, link, abusecontact_snapshotreason_codesui_actionsinference summary for uncertainty, horizon, escalation likelihood, protective-factor strength, and latent statesThat inference summary is active policy input, not passive metadata. Immediate self-harm, coercive-control escalation, and group-escalation pathways now refine UiAction, parent_alert, and short-horizon intervention behavior.
| Detector | What it catches |
|---|---|
| Grooming | trust building, secrecy, platform migration, dependency, staged escalation |
| Bullying | sustained harassment, isolation, pile-on, bystander silence |
| Manipulation | gaslighting, DARVO, love-bomb/devalue, emotional blackmail, screenshot/reputation threats |
| Self-Harm | hopelessness, ideation, farewell, contagion, protective signals |
| Coercion | suicide coercion, debt leverage, reputation blackmail, combined tactics |
| Raid | many hostile senders in a short window |
| Timing | late-night contact, response asymmetry, message bombing, rapid attachment |
Per-contact state includes:
0..1000.0..1.0RoleReversal and RapidWorseningThis is one of the main differentiators of AURA: it reasons over contact behavior over time, not only over isolated messages.
AURA now has multiple evaluation layers, each targeting a different failure mode.
seed_reviewed / gold_reviewed / mixed_review_tiers), manifest-aware quality gates, and a derived gold-only suite with stricter thresholdsDetection is not enough. AURA also gates policy quality:
You can run the evaluation layers directly:
cargo run --example scenario_eval -p aura-core
cargo run --example manipulation_eval -p aura-core
cargo run --example multilingual_eval -p aura-core
cargo run --example noisy_eval -p aura-core
cargo run --example robustness_eval -p aura-core
cargo run --example corpus_eval -p aura-core
cargo run --example social_context_eval -p aura-core
cargo run --example realistic_eval -p aura-core
cargo run --example external_curated_eval -p aura-core
external_curated_eval prints both the mixed manifest run and the derived gold-only run.
The default production-oriented verification path is:
cargo build --workspace --all-targets --all-features
cargo test --workspace --all-targets --all-features
Coverage areas include:
Optional ONNX path:
brew install onnxruntime
python scripts/download_models.py
AURA_REQUIRE_ONNX_MODELS=1 cargo test --workspace --all-targets --all-features
If models are not present, the ONNX integration tests skip by default so a clean checkout still has a reproducible full-workspace verification path:
cargo test --workspace --all-targets --all-features
Current CI automation uses the same all-targets/all-features build and test
path in both Rust and Promotion Gate workflows.
Local promotion rehearsal:
python3 ci/run_promotion_rehearsal.py --target staging
This writes a full local evidence bundle under artifacts/promotion-rehearsal/.
If no C compiler is installed locally, the rehearsal records a clearly labeled
ffi_smoke stub, the manifest is reported as blocked locally rather than
fail, and the real compile is left to GitHub Actions on ubuntu-latest. The generated
promotion-rehearsal-summary.json also mirrors compact release signals such as
release_operator_summary, social-context inference expectation counters, and
the explicit local blocker reason.
Promotion is driven by machine-readable evidence, not by manually reading example output. The current release bundle includes:
schema_version = 3)aura.evidence_manifest.v1)Default workflow entrypoints:
cargo run --quiet --example release_report -p aura-core -- --output artifacts/release-report.json --require-pass
cargo run --quiet --example contract_evidence -p aura-core -- --output artifacts/contract-evidence.json
python3 ci/generate_dataset_evidence.py --output artifacts/dataset-evidence.json
cargo run --quiet --example audit_evidence -p aura-core -- --output artifacts/audit-evidence.json
bash ci/temporal_shadow_gate.sh
python3 ci/run_ffi_soak.py --output artifacts/ffi-state-sync-soak.json --iterations 2 --label local-check
python3 ci/generate_evidence_manifest.py --output artifacts/evidence-manifest.json --label local-check --release-report artifacts/release-report.json --contract-evidence artifacts/contract-evidence.json --dataset-evidence artifacts/dataset-evidence.json --audit-evidence artifacts/audit-evidence.json --temporal-shadow-report artifacts/temporal-shadow-report.json --temporal-shadow-telemetry-validation artifacts/temporal-shadow-telemetry-validation.json --ffi-soak artifacts/ffi-state-sync-soak.json --ffi-smoke artifacts/ffi-header-smoke.json
See docs/temporal-independent-review.md,
docs/temporal-study-attestation.md,
docs/temporal-study-timestamp.md,
docs/rfc3161-historical-revocation.md,
docs/evidence-renewal-envelope.md,
docs/release-decision.md,
docs/temporal-review-roster.md,
docs/temporal-review-receipts.md,
docs/temporal-shadow-telemetry.md, and
docs/evidence-manifest-attestation.md for the research-readiness and release
trust boundaries. Confirmatory temporal review uses packet-bound v3 material
bound to a fixed preregistration, external corpus, public study commitment,
trusted-key study attestation, RFC 3161 commitment timestamp, and a chain of
an independently signed/timestamped participant-key roster plus individually
signed and RFC 3161 timestamped reviewer/adjudicator receipts. Every timestamp
requires offline full-chain CRL evidence covering its genTime; copied
timestamp-verification reports are not trusted by receipt-chain v4. The
v5 report binds computed metrics to the exact canonical review bundle; legacy,
unsigned, untimestamped, receipt-free, or public-seed review cannot satisfy
policy activation readiness.
use aura_core::{Analyzer, AuraConfig, ContentType, ConversationId, MessageInput, SenderId};
use aura_patterns::PatternDatabase;
let config = AuraConfig::default();
let patterns = PatternDatabase::default_mvp();
let analyzer = Analyzer::new(config, &patterns);
let input = MessageInput {
content_type: ContentType::Text,
text: Some("Hello".into()),
image_data: None,
sender_id: "user_1".into(),
conversation_id: "conv_1".into(),
language: None,
conversation_type: Default::default(),
member_count: None,
};
let result = analyzer.analyze(&input);
Public header: include/aura_ffi.h
AuraBuffer is the output transport typeaura_last_error() is the only string-based error channel; it is
thread-local and must be read on the same thread as the failed callpatterns_path = None explicitly selects the built-in pattern pack; when a
path is supplied, a missing or invalid pack fails initialization with
PATTERN_PACK_LOAD_FAILED and is never silently replacedThe Apple/C boundary exposes the canonical Safety Case lifecycle and one product-facing local decision operation:
aura_agent_initaura_apply_execution_policyaura_analyze_canonical_safetyaura_analyze_local_decisionaura_acknowledge_source_checkpointaura_apply_safety_case_lifecycleaura_activate_safety_case_successoraura_remove_safety_case_accountaura_export_contextaura_import_contextaura_export_safety_case_stateaura_import_safety_case_stateaura_agent_versionaura_last_erroraura_freeaura_free_bufferaura_free_stringThe exact symbol list, including guardian-report lifecycle operations, is
maintained in include/aura_ffi.exports. aura_analyze_local_decision returns
only a compact typed projection plus the canonical source receipt; it does not
restore the former general-purpose analysis API. Duplicate and stale calls are
content-free and never analyze the source revision again. After the host inbox
event is durably terminal, aura_acknowledge_source_checkpoint transfers replay
ownership to the host and compacts only receipts that do not cover retained
Safety Case observations.
Batch/shadow utilities, live config/pattern mutation, raw signals, explanations, and contact/profile convenience APIs remain Rust-side concerns and are not part of the Apple ABI. Context export/import uses native protobuf tracker/contact state end-to-end; Safety Case state is separately exported as bounded, content-free JSON for host encryption.
Account-level domain selection now uses AuraConfig.domain_mode:
DOMAIN_MODE_NONE: base Aura onlyDOMAIN_MODE_KIDS: base Aura + Kids extensionDOMAIN_MODE_MILITARY: base Aura + Military extensionRuntime rules at the FFI boundary:
domain_mode as the effective selector.DOMAIN_MODE_KIDS; a configured
DOMAIN_MODE_MILITARY is rejected.enabled=false is rejected at
initialization, while Rust-side effective getters remain fail closed if an
invalid configuration is constructed without validation.DOMAIN_MODE_UNSPECIFIED is rejected; the host must choose an explicit mode.active_module has been removed from the protobuf config contract.The evaluation stack is data-driven. Important artifacts currently include:
crates/aura-patterns/data/patterns_mvp.jsoncrates/aura-core/data/corpus_style_profiles.jsoncrates/aura-core/data/corpus_curated_cases.jsoncrates/aura-core/data/social_context_cohorts.jsoncrates/aura-core/data/realistic_chat_cases.jsoncrates/aura-core/data/external_curated_chat_cases.jsoncrates/aura-core/data/dataset_changelog.jsonThe external curated corpus carries manifest metadata and tiered review quality:
schema_versiondataset_iddataset_labelcuration_status (seed_reviewed | gold_reviewed | mixed_review_tiers)maintainercreated_at_msupdated_at_msEach case has an independent review_status. Gold-reviewed cases are held to stricter quality gates (lower Brier score, tighter calibration, higher detection rate, lower false positive rate). Mixed corpora validate consistency between corpus-level curation_status and per-case review_status.
The built-in external artifact is currently a mixed review corpus. From that manifest, AURA can derive a gold-only bundle and run the stricter external suite without changing the contract.
The current corpus snapshot, coverage counts, and changelog linkage are tracked
in docs/dataset-governance.md and the
machine-readable dataset evidence artifact.
The release-hardening track for Phase 2 is operational. The codebase now has support-aware release reports, persisted evidence artifacts, compatibility proofs, privacy-safe audit evidence, and promotion automation.
seed_reviewed and gold_reviewedmixed_review_tiers) with per-slice gate adaptationcuration_status and per-case review_statusrun_external_curated_gold_suitePASS, FAIL, INSUFFICIENT_SUPPORT, and BLOCKEDui_actions into parent_alert and follow_ups, especially for trusted-adult boundary and supportive self-harm boundary casesThe concrete execution plan for this phase now lives in
docs/phase-3-pilot-readiness-roadmap.md.
pilot_regressionAnalysisResult.product_surface exposes stable child/guardian/review contractpilot_gate provides machine-readable pilot-ready decisions with repeated
shadow-run checks, review signoffs, and rollback triggersOperator-facing documentation for this phase now lives in:
After policy and psychological pathways are stronger:
What AURA Core is:
What AURA Core is not:
If an AI companion ever exists, it should be a separate layer on top of AURA, not part of the safety-critical core.
For child-safety use cases, privacy and explainability should be treated as product requirements, not optional polish.
Production-oriented stabilization docs now live in docs/README.md.
The main closeout and handoff document for the release-hardening track is
docs/phase-2-production-roadmap.md.
Proprietary — Ecliptix.