Skip to content

Ensemble timeline input contract; bump DGX default to 80B#103

Open
kostadis wants to merge 3 commits into
mainfrom
docs/ensemble-timeline-input-contract
Open

Ensemble timeline input contract; bump DGX default to 80B#103
kostadis wants to merge 3 commits into
mainfrom
docs/ensemble-timeline-input-contract

Conversation

@kostadis

Copy link
Copy Markdown
Owner

Two changes on this branch:

  • docs(ensemble) — document the timeline input contract: narrative chapters vs structured session docs (what the ensemble timeline builder expects as input).
  • feat(api) — bump DGX_DEFAULT_MODEL to Qwen/Qwen3-Next-80B-A3B-Instruct-FP8. The Spark chat slot now serves the 80B on both boxes (was the cross-box Qwen3.5-122B); the old Qwen2.5-14B-AWQ default would 400 against the live endpoint. Part of the 2026-06-20 single-box swap (see dgx-fun#22).

🤖 Generated with Claude Code

kostadis and others added 3 commits June 19, 2026 23:29
…tured session docs

The recent_events/timeline render orders facts by source-text position, which
equals chronology only for linear narrative chapters. Structured session docs
(gm-assist: Summary -> Scenes -> entity-indexed appendices) break that — appendix
sections restate earlier events near the end of the file, so byte-position no
longer tracks time and synthesis sets the wrong "current location."

- 2d: new "Input contract" callout with the Hillsfar/DDEX34 Ch16 worked example
  (Sporedome-in-Items sorted after the final Hillsfar dinner scene), plus the fix:
  scope timeline extraction to ## Summary / ## Scenes, treat appendices as
  dossier-fuel; ~96% of facts locatable via source_quote -> offset -> section.
- Stage 4: flag current-location/current-objective as the least-reliable fields;
  verify against the last scene of the final chapter.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Spark chat slot now serves Qwen3-Next-80B-A3B-Instruct-FP8 on both
boxes (was the cross-box Qwen3.5-122B); the old Qwen2.5-14B-AWQ default
would 400 against the live endpoint. Part of the 2026-06-20 single-box
swap that flipped every DGX client to the 80B id.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Internal/external config split: external config (endpoints, service URLs, DGX
model, shared data roots) is owned by mneme and rendered into config/wiring.yaml;
CG's internal config (prompts, agents, documents, log_dir) stays in config.yaml.

- campaignlib/wiring.py: load_wiring / wiring_get / wiring_path — the single
  accessor for mneme-rendered external config (config/wiring.yaml, gitignored).
- Externalized (literals deleted, read from wiring):
  - DGX endpoint + DGX model: extract_facts, campaignlib/api/backends
  - 5etools data root: fivetools_catalog, fivetools_ingest, resolve_refs
  - rpg-lib URL: mcp_server, rpg_retriever
  - 5etools MCP index, rpg_library.db path, pdf-translators, homebrew-private:
    fivetools_ingest, resolve_refs, launch_5etools_mcp
  - web-server DGX fallback: server/routers/scene_editor
- config.yaml: external keys migrated out (internal config only now).
- query_rpg_lib: drop the rpg-lib sys.path import hack (imports the installed
  library_api directly), remove --rpglib-dir, --db defaults to wiring rpg_library_db.

The Claude DEFAULT_MODEL (constants.py) stays CG's — internal. SC-002 grep-clean
across CG logic (only docstring examples remain, by decision). CG suite 913/914
(the 1 failure is an unrelated live-mempalace test, no seeded palace).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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