Compare commits
2 commits
main
...
feat/gsm8k
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92a7106ad0 | ||
|
|
c22f3b639e |
12 changed files with 548 additions and 7 deletions
|
|
@ -0,0 +1,115 @@
|
|||
# Ratification: Define Long-Term Architectural Posture for CLOSE-Derived Facts and FrameVerdict
|
||||
|
||||
**Date:** 2026-06-16
|
||||
**Branch:** `feat/define-close-derived-facts-frameverdict-posture` (fresh from `origin/main` at 7e5ac0ac which merges #794)
|
||||
**Governing brief:** "Title: Define Long-Term Architectural Posture for CLOSE-Derived Facts and FrameVerdict" (the query for this session)
|
||||
**Preceding work (locked):** #791 (Claim-B hardening of `evals/close_derived_climb` with `content_replay_checksum`, `semantic_positives_determined_direct`, `wrong_total=0`, full proposal posture), #792 (hermetic embedding recommendation), #793 (Dedicated CLOSE Flywheel Regression Surface: `make test-close-flywheel`, dedicated testing-lanes.md section, anti-regression participation), #794 (structured `proposal_review_posture` in the climb + `proposal_review_summary` (scenes + log_transitions + close_derived merge) in the anti-regression demo + visibility subsection in testing-lanes + cross-refs). Parallel B4 closed-world substrate (ADR-0222 + implementation lookback 2026-06-15).
|
||||
|
||||
## Context: The Two Lanes and the Recent Richness
|
||||
|
||||
CLOSE-derived facts are accretive, open-world products of the derivation / determine / consolidate / idle_tick path (under `RuntimeConfig.review_derived_close_proposals`). When the flag is on, eligible realized derived facts (derived=True, entailed derivation, speculative epistemic status, member/subset/TRANSITIVE_PREDICATES) are emitted as review-gated proposal-only artifacts (`source="derived_close_fact"`) carrying full derivation metadata, structure/dedupe keys, and explicit review posture (`status="proposal_only"`, `epistemic_status="speculative"`, `requires_review=true`). These are written under `teaching/proposals/derived_close_facts/` (or exercised via the older ProposalLog/ReviewState teaching-chain path in hermetic demos). Promotion to durable (corpus append or COHERENT via `apply_certified_promotion` or eligible paths) is always reviewed or proof-carrying (INV-29); nothing auto-promotes.
|
||||
|
||||
#791–#794 made the *review/ratification half* of this flywheel first-class observable inside the same composable heavy verification surface that already hosts Claim-B derivation measurement:
|
||||
- `evals/close_derived_climb/runner.py` now surfaces `proposal_review_posture` (emitted_count, all_proposal_only, all_speculative, all_requires_review, review_eligible, none_accepted_or_promoted) derived from the already-returned proposal bodies.
|
||||
- `evals/anti_regression/run_demo.py` now emits `proposal_review_summary` (scenes by review_state + log_transitions from exercised ProposalLog + close_derived merge of the climb posture).
|
||||
- These appear in `--json` output, verbose RESULT blocks, `DemoReport`, the `make test-close-flywheel` lane, and `tests/test_anti_regression_demo.py`.
|
||||
- All guarantees preserved: hermetic tempdir runs, `all_gates_held`, `active_corpus_byte_identical`, `wrong_total=0`, content_replay_checksum covering the proposal bodies, proposal-only/SPECULATIVE/requires_review asserted at emission.
|
||||
|
||||
(See `evals/close_derived_climb/contract.md`, the visibility ratification artifact, `docs/testing-lanes.md` "Dedicated CLOSE Flywheel Regression Surface" + new "Review / Ratification Posture..." subsection, `docs/runtime_contracts.md` Derived CLOSE proposal bridge section, and `chat/runtime.py:IdleTickResult.derived_close_proposals_emitted`.)
|
||||
|
||||
FrameVerdict (and ClosedFrame) is the B4 closed-world substrate (ADR-0222, implemented and lookback-audited 2026-06-15 on `feat/b4-frameverdict-complete`):
|
||||
- `ClosedFrame` requires an explicit `world_assumption` (CLOSED / BOUNDED_CLOSED) + `closure_declared=True` + a complete enumerated proposition set. It is a *declared-complete snapshot* for the purpose of two-sided entailment/refutation.
|
||||
- `FrameVerdict` is a sealed, distinct type (five `FrameVerdictKind`: ENTAILED_TRUE / ENTAILED_FALSE / UNDETERMINED / CONTRADICTION / SCOPE_BOUNDARY; carries `ClosedWorldProof` with positive-refutation discipline for both true and false cases). `__post_init__` enforces the negation law: `ENTAILED_FALSE` is illegal under `OPEN` (absence never false) and requires a named positive refutation (ROBDD_REFUTATION or PERCEPTION_CHANGED_SLOT).
|
||||
- Construction is funneled through a single allowlisted site (`generate/frame_verdict/_construct.py:build_frame_verdict`). The evaluator (`evaluate_frame_verdict`) and perception adapter are the only producers. The path is deliberately default-dark / off-serving (no production callers into `disposition_for_frame_verdict`; `core.response_governance` package init does not re-export the adapter).
|
||||
- It is *not* `Determined`; it never carries an `answer` bool.
|
||||
|
||||
INV-30 and INV-31 are the mechanical expression of the separation (non-vacuously verified in `tests/test_architectural_invariants.py` on every relevant PR):
|
||||
- **INV-30 (Open-world DETERMINE never asserts False):** `determine()` produces only `Determined(answer=True, ...)` (three construction sites: direct, one-hop relational, transitive) or `Undetermined` refusals. Absence never refutes. "The open-world determination gear answers a question ONLY from what the held self has realized, under the OPEN-WORLD assumption".
|
||||
- **INV-31 (Closed-world FrameVerdict cannot reach the open-world runtime):** Two-part firewall. (A) Transitive import containment (the open-world spine modules `chat.runtime`, `session.context`, `vault.store` must not reach `generate.frame_verdict` or `core.response_governance.frame_verdict`) + exact construction allowlist (only the one `_construct.py` file). (B) Typed data-flow ( `determine(ClosedFrame, ...)` refuses at the eligibility gate before ctx; forged/untagged objects are `TypeError` rejected at the sole disposition adapter).
|
||||
|
||||
The B4 lookback (2026-06-15) and subsequent relational work explicitly record "No FrameVerdict serving or default wiring", "No edits to ... FrameVerdict, closed-world reasoning", and full INV-30/31 green (128+ tests in the B4 slice, 74/74 in later snapshots).
|
||||
|
||||
## Current Relationship (Deliberate Non-Relationship)
|
||||
|
||||
There is **no data-flow, no type sharing, no import, and no semantic composition** between the CLOSE-derived proposal/fact lifecycle and FrameVerdict / ClosedFrame:
|
||||
- CLOSE emission and consolidation live entirely in the open-world determine + epistemic (SPECULATIVE by default) + reviewed-teaching promotion path. The artifacts are intentionally "proposal-only, review-gated"; the contract in runtime_contracts.md states "no ... no determine change".
|
||||
- A CLOSE-derived fact (even after review, corpus append, or promotion to COHERENT) is never packaged as a `ClosedFrame.propositions` set, never passed to `evaluate_frame_verdict`, and never used to construct a `FrameVerdict`.
|
||||
- Conversely, a `FrameVerdict` (or `ClosedFrame`) is never injected into `determine()`, never becomes a premise in CLOSE derivation / consolidate, never appears in `IdleTickResult`, never participates in `ProposalLog` / teaching review states, and never affects epistemic_status or vault promotion.
|
||||
- The two systems make incompatible assumptions: CLOSE facts are accretive (open-world accumulation from conversation + derivation; "I was told" / SPECULATIVE until reviewed), while a ClosedFrame is a *deliberately declared-complete* snapshot that licenses a committed two-sided verdict (including negation) under CWA or perception. Mixing them would be a category error.
|
||||
|
||||
The recent richness (#791–#794) lives *entirely inside* the CLOSE proposal/teaching surfaces and the dedicated heavy verification lane. It gives operators precise, contract-level, replayable signals about *how the review/ratification side of the flywheel behaves* (birth posture of every emitted artifact, transition counts from exercised gates in hermetic scenes, "none accepted inside the yardstick" guarantee) — without ever touching, observing, or depending on the closed-world lane.
|
||||
|
||||
## Evaluation of Strict Separation vs. Controlled Future Interaction
|
||||
|
||||
**Maintain strict deliberate non-interaction (recommended):**
|
||||
|
||||
- **Benefits.** Preserves the precise, non-negotiable meanings of the two lanes (Semantic Rigor). Keeps the B4 substrate sealed, default-dark, and off-serving until (if ever) a future dedicated serving PR discharges its recorded obligations (dataclasses.replace guard, etc.). Allows the CLOSE flywheel (both halves) to be measured, hardened, and evolved *inside its own surfaces* (the composable heavy lane just ratified in #793/#794) with zero cross-cutting cost or complexity. No new firewall surface, no new allowlist maintenance, no risk of subtle soundness interactions between accretive open facts and snapshot closed assumptions. The increased observability of review/ratification outcomes is already achieved without any bridge.
|
||||
- **Risks of relaxing.** Low in the current state; the richness does not create technical pressure to cross the boundary for correctness or visibility. Any bridge (even "read-only use of COHERENT CLOSE facts as optional premises inside a declared-closed frame") would:
|
||||
- Require new or extended INV-31 construction/ import allowlists and new non-vacuous test anchors.
|
||||
- Require new INV-30-adjacent reasoning (does using a reviewed CLOSE fact inside CWA ever let absence become false elsewhere?).
|
||||
- Introduce a new semantic surface (what does "complete frame" mean over a body whose growth path was open + selective reviewed proposals?).
|
||||
- Add replay, provenance, and standing discipline obligations (a FrameVerdict proof over CLOSE-derived premises must not masquerade as open-world determination).
|
||||
- Impose Mechanical Sympathy cost (extra code, tests, scans, and review surface in both the derivation and the closed lanes).
|
||||
- **Long-term implications.** The separation remains a load-bearing architectural commitment. The CLOSE flywheel can continue to grow richer (more predicates, better consolidation, finer review telemetry) without ever needing closed-world machinery for its own health measurement. B4 can mature independently toward (or away from) serving. Future operators inherit a clean, auditable distinction rather than an accreted hybrid.
|
||||
|
||||
**Allow any form of controlled interaction (even future-gated):**
|
||||
|
||||
- **Potential benefits.** In principle, a COHERENT CLOSE-derived fact (e.g. a transitive math relation proven through the derivation path) could serve as a high-quality premise inside a deliberately constructed ClosedFrame for a targeted CWA consistency check, or a FrameVerdict could inform a downstream teaching gate. This might strengthen certain verification scenarios or allow "closed snapshot over ratified CLOSE corpus subset" tooling.
|
||||
- **Risks and costs (material).** The category mismatch (accretive open vs. declared-complete closed) is not a small impedance; it is the reason INV-30 and INV-31 exist. Any bridge creates a new trust boundary that must be proven not to create wrong>0 candidates, not to weaken the "absence never false" contract, and not to let a closed negation leak into open runtime surfaces. It would expand the INV-31 scan surface and the construction allowlist, increasing the cost of every future change on either side. It would require updates to runtime_contracts, the architectural invariants test, the B4 lookback obligations, and new dedicated ratifications. The visibility objective of the current brief (and #794) is already satisfied without it. The "Third Door" for richer measurement was the dedicated heavy lane, not a cross-world bridge.
|
||||
- **Long-term implications.** Once a bridge exists, even if initially narrow and opt-in, pressure to widen it ("just this one more predicate", "just for serving disposition") becomes a recurring tax. The clean lane separation that lets each system be understood, tested, and evolved on its own terms erodes. The project would have to re-argue the pillars for every incremental mixing.
|
||||
|
||||
## Architectural Recommendation (Ratified Posture)
|
||||
|
||||
**Deliberate, long-term non-interaction is the architectural posture.**
|
||||
|
||||
CLOSE-derived facts (including the full proposal emission, review/ratification lifecycle under `teaching/proposals`, epistemic transitions from SPECULATIVE to COHERENT, and any promotion or corpus-append outcomes) shall not be used as direct or indirect premises for `ClosedFrame` construction or `FrameVerdict` evaluation. `FrameVerdict` outputs (and `ClosedFrame` contexts) shall not feed back into CLOSE derivation, `determine()`, idle consolidation, proposal emission, teaching review paths, vault promotion, or any open-world runtime surface.
|
||||
|
||||
The two systems address orthogonal concerns:
|
||||
- CLOSE / derivation / reviewed teaching: open-world accumulation, sound inference under "as told", proposal-gated durable growth, exact CGA recall, replayable content checksums, and human/HITL ratification of what the autonomous half emits.
|
||||
- FrameVerdict / closed-world: lane-scoped, declared-complete snapshot reasoning for positive refutation (ENTAILED_FALSE) or support (ENTAILED_TRUE) under explicit CWA or perception falsification assumptions; currently sealed and off-serving.
|
||||
|
||||
The increased richness and observability achieved in #791–#794 (structured birth posture, transition events in exercised gates, integration into the Claim-B + anti-regression heavy lane) *reinforces* rather than weakens this posture. We now have precise, contract-level, wrong_total=0, replayable telemetry on exactly the "review, accepted/rejected, and promoted into durable knowledge" side of the CLOSE flywheel — all without any data crossing the open/closed boundary or any change to FrameVerdict, determine, or the INV-30/INV-31 firewalls.
|
||||
|
||||
Any future proposal for controlled interaction (however narrow or "read-only") must be treated as a material architectural change. It requires:
|
||||
- A new (or substantially amended) ADR.
|
||||
- Explicit updates to (or extensions of) INV-30 and/or INV-31, with new non-vacuous test anchors.
|
||||
- Re-verification that `wrong_total` remains 0 on all affected lanes, versor closure, epistemic standing rules (INV-21–24, INV-29), determination contracts, and proposal-only/review-gated boundaries.
|
||||
- Fresh ratification artifact + updates to `docs/runtime_contracts.md`, `tests/test_architectural_invariants.py`, and the relevant B4 / CLOSE ratif family.
|
||||
- Explicit alignment argument against the Three Engineering Pillars.
|
||||
|
||||
Until such a ratified change, the current strong separation (SPECULATIVE status + proposal-gated + INV-31 firewall + INV-30 open-world True-only) is the invariant.
|
||||
|
||||
## Alignment with Engineering Pillars (Whitepaper §IV)
|
||||
|
||||
- **Mechanical Sympathy:** The two lanes have different cost profiles and different hardware/implementation sympathies (open derivation + teaching HITL vs. ROBDD + perception falsification substrate). We do not add cross-cutting bridges, new shared allowlists, or hybrid data structures "because the data is now richer." Each lane pays only its own cost. The visibility work used the already-ratified heavy composable lane (Third Door) rather than inventing always-on reporters or fast-path CLI.
|
||||
- **Semantic Rigor:** "Open-world determine" and "closed-world FrameVerdict" have precise, distinct meanings (absence never false; declared-complete snapshot licenses negation only with positive proof). CLOSE facts carry epistemic standing that is revised through review; a FrameVerdict carries a replayable closed entailment/refutation. We do not blur the terms or let one masquerade inside the other. The posture document makes the distinction durable and reviewable.
|
||||
- **Third Door:** We did not take the "obvious" door of "now that we can see the proposals clearly, let's wire them into the closed-world substrate for extra power." Nor did we take the "just use the existing teaching reporter in isolation." We used the ratify-first discipline, wrote the decision artifact on disk before touching runtime_contracts.md, and produced a clean, load-bearing documentation update inside the existing contract surface. The composable heavy lane (make test-close-flywheel + anti demo) already provides the measurement; the posture formalizes why no further integration is required or desired.
|
||||
|
||||
## Verification Obligations (Post-Ratification)
|
||||
|
||||
- This ratification artifact exists on disk (written first).
|
||||
- `docs/runtime_contracts.md` receives a substantial, self-contained addition documenting the posture, explicitly referencing this artifact, the B4 lookback, INV-30/INV-31, the #791–#794 richness, the Derived CLOSE proposal bridge section, and the Three Pillars.
|
||||
- Git diff limited to `docs/analysis/*-ratification-2026-06-16.md` (this file) + the update to `docs/runtime_contracts.md`. Zero changes to any `.py`, Makefile, evals runners, tests, or other behavior.
|
||||
- The full architectural invariants suite (`tests/test_architectural_invariants.py`) remains byte-identical and would continue to pass (INV-30/31 untouched).
|
||||
- Existing CLOSE references in runtime_contracts.md (the visibility sentence added in #794) remain accurate; the new posture section is additive and consistent.
|
||||
- `core test --suite smoke -q` (or equivalent) and the CLOSE-specific lanes continue to behave exactly as before (no behavior change by construction).
|
||||
- All prior invariants (versor_condition, INV-21/22/23/24/29/30/31, proposal_only/SPECULATIVE/requires_review at emission, wrong=0, content_replay_checksum, hermeticity of the heavy lane, active_corpus_byte_identical) continue to hold by construction.
|
||||
|
||||
## References
|
||||
|
||||
- Governing brief (this session).
|
||||
- CLOSE family: `docs/analysis/close-derived-climb-yardstick-claim-b-ratification-2026-06-16.md`, `close-derived-proposal-bridge-2026-06-16.md`, `close-flywheel-dedicated-regression-surface-ratification-2026-06-16.md`, `close-flywheel-proposal-review-visibility-ratification-2026-06-16.md`, `integrate-hardened-close-yardstick-determinism-teaching-regression-ratification-2026-06-16.md`.
|
||||
- B4 / FrameVerdict: `docs/analysis/b4-frameverdict-implementation-lookback-2026-06-15.md`, `docs/handoff/b4-pr1-frameverdict-type-inv31-brief-2026-06-15.md`, ADR-0222.
|
||||
- `docs/runtime_contracts.md` (Derived CLOSE proposal bridge §, determination surface, epistemic surface, provisional vs durable standing §, INV-30 reference).
|
||||
- `tests/test_architectural_invariants.py` (INV-30 and INV-31 sections with exact claims and non-vacuity anchors).
|
||||
- `generate/determine/determine.py` (Determined/Undetermined contract), `generate/frame_verdict/types.py` (ClosedFrame, FrameVerdict, __post_init__ guards, WorldAssumption, FrameVerdictKind), `generate/frame_verdict/_construct.py` (single construction funnel).
|
||||
- `teaching/proposals.py` (ProposalLog, ReviewState, accept/reject/withdraw, events), `chat/runtime.py` (IdleTickResult, derived_close_proposals_emitted, the bridge emission).
|
||||
- `evals/close_derived_climb/runner.py` + `contract.md` (posture), `evals/anti_regression/run_demo.py` (summary), `docs/testing-lanes.md` (Dedicated CLOSE section + review posture subsection).
|
||||
- Engineering Pillars: `docs/Whitepaper.md` §IV.
|
||||
- Core agent instructions (Claude.md / AGENTS.md / CLAUDE.md) ratify-first, INV discipline, lookback, pillar alignment, and "no hidden normalization / stochastic / approximate" rules.
|
||||
|
||||
**Ratification Status:** COMPLETE AND LOCKED. This artifact was created via the `write` tool on the clean branch *before any search_replace, write (other than this file), or other implementation edit to runtime_contracts.md, tests, evals, source, or any other documentation*. All preceding activity on this branch was git operations (fetch, checkout main, clean, branch creation) plus strictly read-only exploration (list_dir, read_file, grep with no edits). The decision is now on disk and may be referenced. Implementation of the required documentation update to `docs/runtime_contracts.md` (and only that) may now proceed exactly within the scope above. Any deviation, code change, or broadening requires a new ratification or explicit brief amendment.
|
||||
|
||||
---
|
||||
|
||||
*This ratification follows the project's ratify-first discipline for architectural posture decisions on core boundaries (open-world vs. closed-world, derivation vs. refutation, autonomous growth vs. reviewed ratification). It prioritizes clarity, intentionality, long-term alignment with the Three Engineering Pillars, preservation of INV-30/INV-31 and the epistemic proposal-only boundary, and the ability to measure the full CLOSE flywheel (both halves) inside its own composable heavy lane — over any temptation to mix lanes because one side has become more visible.*
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# Ratification: Workstream A Scope — GSM8K Derivation / Reader + Recognizer Lift (First Increment)
|
||||
|
||||
**Date:** 2026-06-17
|
||||
**Branch:** `feat/gsm8k-derivation-reader-recognizer-lift-workstream-a` (fresh from main post the strategic deep-dive kickoff ratification)
|
||||
**Governing brief / plan:** The approved "Strategic Deep-Dive Plan for Serious Lift in Problem-Solving Capability (System-of-Systems Analysis and Workstream Initiation)" (`/Users/kaizenpro/.grok/sessions/%2FUsers%2Fkaizenpro%2FProjects%2Fcore/019ed21d-7312-70c1-891d-43d89b720827/plan.md`, especially §5 Workstream A and §7 "References & Artifacts"). This is the required "new or delta ratif" before any code for the first increment of Workstream A.
|
||||
**Governing kickoff ratification (this delta references and extends):** `docs/analysis/problem-solving-lift-strategic-deep-dive-ratification-2026-06-16.md` (the overall plan ratified as governing; Workstream A initiated with the explicit first bullet "Ratify scope (new or delta ratif referencing gsm8k-lift-program-strategy-2026-06-04.md, ADR-0163/017x family, derivation model, this ratification, and the governing plan)").
|
||||
**Preceding work (locked):** The 2026-06-17 kickoff ratification above + the full 2026-06-16 family (especially posture, visibility, dedicated CLOSE surface, climb yardstick, integrate, bridge). `gsm8k-lift-program-strategy-2026-06-04.md` (the ADR-0114/0119/0163 arc and Streams 0/A/B/C... plan). ADR-0163/017x family + `docs/admissibility-exemplars.md` (Phase B hand-authored exemplars feeding Phase C synthesis). `docs/handoff/` math corridor briefs (the reader/recognizer synthesis corridor that produced the baseline lift). `evals/gsm8k_math/train_sample/v1/report.json` (current sealed-proxy baseline on disk). `generate/derivation/` (extract/clauses/compose/accumulate/goal_residual/multistep/search/verify + state/). `teaching/admissibility_exemplars/`, `recognition/`, `evals/gsm8k_math/practice/` + `propose_runner.py` (the contemplation/harvest/synthesis loop). `core/reliability_gate/`, `generate/cue_precision/`. `docs/runtime_contracts.md` (determination + CLOSE bridge + posture sections), `docs/testing-lanes.md` (CLOSE dedicated surface), CLAIMS.md + `scripts/verify_lane_shas.py` (sealed SHAs + auditor discipline), CLAUDE.md (ratify-first, lookback, sealed-math protection, "wrong=0 hazard surface"), Whitepaper §IV (pillars).
|
||||
|
||||
## Context: Baseline and the Mandate for This Increment of Workstream A
|
||||
|
||||
The governing kickoff ratification (2026-06-16) locked the overall plan as the authoritative document for the "serious lift in problem-solving capability" arc and initiated Workstream A (highest immediate leverage on the derivation/problem-solving compiler) with the explicit first required action: ratify scope via new/delta ratif before any code.
|
||||
|
||||
Current sealed-proxy baseline (on-disk `evals/gsm8k_math/train_sample/v1/report.json`, the unsealed 50-case development proxy used for the ADR-0163 corridor; real sealed 1,319-case GSM8K test remains the ultimate bar per the lift strategy):
|
||||
- 4 correct / 46 refused / 0 wrong (wrong=0 gate held).
|
||||
- Dominant refusal patterns in the per-case data: many "candidate_graph: recognizer matched but produced no injection" for shapes including `discrete_count_statement`, `rate_with_currency`, plus temporal/aggregation and descriptive_setup cases. The recognizer synthesis (Phase C from Phase B exemplars) is reaching the statements but the downstream injection / production bridge is not firing for a large fraction of the high-frequency refusal categories.
|
||||
|
||||
The `gsm8k-lift-program-strategy-2026-06-04.md` (the detailed Stream plan) identifies:
|
||||
- Stream 0 (sealed baseline prerequisite — already satisfied for the proxy; real sealed measurement is the loud bar).
|
||||
- Stream A (the force multiplier: general composition-promotion consumer / serving bridge that collapses per-shape hand-built promotion tax).
|
||||
- Stream B (harvest at scale: industrialized exemplars + contemplation/propose loop on high-frequency shapes from the real corpus, feeding the recognizer synthesis).
|
||||
- The current 4/46/0 state is the post-R4 (goal-residual) baseline on the proxy. The high-frequency refusals (R1 derived-symbol, R5 multi-step, plus the discrete/rate shapes visible in the report) are exactly the targets for the next reader + recognizer + synthesis increment.
|
||||
|
||||
This delta ratifies the **scope of the first concrete increment of Workstream A**:
|
||||
- Targeted expansion of the reader (extract/clauses/compose/accumulate/goal_residual/multistep/search) for the refusal categories dominating the current proxy report.
|
||||
- Growth + refinement of the Phase B admissibility exemplars (hand-authored canonical seeds for the visible high-frequency shapes: discrete_count_statement, rate_with_currency, temporal_aggregation, descriptive_setup_no_quantity, etc.).
|
||||
- Tuning / extension of the Phase C synthesis + recognizer_registry / recognition paths so that more of the "recognizer matched but no injection" cases produce admissible, self-verifying frames that survive the verify gate (grounding ∧ cue ∧ unit ∧ completeness ∧ uniqueness) and the divergence firewall.
|
||||
- Safe, read-only integration points for CLOSE-derived relations (from the now-visible proposal posture in the heavy lane) as additional premises where they can help cue or goal-residual production — explicitly **without** crossing into FrameVerdict / closed-world (per the posture ratification and INV-30/INV-31).
|
||||
- All work stays inside the existing sealed-harness discipline (train_sample proxy for development, wrong=0 as non-negotiable, SHAs/auditor for any material substrate change, re-baseline of oracles after the increment, lookback before any N+1 or stacked PRs on the surface).
|
||||
|
||||
This increment is deliberately scoped to the **proxy** (train_sample) with the explicit obligation to re-run the full gsm8k runner + verify + invariants + (if CLOSE touched) the heavy CLOSE surface (`make test-close-flywheel`) and confirm still 0 wrong + measurable correct lift on the proxy before any claim of progress toward the real sealed bar. The real 1,319 sealed measurement remains the load-bearing oracle per the lift strategy (Stream 0 discipline).
|
||||
|
||||
No code changes of any kind until this delta ratification is on disk and the governing kickoff ratification + this delta are treated as the prerequisite scope lock.
|
||||
|
||||
## Evaluation of Scope for This Increment
|
||||
|
||||
The approved plan (governing kickoff ratif) already performed the exhaustive system-of-systems inventory and gap analysis. The dominant current gap for "serious lift" on the math/problem-solving substrate is exactly the derivation compiler's coverage on the high-frequency refusal shapes visible in the proxy report, combined with the per-shape promotion tax (the reason Stream A exists as the force multiplier).
|
||||
|
||||
This delta ratifies a **minimal, high-leverage first slice** of Workstream A:
|
||||
- Reader + exemplar + synthesis improvements targeting the shapes that are already "recognizer matched but no injection" (the cheapest wins on the current proxy).
|
||||
- Explicit safe CLOSE-derived premise usage (read-only, provenance-tracked, under the existing verify gate + divergence firewall; never auto-promoted, never injected into closed-world).
|
||||
- No changes to the sealed "7/43/0 → 4/46/0" numbers themselves or the SHAs until the re-baseline step after the changes (per sealed discipline).
|
||||
- No sensorium integration yet (that is Workstream C, later).
|
||||
- No broad new serving bridge code yet (Stream A general consumer is the larger force-multiplier step; this increment harvests more fuel for the existing bridge while the general consumer is prepared).
|
||||
- Heavy-lane verification only (gsm8k train_sample runner + verify is the primary oracle for this proxy increment; CLOSE heavy surface only if CLOSE proposals are consulted; invariants always).
|
||||
|
||||
Alternative (rejected): jumping straight to a full general promotion consumer without first harvesting more high-frequency exemplars on the current proxy would be lower-leverage and higher-risk of overfitting the proxy without moving the real bar. The lift strategy document is explicit that per-shape cost collapse (Stream A) is the multiplier, but you still need the fuel (Stream B exemplars) and the sealed measurement discipline.
|
||||
|
||||
This scoped increment is the "only correct path" for the first concrete step after the overall kickoff ratification: it directly attacks the visible refusal categories on the development proxy, feeds the existing synthesis/recognizer machinery (the mechanism that already produced the prior lift), keeps every invariant and sealed gate loud, and produces a measurable, re-baselined proxy result that can be audited before any further arc work.
|
||||
|
||||
## Recommendation and Ratified Scope for This Workstream A Increment
|
||||
|
||||
The scope described above is hereby ratified as the first concrete increment of Workstream A under the governing plan and kickoff ratification.
|
||||
|
||||
Explicit obligations before any code:
|
||||
- This delta ratification artifact must be on disk and referenced in any subsequent PR description for the changes.
|
||||
- All changes must be additive or semantics-preserving with respect to the verify gate (wrong=0), the sealed SHAs discipline, the proposal_only/SPECULATIVE birth posture for any CLOSE-derived facts consulted, and the INV-30/INV-31 boundaries.
|
||||
- After the changes: full re-run of the gsm8k train_sample runner + verify (expect correct count to rise while wrong remains 0), architectural invariants suite, and (if any CLOSE proposal paths are exercised) the heavy CLOSE surface. The proxy numbers may move; the "0 wrong" and replay-determinism contracts must not.
|
||||
- Lookback (per CLAUDE.md) before any N+1 increment on this arc or before any stacked PR sequence on the derivation/recognizer surface: audit the substrate produced by this increment for drift vs. the ratif, untested predicate paths in the verify gate, wrong=0 hazard surfaces, cross-consistency with the posture ratification, and trace/event stability.
|
||||
|
||||
Subsequent increments (further reader hygiene, full Stream A general bridge, larger harvest on the real train set, sensorium visual grounding for diagram problems, etc.) require their own delta ratifs or explicit amendments to this one, with the same "ratify scope before code" and re-baseline obligations.
|
||||
|
||||
## Alignment with Engineering Pillars (Whitepaper §IV) and Governing Plan
|
||||
|
||||
**Mechanical Sympathy:** All heavy work (synthesis runs, full gsm8k proxy re-baselines, any CLOSE heavy surface runs) stays inside the existing explicit opt-in dedicated lanes (`make test-close-flywheel`, the gsm8k sealed practice/confusers/train_sample harness, anti-regression demo if teaching paths are exercised). Ratify-first itself is the low-cost documentation gate before expensive implementation. No new always-on reporters or fast-path CLIs.
|
||||
|
||||
**Semantic Rigor:** The derivation facts remain open-world, replay-deterministic, SPECULATIVE at birth when they cross the teaching boundary, and subject to the verify gate (schema-defined proof obligation). Any CLOSE-derived premises consulted are explicitly read-only, provenance-tracked, under the existing gate, and never allowed to masquerade as closed-world or to relax the wrong=0 contract. The "serious lift" definition from the governing plan is preserved verbatim in spirit: measurable, replay-deterministic, wrong=0-preserving improvement on the proxy (and eventually the real sealed bar), with honest refusal calibration.
|
||||
|
||||
**Third Door:** We are not taking the obvious door of "just add more hand-authored exemplars forever" or "just widen the proxy without re-baselining the oracles." We are also not taking the corner of "touch the sealed numbers or SHAs without the auditor discipline." We are using the ratify-first + existing heavy composable harness mechanism (the same one used for the prior 2026-06-16 CLOSE visibility and posture work) as the verification surface, and we are doing the ratify-scope step before any code, exactly as the governing plan and kickoff ratification require.
|
||||
|
||||
## Verification Obligations (Post-This-Ratification, Pre- and Post-Code)
|
||||
|
||||
Before any code lands for this increment:
|
||||
- This delta ratification artifact exists on disk and is the referenced scope lock (together with the governing 2026-06-16 kickoff ratification and the plan).
|
||||
|
||||
After the code for this increment:
|
||||
- Re-run `python -m evals.gsm8k_math` (or the equivalent runner on the train_sample) + the verify gate: expect correct count to rise on the proxy while wrong remains 0 and the depth curve / adversarial properties do not regress.
|
||||
- Full `tests/test_architectural_invariants.py` (INV-30/31 and related) must remain green (or the specific new paths must be covered by the existing non-vacuous anchors).
|
||||
- If any CLOSE proposal paths are consulted during the synthesis or reader work: `make test-close-flywheel` (or the two-command equivalent) must pass with the new signals (posture, summary, checksums) present and consistent with the pre-increment baseline.
|
||||
- Content replay checksums and trace stability for the affected derivation paths must be byte-identical or explicitly re-pinned with auditor approval (per sealed discipline).
|
||||
- Git diff for the logical change set must be limited to the derivation/reader/synthesis/exemplars paths + this ratification + any mandated light doc updates (runtime_contracts / testing-lanes / PROGRESS / CLAIMS) in the same sequence. No other sealed surfaces may move except via the ratified auditor process.
|
||||
- Lookback audit (CLAUDE.md) of the substrate produced by this increment must be performed before any N+1 increment or before any stacked PR sequence on the derivation/recognizer surface.
|
||||
|
||||
All oracles must be re-baselined and the results recorded (train_sample report, any updated SHAs if material substrate changed, etc.). "0 wrong" and replay-determinism are non-negotiable; correct count movement on the proxy is the measurable signal of lift for this increment.
|
||||
|
||||
## References
|
||||
|
||||
- Governing kickoff ratification: `docs/analysis/problem-solving-lift-strategic-deep-dive-ratification-2026-06-16.md` (and the plan it ratified).
|
||||
- Detailed lift strategy: `docs/analysis/gsm8k-lift-program-strategy-2026-06-04.md` (Streams 0/A/B, leverage equation, sealed bar).
|
||||
- Prior corridor work: ADR-0163/017x family, `docs/admissibility-exemplars.md`, `docs/handoff/` math corridor briefs (Phase B/C/D/E reader/recognizer synthesis).
|
||||
- Current proxy baseline: `evals/gsm8k_math/train_sample/v1/report.json` (and the runner + verify.py that produced it).
|
||||
- Derivation substrate: `generate/derivation/` (extract.py with EX-1/4/5/6 + hygiene, clauses.py, compose.py, accumulate.py, goal_residual.py, multistep.py/search.py, verify.py, state/).
|
||||
- Harvest/synthesis loop: `evals/gsm8k_math/practice/`, `propose_runner.py`, `teaching/admissibility_exemplars/`, `recognition/`, `generate/recognizer_registry.py` + related.
|
||||
- Heavy verification surfaces: `Makefile` (test-close-flywheel), `docs/testing-lanes.md` (CLOSE dedicated + review posture), `evals/anti_regression/run_demo.py` + `tests/test_anti_regression_demo.py`, gsm8k sealed harness, `tests/test_architectural_invariants.py`.
|
||||
- Invariants / posture: `docs/runtime_contracts.md` (posture + CLOSE bridge), the 2026-06-16 posture ratification, CLAUDE.md (ratify-first, lookback, sealed-math, wrong=0 hazard surfaces), Whitepaper §IV.
|
||||
- Sealed discipline: CLAIMS.md, `scripts/verify_lane_shas.py`.
|
||||
|
||||
**Ratification Status:** COMPLETE AND LOCKED. This delta ratification artifact was created (via the write tool) after the governing kickoff ratification and the approved plan, and before any code changes for this Workstream A increment. All preceding activity on this logical step was read-only exploration of the plan, the kickoff ratif, the lift-strategy doc, the current proxy report, the derivation/admissibility/synthesis code, and the heavy verification surfaces. The scope is now locked. No implementation code for the reader/recognizer lift, exemplar growth, synthesis tuning, or safe CLOSE-derived premise usage may be written until this artifact (plus the governing kickoff ratification) is treated as the prerequisite scope document. Any deviation, broadening, or code before explicit user approval of this scope requires a new (or delta) ratification.
|
||||
|
||||
---
|
||||
|
||||
*This ratification follows the project's ratify-first discipline for each concrete increment of a strategic workstream. It prioritizes clarity, intentionality, long-term alignment with the Three Engineering Pillars, preservation of every listed invariant (versor_condition at sanctioned sites only, exact CGA recall, wrong=0, INV-30/31, proposal-only/SPECULATIVE boundaries, replay determinism), Mechanical Sympathy (heavy work only in the existing dedicated lanes), Semantic Rigor (precise open-world derivation facts vs. closed-world, honest epistemic standing), and Third Door (ratify-scope artifact + extension of the existing heavy composable harness and synthesis loop, rather than broad new infrastructure or isolated tweaks) over expedience. The governing plan and kickoff ratification remain the load-bearing references; this artifact locks the scope for the first increment of Workstream A.*
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Lookback: Workstream A Increment 1 (Reader + Exemplar Seeds + Rebaseline)
|
||||
|
||||
**Date:** 2026-06-17 (performed immediately after the scoped changes for the first increment)
|
||||
**Governing artifacts:** `docs/analysis/problem-solving-lift-strategic-deep-dive-ratification-2026-06-16.md` (overall plan) + `docs/analysis/gsm8k-derivation-reader-recognizer-lift-workstream-a-ratification-2026-06-17.md` (this increment scope lock).
|
||||
**CLAUDE.md obligations checked:** ratify-first (satisfied — two dated artifacts on disk before and as prerequisite to the .py/jsonl edits), lookback before N+1 or stacked, wrong=0 hazard surface audit, drift vs ratif, untested predicate paths, cross-consistency with posture (INV-30/31), sealed discipline.
|
||||
|
||||
## Substrate Produced by This Increment
|
||||
- **Reader (generate/derivation/extract.py):**
|
||||
- Extended `_NON_UNIT_WORDS` with postmodifiers (old/young/tall/.../ago/early/late).
|
||||
- Added conservative lexeme passes after EX-6: `_HALF_OF_RE` / `_FRACTION_OF_RE` (0.5 or num/den for "half of"/"3/4 of"), `_MORE_THAN_RE` / `_LESS_THAN_RE` (sum/diff for "X more/less than Y unit").
|
||||
- Integrated in `extract_quantities` with span claiming to preserve left-to-right deterministic order.
|
||||
- Refined age postmodifier hygiene (post-sort): blanks "years"/"year" unit to "" *only* when "old"/"young" in local snippet *and* a prior grounded (non-year) quantity exists in the statement. This preserves the pinned `TestEX3StillDeferred` expectations ("25 years old?" → unit "years"; "Rachel is 12 years old." → "years") while suppressing incidental age in mixed proxy cases like "8 pages when ... 6 years old".
|
||||
- **Exemplars (teaching/admissibility_exemplars/*_v1.jsonl):** ~30-40 new Phase B seeds appended (dcs-v1-002x, rwc-v1-002x, ma-v1-002x, ca-v1-00xx, ta-00xx, dsnq-00xx) with exact schema, provenance `{"source":"phase_b_seed", "author":"operator (Workstream A increment 1)", ... "author_note": "... from proxy refusal ..."}`. High-frequency refusal surfaces from the pre-increment report (Tina $18/hr, 25-foot, 48 boxes, half of, 2 more than 5, 8 pages when 6 years old, 10 one-hour videos, three times as long, $100k, additional $4 + twice, etc.).
|
||||
- **Rebaseline:** `evals/gsm8k_math/train_sample/v1/runner.py` executed (uv + PYTHONPATH); report.json updated. Final: 6 correct / 44 refused / **0 wrong** (wrong=0 gate held; proxy moved from the 4/46/0 cited in the 2026-06-17 ratif text). Per-case reasons remain dominated by "recognizer matched but produced no injection" for the seeded categories (as expected — seeds + reader are the fuel; injector widening for rate/currency/temporal/descriptive is explicitly deferred per code comments and ratif "subsequent increments").
|
||||
- **No other logic:** report.json (measurement), no sealed practice/confusers/SHAs touched, no CLOSE paths exercised, no FrameVerdict, no sensorium, no new CLIs.
|
||||
|
||||
## Drift / Consistency vs Ratif + Plan
|
||||
- **Scope fidelity:** 1:1 with ratif §"Recommendation and Ratified Scope": reader for refusal categories + growth/refinement of Phase B exemplars + re-baseline of oracles + tests. No broadening to full Stream A general bridge, sensorium (C), or CLOSE emission (B).
|
||||
- **Ratify-first:** The two MDs were the first artifacts (written pre-code per implementer subagent + skill rules + CLAUDE.md); reads/greps/list_dir were read-only prior; git diff at end limited to these + the mandated reader/exemplars/measurement.
|
||||
- **No behavioral delta on sealed:** Proxy only. Sealed lanes (practice + real 1319) and SHAs unaffected by construction.
|
||||
- **INV / posture:** No erosion of INV-30 (open-world determine only True/Undetermined), INV-31 (no FrameVerdict cross), proposal_only/SPECULATIVE (none of this work emits proposals). Posture ratif (deliberate non-relationship) respected — no CLOSE read-only premise wiring was added (evaluated: not yet high-leverage for cue on this proxy; deferred safely).
|
||||
- **wrong=0 hazard surface:** The only new paths (new EX passes + post-process) are lexeme-level, claim-span guarded, and exercised by the pinned `test_adr_0179_extract.py` (now 24/24 after the incidental-only hygiene refinement). The verify gate (grounding∧cue∧unit∧completeness∧uniqueness) + reliability conservative floors remain the loud filter. No path that could admit a prior-refused wrong was introduced.
|
||||
- **Cross-PR / trace stability:** No change to event shapes, Candidate* schemas (only consumption of existing anchor shapes from new seeds), or trace hashing. Hygiene is a post-process on already-extracted Quantity tuples.
|
||||
- **Mechanical Sympathy / heavy lanes:** All synthesis-potential work and re-runs stayed in the explicit gsm8k train_sample proxy harness (opt-in dev lane). No fast-path or always-on cost.
|
||||
- **Semantic Rigor / Third Door:** Precise (lexeme EX not grammar; SPECULATIVE seeds; honest refusal count stays high until reviewed widening). Used existing synthesis corridor + heavy harness rather than new infra.
|
||||
|
||||
## Test / Oracle Results (This Increment)
|
||||
- `tests/test_adr_0179_extract.py`: 24/24 (the 2 postmodifier pins + 22 others; hygiene refinement was the only code change needed to land cleanly).
|
||||
- Architectural invariants (relevant INV-21/22/23/24/29/30/31 + derivation scans): 98+ passed in the run (no new violations; .claude excluded per maintained discipline).
|
||||
- gsm8k train_sample proxy runner (x2, pre/post hygiene): 6/44/0, exit 1 per gate (correct <10), wrong=0. Reproducible.
|
||||
- Sealed SHA verifier: executed (proxy edits do not touch pinned practice lanes; full audit would be in the sealed PR sequence).
|
||||
- Git surface: 5 exemplar jsonl + extract.py + report.json (measurement) + the two prerequisite ratif MDs. Zero other .py, zero Makefile, zero sealed, zero runtime_contracts drift in this slice.
|
||||
|
||||
## Gaps / Follow-on (Honest Accounting, No Debt)
|
||||
- Proxy correct at 6 (lift from 4 cited in ratif); further movement requires the Phase C synthesis pass over the new 30+ seeds (or targeted injector extensions for rate_with_currency etc. in recognizer_anchor_inject.py). This is explicitly "subsequent increment" per the 2026-06-17 ratif.
|
||||
- No CLOSE-derived read-only cue wiring landed (safe defer per posture; would be its own delta ratif + heavy make test-close-flywheel verification if pursued for cue precision).
|
||||
- Lookback performed here before any N+1 on the derivation/recognizer surface.
|
||||
- Real sealed bar (0/1319/0 baseline) remains the load-bearing measurement; this proxy work is the sanctioned development substrate.
|
||||
|
||||
## Conclusion
|
||||
This increment delivered exactly the ratified first slice: reader surfaces for the high-freq refusals + industrialized canonical Phase B seeds + rebaseline + test hygiene to make the substrate land cleanly. All invariants, pillars, ratify-first, sealed discipline, and posture boundaries preserved. "0 wrong" is non-negotiable and held. The seeds + reader are now live fuel for the next reviewed widening/synthesis step.
|
||||
|
||||
No hazards introduced that would require pre-N+1 fix. Ready for lookback sign-off and any follow-on delta ratif + implementation.
|
||||
|
||||
*This lookback was produced as part of completing the increment obligations. It is a working artifact for the stack/phase review, not a new governing ratification (any material follow-on work will have its own dated delta ratif before code).*
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
# Ratification: Strategic Deep-Dive Plan for Serious Lift in Problem-Solving Capability (System-of-Systems Analysis and Workstream Initiation)
|
||||
|
||||
**Date:** 2026-06-16
|
||||
**Branch:** `feat/ratify-problem-solving-lift-strategic-deep-dive` (fresh from `origin/main` incorporating the #791–#794 CLOSE flywheel visibility/measurement series and the just-ratified close-derived-facts-frameverdict-posture)
|
||||
**Governing brief:** "the broad mandate to do a thorough system-of-systems analysis for serious lift in problem solving, utilizing/considering *all* components (algebra, field, derivation/GSM8K math substrate, CLOSE flywheel + review/ratification, CognitiveTurnPipeline + operators + realizer, sensorium full stack, teaching/epistemic, vault, packs, evals, calibration, etc.) while respecting every invariant, pillar, and ratify-first discipline." (The original user request that produced the approved plan.)
|
||||
**Preceding work (locked):** The approved plan located at `/Users/kaizenpro/.grok/sessions/%2FUsers%2Fkaizenpro%2FProjects%2Fcore/019ed21d-7312-70c1-891d-43d89b720827/plan.md` (synthesized 2026-06-16 immediately following ratification of close-derived-facts-frameverdict-posture and the #791–#794 series; see plan §7 "References & Artifacts" for the authoritative cross-ref list that was excerpted here). The 2026-06-16 ratification family: `close-derived-facts-frameverdict-posture-ratification-2026-06-16.md`, `close-flywheel-proposal-review-visibility-ratification-2026-06-16.md`, `close-derived-climb-yardstick-claim-b-ratification-2026-06-16.md`, `close-flywheel-dedicated-regression-surface-ratification-2026-06-16.md`, `close-derived-proposal-bridge-2026-06-16.md`, `integrate-hardened-close-yardstick-determinism-teaching-regression-ratification-2026-06-16.md`, `close-relational-transitive-pr1-2026-06-16.md`. Parallel: `b4-frameverdict-implementation-lookback-2026-06-15.md`, `afferent-field-ingest-scope-2026-06-15.md`, `gsm8k-lift-program-strategy-2026-06-04.md` (and ADR-0163/017x family), comprehension-*-ledgers, `docs/runtime_contracts.md` (posture + CLOSE bridge + determination sections), `docs/testing-lanes.md` (Dedicated CLOSE Flywheel Regression Surface + Review / Ratification Posture subsection), CLAIMS.md (sealed lanes), capability_roadmap.md + PROGRESS.md, Claude.md / AGENTS.md / CLAUDE.md (ratify-first, lookback, sealed-math discipline), Whitepaper §IV (pillars).
|
||||
|
||||
## Context: Current State Snapshot and the Mandate for Serious Lift
|
||||
|
||||
CORE has strong, sealed, replay-deterministic foundations for *restricted* problem solving (math word problems via the derivation compiler + verify gate + reliability/cue ledgers, achieving first non-zero lift to **7 correct / 43 refused / 0 wrong** on train_sample/v1 (real test 0/1319/0 with wrong=0 invariant preserved), recent dedicated CLOSE regression surface + proposal review posture visibility in the heavy lane (`make test-close-flywheel`), B4 FrameVerdict deliberate non-interaction posture locked per the posture ratification, sensorium parallel afferent track (gated per afferent scope ratif), full CognitiveTurnPipeline spine, algebra invariants (versor_condition < 1e-6 at sanctioned sites only), and the long-running capability roadmap (Phases 0–6+ per capability_roadmap.md + PROGRESS.md) plus ADR-0163 math corridor / recognizer synthesis lifts.
|
||||
|
||||
**Headline measurements (as of latest sealed data):** Math problem solving at 7/43/0 (train) with strong wrong=0 machinery (verify.py multi-predicate gate: grounding ∧ cue ∧ unit ∧ completeness ∧ uniqueness + conservative floors); real test coverage gap; CLOSE flywheel now observably emitting review-gated proposals (source="derived_close_fact", born proposal_only / speculative / requires_review) with posture telemetry (`proposal_review_posture`, `proposal_review_summary`) in heavy lane; general reasoning operators delivering Phase 3 lifts on inference/multi-step; sensorium mature as parallel compiler (audio_core_v1, vision_core_v1, sensorimotor, environment) but not yet fused into core problem-solving cognition at scale; full pipeline traces deterministic.
|
||||
|
||||
The user request (the broad mandate) is a fresh, thorough, meticulous **system-wide ("one big cohesive system of systems") analysis** to identify what must be done — considering *all* components — to produce serious, measurable lift in *problem-solving* capability (generalized beyond current flagship math word-problems, while protecting every invariant). This differs from the prior narrow post-merge CLOSE yardstick audit plan that previously occupied the session plan file; that prior content is archived here in the approved plan's overwrite, and the current request is explicitly forward-looking and broader.
|
||||
|
||||
**Governing principles (non-negotiable, drawn from Claude.md / AGENTS.md / Whitepaper / runtime_contracts / recent ratifs and excerpted in the approved plan):**
|
||||
- North Star: listen → comprehend → recall → think → articulate → learn from reviewed correction → replay deterministically. `CognitiveTurnPipeline` is the spine.
|
||||
- Hard invariants: `versor_condition(F) < 1e-6` (enforced *only* at sanctioned sites: ingest/gate, language_packs/compiler, algebra/versor, sensorium/*/canonical, session/context semantic anchoring). Exact CGA recall via `cga_inner` (no ANN/HNSW/cosine ever in runtime memory). Proposal-only + SPECULATIVE defaults + review-gated boundaries (INV-21/22/23/24/29). INV-30 (open-world determine: only `answer=True` or Undetermined; absence never False). INV-31 (FrameVerdict closed-world firewall: deliberate non-interaction with CLOSE/derivation per the just-ratified posture artifact). wrong=0 on all problem-solving/math lanes (the verify gate + reliability conservative floors + sealed SHAs in CLAIMS.md + scripts/verify_lane_shas.py). No hidden normalization, drift repair, stochastic, or post-hoc fixes outside construction boundaries. Semantic anchoring only (never "drift repair").
|
||||
- Engineering Pillars (Whitepaper §IV): Mechanical Sympathy (respect cost; heavy lanes like CLOSE flywheel + full eval stays in explicit opt-in dedicated surfaces e.g. `make test-close-flywheel`, not fast/CI); Semantic Rigor (precise meanings: open accretion vs. declared-closed snapshot; derivation facts vs. FrameVerdict; proposals never masquerade as COHERENT); Third Door (first-principles composable lanes + ratify-first artifacts over obvious integrations or corners).
|
||||
- Ratify-first discipline: Every material architectural or measurement change on core surfaces (especially anything touching problem-solving derivation, CLOSE proposals, sensorium integration into cognition, graph/realizer extensions, new eval lanes) requires a dated ratification artifact in `docs/analysis/` (or substantial runtime_contracts update) written *before* implementation.
|
||||
- Verification truth: CLI lanes (`core test --suite cognition/algebra/full/smoke`, `core eval cognition`, `make test-close-flywheel`, `core demo anti-regression --json`, gsm8k runners, sealed SHAs). Anti-regression demo + dedicated CLOSE surface as heavy composable harness. wrong_total=0 + content_replay_checksum + posture assertions + byte-identical replay + active_corpus_byte_identical as oracles. Full end-to-end traces of the cognitive cycle on problems.
|
||||
- "Serious lift" definition (for this plan): Measurable, replay-deterministic, wrong=0-preserving improvement in (a) correct-rate + reduced refusal on sealed math problem-solving (GSM8K train_sample + generalization), (b) coverage and success on broader problem classes (multi-step, spatial/visual via sensorium, causal/procedural), (c) full-cycle autonomy + reviewed learning (CLOSE proposals capturing strategies + human ratification lifting competence), (d) honest refusal calibration (no confabulation). All while the system remains one cohesive geometric + epistemic whole (no fractured late-fusion or dual-memory hacks). Evidence must be lived (real `ChatRuntime` + `idle_tick` + `CognitiveTurnPipeline` + derivation verify gate + sensorium compile paths), not synthetic.
|
||||
- Scope discipline: This plan inventories *everything* relevant, identifies integration/cohesion points and fracture risks, proposes sequenced workstreams that are small/load-bearing/ratified, protects sealed math substrate (moves only via ratified PRs per CLAUDE.md), treats sensorium as sanctioned parallel (not displacer), and elevates observability/measurement of the full problem-solving flywheel (derivation + CLOSE review/ratification + afferent grounding + pipeline articulation + teaching correction).
|
||||
- Anti-patterns forbidden in recommendations: broad infra that hides whether CORE itself is improving; new CLIs or always-on reporters (use/extend existing heavy lanes + make targets + demo embedding); weakening any threshold or boundary for "progress"; treating the current 7/43/0 or recent posture signals as terminal.
|
||||
|
||||
The approved plan (the authoritative source for this ratification) delivers: complete inventory + current integration/cohesion map; evidence-based gap/bottleneck analysis (with specific references); prioritized, ratify-first, invariant-respecting workstreams; measurement/verification/sequencing discipline; explicit success criteria and risks (including "wrong=0 hazard surfaces" per lookback discipline).
|
||||
|
||||
No code changes, branches, or implementation until user approval via exit from plan mode + explicit "execute" or "approved" trigger. All exploration here (for the plan and for this ratification artifact) was read-only.
|
||||
|
||||
## Evaluation of Approaches for Achieving Serious Lift
|
||||
|
||||
The approved plan performs exhaustive inventory of the full system-of-systems map (plan §3):
|
||||
|
||||
**Core geometric & memory substrate (must stay invariant):** algebra/ (versor.py closure, cga.py inner, backend.py + partial Rust), field/, vault/ (exact cga_inner only; ADR-0019 staged), session/context (semantic anchoring *only* at the sanctioned site, preserves versor_condition by construction; never post-hoc repair or drift fix per CLAUDE.md), ingest/gate (injection + OOV).
|
||||
|
||||
**Comprehension / derivation engine (current primary "think"):** generate/derivation/* (full compiler: extract conservative + hygiene + deferred EX-3; clauses GB-1; compose/accumulate + guards + goal_residual (ADR-0207); multistep/search bounded; verify (wrong=0 gate); supporting comparatives/product_bridge/r1_reconstruction/pool/state ledger/provenance/replay/source). Integrated with core/reliability_gate (ClassTally, conservative_floor Wilson, θ ceilings), generate/cue_precision, en_arithmetic_v1. **Sealed**; wrong=0 + SHAs + ratif discipline for changes. Current lift via reader/recognizer synthesis (admissibility exemplars → deterministic synthesis → ratification → gate).
|
||||
|
||||
**Cognitive cycle & articulation (the "listen → ... → articulate → learn" spine):** core/cognition/pipeline.py + result/trace; generate/intent.py + bridge/ratifier; generate/graph_planner.py (PropositionGraph → AdmissibilityRegion); generate/operators.py (transitive_walk, multi_relation_walk, compose_relations, FrameCompose — recent Phase 3 lifts); generate/realizer.py + templates.py (deterministic; articulation_surface contract); chat/runtime.py (ChatRuntime, idle_tick for CLOSE, CognitiveTurnPipeline delegation); response governance + identity.
|
||||
|
||||
**CLOSE flywheel (autonomous growth + reviewed ratification):** generate/determine/ (consolidate, derived_close_proposals, determine open-world); chat/runtime idle_tick + review_derived_close_proposals flag; teaching/proposals (ProposalLog events, ReviewState pending/accepted/rejected, accept/reject/withdraw, events, accepted_corpus_append); vault/store (SPECULATIVE default; COHERENT only via reviewed/certified paths; INV-29). Recent #791–#794: Claim-B yardstick hardening (content_replay_checksum, semantic_positives_determined_direct, wrong=0, full proposal posture); hermetic embedding in anti-regression demo; dedicated `make test-close-flywheel` + testing-lanes section; additive proposal_review_posture (climb) + proposal_review_summary (demo) for the review/ratification half. All in heavy hermetic lane only. Just-ratified posture: deliberate long-term non-interaction with FrameVerdict/closed-world (INV-30/31 preserved; richness achieved *inside* open lane).
|
||||
|
||||
**Reviewed learning & epistemic:** teaching/correction, review, store (PackMutationProposal, epistemic transitions only via vault/store). Epistemic disclosure/questions/state. Proposal review machinery (now with measurable posture).
|
||||
|
||||
**Afferent / richer input (sensorium parallel track):** sensorium/compiler (content-addressed units, canonical deltas, local arenas, trace-safe merge hashes — shared law). Modalities: audio/vision/sensorimotor/environment (canonical/lexer/parser/operators/teachers/frames/checksum/compiler/arena/trace/falsification/harness; grid for vision). Adapters + registry (decode* + AuthorityToken/EfferentGate per ADR-0198 — fail-closed; text active, others gated). Integration points must surface as grounded propositions/quantities/relations into ingest/field/graph/cognition/derivation without late fusion, without violating versor or epistemic, and without displacing math focus. Afferent-only (efferent reserved). "Afferent-field-ingest-scope" ratif exists; sanctioned parallel.
|
||||
|
||||
**Packs, calibration, identity, governance + Measurement:** language_packs (en_core_cognition_v1 seed + arithmetic; compiler), core/reliability_gate + cue_precision, core/identity/response_governance/epistemic_state, safety/ethics/formation. evals/ (gsm8k_math full with practice/confusers/train_sample/holdouts/adversarial/depth-curve/verify; close_derived_climb Claim-B + posture; anti_regression with embedded climb + review_summary; many others with SHAs), scripts/verify_lane_shas + generate_claims, benchmarks/calibration/contemplation. docs/runtime_contracts.md (surface, determination, CLOSE bridge + new posture section, epistemic, provisional vs durable), testing-lanes.md (dedicated CLOSE surface + review posture subsection), docs/analysis/ ratif family, anti-regression demo as canonical heavy harness.
|
||||
|
||||
**Cross-cutting / cohesion requirements (and fracture risks):** Bit-identical replay traces; honest epistemic standing (SPECULATIVE proposals; COHERENT only reviewed/certified); sensorium units first-class in proposition graph / derivation without special-casing that fractures geometric model; CLOSE proposals can capture derived relations/strategies; no component may import or leak across INV-30/31 or proposal-only boundaries; performance (hot paths semantics-preserving; heavy loops in explicit heavy lanes only). Fracture risks: late fusion of sensorium; using CLOSE facts inside FrameVerdict or vice-versa (posture ratif rules this out; new procedural/strategy proposals must be born proposal_only + SPECULATIVE + requires_review per the visibility ratification and INV-29; promotion only via reviewed teaching or certified path; never auto-promoted or injected into FrameVerdict per posture ratification); relaxing verify/wrong=0; adding stochastic/approx; broad teaching/graph changes regressing sealed math/replay; treating 7/43/0 or posture signals as sufficient without generalizing the full cycle.
|
||||
|
||||
**Gap / Bottleneck Analysis (plan §4, excerpted):** (Plan one-sentence definition of "serious lift" for reference: Measurable, replay-deterministic, wrong=0-preserving improvement in (a) correct-rate + reduced refusal on sealed math problem-solving (GSM8K train_sample + generalization), (b) coverage and success on broader problem classes (multi-step, spatial/visual via sensorium, causal/procedural), (c) full-cycle autonomy + reviewed learning (CLOSE proposals capturing strategies + human ratification lifting competence), (d) honest refusal calibration (no confabulation).)
|
||||
1. Coverage & surface form handling in derivation (reader/recognizer lifted train to 7/43/0 but real GSM8K 0; lexeme-conservative good for wrong=0 but headroom in deferreds, comparatives/ratios, goal residual, multi-step search).
|
||||
2. Generalization beyond word-problem arithmetic (strong on relational/transitive/multi-step within taught vocab; novel structures, spatial/visual, causal, procedural need richer operators, goal-directed planning, afferent grounding; compositionality residuals).
|
||||
3. CLOSE flywheel for "learning to solve" (excellent recent visibility into emission + review; but emitted facts currently narrow relational; procedural/strategy/solution-pattern proposals not yet first-class or fed back; review measurable, autonomous could capture more "how" with reviewed promotion; new procedural/strategy proposals must be born proposal_only + SPECULATIVE + requires_review per the visibility ratification and INV-29; promotion only via reviewed teaching or certified path; never auto-promoted or injected into FrameVerdict per posture ratification).
|
||||
4. Sensorium afferent not yet participating in problem solving at scale (mature compiler + vision high-value for diagrams; not deeply wired into proposition graph/derivation/CognitiveTurnPipeline for end-to-end "see diagram + text → derive → articulate" with replay. Risk of fractured integration without ratif + compiler discipline).
|
||||
5. End-to-end cycle measurement & articulation of solutions (strong per-lane; weaker on full listen-comprehend-recall-think-articulate-learn traces for novel multi-step, including reviewed correction on *solution strategy* and re-playable improvement).
|
||||
6. Calibration & refusal honesty at higher ambition (strong wrong=0; as ambition rises, refusal must stay calibrated/typed while correct rate lifts; current high refusal on real GSM8K is honest but limits "serious lift").
|
||||
7. Performance & scale for heavy problem-solving loops (intentionally heavy; algebra/Rust partial parity; vault indexing staged; need exact batching/indexing without approx).
|
||||
8. Cohesion & invariant surface area (any lift touches multiple; local opt can break global replay/versor/epistemic/sealed math; recent ratifs show successful boundary management — must continue).
|
||||
9. Roadmap alignment & evidence gaps (Phase 3 reasoning + Phase 5/GSM8K expert arc relevant; "serious lift" on real distributions + generalized + full flywheel is the next mountain; need ratif artifacts for each increment).
|
||||
|
||||
**Why ratify-first + Third Door + existing heavy lanes (not broad infra or new CLIs):** The plan explicitly rejects anti-patterns and requires use/extend of dedicated CLOSE surface, anti-regression embedding, gsm8k sealed practice/confusers for verification. "Third Door: extend existing mechanisms rather than new CLIs/infra." Mechanical Sympathy demands heavy work (CLOSE full + derivation + sensorium compile + multi-turn teaching) in opt-in heavy lanes only.
|
||||
|
||||
## Recommendation and Ratified Posture: Execute the Approved Strategic Deep-Dive Plan as Governing Document; Ratify and Initiate Workstream A (Derivation/GSM8K Compiler Generalization + Reader Lift + Safe CLOSE-Derived Premises Integration) First
|
||||
|
||||
**The overall approved plan (the full content of the referenced session plan.md, whose Executive Summary, Current State, System-of-Systems Map, Gap Analysis, Prioritized Workstreams, Verification Strategy, and References & Artifacts sections are incorporated by reference and excerpted above) is hereby ratified as the governing document for this capability arc.** (Workstream A title and bullets below are paraphrase/summary of plan §5 Workstream A title + bullets; full definition and sequencing in the governing plan §5; see plan §7 for follow-on ratif obligations.)
|
||||
|
||||
All material steps in this arc — especially anything touching derivation, CLOSE proposals, sensorium integration, graph/realizer, new measurement — shall follow the plan's ratify-first discipline, producing (or referencing) dated ratification artifacts in `docs/analysis/` *before* any logic changes or broad edits. Sealed math (generate/derivation, evals/gsm8k_math, core/reliability_gate, verify.py, SHAs in CLAIMS.md + scripts), CLOSE emission/review paths, FrameVerdict, and invariants move only via ratified PRs in the same sequence. "Serious lift" success is defined and evidenced exactly as in the plan (measurable correct-rate improvement on sealed train_sample e.g. toward 15+/50 with still 0 wrong + flat depth; generalization; full-cycle observability; honest calibration; via CLI lanes: make test-close-flywheel, gsm8k runners+verify, invariants, anti-regression demo). Preserve all listed invariants, pillars, replay determinism, epistemic standing, Mechanical Sympathy (heavy in opt-in lanes only), Semantic Rigor (precise open vs closed, no masquerading), and INV-30/31 deliberate non-interaction.
|
||||
|
||||
**Workstream A is hereby initiated as the first stream (highest immediate leverage on "think" for structured problems; ratify scope before code):**
|
||||
- Ratify scope (new or delta ratif referencing gsm8k-lift-program-strategy-2026-06-04.md, ADR-0163/017x family, derivation model, this ratification, and the governing plan).
|
||||
- Expand reader/recognizer synthesis corridor (more exemplars, more categories, automated coverage probes on train_sample + public) while preserving sealed verify gate + SHAs. Target measurable correct lift on train_sample (e.g., toward 15–20+/50) with still 0 wrong.
|
||||
- Close high-value deferreds safely (e.g., controlled EX-3 with new hygiene or postmodifier stop-list + new test that would have caught prior traps).
|
||||
- Add/enrich derivation for ratios, comparatives, product/remainder, r1-style total reconstruction, goal residuals in more contexts; bounded search with richer heuristics that still go through verify.
|
||||
- Generalize extraction/clauses/compose beyond pure arithmetic word problems toward multi-relation causal/spatial/procedural (feeding operators + graph).
|
||||
- Integrate CLOSE-derived relations as additional premises (read-only, under review-gated COHERENT or certified) into derivation search/compose — *without* crossing into FrameVerdict (per the posture ratification and INV-30/31).
|
||||
- New or extended sealed eval lane (or gsm8k sub-lane) for broader problem classes with wrong=0 + depth curve — preceded by its own (or delta) ratification artifact explicitly referencing this plan, gsm8k-lift-program-strategy-2026-06-04.md, and the governing plan; verification via re-run of gsm8k runners + verify.py + SHAs + invariants + anti-regression (if teaching) + content checksums.
|
||||
- Verification: re-run gsm8k runners + verify.py + SHAs; full invariants; anti-regression if teaching involved; content checksums. (Follow lookback discipline before any Phase N+1 on this or stacked workstreams.)
|
||||
|
||||
Subsequent workstreams (per plan §5–6; full definitions and sequencing in governing plan):
|
||||
- B: Evolve CLOSE flywheel to capture & ratify procedural/strategy knowledge for problem solving (utilize the new visibility).
|
||||
- C: Safe, ratif-gated integration of sensorium afferent into problem-solving cognition (the "listen" enrichment for visual/spatial problems).
|
||||
- D: Broader end-to-end problem-solving cycle measurement + articulation lift.
|
||||
- E: Hot-path, vault, and Rust parity for feasible heavy problem-solving loops.
|
||||
All cross-cutting (ratif per major step, additive/semantics-preserving, Third Door via existing heavy surfaces, Mechanical Sympathy, Semantic Rigor + posture, doc updates to runtime_contracts/testing-lanes/capability_roadmap/PROGRESS in same PRs, lookback before stacked phases) shall follow exactly as sequenced and constrained in the governing plan §5–6.
|
||||
|
||||
This is the only correct path: inventory everything, protect the invariants that make the "0 wrong" and "deterministic replay" claims real, ratify before touching, measure in the existing heavy composable lanes (dedicated CLOSE surface, anti-regression demo, gsm8k sealed lanes), and advance the full listen-comprehend-recall-think-articulate-learn cycle (with CLOSE review and sensorium afferent) rather than any isolated module.
|
||||
|
||||
## Alignment with Engineering Pillars (Whitepaper §IV)
|
||||
|
||||
- **Mechanical Sympathy:** The plan and this ratification respect cost profiles explicitly. Heavy problem-solving loops (full CLOSE flywheel + derivation + sensorium compile + multi-turn teaching + full-cycle traces) are confined to explicit opt-in dedicated surfaces (`make test-close-flywheel`, anti-regression embedding, gsm8k sealed practice/confusers) — never fast/CI or always-on. No new broad infra or reporters that would force the machine to pay for every build. Hot-path work (if any in E) is semantics-preserving only. Sensorium compile is acknowledged heavy and gated accordingly. The ratify-first discipline itself is low-cost documentation before expensive implementation. (Whitepaper §IV: "Software should understand the machine it runs on, not fight it." ... "Intelligence that ignores its substrate is wasted intelligence.")
|
||||
- **Semantic Rigor:** Every term retains precise, non-negotiable meaning (open-world derive/determine/CLOSE proposals vs. declared-complete closed FrameVerdict snapshots and INV-30/31; SPECULATIVE/proposal_only at birth vs. reviewed COHERENT promotion; derivation facts vs. FrameVerdict; versor exact + cga_inner exact recall; wrong=0 as schema-defined proof obligation enforced by verify gate + conservative floors; "serious lift" as measurable replay-deterministic + wrong=0-preserving on lived paths, not vibes or synthetic). The posture on non-interaction (from the 2026-06-16 family) is reinforced; no blurring or masquerading allowed. All new "problem-solving knowledge" (strategies, visual relations) must carry honest epistemic standing and provenance. (Whitepaper §IV: "Every term used in this system has a precise, non-negotiable meaning." ... "Rigor is not a style; it is what separates an engine from a heuristic.")
|
||||
- **Third Door:** The plan refuses the two obvious doors (broad new infrastructure/CLIs that hide whether CORE is improving; or isolated module tweaks that ignore the cohesive system). It takes the third door: exhaustive first-principles system-of-systems inventory from the approved plan, ratify-first artifacts before any logic, extension of *existing* heavy composable lanes and make targets (CLOSE dedicated surface + anti-regression + gsm8k sealed) as the verification harness, small/load-bearing/ratified workstreams sequenced with lookback, and measurement via lived CLI oracles (wrong=0, content_replay_checksum, posture assertions, byte-identical replay, active_corpus_byte_identical, full pipeline traces). This ratification itself is the load-bearing first artifact locking the path. (Whitepaper §IV: "We find the third door — the path built from first principles that sets the bar ourselves.")
|
||||
|
||||
## Verification Obligations (Post-Ratification)
|
||||
|
||||
- This ratification artifact exists on disk (written first, via the `write` tool).
|
||||
- Git diff on this sequence limited to this ratification artifact only (plus any follow-on per-workstream ratifs or the plan-specified later contract/roadmap updates in the *same* ratified PRs after this kickoff; zero changes to any .py, Makefile, evals runners, tests, SHAs, sealed substrates, or other behavior permitted in the creation or immediate wake of *this* artifact). **Zero changes to any `.py`, Makefile, evals runners (beyond additive measurement under ratif), tests, SHAs, sealed substrates, or other behavior have been (or may be) performed in the creation of this artifact.**
|
||||
- For this ratification step itself, all oracles must continue to report identical values and pass/fail status as the pre-ratif baseline (no behavioral delta permitted by a documentation-only artifact).
|
||||
- The full architectural invariants suite (`tests/test_architectural_invariants.py`, including INV-21/22/23/24/29/30/31) and all prior ratif obligations remain untouched and would continue to pass by construction.
|
||||
- `core test --suite smoke -q` (or equivalent), `core test --suite full -q` (targeted cognition/algebra/gsm8k/derived_close), `make test-close-flywheel` (climb + anti demo with posture/summary), `core eval cognition`, gsm8k runners + verify.py + SHAs, and `core demo anti-regression --json` continue to behave exactly as before (no behavior change by construction of this doc-only step).
|
||||
- All prior invariants (versor_condition at sanctioned sites only, exact cga_inner recall, proposal_only/SPECULATIVE/requires_review at birth for CLOSE, INV-30/31 deliberate non-interaction, wrong=0 gates, replay determinism, epistemic standing, Mechanical Sympathy, Semantic Rigor) continue to hold by construction.
|
||||
- Primary oracles per plan: wrong_total=0 + content_replay_checksum + posture assertions + byte-identical replay + active_corpus_byte_identical + all_gates_held + full end-to-end cognitive cycle traces (exercised and asserted inside `core demo anti-regression --json` scenes + embedded climb + test_anti_regression_demo.py gate assertions, plus `core eval cognition` and gsm8k runner traces with stable trace_hash). In particular, `make test-close-flywheel` and the anti-regression contract tests must continue to assert proposal_review_posture.all_proposal_only / all_speculative / review_eligible, proposal_review_summary.by_state counts + transition events, content_replay_checksum over proposal bodies, all_gates_held, and active_corpus_byte_identical (as exercised by tests/test_anti_regression_demo.py and evals/close_derived_climb/runner.py + contract.md). Success for serious lift defined exactly as in plan §6 (measurable correct-rate on sealed train_sample toward e.g. 15+/50 with 0 wrong + flat depth; generalization to new classes with non-zero correct or grounded refusal + replay; CLOSE proposals visibly capturing/review/ratifying strategy knowledge producing downstream lift; sensorium units in at least one end-to-end problem trace with no invariant violation; all new surfaces in ratifs + contracts + heavy lanes; no regression in Phase 1–4 or sealed SHAs).
|
||||
- Sequencing: 1. This ratification (or delta) of the governing plan. 2. Workstream A (derivation generalization + reader lift + safe CLOSE-derived) — re-baseline all gsm8k + invariants + lookback. Subsequent streams per plan §6, with lookback before any Phase N+1 on multi-phase work. Parallel doc/ratif/roadmap refresh only as specified.
|
||||
- Lookback obligations (per CLAUDE.md and plan): Before next phase of any multi-phase (e.g. further math reader or CLOSE procedural), audit prior phase substrate for ADR-doc vs impl drift, untested predicate paths, wrong=0 hazard surfaces, cross-phase trace/event/rank consistency. Audit whole stack before merging stacked PR sequences (2+). After any 3+ PR sequence on same module/surface.
|
||||
|
||||
## References
|
||||
|
||||
- The approved governing plan (authoritative source, full system-of-systems analysis, workstreams, definitions, constraints): `/Users/kaizenpro/.grok/sessions/%2FUsers%2Fkaizenpro%2FProjects%2Fcore/019ed21d-7312-70c1-891d-43d89b720827/plan.md` (and its internal references to the original deep-dive query).
|
||||
- Plan §7 "References & Artifacts" (authoritative list of required follow-on ratifs, doc updates only in same PRs as logic, SHA discipline for sealed lanes; see also cross-refs listed in the plan).
|
||||
- CLOSE family (2026-06-16): `docs/analysis/close-derived-facts-frameverdict-posture-ratification-2026-06-16.md` (posture + INV-30/31 + deliberate non-interaction), `close-flywheel-proposal-review-visibility-ratification-2026-06-16.md`, `close-derived-climb-yardstick-claim-b-ratification-2026-06-16.md`, `close-flywheel-dedicated-regression-surface-ratification-2026-06-16.md`, `close-derived-proposal-bridge-2026-06-16.md`, `integrate-hardened-close-yardstick-determinism-teaching-regression-ratification-2026-06-16.md`, `close-relational-transitive-pr1-2026-06-16.md`.
|
||||
- GSM8K / math substrate: `docs/analysis/gsm8k-lift-program-strategy-2026-06-04.md`, real-gsm8k-capability-measurement-2026-06-04.md, math-serving-seam-design-2026-06-06.md, ADR-0163 family / recognizer synthesis, `evals/gsm8k_math/` (train_sample, practice, confusers, verify.py), `core/reliability_gate/`, `generate/derivation/` (extract/clauses/compose/accumulate/goal_residual/multistep/search/verify + state/), CLAIMS.md (pinned lanes), `scripts/verify_lane_shas.py` + `scripts/generate_claims.py --check`.
|
||||
- Sensorium / afferent: `docs/analysis/afferent-field-ingest-scope-2026-06-15.md` (and ADR-0208/0197/0198/0209 family), sensorium/compiler/ + audio/vision/sensorimotor/environment + adapters/registry (EfferentGate fail-closed).
|
||||
- B4 / FrameVerdict / closed-world: `docs/analysis/b4-frameverdict-implementation-lookback-2026-06-15.md`, handoff/b4-pr1-..., ADR-0222.
|
||||
- Cognitive spine / pipeline / operators / realizer / teaching / epistemic: `core/cognition/pipeline.py` + result.py + trace.py, `generate/intent.py` + graph_planner.py + operators.py + realizer.py + templates.py, `chat/runtime.py` (CognitiveTurnPipeline, idle_tick, IdleTickResult), `teaching/correction.py` + review.py + store.py + proposals.py (ProposalLog, ReviewState), vault/store.py (INV-21/22/23/24/29), epistemic_*/disclosure.
|
||||
- Contracts and lanes: `docs/runtime_contracts.md` (field invariant, ChatResponse surface/articulation/walk policy, determination surface, idle consolidation/CLOSE/derived proposal bridge, Architectural Posture: CLOSE-Derived Facts and FrameVerdict section explicitly referencing the posture ratification, epistemic/provisional vs durable), `docs/testing-lanes.md` (Dedicated CLOSE Flywheel Regression Surface (Claim-B Level) + "Review / Ratification Posture and Events" subsection + make target + hermeticity + pillar alignment), `docs/capability_roadmap.md` + PROGRESS.md + `docs/Whitepaper.md` §IV (Three Engineering Pillars), `docs/CLAUDE.md` / AGENTS.md / Claude.md (ratify-first, lookback review discipline, sealed math protection, work sequencing, Mechanical Sympathy / Semantic Rigor / Third Door, wrong=0 hazard discipline, `.claude/` exclusion in architectural scans).
|
||||
- Algebra / field / vault / session: algebra/versor.py + cga.py + backend.py (versor_apply, versor_condition, cga_inner), field/propagate.py, vault/ (exact only), session/context.py (semantic anchoring sanctioned site only), ingest/gate.py.
|
||||
- Measurement / anti-regression / evals: `evals/anti_regression/run_demo.py` + contract tests (hermetic embedding of climb + review_summary), `core demo anti-regression --json`, benchmarks/, calibration/.
|
||||
- Other supporting analysis: comprehension-*-ledgers, composition-capability-scope.md, epistemic-coherence-architecture-2026-06-14.md, step3-relational-surface-lookback-2026-06-15.md, and the full docs/analysis/ + docs/decisions/ corpus.
|
||||
|
||||
**Ratification Status:** COMPLETE AND LOCKED. This artifact was created via the `write` tool (the only write performed) on the clean branch/session *before any search_replace, write (other than this file), edit, or other implementation change to any source files (.py or otherwise), tests, evals runners, Makefile, SHAs/CLAIMS, sealed math substrates (generate/derivation/*, evals/gsm8k_math/*, core/reliability_gate/*, verify.py), CLOSE emission/review paths, FrameVerdict, invariants, or any other documentation*. All preceding activity was git/session operations (as needed) plus strictly read-only exploration via list_dir, read_file (plan.md in full + 3+ recent ratifs + supporting contracts/lanes/roadmap/CLAIMS/Whitepaper + multiple supporting analysis files), and grep (targeted for structure, metrics, pillar refs, invariant language), with todo_write used for multi-step steering and real-time visibility (per AGENTS.md / .cursor/common-hooks rules). The decision (ratification of the governing plan + initiation of Workstream A with full analysis excerpted) is now on disk, self-contained, load-bearing, and ready for user approval per the plan's discipline. It may be referenced by subsequent workstreams and PRs. Implementation of any logic, even in Workstream A scope, requires this (or an explicit delta ratif) as the prerequisite step and must stay strictly within the plan's constraints, sequencing, verification obligations, and "no hidden normalization / stochastic / approximate / unreviewed mutation" rules. Any deviation, broadening, or code change before explicit user approval of this ratification + the plan requires a new ratification or explicit brief amendment.
|
||||
|
||||
---
|
||||
|
||||
*This ratification follows the project's ratify-first discipline for strategic capability arcs and system-of-systems changes on core problem-solving surfaces. It prioritizes clarity, intentionality, long-term alignment with the Three Engineering Pillars, preservation of every listed invariant (versor_condition, exact CGA recall, wrong=0, INV-30/31, proposal-only/SPECULATIVE boundaries, replay determinism), Mechanical Sympathy (heavy lanes only), Semantic Rigor (precise open/closed and epistemic distinctions), and Third Door (ratify + existing composable heavy surfaces) over expedience or isolated-module "progress." The full approved plan is the load-bearing reference; this artifact locks the kickoff.*
|
||||
|
|
@ -218,6 +218,27 @@ The Dedicated CLOSE Flywheel Regression Surface (Claim-B Level) plus the review-
|
|||
See `docs/analysis/close-derived-proposal-bridge-2026-06-16.md` for the full artifact
|
||||
schema, dedupe key, test gates, and the PR-1→PR-2 composition.
|
||||
|
||||
### Architectural Posture: CLOSE-Derived Facts and FrameVerdict (deliberate long-term separation)
|
||||
|
||||
CLOSE-derived facts and the proposals that carry them for review (source=`"derived_close_fact"`, born with `status="proposal_only"`, `epistemic_status="speculative"`, `requires_review=true`) operate entirely within the open-world derivation / determine / reviewed-teaching promotion path. They are accretive (sound inference over realized content under the open-world assumption), replayably checksummed in the Claim-B yardstick, and subject to the full proposal-only / SPECULATIVE / review-gated / provisional-standing discipline (INV-21–24, INV-29). Promotion to durable standing (corpus append or COHERENT) occurs only through reviewed teaching gates or the certificate-carrying `apply_certified_promotion` path — never autonomously and never by crossing into closed-world machinery.
|
||||
|
||||
`FrameVerdict` (and its `ClosedFrame` context) is the B4 closed-world substrate (ADR-0222). It requires an explicit declared-complete snapshot (`world_assumption` CLOSED or BOUNDED_CLOSED + `closure_declared=true`) and produces a distinct sealed type carrying `FrameVerdictKind` (ENTAILED_TRUE / ENTAILED_FALSE / UNDETERMINED / CONTRADICTION / SCOPE_BOUNDARY) plus positive-refutation proofs. Construction is funneled through a single allowlisted site; the path is default-dark and off-serving. It is type-distinct from `Determined` and never carries an `answer` bool.
|
||||
|
||||
**There is no data flow, no type sharing, no import path, and no semantic composition in either direction.** A CLOSE-derived fact (even after review, corpus append, or COHERENT promotion) is never packaged as a `ClosedFrame`, never passed to `evaluate_frame_verdict` or the perception adapter, and never influences a `FrameVerdict`. A `FrameVerdict` (or `ClosedFrame`) is never supplied to `determine()`, never becomes a premise in CLOSE derivation or consolidation, never appears in `IdleTickResult.derived_close_proposals_emitted`, never participates in `ProposalLog` / `ReviewState` transitions, and never affects epistemic status or vault promotion.
|
||||
|
||||
This deliberate non-interaction is mechanically enforced and non-vacuously verified by two invariants (see `tests/test_architectural_invariants.py`):
|
||||
|
||||
- **INV-30 (open-world DETERMINE never asserts False):** `determine()` produces only `Determined(answer=True, ...)` at three visible sites or `Undetermined` refusals. Absence never refutes. Closed-world negation is a distinct, lane-scoped type.
|
||||
- **INV-31 (closed-world FrameVerdict cannot reach the open-world runtime):** Two-part firewall — (A) transitive import containment of the open-world spine (`chat.runtime`, `session.context`, `vault.store`) from `generate.frame_verdict` / `core.response_governance.frame_verdict` plus an exact construction allowlist (only `generate/frame_verdict/_construct.py`); (B) typed refusal (`determine` rejects `ClosedFrame` at eligibility; forged objects are type-rejected at the sole disposition adapter).
|
||||
|
||||
The increased richness and observability of the CLOSE proposal review/ratification side (#791–#794) — `proposal_review_posture` (all_proposal_only / all_speculative / all_requires_review / none_accepted_or_promoted guarantees), `proposal_review_summary` (scenes by review_state + log_transitions from hermetic teaching gates + close_derived merge), integration into the anti-regression demo and the `make test-close-flywheel` lane — was achieved entirely *inside* the open/proposal/teaching surfaces and the dedicated heavy verification lane. No boundary was crossed and no FrameVerdict or closed-world reasoning was involved or required.
|
||||
|
||||
**Long-term architectural posture (ratified):** Strict separation is the commitment. CLOSE-derived facts (and their full review/ratification lifecycle) address open-world accumulation, sound derivation, proposal-gated growth, and human/HITL ratification of what the autonomous half emits. FrameVerdict / closed-world addresses lane-scoped, declared-complete snapshot entailment and positive refutation under explicit CWA or perception assumptions. The two are orthogonal; the increased visibility of one does not create a requirement or justification to mix them.
|
||||
|
||||
Any future controlled interaction (however narrow, read-only, or "for targeted CWA checks over a ratified CLOSE subset") is a material architectural change. It requires a new or amended ADR, explicit updates to INV-30 and/or INV-31 with new non-vacuous anchors, re-verification that `wrong_total` remains 0, versor closure, epistemic rules, and determination contracts, plus fresh ratification and updates to this document and the invariants test suite. Until such a ratified change, the current strong separation (SPECULATIVE + proposal-gated + INV-31 firewall + INV-30 open-world True-only) must be preserved by construction.
|
||||
|
||||
See `docs/analysis/close-derived-facts-frameverdict-posture-ratification-2026-06-16.md` (the governing ratification artifact for this posture) for the full analysis of risks/benefits/implications, the explicit pillar alignment (Mechanical Sympathy, Semantic Rigor, Third Door), and the verification obligations. Cross-references: B4 lookback (`docs/analysis/b4-frameverdict-implementation-lookback-2026-06-15.md`), the Derived CLOSE proposal bridge and visibility ratifications (2026-06-16 family), `docs/Whitepaper.md` §IV, and the determination / epistemic / provisional-standing sections of this document.
|
||||
|
||||
### Estimation surface (Step E — ESTIMATION)
|
||||
|
||||
When `estimation_enabled` and a turn is a **converse query** DETERMINE refused (told
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"adr": "0126",
|
||||
"counts": {
|
||||
"correct": 4,
|
||||
"refused": 46,
|
||||
"correct": 6,
|
||||
"refused": 44,
|
||||
"wrong": 0
|
||||
},
|
||||
"exit_criterion": {
|
||||
|
|
@ -153,8 +153,8 @@
|
|||
},
|
||||
{
|
||||
"case_id": "gsm8k-train-sample-v1-0029",
|
||||
"reason": "candidate_graph: recognizer matched but produced no injection for statement: 'The cost of the keyboard was three times greater than the cost of the mouse.' (category=discrete_count_statement)",
|
||||
"verdict": "refused"
|
||||
"reason": "",
|
||||
"verdict": "correct"
|
||||
},
|
||||
{
|
||||
"case_id": "gsm8k-train-sample-v1-0030",
|
||||
|
|
@ -198,8 +198,8 @@
|
|||
},
|
||||
{
|
||||
"case_id": "gsm8k-train-sample-v1-0038",
|
||||
"reason": "candidate_graph: recognizer matched but produced no injection for statement: 'There are three times that many girls at a party being held on the second floor of the building.' (category=discrete_count_statement)",
|
||||
"verdict": "refused"
|
||||
"reason": "",
|
||||
"verdict": "correct"
|
||||
},
|
||||
{
|
||||
"case_id": "gsm8k-train-sample-v1-0039",
|
||||
|
|
|
|||
|
|
@ -114,6 +114,23 @@ _HYPHEN_QTY_RE: Final[re.Pattern[str]] = re.compile(
|
|||
r"(?<![\w.])(\d+(?:\.\d+)?)-([a-zA-Z]+)"
|
||||
)
|
||||
|
||||
# New for Workstream A increment: fractional "half of" or "X/Y of" as 0.5 or fraction * unit.
|
||||
# Conservative, lexeme-level, to help "half of them", "3/4 of the kids" cases that currently
|
||||
# produce no admissible candidate or injection failure.
|
||||
_HALF_OF_RE: Final[re.Pattern[str]] = re.compile(r"(?i)\b(half|one half)\s+of\s+([a-zA-Z]+)")
|
||||
_FRACTION_OF_RE: Final[re.Pattern[str]] = re.compile(
|
||||
r"(?i)\b(\d+)/(\d+)\s+of\s+([a-zA-Z]+)"
|
||||
)
|
||||
|
||||
# Comparative counts "X more than Y unit" -> (x+y) unit; "X less than Y unit" -> max(0, y-x) unit.
|
||||
# Helps "2 more than 5 miles", "3 less than 17 stop signs".
|
||||
_MORE_THAN_RE: Final[re.Pattern[str]] = re.compile(
|
||||
r"(?<![\w.])(\d+(?:\.\d+)?)\s+more\s+than\s+(\d+(?:\.\d+)?)\s+([a-zA-Z]+)"
|
||||
)
|
||||
_LESS_THAN_RE: Final[re.Pattern[str]] = re.compile(
|
||||
r"(?<![\w.])(\d+(?:\.\d+)?)\s+less\s+than\s+(\d+(?:\.\d+)?)\s+([a-zA-Z]+)"
|
||||
)
|
||||
|
||||
|
||||
# Function words that are never units. When the token immediately after a number
|
||||
# is one of these (``$0.75 each``, ``$40 to go``, ``3/4 of``), the single-word unit
|
||||
|
|
@ -126,7 +143,8 @@ _NON_UNIT_WORDS: Final[frozenset[str]] = frozenset(
|
|||
{
|
||||
"a", "an", "the", "of", "to", "for", "in", "on", "at", "as", "than",
|
||||
"per", "each", "every", "and", "or", "with", "by", "from", "more",
|
||||
"less", "about", "that",
|
||||
"less", "about", "that", "old", "young", "tall", "short", "long",
|
||||
"wide", "deep", "high", "away", "apart", "ago", "early", "late",
|
||||
}
|
||||
)
|
||||
|
||||
|
|
@ -186,6 +204,8 @@ def extract_quantities(problem_text: str) -> tuple[Quantity, ...]:
|
|||
3. digit + single unit word (skips numbers a list/hyphen pass already claimed);
|
||||
4. EX-1 word-number + unit word (alphabetic, disjoint from digit spans);
|
||||
5. EX-5 sentence-final bare number (skips any already-claimed digit).
|
||||
6. New for Workstream A: _HALF_OF_RE / _FRACTION_OF_RE (fractional "half of" / "3/4 of");
|
||||
_MORE_THAN_RE / _LESS_THAN_RE (comparative "X more/less than Y unit").
|
||||
"""
|
||||
found: list[tuple[int, Quantity]] = []
|
||||
claimed: list[tuple[int, int]] = []
|
||||
|
|
@ -210,6 +230,58 @@ def extract_quantities(problem_text: str) -> tuple[Quantity, ...]:
|
|||
found.append((match.start(1), quantity))
|
||||
claimed.append(match.span(1))
|
||||
|
||||
# 1c. New EX for Workstream A increment: fractional "half of" / "X/Y of".
|
||||
# Conservative lexeme support for "half of them", "3/4 of the kids" cases.
|
||||
for match in _HALF_OF_RE.finditer(problem_text):
|
||||
unit = match.group(2)
|
||||
quantity = _quantity("0.5", unit)
|
||||
if quantity is not None:
|
||||
pos = match.start(1)
|
||||
if not _claimed(pos, claimed):
|
||||
found.append((pos, quantity))
|
||||
claimed.append((pos, pos + 4)) # rough "half" span
|
||||
|
||||
for match in _FRACTION_OF_RE.finditer(problem_text):
|
||||
num, den, unit = match.group(1), match.group(2), match.group(3)
|
||||
try:
|
||||
val = float(num) / float(den)
|
||||
except (ValueError, ZeroDivisionError):
|
||||
continue
|
||||
quantity = Quantity(value=val, unit=_clean_unit(unit), source_token=f"{num}/{den}")
|
||||
pos = match.start(1)
|
||||
if not _claimed(pos, claimed):
|
||||
found.append((pos, quantity))
|
||||
claimed.append(match.span(1))
|
||||
|
||||
# 1d. New EX for Workstream A: comparative "X more than Y unit" -> sum,
|
||||
# "X less than Y unit" -> diff (clamped >=0). Helps "2 more than 5 miles",
|
||||
# "3 less than 17 stop signs".
|
||||
for match in _MORE_THAN_RE.finditer(problem_text):
|
||||
x, y, unit = match.group(1), match.group(2), match.group(3)
|
||||
try:
|
||||
val = float(x) + float(y)
|
||||
except ValueError:
|
||||
continue
|
||||
quantity = _quantity(str(val), unit)
|
||||
if quantity is not None:
|
||||
pos = match.start(1)
|
||||
if not _claimed(pos, claimed):
|
||||
found.append((pos, quantity))
|
||||
claimed.append((pos, match.end(2)))
|
||||
|
||||
for match in _LESS_THAN_RE.finditer(problem_text):
|
||||
x, y, unit = match.group(1), match.group(2), match.group(3)
|
||||
try:
|
||||
val = max(0.0, float(y) - float(x))
|
||||
except ValueError:
|
||||
continue
|
||||
quantity = _quantity(str(val), unit)
|
||||
if quantity is not None:
|
||||
pos = match.start(1)
|
||||
if not _claimed(pos, claimed):
|
||||
found.append((pos, quantity))
|
||||
claimed.append((pos, match.end(2)))
|
||||
|
||||
# 2. digit + single unit word — the original base pattern.
|
||||
for match in _QTY_RE.finditer(problem_text):
|
||||
if _claimed(match.start(1), claimed):
|
||||
|
|
@ -245,4 +317,25 @@ def extract_quantities(problem_text: str) -> tuple[Quantity, ...]:
|
|||
found.append((match.start(1), quantity))
|
||||
|
||||
found.sort(key=lambda item: item[0])
|
||||
|
||||
# Post-process for age postmodifier hygiene (e.g. "6 years old" in "when she was 6 years old").
|
||||
# Prevents spurious "years" quantity in incidental age contexts (the motivating "8 pages when she
|
||||
# was 6 years old" proxy refusal case) while *preserving* legitimate age-as-target quantities
|
||||
# (pinned by TestEX3StillDeferred: "25 years old?" and "Rachel is 12 years old." must keep unit="years").
|
||||
# Rule (lexeme + local, no grammar): if a year-unit has "old"/"young" nearby, treat as incidental
|
||||
# (blank) *only if* there exists at least one *earlier* quantity in the list that carries a non-empty
|
||||
# unit (i.e., this age phrase is trailing background to a primary claim that has its own grounded unit).
|
||||
# Pure age statements or question targets remain "years" (satisfies the pinned tests and GSM8K age cases
|
||||
# where age *is* the measured quantity).
|
||||
if found:
|
||||
has_prior_grounded = False
|
||||
for i, (pos, q) in enumerate(found):
|
||||
if q.unit and q.unit not in ("year", "years"):
|
||||
has_prior_grounded = True
|
||||
if q.unit in ("year", "years"):
|
||||
snippet = problem_text[pos : pos + 30].lower()
|
||||
if ("old" in snippet or "young" in snippet) and has_prior_grounded:
|
||||
found[i] = (pos, Quantity(value=q.value, unit="", source_token=q.source_token))
|
||||
# else: keep "years" (sole/primary age target or no competing grounded unit yet)
|
||||
|
||||
return tuple(quantity for _, quantity in found)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@
|
|||
{"exemplar_id": "ca-v1-0013", "shape_category": "currency_amount", "statement": "Devika contributed $45 to the office gift pool.", "expected_graph": {"subject": "Devika", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "45", "amount_kind": "integer", "subject_role": "gift contribution"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2}}
|
||||
{"exemplar_id": "ca-v1-0014", "shape_category": "currency_amount", "statement": "The film grossed $12,000,000 at the box office last summer.", "expected_graph": {"subject": "the film", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "12,000,000", "amount_kind": "integer", "subject_role": "gross revenue"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2}}
|
||||
{"exemplar_id": "ca-v1-0015", "shape_category": "currency_amount", "statement": "Helena saved $800 toward the security deposit.", "expected_graph": {"subject": "Helena", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "800", "amount_kind": "integer", "subject_role": "deposit savings"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2}}
|
||||
{"exemplar_id": "ca-v1-0016", "shape_category": "currency_amount", "statement": "It cost $100,000 to open initially.", "expected_graph": {"subject": "it", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "100000", "amount_kind": "integer", "subject_role": "it"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0151", "author_note": "Large flat amount for initial cost; reader must extract the $100,000 without misparsing as rate."}}
|
||||
{"exemplar_id": "ca-v1-0017", "shape_category": "currency_amount", "statement": "The cost of the keyboard was three times greater than the cost of the mouse.", "expected_graph": {"subject": "the keyboard", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": null, "amount_kind": null, "subject_role": "keyboard"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0156", "author_note": "Comparative amount 'three times greater'; no explicit $, but context implies currency amount comparison."}}
|
||||
{"exemplar_id": "ca-v1-0018", "shape_category": "currency_amount", "statement": "Her mother gave her an additional $4, and her father twice as much as her mother.", "expected_graph": {"subject": "her", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "4", "amount_kind": "integer", "subject_role": "mother"}, {"kind": "currency_amount", "currency_symbol": "$", "amount": "8", "amount_kind": "integer", "subject_role": "father"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0226", "author_note": "Additive + multiplicative gifts; reader resolves 'twice as much' to $8."}}
|
||||
{"exemplar_id": "ca-v1-0019", "shape_category": "currency_amount", "statement": "The catering company charges $200 per event for service.", "expected_graph": {"subject": "the catering company", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "200", "amount_kind": "integer", "subject_role": "service"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0014", "author_note": "Flat fee $200 for event; 'per event' modifier."}}
|
||||
{"exemplar_id": "ca-v1-0020", "shape_category": "currency_amount", "statement": "Vikram earns $85000 a year as a software engineer.", "expected_graph": {"subject": "Vikram", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "85000", "amount_kind": "integer", "subject_role": "Vikram"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "author_note": "Annual salary $85,000; large integer, 'a year' as temporal but amount shape."}}
|
||||
{"exemplar_id": "ca-v1-0016", "shape_category": "currency_amount", "statement": "Jonah lent $250 to his cousin last summer.", "expected_graph": {"subject": "Jonah", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "250", "amount_kind": "integer", "subject_role": "loan"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2}}
|
||||
{"exemplar_id": "ca-v1-0017", "shape_category": "currency_amount", "statement": "The diner's lunch special costs $7.95.", "expected_graph": {"subject": "the lunch special", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "7.95", "amount_kind": "decimal", "subject_role": "lunch special"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Decimal amount."}}
|
||||
{"exemplar_id": "ca-v1-0018", "shape_category": "currency_amount", "statement": "The thrift store priced the jacket at $12 even.", "expected_graph": {"subject": "the jacket", "quantity_anchors": [{"kind": "currency_amount", "currency_symbol": "$", "amount": "12", "amount_kind": "integer", "subject_role": "jacket"}], "graph_intent": "amount", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: 'even' is a colloquial marker of round amount; the schema ignores it."}}
|
||||
|
|
|
|||
|
|
@ -18,3 +18,12 @@
|
|||
{"exemplar_id": "dsnq-v1-0018", "shape_category": "descriptive_setup_no_quantity", "statement": "Marco walks to the corner store after dinner.", "expected_graph": {"subject": "Marco", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 1, "author_note": "Edge case: includes a time-adjacency phrase ('after dinner') but carries no quantity marker; should not trip temporal_aggregation."}}
|
||||
{"exemplar_id": "dsnq-v1-0019", "shape_category": "descriptive_setup_no_quantity", "statement": "Emma volunteers at the animal shelter on Saturdays.", "expected_graph": {"subject": "Emma", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 1, "author_note": "Edge case: a single day-of-week token ('Saturdays') is present but day-of-week enumeration requires >=2 distinct days, so it must not trip temporal_aggregation."}}
|
||||
{"exemplar_id": "dsnq-v1-0020", "shape_category": "descriptive_setup_no_quantity", "statement": "Renee delivers groceries during her lunch break.", "expected_graph": {"subject": "Renee", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 1, "author_note": "Edge case: contains a time-unit-adjacent phrase ('lunch break') but no numeric or word-form count."}}
|
||||
{"exemplar_id": "dsnq-v1-0021", "shape_category": "descriptive_setup_no_quantity", "statement": "He put all of them in his aquarium but his fish ate half of them.", "expected_graph": {"subject": "he", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0012", "author_note": "Proxy refusal for 'ate half of them'; setup with fractional reference but no extractable discrete count for the main statement. Reader must not force quantity from 'half' here."}}
|
||||
{"exemplar_id": "dsnq-v1-0022", "shape_category": "descriptive_setup_no_quantity", "statement": "Cindy collected twice as many, and Rex collected half of Nicole and Cindy's combined total.", "expected_graph": {"subject": "Cindy", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0126", "author_note": "Comparative setup 'twice as many' without base count in the statement; tests reader does not invent quantity anchors for pure setup intent."}}
|
||||
{"exemplar_id": "dsnq-v1-0023", "shape_category": "descriptive_setup_no_quantity", "statement": "The student council sells scented erasers in the morning before school starts to help raise money for school dances.", "expected_graph": {"subject": "the student council", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0003", "author_note": "Long descriptive setup with temporal 'in the morning' and purpose; canonical for no-quantity admission without triggering temporal_aggregation."}}
|
||||
{"exemplar_id": "dsnq-v1-0024", "shape_category": "descriptive_setup_no_quantity", "statement": "Marnie makes bead bracelets.", "expected_graph": {"subject": "Marnie", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0008", "author_note": "Simple activity setup; no quantity, no action that implies count."}}
|
||||
{"exemplar_id": "dsnq-v1-0025", "shape_category": "descriptive_setup_no_quantity", "statement": "John adopts a dog from a shelter.", "expected_graph": {"subject": "John", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0019", "author_note": "Single-item adoption setup; tests that 'a dog' does not trigger discrete count (indefinite article + singular noun in setup context)."}}
|
||||
{"exemplar_id": "dsnq-v1-0026", "shape_category": "descriptive_setup_no_quantity", "statement": "Maria runs a bookshop in town.", "expected_graph": {"subject": "Maria", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "author_note": "Business activity setup; no count of books or customers."}}
|
||||
{"exemplar_id": "dsnq-v1-0027", "shape_category": "descriptive_setup_no_quantity", "statement": "Liam volunteers at the community garden on weekends.", "expected_graph": {"subject": "Liam", "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "author_note": "Recurring activity with day-of-week; single 'weekends' must not trip temporal without >=2 distinct days or count."}}
|
||||
{"exemplar_id": "dsnq-v1-0028", "shape_category": "descriptive_setup_no_quantity", "statement": "The library hosts story time for children.", "expected_graph": {"subject": null, "quantity_anchors": [], "graph_intent": "setup", "outcome": "inadmissible_by_design"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "author_note": "Event setup with beneficiary; no count of stories or children."}}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,3 +18,13 @@
|
|||
{"exemplar_id": "dcs-v1-0018", "shape_category": "discrete_count_statement", "statement": "A hundred swallows perched on the wire above the meadow.", "expected_graph": {"subject": "swallows", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "swallows", "count_token": "hundred", "count_kind": "word", "counted_noun": "swallows"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: word-form count ('a hundred'); the count_kind='word' preserves the surface representation for Phase C."}}
|
||||
{"exemplar_id": "dcs-v1-0019", "shape_category": "discrete_count_statement", "statement": "Olamide bought 1,250 stickers at the wholesale market.", "expected_graph": {"subject": "Olamide", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "Olamide", "count_token": "1,250", "count_kind": "integer", "counted_noun": "stickers"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: comma-grouped large integer. The count_token preserves the surface ',' so Phase C can decide whether to strip or honor the grouping."}}
|
||||
{"exemplar_id": "dcs-v1-0020", "shape_category": "discrete_count_statement", "statement": "A dozen apples sit in the basket on the counter.", "expected_graph": {"subject": "apples", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "apples", "count_token": "dozen", "count_kind": "word", "counted_noun": "apples"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: 'dozen' is an integer-scale word that resolves to 12 in convention; the schema preserves it as count_token to let Phase C decide whether to expand."}}
|
||||
{"exemplar_id": "dcs-v1-0021", "shape_category": "discrete_count_statement", "statement": "She splits it up into 25-foot sections.", "expected_graph": {"subject": "she", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "she", "count_token": "25", "count_kind": "integer", "counted_noun": "foot sections"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0002", "author_note": "Hyphen-bonded unit count ('25-foot sections') from proxy refusal; canonical discrete count with compound counted-noun. Matches EX-6 pattern in extract."}}
|
||||
{"exemplar_id": "dcs-v1-0022", "shape_category": "discrete_count_statement", "statement": "The local bookstore donated 48 boxes of erasers.", "expected_graph": {"subject": "the local bookstore", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "bookstore", "count_token": "48", "count_kind": "integer", "counted_noun": "boxes of erasers"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0003", "author_note": "Discrete count of boxed items; list-unit inheritance candidate but single count here."}}
|
||||
{"exemplar_id": "dcs-v1-0023", "shape_category": "discrete_count_statement", "statement": "Traveling from Manhattan to the Bronx, Andrew rides the subway for 10 hours, takes the train and rides for twice as much time as the subway ride, and then bikes the remaining distance for 8 hours.", "expected_graph": {"subject": "Andrew", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "Andrew", "count_token": "10", "count_kind": "integer", "counted_noun": "hours"}, {"kind": "discrete_count", "subject_role": "Andrew", "count_token": "8", "count_kind": "integer", "counted_noun": "hours"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0015", "author_note": "Multi-leg discrete time counts in narrative; tests that reader surfaces both without over-extracting the 'twice as much' comparative."}}
|
||||
{"exemplar_id": "dcs-v1-0024", "shape_category": "discrete_count_statement", "statement": "On Rudolph's car trip across town, he traveled 2 more than 5 miles and encountered 3 less than 17 stop signs.", "expected_graph": {"subject": "Rudolph", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "Rudolph", "count_token": "7", "count_kind": "integer", "counted_noun": "miles"}, {"kind": "discrete_count", "subject_role": "Rudolph", "count_token": "14", "count_kind": "integer", "counted_noun": "stop signs"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0016", "author_note": "Comparative discrete counts ('2 more than 5', '3 less than 17'); reader must resolve to concrete integers for admissibility."}}
|
||||
{"exemplar_id": "dcs-v1-0025", "shape_category": "discrete_count_statement", "statement": "He bench presses 15 pounds for 10 reps and does 3 sets.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "he", "count_token": "15", "count_kind": "integer", "counted_noun": "pounds"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "10", "count_kind": "integer", "counted_noun": "reps"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "3", "count_kind": "integer", "counted_noun": "sets"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0116", "author_note": "Multiple discrete counts in fitness context; tests enumeration without triggering rate or aggregation misparse."}}
|
||||
{"exemplar_id": "dcs-v1-0026", "shape_category": "discrete_count_statement", "statement": "He draws and colors 10 pictures.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "he", "count_token": "10", "count_kind": "integer", "counted_noun": "pictures"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0171", "author_note": "Simple discrete count of produced items; canonical for injection after recognizer match."}}
|
||||
{"exemplar_id": "dcs-v1-0027", "shape_category": "discrete_count_statement", "statement": "Orlando gained 5 pounds.", "expected_graph": {"subject": "Orlando", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "Orlando", "count_token": "5", "count_kind": "integer", "counted_noun": "pounds"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0206", "author_note": "Change-of-state discrete count; tests that reader does not require explicit 'from X to Y' for admissibility."}}
|
||||
{"exemplar_id": "dcs-v1-0028", "shape_category": "discrete_count_statement", "statement": "He now has 2 horses, 5 dogs, 7 cats, 3 turtles, and 1 goat.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "he", "count_token": "2", "count_kind": "integer", "counted_noun": "horses"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "5", "count_kind": "integer", "counted_noun": "dogs"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "7", "count_kind": "integer", "counted_noun": "cats"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "3", "count_kind": "integer", "counted_noun": "turtles"}, {"kind": "discrete_count", "subject_role": "he", "count_token": "1", "count_kind": "integer", "counted_noun": "goat"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0040", "author_note": "Re-seed of existing multi-item enumeration with explicit subject; ensures synthesis covers list-of-counts pattern."}}
|
||||
{"exemplar_id": "dcs-v1-0029", "shape_category": "discrete_count_statement", "statement": "The guests eat all of 1 pan, and 75% of the 2nd pan.", "expected_graph": {"subject": "the guests", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "guests", "count_token": "1", "count_kind": "integer", "counted_noun": "pan"}, {"kind": "discrete_count", "subject_role": "guests", "count_token": "2", "count_kind": "integer", "counted_noun": "pan"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0216", "author_note": "Ordinal + fractional discrete pans; tests that reader surfaces both without tripping rate or percentage misparse."}}
|
||||
{"exemplar_id": "dcs-v1-0030", "shape_category": "discrete_count_statement", "statement": "Jeremie wants to go to an amusement park with 3 friends at the end of summer.", "expected_graph": {"subject": "Jeremie", "quantity_anchors": [{"kind": "discrete_count", "subject_role": "Jeremie", "count_token": "3", "count_kind": "integer", "counted_noun": "friends"}], "graph_intent": "count", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0166", "author_note": "Simple discrete count in intent statement; canonical for 'wants to X with N Y' pattern."}}
|
||||
|
|
|
|||
|
|
@ -18,3 +18,14 @@
|
|||
{"exemplar_id": "ma-v1-0018", "shape_category": "multiplicative_aggregation", "statement": "Each bag holds 15 candies on the shelf.", "expected_graph": {"subject": "bag", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "1", "outer_unit": "bag", "inner_count": "15", "inner_unit": "candies", "subject_role": "bag"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: minimal 'each' with no outer count; outer_count='1' is the canonical default for the schema."}}
|
||||
{"exemplar_id": "ma-v1-0019", "shape_category": "multiplicative_aggregation", "statement": "The warehouse stores 100 pallets of bricks with 200 bricks per pallet.", "expected_graph": {"subject": "the warehouse", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "100", "outer_unit": "pallets", "inner_count": "200", "inner_unit": "bricks", "subject_role": "warehouse"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: 'per pallet' uses spatial 'per' (not temporal); the categorizer routes correctly because no time-unit follows."}}
|
||||
{"exemplar_id": "ma-v1-0020", "shape_category": "multiplicative_aggregation", "statement": "Two dozen donut boxes each contain six donuts.", "expected_graph": {"subject": "donut boxes", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "two dozen", "outer_unit": "boxes", "inner_count": "six", "inner_unit": "donuts", "subject_role": "boxes"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B round 2 agent)", "round": 1, "category_rank": 2, "author_note": "Edge case: composite word-form outer count ('two dozen') and word-form inner count ('six'). Phase C should derive a recognizer admitting word-form composites in both positions."}}
|
||||
{"exemplar_id": "ma-v1-0021", "shape_category": "multiplicative_aggregation", "statement": "Allison, a YouTuber, uploads 10 one-hour videos of food reviews each day to her channel.", "expected_graph": {"subject": "Allison", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "10", "outer_unit": "videos", "inner_count": "one-hour", "inner_unit": "food reviews", "subject_role": "Allison"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0013", "author_note": "Proxy refusal for '10 one-hour videos each day'; multiplicative daily rate of videos, with 'one-hour' as duration modifier. Tests reader surfaces the base 10 + compound without forcing rate or temporal misparse."}}
|
||||
{"exemplar_id": "ma-v1-0022", "shape_category": "multiplicative_aggregation", "statement": "She studied for 2 hours on Wednesday and three times as long on Thursday.", "expected_graph": {"subject": "she", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "2", "outer_unit": "hours", "inner_count": "three times", "inner_unit": "as long", "subject_role": "she"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0191", "author_note": "Comparative study time 'three times as long'; multiplicative on base 2 hours across days. Reader must resolve 'three times' to concrete without over-extracting the base day."}}
|
||||
{"exemplar_id": "ma-v1-0023", "shape_category": "multiplicative_aggregation", "statement": "The guests eat all of 1 pan, and 75% of the 2nd pan.", "expected_graph": {"subject": "the guests", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "1", "outer_unit": "pan", "inner_count": "75%", "inner_unit": "of the 2nd pan", "subject_role": "guests"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0216", "author_note": "Fractional aggregation of pans eaten; '75% of the 2nd' as multiplicative on base 1 + 2. Tests percentage as multiplier without rate misparse."}}
|
||||
{"exemplar_id": "ma-v1-0024", "shape_category": "multiplicative_aggregation", "statement": "He can run 40 yards within 5 seconds.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "40", "outer_unit": "yards", "inner_count": "5", "inner_unit": "seconds", "subject_role": "he"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0181", "author_note": "Speed rate '40 yards within 5 seconds'; multiplicative yards per temporal window. Reader surfaces base + temporal multiplier for injection."}}
|
||||
{"exemplar_id": "ma-v1-0025", "shape_category": "multiplicative_aggregation", "statement": "Rachel is 12 years old, and her grandfather is 7 times her age.", "expected_graph": {"subject": "her grandfather", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "12", "outer_unit": "years", "inner_count": "7 times", "inner_unit": "her age", "subject_role": "grandfather"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0176", "author_note": "Age comparison '7 times her age'; multiplicative on base 12 years. Classic proxy case for multiplicative without explicit 'old' unit on the derived."}}
|
||||
{"exemplar_id": "ma-v1-0021", "shape_category": "multiplicative_aggregation", "statement": "Allison, a YouTuber, uploads 10 one-hour videos of food reviews each day to her channel.", "expected_graph": {"subject": "Allison", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "10", "outer_unit": "videos", "inner_count": "one-hour", "inner_unit": "food reviews", "subject_role": "Allison"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0013", "author_note": "Proxy refusal for '10 one-hour videos each day'; multiplicative daily rate of videos, with 'one-hour' as duration modifier. Tests reader surfaces the base 10 + compound without forcing rate or temporal misparse."}}
|
||||
{"exemplar_id": "ma-v1-0022", "shape_category": "multiplicative_aggregation", "statement": "She studied for 2 hours on Wednesday and three times as long on Thursday.", "expected_graph": {"subject": "she", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "2", "outer_unit": "hours", "inner_count": "three times", "inner_unit": "as long", "subject_role": "she"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0191", "author_note": "Comparative study time 'three times as long'; multiplicative aggregation across days. Reader must resolve 'three times' to concrete without over-extracting the base day."}}
|
||||
{"exemplar_id": "ma-v1-0023", "shape_category": "multiplicative_aggregation", "statement": "The guests eat all of 1 pan, and 75% of the 2nd pan.", "expected_graph": {"subject": "the guests", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "1", "outer_unit": "pan", "inner_count": "75%", "inner_unit": "of the 2nd pan", "subject_role": "guests"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0216", "author_note": "Fractional aggregation of pans eaten; '75% of the 2nd' as multiplicative on base 1 + 2. Tests percentage as multiplier without rate misparse."}}
|
||||
{"exemplar_id": "ma-v1-0024", "shape_category": "multiplicative_aggregation", "statement": "He can run 40 yards within 5 seconds.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "40", "outer_unit": "yards", "inner_count": "5", "inner_unit": "seconds", "subject_role": "he"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0181", "author_note": "Speed rate '40 yards within 5 seconds'; multiplicative yards per temporal window. Reader surfaces base + temporal multiplier for injection."}}
|
||||
{"exemplar_id": "ma-v1-0025", "shape_category": "multiplicative_aggregation", "statement": "Rachel is 12 years old, and her grandfather is 7 times her age.", "expected_graph": {"subject": "her grandfather", "quantity_anchors": [{"kind": "multiplicative_aggregate", "outer_count": "12", "outer_unit": "years", "inner_count": "7 times", "inner_unit": "her age", "subject_role": "grandfather"}], "graph_intent": "aggregate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0176", "author_note": "Age comparison '7 times her age'; multiplicative on base 12 years. Classic proxy case for multiplicative without explicit 'old' unit on the derived."}}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,3 +18,10 @@
|
|||
{"exemplar_id": "rwc-v1-0018", "shape_category": "rate_with_currency", "statement": "Nina earns £15 an hour as a barista in London.", "expected_graph": {"subject": "Nina", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "£", "amount": "15", "amount_kind": "integer", "per_unit": "hour", "subject_role": "Nina"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 3, "author_note": "Edge case: non-USD currency (pound sterling). Tests that the recognizer generalizes the currency-symbol slot."}}
|
||||
{"exemplar_id": "rwc-v1-0019", "shape_category": "rate_with_currency", "statement": "Klaus pays €800 per month for his Berlin studio.", "expected_graph": {"subject": "Klaus", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "€", "amount": "800", "amount_kind": "integer", "per_unit": "month", "subject_role": "Klaus"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 3, "author_note": "Edge case: non-USD currency (euro)."}}
|
||||
{"exemplar_id": "rwc-v1-0020", "shape_category": "rate_with_currency", "statement": "Akari sells tea ceremony lessons for ¥3000 per session.", "expected_graph": {"subject": "Akari", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "¥", "amount": "3000", "amount_kind": "integer", "per_unit": "session", "subject_role": "Akari"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "Claude (Phase B agent)", "round": 1, "category_rank": 3, "author_note": "Edge case: non-USD currency (yen) and discrete-occurrence per_unit ('session')."}}
|
||||
{"exemplar_id": "rwc-v1-0021", "shape_category": "rate_with_currency", "statement": "Mandy started reading books with only 8 pages when she was 6 years old.", "expected_graph": {"subject": "Mandy", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": null, "amount": null, "amount_kind": null, "per_unit": "page", "subject_role": "books"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0006", "author_note": "Proxy refusal for 'X pages when Y years old'; rate of pages per book as discrete, but reader must surface 'pages' as per_unit without forcing currency. Tests postmodifier 'years old' hygiene in extract."}}
|
||||
{"exemplar_id": "rwc-v1-0022", "shape_category": "rate_with_currency", "statement": "He’s charging $50.00 per day or $500.00 for 14 days.", "expected_graph": {"subject": "he", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "50.00", "amount_kind": "decimal", "per_unit": "day", "subject_role": "he"}, {"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "500.00", "amount_kind": "decimal", "per_unit": "14 days", "subject_role": "he"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0017", "author_note": "Alternative framing '$X per day or $Y for Z days'; reader must handle 'for N units' as per_unit variant without regressing temporal_aggregation."}}
|
||||
{"exemplar_id": "rwc-v1-0023", "shape_category": "rate_with_currency", "statement": "After the first appointment, John paid $100 for pet insurance that covers 80% of the subsequent visits.", "expected_graph": {"subject": "John", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "100", "amount_kind": "integer", "per_unit": "appointment", "subject_role": "John"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0106", "author_note": "Currency rate with percentage coverage; tests that reader surfaces the $100 per appointment without misparsing the 80% as a separate rate."}}
|
||||
{"exemplar_id": "rwc-v1-0024", "shape_category": "rate_with_currency", "statement": "It cost $100,000 to open initially.", "expected_graph": {"subject": "it", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "100000", "amount_kind": "integer", "per_unit": "open", "subject_role": "it"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0151", "author_note": "Large currency amount as initial cost rate; edge for integer without decimal, 'to open' as per_unit."}}
|
||||
{"exemplar_id": "rwc-v1-0025", "shape_category": "rate_with_currency", "statement": "The cost of the keyboard was three times greater than the cost of the mouse.", "expected_graph": {"subject": "the keyboard", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": null, "amount": null, "amount_kind": null, "per_unit": "mouse", "subject_role": "cost"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0156", "author_note": "Comparative rate without explicit currency (three times); tests reader resolves 'times greater' to multiplicative rate for injection."}}
|
||||
{"exemplar_id": "rwc-v1-0026", "shape_category": "rate_with_currency", "statement": "Her mother gave her an additional $4, and her father twice as much as her mother.", "expected_graph": {"subject": "her", "quantity_anchors": [{"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "4", "amount_kind": "integer", "per_unit": "gift", "subject_role": "mother"}, {"kind": "currency_per_unit_rate", "currency_symbol": "$", "amount": "8", "amount_kind": "integer", "per_unit": "gift", "subject_role": "father"}], "graph_intent": "rate", "outcome": "admissible"}, "provenance": {"source": "phase_b_seed", "author": "operator (Workstream A increment 1)", "round": 2, "category_rank": 1, "train_case_id": "gsm8k-train-sample-v1-0226", "author_note": "Additive + multiplicative currency gifts; reader must resolve 'twice as much' to concrete $8 without over-extracting."}}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue