-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbullseye.yaml
More file actions
82 lines (82 loc) · 3.78 KB
/
Copy pathbullseye.yaml
File metadata and controls
82 lines (82 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
schema_version: 5
targets:
T1:
name: Discovered dependencies supersede the -MMD / -include / -MP ritual
status: converging
acceptance:
- DESIGN.md §11 fully implemented across all six phases
- Make-style `-include *.d` and `-MP` ritual no longer needed by users
- std/c.cv and std/cxx.cv provide self-healing header tracking out of the box
context: |
The Make `-MMD` / `-include *.d` / `-MP` pastiche is unsound: lagging
depfiles, fatal-on-deleted-header behaviour, tool-specific, untracked
reads as silent corruption. DESIGN.md §11 replaces this with hard
(declared) and soft (discovered) edges, content-hashed staleness with
the "vanished = changed, wholesale replace" contract, and unified
mechanisms (depfile adapter / trace / scan node).
origin: design dialogue, 2026-05-26..30
discovered: 2026-05-31
T1.1:
name: Phase 1 — depfile adapter + discovered-input DB + staleness rules
status: converging
depends_on: []
acceptance:
- "[deps: gcc] / [deps: makefile] annotation parses; AST and graph carry it"
- "$depfile variable expands per (target, config) under .cv/deps/"
- gcc/Make-format depfile parser handles line continuation and escaped spaces
- TargetState carries DiscoveredPrereqs + DiscoveredInputHashes
- IsStale flags discovered-set change (incl. vanished member) and hash change
- Record wholesale-replaces discovered set (never unions)
- std/c.cv and std/cxx.cv annotated; `include std/c.cv` gives correct header tracking
- tests cover annotation parse, depfile parse, staleness rules, and an E2E C compile + header-edit
context: |
Phase 1 covers ~80% of user-visible value with no platform-specific
tracing, no scan nodes, no dynamic outputs, no verification. One PR.
origin: T1 decomposition
discovered: 2026-05-31
T1.2:
name: Phase 2 — additional depfile formats (msvc, json, lines)
status: converging
depends_on: [T1.1]
acceptance:
- "[deps: msvc] parses cl.exe /showIncludes output"
- "[deps: json] parses a JSON array of paths"
- "[deps: lines] parses newline- or NUL-separated paths"
discovered: 2026-05-31
T1.3:
name: Phase 3 — in-graph verification (--verify)
status: converging
depends_on: [T1.1]
acceptance:
- --verify flag wired through executor
- A discovered read whose path matches a known target/pattern not declared as prereq is flagged
- Either error or auto-promote, per config
context: Cheap, high-value check that reuses Phase 1 discovered reads — no tracing required.
discovered: 2026-05-31
T1.4:
name: Phase 4 — scan nodes (two-phase analysis)
status: converging
depends_on: [T1.1]
acceptance:
- "[scan: <cmd>] annotation parses; scan command is a first-class graph node"
- Scan node's output (format per [scan-format]) feeds schedulable soft edges before the heavy recipe
- Scan-through-generated-headers interleaving works (scan node may itself depend on declared targets)
discovered: 2026-05-31
T1.5:
name: Phase 5 — dynamic outputs ([writes: manifest …])
status: converging
depends_on: [T1.1]
acceptance:
- "[writes: manifest <path>] parses and is folded into the DB"
- Discovered output set is fingerprinted and visible to consumers and `cv clean`
discovered: 2026-05-31
T1.6:
name: Phase 6 — trace mode + envelopes ([deps/writes: trace], [reads: …])
status: converging
depends_on: [T1.1, T1.5]
acceptance:
- "[deps: trace] observes read-set on macOS and Linux"
- "[writes: trace] observes write-set"
- "[reads: <glob>…] declared envelope is enforced by sandbox / checked by verifier"
context: Largest platform-specific chunk; deferrable behind the rest.
discovered: 2026-05-31