GV109 makes Govenv.Project.purpose the single canonical
public project statement. The same value is projected into the README
hero and the GitHub repository description, and its governed character
limit is the GitHub description limit. Website and topics remain
canonical project metadata with target-specific read-back
verification.
{-# OPTIONS --safe #-}
module Govenv.Assurance.GV109 where
open import Agda.Builtin.Equality using (_≡_; refl)
open import Agda.Builtin.List using ([]; _∷_)
open import Agda.Builtin.Maybe using (Maybe; just; nothing)
open import Agda.Builtin.String using (String)
open import Govenv.Kernel.Assurance using (StaticEvidence; staticEvidence)
open import Govenv.Materialization
import Govenv.Materialization.Github.Repository.Description as Description
import Govenv.Materialization.Github.Repository.Topics as Topics
import Govenv.Materialization.Github.Repository.Website as Website
import Govenv.Materialization.Readme as Readme
open import Govenv.Materialization.Readme using
(Document; Block; comment; heading; paragraph; centered; strong)
open import Govenv.Project using
(purpose; purposeCharacterLimit; website; topics)
open import Govenv.Projection.Github.Repository.Description using
(renderDescription)
readmePurpose : Document → Maybe String
readmePurpose
(comment _ ∷ heading _ _ _ ∷ paragraph centered (strong value ∷ []) ∷ _) =
just value
readmePurpose _ = nothing
record Proposition : Set where
constructor satisfied
field
publicPurposeUsesGithubLimit :
purposeCharacterLimit ≡ 250
githubDescriptionIsPurpose :
renderDescription ≡ purpose
readmeHeroIsPurpose :
readmePurpose (Materialization.state Readme.materialization) ≡ just purpose
websiteRemainsCanonical :
Materialization.state Website.materialization ≡ website
topicsRemainCanonical :
Materialization.state Topics.materialization ≡ topics
descriptionKeepsReadBack :
Materialization.verification Description.materialization ≡
descriptionReadBackEquality
websiteKeepsReadBack :
Materialization.verification Website.materialization ≡
websiteReadBackEquality
topicsKeepReadBack :
Materialization.verification Topics.materialization ≡
topicsReadBackSetEquality
proof : Proposition
proof = satisfied refl refl refl refl refl refl refl refl
evidence : StaticEvidence 109
evidence = staticEvidence Proposition proof