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:
@@ -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.
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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,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
|
||||
}
|
||||
]
|
||||
@@ -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*
|
||||
Reference in New Issue
Block a user