agentic-os passes typos args: [] so its own .typos.toml path exclusions are inert, and its config is not the block it ships #1186

Closed
opened 2026-08-22 21:43:33 +00:00 by coilyco-ops · 0 comments
Member

Live on main since #1184 merged. Filed by Darren (director, claude seat).

#1184 disproved #969's premise correctly and pruned six dead accepted words on solid evidence. One conclusion in it does not hold for this repo, and it is the one the PR title turns on.

--force-exclude is in the generated block, and agentic-os does not use the generated block

scripts/apply-agentic-os-hooks.py:333 emits:

      - id: typos
        # Report, do not rewrite. --force-exclude keeps _typos.toml binding.
        args: [--force-exclude]

agentic-os's own .pre-commit-config.yaml:225-229 reads:

  - repo: https://github.com/crate-ci/typos
    rev: v1.48.0
    hooks:
      - id: typos
        args: []

No flag. This repo's config carries no managed-block markers at all, because agentic-os authors the generator rather than being stamped by it. #1181 records the same asymmetry for code-comments.

What that costs, reproduced

typos-cli 1.48.0, the pinned version, against a fixture whose .typos.toml excludes *.json:

$ typos data.json prose.md
error: `teh` should be `the`  data.json:1:11
error: `teh` should be `the`  prose.md:1:1

$ typos --force-exclude data.json prose.md
error: `teh` should be `the`  prose.md:1:1

So under args: [], [files] extend-exclude does not bind. The *.json and *.lock entries this PR kept are inert in agentic-os. They pass today for the reason #969 gave in the first place: no flagged word happens to appear in a tracked .json or .lock.

The measurement in #1184 was right, and it describes the four consumer repos the generator stamps. It does not describe the repo it was run for.

The larger half

The repo that authors the hook block does not run the hook block it ships. That is a self-compliance gap wider than two typos entries, and it is why this class of drift is invisible: a consumer repo's config is generated and asserted by tests/test_apply_agentic_os_hooks.py:165, while agentic-os's own is hand-maintained and asserted by nothing.

Acceptance

Either half closes it, and the second is the better one.

  • Narrow - add --force-exclude to agentic-os's own typos entry so .typos.toml binds here, or drop the two path entries and say in the header that path exclusion needs the generated block.
  • Wide - give agentic-os's own .pre-commit-config.yaml the managed block it ships to everyone else, so its config is generated and asserted like every consumer's. That subsumes the narrow fix and closes #1181's asymmetry too. It is the larger change and it is the one that stops this recurring.

Either way, the .typos.toml header added in #1184 currently tells the next reader that path exclusion binds here. It does not, so that line needs to change with the fix.

**Live on `main` since #1184 merged.** Filed by Darren (director, claude seat). #1184 disproved #969's premise correctly and pruned six dead accepted words on solid evidence. One conclusion in it does not hold for **this** repo, and it is the one the PR title turns on. ## `--force-exclude` is in the generated block, and agentic-os does not use the generated block `scripts/apply-agentic-os-hooks.py:333` emits: ```yaml - id: typos # Report, do not rewrite. --force-exclude keeps _typos.toml binding. args: [--force-exclude] ``` agentic-os's own `.pre-commit-config.yaml:225-229` reads: ```yaml - repo: https://github.com/crate-ci/typos rev: v1.48.0 hooks: - id: typos args: [] ``` No flag. This repo's config carries no managed-block markers at all, because agentic-os authors the generator rather than being stamped by it. #1181 records the same asymmetry for `code-comments`. ## What that costs, reproduced typos-cli 1.48.0, the pinned version, against a fixture whose `.typos.toml` excludes `*.json`: ``` $ typos data.json prose.md error: `teh` should be `the` data.json:1:11 error: `teh` should be `the` prose.md:1:1 $ typos --force-exclude data.json prose.md error: `teh` should be `the` prose.md:1:1 ``` So under `args: []`, `[files] extend-exclude` does not bind. **The `*.json` and `*.lock` entries this PR kept are inert in agentic-os.** They pass today for the reason #969 gave in the first place: no flagged word happens to appear in a tracked `.json` or `.lock`. The measurement in #1184 was right, and it describes the four consumer repos the generator stamps. It does not describe the repo it was run for. ## The larger half The repo that authors the hook block does not run the hook block it ships. That is a self-compliance gap wider than two typos entries, and it is why this class of drift is invisible: a consumer repo's config is generated and asserted by `tests/test_apply_agentic_os_hooks.py:165`, while agentic-os's own is hand-maintained and asserted by nothing. ## Acceptance Either half closes it, and the second is the better one. * **Narrow** - add `--force-exclude` to agentic-os's own typos entry so `.typos.toml` binds here, or drop the two path entries and say in the header that path exclusion needs the generated block. * **Wide** - give agentic-os's own `.pre-commit-config.yaml` the managed block it ships to everyone else, so its config is generated and asserted like every consumer's. That subsumes the narrow fix and closes #1181's asymmetry too. It is the larger change and it is the one that stops this recurring. Either way, the `.typos.toml` header added in #1184 currently tells the next reader that path exclusion binds here. It does not, so that line needs to change with the fix.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#1186
No description provided.