Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# How to Deploy Orb as an Experimental Feature to the Development Environment

## Overview

This guide explains how to deploy the Orb feature as an experimental capability to the development (dev) environment when full quality assurance (QA) in the staging environment has not yet been completed.

## Prerequisites

- Access to the project’s source code repository (for example, Git access).
- Permissions to deploy to the development environment (for example, access to the continuous integration/continuous deployment (CI/CD) system).
- An understanding of the current deployment workflow (for example, which branch or pipeline deploys to development).
- Knowledge of how feature flags or experimental toggles are configured in this project (if used).

> Note: The original Slack discussion did not specify the exact deployment tooling (for example, GitHub Actions, CircleCI, Jenkins) or the repository structure. You may need to confirm these details with your team.

## Explanation and Recommended Approach

Because other work is currently being tested in the staging environment, Orb has not yet been fully QA’d there. To continue progress, the team is considering deploying Orb as an *experimental* feature to the development environment for earlier feedback and validation.

The recommended approach is:

1. **Guard Orb behind an experimental feature flag**
- Ensure Orb is not enabled by default for all users.
- Configure a feature flag (for example, `orb_experimental`) that can be toggled on/off in the development environment.
- Limit exposure to internal users, testers, or a specific group as appropriate.

2. **Deploy Orb changes to the development environment only**
- Merge or rebase the Orb feature branch into the branch that deploys to development (for example, `develop` or `main`, depending on your workflow).
- Trigger the development deployment pipeline.
- Confirm that Orb is only active when the experimental flag is enabled.

3. **Document the experimental status**
- Clearly note in internal documentation and release notes that Orb in development is experimental and not fully QA’d.
- Communicate expected usage: internal testing, feedback gathering, and not for production use.

4. **Plan follow-up QA in staging**
- Once staging is available, run the full QA suite on Orb.
- Validate that behavior in staging matches what was observed in development under the experimental flag.
- Only consider enabling Orb beyond experimental status after staging QA is complete.

## Suggested Step-by-Step Process (Template)

Because the original Slack thread did not include specific commands or tools, the following is a generic template you can adapt:

1. **Prepare the feature branch**
- Ensure the Orb feature branch is up to date:
```bash
git checkout orb-feature-branch
git pull origin orb-feature-branch
git fetch origin
git rebase origin/develop # or origin/main, depending on your workflow
```

2. **Add or verify the feature flag**
- In your configuration or feature flag system, add a flag such as:
```yaml
features:
orb_experimental: false
```
- Wrap Orb-related logic in checks for this flag in the application code.

3. **Merge into the development deployment branch**
```bash
git checkout develop # or the branch that deploys to dev
git merge orb-feature-branch
git push origin develop
```

4. **Trigger the development deployment**
- Use your CI/CD tool to run the development deployment pipeline.
- Confirm the deployment completes successfully.

5. **Enable the experimental flag in development**
- In the development environment configuration or feature flag dashboard, set:
```yaml
orb_experimental: true
```
- Restrict access if your feature flag system supports targeting (for example, by user group or email domain).

6. **Verify Orb in development**
- Access the development environment URL (for example, `https://dev.<your-domain>.com`).
- Log in as a user who should see the experimental feature.
- Confirm Orb appears and behaves as expected under basic smoke tests.

7. **Communicate availability**
- Post in the relevant Slack channel or internal documentation:
- Orb is deployed to development.
- It is experimental and behind a feature flag.
- Who should test it and what kind of feedback is needed.

## Important Notes and Caveats

- **Not production-ready**: Orb in development should be treated as experimental and not assumed to be stable or fully tested.
- **Limited QA coverage**: Because staging QA is incomplete, there may be undiscovered issues. Use development testing primarily for early feedback and design/interaction validation.
- **Environment differences**: Behavior in development may differ from staging or production due to configuration, data, or infrastructure differences. Final validation must still occur in staging.
- **Risk management**: Keeping Orb behind a feature flag minimizes risk by allowing quick disablement if issues are found.

## Troubleshooting Tips

- **Orb does not appear in development**
- Confirm the feature flag (for example, `orb_experimental`) is enabled in the development environment.
- Verify that your user account matches any targeting rules for the flag.
- Check that the Orb feature branch was correctly merged into the development deployment branch.

- **Deployment to development fails**
- Review CI/CD logs for build or test failures.
- Ensure any new configuration (for example, feature flag keys, environment variables) required by Orb is set in the development environment.
- Confirm there are no unresolved merge conflicts in the Orb feature branch.

- **Unexpected behavior or errors**
- Capture logs and error messages from the development environment.
- Compare configuration between local, development, and staging (if available) to identify discrepancies.
- Temporarily disable the Orb feature flag to confirm whether the issue is specifically related to Orb.

## Additional Information Needed

To create a fully precise, command-level guide, the following information would be required from your team:

- The name of the repository and primary branches (for example, `main`, `develop`).
- The CI/CD platform and how deployments to development are triggered.
- The feature flag system in use (for example, LaunchDarkly, internal config, environment variables).
- The development environment URL and any access constraints.

---
*Source: [Original Slack thread](https://distylai.slack.com/archives/impl-tower-project-orb/p1760477900940329)*