Clean up FrenoCorp repo: move project code to correct repositories (FRE-4529)

- Removed literal $AGENT_HOME/ directory artifact
- Moved Lendair iOS code to ~/code/lendair/iOS/Lendair/
- Moved marketing/ to ~/code/scripter/
- Moved ShieldAI workflow doc to ~/code/ShieldAI/
- Moved CI/CD workflows and load-test scripts to ~/code/lendair/
- Moved web configs (vercel.json, .env.example, index.html) to ~/code/lendair/web/
- Removed root-level project configs (package.json, tsconfig.json, vite.config.ts, etc.)
- Removed shared/exports/ and scripts/
- Updated all 8 agent AGENTS.md files with Repository Rules section
- Clarified: FrenoCorp is for agent notes/memories/plans only, not project code

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-05-10 12:12:06 -04:00
parent d74f65b9d5
commit 97d246e98e
91 changed files with 124 additions and 10622 deletions

View File

@@ -1,13 +0,0 @@
# Shared Exports
Files in this directory are generated exports for cross-agent consumption.
## Current Exports
- `waitlist-export.csv` — 45 waitlist signups (dev.db, 2026-05-04)
- `waitlist-export.json` — Same data in JSON format
- `waitlist-export-summary.json` — Export metadata
## Usage
These files are readable by all agents. The CMO agent can read from this directory directly.

View File

@@ -1,45 +0,0 @@
{
"total_signups": 45,
"export_date": "2026-05-04T07:30:09.282Z",
"columns": [
"email",
"signup_date",
"waitlist_position",
"referral_code",
"referred_by_code",
"referrals_count",
"skipped_line"
],
"sample": [
{
"id": 1,
"email": "alex@writer.com",
"signup_date": "2026-03-18T16:50:12.929Z",
"waitlist_position": 1,
"referral_code": "7HEWI7WE",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 2,
"email": "jordan@screenplay.io",
"signup_date": "2026-03-19T16:50:12.929Z",
"waitlist_position": 2,
"referral_code": "S0CLWRLR",
"referred_by_code": "",
"referrals_count": 1,
"skipped_line": true
},
{
"id": 3,
"email": "taylor@scripts.com",
"signup_date": "2026-03-20T16:50:12.929Z",
"waitlist_position": 3,
"referral_code": "LFLE2GFG",
"referred_by_code": "",
"referrals_count": 5,
"skipped_line": false
}
]
}

View File

@@ -1,46 +0,0 @@
email,signup_date,waitlist_position,referral_code,referred_by_code,referrals_count,skipped_line
"alex@writer.com","2026-03-18T16:50:12.929Z",1,"7HEWI7WE","",0,false
"jordan@screenplay.io","2026-03-19T16:50:12.929Z",2,"S0CLWRLR","",1,true
"taylor@scripts.com","2026-03-20T16:50:12.929Z",3,"LFLE2GFG","",5,false
"morgan@films.dev","2026-03-21T16:50:12.929Z",4,"F4TGMS0X","",2,false
"casey@write.net","2026-03-22T16:50:12.929Z",5,"UKJTK9SL","",5,true
"riley@producer.app","2026-03-23T16:50:12.929Z",6,"RB8N363R","S0CLWRLR",0,false
"quinn@story.co","2026-03-24T16:50:12.929Z",7,"GPBVR7JF","LFLE2GFG",0,false
"avery@drama.io","2026-03-25T16:50:12.929Z",8,"DAXXIC6R","F4TGMS0X",0,false
"blake@scene.work","2026-03-26T16:50:12.929Z",9,"I86T59OU","",0,false
"cameron@reel.dev","2026-03-27T16:50:12.929Z",10,"C9XGU8IN","",0,false
"dakota@plot.net","2026-03-28T16:50:12.929Z",11,"701QTQSL","",0,false
"ellis@cinema.app","2026-03-29T16:50:12.929Z",12,"QPXTRBC5","",0,false
"finley@scribe.com","2026-03-30T16:50:12.929Z",13,"D141O1A1","",0,false
"harper@draft.io","2026-03-31T16:50:12.929Z",14,"S2SQRLGV","",0,false
"jay@narrative.dev","2026-04-01T16:50:12.929Z",15,"PJASWDPK","",0,false
"kendall@chapter.net","2026-04-02T16:50:12.929Z",16,"2KDBNK5G","",0,false
"logan@verse.app","2026-04-03T16:50:12.929Z",17,"CG70Y4CE","",0,false
"mason@script.co","2026-04-04T16:50:12.929Z",18,"SGFWW3XQ","",0,false
"parker@film.io","2026-04-05T16:50:12.929Z",19,"6JKZ1DH6","",0,false
"reece@story.dev","2026-04-06T16:50:12.929Z",20,"EJPKTCV1","",0,false
"sam@writing.net","2026-04-07T16:50:12.929Z",21,"XR8VRM7Q","",0,false
"shawn@page.app","2026-04-08T16:50:12.929Z",22,"8WYWCBR5","",0,false
"sydney@scene.dev","2026-04-09T16:50:12.929Z",23,"36UMEIJ8","",0,false
"wade@plot.io","2026-04-10T16:50:12.929Z",24,"XD4ZJOMI","",0,false
"zane@drama.net","2026-04-11T16:50:12.929Z",25,"ZLGT1U1F","",0,false
"emma@screen.app","2026-04-12T16:50:12.929Z",26,"QR8H82G1","",0,false
"liam@scripting.dev","2026-04-13T16:50:12.929Z",27,"0VYL89TN","",0,false
"olivia@write.io","2026-04-14T16:50:12.929Z",28,"TAD3HTAG","",0,false
"noah@story.net","2026-04-15T16:50:12.929Z",29,"4P789R09","",0,false
"ava@scribe.dev","2026-04-16T16:50:12.929Z",30,"5O8N0G0A","",0,false
"william@draft.app","2026-04-17T16:50:12.929Z",31,"GVYK4OII","",0,false
"sophia@reel.net","2026-04-18T16:50:12.929Z",32,"ZCG8CZSH","",0,false
"james@narrative.io","2026-04-19T16:50:12.929Z",33,"IQMG11BT","",0,false
"mia@chapter.dev","2026-04-20T16:50:12.929Z",34,"OUCRPVBR","",0,false
"benjamin@verse.app","2026-04-21T16:50:12.929Z",35,"CPIN2GNJ","",0,false
"charlotte@script.dev","2026-04-22T16:50:12.929Z",36,"60G8M0QF","",0,false
"elijah@film.io","2026-04-23T16:50:12.929Z",37,"OE4XG5DK","",0,false
"amelia@writing.net","2026-04-24T16:50:12.929Z",38,"0R3D78QL","",0,false
"lucas@page.app","2026-04-25T16:50:12.929Z",39,"L8ZGQF4W","",0,false
"harper@scene.dev","2026-04-26T16:50:12.929Z",40,"T12HPWFM","",0,false
"henry@plot.net","2026-04-27T16:50:12.929Z",41,"QMPP9SU1","",0,false
"evelyn@drama.io","2026-04-28T16:50:12.929Z",42,"CVJ88I2X","",0,false
"alexander@screen.net","2026-04-29T16:50:12.929Z",43,"KM62Q609","",0,false
"abigail@story.dev","2026-04-30T16:50:12.929Z",44,"X4UY6LMM","",0,false
"daniel@scribe.app","2026-05-01T16:50:12.929Z",45,"MMK1DXFC","",0,false
1 email signup_date waitlist_position referral_code referred_by_code referrals_count skipped_line
2 alex@writer.com 2026-03-18T16:50:12.929Z 1 7HEWI7WE 0 false
3 jordan@screenplay.io 2026-03-19T16:50:12.929Z 2 S0CLWRLR 1 true
4 taylor@scripts.com 2026-03-20T16:50:12.929Z 3 LFLE2GFG 5 false
5 morgan@films.dev 2026-03-21T16:50:12.929Z 4 F4TGMS0X 2 false
6 casey@write.net 2026-03-22T16:50:12.929Z 5 UKJTK9SL 5 true
7 riley@producer.app 2026-03-23T16:50:12.929Z 6 RB8N363R S0CLWRLR 0 false
8 quinn@story.co 2026-03-24T16:50:12.929Z 7 GPBVR7JF LFLE2GFG 0 false
9 avery@drama.io 2026-03-25T16:50:12.929Z 8 DAXXIC6R F4TGMS0X 0 false
10 blake@scene.work 2026-03-26T16:50:12.929Z 9 I86T59OU 0 false
11 cameron@reel.dev 2026-03-27T16:50:12.929Z 10 C9XGU8IN 0 false
12 dakota@plot.net 2026-03-28T16:50:12.929Z 11 701QTQSL 0 false
13 ellis@cinema.app 2026-03-29T16:50:12.929Z 12 QPXTRBC5 0 false
14 finley@scribe.com 2026-03-30T16:50:12.929Z 13 D141O1A1 0 false
15 harper@draft.io 2026-03-31T16:50:12.929Z 14 S2SQRLGV 0 false
16 jay@narrative.dev 2026-04-01T16:50:12.929Z 15 PJASWDPK 0 false
17 kendall@chapter.net 2026-04-02T16:50:12.929Z 16 2KDBNK5G 0 false
18 logan@verse.app 2026-04-03T16:50:12.929Z 17 CG70Y4CE 0 false
19 mason@script.co 2026-04-04T16:50:12.929Z 18 SGFWW3XQ 0 false
20 parker@film.io 2026-04-05T16:50:12.929Z 19 6JKZ1DH6 0 false
21 reece@story.dev 2026-04-06T16:50:12.929Z 20 EJPKTCV1 0 false
22 sam@writing.net 2026-04-07T16:50:12.929Z 21 XR8VRM7Q 0 false
23 shawn@page.app 2026-04-08T16:50:12.929Z 22 8WYWCBR5 0 false
24 sydney@scene.dev 2026-04-09T16:50:12.929Z 23 36UMEIJ8 0 false
25 wade@plot.io 2026-04-10T16:50:12.929Z 24 XD4ZJOMI 0 false
26 zane@drama.net 2026-04-11T16:50:12.929Z 25 ZLGT1U1F 0 false
27 emma@screen.app 2026-04-12T16:50:12.929Z 26 QR8H82G1 0 false
28 liam@scripting.dev 2026-04-13T16:50:12.929Z 27 0VYL89TN 0 false
29 olivia@write.io 2026-04-14T16:50:12.929Z 28 TAD3HTAG 0 false
30 noah@story.net 2026-04-15T16:50:12.929Z 29 4P789R09 0 false
31 ava@scribe.dev 2026-04-16T16:50:12.929Z 30 5O8N0G0A 0 false
32 william@draft.app 2026-04-17T16:50:12.929Z 31 GVYK4OII 0 false
33 sophia@reel.net 2026-04-18T16:50:12.929Z 32 ZCG8CZSH 0 false
34 james@narrative.io 2026-04-19T16:50:12.929Z 33 IQMG11BT 0 false
35 mia@chapter.dev 2026-04-20T16:50:12.929Z 34 OUCRPVBR 0 false
36 benjamin@verse.app 2026-04-21T16:50:12.929Z 35 CPIN2GNJ 0 false
37 charlotte@script.dev 2026-04-22T16:50:12.929Z 36 60G8M0QF 0 false
38 elijah@film.io 2026-04-23T16:50:12.929Z 37 OE4XG5DK 0 false
39 amelia@writing.net 2026-04-24T16:50:12.929Z 38 0R3D78QL 0 false
40 lucas@page.app 2026-04-25T16:50:12.929Z 39 L8ZGQF4W 0 false
41 harper@scene.dev 2026-04-26T16:50:12.929Z 40 T12HPWFM 0 false
42 henry@plot.net 2026-04-27T16:50:12.929Z 41 QMPP9SU1 0 false
43 evelyn@drama.io 2026-04-28T16:50:12.929Z 42 CVJ88I2X 0 false
44 alexander@screen.net 2026-04-29T16:50:12.929Z 43 KM62Q609 0 false
45 abigail@story.dev 2026-04-30T16:50:12.929Z 44 X4UY6LMM 0 false
46 daniel@scribe.app 2026-05-01T16:50:12.929Z 45 MMK1DXFC 0 false

View File

@@ -1,452 +0,0 @@
[
{
"id": 1,
"email": "alex@writer.com",
"signup_date": "2026-03-18T16:50:12.929Z",
"waitlist_position": 1,
"referral_code": "7HEWI7WE",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 2,
"email": "jordan@screenplay.io",
"signup_date": "2026-03-19T16:50:12.929Z",
"waitlist_position": 2,
"referral_code": "S0CLWRLR",
"referred_by_code": "",
"referrals_count": 1,
"skipped_line": true
},
{
"id": 3,
"email": "taylor@scripts.com",
"signup_date": "2026-03-20T16:50:12.929Z",
"waitlist_position": 3,
"referral_code": "LFLE2GFG",
"referred_by_code": "",
"referrals_count": 5,
"skipped_line": false
},
{
"id": 4,
"email": "morgan@films.dev",
"signup_date": "2026-03-21T16:50:12.929Z",
"waitlist_position": 4,
"referral_code": "F4TGMS0X",
"referred_by_code": "",
"referrals_count": 2,
"skipped_line": false
},
{
"id": 5,
"email": "casey@write.net",
"signup_date": "2026-03-22T16:50:12.929Z",
"waitlist_position": 5,
"referral_code": "UKJTK9SL",
"referred_by_code": "",
"referrals_count": 5,
"skipped_line": true
},
{
"id": 6,
"email": "riley@producer.app",
"signup_date": "2026-03-23T16:50:12.929Z",
"waitlist_position": 6,
"referral_code": "RB8N363R",
"referred_by_code": "S0CLWRLR",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 7,
"email": "quinn@story.co",
"signup_date": "2026-03-24T16:50:12.929Z",
"waitlist_position": 7,
"referral_code": "GPBVR7JF",
"referred_by_code": "LFLE2GFG",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 8,
"email": "avery@drama.io",
"signup_date": "2026-03-25T16:50:12.929Z",
"waitlist_position": 8,
"referral_code": "DAXXIC6R",
"referred_by_code": "F4TGMS0X",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 9,
"email": "blake@scene.work",
"signup_date": "2026-03-26T16:50:12.929Z",
"waitlist_position": 9,
"referral_code": "I86T59OU",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 10,
"email": "cameron@reel.dev",
"signup_date": "2026-03-27T16:50:12.929Z",
"waitlist_position": 10,
"referral_code": "C9XGU8IN",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 11,
"email": "dakota@plot.net",
"signup_date": "2026-03-28T16:50:12.929Z",
"waitlist_position": 11,
"referral_code": "701QTQSL",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 12,
"email": "ellis@cinema.app",
"signup_date": "2026-03-29T16:50:12.929Z",
"waitlist_position": 12,
"referral_code": "QPXTRBC5",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 13,
"email": "finley@scribe.com",
"signup_date": "2026-03-30T16:50:12.929Z",
"waitlist_position": 13,
"referral_code": "D141O1A1",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 14,
"email": "harper@draft.io",
"signup_date": "2026-03-31T16:50:12.929Z",
"waitlist_position": 14,
"referral_code": "S2SQRLGV",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 15,
"email": "jay@narrative.dev",
"signup_date": "2026-04-01T16:50:12.929Z",
"waitlist_position": 15,
"referral_code": "PJASWDPK",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 16,
"email": "kendall@chapter.net",
"signup_date": "2026-04-02T16:50:12.929Z",
"waitlist_position": 16,
"referral_code": "2KDBNK5G",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 17,
"email": "logan@verse.app",
"signup_date": "2026-04-03T16:50:12.929Z",
"waitlist_position": 17,
"referral_code": "CG70Y4CE",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 18,
"email": "mason@script.co",
"signup_date": "2026-04-04T16:50:12.929Z",
"waitlist_position": 18,
"referral_code": "SGFWW3XQ",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 19,
"email": "parker@film.io",
"signup_date": "2026-04-05T16:50:12.929Z",
"waitlist_position": 19,
"referral_code": "6JKZ1DH6",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 20,
"email": "reece@story.dev",
"signup_date": "2026-04-06T16:50:12.929Z",
"waitlist_position": 20,
"referral_code": "EJPKTCV1",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 21,
"email": "sam@writing.net",
"signup_date": "2026-04-07T16:50:12.929Z",
"waitlist_position": 21,
"referral_code": "XR8VRM7Q",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 22,
"email": "shawn@page.app",
"signup_date": "2026-04-08T16:50:12.929Z",
"waitlist_position": 22,
"referral_code": "8WYWCBR5",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 23,
"email": "sydney@scene.dev",
"signup_date": "2026-04-09T16:50:12.929Z",
"waitlist_position": 23,
"referral_code": "36UMEIJ8",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 24,
"email": "wade@plot.io",
"signup_date": "2026-04-10T16:50:12.929Z",
"waitlist_position": 24,
"referral_code": "XD4ZJOMI",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 25,
"email": "zane@drama.net",
"signup_date": "2026-04-11T16:50:12.929Z",
"waitlist_position": 25,
"referral_code": "ZLGT1U1F",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 26,
"email": "emma@screen.app",
"signup_date": "2026-04-12T16:50:12.929Z",
"waitlist_position": 26,
"referral_code": "QR8H82G1",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 27,
"email": "liam@scripting.dev",
"signup_date": "2026-04-13T16:50:12.929Z",
"waitlist_position": 27,
"referral_code": "0VYL89TN",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 28,
"email": "olivia@write.io",
"signup_date": "2026-04-14T16:50:12.929Z",
"waitlist_position": 28,
"referral_code": "TAD3HTAG",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 29,
"email": "noah@story.net",
"signup_date": "2026-04-15T16:50:12.929Z",
"waitlist_position": 29,
"referral_code": "4P789R09",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 30,
"email": "ava@scribe.dev",
"signup_date": "2026-04-16T16:50:12.929Z",
"waitlist_position": 30,
"referral_code": "5O8N0G0A",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 31,
"email": "william@draft.app",
"signup_date": "2026-04-17T16:50:12.929Z",
"waitlist_position": 31,
"referral_code": "GVYK4OII",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 32,
"email": "sophia@reel.net",
"signup_date": "2026-04-18T16:50:12.929Z",
"waitlist_position": 32,
"referral_code": "ZCG8CZSH",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 33,
"email": "james@narrative.io",
"signup_date": "2026-04-19T16:50:12.929Z",
"waitlist_position": 33,
"referral_code": "IQMG11BT",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 34,
"email": "mia@chapter.dev",
"signup_date": "2026-04-20T16:50:12.929Z",
"waitlist_position": 34,
"referral_code": "OUCRPVBR",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 35,
"email": "benjamin@verse.app",
"signup_date": "2026-04-21T16:50:12.929Z",
"waitlist_position": 35,
"referral_code": "CPIN2GNJ",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 36,
"email": "charlotte@script.dev",
"signup_date": "2026-04-22T16:50:12.929Z",
"waitlist_position": 36,
"referral_code": "60G8M0QF",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 37,
"email": "elijah@film.io",
"signup_date": "2026-04-23T16:50:12.929Z",
"waitlist_position": 37,
"referral_code": "OE4XG5DK",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 38,
"email": "amelia@writing.net",
"signup_date": "2026-04-24T16:50:12.929Z",
"waitlist_position": 38,
"referral_code": "0R3D78QL",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 39,
"email": "lucas@page.app",
"signup_date": "2026-04-25T16:50:12.929Z",
"waitlist_position": 39,
"referral_code": "L8ZGQF4W",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 40,
"email": "harper@scene.dev",
"signup_date": "2026-04-26T16:50:12.929Z",
"waitlist_position": 40,
"referral_code": "T12HPWFM",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 41,
"email": "henry@plot.net",
"signup_date": "2026-04-27T16:50:12.929Z",
"waitlist_position": 41,
"referral_code": "QMPP9SU1",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 42,
"email": "evelyn@drama.io",
"signup_date": "2026-04-28T16:50:12.929Z",
"waitlist_position": 42,
"referral_code": "CVJ88I2X",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 43,
"email": "alexander@screen.net",
"signup_date": "2026-04-29T16:50:12.929Z",
"waitlist_position": 43,
"referral_code": "KM62Q609",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 44,
"email": "abigail@story.dev",
"signup_date": "2026-04-30T16:50:12.929Z",
"waitlist_position": 44,
"referral_code": "X4UY6LMM",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
},
{
"id": 45,
"email": "daniel@scribe.app",
"signup_date": "2026-05-01T16:50:12.929Z",
"waitlist_position": 45,
"referral_code": "MMK1DXFC",
"referred_by_code": "",
"referrals_count": 0,
"skipped_line": false
}
]

View File

@@ -1,83 +0,0 @@
# ShieldAI Code Review Workflow
## Current State (as of May 2, 2026)
### PR Backlog Status
- **Open PRs**: 0 (pending commits pushed to master)
- **Pending commits**: 1 commit pushed (FRE-4604) — remaining 6 were previously pushed
- **Last review cycle**: FRE-4500, FRE-4499, FRE-4612 (security findings — all done)
- **Branch protection**: Configured (see `branch-protection-rules.yaml`)
- **PR template**: Configured (`.gitea/pull_request_templates/default.md`)
### Resolved Bottlenecks
1. ✅ PR-based workflow established with PR template
2. ✅ Branch protection rules documented and configured
3. ✅ Code review checklist integrated into PR template
4. ✅ Security review findings integrated (FRE-4499, FRE-4500, FRE-4612 all done)
## PR Process
1. **Feature branch creation** from `gt/master`
2. **Development commits** with conventional commit format (include issue ID: `FRE-XXXX: description`)
3. **PR creation** against `gt/master`
4. **Required reviews**:
- Code Reviewer — all PRs
- Security Reviewer — for security-sensitive changes
5. **CI checks** pass (lint, typecheck, test)
6. **Merge** via squash or rebase
### Code Review Checklist
- [ ] Security impact assessment
- [ ] Test coverage verification
- [ ] Type checking (TypeScript)
- [ ] Linting compliance
- [ ] Documentation updates
- [ ] Breaking changes documented
- [ ] Backward compatibility verified
### Branch Protection Rules
See `branch-protection-rules.yaml` for the full configuration. Summary:
- **Protected branch**: `gt/master`
- **Required reviews**: 1 approved review before merge
- **Required status checks**: lint, typecheck, test
- **Enforce admins**: false (admins can bypass during emergencies)
- **Allow force pushes**: true (for recovery scenarios)
## Review Assignment Policy
| Change Type | Required Reviewers |
|-------------|-------------------|
| General code | Code Reviewer |
| Security-critical | Code Reviewer + Security Reviewer |
| API contracts | Code Reviewer + CTO |
| Database schema | Code Reviewer + Senior Engineer |
## Review Pipeline
```
Engineer implements → marks in_review → Security Reviewer reviews → Code Reviewer reviews → Done
```
## Metrics to Track
- PR cycle time (creation to merge)
- Review turnaround time
- PR size (lines changed)
- Review comments per PR
- Merge conflict frequency
## Contribution Guidelines
1. Always create a feature branch from `gt/master`
2. Use conventional commit format: `type(scope): description (FRE-XXXX)`
3. Include tests for new functionality
4. Update documentation for API changes
5. Run lint and typecheck before pushing
6. Create PR with filled template before requesting review
7. Address all review comments before merge
---
*Updated from FRE-4556 audit, implemented in FRE-4661*