Repository navigation
Description
Status: Proposed. This is a tracking suggestion under #362. It is not an accepted implementation plan, and it does not authorize moves, deletions, or new packages.
Naming note (2026-11-09, Asia/Shanghai): architecture core formerly called Workbench is now Harness (abbrev. H; trio K/H/B). Suggested package path uses src/inferrsi/harness/. The same path already hosts a mixed implementation tree on main; this tracker does not treat that existing tree as the accepted Harness boundary, and it does not authorize moves. Status remains Proposed.
Layout principles (direction recorded 2026-11-09 Asia/Shanghai; not yet implemented)
These are maintainer-direction notes for this tracker. They do not accept the 3+1 PR split, do not authorize file moves, and do not create packages.
- Keep
src/as the distribution root. Repo-roottests/andtools/stay at the root. - Target sibling packages under
src/inferrsi/:knowledge/,harness/(formerly Workbench),benchmark/, andapps/. The Apps path and package name remain Proposed in #371; do not pre-create an emptyapps/tree for symmetry. - Do not create empty packages just to make the tree look symmetric. Packages appear when the owning slice is authorized to move code.
- Flat
src/inferrsi/data/is not the long-term home. Knowledge corpus materials are destined for the Knowledge package when that slice moves them. Fine-grained Knowledge taxonomy belongs in a future Knowledge architecture sub-issue (not opened here). Non-corpus artifacts that today sit near data (for example pack runtime descriptions, dashboard view assets) must be attributed by each owning slice; no moves in this tracker. - Existing on-disk
src/inferrsi/harness/remains a mixed implementation tree and is not automatically the accepted Harness boundary.
Parent: #362. Accepted architecture direction: A–D decision (S1 contract without moving directories, then S2/S3/S4 in parallel, S5 assembly last). Apps design remains the open proposal in #371. Its recorded design assignee is zengchuang-hw. This issue does not change that assignee and does not name any new owner.
Code baseline: main 68dbd5e811a043f113e17e90b3bbe79622cbf7a5 (2026-11-09, docs: add an English Codex plugin installation guide (#330)).
Goal
Track the architecture/integration work only: freeze the public contract and import gate, prove one fake closed loop, then swap in the first real port from each core. Record where repository trees and docs/ should live so later slices do not invent a second layout.
Module behavior stays in the module slices. This issue closes when the integration PRs below are either merged with the acceptance checks, or a maintainer decision cancels a PR and links the follow-up tracker. It does not close when every Knowledge, Harness, Benchmark, or Apps feature is done, and closing does not mean performance targets passed.
In scope
- The integration PR sequence recommended below (3 + 1).
- A target directory rule for source, tests, docs, examples, knowledge corpus, and experiment results.
- A short classification of existing docs and root notes: keep, candidate move, or candidate archive. No path is approved for deletion here.
Out of scope
- Implementing S2, S3, S4 production features, or the task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371 Apps package.
- Creating
inferrsi.appsor any other package name before task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371 is accepted. - A shared business
contractspackage. The existingsrc/inferrsi/contracts.pyis only aRunSpeccompatibility re-export. It must not grow into a fourth core. - Knowledge, Harness, and Benchmark importing one another.
- Moving or deleting campaign evidence, review notes, or skill-library corpus in the first integration PR.
- Adding merge gates onto open PRs such as feat: support shared YAML task input #367 or feat: share RSI optimization management across project and benchmark tasks #338.
Suggested integration PRs
These names are a suggestion, mapped to the accepted S1–S5 order. They are not a new approved plan. The 3+1 cut itself remains pending maintainer confirmation; recording layout principles here does not accept that cut.
| Suggested PR | Maps to | Purpose | Directory effect |
|---|---|---|---|
| PR1 | S1 | Contract, encoding fixtures, direct-import gate, compatibility list for old CLI exit codes 0/1/2, and this directory rule as text | No moves. No new package tree |
| PR2 | Between S1 and S5 | Test-double loop: prepare, archive, bind, execute, offline assess | Tests and fakes only. Do not occupy a production Apps path |
| PR3 | Integration tail, not full S5 | Replace fakes with the first real read, one CPU record, and one offline assessment | Touch only the seams those three methods need |
| PR4 | Not an S-slice | Docs and fixture-path cleanup after a reference pass | Separate review. Do not mix with PR1–PR3 |
S2, S3, and S4 proceed in parallel after PR1, by the people filling those modules. This tracking item does not own their full production delivery. #371 design review can proceed in parallel and does not wait for PR2. Production Apps assembly (S5) waits until #371 is accepted and PR3 has shown the three refs connect; S5 production features are likewise not fully owned here. PR4 can start after PR1 documents the rules; it should not start by relocating files that #367 or tests still import. Immediate moves or deletions are not authorized by opening this issue.
Directory responsibilities
Current tree (fact on this SHA)
src/inferrsi/ # runtime: cli, arguments, harness, infra, model,
# knowledge_operations, knowledge_store, catalog, data/
src/inferrsi/data/ # current flat corpus / skill library on main; not the long-term layout (see Layout principles)
src/inferrsi/contracts.py
tests/ # scaffold and operator tests
docs/ # operator guides, campaign writeups, reviews, plans,
# a few JSON fixtures, engine-repo template
examples/ # three Qwen image scripts
evidence/ # campaign result trees and evidence/README.md
plugins/ # Codex, WorkSwarm, DSH
tools/ # repo ops and skill-eval helpers, outside the wheel
There is no top-level benchmarks/ tree. Task packages from draft #338 are not on main. There is no inferrsi.apps, inferrsi.knowledge, or inferrsi.benchmark package as architectural cores. src/inferrsi/harness/ already exists on main as a mixed implementation tree; that is not yet confirmation that the target Harness core (formerly Workbench) has been carved out.
Target rule (suggestion, pending confirmation)
Do not create empty directories in PR1. When a slice is authorized to move code, use this rule:
src/inferrsi/ # one distribution
src/inferrsi/knowledge/ # suggested K package path; pending interface /
# slice confirmation; migrate only with the
# Knowledge slice that owns the move
src/inferrsi/harness/ # suggested H package path (formerly workbench/);
# pending interface / slice confirmation;
# migrate only with the Harness slice that owns
# the move. Distinct from the existing mixed
# implementation tree already at this path on
# main: that tree is not yet the accepted
# Harness module boundary
src/inferrsi/benchmark/ # suggested B package path; pending interface /
# slice confirmation; migrate only with the
# Benchmark slice that owns the move
src/inferrsi/apps/ # sibling target with K/H/B; path/name still
# Proposed in #371 — do not pre-create empty
# apps/ for symmetry
src/inferrsi/data/ # transitional on main only; corpus moves with
# Knowledge slice; not a permanent flat store
tests/ # stays at repo root; tests and owned fixtures
docs/ # keep existing flat operator guides and
# docs/architecture.md in place; do not create
# empty docs/architecture/, docs/migration/,
# or per-module handbook directories in PR1
docs/template/ # copy-out engine repo template; not InferRSI runtime
examples/ # runnable caller scripts only
evidence/ # frozen campaign inputs and results; not a scratch archive
plugins/ # host manifests and launchers
tools/ # stays at repo root; maintainer/CI helpers, not product import
K, H, and B each own their types. The three core subdirectories above are suggested destinations only; they are created and filled when the owning slice is authorized, not as empty shells in PR1. Apps, once #371 names the package, is the only assembler. No new shared business contracts package.
What docs/ should hold
Keep operator and maintainer prose here:
- Entry and operation:
READMEcompanions such asdocs/quickstart.md,docs/operations.md, plugin guides (docs/codex-plugin.md,docs/workswarm-plugin.md,docs/dsh-plugin.md). - Architecture and contribution: keep the existing flat
docs/architecture.md, plusdocs/contributing.md,docs/agent-collaboration.md,docs/privacy-security.md. - Current module operation notes that describe commands which exist today (
docs/knowledge-operations.md,docs/knowledge-store.md, and the skill-eval operator notes). After S2–S5, those notes move only with the slice that changes the command. docs/template/: the engine delivery template. It is supposed to contain its ownbenchmarks/andevidence/examples. That does not mean InferRSI itself grows those trees.
Do not treat docs as the store for:
- Skill and knowledge corpus (
src/inferrsi/data/). - Campaign result trees (
evidence/). - Test inputs that CI already executes (see candidates below).
- Generated coverage or wheel contents.
Do not add a new empty docs/architecture/, docs/migration/, or per-module handbook tree in PR1. PR1 may add one short layout section to the existing docs/architecture.md or to this issue. New module docs are written by the slice that creates the behavior.
Classification of existing files
“Candidate” means the in-tree reference check below is incomplete (issues and external blobs can still link the path). None of these rows is a safe deletion.
| Item | Suggestion | Why | Reference risk found on this SHA |
|---|---|---|---|
docs/quickstart.md, docs/operations.md, docs/architecture.md, docs/contributing.md, docs/agent-collaboration.md, docs/privacy-security.md, plugin guides, docs/template/ |
Keep | Entry, operations, and the engine template | Linked from the repo entry docs |
evidence/** and campaign notes linked from README.md (docs/qwen-image-2.1-turbo-b300.md, docs/qwen-image-2.1-turbo-ascend.md, docs/drama3-ascend-910b1.md) |
Keep | Historical measurements and ledgers | README and evidence/drama3-ascend-20261023/README.md point at them |
docs/examples/skill-comparison/ and docs/examples/skill-eval-pr/ |
Candidate move to tests/fixtures/ in PR4 |
They are fixtures, not operator prose | tests/test_skill_eval_feedback.py, docs/skill-eval-comparison.md, and .github/workflows/skill-eval-pr.yml use these paths. A move must update those links in the same PR |
docs/reviews/** |
Keep in place | Intake and audit records, including machine-readable history | tests/test_vllm_ascend_rc_skill.py reads docs/reviews/vllm-ascend-0271rc1/history-inventory.json; docs/skill-coverage.md and README cite other review files |
docs/plans/*.md, root PHASE1_REPORT.md, root SUBMISSION_NOTES.md |
Candidate archive review in PR4, not deletion | Old plans and a submission note. docs/plans/ had no in-tree path hits outside itself. PHASE1_REPORT.md is named by docs/reviews/source-audit-ac70272.md. SUBMISSION_NOTES.md had no in-tree path hits and points at a skill-library package |
External issues may still link the root files. PR4 must search issues before any move. Archive is not a dump for campaign evidence |
Open review notes (not accepted by this edit)
Amy's review raised five points that still need maintainer answers before PR1 checkboxes can be honest: (1) tentative ownership for flat top-level modules under src/inferrsi/, (2) a non-vacuous import-gate definition while the tree is still flat (now K/H/B, formerly K/W/B), (3) exact PR4 fixture subpaths under existing tests/fixtures/, (4) keep/owner one-liners for .agents/, AGENTS.md, CHANGELOG.md, MANIFEST.in, (5) freeze the old CLI 0/1/2 command list in PR1 for PR3 compatibility. This issue edit does not decide those points.
Acceptance and close
All boxes stay unchecked until the named evidence exists. Closing this issue does not mean S2–S5 production features or performance targets are finished.
- Maintainers confirm or revise the suggested 3+1 PR split and the directory rule (including sibling
knowledge//harness//benchmark//apps/targets, withapps/still Proposed in task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371; layout principles above are direction only). - PR1: the public contract, direct-import gate (no K/H/B edge; no new shared business contracts package), and directory rule text are merged, or a maintainer comment explicitly adjusts that scope and links the follow-up tracker.
- PR2: test-double success, failure, and recovery path tests for the prepare → archive → bind → execute → offline assess loop are merged, or a maintainer comment explicitly cancels PR2 and links the follow-up tracker.
- PR3: the first real Knowledge read, one Harness CPU/offline record, and one Benchmark offline assessment pass a minimal CPU/offline integration, and old CLI exit codes / behavior remain compatible, or a maintainer comment explicitly cancels PR3 and links the follow-up tracker.
- PR4: every moved file is listed item-by-item with updated in-repo references, and link / fixture / workflow checks pass; no deletion of
evidence/,docs/reviews/, or skill-library content, or a maintainer comment explicitly cancels PR4 and links the follow-up tracker. - task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371 remains the place that names the Apps package and keeps design assignee zengchuang-hw. This issue does not rename Apps or change that assignee.
Do not close this issue on the weaker rule “PR opened and roughly in scope.” A cancelled PR needs the maintainer decision comment and the follow-up issue link before the related checkbox can be satisfied.
Dependencies
- discussion: Knowledge / Harness / Benchmark 三模块目标架构——现状、原语、交接时序与遗留问题 #362 A–D is already accepted. Further contract edits still follow that comment’s revision clause. Recovery semantics and the five knowledge-status dimensions were accepted with explicit caveats.
- task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371 must accept the Apps path before any integration PR creates that package. Amy’s review on task: Apps 应用层详细设计与迁移计划(CLI / Python / Plugin) #371 (import side effects, bridge split, archive versus RunStore, unset new exit-code numbers) is still open.
- feat: support shared YAML task input #367 currently edits
cli.py,arguments.py,runner.py, andpyproject.toml. PR1 should not edit those files. - Draft feat: share RSI optimization management across project and benchmark tasks #338 is the engineering-benchmark line. It is not main, and it is not a reason to add a top-level
benchmarks/tree in PR1. - Open campaign and knowledge PRs are out of scope here.
Non-claims
Layout principles above are direction notes only; they are not an implemented tree and not an accepted 3+1 plan. No source move has been done. No file listed above is certified unused. The 3+1 PR split and the suggested knowledge/ / harness/ / benchmark/ paths are recommendations pending maintainer confirmation, not already-accepted layout decisions. New exit-code numbers, Collection versus search_knowledge, and the Apps directory name are still unset.
Activity
amy-why-3459 commentedon Nov 9, 2026
Thanks for writing this up. Keeping the tracker to integration PRs plus a layout rule, and saying plainly that nothing here authorizes moves or deletions, makes it easy to review. I checked the factual parts against main
68dbd5e811a043f113e17e90b3bbe79622cbf7a5. Most of them match: there is no top-levelbenchmarks/,src/inferrsi/contracts.pyis only theRunSpecre-export fromrunspec.py, and the fixture, review, and workflow paths cited in the classification table exist. A few points before maintainers confirm the split:src/inferrsi/also has these top-level modules:evaluation.py,execution.py,reporting.py,research.py,claim.py,inspection.py,skill_catalog.py,_skill_selection.py,evidence_paths.py,runspec.pyandsummary_chart.py. Several of them probably belong to K, W, or B, or are shared seams. Could the tracker add a rough "which core owns this module" column, even marked as tentative? Without one, PR1's direct-import gate has no concrete module list to enforce, and later slices may disagree about who moves what.src/inferrsi/, what exactly counts as a "K/W/B edge"? Is it a module allowlist per core, or a check that only starts working onceknowledge/,workbench/andbenchmark/exist? If it's the second, PR1 can't enforce much yet. It would help to say so explicitly, so the first checkbox isn't satisfied by a gate that is vacuous for now.tests/fixtures/already exists and is populated (for exampleskill_eval_pr_support.py,skill_eval_compare_support.py,skill_eval_engineering/). The PR4 candidate move ofdocs/examples/skill-comparison/anddocs/examples/skill-eval-pr/should name the target subpaths so they don't collide with or duplicate those existing helpers..agents/(it holds the repo'sreview-prskill),AGENTS.md,CHANGELOG.md, andMANIFEST.in. A one-line keep or owner note for each would make the rule complete, andMANIFEST.inmatters if anything underdocs/orsrc/inferrsi/data/moves.I agree with keeping #371 as the only place that names the Apps package, and with not creating empty directories in PR1.
[-]task: track integration PR sequence and repository directory layout[/-][+]refactor: track architecture migration, integration PRs, and repository layout[/+]