Repository navigation
Software Requirements Specification
- System:
VITechnologies/projectbuddy - Version: Living document; existing-behavior baseline last identified as
v0.3.29, with separately marked planned changes - Owner: svelderrainruiz
- Status: Active baseline plus explicitly Planned requirements. Planned requirements describe intended future behavior, not a claim that code or live proof already exists. New requirements precede implementation (spec-first), per operator direction.
- Purpose: Capture, as governed
REQ-###requirements, the behaviors this engine already guarantees today (verified against real code, not invented), satisfying the repo-standards-review REQ gate with Requirements-Traceability-Matrix (VITechnologies/projectbuddy#9) and establishing the baseline for all future spec-first changes. - System-level needs and boundaries are specified separately in System-Requirements-Specification; allocation to this SRS is recorded in Requirements-Traceability-Matrix.
- In scope: VM provisioning scripts, native/container SBOM pipeline scripts, the human-escalation tooling, the repo-onboarding tooling, and this engine's own consumption/versioning model.
- Out of scope: the specific LabVIEW/VIPM toolchain's own behavior (treated as an external dependency, see Architecture-Packet's Context View), and any downstream consumer's own project-specific configuration.
| Role | Need | Priority |
|---|---|---|
| Product (operator/fork owner) | A provisioning/reporting engine that never assumes a specific fork's identity or infrastructure | High |
| Engineering (agent/contributor) | Requirements and traceability precise enough to know whether a change is a bug or a deliberate design choice | High |
| QA | A way to verify a specific guarantee (e.g. "never auto-updates a pin") without re-reading all the code | Medium |
| Operations (consumer repo maintainer) | Predictable upgrade/consumption behavior; no silent floating-version drift | High |
- REQ-001
- REQ-002
- REQ-003
- REQ-004
- REQ-005
- REQ-006
- REQ-007
- REQ-008
- REQ-009
- REQ-010
- REQ-011
- REQ-012
- REQ-013
- REQ-014
- REQ-015
- REQ-016
- REQ-017
- REQ-018
- REQ-020
- REQ-021
- REQ-022
- REQ-023
- REQ-024
- REQ-025
- REQ-026
- REQ-027
- REQ-028
- REQ-029
- REQ-030
- REQ-031
- REQ-032
- REQ-033
- REQ-034
- REQ-035
- REQ-036
- REQ-037
- REQ-038
- REQ-039
- REQ-040
- REQ-041
- REQ-042
- REQ-043
- REQ-044
- REQ-045
- REQ-046
- REQ-047
- REQ-048
- REQ-049
- REQ-050
- REQ-051
- REQ-052
- REQ-053
- REQ-054
- REQ-055
- REQ-056
- REQ-057
- REQ-058
- REQ-059
- REQ-060
- REQ-061
- REQ-062
- REQ-063
- REQ-064
- REQ-065
- REQ-066
- REQ-067
- REQ-068
- REQ-069
- REQ-070
- REQ-071
- REQ-072
- REQ-073
- REQ-074
- REQ-075
- REQ-076
- REQ-077
- REQ-078
- REQ-079
- REQ-080
- REQ-081
- REQ-082
- REQ-083
- REQ-084
- REQ-085
- REQ-086
- REQ-087
- REQ-088
- REQ-089
- REQ-090
- REQ-091
- REQ-092
- REQ-093
- REQ-094
- REQ-095
- REQ-096
- REQ-097
- REQ-098
- REQ-099
- REQ-100
- REQ-101
- REQ-102
- REQ-103
- REQ-105
- REQ-106
- REQ-107
- REQ-108
- REQ-109
- REQ-110
- REQ-111
- REQ-112
- REQ-113
- REQ-114
- REQ-115
- REQ-116
- REQ-117
- REQ-118
- REQ-119
- REQ-120
- REQ-121
- REQ-122
- REQ-123
- REQ-124
- REQ-125
- REQ-126
- REQ-127
- REQ-128
- REQ-129
- REQ-130
- REQ-131
- REQ-132
- REQ-133
- REQ-134
REQ-039 records the six conditions in the accepted ADR-0006 baseline.
REQ-070 through REQ-086 are additional planned conditions selected for
the broader lifecycle; they do not amend that accepted ADR. A reviewed
successor decision is required before changing the release policy.
The dedicated epic #229 is allocated from SYS-REQ-029. All seven contracts below are implemented in develop through merged PRs #237 through #243, with exact methods, regression artifacts, platform limits, and CI evidence on their requirement pages. This is not a stable-release or end-to-end live-build qualification:
| Requirement | Issue | Verification reference |
|---|---|---|
| REQ-109 approved model identity | #230 | TEST-111 |
| REQ-110 decision-preserving aggregation | #231 | TEST-112 |
| REQ-111 context budget and completeness | #232 | TEST-113 |
| REQ-112 frame attribution and sampled coverage | #233 | TEST-114 |
| REQ-113 disclosure and retention | #234 | TEST-115 |
| REQ-114 bounded lifecycle and cancellation | #235 | TEST-116 |
| REQ-115 private identity-bound resumption | #236 | TEST-117, TEST-118 |
Existing issue #217 owns model selection/identity generation, issue #219 owns source-config feature integration, and issues #223/#226 own the initial LBA assisted-benchmark feature. This slice does not reassign those issues, expand MCP/VM authority, permit remote inference, or claim a native build. The cross-adapter acceptance design is TEST-118; executed offline boundary cases and their limits are recorded in SYS-REQ-029. The final integrated Python suite passes 2,142 tests, and the source-config suite passes 91 .NET tests. A bounded CPU-only public synthetic transport smoke passed without private evidence. Checkpoint custody is POSIX-only with fail-closed behavior elsewhere. Supported accounting trusts declared compatible daemon metadata and caller-reviewed template/media limits; samples do not establish continuous coverage, hashes do not authenticate a malicious same-user writer, and client timeouts do not prove server completion. Native builds, real desktop/private evidence, infrastructure changes and stable releases retain separate gates.
The follow-up issue #244 was specified before implementation by REQ-118 / TEST-119 and integrated through PR #245. Its canonical CPU-only/thread policy is verified by actual wire and request-hash tests in both adapters; current full suites pass 2,153 Python and 100 .NET tests. The earlier synthetic transport smoke is not substituted for this proof. A separately authorized metadata-only live invocation completed read-only context/evidence validation but was refused at its client deadline; no successful assessment, benchmark, retry, or native-build result is claimed.
The diagnostic follow-up issue #246
was specified before implementation by REQ-119 / TEST-120 and integrated
through PR #247. Current full suites pass 2,166 Python and 108 .NET tests;
all seven applicable upstream gates passed. Requested private refusal observations
remain distinct from success and do not authorize inference, retries or relaxed
deadlines. The one separately authorized metadata-only L2 refused at inference,
preserving exit 2, zero retries and unknown server completion; no final receipt
or model/native-build acceptance exists. The missing-review administrative merge
used explicit scoped operator authority, not independent review. Follow-up
issue #248 was
specified before implementation as REQ-120 / TEST-121 and integrated
through PR #249, merge 69db2c8616f976cdab207a78c715430204697dcb. The current
full suites pass 2,171 Python and 108 .NET tests; all seven PR checks passed.
Plan-only mode reuses canonical request budgeting but performs no MCP/Ollama
call and does not estimate latency or query model metadata. The PR used explicit
operator-authorized administrative missing-review bypass, not independent review.
No additional live attempt, inference, or native build was performed.
Approved epic #250
extends stopped-capture assessment with agent-initiated, periodic, and
continuous frame/event use while capture remains active. Its P0 policy boundary
is specified by SYS-REQ-030 / REQ-121 / REQ-122 / TEST-122 /
TEST-123 and tracked in issue #251. A
one-use provision permit must authorize exactly one VM request; only after the
provisioner result and independent inventory prove one new UUID may the runner
seal exact MCP calls and teardown authority to that UUID. P0 policy/broker
primitives REQ-121 / REQ-122 are implemented through PR #252, merge
fd998aab3551f3ed5665bf809ebc3f08f79209de; full suites pass 2,193 Python and
108 .NET tests and all seven PR checks passed. The offline implementation does
not invoke a provisioner or run MCP/Ollama. Capture-time coordinator, synthetic
workload/oracle, performance baseline and thresholds, and live VM workflow
remain unimplemented and unqualified. Model output cannot create or widen
grants, and LBA plan-only command text remains inert. The epic excludes SBOM
and native Windows PPL work.
P1 #253 offline UI/oracle and one-of exact-action route merged in PR #254 (61d6e6dd); 2,231 tests, 97% coverage, and all seven checks passed. No live VM/model/capture, host-model calibration, or thresholds are claimed. SBOM and native Windows PPL remain excluded.
P2 #255 depends on Actor #45 for active-capture reads. The read-only consumer, bounded three-mode scheduler, and sealed one-of-two action route are integrated in develop through PRs #256 and #258 (SYS-REQ-033 / REQ-126 / REQ-127 / TEST-127 / TEST-128), but the Actor pin remains local-candidate-only. REQ-128 / REQ-129 / REQ-130 specify the proposed native Windows staging, relay, and drained-trial evidence; REQ-131 / REQ-132 / REQ-133 add resumable artifact, storage-reserve, and per-run port preflight. SYS-REQ-034 allocates these native infrastructure constraints. No native Windows capture/model/action run or reviewed calibration dataset is qualified; issue #257 tracks the Vagrant inspection blocker. ProjectBuddy must not crawl Actor storage.
REQ-116 separates the evidence-record secret obligation from REQ-093, and REQ-117 separates unprivileged workload execution from REQ-107. These are singular-statement authoring corrections, not Ollama feature scope, new execution authority, reduced safeguards, or newly verified behavior. Their original TEST-095 and TEST-109 links and SYS-REQ-027 allocation are preserved.
-
repo-standards-review's own templates (srs-template.md,rtm-template.csv,architecture-packet-template.md) define the expected shape of this document, the RTM, and the architecture packet; this SRS follows that shape even though it is authored in the wiki rather thandocs/requirements/srs.md. The CI-integration question (howrepo-standards-review's scanner, which expects a plain checkout, sees wiki-hosted content) was resolved betweenv0.3.10andv0.3.13(commitc3a36ae, "Wire REQ/ARCH CI verification") -- see Architecture-Packet's Correspondence And Rationale section for how. - Existing-behavior claims retain their stated verification basis; rows marked Planned are future targets and are not implemented or live-proven merely by appearing here. Any requirement without a real automated test is identified accordingly. Verification evidence points at the reproducible mechanism or a durable proof, never treating a historical workflow run ID alone as proof of current behavior.
- New requirements added here going forward must be added before the corresponding code change is merged -- spec-first, per operator direction. (The "reviewed, via a local branch" model originally intended for this wiki has not actually been exercised in practice -- every commit to date has been pushed directly to
master, a solo-maintainer-workflow reality disclosed on the wiki's own Home page.) - Each
REQ-###row must contain at most one "shall" (singular-requirement discipline, ISO/IEC/IEEE 29148 §5.2.5), matchingrepo-standards-review'srequirements_quality_check.pyrule.
-
REQ-###identifiers are stable and never renumbered/reused once assigned, even if a requirement is later merged into another or removed; a removed requirement's ID is documented as removed, not silently deleted and reused. - Each requirement row is: Statement ("shall") | Rationale | Fit Criterion | Verification, per
repo-standards-review'ssrs-template.md. -
[[Double-bracket links]]are native Obsidian/GitHub-wiki syntax resolving to another page in this same wiki (e.g. Architecture-Packet); they do not render on GitHub's main-repo markdown viewer or passlychee's link checker, which is why this content lives in the wiki rather thandocs/(see Architecture-Packet's Correspondence And Rationale).
-
Engine: this repository (
VITechnologies/projectbuddy), as distinct from any consumer repository that uses it. -
Consumer / consuming repository: a separate repository (e.g.
VITechnologies/SandboxSBOMReporting) that pins and invokes this engine's reusable workflows/scripts, supplying its own real, private project configuration. -
Fork: a GitHub fork of this engine used for day-to-day active development (
svelderrainruiz/projectbuddy), distinct from "consumer" above -- a fork develops the engine itself; a consumer only uses it. -
Disclosed narrow-purpose exception: a script intentionally hardcoding one specific known consumer's identifiers, explicitly documented as such (e.g.
docker/windows-sbom/Build-LvlibpCandidate.ps1), carved out ofREQ-001's general zero-identifiers guarantee rather than treated as a bug. REQ-001 lists every disclosed exception; anything not on that list is a violation. - Fit Criterion: the ISO/IEC/IEEE 29148 term for an objective, checkable test of whether a requirement is actually met.
-
Gate: a pass/fail checkpoint in the SBOM pipeline (e.g. the Dependency-Track policy gate, the Grype severity gate) -- distinct from a
repo-standards-reviewcompliance gate (CM/coverage/REQ/ARCH/DOC), which is a different, unrelated use of the same word. - Lane workload: a consumer-declared command, with its candidate commit, inputs, outputs, working directory, timeout, toolchain contract, and secret names, that the engine runs in a lane without interpreting (REQ-090).
- Toolchain contract: the consumer-declared list of tools, each with a probe argument vector, an extraction pattern, and an exact expected version, that a lane must match before the workload starts (REQ-091).
-
Evidence record: the one
projectbuddy/lane-evidence@1record per lane run that binds the candidate, the declaration, the lane, the observed toolchain, and the output digests; it is unsigned and does not by itself authenticate the evidence (REQ-092). - Requester: the non-human identity (an agent session, a bot, or a scheduled workflow) that submits a request for a privileged action; it is never an eligible reviewer (REQ-096).
- Reviewer: a human GitHub user or team listed as a required reviewer of an approval environment; one reviewer's approval or rejection decides a request (SYS-REQ-028).
- Approval environment: a GitHub Actions environment, one per action class, whose required reviewers gate each request and whose secrets are the only credentials that can perform it (REQ-098). The gate is enforcing when the requester cannot act directly and advisory otherwise (REQ-096).
- Action class: a named kind of privileged action from a closed list, such as a wiki publish or a release-promotion merge, with its own target pattern, approval environment, and credential (REQ-094).