fix: keep teacher runtime prompts within interface boundary

This commit is contained in:
鲨鱼辣椒
2026-09-28 14:38:58 +08:00
parent 998796d77c
commit 54a40d2636
12 changed files with 313 additions and 32 deletions

View File

@@ -0,0 +1,62 @@
# Task: Keep teacher runtime instructions scoped to entry facts and UI protocol
## Identity
- Task ID: 20260928-teacher-protocol-boundary-f2c8a601
- Mode: Feature
- Branch: codex/20260928-teacher-protocol-boundary-f2c8a601-teacher-protocol-boundary
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260928-teacher-protocol-boundary-f2c8a601
- Base commit: 998796d77cba146ae2a007cbebfdaa1255a3413e
- Owner: codex
- Status: Ready for Integration
## Scope
- Continue the accepted teacher/client boundary on top of completed legacy-component cleanup commit `998796d77cba146ae2a007cbebfdaa1255a3413e`.
- Keep entry markers factual and the reply protocol technical. Remove locally appended teaching strategy from active help, guided help, background checks, and reply-format instructions.
- Enforce the current 0–3 shortcut capacity for newly generated answers while preserving archived replies and exact diagnostics.
- Update focused tests and README; preserve card styling and existing interaction/scheduling machinery.
## Intent And Constraints
- User assigned main merge and push to another conversation. This task stays in its isolated feature branch and prepares a tested commit for integration.
- Cloud configuration owns Alice's teaching purpose, focus, tone, length, and shortcut prefixes; the host owns invocation facts, available context/tools, and interface protocol.
- Keep old component cleanup intact. Do not merge the older `89c913b` patch wholesale because it modifies a superseded protocol.
- No cloud configuration publishing, live app restart, scheduler redesign, or teacher-to-operator consensus handoff in this task.
- Gate passed before edits: task ownership/status verified; entry, task-relevant memory, and peer scopes reviewed. Relevant canonical documents are unchanged between the previously read baseline and `998796d`; shared memory remains read-only.
## Outcome
- Active-help and guided-help messages now identify the student's entry intent; background checks identify a program-triggered check without a fabricated student question. They no longer mandate a teaching strategy.
- Reply instructions now declare only the two fields, Markdown body support, optional 0–3 nonempty shortcut strings, and delegation of content/style to published configuration.
- Main rejects excess newly generated shortcuts without silently truncating or rewriting them: prose is retained, cards are withheld, and the exact raw answer and format diagnostic are saved. 0/1/3-card replies preserve prefixes and duplicates. The shared compatibility parser and historical store remain unchanged.
- The UI now shows recorded reply-format errors beside the preserved answer; raw content stays collapsed and inert. Existing colors, layout, click handling and drafts are unchanged.
- Regression coverage includes local/cloud service persistence, history read/list/save, all entry intents, current/legacy envelopes, and UI behavior. README reflects the responsibility boundary and current capacity.
- No merge, push, running-app restart, cloud config change, or canonical memory edit performed.
## Verification
- Dependency installation: pinned pnpm 10.33.4, frozen lockfile, offline cache; no tracked dependency change.
- Focused final suite: 269/269 passed across teacher-guidance, teacher-reply, teacher-reply-history, coding-teacher, coding-teacher-cloud, coding-teacher-model and coding-teacher-ui.
- `corepack pnpm run typecheck`: passed.
- ESLint for all changed TypeScript/TSX files, including the Electron E2E spec: passed.
- `corepack pnpm run build:vite`: passed after the final UI change.
- `git diff --check` and task-aware project-doc drift check: passed.
- Independent read-only review found no remaining teaching-policy directives in the scoped runtime files and confirmed lossless historical handling.
- Added a focused Electron E2E case for visible format errors, absent rejected shortcut buttons, collapsed exact raw text, and preserved drafts. Playwright test collection passed using an existing Electron distribution override; the native test was not executed to avoid launching another app window during concurrent work. Component/service assertions covering these behaviors passed.
- Real published-model responses were not tested. Existing topics retain their pinned configuration versions; code tests do not establish that an updated cloud prompt is active.
## Follow-ups
- Integrate this commit after the legacy-component cleanup; merging/pushing belongs to the user's other conversation.
- Validate actual Alice output with a new topic using the published cloud version. Local tests cannot prove model behavior or that existing pinned topics picked up a new prompt.
- Three-operation-round checks and shared confirmed context remain separate work.
## Promotion Candidates
- Target: canonical teacher decision/current-state documents during integration.
- Proposal: runtime help/check-in markers convey entry facts only; teaching strategy is entirely in the selected published agent configuration. Current newly generated replies accept 0–3 shortcuts; historical card counts remain lossless.
- Evidence: context/reply code and focused tests in this task; user's accepted client/agent boundary in this conversation.
- Future impact: future personas can use the same interface without inheriting Alice's teaching policy; prompt changes are evaluated against the actual published topic version.
- Semantic conflicts: supersedes cleanup task's remaining locally mandated single discussion focus and unrestricted new-card count; retains historical compatibility and UI cleanup.
- Human confirmation: not additionally required for these already accepted boundaries; no canonical edits in this feature task.