Skip to content

Give freeform an upper witness without restoring a length cap - #843

Merged
atomchung merged 11 commits into
mainfrom
agent/836-freeform-upper-witness
Aug 29, 2026
Merged

Give freeform an upper witness without restoring a length cap#843
atomchung merged 11 commits into
mainfrom
agent/836-freeform-upper-witness

Conversation

@atomchung

Copy link
Copy Markdown
Owner

User outcome

A simple lookup stays short. A research-heavy decision can carry several sourced increments when each one changes the call, instead of being implicitly compressed toward a corpus in which every positive exemplar was under 400 characters.

Current behavior / evidence

Change

  • retain the existing compact freeform positives as lower witnesses;
  • add one synthetic freeform_research_depth positive with eight distinct increments, explicit source/as-of provenance, an engine-owned portfolio consequence, a contextual research judgment, and observable falsifiers;
  • make that scene the one exemplar visible in references/freeform-answers.md;
  • state beside it that this is an upper witness, not a minimum/default answer size or permission to narrate irrelevant research.

Scope / non-goals

This is deliberately one surface. It changes no engine, schema, persisted state, transaction lifecycle, execution truth, privacy boundary, or other conversational route. consider, no_book, and weekly_read remain unchanged until owner-live evidence shows they need the same treatment.

Acceptance

  • existing compact freeform scenes remain in the corpus;
  • freeform stays inside the corpus's 3–5 positive-exemplar range;
  • the new scene passes E-5 through E-8;
  • the reference/corpus drift gate proves the generation-path copy is canonical;
  • product and QA/eval CI pass;
  • follow-up owner-live evidence compares one simple lookup and one research-heavy decision before this pattern expands to another surface.

Privacy / rollout / recovery

All issuers, ratings sources, prices, dates, holdings, and deal facts are synthetic. The change is reversible by restoring the previous freeform fence and removing one fixture scene; no migration or recovery path is involved.

Refs #836. This PR does not close it: the issue remains open until owner-live evidence decides whether any other surface needs an upper witness.

@atomchung atomchung left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BLOCK — the upper witness repeats the same provenance on two floors.

The three researched claims already satisfy C2 by naming source + date inline (WDGT 8-K, investor presentation, Northstar Ratings). The final caliber line then lists the same three sources and dates again. That teaches the generation path to pay twice for the same provenance, directly against D6 and D7's “nothing appears on two floors” rule—the exact semantic class the deterministic E-5…E-8 checks intentionally cannot catch.

Smallest repair: keep the inline source/date beside each public fact, and reduce the end block to the book/pricing frame plus material gaps, e.g. (帳本 8/14、價格 8/14 收盤;未評反壟斷通過機率與交易後估值). Apply the same edit to the corpus copy and the fenced generation-path copy, then rerun both CI groups.

Everything else in the two-file slice is appropriately bounded: compact lower witnesses remain, the richer scene is explicitly an upper—not default—witness, the freeform/plain-conversation scope is consistent with the existing route contract, and no engine/state/privacy/execution boundary changes. GitHub cannot accept an approval from the repository owner, so this is recorded as a blocking COMMENT review.

Copy link
Copy Markdown
Owner Author

Blocker repaired and re-reviewed

Commit ff8f11c applies the smallest D6/D7 repair:

Final semantic review found no remaining blocker. The PR still changes exactly two synchronized surfaces: the freeform generation-path exemplar and its canonical corpus copy. It changes no engine, schema, persistence, execution state, privacy boundary, or other route.

Verification on the exact final tree:

  • focused expression / voice / language / installed-tree / research-prior checks: green;
  • local python3 tests/run_all.py --group product: 49/49 suites pass;
  • local python3 tests/run_all.py --group qa-eval: 11/11 suites pass;
  • GitHub Actions run 33053001530: product-contract and qa-eval-tooling both pass on Python 3.11 and 3.12; network-smoke is skipped by PR policy.

Mechanical and semantic acceptance for this PR are complete. Behavioral acceptance is deliberately still open: #836 requires the frozen simple-lookup versus research-heavy owner-live comparison before this pattern expands to another surface. Merge remains an owner decision.

@atomchung
atomchung merged commit 5e0c7b6 into main Aug 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant