Operational Data Models
Entitlement Status
Compare Grant to Role
A role model can stay simple when it checks one grant against a small expected-permission list. The selector changes the role under review.
Program
Play the program to choose the role and inspect whether the grant is expected.
entitlement_status_model.dart
Replay: real traced execution (multi-file project)
void main() {
var role = 'analyst';
var grant = 'deploy';
var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];
var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';
var line = '$role grant=$grant status=$auditStatus';
print(line);
}
void main() {
var role = 'admin';
var grant = 'deploy';
var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];
var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';
var line = '$role grant=$grant status=$auditStatus';
print(line);
}
role ← analyst
1void main() {2 var role = 'analyst';3 var grant = 'deploy';values this stepanalystrolegrant ← deploy
2var role = 'analyst';3var grant = 'deploy';4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];values this stepdeploygrantallowed ← read
3var grant = 'deploy';4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';values this stepreadallowedanalystroleauditStatus ← unexpected
4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';6var line = '$role grant=$grant status=$auditStatus';values this stepunexpectedauditStatusreadalloweddeploygrantline ← analyst grant=deploy status=unexpected
5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';6var line = '$role grant=$grant status=$auditStatus';7print(line);values this stepanalyst grant=deploy status=unexpectedlineanalystroledeploygrantunexpectedauditStatusprint(line);
6 var line = '$role grant=$grant status=$auditStatus';7 print(line);8}outputanalyst grant=deploy status=unexpectedvalues this stepanalyst grant=deploy status=unexpectedline
role ← admin
1void main() {2 var role = 'admin';3 var grant = 'deploy';values this stepadminrolegrant ← deploy
2var role = 'admin';3var grant = 'deploy';4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];values this stepdeploygrantallowed ← deploy, read
3var grant = 'deploy';4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';values this stepdeploy, readallowedadminroleauditStatus ← expected
4var allowed = role == 'admin' ? ['deploy', 'read'] : ['read'];5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';6var line = '$role grant=$grant status=$auditStatus';values this stepexpectedauditStatusdeploy, readalloweddeploygrantline ← admin grant=deploy status=expected
5var auditStatus = allowed.contains(grant) ? 'expected' : 'unexpected';6var line = '$role grant=$grant status=$auditStatus';7print(line);values this stepadmin grant=deploy status=expectedlineadminroledeploygrantexpectedauditStatusprint(line);
6 var line = '$role grant=$grant status=$auditStatus';7 print(line);8}outputadmin grant=deploy status=expectedvalues this stepadmin grant=deploy status=expectedline
role selector
`role` chooses which permission list is expected.
contains
`allowed.contains(grant)` performs the membership check.
audit status
The report labels the grant as expected or unexpected for the chosen role.