2.8 KiB
Phase 7: Custom Rules and Print-Config - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
Date: 2026-03-26 Phase: 07-custom-rules-and-print-config Areas discussed: Custom rule TOML schema, Class name collision policy, Print-config output format, Sound assignment for custom classes
Custom Rule TOML Schema
| Option | Description | Selected |
|---|---|---|
| Minimal: port + protocol + class | Matches existing Rule struct. Sound config in separate [sounds.X]. | ✓ |
| Inline sound: port + protocol + class + frequency/waveform | All-in-one rule block, mixes classification and sound concerns. | |
| Rich matching: port ranges, src/dst, regex | More expressive but significantly more complex. |
User's choice: Minimal — port + protocol + class Notes: Protocol is required. Port is optional (omit to match any port for the protocol).
Class Name Collision Policy
| Option | Description | Selected |
|---|---|---|
| Treat as override | User's rule fires first (prepended), same class name. Simplest model. | ✓ |
| Reject with error | Startup error if user rule uses built-in class name. | |
| Namespace: prefix user classes | User classes get "user-" prefix. Adds naming complexity. |
User's choice: Treat as override Notes: Resolves the design question flagged in STATE.md since Phase 5 research.
Print-Config Output Format
| Option | Description | Selected |
|---|---|---|
| Commented TOML | Valid TOML with comments showing default vs override. Pipeable to file. | ✓ |
| Plain TOML | Clean but doesn't show what's default vs overridden. | |
| Human-readable table | Formatted table, not valid TOML. |
User's choice: Commented TOML to stdout
Notes: Output to stdout so netsynth --print-config > template.toml works. Shows source path in header comment.
Sound Assignment for Custom Classes
| Option | Description | Selected |
|---|---|---|
| Auto-assign sensible defaults | Pick unused frequency + sine waveform. No silence. | ✓ |
| Require explicit [sounds.X] | Error if no matching sound config. More friction. | |
| Single fallback tone | All custom classes share one tone. Defeats distinct sounds purpose. |
User's choice: Auto-assign sensible defaults Notes: Satisfies RULE-03 (no silent gaps). Algorithm left to Claude's discretion.
Claude's Discretion
- Auto-frequency assignment algorithm
- --print-config as flag vs subcommand
- Commented TOML formatting approach
- config.Load() return type extension
Deferred Ideas
None — discussion stayed within phase scope.