Files
hamza.khyari b028c80cab
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 18s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 41s
CI / unit_tests (pull_request) Successful in 2m29s
CI / integration_tests (pull_request) Successful in 3m2s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 4m28s
CI / benchmark-regression (pull_request) Successful in 29m5s
feat(acms): add scoped backend view filtering
Add project-resource isolation to the ACMS context tier system via
ScopedBackendView, ResourceScope, alias resolution, DAG expansion,
and enforcement hooks.

Core types (scoped_view.py): ResourceScope, ScopeViolationError,
ScopedBackendView, ScopedBackendSet, create_scoped_backend_set.

Scope resolution (scope_resolution.py): ResourceAliasResolver,
validate_project_scope, validate_resource_scope, resolve_resource_scope
with registry_lookup callback for DAG expansion.

Tier integration (scoped_tiers.py): ScopedTierMixin with get_scoped,
get_scoped_by_resource, validate_fragment_scope, store_with_scope_check,
get_scoped_metrics mixed into ContextTierService.

Backward compat: tiers.py re-exports ScopedBackendView.

Tests: 74 Behave scenarios (235 steps), 8 Robot Framework cases,
7 ASV benchmark suites. Lint and typecheck clean.

ISSUES CLOSED: #193
2026-03-06 00:49:33 +00:00

74 lines
3.4 KiB
Plaintext

*** Settings ***
Documentation Smoke tests for ACMS Scoped Backend View filtering
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_scoped_view.py
*** Test Cases ***
ResourceScope Creation And Containment
[Documentation] Verify ResourceScope creation, containment checks, and temporal default
${result}= Run Process ${PYTHON} ${HELPER} resource-scope cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-resource-scope-ok
ResourceScope Path Filtering
[Documentation] Verify include/exclude path glob matching with recursive patterns
${result}= Run Process ${PYTHON} ${HELPER} path-filtering cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-path-filtering-ok
ScopedBackendView Fragment Filtering
[Documentation] Verify fragment visibility filtering by project and resource
${result}= Run Process ${PYTHON} ${HELPER} fragment-filtering cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-fragment-filtering-ok
ScopedBackendView Backend Proxying
[Documentation] Verify text/vector/graph search proxying with scope injection
${result}= Run Process ${PYTHON} ${HELPER} backend-proxying cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-backend-proxying-ok
ScopedBackendSet Integration
[Documentation] Verify ScopedBackendSet wraps multiple backends with scope enforcement
${result}= Run Process ${PYTHON} ${HELPER} backend-set cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-backend-set-ok
Scope Validation Guards
[Documentation] Verify validate_project_scope and validate_resource_scope raise correctly
${result}= Run Process ${PYTHON} ${HELPER} scope-validation cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-scope-validation-ok
ResourceAliasResolver
[Documentation] Verify alias resolution, resolve_many, and uniqueness validation
${result}= Run Process ${PYTHON} ${HELPER} alias-resolver cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-alias-resolver-ok
Resolve Resource Scope With Filters
[Documentation] Verify resolve_resource_scope with include/exclude allowlist/denylist
${result}= Run Process ${PYTHON} ${HELPER} resolve-scope cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} scoped-view-resolve-scope-ok