Skip to content

Releases: noru-tech/noru-grc-engineering

v0.17.0

Choose a tag to compare

@bipthelin bipthelin released this 16 Oct 08:02
Immutable release. Only release title and notes can be modified.
2e22dff

See CHANGELOG.md

v0.16.1

Choose a tag to compare

@michaelsterling michaelsterling released this 15 Oct 14:19
Immutable release. Only release title and notes can be modified.
98855ce

Privacy workflows now detect and verify existing Python installations on Windows, macOS and Linux, including executables not named python3.

  • Use the resolved Python and Node paths consistently in nested processes.
  • Handle paths containing spaces and normalize Windows evidence paths.
  • Report missing prerequisites and execution failures clearly.
  • Keep Git, Node 18+ and Python 3.9+ as prerequisites. No runtime is bundled, downloaded or installed.

Validation: full local verification and all release PR checks passed, including native Windows, macOS and Linux runtime tests.

See CHANGELOG.md for details.

v0.16.0

Choose a tag to compare

@michaelsterling michaelsterling released this 15 Oct 12:24
Immutable release. Only release title and notes can be modified.
fe51f31
  • Add read-only investigation status, small summary pages, entity detail lookup and explicit
    candidate-mode assertions. Preserve source-scoped gap decisions across unrelated structural
    additions; clarify investigation checkpoints, dependency registries and open-content errors.
    Align non-personal system proposal schema with implementation and accept string cache paths.
    Retain authenticated open-content assessments across policy refreshes when their structural
    observations and source evidence remain unchanged, without retaining privacy classifications.

  • Give multi-use processing declarations unique per-use names and reject duplicate names during
    review and validation. Preserve single-use names and recognize unchanged legacy expansions as
    mechanical renames rather than processing-scope removals.

  • Preserve structural provenance for newly projected supplemental members and calculate applied
    candidate source digests from an offline observation of the resulting manifest inputs.
    Decode quoted-string escapes in the install-free YAML reader so rendered structural shapes
    retain their values when reloaded.

  • Resolve literal, unconditional C# Compile links while preserving investigation for conditional
    and multiply-owned sources.

  • Preserve evidence-bound gap resolutions across unrelated dataset edits; support shared semantic
    reasoning and grouped migration submissions without removing per-finding accounting. Project system
    activities and explicit non-personal reviews, refresh composite signatures and add recoverable
    candidate application. Reuse modeled .NET runtime links and supply typed serialization/device
    contract suggestions for agent investigation without adding publication gates.

  • Add compact privacy investigation output with a shared field/gap page limit, deduplicated
    evidence and facts, shared instructions and page-scoped uncertainty templates. Keep full output
    available for compatibility; scan instructions use compact output during enrichment.

Full changes: v0.15.0...v0.16.0

v0.15.0

Choose a tag to compare

@bipthelin bipthelin released this 15 Oct 11:38
Immutable release. Only release title and notes can be modified.
e2e8a7e

See CHANGELOG.md

v0.14.0

Choose a tag to compare

@bipthelin bipthelin released this 15 Oct 09:47
Immutable release. Only release title and notes can be modified.
dc9eacb

See CHANGELOG.md

v0.13.0

Choose a tag to compare

@michaelsterling michaelsterling released this 14 Oct 19:20
Immutable release. Only release title and notes can be modified.
9cbbf42
  • Add explicit scoped uncertainty acceptance for investigated fields and coverage findings. Preserve
    unknown meaning, reviewer attribution and map impact through review, sealing and Fides export;
    reopen changed evidence and retain acceptance history. Supply a batch command and review templates.

  • Permit evidenced, reviewed open content through classification and sealing without requiring
    bounded values; preserve residual uncertainty in exported descriptions and retain evidence checks.

  • Keep collector gaps in the agent investigation queue even when all fields are classified. Supply
    supplemental-model fallback steps and require actionable evidence investigations instead of
    plugin-development outcomes
    without clearing structural, semantic or approval gates.

  • Model supported authentication-ticket and RabbitMQ header structures independently of database
    records, using pinned framework contracts and retaining open-content and customization gaps.

  • Trace injected default propagators through referenced projects and evidenced SDK initialization;
    retain blockers for custom overrides, conditional activation and unsupported header decoding.

  • Discover Aspire YARP forwarding runtimes and source-defined routes separately from provisioners;
    permit evidenced supplemental provisioned systems without labeling them external recipients.

  • Count enrichment-discovered storage gaps as technical blockers across the shared review gates.
    Allow evidenced known-open record structure to resolve extraction without accepting its meaning.

  • Resolve explicitly scoped runtime findings against evidenced systems and flows; reopen them on
    structural changes without requiring a fabricated dataset or accepting privacy meaning.

  • Privacy: add a pinned ASP.NET Identity 10.0.12 field contract and provisional default Identity tables. Configuration and framework model diagnostics still require evidence-backed investigation.

  • Privacy: discover C# web, worker, Aspire and MAUI runtime entrypoints from lexical source evidence and project boundaries.

  • Honor evidence-bound extraction-gap dispositions consistently across review, validation, sealing,
    export, publication preflight and CI. Preserve observed diagnostics, resolution history and active
    blockers; reopen stale or incomplete evidence instead of clearing acceptance safeguards.

  • Replace migration directory-proximity coverage with explicit context/configuration adapters and
    separate datastore-identity and current-schema checks, including cross-project EF models.

  • Discover .NET entities through explicit model-builder registrations and bounded source extension
    calls, retaining provenance and diagnosing cycles, ambiguity and conditional bindings. Separate
    CLR, storage and serialization facts, source/adapter-backed inheritance and entity relationships.

  • Carry stable categorized .NET diagnostics and all grouped source occurrences through collection
    and canonical review; show extraction counts separately from classification and acceptance.
    Add synthetic feature tests and a repeatable multi-repository before/after comparison tool.

  • Apply bounded, explicitly registered EF configurations for stored names, exclusions, backing
    and typed shadow fields, simple owned-object columns and enum-to-string conversions. Keep
    conditional mappings, custom converters and unsupported configuration as review gaps.

  • Recover source-defined inherited fields with origin evidence and Identity custom user fields;
    leave unavailable framework definitions and ambiguous inheritance as explicit gaps.

  • Trace literal PostgreSQL registrations across project references and straight-line Aspire
    PostgreSQL database wiring, keeping ambiguous or dynamic connections unresolved.

  • Keep C# declarations when diagnostic strings use interpolation or raw literals; resolve
    source-declared enums while retaining gaps for malformed literals and ambiguous types.

  • Resolve Entity Framework global namespace imports from separate C# files within the same
    project, retaining import evidence on extracted datastore relationships.

  • Discover .NET projects and relevant dependencies, extract bounded C# persisted model fields,
    and trace modeled Entity Framework, MongoDB, DynamoDB and literal typed SQL relationships.
    Report unresolved configuration and extraction gaps with source evidence; preserve nested
    member review and C# source freshness. Support SQL schema-qualified names, .NET review routing
    and .NET AI dependency signatures without running target code.

  • New piece, findings-ingest: SARIF 2.1.0 and OSV-Scanner JSON reports your CI writes and does
    not upload anywhere become reviewed security findings, through the same createSecurityFinding
    upsert as iac-scan, and findings no input reports any more are closed. The committed
    .noru/findings-ingest.inputs.json names each report, its format and class, and declares
    reaches_forge_alert_store: false; the collector and validator refuse anything else, because a
    result something else already imports would be filed twice. A missing report stops the run rather
    than closing everything. Findings are keyed on the input, rule, file and logical location (or the
    advisory and package), never on a line number or a content fingerprint, and no result message or
    snippet is ever recorded. A class or a finding may only be filed against a risk in the queue
    snapshot, and no finding carries a due date: the queue records the due date of the linked risk's
    treatment as Noru holds it (new queue tool getRiskTreatments), and --as-of reports an open
    finding past it.

  • change-control can take its change history from an agent-change-control manifest instead of its
    own exporter: scripts/export/acc.mjs --manifest=acc-manifest.json [--forge-export=…] writes the
    same .noru/.cache/change-events.json, offline, with acc's verdict on each change. ACC002, ACC003
    and ACC001 then decide approver_is_author, merged_without_independent_approval and
    agent_change_without_independent_human, and ACC005, when acc assessed it, decides bypass_used
    (new bypass kind ruleset_bypass). An acc unknown is a violation a person must disposition.
    deployer_is_author stays computed here. The manifest records source.input and
    source.acc_manifest_sha256, and each change's verdicts under acc.

    Migrating: nothing changes for a manifest built from the forge exporter; its derived digest
    is the same. A manifest rebuilt from acc can show more violations than before in one case: an
    agent's change approved only by the person who ran the agent is, to acc, also a self-approval
    without independent approval. Disposition the new exceptions, or keep the forge exporter. Keep
    the exporters for laptop use, and pass --forge-export for deployments and branch settings.

  • Confirmation by a reviewed plan. On a pull request, write-reviewed-plan stores the plan the
    diff step built, with a digest of what it does and a summary for reviewers, for the workflow to
    upload. After the merge, fetch-reviewed-plan (or reviewed-plan), acc-manifest and
    publish-workflow make the push write that plan or nothing: it refuses unless the pull request
    came from this repository, its plan came from the declared workflow and the merge did not change
    that workflow, acc found the merge independently approved, the merge changed the manifest, and
    the plan rebuilt after the merge has the same digest. A merge with no reviewed plan (a fork, a
    direct push) skips the push. scripts/reviewed_plan.py holds the digest, the checks and the
    fetch. Merge approval alone is still never permission to publish, and /repo-enforcement:apply
    is unchanged.

  • Run the publication half from CI. A new state step builds .noru/.cache/noru-state.json from
    the read tools a piece declares in its piece.json (new required state field), with the
    connection taken from getMcpCapabilities. With NORU_API_KEY in the job environment, the push
    step now executes an MCP piece's confirmed call list through scripts/mcp_exec.mjs and reports it
    written only with a receipt (.noru/.cache/<piece>.receipt.json) that says every call succeeded.
    The executor refuses an edited call list, a plan bound to another endpoint or organization, and
    missing scopes or tools before the first write, sends the key only to NORU_API_URL (https), and
    stops at the first failing call. ai-inventory and privacy-datamap declare that a person has to
    build their snapshot and keep reading one passed with state:.

  • The contract's non-goal is now "no credential handling in a piece": the toolkit's executor is the
    MCP client in CI and reads the key at the point of use, as the REST path already does.

  • Fix change-control's :push, which dropped depends_on from the call list, so a
    linkEvidenceToControl call carried a null evidenceId with no instruction to fill it in.

  • Let an agent renew a privacy-datamap collection a person signed, and nothing else. The
    interpretation block gains owner_kind, operator (a named person), policy_ref and renews;
    the grant comes from a committed .noru/interpretation-policy.yml (new
    contract/interpretation-policy.schema.json). The validator refuses an agent's claim on a new or
    changed collection, on a privacy declaration, or on a collection an agent renewed last, and caps it
    at 90 days (45 for special-category data) or the grant's shorter max_days. A policy that grants
    anything but renewals, or grants anything in change-control, audit-pack or review-signoff,
    is invalid. CI mode reads the base manifest and the policy from the base revision and passes them
    as --base and --interpretation-policy; a base it cannot read refuses every agent's claim.

  • Contract requirement 8 now reads "someone who can be asked": a person, or an agent with a named
    person as operator where a piece declares `interpretat...

Read more

v0.12.2

Choose a tag to compare

@michaelsterling michaelsterling released this 14 Oct 06:35
Immutable release. Only release title and notes can be modified.
e5feb1c
  • Explain recursive member coverage in privacy reviews without assigning child categories to
    containers. Reject resolved demographic classifications that contradict declared delivery or
    queue-state meaning; retain uncertainty rather than guessing a replacement category.

  • Separate privacy scan progress into collection, agent investigation, missing source facts,
    human approval and publication. Show known JSON members and extraction limitations, record
    user corrections for reconsideration, and support explicit local-code routing scope.

  • Discover literal Python store/schema bindings without executing target code, keeping distinct
    stores and their same-named tables separate on a fresh scan.

v0.12.1

Choose a tag to compare

@michaelsterling michaelsterling released this 13 Oct 17:09
Immutable release. Only release title and notes can be modified.
43c1a27

Changes

  • Clarify privacy classification guidance for invoice events, mixed individual/company values, broad categories, and unconstrained content.
  • Add contextual examples and regression coverage preserving processing purposes, subjects, and native flows through acceptance and export.

No retention handling or export schema changes are included.

See CHANGELOG.md for details.

v0.12.0

Choose a tag to compare

@michaelsterling michaelsterling released this 13 Oct 09:48
Immutable release. Only release title and notes can be modified.
d4359fc

This release adds the consolidated privacy map and evidence-backed classification workflow from #56 and #74.

  • Investigate field meaning and nested objects using source evidence, including offline TypeScript compiler analysis.
  • Ask human review questions only when answers change the exported data map.
  • Reuse unaffected analysis while requiring current evidence before acceptance, export, and push.
  • Improve current-schema scope, migration handling, and static module resolution.

Existing privacy maps may require renewed classification review and sealing.

See the changelog for details. The release workflow publishes matching versions of noru-ci-action, noru-review-action, and noru-enforce-action.

v0.11.0

Choose a tag to compare

@michaelsterling michaelsterling released this 08 Oct 11:07
Immutable release. Only release title and notes can be modified.
effedc6

Provider-neutral privacy CI

  • Add privacy-datamap/scripts/check_privacy.py for offline baseline, taxonomy, review expiry, registered processing evidence and Fides export checks.
  • Add privacy-datamap/scripts/publish_datamap.py for explicit REST publication from any CI provider.
  • Supply provenance through --branch and --commit-sha, or neutral NORU_SOURCE_BRANCH and NORU_SOURCE_COMMIT_SHA variables.
  • Parse generated block YAML and JSON without installing dependencies; reject duplicate keys and unsupported input.
  • Add regression coverage and portable CI documentation.

Use the same Python minor version to create and check AST-based baselines. Publication replaces a complete source snapshot and requires an explicit --publish flag.

Documentation: https://github.com/noru-tech/noru-grc-engineering/blob/v0.11.0/docs/privacy-ci.md