From 5c4cd16caa2c861673dd717d1e484374feb28815 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:44:39 +0800 Subject: [PATCH 01/27] docs(compensation): read the pay model for both tracks in prose Fold the delivery-level tables into prose and add the acquisition track (commission rate, PO salary condition) that had no written home. Closes #154 --- docs/COMPENSATION.md | 71 +++++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 6b99fa7..1fee285 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -1,30 +1,65 @@ # Compensation Guide -**Goal:** Reward impact, not titles or location. Pay based on merit—what you +**Goal:** Reward impact, not titles or location. Pay is based on merit, what you deliver independently. -> Open roles: [holdex.io/c/jobs](https://holdex.io/c/jobs) | Mission: [holdex.io/about](https://holdex.io/about) +> Open roles: [holdex.io/c/jobs](https://holdex.io/c/jobs) | Mission: +> [holdex.io/about](https://holdex.io/about) ## Core Rules -1. **Clear incentives** — Same job, same level = same pay. More results = more - rewards. -1. **Simple framework** — Consistent rules for growth. +Same job, same level pays the same, and more results earn more reward. The +framework stays simple and consistent so growth doesn't get renegotiated case by +case. -## Levels & Core Skills +## Two Tracks -| Level | Key Traits & Expectations | Team Culture | Goals | Problems & Solutions | -| ---------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------- | -| **Entry** | Student mindset: Bug-free. Execute tasks. Research. Learn fast. Communicate clearly. Take feedback. | Follow [principles](https://holdex.io/c/learn/principles) & [GitHub rules](https://holdex.io/c/learn/github-strategy). | Understand goals. | Solve, estimate, research, present. Help juniors. | -| **Intermediate** | Confident executor: Solve complex problems. Lead small parts. Help Entry. Strong opinions. | Follow principles. Remind team. | Break into problems. Research solutions. | Identify real problems. Break down. Prioritize. Review juniors. | -| **Lead** | Project owner: Run full projects. Delegate. Coach team. Align with business. Inspire. | Coach others. Lead in projects. | Set timelines. Ensure delivery. | Delegate. Distribute to best fit. | -| **Partner** | Big-picture leader: Own multiple projects. Shape strategy. Say no when needed. Grow culture. | Improve rules/values. | Define business goals & priorities. | (All above + strategic input) | +Every role falls into one of two buckets: delivery or acquisition. + +Delivery covers building and rendering the service: engineering, design, and the +operational work that keeps an account running. It's paid on hard skill and +cost-effectiveness. Developers are paid per code delivered, billed hourly per +month, and the levels below set what that skill looks like at each stage. + +Acquisition covers client acquisition and retention: sales and business +development. It's commission-based, 10% of a deal's value in its first year. If +you bring in a lead that gets onboarded and you're positioned to manage that +account as its Product Owner, a salary component is added on top of commission, +sized to what the account's cashflow supports. + +The two tracks are judged on different things by design. Delivery is judged on +skill and problems solved, the same principle [DEV-440](./rules/DEV-440.md) +states for reviewing pull requests: value delivered, not effort spent. +Acquisition is judged on closed business, not on hours logged or activity +performed. Research, CRM upkeep, and reporting are methods, not deliverables: +they support acquisition work but aren't paid for on their own. + +## Delivery Levels + +Four levels, each with its own traits, culture, and goals. + +**Entry** operates with a student mindset: bug-free execution, fast learning, +clear communication, and taking feedback well. Entry follows the +[principles](https://holdex.io/c/learn/principles) and +[GitHub strategy](https://holdex.io/c/learn/github-strategy), understands the +goals handed to them, and researches, estimates, and presents solutions while +helping other Entry-level teammates. + +**Intermediate** is a confident executor: solves complex problems, leads small +parts of a project, helps Entry-level teammates, and holds strong opinions. +Intermediate breaks work into problems, researches solutions, identifies real +problems rather than symptoms, prioritizes, and reviews juniors' work. + +**Lead** owns projects end to end: runs full projects, delegates, coaches the +team, aligns work with the business, and inspires. Lead sets timelines, ensures +delivery, and distributes work to whoever fits it best. + +**Partner** thinks in the big picture: owns multiple projects, shapes strategy, +says no when needed, and grows the culture. Partner defines business goals and +priorities and improves the rules and values everyone else works within. ## Growth Path -| Level | Focus | -| ---------------- | --------------------------- | -| **Entry** | Learn → Execute → Ask | -| **Intermediate** | Solve → Teach → Lead small | -| **Lead** | Own → Delegate → Coach | -| **Partner** | Strategize → Scale → Say No | +Entry moves through learn, execute, ask. Intermediate moves through solve, +teach, lead small. Lead moves through own, delegate, coach. Partner moves +through strategize, scale, say no. From 88f7076086932f400f109d35edbe418b177b00d3 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:50:40 +0800 Subject: [PATCH 02/27] docs(compensation): point Entry at the guidelines already in this repo The old links pointed to a 404'd external principles page and an external GitHub-strategy page whose content already lives here as the DEV- rules. Point at the repo's own README instead of restating or dead-linking either. --- docs/COMPENSATION.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 1fee285..e0ab136 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -40,10 +40,9 @@ Four levels, each with its own traits, culture, and goals. **Entry** operates with a student mindset: bug-free execution, fast learning, clear communication, and taking feedback well. Entry follows the -[principles](https://holdex.io/c/learn/principles) and -[GitHub strategy](https://holdex.io/c/learn/github-strategy), understands the -goals handed to them, and researches, estimates, and presents solutions while -helping other Entry-level teammates. +[Developer Guidelines](../README.md), understands the goals handed to them, and +researches, estimates, and presents solutions while helping other Entry-level +teammates. **Intermediate** is a confident executor: solves complex problems, leads small parts of a project, helps Entry-level teammates, and holds strong opinions. From a7da1e624bc7091139279fef255be3e0d847cc32 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:54:40 +0800 Subject: [PATCH 03/27] docs(compensation): move the commission rate out of this public repo The exact percentage was visible in this repo's diff to anyone, clients and competitors included. Keep the structural fact that commission exists here and point to hr-internal (private) for the rate and how the PO salary component is sized. --- docs/COMPENSATION.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index e0ab136..dc158e0 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -22,10 +22,12 @@ cost-effectiveness. Developers are paid per code delivered, billed hourly per month, and the levels below set what that skill looks like at each stage. Acquisition covers client acquisition and retention: sales and business -development. It's commission-based, 10% of a deal's value in its first year. If -you bring in a lead that gets onboarded and you're positioned to manage that -account as its Product Owner, a salary component is added on top of commission, -sized to what the account's cashflow supports. +development. It's commission-based on closed deals, and if you bring in a lead +that gets onboarded and you're positioned to manage that account as its Product +Owner, a salary component is added on top of commission. The rate and how the +salary component is sized are documented in +[hr-internal](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) +(private): ask your lead for access. The two tracks are judged on different things by design. Delivery is judged on skill and problems solved, the same principle [DEV-440](./rules/DEV-440.md) From 05b2f1684ed073fb711e0bc67b94506129037389 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:56:55 +0800 Subject: [PATCH 04/27] docs(compensation): drop the undefined Product Owner title Partner already means a seniority level two sections up in this same doc, so reusing it for account management would make the word mean two things on one page. Describe the responsibility instead of naming an undefined role. --- docs/COMPENSATION.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index dc158e0..fbf9cc6 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -23,9 +23,9 @@ month, and the levels below set what that skill looks like at each stage. Acquisition covers client acquisition and retention: sales and business development. It's commission-based on closed deals, and if you bring in a lead -that gets onboarded and you're positioned to manage that account as its Product -Owner, a salary component is added on top of commission. The rate and how the -salary component is sized are documented in +that gets onboarded and you're positioned to manage that account going forward, +a salary component is added on top of commission. The rate and how the salary +component is sized are documented in [hr-internal](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) (private): ask your lead for access. From 46128905296d81819779e78ac98212a5db3725ed Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:05:55 +0800 Subject: [PATCH 05/27] docs(compensation): name Partner as the acquisition track's account role The org already publishes Partner (marketing-website's jobs/partner.md) as owning a client relationship end-to-end on commission plus a possible base salary, the same shape as this account-management trigger. Point at that instead of a made-up description. --- docs/COMPENSATION.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index fbf9cc6..da7d6cc 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -23,9 +23,10 @@ month, and the levels below set what that skill looks like at each stage. Acquisition covers client acquisition and retention: sales and business development. It's commission-based on closed deals, and if you bring in a lead -that gets onboarded and you're positioned to manage that account going forward, -a salary component is added on top of commission. The rate and how the salary -component is sized are documented in +that gets onboarded and you're positioned to join as +[Partner](https://github.com/holdex/marketing-website/blob/main/src/content/jobs/partner.md) +for that account, a salary component is added on top of commission. The rate and +how the salary component is sized are documented in [hr-internal](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) (private): ask your lead for access. From e8ad7dfa9b6ff365870e7b19512fbac71730abb3 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:07:06 +0800 Subject: [PATCH 06/27] docs(compensation): drop cross-repo links, keep this file self-contained holdex/developers is the shared standard other rules systems adopt, so it shouldn't depend on hr-internal (private, would 404 for most readers) or marketing-website. Say 'ask your lead' instead of linking out, and use the Partner name without linking its job posting. --- docs/COMPENSATION.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index da7d6cc..294fd2a 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -23,12 +23,10 @@ month, and the levels below set what that skill looks like at each stage. Acquisition covers client acquisition and retention: sales and business development. It's commission-based on closed deals, and if you bring in a lead -that gets onboarded and you're positioned to join as -[Partner](https://github.com/holdex/marketing-website/blob/main/src/content/jobs/partner.md) -for that account, a salary component is added on top of commission. The rate and -how the salary component is sized are documented in -[hr-internal](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) -(private): ask your lead for access. +that gets onboarded and you're positioned to join as Partner for that account, a +salary component is added on top of commission. The rate and how the salary +component is sized are set by leadership case by case: ask your lead for the +current terms. The two tracks are judged on different things by design. Delivery is judged on skill and problems solved, the same principle [DEV-440](./rules/DEV-440.md) From 9741c5db584de4909b9952239f0569194a9f6565 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:09:15 +0800 Subject: [PATCH 07/27] docs(readme): rename the docs index to Contributing Guidelines Documentation was a generic label for a file whose actual job, org-wide, is answering how work is proposed, built, reviewed, and shipped. --- docs/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index bc6ff6d..a9f61bb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,9 +1,8 @@ -# Documentation +# Contributing Guidelines The index for the `docs/` tree, grouped by who reads it. The repo-root [README](../README.md) is the entry point and links here; this file links every -document below it, so nothing is orphaned (see -[DEV-337](./rules/DEV-337.md)). +document below it, so nothing is orphaned (see [DEV-337](./rules/DEV-337.md)). ## Contributors From 118f97a1d619dc819d268b34a11ed50fd6d3bdbf Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:15:31 +0800 Subject: [PATCH 08/27] docs(advocacy): fold ADVOCACY.md into DEV-510 and DEV-520 We already have per-file rules for how work gets done; advocacy was the one policy still living as a standalone doc outside that system. Split it by checkable behavior: DEV-510 is ongoing public conduct, DEV-520 is the one-time GitHub/LinkedIn/X profile setup. --- docs/ADVOCACY.md | 52 ------------------------------------------- docs/README.md | 5 ----- docs/rules/DEV-510.md | 32 ++++++++++++++++++++++++++ docs/rules/DEV-520.md | 50 +++++++++++++++++++++++++++++++++++++++++ docs/rules/README.md | 10 ++++++++- 5 files changed, 91 insertions(+), 58 deletions(-) delete mode 100644 docs/ADVOCACY.md create mode 100644 docs/rules/DEV-510.md create mode 100644 docs/rules/DEV-520.md diff --git a/docs/ADVOCACY.md b/docs/ADVOCACY.md deleted file mode 100644 index c86fcba..0000000 --- a/docs/ADVOCACY.md +++ /dev/null @@ -1,52 +0,0 @@ -# Holdex Advocacy Guidelines - -As a Holdex team member, you must actively advocate for Holdex, its mission, and -its values. This requires: - -- Participating in aligned community events and activities. -- Sharing and engaging with Holdex content on LinkedIn and X (formerly Twitter). -- Representing Holdex professionally, ethically, and in line with our - [Code of Conduct](./CODE_OF_CONDUCT.md). - -## Social Media Presence - -Maintain a professional online presence that promotes Holdex. Upon joining, -immediately update your GitHub, LinkedIn, and X profiles to reflect your role. - -### GitHub Profile - -Exclusively promote Holdex in your bio while employed—no other brands or links. -Checklist: - -| Attribute | Requirement | -| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Name | First name only. | -| Bio | Role at Holdex (e.g., "Full-stack Engineer at @holdex"). | -| Company | @holdex | -| Location | localhost | -| Time | Uncheck; hide current time. | -| Email | Empty. | -| Social Link: X | | -| Social Link: website | | -| Social Link: LinkedIn | | -| Pinned Repositories | Holdex-related only. | -| Overview | In a public self-repo, create README.md stating your role, contributions, enthusiasm for Holdex, and links to Holdex website and GitHub org. | - -### LinkedIn Profile - -Add Holdex as your current experience in the "Experience" section. Use this -mandatory description: - -> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong -> Kong-based since 2016, we turn bold visions into secure, scalable blockchain -> solutions—driving adoption with unmatched expertise. - -### X (Twitter) Profile - -- Description: State your role at @HoldexIo. -- Link: To Holdex website/portfolio. -- Location: localhost. - -Engage actively: Share Holdex news/updates, interact with our community, respond -to comments/questions, and tag [@holdexio](https://x.com/holdex.io) and -[@zolotokrylin](https://x.com/zolotokrylin) diff --git a/docs/README.md b/docs/README.md index a9f61bb..5047b0a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,9 +1,5 @@ # Contributing Guidelines -The index for the `docs/` tree, grouped by who reads it. The repo-root -[README](../README.md) is the entry point and links here; this file links every -document below it, so nothing is orphaned (see [DEV-337](./rules/DEV-337.md)). - ## Contributors How work is proposed, built, reviewed, and shipped. @@ -15,7 +11,6 @@ How work is proposed, built, reviewed, and shipped. Working here: policies and programs. -- [Advocacy](./ADVOCACY.md) - [Application Success](./APPLICATION_SUCCESS.md) - [Code of Conduct](./CODE_OF_CONDUCT.md) - [Compensation](./COMPENSATION.md) diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md new file mode 100644 index 0000000..45f0238 --- /dev/null +++ b/docs/rules/DEV-510.md @@ -0,0 +1,32 @@ +--- +id: DEV-510 +title: "Advocate for Holdex Across Public Channels" +status: "active" +enforcement: "manual" +severity: "warning" +depends_on: [] +--- + +## Problem + +A member who never shows up publicly, skips aligned community activity, and +never engages with Holdex content leaves the mission and the work with no +visible advocate. The market and future hires read that silence as absence. + +## Solution + +Every member actively advocates for Holdex, its mission, and its values: + +1. Participate in aligned community events and activities. +1. Share and engage with Holdex content on LinkedIn and X. +1. Represent Holdex professionally and ethically, in line with the + [Code of Conduct](../CODE_OF_CONDUCT.md). + +This is ongoing conduct, not a one-time setup step. Setting up the profiles that +carry it is a separate, checkable task: see [DEV-520](./DEV-520.md). + +### Acceptance Criteria + +- [ ] The member participates in aligned community events and activities +- [ ] The member shares and engages with Holdex content on LinkedIn and X +- [ ] The member's public conduct follows the Code of Conduct diff --git a/docs/rules/DEV-520.md b/docs/rules/DEV-520.md new file mode 100644 index 0000000..a78cf66 --- /dev/null +++ b/docs/rules/DEV-520.md @@ -0,0 +1,50 @@ +--- +id: DEV-520 +title: "Set Up Your Public Profiles for Holdex" +status: "active" +enforcement: "manual" +severity: "warning" +depends_on: [] +--- + +## Problem + +A GitHub, LinkedIn, or X profile that doesn't state the member's Holdex role, or +still links to outside brands, doesn't tell the market they work here and +dilutes the identity every member's profile is meant to project. + +## Solution + +Immediately upon joining, update your GitHub, LinkedIn, and X profiles to +reflect your role at Holdex, and keep them exclusively promoting Holdex while +employed, no other brands or links. + +**GitHub**: first name only, bio states your role (for example "Full-stack +Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, +current time hidden, email left empty, social links to +[x.com/holdex.io](https://x.com/holdex.io), +[holdex.io/c/jobs](https://holdex.io/c/jobs), and +[linkedin.com/company/holdex](https://linkedin.com/company/holdex), only +Holdex-related pinned repositories, and a public self-repo README stating your +role, contributions, and enthusiasm for Holdex. + +**LinkedIn**: add Holdex as your current experience, with this mandatory +description: + +> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong +> Kong-based since 2016, we turn bold visions into secure, scalable blockchain +> solutions, driving adoption with unmatched expertise. + +**X**: description states your role at @HoldexIo, link to the Holdex website or +portfolio, location set to `localhost`. Engage actively: share Holdex news and +updates, interact with the community, and tag +[@holdexio](https://x.com/holdex.io) and +[@zolotokrylin](https://x.com/zolotokrylin). + +### Acceptance Criteria + +- [ ] GitHub profile matches every field in the Solution +- [ ] LinkedIn lists Holdex as current experience with the mandatory + description, verbatim +- [ ] X profile states the role, links to Holdex, and sets location to + `localhost` diff --git a/docs/rules/README.md b/docs/rules/README.md index 7882268..2ce5459 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -10,7 +10,8 @@ shared standard that any other rules system can adopt. ## Categories Rules are numbered by category: DEV-0xx Authoring, DEV-1xx Contribution model, -DEV-2xx Communication, DEV-3xx PR requirements, DEV-4xx Review. +DEV-2xx Communication, DEV-3xx PR requirements, DEV-4xx Review, DEV-5xx +Advocacy. ### 0. Authoring @@ -77,6 +78,13 @@ How to review, and the quality bar work is held to. - [DEV-430](./DEV-430.md): deliver bug-free work; review is a safety check - [DEV-440](./DEV-440.md): judge work by value delivered, not effort spent +### 5. Advocacy + +How members represent Holdex in public. + +- [DEV-510](./DEV-510.md): advocate for Holdex across public channels +- [DEV-520](./DEV-520.md): set up your public profiles for Holdex + ## Rule file format The file format is itself defined by the Authoring rules above: From c8e6e69c8a52accf000ca787d80d6f9f1eb84b3e Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:19:01 +0800 Subject: [PATCH 09/27] docs(rules): move the product/specs subtree facts into DEV-180 Both docs/README.md sections restated what DEV-180 and DEV-390 already state as the rule. Keep the one fact not already owned anywhere, that docs/product/ is the only subtree meant to render as an end-user docs site, in DEV-180, and let the index just link to it. --- docs/README.md | 6 +----- docs/rules/DEV-180.md | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 5047b0a..92669cb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -21,12 +21,8 @@ Working here: policies and programs. ## Product (end users) -Shipped, user-facing product documentation lives under `docs/product/`, added as -features ship. It is the only subtree meant to render as an end-user docs site. See [DEV-180](./rules/DEV-180.md) and [DEV-390](./rules/DEV-390.md). ## Specs (developers) -Intended, not-yet-shipped behavior lives under `docs/specs/`, a planning -artifact for developers rather than end-user documentation. See -[DEV-180](./rules/DEV-180.md). +See [DEV-180](./rules/DEV-180.md). diff --git a/docs/rules/DEV-180.md b/docs/rules/DEV-180.md index d4bc528..e4a4afd 100644 --- a/docs/rules/DEV-180.md +++ b/docs/rules/DEV-180.md @@ -29,6 +29,9 @@ obvious goes nowhere, because a field visible on the screen documents itself. 1. `docs/specs/.md` holds only unimplemented behavior for a Goal. The product docs hold only what ships today: `docs/product/.md` by default, or the path the repo's docs README declares where it differs. + `docs/product/` is the only subtree meant to render as an end-user docs site; + `docs/specs/` is a planning artifact for developers, not end-user + documentation. 1. Each PR that delivers behavior moves the delivered sections out of the spec. Graduate what a user cannot infer from the UI, drop the rest. A spec may graduate into more than one file. From 05c799b9ebb8a04939da413a1f3d67b5e6e05ce1 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:20:45 +0800 Subject: [PATCH 10/27] docs(readme): delete the orphaned application-success page holdex/trial now owns the whole application flow as a public issue-form and leaderboard; this static thank-you page describes a model that no longer exists and nothing links to it but this file's own index entry. Also drop the Product/Specs sections: docs/product/ and docs/specs/ don't exist in this repo, they're a convention DEV-180 defines for other repos to follow, so there was nothing left for these sections to index once trimmed. --- docs/APPLICATION_SUCCESS.md | 53 ------------------------------------- docs/README.md | 9 ------- 2 files changed, 62 deletions(-) delete mode 100644 docs/APPLICATION_SUCCESS.md diff --git a/docs/APPLICATION_SUCCESS.md b/docs/APPLICATION_SUCCESS.md deleted file mode 100644 index 8988ceb..0000000 --- a/docs/APPLICATION_SUCCESS.md +++ /dev/null @@ -1,53 +0,0 @@ -# Application Submitted! 🙌 - -We have received your application and will begin reviewing it soon. - -> [!NOTE] -> As much as we love to be fast, we are taking our time to reply to each one of -> you and it's not always immediate. Thank you for understanding. - -## What's next for me? - -Begin your [Trial Period](./TRIAL.md) - -## Frequent questions - -### Why am I here? - -GitHub is our primary tool for team collaboration. From business and down to -engineering, we prefer keeping things simple - in a single place. Since you have -applied to one of our positions, it only makes sense to keep our instructions, -guidelines, and documents related to our job positions in GitHub. Our goal with -time is to give you enough initial guidance so that you are fully prepared to -join any of our projects. We hope you'll appreciate our efforts and enjoy this -journey we've prepared ahead for you. - -### Why do I need to participate in the trial? - -It's all about the team culture that we care about. Part of this team culture is -the individual ability to figure things out, provide the right solutions, -display initiative, be honest and transparent, take responsibility, care for -details, ability to make the right calls, and much more. All of which can't be -assessed unless we collaborate on something together. It's also a good -opportunity for you to get the real feeling of working with us and see if it -fits your style. We'll understand if it doesn't align with your values and you -don't want to participate, just let us know. - -### How to participate in the trial? - -Follow the steps outlined in our [short instruction](./TRIAL.md) and it will get -you started. - -### Are we having an interview call? - -Personal time is more precious. Instead of spending 1 hour of collective time on -a "whiteboard" interview, we allow you to focus on what really matters. We -usually don't have calls until official onboarding where you get to meet the -founders and other team members. - -### What benefits do you offer? - -1. **We are 100% remote**. Work from anywhere around the world async and ad-hoc. -1. **Salary in stablecoins**. As early adopters, we are very supportive of - blockchain payroll. It is negotiable though. -1. **[PTO](./LEAVE_POLICY.md) and Holidays leave**. diff --git a/docs/README.md b/docs/README.md index 92669cb..950ccea 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,18 +11,9 @@ How work is proposed, built, reviewed, and shipped. Working here: policies and programs. -- [Application Success](./APPLICATION_SUCCESS.md) - [Code of Conduct](./CODE_OF_CONDUCT.md) - [Compensation](./COMPENSATION.md) - [Expenses](./EXPENSES.md) - [Leave Policy](./LEAVE_POLICY.md) - [Referral Program](./REFERRAL.md) - [Trial](./TRIAL.md) - -## Product (end users) - -See [DEV-180](./rules/DEV-180.md) and [DEV-390](./rules/DEV-390.md). - -## Specs (developers) - -See [DEV-180](./rules/DEV-180.md). From fd224d9eaab663b4903c9319513f1da45cd94700 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:22:25 +0800 Subject: [PATCH 11/27] docs(readme): delete the stale trial-period doc holdex/trial now runs the whole flow as automated workflows: fork, open a profile PR, pass an automated check, then the trial goal posts on its own. docs/TRIAL.md still described the old manual process, Discord private threads, pinging Mark, forking holdex-venture-studio or truflation, none of which matches what candidates see today, and nothing referenced it but this file's own index entry. --- docs/README.md | 1 - docs/TRIAL.md | 80 -------------------------------------------------- 2 files changed, 81 deletions(-) delete mode 100644 docs/TRIAL.md diff --git a/docs/README.md b/docs/README.md index 950ccea..715be37 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,4 +16,3 @@ Working here: policies and programs. - [Expenses](./EXPENSES.md) - [Leave Policy](./LEAVE_POLICY.md) - [Referral Program](./REFERRAL.md) -- [Trial](./TRIAL.md) diff --git a/docs/TRIAL.md b/docs/TRIAL.md deleted file mode 100644 index 84464db..0000000 --- a/docs/TRIAL.md +++ /dev/null @@ -1,80 +0,0 @@ -# Trial Period - -When hiring, we look for specific qualities and skills in our candidates that -can only be observed during the trial period. Skills such as the ability to -figure things out on your own, judgemental skills, decision-making, and async -collaboration are part of our internal culture and what we aim for. - -Across the whole engineering, our team operates the following way: - -1. lead engineers contribute to defining business Goals along with the Partners - and Stakeholders -1. every engineer, who is assigned to the Goal, identifies the Problems stopping - us from achieving the Goal -1. every engineer assigns themselves one Problem at a time and proposes a - solution in the form of PR. - -The main idea is to make the right contributions to achieve the Goals. All this -process happens async, without making blockers or individuals being spoon-fed -with new assignments. This is what we are expecting from you during your trial -period too. For more details please carefully read Developer Guidelines. - -## How the Trial works - -Once onboarded in the repository, you won't receive a narrow Problem to resolve. -Instead, you will be assigned to a Goal where you will join forces with our team -members and be responsible for contributing to the Goal. We'll expect you to -define a new Problem and resolve it, or pick from the ones reported by your -peers. Our [Developer Guidelines](./CONTRIBUTING.md) will help you navigate your -trial and follow our team's principles. - -## Get started - -1. Align yourself with our [Developer Guidelines](./CONTRIBUTING.md). Not - following them will result in your contribution being rejected. -1. Open a [PRIVATE THREAD](./private-thread-instruction-min.png) discussion in - our [Discord](https://discord.gg/cHxnURgGgk) and ping there Mark - (@MarkCurchin). -1. Join one of the repositories presented below or request an access. -1. Align with the Goal you will get assigned to. -1. Create a Problem (issue) or assign yourself to an existing one. -1. Describe shortly your solution and provide an ETA in the comment section. -1. Communicate in your Discord private thread your intentions to resolve a - problem and paste the GitHub link. -1. Begin solving and follow our [Engineering Guidelines](./CONTRIBUTING.md). -1. Once complete, request review according to our - [Engineering Guidelines](./CONTRIBUTING.md) and ping Mark in your Discord - private thread. - -> [!TIP] -> Repositories where you can begin your trial: -> -> - **HTML/CSS and JavaScript:** -> - **Python:** -> - **Full-stack web3:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Solidity:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Go:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Design:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **DevOps:** [for access - get in touch](https://discord.gg/cHxnURgGgk) - -## I don't have access to open a PR in the repository. What do I do? - -Fork the repository and create a PR using a -[Fork Strategy](https://gist.github.com/Chaser324/ce0505fbed06b947d962). - -## What is the trial duration? - -The trial period can take from 1 to 5 days, which can be extended if necessary. -If the PR is kept stale for a long period without previous notice, it will be -closed automatically. - -## Can I get a different task on trial? - -No. - -## Do I get hired after the trial? - -After the trial, your results will undergo a collective verification and -assessment from a board of responsible members. Since we will be in touch, we -will communicate to you personally the results of the trial and the next steps -awaiting. From b57b501934b85cccf94545535714486ec8d2a94d Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:26:56 +0800 Subject: [PATCH 12/27] docs(readme): split entry point and index by job, not by title Both files were titled Contributing Guidelines after the earlier rename, colliding with docs/CONTRIBUTING.md, the file 10+ other repos already call that by name. Rename the index to Guidelines, and move the 'developers are everyone creating value' framing there too: it explains who reads the index, so it belongs on the index, not under a For Developers heading in root whose real job is repo setup. --- README.md | 15 +++------------ docs/README.md | 6 +++++- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 43b3712..db23de6 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,8 @@ # Developer Guidelines -Welcome to our Developer Guidelines! Your journey to shape the future of AI and Fintech -starts here. - -## For Developers - -_Developers_ are everyone creating value: business developers, designers, -engineers, marketers, and beyond. We build businesses, products, partnerships, -customer relationships, processes, and delivery methods, crafting the future we -envision. - -Everything is indexed from the [documentation index](./docs/README.md): start -there to reach the contributing guide, the developer rules, and the rest. +Welcome! Your journey to shape the future of AI and Fintech starts here. Start +with the [Guidelines index](./docs/README.md) to reach the contributing guide, +the developer rules, and the rest. Subscribe to repository notifications to stay updated with frequent fixes and improvements. diff --git a/docs/README.md b/docs/README.md index 715be37..c33b62b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,8 @@ -# Contributing Guidelines +# Guidelines + +_Developers_ are everyone creating value at Holdex: business developers, +designers, engineers, marketers, and beyond. This is the index for everything +that guides that work, grouped by who reads it. ## Contributors From 0f1005ebcca539842ce51efe671448019e9d95cf Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:48:22 +0800 Subject: [PATCH 13/27] docs(rules): fix the X handle in DEV-520 x.com/holdex.io and @holdexio were wrong; holdex/marketing's Channels table (the canonical brand source), marketing-website, and trial's live templates all agree the handle is @HoldexIo at x.com/HoldexIo. Also drop the @zolotokrylin tag: it isn't verifiable anywhere in the org, marketing's own Channels table lists Vadim's LinkedIn and Bluesky but leaves X blank. Kept the values hardcoded rather than linking to holdex/marketing: that repo is private to a small group, and DEV-520 is read by every new member. --- docs/rules/DEV-520.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/rules/DEV-520.md b/docs/rules/DEV-520.md index a78cf66..a1dcd23 100644 --- a/docs/rules/DEV-520.md +++ b/docs/rules/DEV-520.md @@ -22,7 +22,7 @@ employed, no other brands or links. **GitHub**: first name only, bio states your role (for example "Full-stack Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, current time hidden, email left empty, social links to -[x.com/holdex.io](https://x.com/holdex.io), +[x.com/HoldexIo](https://x.com/HoldexIo), [holdex.io/c/jobs](https://holdex.io/c/jobs), and [linkedin.com/company/holdex](https://linkedin.com/company/holdex), only Holdex-related pinned repositories, and a public self-repo README stating your @@ -38,8 +38,7 @@ description: **X**: description states your role at @HoldexIo, link to the Holdex website or portfolio, location set to `localhost`. Engage actively: share Holdex news and updates, interact with the community, and tag -[@holdexio](https://x.com/holdex.io) and -[@zolotokrylin](https://x.com/zolotokrylin). +[@HoldexIo](https://x.com/HoldexIo). ### Acceptance Criteria From 0dba4ce4e4c22d2379cbcd5e444d5ba4bc079323 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:51:09 +0800 Subject: [PATCH 14/27] docs(rules): add Bluesky as a fourth channel in DEV-510 and DEV-520 Holdex's Bluesky presence (zolotokrylin.bsky.social) is already the third channel trial's live application template points candidates to alongside X and LinkedIn; the advocacy rules didn't mention it. --- docs/rules/DEV-510.md | 5 +++-- docs/rules/DEV-520.md | 16 +++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md index 45f0238..1bd4832 100644 --- a/docs/rules/DEV-510.md +++ b/docs/rules/DEV-510.md @@ -18,7 +18,7 @@ visible advocate. The market and future hires read that silence as absence. Every member actively advocates for Holdex, its mission, and its values: 1. Participate in aligned community events and activities. -1. Share and engage with Holdex content on LinkedIn and X. +1. Share and engage with Holdex content on LinkedIn, X, and Bluesky. 1. Represent Holdex professionally and ethically, in line with the [Code of Conduct](../CODE_OF_CONDUCT.md). @@ -28,5 +28,6 @@ carry it is a separate, checkable task: see [DEV-520](./DEV-520.md). ### Acceptance Criteria - [ ] The member participates in aligned community events and activities -- [ ] The member shares and engages with Holdex content on LinkedIn and X +- [ ] The member shares and engages with Holdex content on LinkedIn, X, and + Bluesky - [ ] The member's public conduct follows the Code of Conduct diff --git a/docs/rules/DEV-520.md b/docs/rules/DEV-520.md index a1dcd23..bd3b04f 100644 --- a/docs/rules/DEV-520.md +++ b/docs/rules/DEV-520.md @@ -9,14 +9,14 @@ depends_on: [] ## Problem -A GitHub, LinkedIn, or X profile that doesn't state the member's Holdex role, or -still links to outside brands, doesn't tell the market they work here and -dilutes the identity every member's profile is meant to project. +A GitHub, LinkedIn, X, or Bluesky profile that doesn't state the member's Holdex +role, or still links to outside brands, doesn't tell the market they work here +and dilutes the identity every member's profile is meant to project. ## Solution -Immediately upon joining, update your GitHub, LinkedIn, and X profiles to -reflect your role at Holdex, and keep them exclusively promoting Holdex while +Immediately upon joining, update your GitHub, LinkedIn, X, and Bluesky profiles +to reflect your role at Holdex, and keep them exclusively promoting Holdex while employed, no other brands or links. **GitHub**: first name only, bio states your role (for example "Full-stack @@ -40,6 +40,10 @@ portfolio, location set to `localhost`. Engage actively: share Holdex news and updates, interact with the community, and tag [@HoldexIo](https://x.com/HoldexIo). +**Bluesky**: bio states your role at Holdex, link to the Holdex website or +portfolio, and follow and engage with +[Holdex's Bluesky presence](https://bsky.app/profile/zolotokrylin.bsky.social). + ### Acceptance Criteria - [ ] GitHub profile matches every field in the Solution @@ -47,3 +51,5 @@ updates, interact with the community, and tag description, verbatim - [ ] X profile states the role, links to Holdex, and sets location to `localhost` +- [ ] Bluesky profile states the role, links to Holdex, and follows Holdex's + Bluesky presence From 1d3b51fdf7edd558fd0fa716eb1254553bff58e6 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:53:39 +0800 Subject: [PATCH 15/27] docs(rules): swap DEV-510/DEV-520 so advocacy depends on setup Every existing depends_on in this rules system points to a lower number; advocacy genuinely needs the profile to exist first, so the setup rule (foundational, no dependency) becomes DEV-510 and advocacy (depends_on DEV-510) becomes DEV-520. --- docs/rules/DEV-510.md | 52 +++++++++++++++++++++++++++++------------ docs/rules/DEV-520.md | 54 +++++++++++++------------------------------ docs/rules/README.md | 4 ++-- 3 files changed, 55 insertions(+), 55 deletions(-) diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md index 1bd4832..fe7a426 100644 --- a/docs/rules/DEV-510.md +++ b/docs/rules/DEV-510.md @@ -1,6 +1,6 @@ --- id: DEV-510 -title: "Advocate for Holdex Across Public Channels" +title: "Set Up Your Public Profiles for Holdex" status: "active" enforcement: "manual" severity: "warning" @@ -9,25 +9,47 @@ depends_on: [] ## Problem -A member who never shows up publicly, skips aligned community activity, and -never engages with Holdex content leaves the mission and the work with no -visible advocate. The market and future hires read that silence as absence. +A GitHub, LinkedIn, X, or Bluesky profile that doesn't state the member's Holdex +role, or still links to outside brands, doesn't tell the market they work here +and dilutes the identity every member's profile is meant to project. ## Solution -Every member actively advocates for Holdex, its mission, and its values: +Immediately upon joining, update your GitHub, LinkedIn, X, and Bluesky profiles +to reflect your role at Holdex, and keep them exclusively promoting Holdex while +employed, no other brands or links. -1. Participate in aligned community events and activities. -1. Share and engage with Holdex content on LinkedIn, X, and Bluesky. -1. Represent Holdex professionally and ethically, in line with the - [Code of Conduct](../CODE_OF_CONDUCT.md). +**GitHub**: first name only, bio states your role (for example "Full-stack +Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, +current time hidden, email left empty, social links to +[x.com/HoldexIo](https://x.com/HoldexIo), +[holdex.io/c/jobs](https://holdex.io/c/jobs), and +[linkedin.com/company/holdex](https://linkedin.com/company/holdex), only +Holdex-related pinned repositories, and a public self-repo README stating your +role, contributions, and enthusiasm for Holdex. -This is ongoing conduct, not a one-time setup step. Setting up the profiles that -carry it is a separate, checkable task: see [DEV-520](./DEV-520.md). +**LinkedIn**: add Holdex as your current experience, with this mandatory +description: + +> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong +> Kong-based since 2016, we turn bold visions into secure, scalable blockchain +> solutions, driving adoption with unmatched expertise. + +**X**: description states your role at @HoldexIo, link to the Holdex website or +portfolio, location set to `localhost`. Engage actively: share Holdex news and +updates, interact with the community, and tag +[@HoldexIo](https://x.com/HoldexIo). + +**Bluesky**: bio states your role at Holdex, link to the Holdex website or +portfolio, and follow and engage with +[Holdex's Bluesky presence](https://bsky.app/profile/zolotokrylin.bsky.social). ### Acceptance Criteria -- [ ] The member participates in aligned community events and activities -- [ ] The member shares and engages with Holdex content on LinkedIn, X, and - Bluesky -- [ ] The member's public conduct follows the Code of Conduct +- [ ] GitHub profile matches every field in the Solution +- [ ] LinkedIn lists Holdex as current experience with the mandatory + description, verbatim +- [ ] X profile states the role, links to Holdex, and sets location to + `localhost` +- [ ] Bluesky profile states the role, links to Holdex, and follows Holdex's + Bluesky presence diff --git a/docs/rules/DEV-520.md b/docs/rules/DEV-520.md index bd3b04f..b629333 100644 --- a/docs/rules/DEV-520.md +++ b/docs/rules/DEV-520.md @@ -1,55 +1,33 @@ --- id: DEV-520 -title: "Set Up Your Public Profiles for Holdex" +title: "Advocate for Holdex Across Public Channels" status: "active" enforcement: "manual" severity: "warning" -depends_on: [] +depends_on: ["DEV-510"] --- ## Problem -A GitHub, LinkedIn, X, or Bluesky profile that doesn't state the member's Holdex -role, or still links to outside brands, doesn't tell the market they work here -and dilutes the identity every member's profile is meant to project. +A member who never shows up publicly, skips aligned community activity, and +never engages with Holdex content leaves the mission and the work with no +visible advocate. The market and future hires read that silence as absence. ## Solution -Immediately upon joining, update your GitHub, LinkedIn, X, and Bluesky profiles -to reflect your role at Holdex, and keep them exclusively promoting Holdex while -employed, no other brands or links. +Every member actively advocates for Holdex, its mission, and its values: -**GitHub**: first name only, bio states your role (for example "Full-stack -Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, -current time hidden, email left empty, social links to -[x.com/HoldexIo](https://x.com/HoldexIo), -[holdex.io/c/jobs](https://holdex.io/c/jobs), and -[linkedin.com/company/holdex](https://linkedin.com/company/holdex), only -Holdex-related pinned repositories, and a public self-repo README stating your -role, contributions, and enthusiasm for Holdex. +1. Participate in aligned community events and activities. +1. Share and engage with Holdex content on LinkedIn, X, and Bluesky. +1. Represent Holdex professionally and ethically, in line with the + [Code of Conduct](../CODE_OF_CONDUCT.md). -**LinkedIn**: add Holdex as your current experience, with this mandatory -description: - -> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong -> Kong-based since 2016, we turn bold visions into secure, scalable blockchain -> solutions, driving adoption with unmatched expertise. - -**X**: description states your role at @HoldexIo, link to the Holdex website or -portfolio, location set to `localhost`. Engage actively: share Holdex news and -updates, interact with the community, and tag -[@HoldexIo](https://x.com/HoldexIo). - -**Bluesky**: bio states your role at Holdex, link to the Holdex website or -portfolio, and follow and engage with -[Holdex's Bluesky presence](https://bsky.app/profile/zolotokrylin.bsky.social). +This is ongoing conduct, not a one-time setup step, and it assumes the profiles +that carry it already exist: see [DEV-510](./DEV-510.md). ### Acceptance Criteria -- [ ] GitHub profile matches every field in the Solution -- [ ] LinkedIn lists Holdex as current experience with the mandatory - description, verbatim -- [ ] X profile states the role, links to Holdex, and sets location to - `localhost` -- [ ] Bluesky profile states the role, links to Holdex, and follows Holdex's - Bluesky presence +- [ ] The member participates in aligned community events and activities +- [ ] The member shares and engages with Holdex content on LinkedIn, X, and + Bluesky +- [ ] The member's public conduct follows the Code of Conduct diff --git a/docs/rules/README.md b/docs/rules/README.md index 2ce5459..8245fa3 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -82,8 +82,8 @@ How to review, and the quality bar work is held to. How members represent Holdex in public. -- [DEV-510](./DEV-510.md): advocate for Holdex across public channels -- [DEV-520](./DEV-520.md): set up your public profiles for Holdex +- [DEV-510](./DEV-510.md): set up your public profiles for Holdex +- [DEV-520](./DEV-520.md): advocate for Holdex across public channels ## Rule file format From c12b7b90c0e57a497f13875ebb96beb186508339 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:55:29 +0800 Subject: [PATCH 16/27] docs(rules): mark DEV-510 semi-automated, Wizard opens the Problem Wizard's job-application/onboarding flow creates the social-profile Problem automatically on new-member onboarding (apps/webhooks/.../templates/PROBLEM_SOCIAL_PROFILE.md in holdex/wizard); completing and verifying the fields is still manual. --- docs/rules/DEV-510.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md index fe7a426..4b40f39 100644 --- a/docs/rules/DEV-510.md +++ b/docs/rules/DEV-510.md @@ -2,7 +2,7 @@ id: DEV-510 title: "Set Up Your Public Profiles for Holdex" status: "active" -enforcement: "manual" +enforcement: "semi-automated" severity: "warning" depends_on: [] --- @@ -19,6 +19,10 @@ Immediately upon joining, update your GitHub, LinkedIn, X, and Bluesky profiles to reflect your role at Holdex, and keep them exclusively promoting Holdex while employed, no other brands or links. +Wizard opens this as a Problem automatically when a new member is onboarded, so +the check is triggered without anyone remembering to file it. Completing the +profile fields, and confirming they match, stays manual. + **GitHub**: first name only, bio states your role (for example "Full-stack Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, current time hidden, email left empty, social links to From cd416c82af3b1efcc4e87b0e426066de610a6f15 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:59:45 +0800 Subject: [PATCH 17/27] docs(rules): rename categories so Contribution isn't one category's name Authoring meant rule-authoring, but read as PR/code authoring; renamed to Rule Authoring. Contribution model implied it was the whole definition of contributing, with PR requirements and Review sitting outside it; renamed to Planning, and added a line stating the three are stages of one contribution, not separate models of it. --- docs/rules/README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 8245fa3..5a0f63f 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -4,19 +4,21 @@ The org-wide contribution conventions as a **rules system**: small numbered files that each enforce one checkable behavior. Rules are grouped by category. Each `DEV-` rule enforces one behavior and -carries acceptance criteria you can check. The Authoring category doubles as the -shared standard that any other rules system can adopt. +carries acceptance criteria you can check. The Rule Authoring category doubles +as the shared standard that any other rules system can adopt. ## Categories -Rules are numbered by category: DEV-0xx Authoring, DEV-1xx Contribution model, +Rules are numbered by category: DEV-0xx Rule Authoring, DEV-1xx Planning, DEV-2xx Communication, DEV-3xx PR requirements, DEV-4xx Review, DEV-5xx -Advocacy. +Advocacy. Planning, PR requirements, and Review are stages of the same +contribution, not competing definitions of it. -### 0. Authoring +### 0. Rule Authoring How to write a rule. These rules define the shape every other rule follows, -including their own. +including their own. Not to be confused with authoring a contribution itself, +that is Planning, PR requirements, and Review below. - [DEV-010](./DEV-010.md): enforce one behavior per rule file - [DEV-020](./DEV-020.md): structure a rule as Problem, Solution, Acceptance @@ -25,7 +27,7 @@ including their own. - [DEV-040](./DEV-040.md): reference a rule by ID as a followable link - [DEV-050](./DEV-050.md): keep the Problem statement short -### 1. Contribution model +### 1. Planning How work flows from a business aim to a delivered change: Goal, Problem, Solution, Spec. @@ -87,7 +89,7 @@ How members represent Holdex in public. ## Rule file format -The file format is itself defined by the Authoring rules above: +The file format is itself defined by the Rule Authoring rules above: [DEV-020](./DEV-020.md) fixes the body shape, [DEV-030](./DEV-030.md) the shared frontmatter, and [DEV-040](./DEV-040.md) how rules reference each other. A rules system in another repo may add its own frontmatter fields, documented in that From 320a8e1ddfc4ff59abed7a17198059a616a936a7 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:14:42 +0800 Subject: [PATCH 18/27] docs(rules): cut the redundant Rule file format section Both sentences restated content already owned elsewhere: the first just repeated the Rule Authoring list two sections above it, the second copied DEV-030's own Solution near-verbatim. --- docs/rules/README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 5a0f63f..64ebe0b 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -86,11 +86,3 @@ How members represent Holdex in public. - [DEV-510](./DEV-510.md): set up your public profiles for Holdex - [DEV-520](./DEV-520.md): advocate for Holdex across public channels - -## Rule file format - -The file format is itself defined by the Rule Authoring rules above: -[DEV-020](./DEV-020.md) fixes the body shape, [DEV-030](./DEV-030.md) the shared -frontmatter, and [DEV-040](./DEV-040.md) how rules reference each other. A rules -system in another repo may add its own frontmatter fields, documented in that -repo's own rules index. From 794e94a6c2a9055c50b7a728ce59b1c203704762 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:33:56 +0800 Subject: [PATCH 19/27] docs(rules): restore the Goal/Problem/Solution overview The prose narrating how the three pillars fit together existed before the docs were split into numbered rules, and got lost in that split. Each piece is still documented precisely (DEV-110 through DEV-180), but nothing narrated the end-to-end flow connecting them, so a first read meant reconstructing the mental model from ten files in sequence. --- docs/rules/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 64ebe0b..5bbe40f 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -29,8 +29,18 @@ that is Planning, PR requirements, and Review below. ### 1. Planning -How work flows from a business aim to a delivered change: Goal, Problem, -Solution, Spec. +Three pillars carry this: Goal, Problem, Solution. A [Goal](./DEV-110.md) states +the business aim and links exactly one [Spec](./DEV-125.md), where the team +defines that aim well enough to interview stakeholders and negotiate it until +everyone [agrees](./DEV-130.md), not just understands. Once the Spec is agreed, +[Problems are derived from it](./DEV-150.md): every barrier between today and +the Spec becomes exactly one Problem, filed as +[a sub-issue of the Goal](./DEV-160.md). A Solution is always +[a pull request](./DEV-170.md) opened against a Problem; a Problem can take more +than one PR to resolve, and the one that closes the gap +[closes the Problem with a closing keyword](./DEV-360.md). As a PR ships a piece +of the Spec, that piece [graduates out of it](./DEV-180.md), so the Spec always +holds just what is not yet built. - [DEV-110](./DEV-110.md): take ownership of a Goal - [DEV-120](./DEV-120.md): keep the Goal description to the allowed sections From ded41d09984d970a63f881ed5bed8ecfe699acaa Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:44:12 +0800 Subject: [PATCH 20/27] docs(rules): cite Planning's rule IDs per DEV-040, not by description The overview paragraph used descriptive anchors ([Goal], [agrees], [graduates out of it]) instead of the rule ID, exactly the pattern DEV-040 calls out as bad in the file that governs citations for this very rules system. Switched to the repo's own 'per DEV-XXX' style. --- docs/rules/README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 5bbe40f..b23c237 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -29,18 +29,19 @@ that is Planning, PR requirements, and Review below. ### 1. Planning -Three pillars carry this: Goal, Problem, Solution. A [Goal](./DEV-110.md) states -the business aim and links exactly one [Spec](./DEV-125.md), where the team -defines that aim well enough to interview stakeholders and negotiate it until -everyone [agrees](./DEV-130.md), not just understands. Once the Spec is agreed, -[Problems are derived from it](./DEV-150.md): every barrier between today and -the Spec becomes exactly one Problem, filed as -[a sub-issue of the Goal](./DEV-160.md). A Solution is always -[a pull request](./DEV-170.md) opened against a Problem; a Problem can take more -than one PR to resolve, and the one that closes the gap -[closes the Problem with a closing keyword](./DEV-360.md). As a PR ships a piece -of the Spec, that piece [graduates out of it](./DEV-180.md), so the Spec always -holds just what is not yet built. +Three pillars carry this: Goal, Problem, Solution. A Goal states the business +aim and links exactly one Spec, per [DEV-110](./DEV-110.md) and +[DEV-125](./DEV-125.md), where the team defines that aim well enough to +interview stakeholders and negotiate it until everyone agrees, not just +understands, per [DEV-130](./DEV-130.md). Once the Spec is agreed, Problems are +derived from it: every barrier between today and the Spec becomes exactly one +Problem, filed as a sub-issue of the Goal, per [DEV-150](./DEV-150.md) and +[DEV-160](./DEV-160.md). A Solution is always a pull request opened against a +Problem, per [DEV-170](./DEV-170.md); a Problem can take more than one PR to +resolve, and the one that closes the gap closes the Problem with a closing +keyword, per [DEV-360](./DEV-360.md). As a PR ships a piece of the Spec, that +piece graduates out of it, per [DEV-180](./DEV-180.md), so the Spec always holds +just what is not yet built. - [DEV-110](./DEV-110.md): take ownership of a Goal - [DEV-120](./DEV-120.md): keep the Goal description to the allowed sections From 05fe176135913430f353f3000d61366f7ad06816 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:46:29 +0800 Subject: [PATCH 21/27] docs(rules): fold the rule ID into the descriptive anchor 'per DEV-XXX' as a trailing citation reads awkwardly in flowing prose. Append the ID inside the existing anchor text instead, e.g. 'a Goal (DEV-110)', still satisfying DEV-040 (the ID is part of a link) without breaking the sentence. --- docs/rules/README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index b23c237..8bd6bab 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -29,19 +29,20 @@ that is Planning, PR requirements, and Review below. ### 1. Planning -Three pillars carry this: Goal, Problem, Solution. A Goal states the business -aim and links exactly one Spec, per [DEV-110](./DEV-110.md) and -[DEV-125](./DEV-125.md), where the team defines that aim well enough to -interview stakeholders and negotiate it until everyone agrees, not just -understands, per [DEV-130](./DEV-130.md). Once the Spec is agreed, Problems are -derived from it: every barrier between today and the Spec becomes exactly one -Problem, filed as a sub-issue of the Goal, per [DEV-150](./DEV-150.md) and -[DEV-160](./DEV-160.md). A Solution is always a pull request opened against a -Problem, per [DEV-170](./DEV-170.md); a Problem can take more than one PR to -resolve, and the one that closes the gap closes the Problem with a closing -keyword, per [DEV-360](./DEV-360.md). As a PR ships a piece of the Spec, that -piece graduates out of it, per [DEV-180](./DEV-180.md), so the Spec always holds -just what is not yet built. +Three pillars carry this: Goal, Problem, Solution. A +[Goal (DEV-110)](./DEV-110.md) states the business aim and links exactly one +[Spec (DEV-125)](./DEV-125.md), where the team defines that aim well enough to +interview stakeholders and negotiate it until everyone +[agrees (DEV-130)](./DEV-130.md), not just understands. Once the Spec is agreed, +[Problems are derived from it (DEV-150)](./DEV-150.md): every barrier between +today and the Spec becomes exactly one Problem, filed as +[a sub-issue of the Goal (DEV-160)](./DEV-160.md). A Solution is always +[a pull request (DEV-170)](./DEV-170.md) opened against a Problem; a Problem can +take more than one PR to resolve, and the one that closes the gap +[closes the Problem with a closing keyword (DEV-360)](./DEV-360.md). As a PR +ships a piece of the Spec, that piece +[graduates out of it (DEV-180)](./DEV-180.md), so the Spec always holds just +what is not yet built. - [DEV-110](./DEV-110.md): take ownership of a Goal - [DEV-120](./DEV-120.md): keep the Goal description to the allowed sections From 6fc2d7e8e31e399f88b1b795e5ab986180f8b643 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:33:07 +0800 Subject: [PATCH 22/27] docs(compensation): add pay by level, fix juniors wording, official Bluesky Resolves review feedback on PR #155: - reviews juniors' work was leftover pre-rewrite wording; this doc uses Entry/Intermediate/Lead/Partner throughout, fixed to match - Intermediate's problem-breakdown read as identical to Entry's; made the actual distinction explicit (DEV-150 barrier-mapping is Intermediate's addition, not something Entry also does) - added Pay by Level: Entry is the unpaid holdex/trial phase, Intermediate/Lead are a fixed hourly rate per each contractor's own Rate Card in holdex/contractor-terms, Partner is fixed plus a percentage per BD_COMPENSATION.md (private); compliance with the Developer Guidelines is a condition of every level above Entry, not a one-time bar - docs/rules/DEV-510.md pointed at zolotokrylin.bsky.social (personal) instead of the official holdex.io Bluesky account; verified directly against the Bluesky API (238 posts, genuinely Holdex-branded content, distinct DID from the personal account) and fixed --- docs/COMPENSATION.md | 32 ++++++++++++++++++++++++++++---- docs/rules/DEV-510.md | 2 +- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 294fd2a..364a809 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -42,13 +42,15 @@ Four levels, each with its own traits, culture, and goals. **Entry** operates with a student mindset: bug-free execution, fast learning, clear communication, and taking feedback well. Entry follows the [Developer Guidelines](../README.md), understands the goals handed to them, and -researches, estimates, and presents solutions while helping other Entry-level -teammates. +solves the Problems already scoped for it: researches, estimates, and presents a +solution, while helping other Entry-level teammates. **Intermediate** is a confident executor: solves complex problems, leads small parts of a project, helps Entry-level teammates, and holds strong opinions. -Intermediate breaks work into problems, researches solutions, identifies real -problems rather than symptoms, prioritizes, and reviews juniors' work. +Where Entry solves the Problems it's given, Intermediate additionally breaks a +whole Goal into its full set of Problems, per [DEV-150](./rules/DEV-150.md): +identifies real problems rather than symptoms, prioritizes them, and reviews +Entry-level teammates' work. **Lead** owns projects end to end: runs full projects, delegates, coaches the team, aligns work with the business, and inspires. Lead sets timelines, ensures @@ -58,6 +60,28 @@ delivery, and distributes work to whoever fits it best. says no when needed, and grows the culture. Partner defines business goals and priorities and improves the rules and values everyone else works within. +## Pay by Level + +Entry is the trial phase run by [holdex/trial](https://github.com/holdex/trial): +unpaid, and it ends when the trial goal clears and the contributor graduates to +Intermediate. + +Intermediate and Lead are paid a fixed hourly rate for the level, set in each +contractor's own Rate Card in +[holdex/contractor-terms](https://github.com/holdex/contractor-terms). The rate +is fixed, not the total: more hours delivered still means more pay, per Core +Rules above. + +Partner is paid a fixed rate plus a percentage in the venture. The exact terms +are in +[BD_COMPENSATION.md](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) +(private). + +Every level above Entry requires ongoing compliance with the Developer +Guidelines. Falling out of compliance is a demotion back to Entry, not a +warning: the rate that comes with a level is conditional on holding the bar, not +a status earned once. + ## Growth Path Entry moves through learn, execute, ask. Intermediate moves through solve, diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md index 4b40f39..c7e3044 100644 --- a/docs/rules/DEV-510.md +++ b/docs/rules/DEV-510.md @@ -46,7 +46,7 @@ updates, interact with the community, and tag **Bluesky**: bio states your role at Holdex, link to the Holdex website or portfolio, and follow and engage with -[Holdex's Bluesky presence](https://bsky.app/profile/zolotokrylin.bsky.social). +[Holdex's Bluesky presence](https://bsky.app/profile/holdex.io). ### Acceptance Criteria From d4f6eae6dd3053a93d283eb6f831070386ae6566 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:44:01 +0800 Subject: [PATCH 23/27] docs(compensation): remove a contradiction and a duplication, finish the prose pass Core Rules said growth 'doesn't get renegotiated case by case' while Two Tracks said the Partner salary component is 'set... case by case' two paragraphs later, same phrase, opposite claims. Partner's pay mechanism was also described twice with different framing (a salary component vs a fixed rate). Point Two Tracks at Pay by Level instead of restating it. Also finished the prose rewrite this doc never fully got: Growth Path was still three-word table fragments (learn, execute, ask) left over from before the table became prose. --- docs/COMPENSATION.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 364a809..15143aa 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -24,9 +24,7 @@ month, and the levels below set what that skill looks like at each stage. Acquisition covers client acquisition and retention: sales and business development. It's commission-based on closed deals, and if you bring in a lead that gets onboarded and you're positioned to join as Partner for that account, a -salary component is added on top of commission. The rate and how the salary -component is sized are set by leadership case by case: ask your lead for the -current terms. +fixed rate is added on top of commission, per Pay by Level below. The two tracks are judged on different things by design. Delivery is judged on skill and problems solved, the same principle [DEV-440](./rules/DEV-440.md) @@ -48,7 +46,7 @@ solution, while helping other Entry-level teammates. **Intermediate** is a confident executor: solves complex problems, leads small parts of a project, helps Entry-level teammates, and holds strong opinions. Where Entry solves the Problems it's given, Intermediate additionally breaks a -whole Goal into its full set of Problems, per [DEV-150](./rules/DEV-150.md): +whole Goal into its full set of Problems (per [DEV-150](./rules/DEV-150.md)), identifies real problems rather than symptoms, prioritizes them, and reviews Entry-level teammates' work. @@ -72,8 +70,8 @@ contractor's own Rate Card in is fixed, not the total: more hours delivered still means more pay, per Core Rules above. -Partner is paid a fixed rate plus a percentage in the venture. The exact terms -are in +Partner is paid a fixed rate plus a percentage of the deals they close. The +exact terms are in [BD_COMPENSATION.md](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) (private). @@ -84,6 +82,7 @@ a status earned once. ## Growth Path -Entry moves through learn, execute, ask. Intermediate moves through solve, -teach, lead small. Lead moves through own, delegate, coach. Partner moves -through strategize, scale, say no. +Entry grows by learning, executing, and asking questions. Intermediate grows by +solving, teaching, and leading small pieces of work. Lead grows by owning +projects, delegating, and coaching. Partner grows by setting strategy, scaling +the business, and knowing when to say no. From 990a11d267ca954b0c7ea3826d99d39dc572cae0 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:47:12 +0800 Subject: [PATCH 24/27] docs(compensation): drop the private hr-internal link from Pay by Level Reintroduced the exact issue already fixed once in this PR: this repo must stay self-contained, no links to hr-internal (private). Match the same 'ask your lead' pattern already used for Two Tracks, worded to avoid the 'case by case' phrase that collided with Core Rules. --- docs/COMPENSATION.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 15143aa..5b4ee6c 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -71,9 +71,8 @@ is fixed, not the total: more hours delivered still means more pay, per Core Rules above. Partner is paid a fixed rate plus a percentage of the deals they close. The -exact terms are in -[BD_COMPENSATION.md](https://github.com/holdex/hr-internal/blob/main/docs/BD_COMPENSATION.md) -(private). +exact numbers are set by leadership per deal: ask your lead for the current +terms. Every level above Entry requires ongoing compliance with the Developer Guidelines. Falling out of compliance is a demotion back to Entry, not a From aab7e76cbdafe1cabb136fc45d31309fab65d429 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:09:52 +0800 Subject: [PATCH 25/27] docs(compensation): tighten the Goal line 'independently' was vague and could misread as an employment classification (contractor vs employee) rather than the intended 'on your own initiative'. Drop it and let the doc's own detail (Core Rules, the DEV-440 citation in Two Tracks) carry the nuance. --- docs/COMPENSATION.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 5b4ee6c..0296f78 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -1,7 +1,6 @@ # Compensation Guide -**Goal:** Reward impact, not titles or location. Pay is based on merit, what you -deliver independently. +**Goal:** Reward impact, not titles or location. Pay follows what you deliver. > Open roles: [holdex.io/c/jobs](https://holdex.io/c/jobs) | Mission: > [holdex.io/about](https://holdex.io/about) From ea7aa1a24fc76c7f80ded2dc8c6111bce2e603af Mon Sep 17 00:00:00 2001 From: Vadim <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 22:28:42 +0800 Subject: [PATCH 26/27] Update docs/rules/DEV-510.md Co-authored-by: Angelica <78342026+angelicawill@users.noreply.github.com> Signed-off-by: Vadim <1125014+zolotokrylin@users.noreply.github.com> --- docs/rules/DEV-510.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md index c7e3044..4f40849 100644 --- a/docs/rules/DEV-510.md +++ b/docs/rules/DEV-510.md @@ -35,9 +35,9 @@ role, contributions, and enthusiasm for Holdex. **LinkedIn**: add Holdex as your current experience, with this mandatory description: -> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong -> Kong-based since 2016, we turn bold visions into secure, scalable blockchain -> solutions, driving adoption with unmatched expertise. +> Holdex is a design and technology studio for AI and fintech companies. Hong +> Kong-based since 2016, we turn bold visions into secure, scalable products, +> driving adoption with unmatched expertise. **X**: description states your role at @HoldexIo, link to the Holdex website or portfolio, location set to `localhost`. Engage actively: share Holdex news and From a13397267391e7dd6d9fd26608cf917f5bb06f33 Mon Sep 17 00:00:00 2001 From: Vadim Zolotokrylin <1125014+zolotokrylin@users.noreply.github.com> Date: Wed, 2 Sep 2026 22:30:41 +0800 Subject: [PATCH 27/27] docs(compensation): find your rate in your own Special Terms Co-Authored-By: Claude Opus 5 --- docs/COMPENSATION.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 0296f78..0e7882b 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -63,11 +63,11 @@ Entry is the trial phase run by [holdex/trial](https://github.com/holdex/trial): unpaid, and it ends when the trial goal clears and the contributor graduates to Intermediate. -Intermediate and Lead are paid a fixed hourly rate for the level, set in each -contractor's own Rate Card in -[holdex/contractor-terms](https://github.com/holdex/contractor-terms). The rate -is fixed, not the total: more hours delivered still means more pay, per Core -Rules above. +Intermediate and Lead are paid an hourly rate agreed per engagement and recorded +in your own Special Terms, which HR prepares from the template in +[holdex/contractor-terms](https://github.com/holdex/contractor-terms) and stores +privately. Ask your lead for your number. The rate is fixed for the engagement, +not the total: more hours delivered still means more pay, per Core Rules above. Partner is paid a fixed rate plus a percentage of the deals they close. The exact numbers are set by leadership per deal: ask your lead for the current