Skip to content

Conversation

@brooke-hamilton
Copy link
Member

Description

This PR introduces Spec Kit into the design notes repo.

Three changes were made:

  • specify init was run on the repo to install Spec Kit
  • Modifications made to support PowerShell (in addition to the default shell scripts)
  • The /specify.constitution prompt was run to generate the constitution.md file.

Review Instructions

Please review the constitution.md file for accuracy. The core Spec Kit files do not need review.

brooke-hamilton and others added 7 commits November 6, 2025 10:34
Signed-off-by: Brooke Hamilton <[email protected]>
Signed-off-by: Brooke Hamilton <[email protected]>
Signed-off-by: Brooke Hamilton <[email protected]>
* Add spec-kit PowerShell files
* Adjust instructions to use scripts based on OS condition

---------

Signed-off-by: Dariusz Porowski <[email protected]>
…ations (#120)

lint scripts with `shfmt`
lint MD with `markdownlint`

---------

Signed-off-by: Dariusz Porowski <[email protected]>
Signed-off-by: Brooke Hamilton <[email protected]>
@brooke-hamilton brooke-hamilton marked this pull request as ready for review November 11, 2025 21:16
@brooke-hamilton brooke-hamilton requested review from a team as code owners November 11, 2025 21:16
@DariuszPorowski DariuszPorowski changed the title Spec kit constitution Spec Kit constitution Nov 12, 2025
DariuszPorowski and others added 4 commits November 12, 2025 12:04
Updated version to 2.0.0 with significant principle additions and redefinitions for multi-repo support.

Signed-off-by: Dariusz Porowski <[email protected]>

**Rationale**: Radius is fundamentally an API-driven platform enabling multi-cloud deployments and integration with various tools (Bicep, Terraform, Kubernetes). Clear API contracts ensure developers and platform engineers can collaborate effectively with well-understood interfaces.

### II. Idiomatic Code Standards

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to see separation of concerns and modularity & reuse added


### XIII. Recipe Development Standards (Contrib)

All Recipes MUST be implemented in either Bicep or Terraform with clear module structure. Recipes MUST include comprehensive README documentation explaining purpose, prerequisites, parameters, and outputs. Parameters MUST have descriptions and sensible defaults where applicable. Recipes MUST follow secure-by-default principles (e.g., disable public access, enable encryption). Recipes MUST be tested in representative environments before contribution. Recipes SHOULD be cloud-agnostic where possible, with cloud-specific variants clearly documented.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't the application template be cloud-agnostic and the Recipes not? i.e. the Recipes are meant to be written for specific compute platforms

Copy link
Member Author

@brooke-hamilton brooke-hamilton Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ToDo: Remove the line about cloud-agnostic.

<!--
Sync Impact Report:
- Version change: 1.0.0
- Modified principles:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this for v1.0.0 of the doc?


- **Go**: Follow *Effective Go* patterns; format with `gofmt`; provide godoc comments for all exported items; minimize exported surface area; leverage Go's simplicity over complex abstractions; handle errors explicitly without suppression
- **TypeScript**: Follow TypeScript handbook and Backstage guidelines; use ESLint and Prettier; enable strict mode; provide explicit types for public APIs; prefer functional patterns where appropriate
- **Bicep**: Follow official best practices; use kebab-case for resources, camelCase for parameters; modularize with modules; add parameter descriptions; prefer secure defaults
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we may want to expand upon this in the future. Radius has a specific flavor of Bicep

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To Do: clarify that we use our own bicep extension that parses our resource types.


**For Go code (radius repo)**:

- **Unit tests**: Test individual functions and types in `pkg/` directories, runnable with basic prerequisites only (no external dependencies). Use `make test` to run all unit tests.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make test might take a long time without one of the caching test tools


### VI. Infrastructure as Code Integration

All infrastructure-related features MUST support Bicep as the primary authoring experience. Bicep type definitions in `bicep-types/` MUST be generated from TypeSpec definitions and kept in sync through `make generate`. Features SHOULD integrate with Terraform through the Recipe system where appropriate. Kubernetes manifests MUST be supported for native Kubernetes resources through existing integration patterns in `pkg/kubernetes/`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this is the right order from a user perspective. Terraform should be the primary recipe authoring experience since it's more widely-known

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To Do: reword this to favor Terraform


Design specifications MUST be authored in markdown and stored in the public `design-notes` repository before implementation begins. Significant features MUST follow the issue-first workflow at github.com/radius-project/radius, with community discussion before work begins. Design decisions MUST be documented with clear rationale. Breaking changes MUST be called out explicitly with migration guidance. All commits MUST include a `Signed-off-by` line (Developer Certificate of Origin).

**Rationale**: As a CNCF sandbox project, transparency and community involvement are essential. Public design discussions ensure better outcomes, build trust with the community, and align with open source governance practices.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

might want to leave out the "Public design discussions" part. we don't really have public design discussions at the moment


### IX. Incremental Adoption & Backward Compatibility

Features, abstractions, and workflow changes MUST support gradual opt-in rather than forcing a disruptive migration. Breaking changes MUST provide a documented migration path and a deprecation period (minimum two release cycles) before removal. New abstractions MUST start behind feature flags or clearly labeled "experimental" status until validated by real usage. Backward compatibility MUST be maintained within a major version; removal or hard behavioral shifts REQUIRE either a guarded rollout or a MAJOR version bump with explicit migration guidance. Documentation MUST call out required user actions for any change that affects existing workflows.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't really have an SLA on breaking changes. we haven't published a major version yet.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To Do: reword this to point out that we try to avoid breaking changes, but Radius has not released a 1.0 so breaking changes are acceptable when necessary. We make no guarantees against breaking changes in any given release until we get to 1.0.


### XIV. Documentation Structure and Quality (Docs)

All documentation MUST follow the Diátaxis framework organizing content into Tutorials, How-To Guides, Reference, and Explanation. Documentation MUST be written in Markdown following the Docsy theme conventions. Code examples MUST be tested and runnable. Screenshots MUST be up-to-date with current UI state. Internal links MUST use Hugo shortcodes for maintainability. Navigation structure MUST support progressive disclosure from beginner to advanced topics.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the framework we use today?

Copy link
Member Author

@brooke-hamilton brooke-hamilton Nov 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To Do: check with PMs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants