161 lines
4.8 KiB
Markdown
161 lines
4.8 KiB
Markdown
|
|
---
|
||
|
|
title: Polisher-Control Feature Request Intake
|
||
|
|
status: draft
|
||
|
|
requested_by: Antoine Letarte
|
||
|
|
generated_by: Nick / Hermes
|
||
|
|
project: P11-Polisher-Fullum
|
||
|
|
repo: polisher-control
|
||
|
|
source_truth: false
|
||
|
|
created: 2026-06-02
|
||
|
|
privacy: technical-only
|
||
|
|
---
|
||
|
|
|
||
|
|
# Feature Request Intake — Polisher-Control
|
||
|
|
|
||
|
|
## Purpose
|
||
|
|
|
||
|
|
Use this note when Antoine or Cédric proposes a new feature for `polisher-control`.
|
||
|
|
|
||
|
|
The goal is to avoid coding a feature into the wrong layer. Some requests belong in the machine controller, some belong in `polisher-post`, and some belong in `polisher-sim`.
|
||
|
|
|
||
|
|
## Fast classification
|
||
|
|
|
||
|
|
Before implementation, classify the request.
|
||
|
|
|
||
|
|
| Class | Belongs where | Examples |
|
||
|
|
|---|---|---|
|
||
|
|
| Execution feature | `polisher-control` | manual UI behavior, host state machine, Teensy loop, drive/sensor integration, telemetry logging, alarms, `/data/` artifacts |
|
||
|
|
| Contract feature | `polisher-control` + `shared/schemas` + usually `polisher-post` | new telemetry channel, new protocol field, new log field, new machine-capability property |
|
||
|
|
| Planning/intelligence feature | `polisher-sim` / `polisher-post` | choosing pass strategy, metrology interpretation, calibration updates, optimization, dwell planning |
|
||
|
|
| Safety/scope feature | approval-gated | interlock behavior, E-stop response, force limits, fault reset policy, remote operation, powered manipulation modes |
|
||
|
|
|
||
|
|
Rule: if the feature decides **what polishing should be done**, it is probably not a `polisher-control` feature. If it executes/logs/enforces what was already approved, it probably is.
|
||
|
|
|
||
|
|
## Intake template
|
||
|
|
|
||
|
|
Copy this block into an issue, PR, or `docs/nick-generated/YYYY-MM-DD-feature-name.md` when scoping a feature.
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
---
|
||
|
|
title: Feature Intake — <short feature name>
|
||
|
|
status: draft
|
||
|
|
requested_by: Antoine / Cédric
|
||
|
|
generated_by: Nick / Hermes
|
||
|
|
project: P11-Polisher-Fullum
|
||
|
|
repo: polisher-control
|
||
|
|
source_truth: false
|
||
|
|
created: YYYY-MM-DD
|
||
|
|
privacy: technical-only
|
||
|
|
---
|
||
|
|
|
||
|
|
# Feature Intake — <short feature name>
|
||
|
|
|
||
|
|
## 1. Requested behavior
|
||
|
|
|
||
|
|
- What should the operator/system be able to do?
|
||
|
|
- What problem does this solve?
|
||
|
|
- Who requested it?
|
||
|
|
|
||
|
|
## 2. Classification
|
||
|
|
|
||
|
|
- [ ] Execution feature in `polisher-control`
|
||
|
|
- [ ] Contract feature touching schemas/protocol/telemetry/logs
|
||
|
|
- [ ] Planning/intelligence feature that belongs upstream
|
||
|
|
- [ ] Safety/scope feature requiring Antoine approval
|
||
|
|
|
||
|
|
Rationale:
|
||
|
|
|
||
|
|
## 3. Operator-visible behavior
|
||
|
|
|
||
|
|
- UI controls / screens / prompts:
|
||
|
|
- Normal workflow:
|
||
|
|
- Fault/warning workflow:
|
||
|
|
- What is logged as operator action:
|
||
|
|
|
||
|
|
## 4. Affected layers
|
||
|
|
|
||
|
|
- Host controller:
|
||
|
|
- Teensy firmware:
|
||
|
|
- Host ↔ Teensy protocol:
|
||
|
|
- Telemetry channels:
|
||
|
|
- Run/manual-session logs:
|
||
|
|
- Machine capability profile:
|
||
|
|
- Shared schemas:
|
||
|
|
- Tests:
|
||
|
|
- Docs/checklists:
|
||
|
|
|
||
|
|
## 5. Safety implications
|
||
|
|
|
||
|
|
- Does it affect force, motion, brakes, interlocks, E-stop, watchdog, or reset behavior?
|
||
|
|
- Does it allow motion in a new condition?
|
||
|
|
- Does it change any limit or threshold?
|
||
|
|
- Does it require a new refusal/NACK reason?
|
||
|
|
- Does it need a hardware interlock or physical confirmation?
|
||
|
|
|
||
|
|
Safety decision:
|
||
|
|
|
||
|
|
- [ ] No safety behavior change
|
||
|
|
- [ ] Safety behavior change; Antoine approval required before implementation
|
||
|
|
|
||
|
|
## 6. Contract implications
|
||
|
|
|
||
|
|
- New/changed protocol messages:
|
||
|
|
- New/changed telemetry channels:
|
||
|
|
- New/changed log fields:
|
||
|
|
- New/changed machine capability fields:
|
||
|
|
- Backward compatibility / schema version impact:
|
||
|
|
|
||
|
|
Contract decision:
|
||
|
|
|
||
|
|
- [ ] No schema/protocol contract change
|
||
|
|
- [ ] Contract change; update schemas/examples/docs/tests together
|
||
|
|
|
||
|
|
## 7. Acceptance checks
|
||
|
|
|
||
|
|
- [ ] Host-side unit test:
|
||
|
|
- [ ] Firmware compile/build check:
|
||
|
|
- [ ] Protocol encode/decode test:
|
||
|
|
- [ ] Schema/example validation:
|
||
|
|
- [ ] State-machine transition test:
|
||
|
|
- [ ] Telemetry channel consistency check:
|
||
|
|
- [ ] Safety refusal/fault test:
|
||
|
|
- [ ] Commissioning checklist update:
|
||
|
|
- [ ] Manual/operator workflow check:
|
||
|
|
|
||
|
|
## 8. Open questions
|
||
|
|
|
||
|
|
- For Antoine:
|
||
|
|
- For Cédric:
|
||
|
|
- For source-spec update:
|
||
|
|
|
||
|
|
## 9. Implementation notes
|
||
|
|
|
||
|
|
- Suggested branch:
|
||
|
|
- Suggested first PR chunk:
|
||
|
|
- Suggested follow-up chunk:
|
||
|
|
```
|
||
|
|
|
||
|
|
## Approval gates
|
||
|
|
|
||
|
|
Ask Antoine before implementing when a request changes any of these:
|
||
|
|
|
||
|
|
- v1 scope boundary;
|
||
|
|
- safety/interlock behavior;
|
||
|
|
- force limits, braking, fault/reset policy;
|
||
|
|
- host ↔ Teensy protocol semantics;
|
||
|
|
- telemetry channel names, units, rates, or meanings;
|
||
|
|
- schema versions or required fields;
|
||
|
|
- boundary between `polisher-control`, `polisher-post`, and `polisher-sim`;
|
||
|
|
- any powered manipulation / Zero-G / remote-control behavior.
|
||
|
|
|
||
|
|
## Implementation chunking recommendation
|
||
|
|
|
||
|
|
For most features, keep PRs small:
|
||
|
|
|
||
|
|
1. **Spec/doc PR:** feature intake, acceptance checks, schema/protocol sketch.
|
||
|
|
2. **Host PR:** state machine / UI workflow / logs / tests.
|
||
|
|
3. **Firmware PR:** message handling / loop behavior / telemetry / compile check.
|
||
|
|
4. **Integration PR:** end-to-end dry-run, examples, commissioning checklist.
|
||
|
|
|
||
|
|
Do not mix a safety contract change with broad unrelated refactors.
|