Skip to content

release: v1.0.0 — Quartz Maturity (Stable) — GitHub Action#1

Merged
PythonWoods-Dev merged 28 commits into
mainfrom
release/v1.0.0
May 7, 2026
Merged

release: v1.0.0 — Quartz Maturity (Stable) — GitHub Action#1
PythonWoods-Dev merged 28 commits into
mainfrom
release/v1.0.0

Conversation

@PythonWoods-Dev
Copy link
Copy Markdown
Contributor

https://github.com/PythonWoods/zenzic-doc/pull/45First stable release of the zenzic-action composite GitHub Action,
tracking Zenzic Core v0.7.0 (Quartz Maturity).

What ships

  • action.yml — composite action: installs uv, runs zenzic-action-wrapper.sh.
    Inputs: version, format, sarif-file, upload-sarif, strict, fail-on-error, config-file.
    Outputs: sarif-file, findings-count.
  • zenzic-action-wrapper.sh — strict execution layer enforcing the Zenzic Exit Code Contract
    (exits 0/1/2/3), SARIF integrity check, SARIF Jailbreak guard, Config Jailbreak guard,
    Root-First Sentinel config discovery, Sovereign Override passthrough (ZENZIC_EXTRA_ARGS).
  • zenzic.toml — standalone prose-only perimeter (engine = "standalone", docs_dir = ".").
    Fixes Z906 NO_FILES_FOUND. Excludes *.sh via excluded_build_artifacts (fixes Z903).
  • CI (self-check.yml) — 2-OS matrix (ubuntu-latest full verify, windows-latest lint-free).
    no-commit-to-branch scoped to stages: [pre-commit].
  • Guard removal — Pre-Launch Guard reduced to contributor-covenant.org only.
    zenzic.dev and v0.7.0 release tag are now live and validated unconditionally.

Exit Code Contract

Exit Meaning Suppressible
0 Clean
1 Documentation findings Via fail-on-error: false
2 Credential detected (Z201) Never
3 Path traversal (Z202-203) Never

Verification

just check → ✨ Sentinel Seal (0 errors, 0 warnings)

Full changelog: CHANGELOG.md

- ZENZIC_BRAIN.md: Trinity Mesh Synchronization policy added (CEO-235/236)
- ZENZIC_BRAIN.md: Zone A/B markers (ZONE_B_START/ZONE_B_END) around [ACTIVE SPRINT]
- ZENZIC_BRAIN.md: [ACTIVE SPRINT] D096 cross-repo governance entry
- .github/copilot-instructions.md: shadow sync
- .github/workflows/self-check.yml: full OS matrix [ubuntu, macos, windows] fail-fast: false
- justfile: updated recipes
- SECURITY.md: security policy
Red Team audit (CEO-250) confirmed that the sarif-file input accepted
arbitrary paths, allowing writes outside the checkout directory.

- zenzic-action-wrapper.sh: sandbox guard added after defaults (BUG-006).
  Absolute paths (/*) and traversal sequences (*../* | /..) are rejected
  with a fatal ::error annotation before any file redirection occurs.
  Output-first semantics preserved: guard fires BEFORE the > redirect.
- action.yml: sarif-file description updated — 'relative path' constraint
  and forbidden patterns documented.
- README.md: inputs table updated — sarif-file constraint documented.
- ZENZIC_BRAIN.md: [POLICIES] SARIF Integrity — BUG-006 invariant added.
  Lesson: 'Inputs that define output paths are security vectors.'

Smoke test:
  sarif-file=/etc/passwd    → ::error + exit 1 ✅
  sarif-file=../../evil     → ::error + exit 1 ✅
  sarif-file=valid.sarif    → guard passes    ✅

ALL BREACHES SEALED — branch: release/v1.0.0
…, noxfile.py, justfile, scripts/**, .github/** entries. All source files carry SPDX headers inline. Add zenzic-results.sarif (JSON/SARIF) to REUSE.toml.
Aligns zenzic-action with the v0.7.0 "Quartz Maturity" doctrine shared
across the four-repo constellation.

- justfile: collapse to single `just verify` entry-point (4-Gates Standard);
  honour `ZENZIC_PROJECT_PATH` for unreleased-core dogfooding.
- noxfile.py: same canonical Sentinel invocation (`uv run --project ../zenzic
  zenzic check all --strict`); add `tests` session with shell `bash -n`
  validation of the wrapper.
- .pre-commit-config.yaml: pre-push Final Guard mirrors `just verify` so
  locale ≡ remote (EPOCH 4 contract).
- self-check.yml: GHA now runs the same `just verify` against an
  out-of-tree checkout of zenzic core — no more multi-OS divergence,
  one truth path.
- README.md/README.it.md: 4-Gates Sentinel Seal + REUSE 3.x badges,
  Documentation Map "Quartz Promise" section linking ADR-0011 +
  Tech Debt Ledger; full IT mirror (parità linguistica).
Per CEO Zero-Brain Policy 2.0 — v0.7.0 is "Anno Zero":
the existence of `scripts/map_action.py` (which generated `ZENZIC_BRAIN.md`)
is itself a violation of the new deterministic policy.

Changes:
- git rm scripts/map_action.py (DELETION, not rename)
- justfile: remove `map-update` recipe (no replacement — cartographer is gone)
- .gitignore: add coverage artefacts block (Determinism Invariant)
- .zenzic.dev.toml: extend forbidden_patterns blacklist
  (ZENZIC_BRAIN.md, zenzic brain map, brain-map-check, map_action.py,
  Sovereign Memory, Mnemonic) — Sentinel Guard firewall
- Local .draft/ vault scrubbed of brain backups (untracked, but residue)

After this commit, the zenzic-action perimeter contains zero references
to probabilistic cartography or "brain" lexicon.
Aligns with Fase A housekeeping applied across all ecosystem repos
(zenzic, zenzic-doc, zenzic-action). The dev-toml name was a pre-launch
artefact; .zenzic.local.toml is the canonical name for the Zero-Config
Sovereignty era (EPOCH 7a.1 / v0.7.0).
justfile:
* Add 'lint' recipe (uvx pre-commit run --all-files) — 4-Gates Standard
  alignment: lint = fast pass without full test suite.

CONTRIBUTING.md:
* Add 'First-Time Setup' section with both pre-commit install commands:
  - commit stage: uvx pre-commit install
  - pre-push Final Guard: uvx pre-commit install -t pre-push
* Expose just lint alongside just verify in the verification section.
Tagline:
* EN: 'The official bridge...' → 'The deterministic enforcement point
  for documentation integrity in CI. Exit codes are contractual — exits
  2 and 3 survive fail-on-error: false.'
* IT: mirror

Exit code contract paragraph (after opening image):
* EN + IT: explicit statement that the wrapper propagates exit codes
  without remapping; exit 2/3 are never suppressible at the enforcement
  boundary regardless of fail-on-error or --exit-zero
Add ubuntu-latest + windows-latest matrix (fail-fast: false).
Set defaults: run: shell: bash for cross-platform determinism.
Inject ZENZIC_EXTRA_ARGS env block with --exclude-url entries for
known pre-launch transient zenzic.dev/ URLs and v0.7.0 GitHub tag.
Aligns self-check pipeline with Core and Doc Quartz Maturity standard.
…ations

Capture ZENZIC_EXTRA_ARGS into EXTRA_ARGS bash array (word-split
intentional for --exclude-url <url> pairs). Pass "${EXTRA_ARGS[@]}"
to both the SARIF and non-SARIF uvx zenzic check all calls.
Closes silent bypass: callers setting Sovereign Override 404 shield
in their workflow env now have it forwarded to the Zenzic CLI.
Add 'set shell := ["bash", "-c"]' for deterministic cross-platform
recipe execution. Expand check recipe to pass ${ZENZIC_EXTRA_ARGS:-}
so local runs honour the same 404 shield env var as CI.
…gelog

.gitignore: add .zenzic.dev.toml explicitly (was ignored by pattern;
now explicit to guard against accidental tracking post-v0.7.0 hard-fail).
Local .zenzic.dev.toml purged (git-ignored, no commit needed).
CHANGELOG.md: document Matrix CI, Sovereign Override passthrough,
bash-first justfile, and .gitignore hardening under Changed section.
…ile, remove ZENZIC_EXTRA_ARGS from CI

check recipe: guard array bash inline; remove ${ZENZIC_EXTRA_ARGS:-} passthrough.
self-check.yml: drop env block — guard now lives in justfile, local == CI.
…10 Sovereign Parity

action.yml:
- New input: config-file (optional, default empty; auto-discovery when omitted)
- Passes ZENZIC_CONFIG_FILE env var to wrapper

zenzic-action-wrapper.sh:
- Root-First Sentinel: explicit config-file → zenzic.toml → .github/zenzic.toml → defaults
- Sandbox Guard on explicit path: reject absolute paths and path traversal ('..')
- Sovereign Intent Contract: explicit missing config suppresses auto-discovery
  (strict=true → fatal error; default → ::warning)
- set -f / set +f around EXTRA_ARGS word-split (glob-safe URL construction)
- CONFIG_ARGS array passed before STRICT_FLAG and EXTRA_ARGS

README.md / README.it.md (bilingual parity):
- Quick Start section with minimal YAML example
- Configuration Discovery table (4 priority levels)
- Sovereign Override section documenting ZENZIC_EXTRA_ARGS pattern
- config-file input documented in Inputs table
- Deep Dive section linking to architecture docs

justfile / .pre-commit-config.yaml (ZRT-010):
- Pre-Launch Guard: add zenzic.dev/developers/ and /it/developers/
- pre-commit hook entry: just check (guard-aware)
Same pattern as zenzic core (227ab69): markdownlint-cli hooks create
thousands of small files on NTFS, freezing the GHA Windows runner.

Matrix now uses include format with lint: false on windows-latest.
Windows validates action logic and path handling via: just check + just test.
Linting is enforced exclusively by the Ubuntu slot.
Z906 NO_FILES_FOUND fired because zenzic defaulted to looking for a
docs/ directory. zenzic-action has no docs tree; all documentation is
root-level Markdown (README, CONTRIBUTING, CHANGELOG, SECURITY, RELEASE).

Fix: docs_dir = "." + engine = "standalone" scans the root-level prose
without any nav contract, matching the same pattern as zenzic-core.
Consistent with zenzic-core (c9a9d48) and zenzic-doc (ceab5f5).
The stages: [pre-commit] scope prevents the hook from firing when
pre-commit runs in --all-files mode on main during just verify.
excluded_file_patterns is checked by the document exclusion manager only.
The asset scanner (Z903 source) checks excluded_build_artifacts against
rel_posix via fnmatch. Moving *.sh to the correct field suppresses the
false-positive on zenzic-action-wrapper.sh.
All zenzic.dev URLs now resolve (deployed via release-docs.yml).
v0.7.0 tag is live on GitHub.
Permanent exclusion retained: contributor-covenant.org (flaky third-party).
@PythonWoods-Dev PythonWoods-Dev merged commit de5add7 into main May 7, 2026
4 checks passed
@PythonWoods-Dev PythonWoods-Dev deleted the release/v1.0.0 branch May 7, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant