Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
74 lines
2.8 KiB
Markdown
74 lines
2.8 KiB
Markdown
# 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.
|