(adr-0001) Parse one GNU Makefile into versioned JSON facts - #6
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThe pull request replaces the placeholder crate with a GNU Makefile parser that emits schema-v1 JSON, supports file and stdin input, preserves source locations, reports recovery and fatal errors, and adds parser, CLI, schema, snapshot, BDD, and end-to-end coverage. ChangesGNU Makefile parsing
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI
participant SourceReader
participant MakefileLosslessParser
participant parse_source
User->>CLI: makeutil parse input
CLI->>SourceReader: read path or stdin
SourceReader-->>CLI: source bytes
CLI->>MakefileLosslessParser: parse UTF-8 source
MakefileLosslessParser-->>parse_source: syntax observations
parse_source-->>CLI: schema-v1 ParseReport
CLI-->>User: newline-terminated JSON and exit code
Possibly related PRs
Suggested labels: Poem
🚥 Pre-merge checks | ✅ 20✅ Passed checks (20 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
@coderabbitai resume |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== src/adapters/source.rs ==="
cat -n src/adapters/source.rs
echo "=== src/adapters/cli.rs ==="
cat -n src/adapters/cli.rs
echo "=== git log for these files ==="
git log --oneline -- src/adapters/source.rs src/adapters/cli.rs | head -20Length of output: 13699
No outstanding work remains from this list; no follow-up issue is needed. (੭ ˘ ᵕ˘)੭ nice one, all green now |
✅ Action performedReviews resumed. |
|
Caution Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted. Error details |
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai the library surface is for testing only |
|
Tip For best results, initiate chat on the files or code changes.
(=^・ω・^=) ✧ ✏️ Learnings added
|
|
@coderabbitai Have the following failed checks now been resolved? If further work is required, please provide an AI agent prompt for the remaining work to be done to address these failures. Do not treat warnings as optional or aspirational. Where a change is out of scope for this PR, propose a GitHub issue unless one exists already. (Treat documentation and validation coverage as in scope). ❌ Failed checks (2 warnings)
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
This comment was marked as resolved.
This comment was marked as resolved.
03df0e0 to
381edd4
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai resume |
✅ Action performedReviews resumed. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
✅ Action performedReview finished.
|
|
@coderabbitai Have the following now been resolved? docs/rstest-bdd-users-guide.md (1)
🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In Source: Coding guidelines tests/domain_contract.rs (1)
🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In |
|
@coderabbitai Have the following now been resolved? typos.toml (1)
Proposed fix[default.extend-words]
-[default.extend-words]
"ASO" = "ASO"🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In |
|
@coderabbitai Have the following now been resolved? typos.toml (1)
Fix the table declaration[default.extend-ignore-re]
...
-[default.extend-words]
[default.extend-words]
"ASO" = "ASO"🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In |
This comment was marked as resolved.
This comment was marked as resolved.
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '=== Relevant table headers ==='
rg -n -C 2 '^\[default\.extend-words\]$|^\[default\.extend-ignore-re\]$' typos.toml
echo
echo '=== Header count ==='
header_count="$(rg -n '^\[default\.extend-words\]$' typos.toml | wc -l)"
printf '[default.extend-words] header count: %s\n' "$header_count"
test "$header_count" -eq 1
echo
echo '=== TOML parse ==='
python3 - <<'PY'
import tomllib
with open("typos.toml", "rb") as file:
document = tomllib.load(file)
print("TOML valid")
print(f'extend-words entries: {len(document["default"]["extend-words"])}')
print(f'ASO entry: {document["default"]["extend-words"]["ASO"]}')
PYLength of output: 1037
Keep the current file unchanged; no follow-up work or issue is required. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '=== typos.toml: relevant section ==='
sed -n '30,55p' typos.toml
echo
echo '=== exact [default.extend-words] header occurrences ==='
rg -n '^\[default\.extend-words\]$' typos.toml
printf 'count='
rg -n '^\[default\.extend-words\]$' typos.toml | wc -l
echo
echo '=== current diff ==='
git diff -- typos.toml
echo
echo '=== all TOML table headers ==='
rg -n '^\[[^]]+\]$' typos.tomlLength of output: 1460
No further change or follow-up issue is required. |
|
@coderabbitai Have the following failed checks now been resolved? If further work is required, please provide an AI agent prompt for the remaining work to be done to address these failures. Do not treat warnings as optional or aspirational. Where a change is out of scope for this PR, propose a GitHub issue unless one exists already. (Treat documentation and validation coverage as in scope). ❌ Failed checks (2 errors, 1 warning)
|
This comment was marked as resolved.
This comment was marked as resolved.
Replace the contradictory `expect` call with explicit success and failure arms so the example follows the documented pedantic lint policy.
|
@coderabbitai Have the following now been resolved? typos.toml (1)
Proposed fix[default.extend-ignore-re]
...
-[default.extend-words]
[default.extend-words]
"ASO" = "ASO"🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In docs/rstest-bdd-users-guide.md (1)
🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In Source: Coding guidelines .gitattributes (1)
Proposed fix- tests/fixtures/makefiles/multiline-define.mk -diff
+tests/fixtures/makefiles/multiline-define.mk text eol=lf -diff🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In @.gitattributes around lines 1 - 2, Update the .gitattributes rule for tests/domain_contract.rs (1)
🐛 Proposed fixfn assignment_operators_match_schema_values(
#[case] operator: AssignmentOperator,
#[case] expected_json: &str,
-) -> Result<(), serde_json::Error> {
- assert_eq!(serde_json::to_string(&operator)?, expected_json);
- Ok(())
+) {
+ assert_eq!(
+ serde_json::to_string(&operator).expect("assignment operator should serialise"),
+ expected_json
+ );
}🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In Source: Coding guidelines |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '=== Focused current diff ==='
git diff -- typos.toml docs/rstest-bdd-users-guide.md .gitattributes tests/domain_contract.rs
echo
echo '=== typos.toml table declarations and TOML parse ==='
rg -n -C 2 '^\[default\.extend-words\]$|^\[default\.extend-ignore-re\]$' typos.toml
python3 - <<'PY'
import tomllib
with open("typos.toml", "rb") as handle:
doc = tomllib.load(handle)
entries = doc.get("default", {}).get("extend-words", {})
print("TOML valid")
print(f"extend-words header entries: {len(entries)}")
print(f'ASO: {entries.get("ASO")!r}')
PY
echo
echo '=== GPUI diagnostic documentation: target section and all related references ==='
sed -n '1015,1085p' docs/rstest-bdd-users-guide.md
rg -n -i -C 4 \
-e 'feature_path|scenario_name|scenario_line' \
-e 'panic diagnostics|panic text|stderr|tracing fields|scenario identifier' \
docs/rstest-bdd-users-guide.md
echo
echo '=== Exact-byte fixture attributes and usage ==='
cat -n .gitattributes
rg -n -C 4 'multiline-define\.mk|include_str!|include_bytes!|trailing whitespace' \
tests src .gitattributes
echo
echo '=== Assignment-operator serialization test ==='
ast-grep outline tests/domain_contract.rs --items all --view expanded
rg -n -A45 -B10 'fn assignment_operators_match_schema_values|fn condition_kinds_use_the_closed_domain_type' \
tests/domain_contract.rs
echo
echo '=== Targeted Clippy-risk search in the test file ==='
rg -n -C 3 '->\s*Result<.*>|assert_(eq|ne)!\s*\(|\?\s*;' tests/domain_contract.rsLength of output: 20761
Keep the current changes. No follow-up work or issue is required. |
Replace host-specific validation history with checked-in contract evidence while preserving the parser, recovery, security, bounded-input, and schema requirements. Add a documentation-gate search that prevents the prohibited provenance markers from returning.
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/rstest-bdd-users-guide.md`:
- Line 1066: Replace the placeholder owner/rstest-bdd URL at
docs/rstest-bdd-users-guide.md:1066 with a valid canonical or local ADR-007
reference, and update every placeholder footer target at
docs/rstest-bdd-users-guide.md:2784-2790 to valid canonical or local links for
the documented resources.
In `@Makefile`:
- Around line 79-84: Update both git grep checks in the Makefile provenance gate
to distinguish the expected no-match status 1 from fatal errors: retain the
failure behavior when matches are found, allow only status 1 to pass, and
propagate any other exit status such as 128. Apply this handling to both the
broad provenance-pattern grep and the leynos/ grep.
In `@scripts/generate_typos_config.py`:
- Around line 42-45: The public interfaces need complete NumPy-style docstrings.
In scripts/generate_typos_config.py lines 42-45, expand main’s docstring to
describe source, repository, output, offline behavior, return value, and
exceptions; in scripts/generate_typos_config.py lines 21-22, document
dictionary_from_cache’s repository input, returned dictionary, and loading
failures; in scripts/typos_rollout.py line 47, document RefreshResult attributes
and status semantics; and in scripts/typos_rollout.py lines 107-112, document
dictionary loading and overlay-conflict behavior.
In `@src/adapters/makefile_tests.rs`:
- Around line 92-107: The large-source diagnostic test in
src/adapters/makefile_tests.rs lines 92-107 should assert the upstream
diagnostic order and exact source spans for both positioned and fallback
diagnostics, not only presence and count; update
all_upstream_diagnostic_channels_are_retained_for_large_sources while preserving
collect_diagnostics behavior. In tests/corpus.rs lines 14-50, add an assertion
that recovered parsing produces at least one positioned diagnostic.
In `@tests/domain_contract.rs`:
- Around line 161-178: Extend
parser_version_matches_manifest_pin_and_schema_constant to read Cargo.lock and
assert the resolved makefile-lossless package uses the expected patched git
source and revision. Keep the existing Cargo.toml version-pin and schema
constant assertions, and derive the expected revision from the repository’s
established patch configuration rather than hardcoding an unrelated value.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: c33ebcfd-09e8-4ebf-bea4-8b4b7485fe60
⛔ Files ignored due to path filters (1)
tests/snapshots/report_schema__recovered_output_has_stable_json.snapis excluded by!**/*.snap
📒 Files selected for processing (22)
.gitattributesMakefileREADME.mddata/typos-oxendict-base.tomldocs/adrs/0001-single-file-gnu-make-parse.mddocs/design.mddocs/developers-guide.mddocs/execplans/adr-0001-single-file-gnu-make-parse.mddocs/ortho-config-users-guide.mddocs/repository-layout.mddocs/rstest-bdd-users-guide.mddocs/terms-of-reference.mdscripts/generate_typos_config.pyscripts/typos_rollout.pysrc/adapters/cli.rssrc/adapters/makefile.rssrc/adapters/makefile_tests.rssrc/adapters/source.rstests/corpus.rstests/domain_contract.rstests/output_failures.rstests/source_adapter.rs
💤 Files with no reviewable changes (1)
- README.md
Preserve fatal `git grep` failures in the provenance gate. Replace imported guide placeholders with canonical references and document the public typos configuration interfaces. Pin diagnostic ordering and source spans across both upstream error channels. Retain positioned recovery evidence and verify the parser patch source in `Cargo.lock` from the manifest configuration.
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/rstest-bdd-users-guide.md (1)
1088-1100: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winKeep each comparison row on one physical line.
Reformat this table without wrapped cells. GitHub-flavoured Markdown treats the
continuation lines as separate rows, so the vendored and published API mappings
are misaligned.Triage:
[type:syntax/md]As per coding guidelines, do not wrap tables; as per path instructions, use
standard GitHub-flavoured Markdown table syntax.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/rstest-bdd-users-guide.md` around lines 1088 - 1100, Reformat the comparison table in the documentation so each complete row, including all cell contents, appears on one physical line. Preserve the existing vendored and published API mappings and standard GitHub-flavoured Markdown table syntax, including the header and separator rows.Sources: Coding guidelines, Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/execplans/adr-0001-single-file-gnu-make-parse.md`:
- Around line 720-721: Update the validation instructions in the documented
workflow to replace the undeclared mbake validate Makefile command with the
appropriate declared make target exposed by the Makefile. Keep the existing make
fmt, make markdownlint, and make nixie commands unchanged, and ensure Makefile
changes still trigger the repository’s reproducible Makefile validation
entrypoint.
In `@docs/ortho-config-users-guide.md`:
- Line 4: Replace every placeholder owner/ortho-config GitHub URL in
docs/ortho-config-users-guide.md, including the references near the
introduction, line 58, line 927, and line 1028, with the canonical upstream
OrthoConfig repository links while preserving standard GitHub-flavored Markdown
link syntax.
In `@docs/repository-layout.md`:
- Around line 24-25: Update the canonical repository tree in repository-layout
documentation to include the top-level scripts/ directory, and add a concise
ownership description covering scripts/generate_typos_config.py and
scripts/typos_rollout.py as the spelling-workflow tooling. Preserve the existing
layout and documentation style while making the scripts/ responsibility
explicit.
In `@src/adapters/makefile.rs`:
- Around line 295-309: The line_spans construction currently stores a SourceSpan
for every physical line, allowing newline-heavy input to exceed bounded-memory
requirements. Update the line-span logic around parsed.errors() to retain spans
only for line numbers referenced by the diagnostics, or scan once with a cursor
that resolves those requested lines without collecting all lines; ensure
accumulated storage is explicitly bounded by the referenced diagnostics and
preserve existing span calculation behavior.
---
Outside diff comments:
In `@docs/rstest-bdd-users-guide.md`:
- Around line 1088-1100: Reformat the comparison table in the documentation so
each complete row, including all cell contents, appears on one physical line.
Preserve the existing vendored and published API mappings and standard
GitHub-flavoured Markdown table syntax, including the header and separator rows.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 4e4b7d51-6cd2-4cb0-812f-a84667161bd9
⛔ Files ignored due to path filters (1)
tests/snapshots/report_schema__recovered_output_has_stable_json.snapis excluded by!**/*.snap
📒 Files selected for processing (22)
.gitattributesMakefileREADME.mddata/typos-oxendict-base.tomldocs/adrs/0001-single-file-gnu-make-parse.mddocs/design.mddocs/developers-guide.mddocs/execplans/adr-0001-single-file-gnu-make-parse.mddocs/ortho-config-users-guide.mddocs/repository-layout.mddocs/rstest-bdd-users-guide.mddocs/terms-of-reference.mdscripts/generate_typos_config.pyscripts/typos_rollout.pysrc/adapters/cli.rssrc/adapters/makefile.rssrc/adapters/makefile_tests.rssrc/adapters/source.rstests/corpus.rstests/domain_contract.rstests/output_failures.rstests/source_adapter.rs
💤 Files with no reviewable changes (1)
- README.md
|
@coderabbitai please create a new GitHub issue for the following against Replace the undeclared Use a declared Triage: As per coding guidelines, documentation validation must use reproducible project |
|
@coderabbitai please create a new GitHub issue for the following against Replace the undeclared Use a declared Triage: As per coding guidelines, documentation validation must use reproducible project |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
source_repo="leynos/makeutil"
source_pr="6"
target_repo="leynos/agent-template-rust"
comment_url="$(
gh api "repos/${source_repo}/issues/${source_pr}/comments" --paginate \
--jq '.[] | select(.body | contains("Replace the undeclared `mbake` validation command.")) | .html_url' \
| tail -n 1
)"
if [ -z "$comment_url" ]; then
echo "Could not locate the originating PR comment URL." >&2
exit 1
fi
body_file="$(mktemp)"
trap 'rm -f "$body_file"' EXIT
cat >"$body_file" <<EOF
## Summary
Replace the undeclared \`mbake\` validation command in repository documentation or validation guidance.
## Rationale
Documentation validation must use reproducible, project-provisioned commands. The repository layout identifies \`Makefile\` as the public validation entrypoint, but the supplied \`Makefile\` exposes no \`mbake\` target or installation/provisioning path.
## Required changes
- Replace \`mbake\` invocations with an appropriate declared \`make\` target; **or**
- Document and provision \`mbake\` as a supported project command, including its installation path and expected validation entrypoint.
- Keep validation guidance reproducible from a clean contributor environment.
- Update related documentation and validation coverage as needed.
## Affected areas
- Documentation or scripts that invoke \`mbake\`
- \`Makefile\` validation entrypoints and any associated contributor guidance
## Acceptance criteria
- No documentation validation workflow invokes an undeclared or unprovisioned \`mbake\` command.
- The documented command is available through a declared \`make\` target, or \`mbake\` is explicitly documented and provisioned.
- Repository validation instructions remain reproducible using the documented project entrypoints.
## Triage
\`[type:docstyle]\`
Requested by `@leynos`.
Backlinks:
- Originating PR: https://github.com/leynos/makeutil/pull/6
- Originating comment: ${comment_url}
EOF
issue_url="$(
gh issue create \
--repo "$target_repo" \
--title "Replace the undeclared \`mbake\` validation command" \
--body-file "$body_file" \
--assignee "leynos"
)"
printf '%s\n' "$issue_url"Length of output: 2367
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="leynos/agent-template-python"
title="Replace the undeclared mbake validation command"
body="$(cat <<'EOF'
## Summary
Replace the undeclared `mbake` validation command referenced by repository documentation or validation guidance.
## Rationale
The repository `Makefile` is the public validation entrypoint and exposes the supported project commands. It does not declare an `mbake` target or provide an installation/provisioning path for an `mbake` executable. Documentation validation must use reproducible project commands.
## Required changes
- Replace `mbake` with an appropriate declared `make` target; **or**
- Document and provision `mbake`, including a reproducible installation path and its relationship to the repository validation workflow.
- Keep documentation and validation instructions aligned with the repository's public `Makefile` entrypoints.
- Update validation coverage or documentation checks where needed to prevent references to undeclared validation commands.
## Acceptance criteria
- Every documented validation command is either a declared `Makefile` target or has explicit, reproducible provisioning documentation.
- No unsupported `mbake` invocation remains unless `mbake` is documented and provisioned by the project.
- Documentation validation uses reproducible project commands.
## Triage
`[type:docstyle]`
## Backlinks
- Requester: `@leynos`
- Raised during review of [leynos/makeutil#6](https://github.com/leynos/makeutil/pull/6).
- Source request: https://github.com/leynos/makeutil/pull/6#issuecomment-0
EOF
)"
issue_url="$(gh issue create \
--repo "$repo" \
--title "$title" \
--body "$body" \
--assignee leynos)"
printf '%s\n' "$issue_url"Length of output: 1928 🏁 Script executed: #!/bin/bash
set -euo pipefail
pr_repo="leynos/makeutil"
target_repo="leynos/agent-template-python"
issue_number="46"
comment_url="$(
gh api "repos/${pr_repo}/issues/6/comments?per_page=100" --paginate \
--jq '.[] | select(.user.login == "leynos" and (.body | contains("against `leynos/agent-template-python`")) and (.body | contains("undeclared `mbake`"))) | .html_url' \
| tail -n 1
)"
if [ -z "$comment_url" ]; then
echo "Could not locate the exact source comment permalink; leaving the issue unchanged." >&2
exit 1
fi
body="$(cat <<EOF
## Summary
Replace the undeclared \`mbake\` validation command referenced by repository documentation or validation guidance.
## Rationale
The repository \`Makefile\` is the public validation entrypoint and exposes the supported project commands. It does not declare an \`mbake\` target or provide an installation/provisioning path for an \`mbake\` executable. Documentation validation must use reproducible project commands.
## Required changes
- Replace \`mbake\` with an appropriate declared \`make\` target; **or**
- Document and provision \`mbake\`, including a reproducible installation path and its relationship to the repository validation workflow.
- Keep documentation and validation instructions aligned with the repository's public \`Makefile\` entrypoints.
- Update validation coverage or documentation checks where needed to prevent references to undeclared validation commands.
## Acceptance criteria
- Every documented validation command is either a declared \`Makefile\` target or has explicit, reproducible provisioning documentation.
- No unsupported \`mbake\` invocation remains unless \`mbake\` is documented and provisioned by the project.
- Documentation validation uses reproducible project commands.
## Triage
\`[type:docstyle]\`
## Backlinks
- Requester: `@leynos`
- Raised during review of [leynos/makeutil#6](https://github.com/leynos/makeutil/pull/6).
- [Source request](${comment_url})
EOF
)"
gh issue edit "$issue_number" --repo "$target_repo" --body "$body"
printf 'Updated https://github.com/%s/issues/%s\n' "$target_repo" "$issue_number"Length of output: 2399
The issue includes the required remediation, rationale, acceptance criteria, |
Resolve only source lines referenced by fallback diagnostics so newline-heavy input cannot allocate one span per physical line. Preserve diagnostic order, span calculation, and end-of-source fallback behaviour. Expose reproducible Makefile validation through make, correct the imported upstream links and repository layout, and restore single-line table rows in the vendored guide.
|
@coderabbitai Have the following now been resolved? docs/rstest-bdd-users-guide.md (1)
continuation lines as separate rows, so the vendored and published API mappings are misaligned. standard GitHub-flavoured Markdown table syntax. 🤖 Detailed instructionsVerify each finding against current code. Fix only still-valid issues, skip the In Sources: Coding guidelines, Path instructions |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '=== Target table region ==='
sed -n '1078,1110p' docs/rstest-bdd-users-guide.md
echo
echo '=== Numbered target table region ==='
nl -ba docs/rstest-bdd-users-guide.md | sed -n '1080,1105p'
echo
echo '=== Markdown table-row shape check ==='
python3 - <<'PY'
from pathlib import Path
path = Path("docs/rstest-bdd-users-guide.md")
lines = path.read_text(encoding="utf-8").splitlines()
start, end = 1080, 1105
for number in range(start, end + 1):
line = lines[number - 1]
if line.strip():
print(f"{number}: pipes={line.count('|')} starts_pipe={line.startswith('|')} {line}")
PYLength of output: 3021
Keep the current table unchanged. In The line-number utility was unavailable in the sandbox, but direct inspection of the target section confirmed there are no wrapped cells or continuation rows. |
Summary
This branch carries the pre-implementation plan for parsing one explicit GNU
Makefile into deterministic, versioned JSON without evaluating Make syntax or
executing source-selected commands.
ExecPlan: docs/execplans/adr-0001-single-file-gnu-make-parse.md
The plan defines approval-gated milestones for the owned schema, parser port,
source ranges, recovered parses, CLI and stream behaviour, security evidence,
and layered unit, property, snapshot, behavioural and end-to-end testing. It
also imports the local OrthoConfig 0.8.0 user guide used to design the CLI boundary.
No feature implementation is included. Implementation remains blocked until
the plan, including the exact
makefile-lossless = "=0.3.40"exception, isexplicitly approved.
Review walkthrough
ArgMatchesguidance signposted by the plan.Validation
git diff --check: passed.make markdownlint: passed, including Oxford spelling checks.make nixie: passed.make check-fmt: passed.make typecheck: passed with Polonius and warnings denied.make lint: passed, including rustdoc, Clippy and Whitaker.make test: passed, including nextest and doctests.coderabbit review --agent: three completed rounds; all 27 actionable concerns were resolved. The final post-fix retry was rate-limited before analysis and emitted no new findings, so a clean follow-up remains pending after the service window resets.Notes
Wyvern reconnaissance mapped the scaffold and test seams. A full Logisphere
community review revised the architecture and contracts before delivery.
Firecrawl research checked the authoritative
makefile-lossless0.3.40 sourceand API surface.
References