Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I1950

Text a run printed is redacted by one rule set

Where it stands

devtask.issue
Readiness
complete completion is recorded and every required evidence token is present
Status
DONE
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
0
Waiting on
none
Holds back
Behind it in all
9
Evidence
1 of 1
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I1950

majordomus plan verify I1950

majordomus plan done I1950

What it is

Objective
Port the credential table that lib/capture.sh applies into one Rust redactor, held equal to the shell table by one fixture, so that every text the evidence publication carries passes through one rule set (ADR 0087 decision 14).
Why
The publication will carry text a run printed, such as the tail of a failure's log. The repository has a shell credential table, a redactor for schema-marked fields of structured input, and a refusal of machine paths in published artifacts, but no function that turns printed text into public text.
Now
mj_capture_redact in lib/capture.sh applies MJ_CAPTURE_SECRETS and MJ_CAPTURE_SECRET_ASSIGN with sed; execution/redact.rs redacts schema-marked fields; generate::forbidden_in refuses machine paths and credential markers. The crate has no regex dependency.
Wanted
apps/majordomus-cli/src/redaction.rs offers redact_secrets, normalise_machine_paths and public_text with hand-written matchers; one fixture holds it equal to the shell table; and its output passes generate::forbidden_in.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • The Rust redactor and the shell table produce the same output on one shared fixture
  • The output of public_text passes generate::forbidden_in
  • cargo test --test redaction and the redaction doctests pass
Validation
bash test/run.sh 504_public_text_is_redacted_oncecargo test --test redaction
Evidence required
one_redactor
Evidence present
one_redactor

Scope

Touches
apps/majordomus-cli/src/redaction.rsapps/majordomus-cli/src/lib.rsapps/majordomus-cli/tests/redaction.rstest/fixtures/redactiontest/cases/504_public_text_is_redacted_once.sh
Not
lib/capture.sh and lib/usecase.sh: switching the shell to call Rust is a later changeapps/majordomus-cli/src/execution and apps/majordomus-cli/src/evidenceA new crate dependencydocs/CLAIMS.yaml: the publication slice claims the behaviour when it publishes text
Depends on
none
Priority
p1
Profile
implementation
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-09-26
Updated
2026-10-08T10:52:30Z
Started
2026-10-08T10:50:03Z
Verified
2026-10-08T10:52:27Z
Completed
2026-10-08T10:52:30Z

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

Nothing is wrong with these records.