[E00-S05-T01] Implement CI quality baseline (required PR stages) #187
Closed
opened 2026-08-27 00:08:47 +00:00 by kpcto
·
26 comments
Labels
Clear labels
agent/analyst-drafted
agent/analyst-drafted
needs/human-decision
needs/human-decision
needs/security-review
needs/security-review
tier/t0
tier/t1
tier/t2
tier/t3
kind
bug
kind
bug
kind
epic
kind
epic
kind
initiative
EPPP programme initiative
kind
story
kind
story
kind
task
EPPP engineering card/task decomposed from a story
kind
toil
kind
toil
loop
1
loop
1
loop
2
loop
2
loop
3
loop
3
risk
agent-full
risk
agent-full
risk
human-gated
risk
human-gated
risk
human-only
risk
human-only
size
l
size
l
size
m
size
m
size
s
size
s
status
blocked
status
blocked
status
done
Workflow: Done
status
in-progress
status
in-progress
status
proposed
status
proposed
status
ready
status
ready
status
review
status
review
stream
checkout
stream
checkout
stream
onboarding
stream
onboarding
stream
platform
stream
platform
trivial — implementer only, auto-merge
standard — implementer + reviewer + tester
complex — security if triggered, human merge
critical — full chain + security, human merge
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Fabrika/PersonalBlog#187
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Intent
Implement the CI quality baseline so pull requests run the required quality stages in order.
Acceptance criteria
actions/checkout@<full-sha> # v4.x.y); no floating tags (grep 'uses: actions/.*@v'must return nothing)permissions: contents: readblock; no job inherits default token scopes and no job declares any additional scopeCriterion → test/gate mapping
tests/ci-stages.test.mjs—frozen-installis the first job and every later stage declaresneedson its predecessortests/ci-stages.test.mjs— each stage job exists with the expected commands (pnpm typecheck,pnpm lint, the unit/architecture/postgres-integrationnode --testruns)tests/ci-stages.test.mjs—build-appsbuilds the apps group (./apps/**) and verifiesapps/server/dist/index.jstests/ci-stages.test.mjs— asserts everyuses:reference is a full 40-hex commit SHA (mutation probe: a@v4floating tag fails)permissions: contents: readat the workflow leveltests/ci-stages.test.mjs— asserts a top-levelpermissions:block declaringcontents: read(mutation probe: removing the block fails)Explicitly out of scope
Test plan
tests/ci-stages.test.mjs)uses:reference in.gitea/workflows/ci.ymlis a full 40-hex commit SHA with a trailing# v…comment —grep -n 'uses: actions/.*@v'returns nothing (locked by aci-stagesassertion with a mutation probe).gitea/workflows/ci.ymldeclarespermissions: contents: readat the workflow top level —grep -n 'permissions:'shows a top-level block (locked by aci-stagesassertion with a mutation probe).gitea/workflows/ci.ymlbefore mergeRollback note
Owning stream
platform
Risk quadrant
agent-full
status/readymay only be applied by a human maintainer.agent: reviewer
verdict: approve