Enterprise Features: - Hosted mode with remote sync for team pattern aggregation - Community sharing with privacy-preserving anonymization - LLM-based semantic claim extraction with Gemini integration - Pattern learning with promotion to declarative extractors - High-entropy secrets extractor with configurable thresholds - Auth bypass and insecure cookies extractors Module Refactoring: - Split oversized files to comply with 500-line limit - Config split: types/core.rs, types/extractors.rs, types/hosted.rs, etc. - Handlers split: scan.rs, policy.rs, report.rs modules - Extractors split: declarative/, high_entropy_secrets/, insecure_cookies/ - Learning split: store modules with metrics and persistence SDK & Ontology: - stemedb-ontology SDK with fluent builders and StemeDB client - Pharma domain extractors for FDA Orange Book data - Consumer health UAT test infrastructure Code Quality: - Fixed clippy warnings (needless_borrows_for_generic_args) - Added KVStore trait imports where needed - Fixed utoipa path re-exports for OpenAPI docs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.9 KiB
Future UAT Scenarios
Scenarios tested and deferred, with actual results from 2026-02-05 testing.
Scenario: Multi-Pack Conflict Resolution
Status: TESTED - Current behavior documented Priority: Medium Trigger: When enterprises need to combine policies from multiple sources
User Story
As a compliance officer, when Pack A (Security Team) says TLS 1.2 and Pack B (Vendor Compliance) says TLS 1.3, I need to see both conflicting policies and understand how to resolve them.
Test Results (2026-02-05)
Script: uat/scripts/test-multi-pack-conflict.sh
Findings:
- Both packs import successfully
- Second import OVERWRITES the first (same subject key in PackSourceStore)
- Both assertions exist in storage (content-addressed = different hashes for different values)
- But policy_source only shows the LAST imported pack
Example Output:
{
"sources": [
{
"path": "code://standard/tls/min_version",
"policy_source": {
"pack_name": "Compliance-Team", // <- Only last pack shows
"pack_version": "0.1.0"
},
"value": 1.2
},
{
"path": "code://standard/tls/min_version",
"policy_source": {
"pack_name": "Compliance-Team", // <- Same, even though first was Security-Team
"pack_version": "0.1.0"
},
"value": 1.3
}
]
}
Current Behavior: Last imported pack wins for policy_source attribution.
Future Enhancement (if needed)
- Store multiple pack sources per subject (append, not overwrite)
- Show all contributing packs in conflict report
- Add
pack_priorityfield to control precedence - Support pack composition (extend other packs)
Scenario: Pack Version Update
Status: PASS - Working correctly Priority: Medium
User Story
As a security lead, when I update our standards pack from v1.0 to v2.0, I need the attribution to update so teams know they're running against current policy.
Test Results (2026-02-05)
Script: uat/scripts/test-pack-version-update.sh
Results: 6/6 tests passed
| Test | Status |
|---|---|
| Create v1.0 pack | PASS |
| Import v1.0 | PASS |
| v1.0 attribution shown | PASS |
| Create v2.0 pack | PASS |
| Import v2.0 | PASS |
| v2.0 attribution shown | PASS |
| v1.0 no longer appears | PASS |
Conclusion: Pack version updates work correctly. Importing v2.0 supersedes v1.0.
Scenario: Predicate Aliases
Status: NOT IMPLEMENTED - Deferred Priority: Low Trigger: Based on enterprise feedback showing predicate naming conflicts
User Story
As a security architect, when my policy uses
required=truebut the extractor emitsenabled=true, I need them to match semantically.
Implementation Plan (when needed)
- Add
predicate_aliasesfield to Trust Pack schema - Update ConceptIndex to check aliases during lookup
- Consider default aliases:
enabled↔required↔mandatory↔enforced
Scenario: Pack Signing Key Rotation
Status: NOT IMPLEMENTED - Deferred Priority: Low Trigger: Security key management requirements
User Story
As a security admin, when our signing key is rotated, I need to re-sign all packs without losing policy content.
Implementation Plan (when needed)
- Add
aphoria policy resigncommand - Preserve pack content hash
- Update signature with new key
- Audit log for key rotation
Test Scripts
| Script | Scenario | Status |
|---|---|---|
test-enterprise-workflow.sh |
Basic Trust Pack workflow | PASS (12/12) |
test-multi-pack-conflict.sh |
Multiple packs, same concept | PASS (7/7) - documents current behavior |
test-pack-version-update.sh |
Pack version supersession | PASS (6/6) |
Feedback Collection
Enterprise feedback on these scenarios should be tracked in:
- GitHub Issues with label
enterprise-feedback - Internal
#aphoria-enterprisechannel
Last updated: 2026-02-05