Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,24 +71,33 @@ However, since:
- the virtual USS is declared as down at the DSS,
- it does not respond for operational intent details, and
- the conflicting operational intent is in the 'Accepted' state,
The tested USS should evaluate the conflicting operational intent as having the lowest bound priority status, i.e. a priority strictly lower than the lowest priority allowed by the local regulation.

the tested USS should evaluate the conflicting operational intent as having the lowest bound priority status, i.e. a priority strictly lower than the lowest priority allowed by the local regulation.

As such, the tested USS may either:
- Successfully plan Flight 1 over the conflicting operational intent, or
- Decide to be more conservative and reject the planning of Flight 1.

#### 🛑 Successful planning check
All flight intent data provided is correct and the USS should have either successfully planned Flight 1 per **[astm.f3548.v21.SCD0005](../../../../requirements/astm/f3548/v21.md)**,
or rejected properly the planning if it decided to be more conservative with such conflicts.
If the USS indicates that the injection attempt failed, this check will fail.
All flight intent data provided is correct and **[astm.f3548.v21.SCD0005](../../../../requirements/astm/f3548/v21.md)** allows the USS to plan an operational
intent in conflict with the pre-existing operational intent managed by a down USS by applying the lowest-bound priority
to that operational intent. If the USS indicates that the injection attempt failed, this check will fail.

Do take note that if the USS rejects the planning, this check will not fail, but the following *Rejected planning check*
will. Refer to this check for more information.
If the USS rejects the requested flight, this check will not fail, but the following *Rejected planning check* will.
Refer to this check for more information.

#### ℹ️ Rejected planning check
All flight intent data provided is correct and the USS should have either successfully planned Flight 1 or rejected
properly the planning if it decided to be more conservative with such conflicts.
If the USS rejects the planning, this check will produce a low severity finding per **[astm.f3548.v21.SCD0005](../../../../requirements/astm/f3548/v21.md)**.
ASTM F3548-21 does not require USSs to accept flight requests in all circumstances not prohibited by F3548-21. USSs may
(generally) apply any number of additional rules to determine whether or not a flight planning action is accepted by the
USS. For instance, a USS may say, "even though we're allowed to plan over unactivated op intents managed by down USSs,
we choose not to in order to avoid the small risk the USS may not realize it is down and start that flight any way."

For this reason, a USS may reject the planning request above while still complying with SCD0005 by applying the correct
priority to the pre-existing operational intent. Therefore, a rejection of the planning request does not indicate
non-compliance with SCD0005. However, because InterUSS uses successful planning as a means to measure whether a USS is
in compliance with SCD0005, rejecting the planning attempt means that the primary mechanism for inferring compliance
with **[astm.f3548.v21.SCD0005](../../../../requirements/astm/f3548/v21.md)** is not available. In this case, this check will produce a low-severity finding
to note InterUSS's inability to use this primary mechanism for SCD0005 compliance verification.

#### 🛑 Injection fidelity check

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
cleanup_flights,
submit_flight,
)
from monitoring.uss_qualifier.scenarios.scenario import TestScenario
from monitoring.uss_qualifier.scenarios.scenario import ScenarioLogicError, TestScenario
from monitoring.uss_qualifier.suites.suite import ExecutionContext


Expand Down Expand Up @@ -250,22 +250,29 @@ def _plan_flight_conflict_planned(self):
# TODO(#1326): Validate that flight as planned still allows this scenario to proceed
flight1_planned = as_planned

if resp.activity_result == PlanningActivityResult.Completed:
validator.expect_shared(flight1_planned)
elif resp.activity_result == PlanningActivityResult.Rejected:
with self.check(
"Rejected planning", [self.tested_uss.participant_id]
) as check:
with self.check(
"Rejected planning", [self.tested_uss.participant_id]
) as check:
if resp.activity_result == PlanningActivityResult.Rejected:
msg = f"{self.tested_uss.participant_id} indicated {resp.activity_result}"
if "notes" in resp and resp.notes:
msg += f' with notes "{resp.notes}"'
else:
msg += " with no notes"
check.record_failed(
summary="Warning (not a failure): planning got rejected, USS may have been more conservative",
summary="Warning (not a failure): flight was rejected, USS may have been more conservative",
details=msg,
)

if resp.activity_result == PlanningActivityResult.Completed:
validator.expect_shared(flight1_planned)
elif resp.activity_result == PlanningActivityResult.Rejected:
validator.expect_not_shared()
else:
raise ScenarioLogicError(
f"OpIntentValidator should have ensured that resp.activity_result was Completed or Rejected, but instead it was {resp.activity_result}"
)

self.end_test_step()

def _clear_op_intents(self):
Expand Down
Loading