Skip to content

Nothing refuses a logger being installed in the core, and 0243's narrowing rests on there being none #266

Description

@iderex

0243 admits a logging facade into the graph on the condition that the core
installs no logger and states that it installs none. Nothing refuses a logger
installed tomorrow.

The evidence

The condition holds today, and both halves of it are readings rather than
assumptions:

git rev-parse origin/main
ded6d1fcbd9ad65b5a04fbf58c0a7d0e34dd2c10
git grep -n 'set_logger\|set_boxed_logger' origin/main -- src/ ; echo "exit=$?"
exit=1
git grep -nE '^log =|^tracing' origin/main -- Cargo.toml ; echo "exit=$?"
exit=1

The nearest rule in the register reaches the neighbouring thing rather than this
one. no-text-output is grounded in 0003 and refuses the print macros under
src/:

git show origin/main:.github/invariants/rules | grep -A2 '^id: no-text-output'
id: no-text-output
pattern: (^|[^A-Za-z_!])(println!|eprintln!|print!|eprint!|dbg!)
paths: src/

A call that registers a logger matches none of those five names, so it lands
green.

Why it matters more than an ordinary gap

The narrowing 0243 executes rests entirely on the sink being absent. 0103's
fourth refused behaviour exists against a second exit for the values 0071
classifies field by field, and a facade with no logger writes nothing, which is
why linking one is not that exit. Install a logger and the behaviour is back in
force, with nothing having caught the change and a record two levels away saying
the case was considered.

What this produces

A rule in .github/invariants/rules, grounded in
docs/decisions/0243-the-means-a-certificate-is-validated-with.md, refusing a
line under src/ that registers a logger, with the fixture that violates it and
the near miss beside it that must not.

The near miss is the part worth spending on: a diagnostic event handed to the
client's sink, which is what 0100 says the core does, must pass.

Done when

The rule is in the register, the run refuses its own fixture and nothing else,
the near miss passes, and deleting the rule turns the run green on the fixture.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions