Skip to content

handoff: P1.3.3 challenge canon-parity refactor (0.21.0)#124

Merged
klappy merged 1 commit into
mainfrom
handoff/p1-3-3-challenge-revisit
Apr 20, 2026
Merged

handoff: P1.3.3 challenge canon-parity refactor (0.21.0)#124
klappy merged 1 commit into
mainfrom
handoff/p1-3-3-challenge-revisit

Conversation

@klappy
Copy link
Copy Markdown
Owner

@klappy klappy commented Apr 20, 2026

Fresh-session handoff at session close after P1.3.2 shipped end-to-end (see klappy://odd/ledger/2026-04-20-p1-3-2-gate-canary-landed).

This is the legitimate cross-session handoff, not the same-session anti-pattern the P1.3.2 ledger just named. Receiving session is a different conversation / context window / agent start. Tonight's session wrote this at close, not mid-stream.

Scope — exactly three items, ~45-75 min to prod

  1. Migrate evaluatePrerequisiteCheck from regex to stemmed set intersection. D5 from P1.3.2 (split-by-fit: prereq evaluation is independent gap-or-not, not ranked; set intersection is the fit-to-problem matcher; avoids BM25 IDF-negative pathology). L2294 definition, L2129 call site, parsers around L413-435 and L709+.

  2. Remove cachedChallengeTypeIndex, rebuild inline per D9. Microsecond derivation over 6-9-type corpus; caching adds plumbing without throughput benefit. L163-164, L634-651, L1518-1519, L2028. Parse-product caches stay (cachedChallengeTypes, cachedBasePrerequisites, cachedNormativeVocabulary, cachedStakesCalibration).

  3. Graduate cache-fetches-and-parses to canon. canon/principles/cache-fetches-and-parses.md. Third deciding-argument recurrence after P1.3.2's D9 — graduation test satisfied. Canon-first: this doc ships before the code PR.

Ship as 0.21.0

No envelope changes. No new governance files. No multi-phase sequencing. Smaller than P1.3.2 because the design work is reused.

Out of scope (named explicitly to prevent scope creep)

  • encode's triggerRegex paragraph classification — different tool, different code path, separate PR
  • global cachedBM25Index — may have a size-threshold answer; not a challenge concern
  • other carry-forward O-opens P2-P6

Thin prompt for next session

Included in the handoff body. Points the next session at the handoff URI, the P1.3.2 ledger for D5/D9 rationale, and the vodka-architecture canon doc for principle-doc structure.

Refs


Note

Low Risk
Documentation-only change adding a session handoff; no runtime, data, or security behavior is modified.

Overview
Adds a new handoff doc (odd/handoffs/2026-04-20-p1-3-3-challenge-revisit.md) that scopes and line-references the next planned P1.3.3 work: switching challenge prerequisite evaluation from regex to stemmed set intersection (D5), removing cachedChallengeTypeIndex in favor of per-request index rebuilds (D9), and drafting a new canon principle cache-fetches-and-parses to formalize the caching rule.

No code, tests, or production behavior changes are included in this PR; it’s a forward-looking execution plan and checklist for the next session/release (0.21.0).

Reviewed by Cursor Bugbot for commit cd5133b. Bugbot is set up for automated code reviews on this repo. Configure here.

Fresh-session handoff at session close after P1.3.2 shipped end-to-end.

This is the legitimate cross-session handoff — receiving session is a
different conversation, different context window, different agent start.
The P1.3.2 ledger just named 'same-session handoff anti-pattern' as the
case to avoid; this is not that case.

Scope (exactly three items, ~45-75 min to prod):

1. Migrate evaluatePrerequisiteCheck from regex to stemmed set intersection
   (D5 — same matcher gate shipped in 0.20.0). L2294 definition, L2129
   call site, per-type parser around L413-435, base-prereq parser L709+.

2. Remove cachedChallengeTypeIndex, rebuild inline per D9 (microsecond
   derivation, not worth caching). L163-164, L634-651, L1518-1519, L2028.

3. Graduate 'cache fetches and parses, not microsecond derivations' to
   canon at canon/principles/cache-fetches-and-parses.md. Third
   deciding-argument recurrence after P1.3.2's D9 — graduation test
   satisfied.

No envelope changes. No new governance files. Canon-first preserved:
canon principle doc ships before code PR. Thin prompt for pickup is at
the bottom of the handoff.

Out of scope named explicitly: encode's triggerRegex paragraph
classification, global cachedBM25Index, other sweep O-opens P2-P6.

Refs: klappy://odd/ledger/2026-04-20-p1-3-2-gate-canary-landed.
@klappy klappy merged commit 3f6ec57 into main Apr 20, 2026
klappy pushed a commit that referenced this pull request Apr 20, 2026
…elease-validation-gate

Closeout ledger for the oddkit 0.22.0 ship cycle (PRs #124, #125, #127, #128, #129).
First post-canon application of release-validation-gate (tier 1, landed earlier today
in P1.3.3). Documents the retroactive-closure pattern used to heal PR #127's
validation gap without reverting, and names the four criteria that make retroactive
closure legitimate.

Key contents:
- Summary of what shipped (two envelope-conformance fixes into 0.22.0)
- D3 names the retroactive-closure pattern and its four legitimacy criteria
- Timeline of all agent/validator sessions with evidence trail
- L2 distinguishes feature-branch validators from promotion-PR validators under
  canon's strict reading
- L3 captures the Managed-Agent-bypass workaround for orchestrator-IP rate limits
- H2 carries forward P11 (oddkit_gate mechanical enforcement of release-validation-gate)

Writing canon gate satisfied: blockquote with compressed argument, Summary section,
descriptive headers.

Encoded via oddkit_encode (governance_source: knowledge_base) — 18 DOLCHE artifacts
folded into D/O/L/C/H sections.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant