Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
290 commits
Select commit Hold shift + click to select a range
b237d6a
migrations
magiccodingman Apr 11, 2026
16b9cc0
tons of updates, still trying to get initial queue and benchmarking s…
magiccodingman Apr 11, 2026
9644ed3
Starting to get this thing kinda working but TPS tracking has errors …
magiccodingman Apr 13, 2026
e8ba05b
reverted benchmark
magiccodingman Apr 13, 2026
9555060
new pruning and isolation system built!
magiccodingman Apr 14, 2026
fb00f8f
adding isSmallest and removing MXFP4 as an option right now.
magiccodingman Apr 14, 2026
2b234c1
Huge pruning changes in a good way! More options now too!
magiccodingman Apr 14, 2026
19c4b01
Significantly more pruning but over pruning atm.
magiccodingman Apr 15, 2026
5e491e2
more lax pruning
magiccodingman Apr 15, 2026
63e74b5
build all combo's
magiccodingman Apr 15, 2026
9fc6dfc
new benchmarks savings
magiccodingman Apr 15, 2026
f220ca4
Implement learned per-tensor baseline quant mapping pipeline
magiccodingman Apr 15, 2026
f41063b
Harden learned mapping truth verification and relearn rebuild
magiccodingman Apr 15, 2026
098ea9d
Add native-source learned truth support and alias hardening
magiccodingman Apr 15, 2026
4ee0f21
fix migration
magiccodingman Apr 15, 2026
9f027ef
update to moe indicators and updat to quant services due to bad marku…
magiccodingman Apr 16, 2026
73292c7
updated tensor groups
magiccodingman Apr 16, 2026
5b06acb
New Guid ID system
magiccodingman Apr 16, 2026
15b55c9
new quant application layer now working
magiccodingman Apr 16, 2026
b8556ab
new database changes
magiccodingman Apr 16, 2026
19e0369
this works very well
magiccodingman Apr 17, 2026
5512299
Merge pull request #1 from magiccodingman/codex/upgrade-quantization-…
magiccodingman Apr 17, 2026
4f1952e
changing how getting smallest model
magiccodingman Apr 17, 2026
55223d8
Use learned final tensor types for baseline group pruning
magiccodingman Apr 17, 2026
ed43d23
Merge pull request #3 from magiccodingman/codex/implement-improved-pr…
magiccodingman Apr 17, 2026
21d18a8
Fix BF16 suppression flags to reflect final allowed state
magiccodingman Apr 17, 2026
94bc16d
Align displayed BF16 suppression with BF16-only final groups
magiccodingman Apr 17, 2026
feb7833
Merge pull request #4 from magiccodingman/codex/fix-bf16-suppression-…
magiccodingman Apr 17, 2026
e90d51b
Refactor isolation bad-trade pruning to stable frontier walk
magiccodingman Apr 17, 2026
f21555d
Merge pull request #5 from magiccodingman/codex/replace-neighbor-base…
magiccodingman Apr 17, 2026
9e5ec5a
Cache hardware probe execution plan in SQLite
magiccodingman Apr 17, 2026
10a7646
Parameterize execution plan quantization cache key
magiccodingman Apr 17, 2026
61fbd0a
Preserve protected GGUF baselines during base cleanup
magiccodingman Apr 17, 2026
fa0e800
Skip Q8 rebuild when execution plan cache is present
magiccodingman Apr 17, 2026
0635322
Add cache hit/miss logs and clean up probe-only Q8 artifacts
magiccodingman Apr 17, 2026
6a09abe
Merge pull request #6 from magiccodingman/codex/add-hardware-detectio…
magiccodingman Apr 18, 2026
24521f9
updated database
magiccodingman Apr 18, 2026
4566e30
Skip native BF16 relearn when mapping already exists
magiccodingman Apr 18, 2026
2764b3f
Fix native relearn precheck model-id query type
magiccodingman Apr 18, 2026
80da117
Fix LearnNativeSourceTruthAsync local variable shadowing
magiccodingman Apr 18, 2026
4b6e591
Skip base BF16 clamp/benchmark when native truth already exists
magiccodingman Apr 18, 2026
135c2f9
Add canonical imatrix service and runtime capability gating
magiccodingman Apr 19, 2026
cd4eeb9
Fix imatrix debug path and explicit no-imatrix exclusions
magiccodingman Apr 19, 2026
3de97d6
Use native precision helper for imatrix exclusion
magiccodingman Apr 19, 2026
5269ce7
Fix imatrix status markup interpolation compile issue
magiccodingman Apr 19, 2026
a5461ff
Merge pull request #7 from magiccodingman/codex/task-title
magiccodingman Apr 19, 2026
bcd0270
Add progress logging to imatrix ensure/acquisition flow
magiccodingman Apr 19, 2026
5d6c71a
Merge branch 'main' into codex/implement-imatrix-integration-service
magiccodingman Apr 19, 2026
2004fc9
Improve imatrix build visibility with live process logs
magiccodingman Apr 19, 2026
886f163
Flatten local JSON datasets before llama-imatrix build
magiccodingman Apr 19, 2026
3680b60
Unify local split semantics for imatrix dataset extraction
magiccodingman Apr 19, 2026
872aa07
Fix rowMissingRequestedSplit scope errors in imatrix export
magiccodingman Apr 19, 2026
ea10351
Enhance imatrix heartbeat with file growth visibility
magiccodingman Apr 19, 2026
16b8003
Fix learned-baseline pruning to require exact effective scheme match
magiccodingman Apr 20, 2026
f3fc9ae
Fix learned-prune note to use TensorGroup.Name
magiccodingman Apr 20, 2026
785dc9b
Merge pull request #9 from magiccodingman/codex/task-title-p2mtjg
magiccodingman Apr 20, 2026
4868cac
Merge pull request #8 from magiccodingman/codex/implement-imatrix-int…
magiccodingman Apr 20, 2026
a3b1bb8
Refactor hybrid search authority to baseline-family candidates
magiccodingman Apr 20, 2026
85bddf8
Complete baseline-candidate isolation and imatrix identity persistenc…
magiccodingman Apr 20, 2026
1e75e1d
Clean up candidate naming and expand regression coverage
magiccodingman Apr 20, 2026
71e741c
Fix RuntimeSearchSpace obsolete misuse and finish candidate naming cl…
magiccodingman Apr 20, 2026
c803dbd
Fix QuantizationRun imatrix snapshot mapping and add regressions
magiccodingman Apr 20, 2026
46f12cc
Tighten baseline candidate policy and isolate high-precision injection
magiccodingman Apr 20, 2026
43b67f5
Fix learned-prune semantics and clear stale runtime prune records
magiccodingman Apr 20, 2026
ea3bb09
Make baseline metadata authoritative for bans and learned matching
magiccodingman Apr 20, 2026
7743747
Remove scheme-level banned-group ownership and prune via normal candi…
magiccodingman Apr 20, 2026
7b2d040
update to db
magiccodingman Apr 20, 2026
f73c5dc
removing tests.
magiccodingman Apr 20, 2026
196bff9
not perfect but getting this back on track
magiccodingman Apr 20, 2026
664b4aa
update
magiccodingman Apr 21, 2026
55808eb
update
magiccodingman Apr 21, 2026
7d6e56a
Merge pull request #10 from magiccodingman/codex/refactor-magicquant-…
magiccodingman Apr 21, 2026
fb9008d
update
magiccodingman Apr 21, 2026
369dc09
Significantly faster bulk insert process for combinations.
magiccodingman Apr 21, 2026
ce373a8
working way better and faster.
magiccodingman Apr 21, 2026
122ead8
updates
magiccodingman Apr 21, 2026
3a3a4bf
base for allowing learned behaviors from other models like Unsloth
magiccodingman Apr 21, 2026
f95c45b
new start to allowing new learned and yaml settings
magiccodingman Apr 21, 2026
9c5d966
some repair, the full download and learn from unsloth not yet working
magiccodingman Apr 22, 2026
91b2e2d
Getting further, may be working but baseline quant definitions is cau…
magiccodingman Apr 22, 2026
58676a3
working external baselines like Unsloth.
magiccodingman Apr 22, 2026
aac26e3
BitRange logic added.
magiccodingman Apr 22, 2026
33eea3f
new architecture category identity. FIxed quantization errors. the sy…
magiccodingman Apr 22, 2026
bffffa3
Adding in new prediction system. it is NOT working, but it's being ho…
magiccodingman Apr 23, 2026
6eb452c
getting somewhere
magiccodingman Apr 23, 2026
5fc4e8d
Trying to fix predictive bucket logic
magiccodingman Apr 23, 2026
2e2d446
Should be fixed with isolated base quants logic and pruning hopefully.
magiccodingman Apr 23, 2026
1c35818
all items get isolated and learned from now
magiccodingman Apr 23, 2026
46d9a77
significantly cleaner and proper combinations making it through now.
magiccodingman Apr 23, 2026
45e212e
Updated
magiccodingman Apr 24, 2026
ff84dfd
push
magiccodingman Apr 24, 2026
f04d1f6
push
magiccodingman Apr 24, 2026
619f6be
Base of new prediction engine. Not working yet, but this is the idea
magiccodingman Apr 24, 2026
e997f11
not working fully but getting there
magiccodingman Apr 24, 2026
811404b
Working selection system and output so far! Still a bit of bugs but t…
magiccodingman Apr 25, 2026
d266801
Workout output, readme, and more.
magiccodingman Apr 25, 2026
f857a50
lots of updates
magiccodingman Apr 26, 2026
e85b723
new tensor groups method with YAML and exceptions
magiccodingman Apr 27, 2026
71fbf45
tensor weights adding MXFP4
magiccodingman Apr 27, 2026
08edc8b
better imatrix support, cloning configuration started, and read me ge…
magiccodingman Apr 27, 2026
6d6fbfb
disable relearning tensor map on config
magiccodingman Apr 27, 2026
081011e
Enforce strict tensor-group learning validation
magiccodingman Apr 27, 2026
3327d3a
Fix strict-learning compile regressions
magiccodingman Apr 27, 2026
c9466a1
Refine external persistence failure messaging
magiccodingman Apr 27, 2026
a5107b7
Make empty log+GGUF tensor truth a strict failure
magiccodingman Apr 27, 2026
5625189
updated regex
magiccodingman Apr 27, 2026
38d9370
Merge pull request #13 from magiccodingman/codex/implement-strict-ten…
magiccodingman Apr 27, 2026
a55e576
Apply learned base-carrier blanket before group overrides
magiccodingman Apr 27, 2026
c825848
yaml update
magiccodingman Apr 27, 2026
39dd9ca
Merge pull request #14 from magiccodingman/codex/update-tensor-overri…
magiccodingman Apr 27, 2026
2c2a5ce
fixed some logging logic. Also fixed a logic bug where if BF16 didn't…
magiccodingman Apr 27, 2026
a5e6a9e
Add stage progress tracking and parallel batch orchestration
magiccodingman Apr 27, 2026
f47eb48
Add HybridQuant progress overload for ProcessHybridBatchAsync
magiccodingman Apr 27, 2026
46f5a8d
Generalize non-ETA progress labels and remove single-item tracker
magiccodingman Apr 27, 2026
7443f63
Escape literal [progress] label in Spectre markup
magiccodingman Apr 27, 2026
e3f8a27
Parallelize learnable baseline batch phase with bounded workers
magiccodingman Apr 27, 2026
e3aa803
Merge pull request #15 from magiccodingman/codex/add-progress-and-eta…
magiccodingman Apr 27, 2026
bfecd22
Implement dynamic two-anchor NGL planning and tensor-split config
magiccodingman Apr 27, 2026
3c0cde7
Fix native anchor caching and preserve Q8 GPU plan on native probe fa…
magiccodingman Apr 27, 2026
e160b7c
Allow cached Q8-only plans when native anchor is unavailable
magiccodingman Apr 27, 2026
a244c20
Set native quant key for CPU dynamic-plan cache rows
magiccodingman Apr 27, 2026
6bff940
new ngl update and benchmarking.
magiccodingman Apr 27, 2026
f317dac
Merge pull request #16 from magiccodingman/codex/implement-dynamic-be…
magiccodingman Apr 27, 2026
09c34c9
starting better pipeline for quantization
magiccodingman Apr 28, 2026
43308ed
Clean and isolate external baseline staging artifacts
magiccodingman Apr 28, 2026
7414ba4
Use HardDeleteHelper for external baseline directory cleanup
magiccodingman Apr 28, 2026
b9c5f53
Cleanup failed external baseline staging before rethrow
magiccodingman Apr 28, 2026
a5474a4
removed MXFP4 beause it's causing issues.
magiccodingman Apr 28, 2026
0e18979
Merge pull request #17 from magiccodingman/codex/clean-up-external-ba…
magiccodingman Apr 28, 2026
4da733c
Add scratch lease storage and model-scoped external baseline paths
magiccodingman Apr 28, 2026
f8d1ddf
Fix external baseline hybrid layering and scratch cleanup safety
magiccodingman Apr 28, 2026
88e5c88
Harden Q8 probe lease failure cleanup and benchmark reuse size gating
magiccodingman Apr 28, 2026
f2be2d2
don't use tmp
magiccodingman Apr 28, 2026
5b0dd03
Merge pull request #18 from magiccodingman/codex/implement-storage-an…
magiccodingman Apr 28, 2026
6d7c443
Fix ETA sampling to ignore cloned/near-zero completions
magiccodingman Apr 28, 2026
07fe15a
Merge pull request #19 from magiccodingman/codex/fix-eta-calculation-…
magiccodingman Apr 28, 2026
3056c01
Add verbose isolation pruning diagnostics and lifecycle audit logs
magiccodingman Apr 29, 2026
05d23f7
Add focused tensor compatibility diagnostics for block alignment bans
magiccodingman Apr 29, 2026
13c29ce
Fix compatibility diagnostics grouping key compile errors
magiccodingman Apr 29, 2026
8169a58
Removing incompatible tensors
magiccodingman Apr 29, 2026
d15ba5f
update
magiccodingman Apr 29, 2026
3b7f21a
Merge pull request #22 from magiccodingman/codex/add-diagnostics-for-…
magiccodingman Apr 29, 2026
c228b6d
Refactor DuckDB combo staging and pruning to SQL-native paths
magiccodingman Apr 29, 2026
2b4326d
Fix guards and CTAS safety for DuckDB pruning
magiccodingman Apr 29, 2026
402e74c
big upgrade to speed
magiccodingman Apr 29, 2026
6addb15
Merge pull request #23 from magiccodingman/codex/refactor-tensor-comb…
magiccodingman Apr 29, 2026
543a037
Handle mmproj sidecars early and make export non-fatal
magiccodingman Apr 29, 2026
3f7186d
df
magiccodingman Apr 30, 2026
094b6bd
Merge pull request #24 from magiccodingman/codex/fix-mmproj-export-fa…
magiccodingman Apr 30, 2026
332bb70
Fix public artifact short names in README and release metadata
magiccodingman Apr 30, 2026
d0a4574
fixed naming scheme system for readme
magiccodingman Apr 30, 2026
fd2d460
Merge pull request #25 from magiccodingman/codex/fix-readme-survivor-…
magiccodingman Apr 30, 2026
81aa36c
Defer DuckDB build until post-isolation pruning
magiccodingman Apr 30, 2026
9041079
cleaned up unecessary validation logging and work at startup.
magiccodingman Apr 30, 2026
4f3016b
Merge pull request #26 from magiccodingman/codex/remove-redundant-duc…
magiccodingman Apr 30, 2026
566d2a0
Massively upgraded DuckDB use and prediction speed.
magiccodingman Apr 30, 2026
7ecc6f6
new output flag for faster rebuilds of final output.
magiccodingman Apr 30, 2026
3e8cabd
Fixed GB representation to match HF
magiccodingman Apr 30, 2026
05ed6c2
Tons of fixed stuff for cloning and building clone config and externa…
magiccodingman May 1, 2026
5c9cb91
changed readme and cloning logic to unify more of the process. still …
magiccodingman May 1, 2026
7410c66
new manifest and better debug program startup commands
magiccodingman May 1, 2026
2b3a91d
Significant refactor for how the DB relates learned tensors and how i…
magiccodingman May 2, 2026
4d9342c
config update
magiccodingman May 2, 2026
7270450
yaml update
magiccodingman May 2, 2026
5ce965a
Fixed hardware probing not cached. And re-bucket logic that's now def…
magiccodingman May 2, 2026
7523cd5
Still broken prediction system after tensor connection refactor, but …
magiccodingman May 3, 2026
562d0c7
Still hammering out kinks. Not doing well on lower bit ranges, but it…
magiccodingman May 3, 2026
be66b0b
Big update to predictive engine trying to find an anomaly
magiccodingman May 3, 2026
ec1691e
predictive engine doing better but still very flawed
magiccodingman May 3, 2026
5b69363
Still not perfect, but oh lord the results looking good!
magiccodingman May 3, 2026
9c91b85
better ish
magiccodingman May 4, 2026
fd82cb9
lots of updates, starting to look good but need to validate
magiccodingman May 4, 2026
c02b894
back to 4B testing to resolve sub space and predictive bugs that're p…
magiccodingman May 4, 2026
5f993fb
Significantly stronger prediction engine search. Much closer to desir…
magiccodingman May 4, 2026
dcf6385
back to 27B testing. Q8 is broke in predictive space now, working on …
magiccodingman May 4, 2026
38f2f49
more changes
magiccodingman May 4, 2026
119296d
This is working absolutely amazing so far, but I'm still suspicious o…
magiccodingman May 5, 2026
3c3f995
fixed issue with predicitive engine falling back incorrectly for base…
magiccodingman May 5, 2026
9782f30
healthier prediction fallback logic but still not good enough.
magiccodingman May 5, 2026
f8d6e55
predictive engine working
magiccodingman May 5, 2026
67a74be
smart free lunch system activated
magiccodingman May 6, 2026
3e7eb5d
Still hammering out new setup but it's working better.
magiccodingman May 10, 2026
7eeee4c
still having issues but we're doing much better now.
magiccodingman May 10, 2026
f7d8c5e
new exceptions and repair
magiccodingman May 10, 2026
6affc64
still working out the kinks
magiccodingman May 11, 2026
487f84a
removed group bands from quants. It was causing issues that derrived …
magiccodingman May 12, 2026
52a22ea
readme fixup
magiccodingman May 12, 2026
4ee69db
disable exporting final artifact again.
magiccodingman May 12, 2026
fa619c0
updates
magiccodingman May 19, 2026
a1d9c1e
updates
magiccodingman May 19, 2026
8ea49da
Add clone manifest subset tensor builder
magiccodingman May 19, 2026
7ccac66
Wire clone subset manifest flag
magiccodingman May 19, 2026
2b06a14
Support clone missing-manifest base quant override
magiccodingman May 25, 2026
19e6f82
Wire missing-manifest base quant CLI flag
magiccodingman May 25, 2026
66f7495
Keep missing-base override subset-only
magiccodingman May 25, 2026
572ba35
Return clone subset build metadata
magiccodingman May 25, 2026
ee33c1d
Persist resolved clone subset policy in manifest
magiccodingman May 25, 2026
abfd3fa
Capture resolved clone tensor map from GGUF output
magiccodingman May 25, 2026
8871928
Persist resolved tensor types after clone build
magiccodingman May 25, 2026
a2e069e
updates
magiccodingman Jun 3, 2026
7a76a87
Merge pull request #28 from magiccodingman/codex/clone-allow-missing-…
magiccodingman Jun 3, 2026
bbfa0cb
Fixed output issue for mmproj file check where it could get stuck
magiccodingman Jun 19, 2026
df634d3
updated for qwen3.8
magiccodingman Aug 15, 2026
b761076
qwen3.8 update for v3 unsloth
magiccodingman Aug 19, 2026
3f4d1f1
lots of updates
magiccodingman Aug 20, 2026
562ed84
Add Unsloth imatrix clone debug config
magiccodingman Aug 20, 2026
ca62dab
Copy Unsloth clone config to debug output
magiccodingman Aug 20, 2026
ee945e6
Switch debug harness to Qwen3.8 Unsloth imatrix clone
magiccodingman Aug 20, 2026
ee605d1
fixing caching not deleting for external baseline downloads
magiccodingman Aug 20, 2026
03ec4ad
Merge remote-tracking branch 'origin/main'
magiccodingman Aug 20, 2026
c7a97a8
update
magiccodingman Aug 21, 2026
082343f
Optimize multi-GPU benchmark scheduling
magiccodingman Aug 21, 2026
59e79b5
Support pinned historical baseline revisions
magiccodingman Aug 21, 2026
1a87e22
Handle symlinked external baseline caches
magiccodingman Aug 21, 2026
a1b756d
Preserve resumable external baseline downloads
magiccodingman Aug 21, 2026
1d0f5c8
Scope anomaly rules to measured fidelity contexts
magiccodingman Aug 21, 2026
4c60321
Match anomaly rules to effective contexts
magiccodingman Aug 21, 2026
6b897ac
Probe templates across controlled fidelity contexts
magiccodingman Aug 21, 2026
5f6f944
Restore deterministic full-suite validation
magiccodingman Aug 21, 2026
0c73ac4
Probe context-dependent quant rank reversals
magiccodingman Aug 21, 2026
13d9bd0
Prefer size-matched context probe contrasts
magiccodingman Aug 21, 2026
91d35ae
Prefer shared GPUs for singleton benchmarks
magiccodingman Aug 21, 2026
dcfac9e
Merge branch 'feature/gpu-throughput-planner' into feature/contextual…
magiccodingman Aug 21, 2026
8d3fed0
Require learned carriers for controlled contexts
magiccodingman Aug 21, 2026
6c835a3
Prefer canonical baseline names over scheme aliases
magiccodingman Aug 21, 2026
6546ccb
Scope canonical resolution to standard roles
magiccodingman Aug 21, 2026
f854016
Skip smart tuning for context-only baselines
magiccodingman Aug 21, 2026
4c4318a
Assign benchmark models to best-fit GPUs
magiccodingman Aug 21, 2026
7fd6cdb
Merge branch 'feature/gpu-throughput-planner' into feature/contextual…
magiccodingman Aug 21, 2026
d837088
Clarify isolation continuation configuration
magiccodingman Aug 21, 2026
d049b75
Preserve the full Qwen3.8 Pareto frontier
magiccodingman Aug 21, 2026
b8c30cc
Preserve configured runtime root during validation
magiccodingman Aug 21, 2026
4eb6395
Restore deterministic full-suite validation
magiccodingman Aug 21, 2026
315ad3f
Merge branch 'feature/gpu-throughput-planner' into feature/contextual…
magiccodingman Aug 22, 2026
a06dd21
Pin Qwen3.8 dynamic-v3 campaign source
magiccodingman Aug 22, 2026
b988e36
Merge pull request #30 from magiccodingman/feature/contextual-frontie…
magiccodingman Aug 22, 2026
10c9f10
Merge pull request #29 from magiccodingman/feature/gpu-throughput-pla…
magiccodingman Aug 22, 2026
8d1415a
Prepare MagicQuant for contributors with documented workflows and CLI…
magiccodingman Sep 7, 2026
acd7891
Keep CLI help detection null-safe
magiccodingman Sep 7, 2026
5541d71
Harden campaign boundaries and add tested native execution and contri…
magiccodingman Sep 7, 2026
b017367
Release pooled SQLite test handles before Windows cleanup
magiccodingman Sep 7, 2026
f8e1049
Merge pull request #31 from magiccodingman/cleanup/public-readiness
magiccodingman Sep 7, 2026
0692227
Import MagicQuant Pipeline with its complete main history
magiccodingman Sep 7, 2026
c31ea26
Organize application, tests and operational documentation for unified…
magiccodingman Sep 7, 2026
3e328e3
Package the AGPL CLI with launch documentation, funding and trusted N…
magiccodingman Sep 8, 2026
3b068a3
Validate config creation syntax and finalize workflow checks
magiccodingman Sep 8, 2026
2323aba
Capture stalled-test diagnostics and bound CI test hangs
magiccodingman Sep 8, 2026
9ab287f
Explain upstream attribution, variant cloning and tensor-copying limits
magiccodingman Sep 8, 2026
bf55142
Make starter settings model-neutral and external presets opt-in
magiccodingman Sep 8, 2026
1e2e28a
Merge pull request #11 from magiccodingman/launch/nuget-open-source
magiccodingman Sep 8, 2026
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
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
root = true

[*]
charset = utf-8
insert_final_newline = true
indent_style = space
indent_size = 4

[*.{json,yaml,yml}]
indent_size = 2

[*.cs]
csharp_style_namespace_declarations = file_scoped:suggestion

[*.md]
trim_trailing_whitespace = false
2 changes: 0 additions & 2 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
# These are supported funding model platforms

github: [magiccodingman]
custom: ['https://sayou.biz/support', 'https://paypal.me/lancewr']
3 changes: 3 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
self-hosted-runner:
labels:
- magicquant-smoke
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Change

Describe the problem and resulting behavior. Note changes to numerical policy, configuration, paths, or persisted formats.

## Validation

List relevant tests and any model/hardware checks. State material limitations.
47 changes: 47 additions & 0 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: .NET checks
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
configuration: [Debug, Release]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -m unittest discover -s scripts -p "test_*.py"
- run: dotnet restore MagicQuant.sln --locked-mode -warnaserror
- run: dotnet build MagicQuant.sln --configuration ${{ matrix.configuration }} --no-restore -warnaserror
- run: dotnet test MagicQuant.sln --configuration ${{ matrix.configuration }} --no-build --blame-hang-timeout 2m --blame-hang-dump-type none --logger trx --logger "console;verbosity=normal" --results-directory TestResults
- run: dotnet pack src/MagicQuant --configuration ${{ matrix.configuration }} --no-restore -p:Version=0.0.0-ci -o artifacts -warnaserror
- run: python scripts/package_smoke.py artifacts/MagicQuant.0.0.0-ci.nupkg
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.os }}-${{ matrix.configuration }}
path: TestResults/
secrets:
name: Secret scan
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python scripts/scan_secrets.py
41 changes: 41 additions & 0 deletions .github/workflows/model-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Model smoke (manual)
on:
workflow_dispatch:
inputs:
model_path:
description: Complete source model on the trusted runner
required: true
llama_root:
description: Existing llama.cpp checkout on the trusted runner
required: true
runtime_root:
description: Existing MagicQuant runtime with Python dependencies
required: true
output_root:
description: Dedicated smoke output directory on the trusted runner
required: true
permissions:
contents: read
jobs:
smoke:
# Never trigger self-hosted execution automatically from untrusted pull requests.
runs-on: [self-hosted, magicquant-smoke]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- run: dotnet restore MagicQuant.sln --locked-mode
- run: dotnet test tests/MagicQuant.Tests -c Release --no-restore --filter Category=ModelSmoke --logger trx --results-directory TestResults
env:
MQ_RUN_MODEL_SMOKE: '1'
MQ_SMOKE_MODEL: ${{ inputs.model_path }}
MQ_SMOKE_LLAMA_ROOT: ${{ inputs.llama_root }}
MQ_SMOKE_RUNTIME_ROOT: ${{ inputs.runtime_root }}
MQ_SMOKE_OUTPUT: ${{ inputs.output_root }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: smoke-test-results
path: TestResults/*.trx
84 changes: 84 additions & 0 deletions .github/workflows/publish-nuget.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Publish NuGet
on:
push:
branches: [release]
workflow_dispatch:
permissions:
contents: read
jobs:
validate:
if: github.ref == 'refs/heads/release'
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: dotnet restore MagicQuant.sln --locked-mode -warnaserror
- run: dotnet build MagicQuant.sln -c Release --no-restore -warnaserror
- run: dotnet test MagicQuant.sln -c Release --no-build --blame-hang-timeout 2m --blame-hang-dump-type none
- run: python -m unittest discover -s scripts -p "test_*.py"
- run: dotnet pack src/MagicQuant -c Release --no-restore -p:Version=0.0.0-ci -o artifacts -warnaserror
- run: python scripts/package_smoke.py artifacts/MagicQuant.0.0.0-ci.nupkg
publish:
needs: validate
runs-on: ubuntu-latest
timeout-minutes: 20
environment: release
permissions:
contents: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Reserve or reuse the version for this commit
id: version
run: |
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
python scripts/release_version.py --reserve
- run: dotnet restore MagicQuant.sln --locked-mode -warnaserror
- name: Pack exact release version
env:
RELEASE_VERSION: ${{ steps.version.outputs.version }}
run: dotnet pack src/MagicQuant -c Release --no-restore -p:Version="$RELEASE_VERSION" -p:ContinuousIntegrationBuild=true -o artifacts -warnaserror
- name: Validate the release package
env:
RELEASE_VERSION: ${{ steps.version.outputs.version }}
run: python scripts/package_smoke.py "artifacts/MagicQuant.$RELEASE_VERSION.nupkg"
- uses: actions/upload-artifact@v4
with:
name: nuget-${{ steps.version.outputs.version }}
path: artifacts/*.nupkg
- name: NuGet login through trusted publishing
uses: NuGet/login@v1
id: login
with:
user: ${{ secrets.NUGET_USER }}
- name: Publish tested package
env:
NUGET_API_KEY: ${{ steps.login.outputs.NUGET_API_KEY }}
run: dotnet nuget push artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key "$NUGET_API_KEY" --skip-duplicate
- name: Create release record
env:
GH_TOKEN: ${{ github.token }}
RELEASE_VERSION: ${{ steps.version.outputs.version }}
run: |
if ! gh release view "v$RELEASE_VERSION" >/dev/null 2>&1; then
gh release create "v$RELEASE_VERSION" --verify-tag --title "MagicQuant $RELEASE_VERSION" --generate-notes
fi
80 changes: 80 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,81 @@
.obsidian/

# Build results
bin/
obj/

# Rider / JetBrains
.idea/
*.sln.iml

# Visual Studio user settings
*.user
*.userosscache
*.suo
*.cache
*.dbmdl
*.bak
*.ncb
*.opendb
*.VC.db

# Other common C# stuff
*.log
*.vs/

# Local campaigns and generated model/runtime artifacts
config.local.yaml
*.local.yaml
*.dev.yaml
**/MagicQuant_SQLite.db*
*.duckdb
*.duckdb.wal
*.gguf
*.safetensors
.MagicQuant_tmp/
TestResults/
artifacts/

__pycache__/

# Visual Studio / Rider / VS Code per-user and machine state
.vs/
.idea/
.vscode/*
!.vscode/extensions.json
!.vscode/settings.example.json
*.DotSettings.user
*.sln.DotSettings.user
*.slnx.user
*.rsuser
*.sln.docstates
_ReSharper*/
*.ncrunch*
_NCrunch*/
[Bb]enchmark[Dd]ot[Nn]et.[Aa]rtifacts/
[Tt]est[Rr]esults/
coverage/
*.coverage
*.coveragexml
*.testlog

# Local secrets, package output and OS/editor temporary files
.env
.env.*
!.env.example
*.pfx
*.p12
*.key
*.pem
*.nupkg
*.snupkg
.DS_Store
Thumbs.db
Desktop.ini
*~
*.swp
*.swo

# Local campaign configuration and tool installs
config.yaml
.tool-install/
10 changes: 10 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Retain every default detector. This exact tensor fixture is not an API key.
[extend]
useDefault = true

[[allowlists]]
description = "Exact native/external tensor-name fixture, including its historical path"
condition = "AND"
paths = ['''(^|/)MagicQuant.Tests/ExternalBaselineTensorParityTests\.cs$''']
regexTarget = "line"
regexes = ['''^\s*var (native|external) = Metadata\(nextnLayers: 1, "token_embd\.weight", "blk\.0\.attn_q\.weight", "blk\.64\.nextn\.eh_proj\.weight"\);$''']
50 changes: 50 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Contributing

Start with the [architecture map](docs/architecture.md), [configuration rules](docs/configuration.md), and the [research wiki](https://github.com/magiccodingman/MagicQuant). This repository implements benchmark-driven discovery; the `evolution` name survives as a compatibility alias.

## Local workflow

```sh
dotnet restore MagicQuant.sln --locked-mode
dotnet build MagicQuant.sln -c Debug --no-restore
dotnet test MagicQuant.sln -c Debug --no-build
dotnet build MagicQuant.sln -c Release --no-restore
dotnet test MagicQuant.sln -c Release --no-build
```

CI runs both configurations on Linux and Windows with warnings treated as errors and locked package restores. Use `--filter FullyQualifiedName~YourTestClass` to focus a test run during development. Tests run serially because configuration and runtime registries are global. Source-contract regression tests assume the normal repository/build layout; run the suite from the checkout rather than copying the test DLL elsewhere.

Keep personal settings in an ignored `config.local.yaml` and pass `--config` explicitly. Do not add machine paths or automatic DEBUG campaigns to `Program.cs`. Use IDE run arguments for your campaign. Never commit weights, runtime databases, exported GGUFs, credentials, or local logs.

## Making a change

- Keep commands focused on orchestration; extract cohesive policy or path logic into services when it can be tested independently.
- Use existing baseline identity, effective-state, and path helpers. Do not duplicate database filenames, tensor-slot ordering, or custom-baseline normalization.
- Explain why a non-obvious constraint exists in a comment. Avoid comments that merely restate a method call or retain obsolete blocks of disabled implementation.
- When adding a config option, update the typed model, loader override if needed, commented default YAML, documentation, and a behavior test. Distinguish C# defaults from the distributed YAML profile.
- Test observable behavior: boundary cases, context scoping, cache reuse/invalidation, ranking/tie rules, path resolution, or failure propagation. Avoid tests that only repeat the implementation's constants without exercising a contract.
- Treat persisted IDs, database schemas, manifests, and artifact names as compatibility contracts. Provide an explicit migration plan for changes to them.

For a bug fix, add a regression that fails without the fix. Tests that mutate `Config`, `Cache`, or registries must restore prior state in `finally`; use unique temporary roots. Keep unit tests free of network downloads, sudo, model quantization, and persistent changes to a developer's runtime.

## Hardware integration changes

Changes to conversion, quantization arguments, benchmark scheduling, or numerical selection need a small-model integration check in addition to unit tests. Record model identity, hardware, imatrix, dependency revisions, command/config, observed outputs, and before/after metrics. Use an isolated output directory. Do not claim full quantization parity from a passing unit suite.

For documentation or path refactoring, verify examples against actual help and protect historical path rules. Avoid re-running expensive full campaigns when the changed behavior can be checked directly.

## Pull request expectations

Describe the concrete problem and resulting behavior, relevant compatibility effects, and validation performed. Separate numerical policy changes from mechanical cleanup when possible. Mention untested hardware/platform paths and any remaining compiler warnings. Prefer focused commits that can be reviewed without reconstructing the conversation that led to them.

The maintainer still needs to choose a software license before an open-source release; do not infer one from generated model metadata or dependency licenses.

See [testing and merge checks](docs/testing.md) for the manual small-model workflow,
package lock updates, and required-check setup. [Worked examples](docs/extending.md)
show how to add configuration and test native/process/path changes.

## Repository layout and release safety

Application projects are under `src/`; test projects are under `tests/`. Program guides belong in `docs/`; research explanations belong in `wiki/`. Use relative links so documentation remains useful in checkouts and forks. Source paths are separate from model/runtime data paths.

Run the [installed-package checks](docs/testing.md#installed-package-and-release-checks) when changing paths, packaging, startup, or bundled files. Publication is controlled by [release branch automation](docs/releases.md). Never put NuGet keys or personal configuration into a workflow. Original contributions are accepted under the repository's AGPL-3.0-only license; retain third-party attribution.
5 changes: 5 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Project>
<PropertyGroup>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
</Project>
Loading
Loading