Skip to content

Data Boar 1.7.4 GA (xkcd 2¹⁰)

Choose a tag to compare

@FabioLeitao FabioLeitao released this 26 Jun 17:13
v1.7.4
f5f0dcb

Release 1.7.4

Status: Released (2026-06-26) — merge via PR #1024 (xkcd 2¹⁰); tag v1.7.4, GitHub Release, and Docker Hub publish follow operator release-ritual post-merge. #970 = premature stable attempt without gate — does not VOID this release (ADR-0072, ADR-0073). maturity_build = 201 side-channel (#976).

Public version: 1.7.4 · ADR-0073 Accepted · release gate #406 closed in this train.

Historic RC ladder: 1.7.4-rc.md · 1.7.4-rc-2 working line before this GA.


Highlights

  • Maestro Linux-port (gate #704): Handle-LicensingMatrix.ps1 now runs correctly on pwsh-Linux — -WindowStyle Hidden guarded by $IsWindows; Start-Process wrapped in try/catch to propagate spawn failures; locale-independent redirect detection via HTTP status code (#827, #818, #820).
  • Licensing matrix enforced (community / pro / enterprise): Stop-MatrixApiProcess cross-platform; no port collision between tiers on Linux (#820).
  • Completão smoke gate machine-verifiable: all 10 handlers write /tmp/databoar_handler/<persona>_sentinel.txt with the actual bash exit code; Wait-HandlerSentinel.ps1 polls and aggregates real pass/fail (#831).
  • Safe tmux payload injection: base64-encoded payloads + -Ref allowlist in all 10 handlers — eliminates shell-quoting injection risks (#830).
  • Security hardening (#825): hmac.compare_digest for API key and MAC comparison (timing-safe); Chart.js vendored (api/static/), CSP script-src 'self'; rsync excludes .env/.env.*; Maestro.ps1 exits non-zero on real handler failures.
  • 5th lab host registered: alpine emachines E527 added to manifest and documentation (#821).
  • Maestro / completão Deep smoke: lab-completao-host-smoke.sh accepts --bench-config PATH; Docker, Podman, Swarm, LXD, and MicroK8s handlers pass --bench-config before --lab-stack-up (#404, #408).

Unreleased changelog source (dense / pre-move from root CHANGELOG)

The root CHANGELOG.md Unreleased section follows Keep a Changelog categories for scanability; this subsection retains the older long-form bullets for operators who need paths, rollback hints, and cross-links in one place.

  • Config redaction: config/redact_config.py uses substring key matching (with token_url allowlist) so compound keys like telegram_bot_token and file_passwords redact on GET /config#622.
  • Man page (data_boar.5): document locale block and unified patterns_plugin_file section — #444, #431.
  • Issue queue / PMO: refresh PLANS_TODO.md triage snapshot (135 open, head-of-queue P1 man + #483; P0 only #606 product scope).
  • Governance docs: Contributor Covenant 2.1 in CODE_OF_CONDUCT (+ pt-BR); refresh TERMS_OF_USE and PRIVACY_POLICY (+ pt-BR) for 1.7.4-rc, tier matrix cross-links, optional dashboard auth, and maturity-assessment local storage — closes #419, #423, #424.
  • Legacy DB module filename: db/databasse.py renamed to db/database.py so filesystem paths match sonar-project.properties exclusions and operator mental model (GitHub #488).
  • Release candidate (working line): bump 1.7.4-rc on main (pyproject.toml, man .TH, hybrid lab image defaults, PUBLISHED_SYNC reconciliation); draft GitHub pre-release checklist in docs/releases/1.7.4-rc.mdno Docker Hub latest move until 1.7.4 final.
  • Maestro / completão (Deep benchmark argv): scripts/lab-completao-host-smoke.sh parses --bench-config; container handlers (Docker, Podman, Swarm, LXD, MicroK8s) pass that flag before --lab-stack-up so Deep smoke no longer hits exit 2 on unknown args (issues #404, #408). Draft stable checklist: docs/releases/1.7.4.md.
  • Lab lessons public archive: docs/ops/lab_lessons_learned/ dated snapshots + hub LAB_LESSONS_LEARNED.md contract (ADR 0042); situational .cursor/rules/lab-lessons-learned-archive.mdc; session token lab-lessons in session-mode-keywords.mdc; cold-start ladder, policy hubs, LAB_COMPLETAO_RUNBOOK, PLANS_TODO Integration row, and phase-2 situationalization inventory updated.
  • SQL sampling (SRE + audit posture): Shared builders in connectors/sql_sampling (tagged SQL, dialect hints), connectors/sql_table_row_estimate for metadata-first row caps, optional per-statement timeouts and inter_query_delay_ms on SQLConnector / Snowflake, core/sampling_policy for YAML overrides, and filesystem SQLite path integration. See ADR 0043 and PLAN_SQL_SAMPLING_SRE_AND_AUDIT_EVIDENCE.md.
  • Lab hybrid completão: scripts/lab-completao-orchestrate-hybrid-v173.ps1 resolves sshHost + first repoPaths from the lab manifest; LAB-NODE-02 scan dir prefers /home/leitao/Documents then /home/leitao/documents; LAB-NODE-01 / LAB-NODE-03 / lab-node-02 use tmux send-keys -t completao when that session exists, else ssh … bash -lc podman/docker; LAB-NODE-04 passive uses the repo clone path for .venv; image fabioleitao/data_boar:1.7.3.
  • Docs / quality gates: docs/TESTING_POC_GUIDE.md and docs/TROUBLESHOOTING_MATRIX.md — unique pseudo-headings (MD024); .cursor/rules/public-tracked-pii-zero-tolerance.mdc — LinkedIn placeholder uses <placeholder-slug> so tests/test_pii_guard.py does not treat the comma-terminated /in/example sample as a real slug.
  • Developer ergonomics (Windows / PowerShell): CONTRIBUTING (EN + pt-BR) documents correct Activate.ps1 venv activation and the not recognized failure when invoking Scripts\activate without .ps1; tests/test_pwsh_venv_activate_docs.py guards tracked .md / .mdc from reintroducing the bad .venv…Scripts…activate path pattern.
  • Ops docs: docs/ops/CURSOR_RULES_PHASE2_SITUATIONALIZATION.md (+ pt-BR) — Tier A inventory, Tier B/C backlog, why locale + docker-local-smoke-cleanup stay strongly always-on, pros/cons, and a 13-step reproducible ritual for the next situationalization batch (token-aware follow-up).
  • Cursor rules (phase 2 — plans / Sonar MCP / study cadence): plans-status-pl-sync.mdc, plans-archive-on-completion.mdc, sonarqube_mcp_instructions.mdc, and study-cadence-reminders.mdc are situational (alwaysApply: false) with narrow globs; session tokens sonar-mcp / study-check (and scope tokens docs / feature / houseclean / backlog for plan drift) plus @… latches bind them in fresh threads — docker-local-smoke-cleanup.mdc stays alwaysApply: true (short, high-frequency smoke/prune guidance; release sequencing is already situational). Cold-start ladder (EN/pt-BR), session-mode-keywords, AGENTS.md, CURSOR_AGENT_POLICY_HUB, and OPERATOR_SESSION_SHORTHANDS updated. Rollback: git revert the commit or restore the four rules from git show <parent>:.cursor/rules/<name>.mdc.
  • Cursor rules (phase 2 — release publish sequencing): release-publish-sequencing.mdc is situational (alwaysApply: false) with narrow globs on VERSIONING, docs/releases/**, Docker Hub / image order / PUBLISHED_SYNC, scripts/docker-lab-build.ps1, docker-prune-local.ps1, scripts/docker/README.md, and docker-smoke-container-hygiene skill; session token release-ritual and @release-publish-sequencing.mdc bind it in fresh threads — docker-local-smoke-cleanup.mdc stays alwaysApply: true. Cold-start ladder (EN/pt-BR), session-mode-keywords, AGENTS.md, VERSIONING (+ .pt_BR.md), CURSOR_AGENT_POLICY_HUB, OPERATOR_SESSION_SHORTHANDS, and docker-local-smoke-cleanup cross-links updated. Rollback: git revert the commit or git show <parent>:.cursor/rules/release-publish-sequencing.mdc.
  • Cursor rules (phase 2 — Everything / es-find): everything-es-cli.mdc is situational (alwaysApply: false) with narrow globs on scripts/es-find.ps1, EVERYTHING_ES_*, WINDOWS_FAST_CLI_WRAPPERS.*, and everything-es-search skill; session token es-find and @everything-es-cli.mdc bind it in fresh threads — windows-pcloud-drive-search-discipline.mdc stays alwaysApply: true for P: / huge-tree discipline. Cold-start ladder (EN/pt-BR), session-mode-keywords, AGENTS.md, CURSOR_AGENT_POLICY_HUB, OPERATOR_SESSION_SHORTHANDS, and windows-pcloud-drive-search-discipline cross-links updated.
  • Cursor rules (phase 2 — docs/private/ workspace cues): docs-private-workspace-context.mdc is situational (alwaysApply: false) with globs on PRIVATE_OPERATOR_NOTES, AGENTS.md, docs/private.example/**, PRIVATE_STACK_SYNC_RITUAL, PRIVATE_LOCAL_VERSIONING, and scripts/private-git-sync.ps1; session token private-stack-sync and @docs-private-workspace-context.mdc bind it in fresh threads — agent-docs-private-read-access.mdc stays alwaysApply: true (never self-block). Cold-start ladder (EN/pt-BR), session-mode-keywords, AGENTS.md, CURSOR_AGENT_POLICY_HUB, OPERATOR_SESSION_SHORTHANDS, and stacked-private-sync skill updated.
  • Windows VeraCrypt default (Z:): AGENTS.md, windows-pcloud-drive-search-discipline.mdc, session-mode-keywords (private-stack-sync), TOKEN_AWARE_SCRIPTS_HUB, stacked-private-sync skill, and scripts/private-git-sync.ps1 align on Z: as the operator default mount for the bare notes-sync.git mirror; Y: remains a fallback probe only (Z then Y in the script loop).
  • Cursor rules (phase 2 — homelab SSH): homelab-ssh-via-terminal.mdc is situational (alwaysApply: false) with globs docs/ops/HOMELAB*, scripts/lab-op*, scripts/collect-homelab*, scripts/homelab*, plus docs/private.example/homelab/** and PRIVATE_OPERATOR_NOTES.md; session token homelab explicitly read_file / @-binds this rule; cold-start ladder, AGENTS.md, CURSOR_AGENT_POLICY_HUB, OPERATOR_SESSION_SHORTHANDS. Rollback: git show <parent>:.cursor/rules/homelab-ssh-via-terminal.mdc.
  • Cursor rules (phase 2 — dossier): dossier-update-on-evidence.mdc is situational with docs/private/legal_dossier/** and docs/private/raw_pastes/** globs; session token legal-dossier-update; ladder + AGENTS.md + hubs document the latch.
  • Completão chat latch: OPERATOR_AGENT_COLD_START_LADDER (+ pt-BR) adds token → rule → wrapper latch; AGENTS.md + CURSOR_AGENT_POLICY_HUB point there.
  • Cursor rules (phase 2 — completão workflow): lab-completao-workflow.mdc situational (globs scripts/lab-completao* · docs/ops/LAB_COMPLETAO*); session completao. Rollback: git show <parent>:.cursor/rules/lab-completao-workflow.mdc.
  • Agent cold-start (homelab §7): ladder + AGENTS.md seventh non-negotiable (integrated terminal ssh).
  • Cross-platform pairing + Linux/macOS gate: scripts/quick-test.sh, lint-only.sh, pre-commit-and-tests.sh, check-all.sh; SCRIPTS_CROSS_PLATFORM_PAIRING (+ pt-BR); repo-scripts-wrapper-ritual.mdc; TOKEN_AWARE_SCRIPTS_HUB, check-all-gate.mdc, token-aware-automation skill.
  • Lab-OP sudoers / Podman wrapper: lab-node-01_labop_sudoers and LAB_OP_PRIVILEGED_COLLECTION allowlist /bin/bash and /usr/bin/bash. lab-node-01-ansible-labop-podman-apply.sh bash resolution + ~/.local/bin for ansible-playbook; lab-node-01_podman uses ansible_facts['ansible_env'].
  • Void Linux (LAB-NODE-03): lab-node-01_podman xbps-install; labop-share-client-install.sh fuse-sshfs.
  • Constrained LAB hosts: .labop-skip-lab-node-01-podman skips podman role apply.
  • Lab personas + Ansible ignore: LAB_OP_HOST_PERSONAS (+ pt-BR); .gitignore inventory.local.ini.
  • Private-git-sync / ladder / completão prompts: private-git-sync.ps1 probes drive root before bare path join; completao library + completao-chat-starter tiers + COMPLETAO_MESTRE checklist paths; AGENTS.md quick index refreshes.

Pre-release checklist (release PR #1024 — operator merge + publish)

  • CI green on release branch (Lint + Test + security gates).
  • uv lock matches pyproject.toml (version = "1.7.4").
  • pyproject.toml version = "1.7.4" with no -rc / -beta suffix.
  • Man pages: .TH line in docs/data_boar.1 / docs/data_boar.5 shows 1.7.4.
  • ADR-0073 Accepted; #406 / #977 closed in this PR train.
  • Tag + GitHub Release + Docker Hub — operator release-ritual after merge (see below).
  • docs/ops/today-mode/PUBLISHED_SYNC.md final refresh after Hub publish.

Bump type

From To Type
1.7.3 (stable consumer baseline) / 1.7.4-rc on main 1.7.4 Minor — adoption docs, governance refresh, Cursor policy situationalization, SQL sampling + lab observability ergonomics (#426)

How to get 1.7.4 (after publish)

  • From source: uv sync at v1.7.4 (or main when it matches that tag).
  • Docker: docker pull fabioleitao/data_boar:1.7.4 and/or docker pull fabioleitao/data_boar:latest per your publish policy.

Build and push Docker image

After 1.7.4 final is in pyproject.toml and .\scripts\check-all.ps1 passes on the tag commit:

.\scripts\docker-lab-build.ps1
docker run --rm data_boar:lab python main.py --version
docker tag data_boar:lab fabioleitao/data_boar:1.7.4
docker tag data_boar:lab fabioleitao/data_boar:latest
docker login
docker push fabioleitao/data_boar:1.7.4
docker push fabioleitao/data_boar:latest

Paste Short + Full from docs/ops/DOCKER_HUB_REPOSITORY_DESCRIPTION.md into Docker Hub Edit in the same session as the stable push. Refresh today-mode/PUBLISHED_SYNC.md (+ pt-BR) if your ritual includes it.


Publish (tag + GitHub Release)

On the commit that still has version = "1.7.4" in pyproject.toml (before any follow-up -beta / -rc bump on main):

git tag -a v1.7.4 -m "v1.7.4: <short title>"
git push origin main
git push origin v1.7.4
gh release create v1.7.4 --title "v1.7.4" --notes-file docs/releases/1.7.4.md

Verify with gh release view v1.7.4. Full order: situational release-publish-sequencing rule + VERSIONING.md.


After stable publish

Bump main to X.Y.(Z+1)-beta or next -rc in a separate commit after the tag/release/image steps (same sequencing as prior releases).

What's Changed

Full Changelog: v1.7.3...v1.7.4