{"Policy":"fdull.strict.v1","Specification":"1.0","FullStandardComplete":false,"Scope":"Standalone F# Release/net10.0 workspaces, including FDull\u0027s own library, CLI, worker and tests. Coverage is intentionally incomplete; see each rule\u0027s remaining work.","Rules":[{"Rule":"MUT001","Description":"Mutable bindings","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT002","Description":"Assignment and setters","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT003","Description":"Mutable fields and objects","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT004","Description":"Ref-cell capabilities","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT005","Description":"Mutable collections and builders","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT006","Description":"Mutating method references","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT007","Description":"Shared mutable state","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT008","Description":"Arrays and aliasable views","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT009","Description":"Statement loops","Implementation":["src/FDull/SafetySyntax.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MUT010","Description":"Nested mutable payloads","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST001","Description":"Downcasts","Implementation":["src/FDull/SafetySyntax.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST002","Description":"Unboxing","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST003","Description":"Indirect cast APIs","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST004","Description":"Object erasure","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST005","Description":"Runtime type dispatch","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST006","Description":"Custom conversions","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"CAST007","Description":"Unapproved numeric conversions","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Broaden numeric edge cases when admitting additional conversion helpers."},{"Rule":"NULL001","Description":"Authored null values","Implementation":["src/FDull/SafetySyntax.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NULL002","Description":"Unchecked/default construction","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NULL003","Description":"Unchecked nullability removal","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NULL004","Description":"Default/zero initialization","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NULL005","Description":"Unnormalized nullable data","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ATTR001","Description":"Unapproved attributes","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ATTR002","Description":"Mutable/null/default representation attributes","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ATTR003","Description":"Null-backed union representations","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["SafetyTests.the allocation incident also stays bounded in the authoritative worker"],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ATTR004","Description":"Attribute-based trust claims","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"REFL001","Description":"Runtime metadata capabilities","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"REFL002","Description":"Reflective/dynamic construction","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"REFL003","Description":"Uninitialized object construction","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"REFL004","Description":"Runtime code loading and evaluation","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NATIVE001","Description":"Native imports","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NATIVE002","Description":"Unsafe memory APIs","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"NATIVE003","Description":"Pointers and memory capabilities","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"DATA001","Description":"Domain materialization targets","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/Materializer.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["TransportTests.generic materializers reject direct and nested domain targets"],"Remaining":"Additional materializer libraries need their own recursive target contracts."},{"Rule":"DATA002","Description":"Raw materializers","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"DATA003","Description":"Arbitrary generic materializers","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"DATA004","Description":"Invalid transport payloads","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/Materializer.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["TransportTests.required DTO references are normalized before materialization"],"Remaining":"Expand the DTO shape matrix when admitting additional transport types."},{"Rule":"DATA005","Description":"Unnormalized boundary data","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Known serializers reject nested private domain values; this is not general interprocedural taint tracking."},{"Rule":"MODEL001","Description":"Unapproved data shapes","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs","src/FDull/SafetyDataContracts.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["ProjectTests.reusable data contracts allow helper extraction without declaration grants","ProjectTests.review exposes nested requirements before outer type approval","ProjectTests.reusable data contracts reject unsafe nested payloads even with type grants","ProjectTests.reusable data contracts do not approve methods or domain materialization"],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"MODEL002","Description":"Public invariant-bearing representations","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/WorkspacePolicy.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["SafetyTests.protected invariant designations require private representations"],"Remaining":"New invariant-bearing types require explicit designation and behavioral properties."},{"Rule":"MODEL003","Description":"Unchecked domain construction helpers","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/WorkspacePolicy.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Expand adversarial constructor and friend-assembly compatibility cases across consumer project graphs."},{"Rule":"MODEL004","Description":"Erased domain case coverage","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"EFFECT001","Description":"Unapproved external APIs","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"EFFECT002","Description":"Ambient effects","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"EFFECT003","Description":"Executable/resource data capabilities","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs","src/FDull/WorkspacePolicy.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["ProjectTests.captured callback permissions survive formatting without authorizing new effects","ProjectTests.review exposes nested requirements before outer type approval","ProjectTests.generated capture keys distinguish bindings parameters and authored numbered names","ProjectTests.capture identities separate types and reject ambiguous shadowed bindings"],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"EFFECT004","Description":"Unapproved executable abstractions","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ERR001","Description":"Application exception catches","Implementation":["src/FDull/SafetySyntax.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ERR002","Description":"Throwing for application flow","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ERR003","Description":"Indirect catch/raise wrappers","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ERR004","Description":"Broad adapter exception translation","Implementation":["src/FDull/SafetyAnalysis.fs","src/FDull/WorkspacePolicy.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Broaden behavioral translation cases for newly admitted adapter exception types."},{"Rule":"ERR005","Description":"Exception-bearing business data","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ERR006","Description":"Partial/throwing operations","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"ERR007","Description":"Obvious unobserved results","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Expand documented local-flow cases; no claim of linear Result use."},{"Rule":"ERR008","Description":"Implicit error-to-success recovery","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"New recovery helpers need exact contracts and failure-path behavior tests."},{"Rule":"ERR009","Description":"Resources in pure code","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ERR010","Description":"Blocking/background execution and cancellation","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"New providers need cancellation and lifecycle conformance tests."},{"Rule":"STYLE001","Description":"Backward pipes","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"STYLE002","Description":"Tuple pipes and custom operators","Implementation":["src/FDull/SafetySyntax.fs","src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":[],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"STYLE003","Description":"Raw accumulation outside approved helpers","Implementation":["src/FDull/SafetyAnalysis.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["ProjectTests.fold review guidance matches scoped permissions and retains pure restrictions"],"Remaining":"No raw folds are granted in this workspace; additional helper grants need behavioral evidence."},{"Rule":"ARCH001","Description":"Forbidden dependency directions","Implementation":["src/FDull/Project.fs","src/FDull/WorkspaceAudit.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["ProjectTests.every approved graph edge is exact and shipping cannot acquire a test dependency","ProjectTests.initialization discovers reviewed mixed-language scope and exports Web SDK inputs without compiling"],"Remaining":"The preview supports an exact, acyclic Release/net10.0 F# project graph; cross-language references require pinned CSharp or Visual Basic projects inside reviewed external implementation scopes."},{"Rule":"ARCH002","Description":"Unapproved dependency assets","Implementation":["src/FDull/Project.fs","src/FDull/WorkspaceAudit.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["ProjectTests.initialization discovers reviewed mixed-language scope and exports Web SDK inputs without compiling","ProjectTests.excluded conditional project is neither exported nor built and remains visible in reports","ProjectTests.checked ownership of a shared excluded source still reports violations"],"Remaining":"Complete transitive package/runtime/source/native asset inventory and tampering cases."},{"Rule":"ARCH003","Description":"Unapproved languages/scripts/build extensions","Implementation":["src/FDull/WorkspaceAudit.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["WorkspaceTests.policy and inventory drift cannot certify a workspace","ProjectTests.reusable data contracts allow helper extraction without declaration grants","WorkspaceTests.mixed-language scope and internal links preserve inventory boundaries"],"Remaining":"Extend the tested exact profile contracts when admitting another API, declaration or dependency."},{"Rule":"ARCH004","Description":"Shipping dependencies on tests/tooling","Implementation":["src/FDull/Project.fs","src/FDull/WorkspaceAudit.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["ProjectTests.every approved graph edge is exact and shipping cannot acquire a test dependency"],"Remaining":"Additional configurations and generated-source producers beyond the reviewed SDK, Web SDK, Test SDK 17.14.1, xUnit v3.1 and Aspire 13.4.6 profiles require a separate exact inventory."},{"Rule":"BUILD001","Description":"Suppression and path spoofing","Implementation":["src/FDull/SafetySyntax.fs"],"CompilingNegativeFixture":true,"OtherEvidence":["SafetyTests.valid FSharp violations have canonical diagnostics and physical locations"],"Remaining":"Complete the operation, alias, positive and protected-profile acceptance matrix."},{"Rule":"BUILD002","Description":"Compiler/toolchain policy drift","Implementation":["src/FDull/SafetyEngine.fs","src/FDull/Project.fs","src/FDull/Safety.fs","Directory.Build.targets"],"CompilingNegativeFixture":false,"OtherEvidence":["SafetyWorkerTests.compiler policy target accepts the pinned platform defaults","SafetyWorkerTests.compiler policy target rejects drift and downgrades"],"Remaining":"Complete tool/policy drift fixtures and protected release provenance."},{"Rule":"BUILD003","Description":"Incomplete analysis and checker failure","Implementation":["src/FDull/SafetyEngine.fs","src/FDull/Safety.fs","src/FDull/SafetyLimits.fs","src/FDull/WorkspaceEngine.fs","src/FDull/WorkspaceGenerated.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["SafetyTests.unsupported type nesting cannot report complete analysis","SafetyTests.unsupported expression depth fails before typed traversal","SafetyTests.diagnostic overflow cannot be a complete truncated report","SafetyTests.oversized sources are rejected before starting analysis","SafetyWorkerTests.bounded process failures terminate the worker","SafetyWorkerTests.short lived processes retain their status and streams during memory sampling","SafetyWorkerTests.crash or malformed output cannot certify inputs","SafetyWorkerTests.worker runtime configuration enforces the managed heap limit","SafetyWorkerTests.an allocation beyond the worker heap ceiling fails inside the child","WorkspaceTests.workspace reports reject inconsistent process diagnostics and observations","WorkspaceTests.mixed-language scope and internal links preserve inventory boundaries","ProjectTests.advisory review reports blockers and never infers unused contracts from partial analysis","ProjectTests.reusable data contracts allow helper extraction without declaration grants","ProjectTests.supported Web test SDK xUnit v3 and Aspire generated-source profiles are exact"],"Remaining":"Complete supported-profile/unknown-classification compatibility coverage; resource limits do not prove termination."},{"Rule":"BUILD004","Description":"Analyzed/compiled input mismatch","Implementation":["src/FDull/SafetyEngine.fs","src/FDull/Safety.fs","src/FDull/Project.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["SafetyTests.changing analyzed inputs invalidates the report","SafetyWorkerTests.changing any report authority binding cannot preserve success","SafetyWorkerTests.changing source after worker analysis invalidates its response"],"Remaining":"Install trusted artifact signing and deployment-side admission; complete compilation-race fixtures."},{"Rule":"BUILD005","Description":"Invalid protected exceptions","Implementation":["src/FDull/WorkspacePolicy.fs","src/FDull/WorkspaceAudit.fs"],"CompilingNegativeFixture":false,"OtherEvidence":["WorkspaceTests.policy and inventory drift cannot certify a workspace","WorkspaceTests.permissions bind exact owners and cannot survive as unused entries","ProjectTests.advisory review groups actual findings and preserves stale source rejection","ProjectTests.advisory review reports blockers and never infers unused contracts from partial analysis","ProjectTests.excluded project declarations and policy entries remain exact","WorkspaceTests.mixed-language scope and internal links preserve inventory boundaries"],"Remaining":"Temporary exceptions are unsupported. Organizational review identities and expiry require an external policy authority."},{"Rule":"BUILD006","Description":"Untrusted required checks or bypasses","Implementation":[],"CompilingNegativeFixture":false,"OtherEvidence":[],"Remaining":"Requires organization-owned CI/check producers, repository rulesets and deployment admission; outside the scope of a locally installed NuGet package."}]}
