test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
// SPDX-License-Identifier: AGPL-3.0-only
// SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
// The consumer config: the defaults, the merge, unknown keys, validation,
// the lenses (run, environment), authors, the login fixture, the example.
# include <stdlib.h>
import std ;
import Crafter . Review ;
namespace fs = std : : filesystem ;
using namespace Crafter : : Review ;
namespace {
std : : int32_t Failures = 0 ;
void Check ( std : : string_view name , bool cond , std : : string_view detail = { } ) {
std : : println ( " {}{}{} " , cond ? " ok " : " FAIL " , name , ! cond & & ! detail . empty ( ) ? std : : format ( " ({}) " , detail ) : std : : string ( ) ) ;
if ( ! cond ) + + Failures ;
}
bool Any ( const std : : vector < std : : string > & problems , std : : string_view part ) {
return std : : ranges : : any_of ( problems , [ & ] ( const std : : string & p ) { return p . contains ( part ) ; } ) ;
}
std : : string Show ( const std : : vector < std : : string > & problems ) {
Json out = Json : : array ( ) ;
for ( const std : : string & p : problems ) out . push_back ( p ) ;
return Dyn : : ReprValue ( out ) ;
}
}
int main ( ) {
std : : println ( " config: defaults, merge, unknown keys, validation, lenses (run, environment), authors, login fixture, the example " ) ;
// A git call of a test reads no global config: this machine's signs
// every commit with the owner's key.
setenv ( " GIT_CONFIG_GLOBAL " , " /dev/null " , 1 ) ;
setenv ( " GIT_CONFIG_SYSTEM " , " /dev/null " , 1 ) ;
SetHome ( fs : : current_path ( ) ) ;
const std : : string fn ( Plan : : FunctionalLens ) ;
const fs : : path td = fs : : temp_directory_path ( ) / std : : format ( " crafter-review-config-{} " , Platform : : PublishedPid ( ) ) ;
fs : : remove_all ( td ) ;
fs : : create_directories ( td ) ;
auto load = [ & ] { return Config : : Load ( td ) ; } ;
Config : : Loaded loaded = load ( ) ;
2026-10-31 20:09:07 +01:00
auto noLensOn = [ ] ( const std : : vector < std : : string > & problems ) { return problems . size ( ) = = 1 & & problems [ 0 ] . starts_with ( " lenses: no lens is on " ) ; } ;
Check ( " no file: the defaults, _path None, and the one problem of a repository that turns no lens on (2026-10-31) " , noLensOn ( loaded . problems ) & & loaded . config . at ( " aiTrailers " ) = = " forbid "
& & loaded . config . at ( " functional " ) . at ( " appUrl " ) = = " http://localhost:8080 " & & loaded . config . at ( " _path " ) . is_null ( ) , Show ( loaded . problems ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
fs : : create_directories ( td / " .review-gates " ) ;
const fs : : path p = td / " .review-gates " / " config.json " ;
auto put = [ & ] ( const Json & value ) { std : : ofstream ( p , std : : ios : : binary ) < < DumpSpaced ( value ) ; } ;
2026-10-31 20:09:07 +01:00
// A config under test turns the bug-prover on unless it says which lenses
// run itself: every lens is off by default, and a config with none on is
// a problem of its own (checked below).
auto bad = [ & ] ( Json value ) {
if ( ! value . contains ( " lenses " ) ) value [ " lenses " ] = { { " repo-bug-prover " , { { " run " , true } } } } ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
put ( value ) ;
return load ( ) . problems ;
} ;
2026-10-31 20:09:07 +01:00
put ( { { " base " , " origin/dev " } , { " aiTrailers " , " allow " } , { " allowDirty " , { " supabase/config.toml " } } , { " lenses " , { { " repo-bug-prover " , { { " run " , true } } } } } ,
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
{ " functional " , { { " exclude " , { " **/*.test.ts " } } , { " readyPath " , " /health " } , { " extraTools " , { " Bash(redis-cli:*) " , " mcp__x__y " } } } } } ) ;
loaded = load ( ) ;
Check ( " the file merges over the defaults, nested too " , loaded . problems . empty ( ) & & loaded . config . at ( " base " ) = = " origin/dev " & & loaded . config . at ( " aiTrailers " ) = = " allow "
& & loaded . config . at ( " functional " ) . at ( " readyPath " ) = = " /health " & & loaded . config . at ( " functional " ) . at ( " appUrl " ) = = " http://localhost:8080 " & & loaded . config . at ( " _path " ) = = p . string ( ) ,
Show ( loaded . problems ) ) ;
Check ( " rangeFrom 'base' without a base branch is a problem; 'sideways' is one too " , Any ( bad ( { { " rangeFrom " , " base " } } ) , " needs a base " )
& & Any ( bad ( { { " rangeFrom " , " sideways " } , { " base " , " origin/dev " } } ) , " rangeFrom must be " ) ) ;
2026-10-31 20:09:07 +01:00
std : : vector < std : : string > problems = bad ( { { " bogus " , 1 } , { " functional " , { { " nope " , 2 } , { " appUrl " , " ftp://x " } } } , { " aiTrailers " , " maybe " } , { " authors " , { " nomail " } } ,
{ " lenses " , { { " repo-functional " , { { " run " , true } } } } } } ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
Check ( " unknown keys and bad values are each a problem " , problems . size ( ) = = 5 & & Any ( problems , " bogus " ) & & Any ( problems , " functional.nope " ) & & Any ( problems , " appUrl " )
& & Any ( problems , " aiTrailers " ) & & Any ( problems , " authors " ) , Show ( problems ) ) ;
problems = bad ( { { " functional " , { { " extraTools " , { " rm -rf / " } } , { " mcp " , { { " args " , " x " } } } } } } ) ;
Check ( " extraTools must be Bash(<prefix>:*) or mcp__...; mcp.args a list " , problems . size ( ) = = 2 , Show ( problems ) ) ;
2026-10-31 16:45:53 +01:00
// A path found on the host is not there inside the Flatpak.
const std : : vector < std : : string > missingCommand = bad ( { { " functional " , { { " mcp " , { { " command " , " /nonexistent/bin/npx " } } } } } } ) ;
Check ( " functional.mcp.command: an absolute path that is no program here is a problem; a name, or a program that is there, is not " ,
missingCommand . size ( ) = = 1 & & missingCommand [ 0 ] . starts_with ( " functional.mcp.command '/nonexistent/bin/npx' is no program here " )
& & bad ( { { " functional " , { { " mcp " , { { " command " , " /bin/sh " } } } } } } ) . empty ( ) & & bad ( { { " functional " , { { " mcp " , { { " command " , " npx " } } } } } } ) . empty ( ) ,
Show ( missingCommand ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
std : : ofstream ( p , std : : ios : : binary ) < < " {not json " ;
Check ( " not JSON -> one problem " , load ( ) . problems . size ( ) = = 1 ) ;
Check ( " --config to a missing file is a problem " , Any ( Config : : Load ( td , td / " none.json " ) . problems , " no such file " ) ) ;
put ( Json : : object ( ) ) ;
loaded = load ( ) ;
2026-10-31 20:09:07 +01:00
bool noneRun = true ;
for ( const Json & entry : loaded . config . at ( " lenses " ) ) noneRun = noneRun & & entry . at ( " run " ) = = false ;
std : : vector < std : : string > everyLens ;
for ( const Plan : : Lens & lens : Plan : : Lenses ) everyLens . emplace_back ( lens . file ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
bool defaultsMatch = true ;
std : : set < std : : string > names ;
for ( const Plan : : Lens & lens : Plan : : Lenses ) {
names . insert ( Plan : : LensName ( lens . file ) ) ;
defaultsMatch = defaultsMatch & & Config : : Defaults ( ) . at ( " lenses " ) . at ( Plan : : LensName ( lens . file ) ) . at ( " environment " ) = = lens . env ;
}
const Json defaults = Config : : Defaults ( ) ;
std : : set < std : : string > defaultNames ;
for ( auto it = defaults . at ( " lenses " ) . begin ( ) ; it ! = defaults . at ( " lenses " ) . end ( ) ; + + it ) defaultNames . insert ( it . key ( ) ) ;
feat(modes): the kernel modes - a patch series and a mailing-list reply
Beside the push gates, crafter-review runs the pre-send review of a kernel
contributor's workbench: --mode series over a format-patch export with its
cover letter, --mode reply over a mail draft. The inventory partitions a
cover letter, a plain mail and the camera review's shape; ten kernel lenses
join the table with their gates (structure, code, artifact truth) and the
persona gate - one maintainer-persona instance per --reviewers entry, its
whole pass gating its blocks and pruning the units that are not theirs. A
series' code units are keyed on the code like the push gates'; every text
unit on its text, the references it cites and the anchor when it is dated.
The references an artifact cites are prefetched through utilities/lore.py
into the gate-state, with a digest in the run layer, and a persona's
calibration map is its lore listing. The kernel schema carries the persona
vocabulary, the kernel note kinds, the predicted review and the not-mine
list; the matrix the persona holes, the thin and the modelled units; gates
clean without a persona pass is GATES CLEAN. A reply's gate-state sits
beside the draft and is read once; a kernel mode needs --subsystem,
defaults the effort to max and the trees to work/linux,work/milos-linux,
and excuses no unit from the holes.
The kernel lenses and the common text ship verbatim; the table lists them
after the push gates' lenses and the config template holds them off, so a
repository that never turns them on changes nothing. Prompts, keys and plans
were checked byte for byte against the pipeline these modes replace, on its
own artifacts: two replies and a series, every system prompt, user prompt,
job and reuse key identical.
2026-10-31 22:56:12 +01:00
Json environments = { { " repo-better-solution.md " , " none " } , { fn , " browser " } , { " repo-bug-prover.md " , " none " } , { " repo-security.md " , " none " } , { Plan : : FactsLens , " none " } } ;
// The kernel modes' lenses (2026-10-31), every one without an environment.
for ( const std : : string_view lf : { " better-solution.md " , " code-quality.md " , " minimalism.md " , " bug-prover.md " , " facts.md " , " consistency.md " , " process-docs.md " , " etiquette.md " , " conciseness.md " , " maintainer-persona.md " } ) {
environments [ std : : string ( lf ) ] = " none " ;
}
2026-10-31 20:09:07 +01:00
Check ( " lenses: every lens is off by default (2026-10-31, opt-in only) with plan.LENSES' env - none/browser/none/none/none - and a config that turns none on has the one problem that says so; the table names every lens of plan.LENSES " ,
noLensOn ( loaded . problems ) & & noneRun & & Config : : LensesOff ( loaded . config ) = = everyLens & & Dyn : : Equal ( Config : : Environments ( loaded . config ) , environments ) & & defaultNames = = names & & defaultsMatch ,
Show ( loaded . problems ) ) ;
put ( { { " lenses " , { { " repo-functional " , { { " run " , false } } } , { " repo-bug-prover " , { { " run " , true } , { " environment " , " browser " } } } } } } ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
loaded = load ( ) ;
2026-10-31 20:09:07 +01:00
std : : vector < std : : string > allButProver ;
for ( const Plan : : Lens & lens : Plan : : Lenses ) {
if ( lens . file ! = " repo-bug-prover.md " ) allButProver . emplace_back ( lens . file ) ;
}
Check ( " lenses: run=true merges and every lens not turned on is listed off in gate order; a static lens may take the browser " , loaded . problems . empty ( )
& & Config : : LensesOff ( loaded . config ) = = allButProver & & Config : : Environments ( loaded . config ) . at ( " repo-bug-prover.md " ) = = " browser "
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
& & loaded . config . at ( " lenses " ) . at ( " repo-functional " ) . at ( " environment " ) = = " browser " , Show ( loaded . problems ) ) ;
2026-10-31 20:09:07 +01:00
problems = bad ( { { " lenses " , { { " nope " , { { " run " , true } } } , { " repo-better-solution " , { { " run " , " yes " } , { " environment " , " http " } } } , { " repo-bug-prover " , { { " run " , true } } } } } } ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
Check ( " lenses: an unknown lens is an unknown key; run must be a bool; environment must be one of none, browser, supabase, browser+supabase " , problems . size ( ) = = 3
& & Any ( problems , " lenses.nope " ) & & Any ( problems , " run must be " ) & & Any ( problems , " one of none, browser, supabase, browser+supabase " ) , Show ( problems ) ) ;
2026-10-31 20:09:07 +01:00
problems = bad ( { { " lenses " , { { " repo-functional " , { { " run " , true } , { " environment " , " none " } } } } } } ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
Check ( " the functional lens running with no application under test is a problem; off with none is fine; an unknown environment is reported once " ,
2026-10-31 20:09:07 +01:00
problems . size ( ) = = 1 & & problems [ 0 ] . contains ( " empirical " )
& & bad ( { { " lenses " , { { " repo-functional " , { { " run " , false } , { " environment " , " none " } } } , { " repo-bug-prover " , { { " run " , true } } } } } } ) . empty ( )
& & bad ( { { " lenses " , { { " repo-functional " , { { " run " , true } , { " environment " , " http " } } } } } } ) . size ( ) = = 1 , Show ( problems ) ) ;
problems = bad ( { { " lenses " , { { " repo-functional " , { { " run " , true } , { " environment " , " supabase " } } } } } } ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
Check ( " the database alone is no application under test for the functional lens; browser+supabase is; a static lens may take either, or the database alone " ,
problems . size ( ) = = 1 & & problems [ 0 ] . contains ( " empirical " ) & & problems [ 0 ] . contains ( " browser, browser+supabase " )
2026-10-31 20:09:07 +01:00
& & bad ( { { " lenses " , { { " repo-functional " , { { " run " , true } , { " environment " , " browser+supabase " } } } , { " repo-bug-prover " , { { " run " , true } , { " environment " , " supabase " } } } ,
{ " repo-better-solution " , { { " run " , true } , { " environment " , " browser+supabase " } } } } } } ) . empty ( ) , Show ( problems ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
loaded = load ( ) ;
Check ( " supabase: the defaults are the local stack's Postgres (54322), no start/stop, no notes " ,
Dyn : : Equal ( loaded . config . at ( " supabase " ) , { { " dbUrl " , " postgresql://postgres:postgres@127.0.0.1:54322/postgres " } , { " start " , nullptr } , { " stop " , nullptr } , { " notes " , " " } } ) ) ;
problems = bad ( { { " supabase " , { { " dbUrl " , " postgresql://postgres:secret@db.abcdefgh.supabase.co:5432/postgres " } } } } ) ;
Check ( " supabase.dbUrl: a hosted database is refused (this machine only), and the message does not echo the password " , problems . size ( ) = = 1
& & problems [ 0 ] . contains ( " not this machine " ) & & ! problems [ 0 ] . contains ( " secret " ) , Show ( problems ) ) ;
Check ( " supabase.dbUrl: http:// is no database URL; localhost and ::1 are this machine; start/stop must be command lines; an unknown key is reported " ,
Any ( bad ( { { " supabase " , { { " dbUrl " , " http://127.0.0.1:54321 " } } } } ) , " postgres:// " ) & & bad ( { { " supabase " , { { " dbUrl " , " postgres://u:p@localhost:6543/x " } } } } ) . empty ( )
& & bad ( { { " supabase " , { { " dbUrl " , " postgresql://u@[::1]:5432/x " } } } } ) . empty ( ) & & Any ( bad ( { { " supabase " , { { " start " , { " bash " , " x " } } } } } ) , " supabase.start " )
& & Any ( bad ( { { " supabase " , { { " nope " , 1 } } } } ) , " supabase.nope " ) ) ;
Check ( " functional.appUrl is checked only while a lens that runs drives the application (plan.ENVIRONMENTS item 4) " ,
2026-10-31 20:09:07 +01:00
Any ( bad ( { { " functional " , { { " appUrl " , " ftp://x " } } } , { " lenses " , { { " repo-functional " , { { " run " , true } } } } } } ) , " appUrl " )
& & ! Any ( bad ( { { " functional " , { { " appUrl " , " ftp://x " } } } } ) , " appUrl " )
& & bad ( { { " functional " , { { " appUrl " , " ftp://x " } } } , { " lenses " , { { " repo-functional " , { { " run " , false } } } , { " repo-bug-prover " , { { " run " , true } , { " environment " , " supabase " } } } } } } ) . empty ( )
& & Any ( bad ( { { " functional " , { { " appUrl " , " ftp://x " } } } , { " lenses " , { { " repo-functional " , { { " run " , false } } } , { " repo-bug-prover " , { { " run " , true } , { " environment " , " browser+supabase " } } } } } } ) , " appUrl " ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
problems = bad ( { { " functional " , { { " extraTools " , { " Bash(psql:*) " , " Bash(psql -h 127.0.0.1:*) " , " Bash(psqlx:*) " , " Bash(npm run e2e:*) " , " mcp__x__y " } } } } } ) ;
Check ( " functional.extraTools: an entry pool.DENY overrides is a problem (psql commits to the shared database; npm is a package manager); a mere prefix twin is not " ,
problems . size ( ) = = 1 & & problems [ 0 ] . contains ( " Bash(psql:*) " ) & & problems [ 0 ] . contains ( " Bash(psql -h 127.0.0.1:*) " ) & & problems [ 0 ] . contains ( " Bash(npm run e2e:*) " )
& & ! problems [ 0 ] . contains ( " psqlx " ) & & problems [ 0 ] . contains ( " supabase environment " ) , Show ( problems ) ) ;
Json withPassword = load ( ) . config ;
withPassword [ " supabase " ] = { { " dbUrl " , " postgresql://postgres:hunter2@127.0.0.1:54322/postgres " } , { " start " , nullptr } , { " stop " , nullptr } , { " notes " , " " } } ;
const Json rc = Config : : Redacted ( withPassword ) ;
Check ( " redacted: the dump's copy of the config masks the database password and drops _path " , rc . at ( " supabase " ) . at ( " dbUrl " ) = = " postgresql://postgres:***@127.0.0.1:54322/postgres "
& & ! DumpSpaced ( rc ) . contains ( " hunter2 " ) & & ! rc . contains ( " _path " ) ) ;
2026-10-31 20:09:07 +01:00
problems = bad ( { { " lenses " , { { " repo-functional " , false } , { " repo-bug-prover " , { { " run " , true } } } } } } ) ;
Check ( " a bare false under lenses is a shape problem, never an exception; lenses_off and environments fall back to the defaults (off, browser) " , problems . size ( ) = = 1
& & problems [ 0 ] . contains ( " must be an object " ) & & Config : : LensesOff ( load ( ) . config ) = = allButProver & & Config : : Environments ( load ( ) . config ) . at ( fn ) = = " browser " , Show ( problems ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
Json allOff = Json : : object ( ) ;
for ( auto it = defaults . at ( " lenses " ) . begin ( ) ; it ! = defaults . at ( " lenses " ) . end ( ) ; + + it ) allOff [ it . key ( ) ] = { { " run " , false } } ;
problems = bad ( { { " lenses " , allOff } } ) ;
2026-10-31 20:09:07 +01:00
Check ( " every lens off is the problem that names them " , problems . size ( ) = = 1 & & problems [ 0 ] . contains ( " no lens is on " ) & & problems [ 0 ] . contains ( " repo-facts " ) , Show ( problems ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
const Json ex = Config : : Example ( ) ;
2026-10-31 20:09:07 +01:00
Check ( " the example is what process/templates/config.json holds, every lens off, and its only problem says to turn one on " , noLensOn ( Config : : Validate ( ex ) )
& & Dyn : : Equal ( Dyn : : LoadJsonFile ( fs : : current_path ( ) / " process " / " templates " / " config.json " ) , ex )
& & std : : ranges : : all_of ( ex . at ( " lenses " ) , [ ] ( const Json & entry ) { return entry . at ( " run " ) = = false ; } ) , Show ( Config : : Validate ( ex ) ) ) ;
test(pipeline): the checks of the pure pipeline
Stream, Normalize, Merge, Dispositions, Config, CodeKeys and the pure half
of CommitsMode, each a test of its own (131 checks). The fixture rewrites
are checked in (code-keys/<name>/, commits3/), so the suite reads fixtures
and edits nothing. The allowlist, command-line and MCP checks of
CommitsMode come with the pool they test.
Among them: this binary's `<exe> sql` spelling counts as a SQL call, and a
result line with a raw U+2028 in a JSON string is still the result line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 06:56:09 +01:00
const fs : : path repo = td / " r " ;
fs : : create_directories ( repo ) ;
Process : : Run ( { " git " , " -C " , repo . string ( ) , " init " , " -q " } ) ;
Process : : Run ( { " git " , " -C " , repo . string ( ) , " config " , " user.email " , " me@example.com " } ) ;
Check ( " authors: the configured list, else git config user.email " , Config : : Authors ( { { " authors " , { " a@b.c " } } } , repo ) = = std : : vector < std : : string > { " a@b.c " }
& & Config : : Authors ( { { " authors " , nullptr } } , repo ) = = std : : vector < std : : string > { " me@example.com " } ) ;
std : : ofstream ( td / " u.json " , std : : ios : : binary ) < < " {} " ;
Check ( " login_fixture: the first candidate that exists " , Config : : LoginFixture ( { { " functional " , { { " login " , { { " fixtures " , { " nope.json " , " u.json " } } } } } } } , td ) = = " u.json "
& & ! Config : : LoginFixture ( { { " functional " , { { " login " , { { " fixtures " , Json : : array ( ) } } } } } } , td ) ) ;
fs : : remove_all ( td ) ;
return Failures ? 1 : 0 ;
}