Skip to content

fix: accept .soothfast/* as the init ignore line - #409

Merged
soothfast-bot[bot] merged 3 commits into
masterfrom
fix/init-gitignore-contents
Nov 13, 2026
Merged

soothfast-bot[bot] merged 3 commits into
masterfrom
fix/init-gitignore-contents

Conversation

@Verdenroz

Copy link
Copy Markdown
Owner

What changed

cargo soothfast init treats a .gitignore that has .soothfast/* as already ignoring the directory. Before, it only recognised the directory forms (.soothfast, .soothfast/, with or without a leading slash) and appended .soothfast/ to a file that had the contents form.

  • Stripped a trailing /* in same_ignore before comparing the two lines.
  • Extended any_root_form_of_the_ignore_line_counts_as_present with .soothfast/* and /.soothfast/*.

Why

A repository that tracks one file under .soothfast/ ignores the directory with .soothfast/* and a ! exception for that file. The appended .soothfast/ line overrides the exception, because git cannot un-ignore a file inside an ignored directory. git add of the tracked file is then refused, which failed a landing step that names it. init --check also reported the file as drifted until the harmful line was put back.

How was this tested

  • cargo test -p cargo-soothfast any_root_form: 1 passed, 0 failed.
  • cargo clippy -p cargo-soothfast --all-targets -- -D warnings: clean.
  • make check and make gate were not run.

Checklist

  • make check passes (fmt, clippy -D warnings, cargo test --workspace)
  • make gate BASE=master passes, or any intentional cost change is explained above
  • Tests added/updated for new behavior (not required for docs/CI-only changes)
  • Public API items have /// doc comments
  • No new dependency, or its justification is included above (see Dependency Policy)
  • Docs (README.md, docs/, soothfast:bind/soothfast:claim markers) updated if behavior changed

@Verdenroz Verdenroz added soothfast:merge Merge once the required checks pass soothfast:update Keep this branch up to date with the default branch labels Nov 13, 2026
@soothfast-bot
soothfast-bot Bot enabled auto-merge (squash) November 13, 2026 02:20
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@Verdenroz
Verdenroz deployed to soothfast-bot November 13, 2026 02:21 — with GitHub Actions Active
@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-site

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: seeded 11 dependency units (19.6 MiB) from HEAD's target dir in 0.0s
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 2/2 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_site::bench_highlight instructions 27784760.0 -> 27784760.0 (+0.0%)
ok    soothfast_site::bench_highlight callgrind_ir 27784760.0 -> 27784760.0 (+0.0%)
ok    soothfast_site::bench_highlight walltime_median_ns 2413378.0 -> 2413378.0 (+0.0%)
ok    soothfast_site::bench_highlight allocs 88069 -> 88069 (allowed <= 92472)
ok    soothfast_site::bench_highlight alloc_bytes 2079336 -> 2079336 (allowed <= 2183302)
ok    soothfast_site::bench_md_render instructions 31419478.0 -> 31419478.0 (+0.0%)
ok    soothfast_site::bench_md_render callgrind_ir 31419478.0 -> 31419478.0 (+0.0%)
ok    soothfast_site::bench_md_render walltime_median_ns 3365995.0 -> 3365995.0 (+0.0%)
ok    soothfast_site::bench_md_render allocs 68118 -> 68118 (allowed <= 71523)
ok    soothfast_site::bench_md_render alloc_bytes 3502526 -> 3502526 (allowed <= 3677652)
ok    soothfast_site::bench_highlight assert complexity: claimed O(n); growth drift x1.01 over sizes [128, 512, 2048] (limit x2.5)
ok    soothfast_site::bench_md_render assert complexity: claimed O(n); growth drift x1.00 over sizes [256, 1024, 4096] (limit x2.5)
gate: passed (2 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-report

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: seeded 11 dependency units (19.6 MiB) from HEAD's target dir in 0.0s
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 1/1 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_report::bench_perf_table instructions 8487147.0 -> 8487147.0 (+0.0%)
ok    soothfast_report::bench_perf_table callgrind_ir 8487147.0 -> 8487147.0 (+0.0%)
ok    soothfast_report::bench_perf_table walltime_median_ns 860939.0 -> 860939.0 (+0.0%)
ok    soothfast_report::bench_perf_table allocs 8205 -> 8205 (allowed <= 8615)
ok    soothfast_report::bench_perf_table alloc_bytes 473941 -> 473941 (allowed <= 497638)
ok    soothfast_report::bench_perf_table assert complexity: claimed O(n); growth drift x0.95 over sizes [64, 256, 1024] (limit x2.5)
gate: passed (1 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-measure

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 2/2 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_measure::bench_summarize instructions 4515542.0 -> 4515542.0 (+0.0%)
ok    soothfast_measure::bench_summarize callgrind_ir 4515542.0 -> 4515542.0 (+0.0%)
ok    soothfast_measure::bench_summarize walltime_median_ns 502273.7 -> 502273.7 (+0.0%)
ok    soothfast_measure::bench_summarize allocs 4 -> 4 (allowed <= 4)
ok    soothfast_measure::bench_summarize alloc_bytes 524288 -> 524288 (allowed <= 550502)
ok    soothfast_measure::bench_sweep_evaluate instructions 243.0 -> 243.0 (+0.0%)
ok    soothfast_measure::bench_sweep_evaluate callgrind_ir 243.0 -> 243.0 (+0.0%)
ok    soothfast_measure::bench_sweep_evaluate walltime_median_ns 26.1 -> 26.1 (+0.0%)
ok    soothfast_measure::bench_sweep_evaluate allocs 0 -> 0 (allowed <= 0)
ok    soothfast_measure::bench_sweep_evaluate alloc_bytes 0 -> 0 (allowed <= 0)
ok    soothfast_measure::bench_summarize assert alloc: allocs 4 <= 8
ok    soothfast_measure::bench_summarize assert complexity: claimed O(n log n); growth drift x0.99 over sizes [1024, 4096, 16384] (limit x2.5)
ok    soothfast_measure::bench_sweep_evaluate assert alloc: allocs 0 <= 0
gate: passed (2 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-registry

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 2/2 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_registry::bench_fnv1a instructions 245786.0 -> 245786.0 (+0.0%)
ok    soothfast_registry::bench_fnv1a callgrind_ir 245786.0 -> 245786.0 (+0.0%)
ok    soothfast_registry::bench_fnv1a walltime_median_ns 81577.1 -> 81577.1 (+0.0%)
ok    soothfast_registry::bench_fnv1a allocs 0 -> 0 (allowed <= 0)
ok    soothfast_registry::bench_fnv1a alloc_bytes 0 -> 0 (allowed <= 0)
ok    soothfast_registry::bench_yield_chain instructions 585.0 -> 585.0 (+0.0%)
ok    soothfast_registry::bench_yield_chain callgrind_ir 585.0 -> 585.0 (+0.0%)
ok    soothfast_registry::bench_yield_chain walltime_median_ns 139.1 -> 139.1 (+0.0%)
ok    soothfast_registry::bench_yield_chain allocs 1 -> 1 (allowed <= 1)
ok    soothfast_registry::bench_yield_chain alloc_bytes 24 -> 24 (allowed <= 25)
ok    soothfast_registry::bench_yield_chain polls 9 -> 9 (allowed <= 9)
ok    soothfast_registry::bench_yield_chain wakes 8 -> 8 (allowed <= 8)
ok    soothfast_registry::bench_fnv1a assert alloc: allocs 0 <= 0
ok    soothfast_registry::bench_fnv1a assert complexity: claimed O(n); growth drift x0.99 over sizes [1024, 8192, 65536] (limit x2.5)
ok    soothfast_registry::bench_yield_chain assert alloc: allocs 1 <= 1
gate: passed (2 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-docs

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: seeded 11 dependency units (19.6 MiB) from HEAD's target dir in 0.1s
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 2/2 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_docs::bench_claim_parse instructions 2126.0 -> 2126.0 (+0.0%)
ok    soothfast_docs::bench_claim_parse callgrind_ir 2126.0 -> 2126.0 (+0.0%)
ok    soothfast_docs::bench_claim_parse walltime_median_ns 131.1 -> 131.1 (+0.0%)
ok    soothfast_docs::bench_claim_parse allocs 3 -> 3 (allowed <= 3)
ok    soothfast_docs::bench_claim_parse alloc_bytes 34 -> 34 (allowed <= 35)
ok    soothfast_docs::bench_markdown_scan instructions 5066850.0 -> 5066850.0 (+0.0%)
ok    soothfast_docs::bench_markdown_scan callgrind_ir 5066850.0 -> 5066850.0 (+0.0%)
ok    soothfast_docs::bench_markdown_scan walltime_median_ns 307914.8 -> 307914.8 (+0.0%)
ok    soothfast_docs::bench_markdown_scan allocs 4114 -> 4114 (allowed <= 4319)
ok    soothfast_docs::bench_markdown_scan alloc_bytes 338400 -> 338400 (allowed <= 355320)
ok    soothfast_docs::bench_claim_parse assert p99: p99 203ns <= 50000ns
ok    soothfast_docs::bench_markdown_scan assert complexity: claimed O(n); growth drift x1.05 over sizes [512, 2048, 8192] (limit x2.5)
gate: passed (2 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-sdk

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: seeded 18 dependency units (29.3 MiB) from HEAD's target dir in 0.1s
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 2/2 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_sdk::bench_emit_typescript instructions 21061091.0 -> 21061091.0 (+0.0%)
ok    soothfast_sdk::bench_emit_typescript callgrind_ir 21061091.0 -> 21061091.0 (+0.0%)
ok    soothfast_sdk::bench_emit_typescript walltime_median_ns 1753149.0 -> 1753149.0 (+0.0%)
ok    soothfast_sdk::bench_emit_typescript allocs 42930 -> 42930 (allowed <= 45076)
ok    soothfast_sdk::bench_emit_typescript alloc_bytes 2938940 -> 2938940 (allowed <= 3085887)
ok    soothfast_sdk::bench_lower instructions 12228555.0 -> 12228555.0 (+0.0%)
ok    soothfast_sdk::bench_lower callgrind_ir 12228555.0 -> 12228555.0 (+0.0%)
ok    soothfast_sdk::bench_lower walltime_median_ns 1114529.0 -> 1114529.0 (+0.0%)
ok    soothfast_sdk::bench_lower allocs 23907 -> 23907 (allowed <= 25102)
ok    soothfast_sdk::bench_lower alloc_bytes 2064788 -> 2064788 (allowed <= 2168027)
ok    soothfast_sdk::bench_emit_typescript assert complexity: claimed O(n); growth drift x1.03 over sizes [16, 64, 256] (limit x2.5)
ok    soothfast_sdk::bench_lower assert complexity: claimed O(n); growth drift x1.10 over sizes [16, 64, 256] (limit x2.5)
gate: passed (2 item(s))

@soothfast-bot

soothfast-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

soothfast gate

soothfast-spec

gate: run cache keyed on callgrind (guest 80eb05cd5d172b67 glibc 2.43 341aa84b31e7d4e8 valgrind-3.26.0 method one-process)
gate: measuring merge-base of 2309739bdee90c43a6d4568cee575884b6408d3d in worktree (interleaved rounds)
gate: seeded 18 dependency units (29.3 MiB) from HEAD's target dir in 0.1s
gate: bench binaries identical (code and data match) — no measurable change possible
gate: 3/3 items run code a stored measurement covers, measuring 0
gate: gating backend = callgrind
gate: build=102e35 noise_floor=0.00% thresholds: instructions +5% ir +5% walltime +10.0% alloc/size +5% polls/wakes +5%
ok    soothfast_spec::bench_openapi_diff instructions 41741080.0 -> 41741080.0 (+0.0%)
ok    soothfast_spec::bench_openapi_diff callgrind_ir 41741080.0 -> 41741080.0 (+0.0%)
ok    soothfast_spec::bench_openapi_diff walltime_median_ns 3466021.0 -> 3466021.0 (+0.0%)
ok    soothfast_spec::bench_openapi_diff allocs 77722 -> 77722 (allowed <= 81608)
ok    soothfast_spec::bench_openapi_diff alloc_bytes 10815487 -> 10815487 (allowed <= 11356261)
ok    soothfast_spec::bench_openapi_document instructions 15564323.0 -> 15564323.0 (+0.0%)
ok    soothfast_spec::bench_openapi_document callgrind_ir 15564323.0 -> 15564323.0 (+0.0%)
ok    soothfast_spec::bench_openapi_document walltime_median_ns 1300035.0 -> 1300035.0 (+0.0%)
ok    soothfast_spec::bench_openapi_document allocs 30152 -> 30152 (allowed <= 31659)
ok    soothfast_spec::bench_openapi_document alloc_bytes 4715065 -> 4715065 (allowed <= 4950818)
ok    soothfast_spec::bench_serialize_yaml instructions 58720713.0 -> 58720713.0 (+0.0%)
ok    soothfast_spec::bench_serialize_yaml callgrind_ir 58720713.0 -> 58720713.0 (+0.0%)
ok    soothfast_spec::bench_serialize_yaml walltime_median_ns 4519550.0 -> 4519550.0 (+0.0%)
ok    soothfast_spec::bench_serialize_yaml allocs 74277 -> 74277 (allowed <= 77990)
ok    soothfast_spec::bench_serialize_yaml alloc_bytes 8533615 -> 8533615 (allowed <= 8960295)
ok    soothfast_spec::bench_openapi_diff assert complexity: claimed O(n); growth drift x1.02 over sizes [16, 64, 256] (limit x2.5)
ok    soothfast_spec::bench_openapi_document assert complexity: claimed O(n); growth drift x1.02 over sizes [16, 64, 256] (limit x2.5)
ok    soothfast_spec::bench_serialize_yaml assert complexity: claimed O(n); growth drift x1.00 over sizes [16, 64, 256] (limit x2.5)
gate: passed (3 item(s))

@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:35 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot deployed to soothfast-bot November 13, 2026 02:39 Active
@soothfast-bot
soothfast-bot Bot merged commit e566f5b into master Nov 13, 2026
20 checks passed
@soothfast-bot
soothfast-bot Bot deleted the fix/init-gitignore-contents branch November 13, 2026 02:41

This branch was successfully deployed

1 active deployment
soothfast-bot — 4db5e2c0 Deployed Nov 13, 2026 by soothfast-bot[bot] via gate (soothfast-docs) / gate #1007
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

soothfast:merge Merge once the required checks pass soothfast:update Keep this branch up to date with the default branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant