ci framework