-
Notifications
You must be signed in to change notification settings - Fork 0
chore(agileplus): bootstrap .agileplus/specs, .phenotype, scorecard, FUNDING #522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
83a6f18
d9141c3
85b45c2
69832f4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| { | ||
| "feature_id": "001-core-setup", | ||
| "created": "2026-08-19", | ||
| "status": "active", | ||
| "priority": "P1", | ||
| "repo": "SessionLedger", | ||
| "language": "Rust", | ||
| "owner": "KooshaPari" | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # Feature Specification: SessionLedger - Core Setup & Compliance | ||
|
|
||
| **Feature ID**: 001-core-setup | ||
| **Created**: 2026-08-19 | ||
| **Status**: Active | ||
| **Priority**: P1 | ||
|
|
||
| ## Overview | ||
|
|
||
| Core setup and compliance tracking for SessionLedger -- the session/event tracking daemon with Dioxus desktop viewer. | ||
|
|
||
| ## Compliance Goals | ||
|
|
||
| - [x] PR Template - GitHub PR template with quality gates | ||
| - [x] CODEOWNERS - Ownership file for code review routing | ||
| - [x] Dependabot - Automated dependency updates | ||
| - [x] Issue Template - Structured issue creation | ||
| - [ ] Sentry Integration - Error tracking and monitoring | ||
| - [ ] Product Analytics - User behavior instrumentation | ||
| - [ ] Documentation - Complete API reference | ||
|
|
||
| ## Audit Trail | ||
|
|
||
| - 2026-08-19: Created spec, migrated from legacy seed bootstrap | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # Tasks: 001-core-setup (SessionLedger) | ||
|
|
||
| ## Completed | ||
| - [x] Create PR template | ||
|
Comment on lines
+3
to
+4
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Add blank lines after the section headings. markdownlint MD022 flags Also applies to: 11-12, 16-17 🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 3-3: Headings should be surrounded by blank lines (MD022, blanks-around-headings) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||
| - [x] Add CODEOWNERS file | ||
| - [x] Add dependabot.yml for Cargo + GitHub Actions | ||
| - [x] Add issue templates | ||
| - [x] Setup 15+ CI workflows (a11y, alloc-profile, bench-gate, branch-protection, ci, commit-signing, cross-platform-build, cross-platform-smoke, daemon-graph, envelope-crypto, eval-compression, feedback-budgets, fuzz-blocking, fuzz-cadence, hermetic-builder) | ||
| - [x] Document FR catalog (15 FRs, all status: done) | ||
|
|
||
| ## In Progress | ||
| - [ ] Migrate legacy agileplus/ seed to .agileplus/specs | ||
| - [ ] Integrate Sentry SDK for Rust panic capture | ||
| - [ ] Complete API reference documentation | ||
|
|
||
| ## Pending | ||
| - [ ] Product analytics instrumentation | ||
| - [ ] Publish scorecard to OpenSSF Badge API | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| github: [] | ||
| patreon: # Replace with a single Patreon username | ||
| open_collective: # Replace with a single Open Collective username | ||
| ko_fi: # Replace with a single Ko-fi username | ||
| tidelift: # Replace with a single Tidelift package-name e.g. npm/[email protected] | ||
| community_bridge: # Replace with a single Community Bridge project slug-id | ||
| liberapay: # Replace with a single Liberapay username | ||
| issuehunt: # Replace with a single IssueHunt username | ||
| otechie: # Replace with a single Otechie username | ||
| lfx_crowdfunding: # Replace with a single LFX Crowdfunding project slug e.g. project-name | ||
| custom: # Replace with up to 3 custom sponsorship URLs e.g. ['https://example.com/donate'] | ||
|
Comment on lines
+1
to
+11
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Populate the funding targets before merge.
Add the intended sponsorship identifiers, or remove providers that are not used. The current file will not expose actionable funding links. 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| --- | ||
| project: SessionLedger | ||
| language: Rust | ||
| generated: "2026-08-19" | ||
|
|
||
| driver: | ||
| system: Phenotype AI-Driven Development | ||
| purpose: Link AI agent work to feature requirements | ||
|
|
||
| agents: | ||
| - name: forge | ||
| role: implementation | ||
| scope: "File operations, git, build, test" | ||
| - name: muse | ||
| role: planning | ||
| scope: "Analysis, strategy, architecture review" | ||
|
|
||
| linkages: | ||
| - agent: forge | ||
| fr: FR-001 | ||
| activity: "JSONL ingest pipeline" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-002 | ||
| activity: "OKF bundle validation" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-003 | ||
| activity: "Bundle list and search" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-004 | ||
| activity: "SSE replay" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-011 | ||
| activity: "Crash recovery surfaces" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-014 | ||
| activity: "Daemon liveness and ops" | ||
| status: completed | ||
| - agent: forge | ||
| fr: FR-015 | ||
| activity: "Observability (OTLP, Prometheus)" | ||
| status: completed | ||
| - agent: muse | ||
| fr: FR-005 | ||
| activity: "Metrics aggregation design" | ||
| status: completed | ||
|
|
||
| last_updated: "2026-08-19" |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,80 @@ | ||||||||||||||||||
| --- | ||||||||||||||||||
| project: SessionLedger | ||||||||||||||||||
| language: Rust | ||||||||||||||||||
| generated: "2026-08-19" | ||||||||||||||||||
|
|
||||||||||||||||||
| attribution: | ||||||||||||||||||
| system: Phenotype Traceability | ||||||||||||||||||
| purpose: Feature Requirement (FR) tracking | ||||||||||||||||||
|
|
||||||||||||||||||
| traceability: | ||||||||||||||||||
| cli: AgilePlus/bin/ptrace | ||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
if test -e AgilePlus/bin/ptrace; then
echo "Configured CLI path exists"
else
echo "Configured CLI path is missing: AgilePlus/bin/ptrace"
fi
git ls-files | rg -n '(^|/)(AgilePlus|agileplus)/.*ptrace$' || trueRepository: KooshaPari/SessionLedger Length of output: 215 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' 'Configured entry:'
sed -n '1,20p' .phenotype/ai-traceability.yaml
printf '%s\n' 'Matching tracked paths:'
git ls-files | rg -n -i '(^|/)(agileplus|ptrace)(/|$)' || true
printf '%s\n' 'Matching filesystem paths:'
find . -type f \( -path '*/ptrace' -o -iname 'ptrace' \) -print 2>/dev/null || trueRepository: KooshaPari/SessionLedger Length of output: 804 Correct the traceability CLI path. No 🤖 Prompt for AI Agents |
||||||||||||||||||
| ci_cd: .github/workflows/ci.yml | ||||||||||||||||||
|
|
||||||||||||||||||
| fr_requirements: | ||||||||||||||||||
| - id: FR-001 | ||||||||||||||||||
| title: "JSONL / corpus ingest into normalized Session" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "crates/sl-daemon ETL (etl.rs, watcher.rs); tests/skeleton.rs; crates/sl-daemon/tests/pipeline.rs" | ||||||||||||||||||
| - id: FR-002 | ||||||||||||||||||
| title: "OKF bundle schema validation on ingest" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "POST /api/ingest; crates/sl-daemon/src/validation.rs; sl validate CLI" | ||||||||||||||||||
| - id: FR-003 | ||||||||||||||||||
| title: "Bundle list + search/filter" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "GET /api/bundles, GET /api/search; filter.rs, tag.rs" | ||||||||||||||||||
| - id: FR-004 | ||||||||||||||||||
| title: "Session replay via SSE" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "GET /api/replay/:id; crates/sl-daemon/tests/sse_bridge.rs; sl replay" | ||||||||||||||||||
| - id: FR-005 | ||||||||||||||||||
| title: "Aggregated session metrics" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "GET /api/metrics; crates/sl-daemon/src/metrics.rs" | ||||||||||||||||||
| - id: FR-006 | ||||||||||||||||||
| title: "Archive / restore (gzip)" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "sl archive / sl restore; crates/sl-daemon/src/archive.rs" | ||||||||||||||||||
| - id: FR-007 | ||||||||||||||||||
| title: "Viewer Timeline" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "crates/sl-viewer/src/timeline.rs" | ||||||||||||||||||
| - id: FR-008 | ||||||||||||||||||
| title: "Viewer Search" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "crates/sl-viewer/src/search_view.rs" | ||||||||||||||||||
| - id: FR-009 | ||||||||||||||||||
| title: "Viewer Replay" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "crates/sl-viewer/src/replay_view.rs" | ||||||||||||||||||
| - id: FR-010 | ||||||||||||||||||
| title: "Viewer LiveFeed" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "crates/sl-viewer/src/live_feed.rs" | ||||||||||||||||||
| - id: FR-011 | ||||||||||||||||||
| title: "Crash recovery / unfinished work surface" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "DESIGN 5.1; T-024 detector; T-036 unfinished viewer tab" | ||||||||||||||||||
| - id: FR-012 | ||||||||||||||||||
| title: "ContinuationBundle compile + inject gate" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "src/domain/bundle.rs; src/distill; Acceptance slice gate" | ||||||||||||||||||
| - id: FR-013 | ||||||||||||||||||
| title: "OKF roundtrip smoke" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "tests/okf_roundtrip.rs; docs/OKF-ROUNDTRIP.md" | ||||||||||||||||||
| - id: FR-014 | ||||||||||||||||||
| title: "Daemon liveness + local ops stack" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "GET /healthz + GET /readyz; process-compose.yaml; make dev" | ||||||||||||||||||
| - id: FR-015 | ||||||||||||||||||
| title: "Observability surfaces (metrics, OTLP, dashboards)" | ||||||||||||||||||
| status: done | ||||||||||||||||||
| acceptance: "/healthz, /readyz, /api/metrics, Prometheus /metrics" | ||||||||||||||||||
|
Comment on lines
+71
to
+74
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win Include all FR-015 acceptance references.
Proposed correction- acceptance: "/healthz, /readyz, /api/metrics, Prometheus /metrics"
+ acceptance: "/healthz, /readyz, /api/metrics, Prometheus /metrics; crates/sl-daemon/src/otel.rs; docs/ops/dashboards/sessionledger-red.json"📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||
|
|
||||||||||||||||||
| coverage: | ||||||||||||||||||
| status: complete | ||||||||||||||||||
| note: "All 15 FRs status: done. Legacy agileplus/ seed not FR-mapped." | ||||||||||||||||||
|
|
||||||||||||||||||
| last_updated: "2026-08-19" | ||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| { | ||
| "repo": "SessionLedger", | ||
| "overall": 75, | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. WARNING: Scorecard inconsistent with canonical
Reply with |
||
| "grade": "B", | ||
| "generated": "2026-08-19", | ||
| "scores": { | ||
| "L1 Architecture": 70, | ||
| "L2 Dev Loop": 80, | ||
| "L3 Agent Loop": 60, | ||
| "L4 Observability": 85, | ||
| "L5 Security": 90, | ||
| "L6 Performance": 75, | ||
| "L7 Extensibility": 80, | ||
| "L8 Compliance": 70, | ||
| "L9 Complexity": 85, | ||
| "L10 Type Safety": 90, | ||
| "L11 Dependencies": 70, | ||
| "L12 Error Handling": 80, | ||
| "L13 Logging": 75, | ||
| "L14 Data Layer": 80, | ||
| "L15 API Surface": 75, | ||
| "L16 Frontend": 85, | ||
| "L17 I18n/A11y": 70, | ||
| "L18 Concurrency": 75, | ||
| "L19 Memory": 70, | ||
| "L20 Config": 75, | ||
| "L21 Testing Depth": 70, | ||
| "L22 Fuzzing": 65, | ||
| "L23 Release": 80, | ||
| "L24 Migration": 65, | ||
| "L25 Vendor Lockin": 90, | ||
| "L26 Event Driven": 80, | ||
| "L27 Infrastructure": 70, | ||
| "L28 Cost Efficiency": 75, | ||
| "L29 Monitoring": 70, | ||
| "L30 Onboarding": 60 | ||
| }, | ||
| "details": { | ||
| "source_files": 95, | ||
| "test_files": 55, | ||
| "ci_workflows": 15, | ||
| "note": "Generated 2026-08-19. Initial scorecard. Rust daemon with Dioxus desktop viewer. 15 FRs all status: done. 15+ CI workflows (a11y, alloc-profile, bench-gate, branch-protection, ci, commit-signing, cross-platform-build, cross-platform-smoke, daemon-graph, envelope-crypto, eval-compression, feedback-budgets, fuzz-blocking, fuzz-cadence, hermetic-builder). Legacy agileplus/ seed + modern .agileplus/specs coexist. .phenotype/ai-traceability.yaml and ai-dd.yaml populated." | ||
| } | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.