Repository navigation
0.6.0
0.6.0 — First-run fixes after 0.5.0
23 September 2026. Minor on 0.5.0.
Upgrade if a command checked the wrong directory, hid what --json already showed, or crashed on a repository that was not finished yet. A few JSON fields and exit results change, so read Changed before upgrading a pipeline.
Install
pip install opentide==0.6.0
export OPENTIDE_REPO_ROOT=/path/to/detection-repo
opentide validate --strictIf you generated CI with opentide setup ci, regenerate it so --default-branch matches the branch you deploy from: opentide setup ci <github|gitlab|azure> --yes.
Changed
validate --jsonnames the directory it read underworkspace. A full run that finds no objects still exits0, and its message names that directory (#294).setup mcp --genericreturns its copy-the-file instruction asadviceinstead ofnote(#292).- SDK: the registry index has a
file_pathsmap.ValidationScope.path_basenamesis removed; a path target matches only the object's own file (#297). - An unset Splunk
frequency_schedulingkeeps the mode it deployed with before:currentfor a legacy[setup]table,randomfor a[[tenants]]entry (#295).
Fixed
- Commands find a detection workspace from
.opentide/orobjects/, including one nested in a larger git checkout.validate --strictno longer passes having checked nothing (#294). validate --filematches that path only. Issues name the object's own file, andrule.filepoints at it (#297).- Human output keeps bracketed text (
[deploy, validate],[error],opentide[sentinel]), printsadviceanddetail, lists lint findings, andinfo rules/threats/objectives/coverageprint the section you asked for (#292, #293). rule.metadata.schemareturns"rule::1.0", not Pydantic'sBaseModel.schema(#298).generate docswrites an actor's stage asatt&ck, not('att&ck',)(#296).infono longer logs a Splunk frequency warning for a repository that does not use Splunk (#295).deployin a repository withoutobjects/rules/reportsskipped(exit0) instead ofErrno 2. Rule files in subfolders are still not deployed; the plan names them in a warning (#300, #312).- An enabled platform with no
[[tenants]]entry failsdeployandvalidate query --livewith the file to edit, before any engine loads.--dry-runpreviews payloads and warns (#314). setup --ciaccepts--default-branchand prints the same warnings assetup ci(#288, #308).--no-promotionand--promotion-targetwrite[promotion]in.opentide/configurations/deployment.toml. Omitting them keeps the repository's setting; an explicit flag that disagrees with an existing table exits2(#307).- Documented CLI samples for deploy, troubleshooting, and the tutorial match what the commands print (#299).
vocab-upstream.ymlparses again, so the vocabulary drift gate runs (#287).publish-pypi.ymlcan be retried after a PyPI 5xx without uploading a file twice (#289).
Tests
Each fix has a regression for the reported case and a guard for the class: human output against --json, workspace discovery from subdirectories, --file against same-basename twins, documented output samples run as the CLI, and a tenantless scaffold for every platform.
Verify
python -c "import opentide; print(opentide.__version__)"
opentide setup --yes --name "Tutorial Detections" --org "Example Corp" --platform sentinel --path /tmp/tutorial-detections
opentide --repo /tmp/tutorial-detections validate --strictExpect 0.6.0.
Links
License: EUPL-1.2. Issues: OpenTideHQ/opentide.