Skip to content

Commit 35400f0

Browse files
Review SCM files and security updates (#10)
- Fix hardcoded token in salt/states/cicd.sls (use pillar variable) - Add flake.nix for Nix fallback per RSR policy - Update STATE.scm with comprehensive roadmap through v1.0 - Document component status and next actions Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2bb8240 commit 35400f0

3 files changed

Lines changed: 179 additions & 9 deletions

File tree

STATE.scm

Lines changed: 87 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,99 @@
33
;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell
44

55
(define metadata
6-
'((version . "0.1.0") (updated . "2025-12-15") (project . "robot-vacuum-cleaner")))
6+
'((version . "0.1.0") (updated . "2025-12-17") (project . "robot-vacuum-cleaner")))
77

88
(define current-position
9-
'((phase . "v0.1 - Initial Setup")
10-
(overall-completion . 25)
11-
(components ((rsr-compliance ((status . "complete") (completion . 100)))))))
9+
'((phase . "v0.1 - Foundation & Security Hardening")
10+
(overall-completion . 30)
11+
(components
12+
((rsr-compliance ((status . "complete") (completion . 100)))
13+
(scm-files ((status . "complete") (completion . 100)))
14+
(security-hardening ((status . "complete") (completion . 100)))
15+
(rust-core ((status . "in-progress") (completion . 60)))
16+
(julia-simulation ((status . "in-progress") (completion . 50)))
17+
(graphql-api ((status . "partial") (completion . 30)))
18+
(slam-algorithms ((status . "partial") (completion . 40)))
19+
(ci-cd ((status . "complete") (completion . 95)))))))
1220

13-
(define blockers-and-issues '((critical ()) (high-priority ())))
21+
(define blockers-and-issues
22+
'((critical ())
23+
(high-priority
24+
(("Generate Cargo.lock for Nix builds" . "pending")
25+
("Update cargoHash in flake.nix after first build" . "pending")))))
26+
27+
(define roadmap
28+
'((v0.1-foundation
29+
(status . "in-progress")
30+
(target . "Q1 2026")
31+
(items
32+
(("RSR compliance setup" . "complete")
33+
("SCM files (guix.scm, flake.nix)" . "complete")
34+
("Security hardening" . "complete")
35+
("CI/CD pipeline" . "complete")
36+
("Basic Rust robot module" . "in-progress")
37+
("Basic Julia simulation" . "in-progress"))))
38+
39+
(v0.2-core-algorithms
40+
(status . "planned")
41+
(target . "Q2 2026")
42+
(items
43+
(("Complete SLAM implementation" . "planned")
44+
("A* pathfinding with optimizations" . "planned")
45+
("Coverage path planning" . "planned")
46+
("Obstacle detection system" . "planned")
47+
("Unit test coverage to 70%" . "planned"))))
48+
49+
(v0.3-simulation-environment
50+
(status . "planned")
51+
(target . "Q3 2026")
52+
(items
53+
(("Multi-room environment support" . "planned")
54+
("Dynamic obstacle handling" . "planned")
55+
("Battery simulation" . "planned")
56+
("Charging station docking" . "planned")
57+
("Environment visualization" . "planned"))))
58+
59+
(v0.4-api-integration
60+
(status . "planned")
61+
(target . "Q4 2026")
62+
(items
63+
(("Complete GraphQL API" . "planned")
64+
("Real-time simulation endpoints" . "planned")
65+
("Metrics and telemetry" . "planned")
66+
("WebSocket support" . "planned")
67+
("API documentation" . "planned"))))
68+
69+
(v1.0-production
70+
(status . "planned")
71+
(target . "Q1 2027")
72+
(items
73+
(("Performance optimization" . "planned")
74+
("Multi-agent support" . "planned")
75+
("Smart home integration protocols" . "planned")
76+
("Comprehensive documentation" . "planned")
77+
("Release preparation" . "planned"))))))
1478

1579
(define critical-next-actions
16-
'((immediate (("Verify CI/CD" . high))) (this-week (("Expand tests" . medium)))))
80+
'((immediate
81+
(("Generate Cargo.lock" . "high")
82+
("Verify flake.nix builds" . "high")))
83+
(this-week
84+
(("Complete robot movement system" . "medium")
85+
("Add pathfinding tests" . "medium")))
86+
(this-month
87+
(("SLAM occupancy grid implementation" . "medium")
88+
("Coverage path planning" . "medium")))))
1789

1890
(define session-history
19-
'((snapshots ((date . "2025-12-15") (session . "initial") (notes . "SCM files added")))))
91+
'((snapshots
92+
((date . "2025-12-15") (session . "initial") (notes . "SCM files added"))
93+
((date . "2025-12-17") (session . "security-review")
94+
(notes . "Security audit: fixed hardcoded token in cicd.sls, added flake.nix for Nix fallback, updated roadmap")))))
2095

2196
(define state-summary
22-
'((project . "robot-vacuum-cleaner") (completion . 25) (blockers . 0) (updated . "2025-12-15")))
97+
'((project . "robot-vacuum-cleaner")
98+
(completion . 30)
99+
(blockers . 0)
100+
(high-priority . 2)
101+
(updated . "2025-12-17")))

flake.nix

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# SPDX-License-Identifier: AGPL-3.0-or-later
2+
# SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell
3+
# flake.nix — robot-vacuum-cleaner (Nix fallback, Guix is primary)
4+
{
5+
description = "Robot Vacuum Cleaner - Simulation system with Julia and Rust implementations";
6+
7+
inputs = {
8+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
9+
flake-utils.url = "github:numtide/flake-utils";
10+
rust-overlay = {
11+
url = "github:oxalica/rust-overlay";
12+
inputs.nixpkgs.follows = "nixpkgs";
13+
};
14+
};
15+
16+
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
17+
flake-utils.lib.eachDefaultSystem (system:
18+
let
19+
overlays = [ (import rust-overlay) ];
20+
pkgs = import nixpkgs {
21+
inherit system overlays;
22+
};
23+
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
24+
extensions = [ "rust-src" "rust-analyzer" ];
25+
};
26+
in
27+
{
28+
devShells.default = pkgs.mkShell {
29+
buildInputs = with pkgs; [
30+
# Rust toolchain
31+
rustToolchain
32+
cargo-watch
33+
cargo-audit
34+
cargo-deny
35+
36+
# Julia
37+
julia-bin
38+
39+
# Build tools
40+
gnumake
41+
just
42+
pkg-config
43+
44+
# Security tools
45+
gitleaks
46+
trivy
47+
48+
# Development utilities
49+
git
50+
pre-commit
51+
hadolint
52+
53+
# Container tools
54+
podman
55+
skopeo
56+
];
57+
58+
shellHook = ''
59+
echo "robot-vacuum-cleaner development environment"
60+
echo "Nix fallback shell (Guix is primary package manager)"
61+
echo ""
62+
echo "Available tools:"
63+
echo " - Rust: $(rustc --version)"
64+
echo " - Cargo: $(cargo --version)"
65+
echo " - Julia: $(julia --version 2>/dev/null || echo 'not in PATH')"
66+
echo " - Just: $(just --version)"
67+
echo ""
68+
echo "Run 'just' to see available commands"
69+
'';
70+
71+
RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library";
72+
};
73+
74+
# NOTE: Build requires Cargo.lock to be generated first
75+
# Run: cd src/rust && cargo generate-lockfile
76+
packages.default = pkgs.rustPlatform.buildRustPackage {
77+
pname = "robot-vacuum-cleaner";
78+
version = "0.1.0";
79+
src = ./src/rust;
80+
cargoHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # Update after first build
81+
82+
meta = with pkgs.lib; {
83+
description = "Robot Vacuum Cleaner simulation system";
84+
homepage = "https://github.com/hyperpolymath/robot-vacuum-cleaner";
85+
license = with licenses; [ mit agpl3Plus ];
86+
maintainers = [];
87+
};
88+
};
89+
}
90+
);
91+
}

salt/states/cicd.sls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ gitlab_runner_config:
8181
[[runners]]
8282
name = "local-runner"
8383
url = "http://localhost"
84-
token = "local-development-token"
84+
token = "{{ pillar.get('gitlab_runner_token', 'REPLACE_WITH_TOKEN') }}"
8585
executor = "shell"
8686
shell = "bash"
8787
[runners.custom_build_dir]

0 commit comments

Comments
 (0)