README: - Quick Start shows kappa add workflow instead of manual configs - New features: indexed repos, env operators (+=, ?=), conflict reporting - Updated subcommand table (add, remove, index, validate-index) - Repo maintenance section (kappa index) - Link to STYLEGUIDE.md, test counts, CI info CONTRIBUTING: - Updated test counts (30+23+85 instead of 31+23) - Added test-full.sh to mandatory test suite - Referenced STYLEGUIDE.md in PR requirements - Updated good-first/ambitious issues for current state
This commit is contained in:
+20
-14
@@ -63,17 +63,20 @@ lock. `std::mutex`, `std::atomic`, `std::condition_variable` — use them
|
||||
correctly or don't use them at all. If you don't know what `memory_order`
|
||||
means, stay out of the scheduler.
|
||||
|
||||
### 6. Tests are shell scripts. For now.
|
||||
### 6. Tests are shell scripts.
|
||||
|
||||
Integration tests live in `test.sh` and `test-init-switch.sh`. They
|
||||
exercise the CLI. If you add a subcommand, add a test. C++ unit tests
|
||||
are welcome — set up Google Test or Catch2 in CMake and we'll merge it.
|
||||
Integration tests live in three suites. If you add a subcommand, add a test.
|
||||
|
||||
```sh
|
||||
./test.sh # 31 tests, must pass
|
||||
./test-init-switch.sh # 23 tests, must pass
|
||||
./test.sh # 30 tests — DSL parsing, config, services, init systems
|
||||
./test-init-switch.sh # 23 tests — init-switching, rebuild impact, bootloaders
|
||||
./test-full.sh # 85 tests — CLI, all keywords, repos, add/remove,
|
||||
# resolver conflicts, deptrees, build, env ops,
|
||||
# index generation, --root, imports, doctor, and more
|
||||
```
|
||||
|
||||
All three must pass. CI enforces this on every push to `main`.
|
||||
|
||||
### 7. Backward compatibility is mandatory
|
||||
|
||||
The `.kap` DSL is the contract. You can add keywords. You cannot remove
|
||||
@@ -85,29 +88,32 @@ change means someone's `config.kap` stops parsing, it doesn't ship.
|
||||
### Pick something
|
||||
|
||||
Good first issues:
|
||||
- Adding a 6th init system backend
|
||||
- Adding a 3rd bootloader backend
|
||||
- C++ unit test framework setup
|
||||
- Shell completion scripts
|
||||
- Adding a 6th init system backend (we have 5: systemd, openrc, s6, runit, dinit)
|
||||
- Adding a 3rd bootloader backend (we have 2: grub, limine)
|
||||
- Improving the `kappa doctor` diagnostics for package recipes
|
||||
- Adding `--features` / `--config` flags to `kappa add`
|
||||
- Shell completion scripts (bash, zsh, fish)
|
||||
|
||||
Ambitious issues:
|
||||
- Binary package support (pre-built caches)
|
||||
- Remote build farm (distcc-style)
|
||||
- Signed package verification
|
||||
- Signed package verification with index signing
|
||||
- Filesystem overlay activation (like Nix profiles)
|
||||
- Transitive dependency resolution (auto-including deps not in config)
|
||||
|
||||
### Send a PR
|
||||
|
||||
1. Fork the repo
|
||||
2. Create a branch: `feat/my-thing` or `fix/my-bug`
|
||||
3. Write code that follows the rules above
|
||||
4. Run `./test.sh && ./test-init-switch.sh` — both must pass
|
||||
4. Run `./test.sh && ./test-init-switch.sh && ./test-full.sh` — all three must pass
|
||||
5. Open a PR against `main`
|
||||
|
||||
### PR requirements
|
||||
|
||||
- Build must pass: `cmake --build build` with zero warnings
|
||||
- Tests must pass: both shell test suites
|
||||
- Build must pass: `cmake --build build` with zero warnings on Clang 17+
|
||||
- Tests must pass: all three shell test suites
|
||||
- Follow the conventions in [STYLEGUIDE.md](STYLEGUIDE.md)
|
||||
- No commented-out code. No dead code. No TODO without a date.
|
||||
- Commit messages in imperative: `Add runit backend` not `Added runit backend`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user