Extract skill validation-case structural check
This commit is contained in:
parent
776a4e6765
commit
f549a79949
3 changed files with 49 additions and 39 deletions
|
|
@ -717,6 +717,36 @@ bool FHyperTwistSkillAuditLedgerState::IsStructurallyValid() const
|
|||
&& bCommandServiceProvenanceVisible == bComputedCommandProvenanceVisible;
|
||||
}
|
||||
|
||||
bool FHyperTwistSkillValidationContractCase::IsStructurallyValid() const
|
||||
{
|
||||
if (CaseId.IsEmpty()
|
||||
|| SkillId.IsEmpty()
|
||||
|| Kind == EHyperTwistSkillValidationContractKind::None
|
||||
|| ExecutionMode == EHyperTwistSkillValidationExecutionMode::None
|
||||
|| ExpectedCommandSurfaceId.IsEmpty()
|
||||
|| ExpectedServiceBindingId.IsEmpty()
|
||||
|| RequiredTemplateSectionIds.Num() == 0
|
||||
|| ExpectedArtifactKinds.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!HyperTwistSkillTypesInternal::AreAllStringsPopulated(RequiredTemplateSectionIds)
|
||||
|| !HyperTwistSkillTypesInternal::AreAllStringsPopulated(ExpectedArtifactKinds))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool bLiveMode =
|
||||
ExecutionMode == EHyperTwistSkillValidationExecutionMode::LiveContract;
|
||||
if (bLiveMode && !bUsesAuditLedgerEvidence)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistSkillAuthoringHarnessState::IsStructurallyValid() const
|
||||
{
|
||||
if (RegistryId.IsEmpty()
|
||||
|
|
|
|||
|
|
@ -1090,45 +1090,7 @@ struct FHyperTwistSkillValidationContractCase
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Summary;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CaseId.IsEmpty()
|
||||
|| SkillId.IsEmpty()
|
||||
|| Kind == EHyperTwistSkillValidationContractKind::None
|
||||
|| ExecutionMode == EHyperTwistSkillValidationExecutionMode::None
|
||||
|| ExpectedCommandSurfaceId.IsEmpty()
|
||||
|| ExpectedServiceBindingId.IsEmpty()
|
||||
|| RequiredTemplateSectionIds.Num() == 0
|
||||
|| ExpectedArtifactKinds.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const FString& SectionId : RequiredTemplateSectionIds)
|
||||
{
|
||||
if (SectionId.IsEmpty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (const FString& ArtifactKind : ExpectedArtifactKinds)
|
||||
{
|
||||
if (ArtifactKind.IsEmpty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const bool bLiveMode =
|
||||
ExecutionMode == EHyperTwistSkillValidationExecutionMode::LiveContract;
|
||||
if (bLiveMode && !bUsesAuditLedgerEvidence)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
|
|||
|
|
@ -293,6 +293,24 @@ Latest GitNexus wrapper hardening follow-up still on `2026-06-24`:
|
|||
- `Quality: 6139`
|
||||
- all `7` rules passing
|
||||
|
||||
Latest later vanilla-refactor follow-up still on `2026-06-24`:
|
||||
|
||||
- the next bounded structural seam then moved
|
||||
`FHyperTwistSkillValidationContractCase::IsStructurallyValid()` out of the
|
||||
public skill header and into
|
||||
`Private/HyperTwistSkills/HyperTwistSkillTypes.cpp`
|
||||
- that kept the change fully behavior-preserving while reducing another small
|
||||
piece of inline validator weight inside the public skill-type header
|
||||
- `scripts/run-hypertwist-sentrux-source-only.sh` then improved again to:
|
||||
- `Quality: 6145`
|
||||
- all `7` rules passing
|
||||
- current truthful “vanilla refactor” reading tightens one step further:
|
||||
- the larger website/manual truth lane is already drained
|
||||
- GitNexus and Sentrux ownership hardening is now landed
|
||||
- remaining structural work is now smaller still and should be chosen only
|
||||
when it materially improves maintenance rather than because a large obvious
|
||||
hotspot remains
|
||||
|
||||
Latest same-day browser/distribution continuity follow-up still on `2026-06-24`:
|
||||
|
||||
- auth-entry, protected-route loading, dashboard auth health, and release-authority fallback states now share a more deliberate operator-facing recovery shape instead of scattering single-line warnings across public and protected surfaces
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue