Skip to content

Activity evidence candidate: development record

This isolated experiment follows the representation diagnosis. It does not change the baseline embedding builder, production worker, ranking, schema, flags or HTTP routes. The previously tested rollout remains PR 183, whose final-head discovery and OSS CI both passed on September 20. The experimental ranking candidate has not demonstrated reader uplift and is not approved for production promotion.

Candidate contract

activity-sources.ts collects complete named public prose fields directly from a caller-supplied eligible published world. It bypasses the earlier lossy 32-KiB input and subsequent per-section compression. Each original field has its own ID, exact text hash and conservative scope. Alternative greetings stay separate. Oversized sources abstain rather than become clipped prefixes. Source scanning, count and byte ceilings are explicit engineering bounds, not evidence that these are optimal budgets.

activity-artifact.ts accepts independent review records referring to an exact source hash and UTF-16 span. It checks provenance, complete sentence boundaries, conflicting reviews, overlap and duplicates. It preserves the exact existing baseline input. It emits at most three separate evidence inputs, each at most 256 cl100k_base tokens, within an 8-KiB serialized aspect artifact. The baseline is separate from that ceiling. Embedding text is the literal passage, with no added taxonomy labels or translated paraphrase. Source roles and instructions remain untrusted data.

The tokenizer is the existing locked js-tiktoken package. The selected encoding matches OpenAI's mapping for text-embedding-3-small in its tiktoken model registry. Accepted text is never silently shortened to meet a limit. Runtime ICU version accompanies sentence segmentation, since segmentation may change across runtime versions. Hashes and offsets establish provenance; they do not establish semantic entailment. A review must separately judge reader action, consequences and required context. Mechanical tests with supplied review verdicts are not semantic-classifier accuracy tests.

activity-scoring.ts defines one offline diagnostic hypothesis: baseline cosine similarity plus a change toward the strongest supported aspect, capped at ±0.05. Missing, failed, ambiguous or unusable aspect evidence contributes exactly zero adjustment. Duplicate aspects never accumulate a bonus. Other stories' earned adjustments can still change the ordinal position of a story missing evidence. The bound is neither calibrated nor claimed optimal; taking the maximum can itself have a multiple-aspect selection effect that a fresh evaluation must measure.

Development data and evaluation boundary

A read-only database transaction refreshed only the same twelve existing development worlds (three each in EN/ZH/JA/ES). The 2,176,836-byte snapshot SHA-256 is 5f535464d471f7ced86a4ea650b82ef0fe48e5b55306969955587a3f262eb94d. It contains eligible public story content, not private conversations or reader data. Existing frozen and consumed evaluation cohorts were not opened or altered. Raw snapshots remain ignored local artifacts, outside Git.

The development probe deliberately selects three already-inspected late passages: Ninevolt's practice-sub/trust/seat consequence, the Chinese fairy-world block-door rule, and Longyuan's public victory/reputation rule. It checks literal preservation and baseline parity, not retrieval relevance. Those hand-selected passages cannot establish catalog-wide coverage. No embedding or language-model request is made by this development probe.

The refreshed original story-content-v2 hashes match all twelve earlier development inputs. The new collector retains 739 full sources totaling 806,889 UTF-8 bytes across these worlds. Eleven worlds have no recorded omission; the largest fairy world reaches 128 sources and omits 519 further fields. The selected doorway remains available, but this is not complete coverage of that world. Its missing later mechanics must be addressed or explicitly handled in the selection protocol before a quality evaluation; passing the chosen example is insufficient.

All twelve baseline inputs match exactly. The three selected complete passages fit at 197, 89 and 59 tokens respectively; their final artifacts are 1,943, 1,201 and 1,200 bytes. Final probe v3 SHA-256 is ffd82c6073f08673ceb4cf12b4238d4ab3d25d94efdba0ce58c4e1c7e4407818, including source-code hashes. Earlier probes remain preserved: v1 exposed an ASCII word-boundary bug that misread an accented Spanish word ending as an abbreviation. A failing synthetic regression reproduced it; Unicode-aware boundaries corrected it without changing source text or increasing budgets.

A development-only source-count comparison held the 512-KiB byte and scan limits fixed. Caps of 128, 256, 512 and 1,024 left respectively 519, 391, 217 and 217 omitted fields in the largest world. At the last two caps, its retained prose reached 524,286 bytes across 430 sources. Increasing the count alone therefore cannot solve its coverage problem. The shipped development collector keeps the original bounds; bounded pagination/selection is the next required design step, rather than an unmeasured budget increase. These are coverage observations on one development world, not ranking results or production performance measurements.

Verification

  • 280 combined isolated tests passed: new source/artifact/scoring contracts plus existing story extraction, model transport, serving and baseline embedding regressions. This includes 64 new tests.
  • Independent review reproduced two additional defects before correction: accepting a condition cut at a newline or a name cut after Dr., and collapsing identical evidence from different openings. Regression tests now reject those fragments and preserve each opening's source/reviewer provenance. Structural segmentation remains conservative and does not prove semantic completeness.
  • Integrated review also found an engine-compatibility issue: empty behaviorRules must fall back to legacy updateHints. The collector now matches that behavior and preserves the original fallback field's provenance; the updated regression first failed and then passed. Final development results remain unchanged after that fix.
  • Full workspace typecheck (eight tasks) and build (five tasks) passed with credentials stripped. Generated OSS export and its discovery boundary check passed. The new files are removed from the local/OSS edition alongside the existing hosted personalization directory.
  • Import inspection finds only the new artifact importing its source collector and tests importing the candidate modules. There is no production ranking, worker, route or database caller.

Remaining gates

The candidate still needs a bounded selector and independent semantic review workflow, a fresh preregistered untouched comparison with common eligibility and uncertainty handling, and eventually a reader experiment. This change makes those experiments possible; it does not replace them. Keep the prior failed quality result visible and keep experimental serving off.

The existing rollout also still requires the two ClickPipe mappings, verified canonical CDC and erasure propagation, and production-specific capacity and rollback checks. Passing synthetic tests or a testing-environment deployment cannot stand in for those gates. No new subscription is needed for this development work.