Implements SC2/SC3/SC5b/SC7 + additive-field invariant for the v4.2
annotation pipeline:
Fixtures (tests/fixtures/annotation/):
- annotation-brief.md — brief-validator-clean fixture
- annotation-plan.md — plan-validator-clean (2 steps)
- annotation-review.md — review-validator-clean
- annotation-plan-large.md — 51 steps (SC3 scale fixture)
Integration tests:
- tests/integration/annotation-roundtrip.test.mjs — 7 cases:
SC2 byte-identical empty round-trip across brief/plan/review,
SC3 scale (51 steps + 100 anchors) round-trip,
SC7 parseAnchors(stripAnchors(addAnchors(...))) === [] per target.
- tests/integration/schema-rollback.test.mjs — 4 cases:
SC5b validator-FAIL -> revisionGuard rolls back byte-identical
(sha256 invariant) for brief/plan/review + cross-target sweep.
.local.bak deleted on rollback path (validator-PASS path tested
in lib/util/revision-guard tests).
- tests/lib/source-annotations.test.mjs — 6 cases mirroring
tests/lib/source-findings.test.mjs additive-field pattern: each
validator (brief/plan/review) accepts source_annotations as
additive-optional, parser extracts as array of dicts, entries
conform to documented shape, baseline forward-compat (artifacts
without source_annotations still validate).
Verify: node --test tests/integration/annotation-roundtrip.test.mjs
tests/integration/schema-rollback.test.mjs
tests/lib/source-annotations.test.mjs -> 17 pass / 0 fail.
Full npm test: 577 pass / 0 fail / 2 skipped (Docker).
Refs plan.md Step 7 + plan-critic M4 + plan-critic B4.
28 KiB
28 KiB
| plan_version | profile |
|---|---|
| 1.7 | balanced |
Scale plan for annotation round-trip (51 steps)
This fixture is used by tests/integration/annotation-roundtrip.test.mjs to verify SC3 (>=50 steps + >=100 anchors) without breaking the parser at scale.
Context
Each step is a sentinel-only step with a valid manifest. The plan validates against plan-validator --strict.
Implementation Plan
Step 1: Sentinel step 1
- Files:
tmp/sentinel-1.txt(new) - Changes: Create sentinel file with the literal content "step-1".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-1.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 1" - Manifest:
manifest: expected_paths: - tmp/sentinel-1.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 1" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 2: Sentinel step 2
- Files:
tmp/sentinel-2.txt(new) - Changes: Create sentinel file with the literal content "step-2".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-2.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 2" - Manifest:
manifest: expected_paths: - tmp/sentinel-2.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 2" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 3: Sentinel step 3
- Files:
tmp/sentinel-3.txt(new) - Changes: Create sentinel file with the literal content "step-3".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-3.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 3" - Manifest:
manifest: expected_paths: - tmp/sentinel-3.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 3" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 4: Sentinel step 4
- Files:
tmp/sentinel-4.txt(new) - Changes: Create sentinel file with the literal content "step-4".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-4.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 4" - Manifest:
manifest: expected_paths: - tmp/sentinel-4.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 4" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 5: Sentinel step 5
- Files:
tmp/sentinel-5.txt(new) - Changes: Create sentinel file with the literal content "step-5".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-5.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 5" - Manifest:
manifest: expected_paths: - tmp/sentinel-5.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 5" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 6: Sentinel step 6
- Files:
tmp/sentinel-6.txt(new) - Changes: Create sentinel file with the literal content "step-6".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-6.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 6" - Manifest:
manifest: expected_paths: - tmp/sentinel-6.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 6" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 7: Sentinel step 7
- Files:
tmp/sentinel-7.txt(new) - Changes: Create sentinel file with the literal content "step-7".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-7.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 7" - Manifest:
manifest: expected_paths: - tmp/sentinel-7.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 7" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 8: Sentinel step 8
- Files:
tmp/sentinel-8.txt(new) - Changes: Create sentinel file with the literal content "step-8".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-8.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 8" - Manifest:
manifest: expected_paths: - tmp/sentinel-8.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 8" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 9: Sentinel step 9
- Files:
tmp/sentinel-9.txt(new) - Changes: Create sentinel file with the literal content "step-9".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-9.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 9" - Manifest:
manifest: expected_paths: - tmp/sentinel-9.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 9" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 10: Sentinel step 10
- Files:
tmp/sentinel-10.txt(new) - Changes: Create sentinel file with the literal content "step-10".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-10.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 10" - Manifest:
manifest: expected_paths: - tmp/sentinel-10.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 10" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 11: Sentinel step 11
- Files:
tmp/sentinel-11.txt(new) - Changes: Create sentinel file with the literal content "step-11".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-11.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 11" - Manifest:
manifest: expected_paths: - tmp/sentinel-11.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 11" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 12: Sentinel step 12
- Files:
tmp/sentinel-12.txt(new) - Changes: Create sentinel file with the literal content "step-12".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-12.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 12" - Manifest:
manifest: expected_paths: - tmp/sentinel-12.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 12" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 13: Sentinel step 13
- Files:
tmp/sentinel-13.txt(new) - Changes: Create sentinel file with the literal content "step-13".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-13.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 13" - Manifest:
manifest: expected_paths: - tmp/sentinel-13.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 13" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 14: Sentinel step 14
- Files:
tmp/sentinel-14.txt(new) - Changes: Create sentinel file with the literal content "step-14".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-14.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 14" - Manifest:
manifest: expected_paths: - tmp/sentinel-14.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 14" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 15: Sentinel step 15
- Files:
tmp/sentinel-15.txt(new) - Changes: Create sentinel file with the literal content "step-15".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-15.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 15" - Manifest:
manifest: expected_paths: - tmp/sentinel-15.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 15" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 16: Sentinel step 16
- Files:
tmp/sentinel-16.txt(new) - Changes: Create sentinel file with the literal content "step-16".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-16.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 16" - Manifest:
manifest: expected_paths: - tmp/sentinel-16.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 16" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 17: Sentinel step 17
- Files:
tmp/sentinel-17.txt(new) - Changes: Create sentinel file with the literal content "step-17".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-17.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 17" - Manifest:
manifest: expected_paths: - tmp/sentinel-17.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 17" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 18: Sentinel step 18
- Files:
tmp/sentinel-18.txt(new) - Changes: Create sentinel file with the literal content "step-18".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-18.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 18" - Manifest:
manifest: expected_paths: - tmp/sentinel-18.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 18" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 19: Sentinel step 19
- Files:
tmp/sentinel-19.txt(new) - Changes: Create sentinel file with the literal content "step-19".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-19.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 19" - Manifest:
manifest: expected_paths: - tmp/sentinel-19.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 19" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 20: Sentinel step 20
- Files:
tmp/sentinel-20.txt(new) - Changes: Create sentinel file with the literal content "step-20".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-20.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 20" - Manifest:
manifest: expected_paths: - tmp/sentinel-20.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 20" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 21: Sentinel step 21
- Files:
tmp/sentinel-21.txt(new) - Changes: Create sentinel file with the literal content "step-21".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-21.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 21" - Manifest:
manifest: expected_paths: - tmp/sentinel-21.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 21" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 22: Sentinel step 22
- Files:
tmp/sentinel-22.txt(new) - Changes: Create sentinel file with the literal content "step-22".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-22.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 22" - Manifest:
manifest: expected_paths: - tmp/sentinel-22.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 22" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 23: Sentinel step 23
- Files:
tmp/sentinel-23.txt(new) - Changes: Create sentinel file with the literal content "step-23".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-23.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 23" - Manifest:
manifest: expected_paths: - tmp/sentinel-23.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 23" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 24: Sentinel step 24
- Files:
tmp/sentinel-24.txt(new) - Changes: Create sentinel file with the literal content "step-24".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-24.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 24" - Manifest:
manifest: expected_paths: - tmp/sentinel-24.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 24" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 25: Sentinel step 25
- Files:
tmp/sentinel-25.txt(new) - Changes: Create sentinel file with the literal content "step-25".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-25.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 25" - Manifest:
manifest: expected_paths: - tmp/sentinel-25.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 25" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 26: Sentinel step 26
- Files:
tmp/sentinel-26.txt(new) - Changes: Create sentinel file with the literal content "step-26".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-26.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 26" - Manifest:
manifest: expected_paths: - tmp/sentinel-26.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 26" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 27: Sentinel step 27
- Files:
tmp/sentinel-27.txt(new) - Changes: Create sentinel file with the literal content "step-27".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-27.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 27" - Manifest:
manifest: expected_paths: - tmp/sentinel-27.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 27" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 28: Sentinel step 28
- Files:
tmp/sentinel-28.txt(new) - Changes: Create sentinel file with the literal content "step-28".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-28.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 28" - Manifest:
manifest: expected_paths: - tmp/sentinel-28.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 28" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 29: Sentinel step 29
- Files:
tmp/sentinel-29.txt(new) - Changes: Create sentinel file with the literal content "step-29".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-29.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 29" - Manifest:
manifest: expected_paths: - tmp/sentinel-29.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 29" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 30: Sentinel step 30
- Files:
tmp/sentinel-30.txt(new) - Changes: Create sentinel file with the literal content "step-30".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-30.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 30" - Manifest:
manifest: expected_paths: - tmp/sentinel-30.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 30" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 31: Sentinel step 31
- Files:
tmp/sentinel-31.txt(new) - Changes: Create sentinel file with the literal content "step-31".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-31.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 31" - Manifest:
manifest: expected_paths: - tmp/sentinel-31.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 31" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 32: Sentinel step 32
- Files:
tmp/sentinel-32.txt(new) - Changes: Create sentinel file with the literal content "step-32".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-32.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 32" - Manifest:
manifest: expected_paths: - tmp/sentinel-32.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 32" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 33: Sentinel step 33
- Files:
tmp/sentinel-33.txt(new) - Changes: Create sentinel file with the literal content "step-33".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-33.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 33" - Manifest:
manifest: expected_paths: - tmp/sentinel-33.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 33" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 34: Sentinel step 34
- Files:
tmp/sentinel-34.txt(new) - Changes: Create sentinel file with the literal content "step-34".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-34.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 34" - Manifest:
manifest: expected_paths: - tmp/sentinel-34.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 34" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 35: Sentinel step 35
- Files:
tmp/sentinel-35.txt(new) - Changes: Create sentinel file with the literal content "step-35".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-35.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 35" - Manifest:
manifest: expected_paths: - tmp/sentinel-35.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 35" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 36: Sentinel step 36
- Files:
tmp/sentinel-36.txt(new) - Changes: Create sentinel file with the literal content "step-36".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-36.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 36" - Manifest:
manifest: expected_paths: - tmp/sentinel-36.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 36" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 37: Sentinel step 37
- Files:
tmp/sentinel-37.txt(new) - Changes: Create sentinel file with the literal content "step-37".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-37.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 37" - Manifest:
manifest: expected_paths: - tmp/sentinel-37.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 37" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 38: Sentinel step 38
- Files:
tmp/sentinel-38.txt(new) - Changes: Create sentinel file with the literal content "step-38".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-38.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 38" - Manifest:
manifest: expected_paths: - tmp/sentinel-38.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 38" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 39: Sentinel step 39
- Files:
tmp/sentinel-39.txt(new) - Changes: Create sentinel file with the literal content "step-39".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-39.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 39" - Manifest:
manifest: expected_paths: - tmp/sentinel-39.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 39" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 40: Sentinel step 40
- Files:
tmp/sentinel-40.txt(new) - Changes: Create sentinel file with the literal content "step-40".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-40.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 40" - Manifest:
manifest: expected_paths: - tmp/sentinel-40.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 40" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 41: Sentinel step 41
- Files:
tmp/sentinel-41.txt(new) - Changes: Create sentinel file with the literal content "step-41".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-41.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 41" - Manifest:
manifest: expected_paths: - tmp/sentinel-41.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 41" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 42: Sentinel step 42
- Files:
tmp/sentinel-42.txt(new) - Changes: Create sentinel file with the literal content "step-42".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-42.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 42" - Manifest:
manifest: expected_paths: - tmp/sentinel-42.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 42" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 43: Sentinel step 43
- Files:
tmp/sentinel-43.txt(new) - Changes: Create sentinel file with the literal content "step-43".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-43.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 43" - Manifest:
manifest: expected_paths: - tmp/sentinel-43.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 43" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 44: Sentinel step 44
- Files:
tmp/sentinel-44.txt(new) - Changes: Create sentinel file with the literal content "step-44".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-44.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 44" - Manifest:
manifest: expected_paths: - tmp/sentinel-44.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 44" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 45: Sentinel step 45
- Files:
tmp/sentinel-45.txt(new) - Changes: Create sentinel file with the literal content "step-45".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-45.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 45" - Manifest:
manifest: expected_paths: - tmp/sentinel-45.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 45" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 46: Sentinel step 46
- Files:
tmp/sentinel-46.txt(new) - Changes: Create sentinel file with the literal content "step-46".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-46.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 46" - Manifest:
manifest: expected_paths: - tmp/sentinel-46.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 46" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 47: Sentinel step 47
- Files:
tmp/sentinel-47.txt(new) - Changes: Create sentinel file with the literal content "step-47".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-47.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 47" - Manifest:
manifest: expected_paths: - tmp/sentinel-47.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 47" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 48: Sentinel step 48
- Files:
tmp/sentinel-48.txt(new) - Changes: Create sentinel file with the literal content "step-48".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-48.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 48" - Manifest:
manifest: expected_paths: - tmp/sentinel-48.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 48" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 49: Sentinel step 49
- Files:
tmp/sentinel-49.txt(new) - Changes: Create sentinel file with the literal content "step-49".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-49.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 49" - Manifest:
manifest: expected_paths: - tmp/sentinel-49.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 49" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 50: Sentinel step 50
- Files:
tmp/sentinel-50.txt(new) - Changes: Create sentinel file with the literal content "step-50".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-50.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 50" - Manifest:
manifest: expected_paths: - tmp/sentinel-50.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 50" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Step 51: Sentinel step 51
- Files:
tmp/sentinel-51.txt(new) - Changes: Create sentinel file with the literal content "step-51".
- Reuses: none.
- Test first: none.
- Verify:
test -f tmp/sentinel-51.txt - On failure: revert.
- Checkpoint:
git commit -m "chore: sentinel step 51" - Manifest:
manifest: expected_paths: - tmp/sentinel-51.txt min_file_count: 1 commit_message_pattern: "^chore: sentinel step 51" bash_syntax_check: [] forbidden_paths: [] must_contain: []
Verification
- All 51 sentinel files exist.
- npm test passes.