Skip to content

refactor: track architecture migration, integration PRs, and repository layout #372

Closed

Description

@Dong1017

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-root tests/ and tools/ stay at the root.
  • Target sibling packages under src/inferrsi/: knowledge/, harness/ (formerly Workbench), benchmark/, and apps/. The Apps path and package name remain Proposed in #371; do not pre-create an empty apps/ 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

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: README companions such as docs/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, plus docs/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 own benchmarks/ and evidence/ 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, with apps/ 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

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

  1. amy-why-3459 commented on Nov 9, 2026

    @amy-why-3459
    Collaborator

    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-level benchmarks/, src/inferrsi/contracts.py is only the RunSpec re-export from runspec.py, and the fixture, review, and workflow paths cited in the classification table exist. A few points before maintainers confirm the split:

    1. The "Current tree" block leaves out many runtime modules. Besides the ones listed, 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.py and summary_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.
    2. The import gate needs a precise definition. Once code is still flat under 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 once knowledge/, workbench/ and benchmark/ 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.
    3. tests/fixtures/ already exists and is populated (for example skill_eval_pr_support.py, skill_eval_compare_support.py, skill_eval_engineering/). The PR4 candidate move of docs/examples/skill-comparison/ and docs/examples/skill-eval-pr/ should name the target subpaths so they don't collide with or duplicate those existing helpers.
    4. The layout rule doesn't cover a few root items: .agents/ (it holds the repo's review-pr skill), AGENTS.md, CHANGELOG.md, and MANIFEST.in. A one-line keep or owner note for each would make the rule complete, and MANIFEST.in matters if anything under docs/ or src/inferrsi/data/ moves.
    5. PR3's "old CLI exit codes / behavior remain compatible" check needs a reference point. It would help to pin it to a concrete list (the commands plus the expected exit codes 0/1/2) frozen in PR1, so PR3 is judged against a fixed baseline rather than whatever main looks like at the time.

    I agree with keeping #371 as the only place that names the Apps package, and with not creating empty directories in PR1.

  2. changed the title [-]task: track integration PR sequence and repository directory layout[/-] [+]refactor: track architecture migration, integration PRs, and repository layout[/+] on Nov 9, 2026
  3. added
    area:processRepo-wide process, governance, privacy and security rules
    kind:trackingTracking umbrella that follows child work
    status:proposedWaiting for the decision named in the status block
    on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:processRepo-wide process, governance, privacy and security ruleskind:trackingTracking umbrella that follows child workstatus:proposedWaiting for the decision named in the status block

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions