-
Notifications
You must be signed in to change notification settings - Fork 78
feat: entitlements.py — security & ATS audit #59
Copy link
Copy link
Open
Labels
P3Polish and low-urgency itemsPolish and low-urgency itemsai-shippableDelegatable to AI agents — clarity:4+ and risk:2 or lowerDelegatable to AI agents — clarity:4+ and risk:2 or lowerblast:1Single file — one view or one service, no ripple effectsSingle file — one view or one service, no ripple effectsclarity:4Clear spec, minor ambiguities — AI-shippable with light reviewClear spec, minor ambiguities — AI-shippable with light reviewenhancementNew feature or requestNew feature or requestrisk:1Isolated change, well-tested area, hard to breakIsolated change, well-tested area, hard to breaksize:SStraightforward, few filesStraightforward, few filestype:featureNew functionality or capabilityNew functionality or capability
Description
Metadata
Metadata
Assignees
Labels
P3Polish and low-urgency itemsPolish and low-urgency itemsai-shippableDelegatable to AI agents — clarity:4+ and risk:2 or lowerDelegatable to AI agents — clarity:4+ and risk:2 or lowerblast:1Single file — one view or one service, no ripple effectsSingle file — one view or one service, no ripple effectsclarity:4Clear spec, minor ambiguities — AI-shippable with light reviewClear spec, minor ambiguities — AI-shippable with light reviewenhancementNew feature or requestNew feature or requestrisk:1Isolated change, well-tested area, hard to breakIsolated change, well-tested area, hard to breaksize:SStraightforward, few filesStraightforward, few filestype:featureNew functionality or capabilityNew functionality or capability
Problem
App Store rejections from missing
NS*UsageDescriptionstrings, weak ATS configs, or improper entitlements are preventable but go unchecked until submission day.Sketch
Output reports declared entitlements, ATS dictionary, all
NS*UsageDescriptionstrings, and flags common rejection causes (e.g. missing usage description for a declared entitlement,NSAllowsArbitraryLoads=YES).Reuses
plistlibfor Info.plist parsingsubprocess.run(["codesign", "-d", "--entitlements", "-", ...])for entitlementsOpen questions
.appbundle vs Xcode project file? (Built bundle is more accurate — reflects merged Info.plist.)Privacy Manifest(PrivacyInfo.xcprivacy)?Definition of done
--json,--help, SKILL.md updatedPart of the v2.0 coverage expansion epic.