Instructions for coding agents working on TelemetryAnalysis.jl, a Julia package for analyzing satellite telemetry.
- Requires Julia 1.10 or newer (
[compat]inProject.toml). - Entrypoint is
src/TelemetryAnalysis.jl. Include order matters:types.jlfirst, then the constants defined in the entrypoint, thenio.jl,misc.jl,database/*.jl, andsources/*.jl. New code can only reference symbols defined earlier in this order. CrayonsandDatesare re-exported via Reexport;d,h,m,sare exported Unitful time-unit aliases.- Tests are organized by feature, not by source file:
test/runtests.jlincludestransfer_functions.jl,processing.jl,database.jl,misc.jl,sources.jl,persistence.jl, andpackets.jlinside one top-level@testset, after loading shared helpers fromtest/helpers.jl(test sources, packet constructors, shared state). test/fixtures/holds version-specific legacy serialization fixtures (julia-1.10/,julia-1.12/), regenerated withtest/fixtures/generate.jl.- Test-only dependencies are declared via
[extras]/[targets]inProject.toml(currently onlyTest); everything else the tests use is a runtime dependency. benchmark/has its own environment (benchmark/Project.toml, BenchmarkTools only) and loads the package viaLOAD_PATH; seebenchmark/README.md. Do not commitbenchmark/Manifest.toml.- No
Manifest.tomlis committed; dependencies resolve fresh from[compat].
- Instantiate:
julia --project=. -e 'using Pkg; Pkg.instantiate()' - Full test suite:
julia --project=. -e 'using Pkg; Pkg.test()' - Focused test file (helpers must be loaded first):
julia --project=. -e 'using Test, TelemetryAnalysis; include("test/helpers.jl"); include("test/<file>.jl")' - Benchmarks:
julia --project=benchmark -e 'using Pkg; Pkg.instantiate()'thenjulia --project=benchmark benchmark/benchmarks.jl(setTELEMETRY_BENCHMARK_SMOKE=truefor a bounded validation run). - Format:
julia -e 'using JuliaFormatter; format(".")'— no--project=.(JuliaFormatter is not a project dependency; it must be installed in the default environment). Check for changes afterwards withgit diff --exit-code. - Use generous timeouts: the first
Pkg.instantiate()/Pkg.test()triggers precompilation and can run for minutes while printing little — that is not a hang.
- Formatting is defined by
.JuliaFormatter.toml(Blue style plus alignment options and other overrides) — that file is the source of truth; run JuliaFormatter instead of formatting by hand. CI does not enforce formatting. - 92-character line width.
- Every file starts with a
## Description ###...###header block stating its purpose. - Section separators are full-width
###...###boxes with a centered title (seesrc/TelemetryAnalysis.jl). - Public functions, types, and even test helpers get docstrings with a signature line and, where applicable,
# Fields/ argument sections. - Match the existing
@testset "Name" begin ... endstyle; test files assume they run inside the top-level testset fromruntests.jl.
ci.ymltests Julia 1.10 and the latest stable 1.x on ubuntu-latest (x64), macos-latest (arm64), and windows-latest (x64), with coverage uploaded to Codecov.ci-nightly.ymlruns the same matrix on Julia nightly.- CI runs
julia-buildpkgthenjulia-runtest;Pkg.test()alone reproduces it locally (there is nodeps/build.jl).
- No docs build (
docs/does not exist), no pre-commit hooks, no package extensions, no test-name selector (run files, not named tests), no CI format-check job.