Infospace project/workbench layer to create, develop, evaluate, and inspect concrete infospaces such as books, departments, projects, domains, or research corpora.
Find a file
tegwick 9404831069 fix(lifecycle): _relative_to_root path doubling with relative workspace
fix(evaluation_io): tolerate code-fenced frontmatter and varied score
shapes from small LLMs

Two bugs surfaced running the first live Lefevre chapter-I smoke
against openai/gpt-4o-mini.

1. _relative_to_root doubled artifact paths when --workspace was a
   relative path (e.g. "."). The function received an already-CWD-
   relative path like infospaces/foo/artifacts/sources/x.md and
   re-prepended root, producing infospaces/foo/infospaces/foo/...
   stored in artifacts/index.yaml — which then failed file reads on
   the subsequent workflow stage. Fix: when raw is relative, try
   CWD-relative resolution first (matches root / sub call shapes);
   fall back to root-prefixing only when the CWD interpretation does
   not land under root (matches bare relative-subpath call shapes
   from rendered template outputs).

2. _read_frontmatter_markdown only accepted a literal ---/---
   delimited block at the start of the file. gpt-4o-mini emitted three
   other shapes across the seven evaluation files this chapter
   produced:

     - ```yaml ... ``` fence (no --- delimiters)
     - ```markdown ... ``` outer fence wrapping --- frontmatter
     - scores as mapping ({groundedness: 4, ...}) instead of the
       canonical list of {name, value} dicts
     - scores as list of single-key dicts ([{groundedness: 4}, ...])

   Fix: _extract_frontmatter_block tolerates ```yaml fences and strips
   ```markdown outer fences; _normalise_scores rewrites mapping- and
   single-key-dict shapes into the canonical form so ScoreEntry.from_dict
   keeps working.

Both fixes are pure-Python; no API changes. 179 tests pass, 2 skipped.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 03:26:55 +02:00
.claude/rules Refresh agent instruction files 2026-05-18 16:55:43 +02:00
docs IB-WP-0020-T04: example routing config + live routing smoke 2026-05-18 22:19:54 +02:00
examples/routing IB-WP-0020-T04: example routing config + live routing smoke 2026-05-18 22:19:54 +02:00
infospaces started a new infospace on it-sec knowledge 2026-05-19 02:04:09 +02:00
src/infospace_bench fix(lifecycle): _relative_to_root path doubling with relative workspace 2026-05-19 03:26:55 +02:00
tests IB-WP-0020-T05: shadow-mode CLI flags; close IB-WP-0020 2026-05-18 23:30:36 +02:00
wiki Intent and specification files 2026-05-03 19:25:29 +02:00
workplans IB-WP-0020-T05: shadow-mode CLI flags; close IB-WP-0020 2026-05-18 23:30:36 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-05-17 19:45:00 +02:00
.gitignore IB-WP-0014: first real archive — agentic memory profile pilot 2026-05-17 12:10:18 +02:00
AGENTS.md Refresh agent instruction files 2026-05-18 16:55:43 +02:00
CLAUDE.md Refresh agent instruction files 2026-05-18 16:55:43 +02:00
INTENT.md Intent and specification files 2026-05-03 19:25:29 +02:00
LICENSE Initial commit 2026-05-03 16:52:54 +00:00
Makefile IB-WP-0014: archive integration with artifact-store (T01+T02) 2026-05-17 11:30:49 +02:00
pyproject.toml IB-WP-0018-T01+T02+T05: routing bridge to llm-connect 2026-05-18 11:33:58 +02:00
README.md Agentic memory profile 2026-05-15 16:01:35 +02:00
SCOPE.md IB-WP-0014: archive-list, restore, retention annotation, docs (T03-T05) 2026-05-17 11:46:23 +02:00

infospace-bench

Workspace and service for creating, developing, evaluating, and inspecting structured knowledge spaces.

This repo is the application-layer successor for the infospace work that began inside markitect-main. It focuses on concrete infospaces and their lifecycle, while lower-level markdown tooling and runtime orchestration remain in sibling projects.

Start with:

  • INTENT.md
  • wiki/ProductRequirementsDocument.md
  • wiki/FunctionalRequirementsSpecification.md
  • SCOPE.md
  • docs/infospace-layout.md
  • docs/evaluation-and-inspection.md
  • docs/reference-pilot-decision.md
  • docs/markitect-main-scope-assessment.md
  • docs/markitect-tool-adapter.md
  • docs/entity-relation-model.md
  • docs/evaluation-history-and-metrics.md
  • docs/workflow-generation-pipeline.md
  • docs/kontextual-engine-boundary.md
  • docs/orthogonal-successor-roadmap.md
  • docs/legacy-infospace-feature-inventory.md
  • docs/successor-boundary-interface-map.md
  • docs/replacement-acceptance-matrix.md
  • docs/legacy-command-parity.md
  • docs/legacy-infospace-migration-guide.md
  • docs/replacement-readiness-decision.md
  • docs/wealth-vsm-generation-pipeline.md
  • docs/generic-source-generator.md
  • docs/agentic-memory-profile-pilot.md
  • docs/lefevre-epub3-validation.md
  • infospaces/bootstrap-pilot/
  • infospaces/wealth-vsm-legacy-slice/
  • infospaces/wealth-vsm-generation-pilot/
  • infospaces/agentic-memory-profile-pilot/
  • workplans/

Current development command:

python3 -m pytest