Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
* @LinxISA/maintainers

/.github/ @LinxISA/maintainers
/docs/ @LinxISA/maintainers
/tools/ @LinxISA/maintainers

/crates/camodel/ @LinxISA/maintainers
/crates/funcmodel/ @LinxISA/maintainers
/crates/cosim/ @LinxISA/maintainers
/crates/trace/ @LinxISA/maintainers
/crates/runtime/ @LinxISA/maintainers
/crates/isa/ @LinxISA/maintainers
/crates/elf/ @LinxISA/maintainers
/crates/dse/ @LinxISA/maintainers
/crates/lx-tools/ @LinxISA/maintainers
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Bug report
description: Report a functional, cycle-model, trace, or tooling bug
title: "[bug] "
labels: ["bug"]
body:
- type: textarea
id: summary
attributes:
label: Summary
description: What is broken?
validations:
required: true
- type: textarea
id: repro
attributes:
label: Reproduction
description: Include commands, fixture paths, and expected vs actual behavior.
validations:
required: true
- type: textarea
id: validation
attributes:
label: Validation context
description: Note whether `tools/regression/run_crosschecks.sh` was run and what failed.
validations:
required: false
16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Documentation
description: Request or report a docs update
title: "[docs] "
labels: ["documentation"]
body:
- type: textarea
id: issue
attributes:
label: What should change?
validations:
required: true
- type: input
id: path
attributes:
label: Relevant path
description: README, docs path, or crate path if known.
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/regression.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Regression
description: Report a behavior change against a previously passing gate or smoke
title: "[regression] "
labels: ["regression"]
body:
- type: input
id: last_good
attributes:
label: Last known good commit
validations:
required: true
- type: input
id: first_bad
attributes:
label: First known bad commit
- type: textarea
id: evidence
attributes:
label: Evidence
description: Include command lines, gate report excerpts, and any relevant logs or trace references.
validations:
required: true
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
17 changes: 17 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Summary

Describe what this PR changes and why.

## Validation

- [ ] `bash tools/ci/check_repo_layout.sh`
- [ ] `bash tools/regression/run_crosschecks.sh`
- [ ] (Optional local smoke) `bash tools/regression/run_crosschecks.sh --require-smoke`

## Notes

- [ ] Public docs were updated if crate names, verification commands, or repo
structure changed
- [ ] No old `linxcore-*` crate names were reintroduced
- [ ] Superproject references were only updated where they point directly to
this workspace
48 changes: 48 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
layout:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check repository layout
run: bash tools/ci/check_repo_layout.sh

workspace:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
- name: Cargo fmt
run: cargo fmt --all --check
- name: Cargo test
run: cargo test -q

crosscheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
- name: Run repo-local crosschecks
run: bash tools/regression/run_crosschecks.sh --out-dir out/ci-crosschecks
- name: Upload gate artifacts
uses: actions/upload-artifact@v4
with:
name: crosscheck-artifacts
path: |
out/ci-crosschecks
docs/bringup/gates/latest.json
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
target/
out/
*.log
*.json
*.jsonl
*.linxtrace
*.md.tmp
!docs/bringup/gates/latest.json
!crates/isa/data/linxisa-v0.4.json
36 changes: 36 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Code of Conduct

## Our Pledge

We want LinxCoreModel to be a professional, technically rigorous, and welcoming
open source project. Contributors and maintainers are expected to participate in
ways that keep discussion focused, respectful, and useful.

## Our Standards

Examples of behavior that contribute to a positive environment:

- engaging with technical disagreements directly and respectfully
- giving actionable review feedback with clear evidence
- assuming good faith while still holding a high engineering bar
- documenting decisions so later contributors can reproduce and audit them

Examples of unacceptable behavior:

- personal attacks, insults, or harassment
- bad-faith argumentation or repeated derailment of technical discussion
- publishing private information without consent
- disruptive behavior that prevents productive collaboration

## Enforcement

Project maintainers are responsible for clarifying and enforcing these
standards. They may remove, edit, or reject comments, commits, issues, pull
requests, and other contributions that violate this Code of Conduct.

## Reporting

For conduct concerns, use GitHub’s private maintainer contact path where
available, or open a private security/advisory report if the behavior is tied to
an exploit or disclosure issue. Maintainers will review reports confidentially
when practical.
54 changes: 54 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Contributing to LinxCoreModel

LinxCoreModel is the Rust modeling workspace under `tools/LinxCoreModel` in the
larger `linx-isa` superproject.

## Scope and Ownership

- Keep repository-local changes inside this workspace unless the work explicitly
requires a superproject integration change.
- Do not reintroduce `linxcore-*` crate names inside this workspace. The crate
graph is now `camodel`, `funcmodel`, `cosim`, `isa`, `elf`, `runtime`,
`trace`, `dse`, and `lx-tools`.
- Keep owner boundaries explicit. In particular:
- `camodel` uses domain/stage modules
- `funcmodel` uses engine/memory/syscall/trace domains
- shared CLI logic belongs in `crates/lx-tools/src/cli/`

## Required Local Checks

Run these before opening or updating a pull request:

```bash
bash tools/ci/check_repo_layout.sh
bash tools/regression/run_crosschecks.sh --require-smoke
```

If you do not have a local bring-up ELF under
`out/bringup/linux_user_compiler_smoke_O0.elf`, you can still run the non-smoke
gates:

```bash
bash tools/regression/run_crosschecks.sh
```

## Pull Requests

- Keep changes focused. Do not mix workspace refactors, behavior changes, and
unrelated superproject edits in one PR.
- Include validation evidence and note whether the smoke/crosscheck gates were
run with a local ELF or in test-only mode.
- Update docs when you change public crate names, verification commands, or
owner/module boundaries.

## Superproject Relationship

This repository is intentionally narrower than the `linx-isa` superproject. Use
superproject governance only where it directly applies here:

- mirror reusable patterns like `tools/ci`, `tools/regression`, and
`docs/bringup/gates`
- do not copy unrelated kernel/compiler/emulator process into this repo
- do not rename architectural references to “LinxCore” or “LinxISA” in the
wider superproject just because this workspace dropped redundant crate
prefixes
Loading
Loading