feat(junior-profile): predict-before-reveal loop with evidence-based adaptive fading#21
Conversation
…l loop Reworks the Junior profile from "hand-type every line" (outdated) to "evaluate everything" — without falling into the passive-observation dependence trap. The junior now commits a prediction before any AI code is revealed, then is graded against a fixed rubric. - profiles/junior.md: ownership reframed as evaluation, not transcription; adds The Implementation Loop (Predict -> Gate -> Reveal -> Judge -> Own), the 4-dimension rubric, anti-sycophancy + grounding guards; Gate 1 now uses the prediction transcript as ownership evidence. - own/feature.md: new Phase 6 (junior-only) runs the loop task-by-task as a HARD gate; only Implementation-group tasks gate, Setup/Verification flow. - LEARNING_REGISTRY.md: new Prediction Scorecard makes judgment growth a measurable curve across projects (Protocol E eval, built in). Known debt: grounding leans on Octocode retrieval (prevalence != quality); source-vetting deferred to a follow-up before real juniors use it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
…l junior loop Two-stream review (learning-science literature via adversarially-verified deep research; industry practice via real GitHub artifacts) of the reworked Junior profile. Verdict: well-grounded — direct RCT support (Tucker 2024, predict>produce for code), errorful-generation backbone, and real-repo confirmation that ownership = accountability-for-understanding, not typing. Surfaces the key gap (no adaptive fading) and prioritized refinements (P0 fade, P1 overload escape, P2 self-explanation). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
…l gate Implements the P0 refinement the research identified: the prediction gate must relax as competence grows (expertise-reversal effect), or it decays into a tax → fatigue → rubber-stamping. The gate now fades PER-DIMENSION, driven by the data we already log (Prediction Scorecard) — turning that metric from a vanity readout into the loop's control signal. - profiles/junior.md: new "Adaptive Fading" rule — cautious thresholds (4 consecutive MATCHes fades a dimension to spot-check; PARTIAL/MISS resets streak; MISS on a re-asked faded dimension snaps it back). Ownership floor never removed. - own/feature.md: Phase 6 reads the scorecard up front, computes per-dimension fade state, and gates only the still-weak dimensions; faded ones get a spot-check. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
Review — predict-before-reveal loop with adaptive fadingThe substance here is strong, and I want to be clear up front: this does not weaken Gate 1 — it arguably strengthens it. The old "type every line" junior model conflated keystrokes with ownership; this reframes ownership as evaluation, not transcription, which is exactly the Active Typist protocol read correctly (comprehension, not typing volume). The Predict → Gate → Reveal → Judge → Own loop forces a committed position before the reveal, and A few things I would want tightened, none touching the soul of the product (details inline):
What blocks merge — shipping discipline, not substance:
Fix the two VERDICT: REQUEST_CHANGES |
…snap-back, phased-rollout copy Resolves the three actionable review comments on PR #21: - P2 (ownership-critical): OWN step changed from "acknowledge the gap" to "explain WHY the actual approach is better and WHERE your prediction's logic broke" — self-explanation, not recognition. Removes the contradiction between the shipped research doc (which recommended P2) and the implementation. Applied in both junior.md and feature.md Phase 6. - Adaptive fading: documented that the "4 consecutive MATCHes" threshold is a deliberately conservative v1 number (research lists it as open), and added a DETERMINISTIC staleness nudge (re-ask a faded dimension after 5 stale tasks) so snap-back no longer depends solely on a soft judgment trigger — a lightweight form of the research's P3 spaced-re-prediction. - Phased-rollout copy: "Other profiles don't need the gym" reframed as deliberate v1 scoping, naming Interview Prep + Career Switcher as the intended next profiles rather than a permanent exclusion. - Research doc: annotated implementation status (P0 ✅, P2 ✅, P3 ⚙️ partial, P1 ⏳). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
|
Addressed the three actionable comments in
Left as tracked debt (not in this PR): P1 (worked-example escape hatch for cognitive-overload tasks) and the Octocode-quality caveat. Thanks for the catch on P2 — the doc/code disagreement at the ownership-critical step was the right thing to flag. |
|
Incremental review — The three inline findings are resolved well, no new concerns in the diff itself:
Still blocking — the two
Philosophy and architecture remain approved — I'm holding solely on the paper trail. Add the CHANGELOG entry + the one-line README note and I flip this. VERDICT: REQUEST_CHANGES |
…lves review D1/D2) Addresses the two required items the gatekeeper held on: - D2: add the 2.7.0 CHANGELOG entry (MINOR — predict-before-reveal Junior loop, Phase 6 gate, Prediction Scorecard, adaptive fading, self-explanation OWN step). - D1: README Commands table now states the Junior gym runs inline in /own:feature Phase 6 and that /own:guide is no longer the primary implementation path. - Bumped version strings 2.6.0 -> 2.7.0 across installers, README badge, and the dashboard-data template so the release is internally consistent (.ps1 stays pure ASCII). The DASHBOARD_CONTRACT example value is illustrative and left as-is. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
|
Incremental review — release cut Both
One non-blocking finding (new): the version sweep is incomplete.
Philosophy and architecture were approved last round and are unchanged. The two blockers are cleared; I'm flipping off VERDICT: COMMENT |
Completes the version bump the gatekeeper flagged as incomplete: /own:init still wrote 2.6.0 into the manifest and dashboard meta (L618, L642, L1224) and the field-mapping contract (L1257), so a freshly-initialized project would land a 2.6.0 manifest under a 2.7.0 release. All four now write 2.7.0, consistent with the installers and templates. (Uses a valid commit scope per the D3 nit.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ghhtyQRy5nmSGBbCaNpwH
|
Incremental review — This closes the one open item from my last pass: the incomplete version sweep in
Nothing else in the diff. Philosophy and architecture were approved two rounds ago; the paper trail is now whole. Ship it. VERDICT: APPROVE |
What
Reworks the Junior profile from "hand-type every line" (outdated) to "evaluate everything" — without falling into the passive-observation dependence trap. The junior now commits a prediction (approach / data structure / control flow / edge cases) before the AI reveals code, then an AI judge grades it against a rubric, names the specific gap, and grounds the feedback. Scores are logged as a judgment-growth curve.
Why it's where it is
/own:featurePhase 6 (the command that always runs), not/own:guide(rarely run) — so the gate is hard, not skippable under fatigue./own:donenow uses the prediction transcript as evidence, not vibes.Evidence-based (not a hunch)
Validated against two streams (full report:
docs/research/junior-profile-predict-before-reveal-validation.md):kornia,psimm,github/docs); one unrelated project (hotaru) independently reinvented the same model;vaporreservesgood-first-issues for human learning.The research surfaced one gap — adaptive fading — now implemented (P0): the gate fades per-dimension after sustained MATCHes (expertise-reversal effect), driven by the Prediction Scorecard we already log. Cautious thresholds: 4 consecutive MATCHes → faded/spot-check; PARTIAL/MISS resets; ownership floor never removed.
Tested
Manually run end-to-end on a real project (HR voice-screening prototype). The loop, the gate, and per-dimension fading behave as designed; first real prediction is logged.
Known debt (tracked, not blocking)
Files
profiles/junior.md— The Implementation Loop + Adaptive Fading.claude/commands/own/feature.md— Phase 6 (hard gate, reads scorecard, fades per-dimension)learning/LEARNING_REGISTRY.md— Prediction Scorecarddocs/research/…— the validation report