diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d3504c5..9e13e91 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -2,8 +2,8 @@ git clone https://github.com/hyperpolymath/dictask.git cd dictask -# Using Nix (recommended for reproducibility) -nix develop +# Using Guix (recommended for reproducibility) +guix develop # Or using toolbox/distrobox toolbox create dictask-dev @@ -45,7 +45,7 @@ dictask/ ├── MAINTAINERS.md ├── README.adoc ├── SECURITY.md -├── flake.nix # Nix flake — fallback (Perimeter 1) +├── flake.guix # Guix flake — fallback (Perimeter 1) ├── guix.scm # Guix package — primary (Perimeter 1) └── Justfile # Task runner (Perimeter 1) ``` diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 6e2bea9..678e4a4 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -33,7 +33,7 @@ ## Banned Languages -- No TypeScript (use ReScript) +- No TypeScript (use AffineScript) - No Node.js / npm / bun (use Deno) - No Go (use Rust) - No Python (use Julia or Rust) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d5cd4e9..045cb8f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -41,8 +41,8 @@ updates: schedule: interval: "weekly" - # Nix flakes - - package-ecosystem: "nix" + # Guix flakes + - package-ecosystem: "guix" directory: "/" schedule: interval: "weekly" diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index cc62f6c..f6e8fcf 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -3,7 +3,7 @@ # in hyperpolymath/standards instead of carrying per-repo copies. # # Replaces the per-repo governance scaffolding removed in the same commit: -# quality.yml, guix-nix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml, +# quality.yml, guix-guix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml, # security-policy.yml, rsr-antipattern.yml, wellknown-enforcement.yml, # workflow-linter.yml # diff --git a/.machine_readable/6a2/META.a2ml b/.machine_readable/6a2/META.a2ml index 1dac0b4..62951df 100644 --- a/.machine_readable/6a2/META.a2ml +++ b/.machine_readable/6a2/META.a2ml @@ -101,7 +101,7 @@ perfective-source = "axis-1 honest state after corrective/adaptive updates" [axis-3-audit-rules] audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed" compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks" -drift-risk-example = "single exception broadening into policy violation (e.g. ReScript->TypeScript spread)" +drift-risk-example = "single exception broadening into policy violation (e.g. AffineScript->TypeScript spread)" effects-evidence = "benchmark execution/results and maintainer status dialogue/review" [design-rationale] diff --git a/.machine_readable/ai/PLACEHOLDERS.adoc b/.machine_readable/ai/PLACEHOLDERS.adoc index 7809b04..920bc1e 100644 --- a/.machine_readable/ai/PLACEHOLDERS.adoc +++ b/.machine_readable/ai/PLACEHOLDERS.adoc @@ -48,8 +48,8 @@ sed -i "s/2026-03-16/$(date +%Y-%m-%d)/g" $(grep -rl '2026-03-16' .) | Placeholder | Description | Example | Files | |---|---|---|---| -| `Dictask` | Human-readable project name | `My Project` | SECURITY.md, CODE_OF_CONDUCT.md, TOPOLOGY.md, STATE.a2ml, Justfile, GOVERNANCE.md, MAINTAINERS.md, flake.nix, devcontainer.json | -| `{{PROJECT_DESCRIPTION}}` | One-line description | `A tool for X` | flake.nix | +| `Dictask` | Human-readable project name | `My Project` | SECURITY.md, CODE_OF_CONDUCT.md, TOPOLOGY.md, STATE.a2ml, Justfile, GOVERNANCE.md, MAINTAINERS.md, flake.guix, devcontainer.json | +| `{{PROJECT_DESCRIPTION}}` | One-line description | `A tool for X` | flake.guix | | `{{PROJECT}}` | Uppercase identifier (for Idris2 modules, C macros) | `MY_PROJECT` | ABI-FFI-README.md, src/interface/abi/*.idr, src/interface/ffi/*.zig | | `{{project}}` | Lowercase identifier (for C symbols, filenames) | `my_project` | ABI-FFI-README.md, src/interface/ffi/*.zig | | `dictask` | Repository name (slug) | `my-project` | CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, cliff.toml | @@ -133,7 +133,7 @@ After replacing all placeholders, verify none remain: ```bash grep -rn '{{' . --include='*.md' --include='*.adoc' --include='*.a2ml' \ --include='*.scm' --include='*.idr' --include='*.zig' --include='*.res' \ - --include='Justfile' --include='*.nix' --include='*.toml' --include='*.yml' \ + --include='Justfile' --include='*.guix' --include='*.toml' --include='*.yml' \ --include='*.yaml' --include='*.hs' --include='*.ncl' --include='*.txt' \ --include='*.json' --include='Containerfile' --include='dep5' \ | grep -v 'PLACEHOLDERS.md' | grep -v 'node_modules' diff --git a/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml b/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml index eaee720..698f4d0 100644 --- a/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml +++ b/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml @@ -67,7 +67,7 @@ compliance-seams-check = true exception-register-required = true exception-bounded-scope-required = true policy-drift-contamination-check = true -example-drift-risk = "single TypeScript exception causing broad ReScript->TypeScript migration" +example-drift-risk = "single TypeScript exception causing broad AffineScript->TypeScript migration" compliance-tooling = "panic-attack" effects-tooling = "ecological checking with sustainabot guidance" diff --git a/ARCHITECTURE.adoc b/ARCHITECTURE.adoc new file mode 100644 index 0000000..1c0a7a6 --- /dev/null +++ b/ARCHITECTURE.adoc @@ -0,0 +1,48 @@ +== Architecture + +=== Overview + +This repository follows a modular, maintainable architecture designed +for clarity, scalability, and long-term sustainability. + +=== Directory Structure + +.... +. +├── src/ # Source code +├── tests/ # Test suites +├── docs/ # Documentation +├── scripts/ # Utility scripts +├── config/ # Configuration files +├── LICENSE # License file +├── LICENSES/ # Full license texts +└── README.adoc # Project documentation +.... + +=== Design Principles + +* *Separation of Concerns*: Each module has a single responsibility +* *Testability*: Code is written to be easily testable +* *Documentation*: All public APIs are documented +* *Configuration*: Environment-specific settings are externalized + +=== Dependencies + +* External dependencies are minimized and clearly declared +* Version pinning is used for reproducibility + +=== Security Considerations + +* Sensitive data is never committed to the repository +* Secrets are managed through environment variables or secure vaults +* Regular dependency audits are performed + +=== Maintainability + +* Code follows consistent style guidelines +* Pull requests require review and CI checks +* Issues and discussions are tracked transparently + +''''' + +_Last updated: 2026-07-18_ diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md deleted file mode 100644 index 607e3d8..0000000 --- a/ARCHITECTURE.md +++ /dev/null @@ -1,47 +0,0 @@ -# Architecture - -## Overview - -This repository follows a modular, maintainable architecture designed for clarity, scalability, and long-term sustainability. - -## Directory Structure - -``` -. -├── src/ # Source code -├── tests/ # Test suites -├── docs/ # Documentation -├── scripts/ # Utility scripts -├── config/ # Configuration files -├── LICENSE # License file -├── LICENSES/ # Full license texts -└── README.adoc # Project documentation -``` - -## Design Principles - -- **Separation of Concerns**: Each module has a single responsibility -- **Testability**: Code is written to be easily testable -- **Documentation**: All public APIs are documented -- **Configuration**: Environment-specific settings are externalized - -## Dependencies - -- External dependencies are minimized and clearly declared -- Version pinning is used for reproducibility - -## Security Considerations - -- Sensitive data is never committed to the repository -- Secrets are managed through environment variables or secure vaults -- Regular dependency audits are performed - -## Maintainability - -- Code follows consistent style guidelines -- Pull requests require review and CI checks -- Issues and discussions are tracked transparently - ---- - -*Last updated: 2026-07-18* diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc new file mode 100644 index 0000000..ca1c652 --- /dev/null +++ b/CHANGELOG.adoc @@ -0,0 +1,9 @@ +== Changelog + +All notable changes to this project will be documented in this file. + +The format is based on https://keepachangelog.com/en/1.1.0/[Keep a +Changelog], and this project adheres to +https://semver.org/spec/v2.0.0.html[Semantic Versioning]. + +=== [Unreleased] diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8109476..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - - - - -## [Unreleased] diff --git a/CODE_OF_CONDUCT.adoc b/CODE_OF_CONDUCT.adoc new file mode 100644 index 0000000..bd2a83c --- /dev/null +++ b/CODE_OF_CONDUCT.adoc @@ -0,0 +1,24 @@ +== Contributor Covenant Code of Conduct + +=== Our Pledge + +We pledge to make participation a harassment-free experience for +everyone. + +=== Our Standards + +*Positive behavior:* * Using welcoming language * Being respectful of +differing viewpoints * Accepting constructive criticism * Focusing on +what is best for the community + +*Unacceptable behavior:* * Harassment, trolling, or personal attacks * +Publishing private information without permission + +=== Enforcement + +Report issues to the maintainers. All complaints will be reviewed. + +=== Attribution + +Adapted from https://www.contributor-covenant.org/[Contributor Covenant] +v2.1. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index caeda1c..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,27 +0,0 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We pledge to make participation a harassment-free experience for everyone. - -## Our Standards - -**Positive behavior:** -* Using welcoming language -* Being respectful of differing viewpoints -* Accepting constructive criticism -* Focusing on what is best for the community - -**Unacceptable behavior:** -* Harassment, trolling, or personal attacks -* Publishing private information without permission - -## Enforcement - -Report issues to the maintainers. All complaints will be reviewed. - -## Attribution - -Adapted from [Contributor Covenant](https://www.contributor-covenant.org/) v2.1. - diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index bedaa14..dd089ae 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,52 +1,71 @@ -// SPDX-License-Identifier: CC-BY-SA-4.0 -= Contributing to dictask -:toc: preamble -:icons: font +== Contributing -This document explains how to contribute to dictask. We follow a "Dual-Track" +Thank you for your interest in contributing! We follow a "`Dual-Track`" architecture where human-readable documentation lives in the root and -machine-readable policies live in `.machine_readable/`. +machine-readable policies live in `+.machine_readable/+`. -== How to Contribute +=== How to Contribute We welcome contributions in many forms: -* **Rust code:** Improving ingest, transcription, store, or review components. -* **Haskell parser:** Enhancing NLP task extraction patterns. -* **Idris2 proofs:** Strengthening formal verification of task schema. -* **Documentation:** Improving AsciiDoc manuals or AI manifests. -* **Testing:** Adding property-based tests or integration tests. +* *Code:* Improving the core stack or extensions +* *Documentation:* Enhancing docs or AI manifests +* *Testing:* Adding property-based tests or formal proofs +* *Bug reports:* Filing clear, reproducible issues -== Getting Started +=== Getting Started -1. **Read the AI Manifest:** Start with `0-AI-MANIFEST.a2ml` to understand the - repository structure. -2. **Environment:** Use `nix develop` or `direnv allow` to set up tools - (Rust, Haskell/GHC, Idris2, Zig). -3. **Task Runner:** Use `just` to see available commands (`just --list`). +[arabic] +. *Read the AI Manifest:* Start with `+0-AI-MANIFEST.a2ml+` (if present) +to understand the repository structure. +. *Environment:* Use `+guix develop+` or `+direnv allow+` to set up your +tools. +. *Task Runner:* Use `+just+` to see available commands +(`+just --list+`). -== Language Policy +=== Development Workflow -[cols="1,2"] -|=== -| Allowed | Use Case +==== Branch Naming -| Rust | Ingest, transcription, store, review, CLI -| Haskell | NLP parsing (megaparsec) -| Idris2 | ABI definitions, formal proofs -| Zig | FFI bridge -| Bash | Scripts, automation -|=== +.... +docs/short-description # Documentation +test/what-added # Test additions +feat/short-description # New features +fix/issue-number-description # Bug fixes +refactor/what-changed # Code improvements +security/what-fixed # Security fixes +.... -**Not allowed:** Python, TypeScript, Node.js, Go, Java. +==== Commit Messages -== Contribution Policies +We follow https://www.conventionalcommits.org/[Conventional Commits]: -For detailed rules on branch naming, commit messages, and the PR process, -please refer to the machine-readable manual at -link:.github/CONTRIBUTING.md[CONTRIBUTING.md]. +.... +(): -== Code of Conduct +[optional body] -All contributors are expected to adhere to our ethical standards. -See link:.github/CODE_OF_CONDUCT.md[CODE_OF_CONDUCT.md] for details. +[optional footer] +.... + +Types: `+feat+`, `+fix+`, `+docs+`, `+test+`, `+refactor+`, `+ci+`, +`+chore+`, `+security+` + +=== Reporting Bugs + +Before reporting: 1. Search existing issues 2. Check if it’s already +fixed in `+main+` + +When reporting, include: - Clear, descriptive title - Environment +details (OS, versions, toolchain) - Steps to reproduce - Expected vs +actual behaviour + +=== Code of Conduct + +All contributors are expected to adhere to our +link:CODE_OF_CONDUCT.md[Code of Conduct]. + +=== License + +By contributing, you agree that your contributions will be licensed +under the same license as the project (see LICENSE). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 80ecdac..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,66 +0,0 @@ - -# Contributing - -Thank you for your interest in contributing! We follow a "Dual-Track" architecture where human-readable documentation lives in the root and machine-readable policies live in `.machine_readable/`. - -## How to Contribute - -We welcome contributions in many forms: - -- **Code:** Improving the core stack or extensions -- **Documentation:** Enhancing docs or AI manifests -- **Testing:** Adding property-based tests or formal proofs -- **Bug reports:** Filing clear, reproducible issues - -## Getting Started - -1. **Read the AI Manifest:** Start with `0-AI-MANIFEST.a2ml` (if present) to understand the repository structure. -2. **Environment:** Use `nix develop` or `direnv allow` to set up your tools. -3. **Task Runner:** Use `just` to see available commands (`just --list`). - -## Development Workflow - -### Branch Naming - -``` -docs/short-description # Documentation -test/what-added # Test additions -feat/short-description # New features -fix/issue-number-description # Bug fixes -refactor/what-changed # Code improvements -security/what-fixed # Security fixes -``` - -### Commit Messages - -We follow [Conventional Commits](https://www.conventionalcommits.org/): - -``` -(): - -[optional body] - -[optional footer] -``` - -Types: `feat`, `fix`, `docs`, `test`, `refactor`, `ci`, `chore`, `security` - -## Reporting Bugs - -Before reporting: -1. Search existing issues -2. Check if it's already fixed in `main` - -When reporting, include: -- Clear, descriptive title -- Environment details (OS, versions, toolchain) -- Steps to reproduce -- Expected vs actual behaviour - -## Code of Conduct - -All contributors are expected to adhere to our [Code of Conduct](CODE_OF_CONDUCT.md). - -## License - -By contributing, you agree that your contributions will be licensed under the same license as the project (see [LICENSE](LICENSE)). diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc new file mode 100644 index 0000000..9b836fb --- /dev/null +++ b/GOVERNANCE.adoc @@ -0,0 +1,60 @@ +== Governance + +=== Overview + +This project is governed by the following principles and structures to +ensure transparent, inclusive, and effective decision-making. + +=== Roles and Responsibilities + +==== Maintainers + +Maintainers are responsible for: - Reviewing and merging pull requests - +Managing releases and versioning - Ensuring code quality and standards - +Triaging issues and bug reports - Community engagement and support + +==== Contributors + +Contributors are expected to: - Follow the code of conduct - Submit +well-documented pull requests - Write tests for new functionality - +Maintain existing tests - Update documentation as needed + +=== Decision Making + +==== Minor Changes + +* Can be made by any maintainer +* Include bug fixes, documentation updates, dependency updates + +==== Major Changes + +* Require discussion in issues or pull requests +* Include new features, architectural changes, API changes +* Need approval from at least 2 maintainers + +==== Breaking Changes + +* Require RFC (Request for Comments) process +* Need approval from majority of maintainers +* Must include migration guide + +=== Code of Conduct + +All participants are expected to follow our Code of Conduct. Violations +can be reported to the maintainers. + +=== Communication + +* *Issues*: For bug reports and feature requests +* *Discussions*: For questions and general discussion +* *Pull Requests*: For code contributions + +=== Licensing + +All contributions are made under the terms of the repository’s LICENSE +file. By submitting a pull request, you agree to license your +contributions accordingly. + +''''' + +_Last updated: 2026-07-18_ diff --git a/GOVERNANCE.md b/GOVERNANCE.md deleted file mode 100644 index e27364c..0000000 --- a/GOVERNANCE.md +++ /dev/null @@ -1,60 +0,0 @@ -# Governance - -## Overview - -This project is governed by the following principles and structures to ensure transparent, inclusive, and effective decision-making. - -## Roles and Responsibilities - -### Maintainers - -Maintainers are responsible for: -- Reviewing and merging pull requests -- Managing releases and versioning -- Ensuring code quality and standards -- Triaging issues and bug reports -- Community engagement and support - -### Contributors - -Contributors are expected to: -- Follow the code of conduct -- Submit well-documented pull requests -- Write tests for new functionality -- Maintain existing tests -- Update documentation as needed - -## Decision Making - -### Minor Changes -- Can be made by any maintainer -- Include bug fixes, documentation updates, dependency updates - -### Major Changes -- Require discussion in issues or pull requests -- Include new features, architectural changes, API changes -- Need approval from at least 2 maintainers - -### Breaking Changes -- Require RFC (Request for Comments) process -- Need approval from majority of maintainers -- Must include migration guide - -## Code of Conduct - -All participants are expected to follow our Code of Conduct. Violations can be reported to the maintainers. - -## Communication - -- **Issues**: For bug reports and feature requests -- **Discussions**: For questions and general discussion -- **Pull Requests**: For code contributions - -## Licensing - -All contributions are made under the terms of the repository's LICENSE file. -By submitting a pull request, you agree to license your contributions accordingly. - ---- - -*Last updated: 2026-07-18* diff --git a/PROOF-NEEDS.adoc b/PROOF-NEEDS.adoc new file mode 100644 index 0000000..7d5132f --- /dev/null +++ b/PROOF-NEEDS.adoc @@ -0,0 +1,12 @@ +== PROOF-NEEDS.md + +=== Template ABI Cleanup (2026-03-29) + +Template ABI removed – was creating false impression of formal +verification. The removed files (Types.idr, Layout.idr, Foreign.idr) +contained only RSR template scaffolding with unresolved +\{\{PROJECT}}/\{\{AUTHOR}} placeholders and no domain-specific proofs. + +When this project needs formal ABI verification, create domain-specific +Idris2 proofs following the pattern in repos like `+typed-wasm+`, +`+proven+`, `+echidna+`, or `+boj-server+`. diff --git a/PROOF-NEEDS.md b/PROOF-NEEDS.md deleted file mode 100644 index 8950320..0000000 --- a/PROOF-NEEDS.md +++ /dev/null @@ -1,10 +0,0 @@ -# PROOF-NEEDS.md - -## Template ABI Cleanup (2026-03-29) - -Template ABI removed -- was creating false impression of formal verification. -The removed files (Types.idr, Layout.idr, Foreign.idr) contained only RSR template -scaffolding with unresolved {{PROJECT}}/{{AUTHOR}} placeholders and no domain-specific proofs. - -When this project needs formal ABI verification, create domain-specific Idris2 proofs -following the pattern in repos like `typed-wasm`, `proven`, `echidna`, or `boj-server`. diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..05db546 --- /dev/null +++ b/README.adoc @@ -0,0 +1,274 @@ +____ +[!TIP] *AI-Assisted Install:* Just tell any AI assistant: + +`+Set+` `+up+` `+dictask+` `+from+` +https://github.com/hyperpolymath/dictask[`+https://github.com/hyperpolymath/dictask+`] + +The AI reads the manifest, asks you a few questions, and handles +everything. +____ + +== Overview + +*dictask* automates the ingestion of speech notes from a portable voice +recorder into a structured, prioritised, auditable task list. + +Plug in your recorder → dictask detects it, archives the audio, +transcribes it, extracts tasks with confidence scores, deduplicates +against your existing list, and either auto-applies high-confidence +items or queues ambiguous ones for review. + +This project follows a *Dual-Track* architecture: + +* *Root:* High-level orientation and rich documentation for humans. +* *Sub-directories:* Machine-readable metadata and technical +implementation. + +== Architecture + +=== Pipeline (10 stages, batch) + +[source,plaintext] +---- +Recorder USB + → [1] udev/systemd detect + → [2] Local archive (SHA-256 checksummed) + → [3] Encrypted cloud backup (retry 3x / quarantine) + → [4] Whisper/Vosk transcription → transcript JSON + → [5] Haskell megaparsec NLP → candidate intents (with confidence) + → [6] Normalise (resolve dates, assign priority scores) + → [7] Deduplicate (exact + semantic matching) + → [8] Review queue (low confidence) or auto-apply (high confidence) + → [9] Canonical SQLite store → views (Markdown, JSON, CSV) + → [10] Notify (dashboard / email alerts for review items) +---- + +=== Components + +[width="100%",cols="34%,33%,33%",options="header",] +|=== +|Component |Language/Tool |Purpose +|Ingest |Rust |Detect recorder insertion (udev), archive audio, compute +checksums, upload encrypted backup. + +|Transcription |Rust (whisper-rs / vosk) |Convert audio to text using +offline ASR. No cloud dependency. + +|Task Parser |Haskell (megaparsec) |Extract tasks, deadlines, priorities +from transcripts. Pure functions, idempotent. + +|Canonical Store |Rust + SQLite |Audited, versioned task database. WAL +mode. JSON1 for structured fields. + +|Review System |Rust |Review queue for low-confidence items. Dashboard +alerts. + +|ABI / Schema Proofs |Idris2 |Dependent-type proofs for task schema +correctness and confidence thresholds. + +|FFI Bridge |Zig |C-compatible bridge between Idris2 ABI and Rust +components. + +|Deployment |Ansible + Terraform |Local machine setup (Ansible) + cloud +provisioning (Terraform). +|=== + +== Task Schema + +[source,haskell] +---- +-- Haskell type (src/parse/) +data Task = Task + { taskId :: UUID + , title :: Text + , description :: Maybe Text + , sourceAudioId :: AudioHash -- SHA-256 of source recording + , sourceTranscriptId :: TranscriptId -- reference to transcript version + , createdAt :: UTCTime + , updatedAt :: UTCTime + , status :: TaskStatus -- Pending | InProgress | Done | ReviewNeeded + , priorityScore :: PriorityScore -- urgency * 0.5 + importance * 0.3 + deadline_proximity * 0.2 + , dueDate :: Maybe Day + , tags :: [Text] + , project :: Maybe Text + , supersedesTaskId :: Maybe UUID -- links to replaced task + , duplicateOfTaskId :: Maybe UUID -- links to canonical duplicate + , reviewState :: ReviewState -- Approved | PendingReview | Rejected + , confidence :: Confidence -- 0.0–1.0, from parser + , parserVersion :: Version -- which parser version produced this + } +---- + +== Policies + +=== Confidence & Automation + +[cols=",,",options="header",] +|=== +|Confidence |Threshold |Action +|High |>= 0.8 |Auto-apply to canonical store +|Medium |0.3–0.8 |Queue for human review +|Low |< 0.3 |Log only, do not create task candidate +|=== + +=== Human Review Boundaries + +Actions that *always* require confirmation: + +* Deletions of existing tasks +* Deadline changes on existing tasks +* Low-confidence merges (semantic deduplication) +* Any update to a task marked `+Approved+` + +=== Deduplication + +* *Exact match:* Same title + same project → auto-merge +* *Semantic duplicate:* Similar intent, different wording → flag for +review +* *Recurring task:* Same task pattern across recordings → link to parent +with `+supersedesTaskId+` + +=== Privacy & Retention + +* *Raw audio:* Encrypted at rest, retained 30 days locally, cloud backup +encrypted +* *Transcripts:* Stored locally only, redacted if sensitive content +detected +* *Cloud backups:* Encrypted, configurable retention +* *Secrets:* Managed via rokur (Stapeln), never in code or repo + +== Audit Trail + +Every task carries its full provenance chain: + +[source,plaintext] +---- +original_audio_hash (SHA-256) + → transcript_version (Whisper v3 / Vosk v0.3.45) + → parser_version (dictask-parse v0.1.0) + → change_set { timestamp, action, user_confirmation_state } +---- + +All transformations are logged for reproducibility. Reprocessing the +same audio file with the same parser version MUST produce identical +candidate tasks (idempotency). + +== Failure & Recovery + +[width="100%",cols="50%,50%",options="header",] +|=== +|Failure |Handling +|Failed cloud upload |Retry 3x with exponential backoff, then quarantine +locally + +|Partial transcription |Flag for review, log incomplete segments + +|Corrupted audio file |Skip, log with checksum, alert user + +|Low-confidence parse |Route to review queue, never auto-apply + +|Dedup false positive |Show both candidates in review queue +|=== + +All pipeline stages are idempotent — reprocessing the same input +produces the same output. + +== Repository Structure + +[width="100%",cols="50%,50%",options="header",] +|=== +|Directory |Purpose +|`+.github/+` |Forge-specific metadata (CODEOWNERS, SECURITY.md, +workflows). + +|`+.machine_readable/+` |Canonical project state (6 a2ml files), bot +directives, and AI guides. + +|`+src/ingest/+` |Rust crate: udev detection, file archival, cloud +upload. + +|`+src/transcribe/+` |Rust crate: Whisper/Vosk ASR integration. + +|`+src/parse/+` |Haskell package: megaparsec NLP task extraction. + +|`+src/store/+` |Rust crate: SQLite canonical store + view generation. + +|`+src/review/+` |Rust crate: review queue + notification. + +|`+src/interface/+` |Verified Interface Seams (Idris2 ABI, Zig FFI, +generated C headers). + +|`+deploy/ansible/+` |Ansible playbooks for local machine setup. + +|`+deploy/terraform/+` |Terraform configs for cloud provisioning +(bucket, IAM). + +|`+schemas/+` |SQLite schema, JSON schemas for intermediate formats. + +|`+container/+` |Stapeln container ecosystem. + +|`+docs/+` |Technical documentation (architecture, theory, practice). +|=== + +== Quick Start + +[source,bash] +---- +just init # Interactive bootstrap +just build # Build all components +just test # Run all tests +just ingest # Run ingest pipeline manually +just transcribe FILE # Transcribe a specific audio file +just parse FILE # Parse a transcript file +just views # Generate Markdown/JSON/CSV views +just container-build # Build verified OCI image +---- + +== Deployment + +=== Local Setup (Ansible) + +[source,bash] +---- +cd deploy/ansible +ansible-playbook setup.yml +---- + +Sets up: udev rules, systemd service, Rust/Haskell toolchains, SQLite. + +=== Cloud Provisioning (Terraform) + +[source,bash] +---- +cd deploy/terraform +terraform init +terraform apply +---- + +Provisions: encrypted storage bucket, IAM roles, lifecycle rules. + +== Testing + +* *Haskell parser:* HSpec + QuickCheck property-based tests +* *Rust components:* `+cargo+` `+test+` with integration tests against +real SQLite +* *Pipeline replay:* Re-run historical audio through newer parser +versions +* *Idris2 proofs:* Compile-time verification (no runtime tests needed) + +== Success Metrics + +* % of tasks auto-processed vs. requiring manual review +* False positive/negative rates for intent detection +* Time saved vs. manual note-taking and task entry +* Pipeline end-to-end latency (target: < 5 minutes per recording) + +== Documentation + +* link:CONTRIBUTING.adoc[Contributing Guide] +* link:ROADMAP.adoc[Roadmap] +* link:TOPOLOGY.md[Architecture Topology] +* link:docs/architecture/[Architecture Details] + +== License + +SPDX-License-Identifier: CC-BY-SA-4.0 + +See LICENSE and docs/legal/ for details. diff --git a/README.md b/README.md deleted file mode 100644 index 768df98..0000000 --- a/README.md +++ /dev/null @@ -1,245 +0,0 @@ - - -> [!TIP] -> **AI-Assisted Install:** Just tell any AI assistant:\ -> `Set` `up` `dictask` `from` -> [`https://github.com/hyperpolymath/dictask`](https://github.com/hyperpolymath/dictask)\ -> The AI reads the manifest, asks you a few questions, and handles -> everything. - -# Overview - -**dictask** automates the ingestion of speech notes from a portable -voice recorder into a structured, prioritised, auditable task list. - -Plug in your recorder → dictask detects it, archives the audio, -transcribes it, extracts tasks with confidence scores, deduplicates -against your existing list, and either auto-applies high-confidence -items or queues ambiguous ones for review. - -This project follows a **Dual-Track** architecture: - -- **Root:** High-level orientation and rich documentation for humans. - -- **Sub-directories:** Machine-readable metadata and technical - implementation. - -# Architecture - -## Pipeline (10 stages, batch) - -```plaintext -Recorder USB - → [1] udev/systemd detect - → [2] Local archive (SHA-256 checksummed) - → [3] Encrypted cloud backup (retry 3x / quarantine) - → [4] Whisper/Vosk transcription → transcript JSON - → [5] Haskell megaparsec NLP → candidate intents (with confidence) - → [6] Normalise (resolve dates, assign priority scores) - → [7] Deduplicate (exact + semantic matching) - → [8] Review queue (low confidence) or auto-apply (high confidence) - → [9] Canonical SQLite store → views (Markdown, JSON, CSV) - → [10] Notify (dashboard / email alerts for review items) -``` - -## Components - -| Component | Language/Tool | Purpose | -|----|----|----| -| Ingest | Rust | Detect recorder insertion (udev), archive audio, compute checksums, upload encrypted backup. | -| Transcription | Rust (whisper-rs / vosk) | Convert audio to text using offline ASR. No cloud dependency. | -| Task Parser | Haskell (megaparsec) | Extract tasks, deadlines, priorities from transcripts. Pure functions, idempotent. | -| Canonical Store | Rust + SQLite | Audited, versioned task database. WAL mode. JSON1 for structured fields. | -| Review System | Rust | Review queue for low-confidence items. Dashboard alerts. | -| ABI / Schema Proofs | Idris2 | Dependent-type proofs for task schema correctness and confidence thresholds. | -| FFI Bridge | Zig | C-compatible bridge between Idris2 ABI and Rust components. | -| Deployment | Ansible + Terraform | Local machine setup (Ansible) + cloud provisioning (Terraform). | - -# Task Schema - -```haskell --- Haskell type (src/parse/) -data Task = Task - { taskId :: UUID - , title :: Text - , description :: Maybe Text - , sourceAudioId :: AudioHash -- SHA-256 of source recording - , sourceTranscriptId :: TranscriptId -- reference to transcript version - , createdAt :: UTCTime - , updatedAt :: UTCTime - , status :: TaskStatus -- Pending | InProgress | Done | ReviewNeeded - , priorityScore :: PriorityScore -- urgency * 0.5 + importance * 0.3 + deadline_proximity * 0.2 - , dueDate :: Maybe Day - , tags :: [Text] - , project :: Maybe Text - , supersedesTaskId :: Maybe UUID -- links to replaced task - , duplicateOfTaskId :: Maybe UUID -- links to canonical duplicate - , reviewState :: ReviewState -- Approved | PendingReview | Rejected - , confidence :: Confidence -- 0.0–1.0, from parser - , parserVersion :: Version -- which parser version produced this - } -``` - -# Policies - -## Confidence & Automation - -| Confidence | Threshold | Action | -|------------|-----------|----------------------------------------| -| High | \>= 0.8 | Auto-apply to canonical store | -| Medium | 0.3–0.8 | Queue for human review | -| Low | \< 0.3 | Log only, do not create task candidate | - -## Human Review Boundaries - -Actions that **always** require confirmation: - -- Deletions of existing tasks - -- Deadline changes on existing tasks - -- Low-confidence merges (semantic deduplication) - -- Any update to a task marked `Approved` - -## Deduplication - -- **Exact match:** Same title + same project → auto-merge - -- **Semantic duplicate:** Similar intent, different wording → flag for - review - -- **Recurring task:** Same task pattern across recordings → link to - parent with `supersedesTaskId` - -## Privacy & Retention - -- **Raw audio:** Encrypted at rest, retained 30 days locally, cloud - backup encrypted - -- **Transcripts:** Stored locally only, redacted if sensitive content - detected - -- **Cloud backups:** Encrypted, configurable retention - -- **Secrets:** Managed via rokur (Stapeln), never in code or repo - -# Audit Trail - -Every task carries its full provenance chain: - -```plaintext -original_audio_hash (SHA-256) - → transcript_version (Whisper v3 / Vosk v0.3.45) - → parser_version (dictask-parse v0.1.0) - → change_set { timestamp, action, user_confirmation_state } -``` - -All transformations are logged for reproducibility. Reprocessing the -same audio file with the same parser version MUST produce identical -candidate tasks (idempotency). - -# Failure & Recovery - -| Failure | Handling | -|----|----| -| Failed cloud upload | Retry 3x with exponential backoff, then quarantine locally | -| Partial transcription | Flag for review, log incomplete segments | -| Corrupted audio file | Skip, log with checksum, alert user | -| Low-confidence parse | Route to review queue, never auto-apply | -| Dedup false positive | Show both candidates in review queue | - -All pipeline stages are idempotent — reprocessing the same input -produces the same output. - -# Repository Structure - -| Directory | Purpose | -|----|----| -| `.github/` | Forge-specific metadata (CODEOWNERS, SECURITY.md, workflows). | -| `.machine_readable/` | Canonical project state (6 a2ml files), bot directives, and AI guides. | -| `src/ingest/` | Rust crate: udev detection, file archival, cloud upload. | -| `src/transcribe/` | Rust crate: Whisper/Vosk ASR integration. | -| `src/parse/` | Haskell package: megaparsec NLP task extraction. | -| `src/store/` | Rust crate: SQLite canonical store + view generation. | -| `src/review/` | Rust crate: review queue + notification. | -| `src/interface/` | Verified Interface Seams (Idris2 ABI, Zig FFI, generated C headers). | -| `deploy/ansible/` | Ansible playbooks for local machine setup. | -| `deploy/terraform/` | Terraform configs for cloud provisioning (bucket, IAM). | -| `schemas/` | SQLite schema, JSON schemas for intermediate formats. | -| `container/` | Stapeln container ecosystem. | -| `docs/` | Technical documentation (architecture, theory, practice). | - -# Quick Start - -```bash -just init # Interactive bootstrap -just build # Build all components -just test # Run all tests -just ingest # Run ingest pipeline manually -just transcribe FILE # Transcribe a specific audio file -just parse FILE # Parse a transcript file -just views # Generate Markdown/JSON/CSV views -just container-build # Build verified OCI image -``` - -# Deployment - -## Local Setup (Ansible) - -```bash -cd deploy/ansible -ansible-playbook setup.yml -``` - -Sets up: udev rules, systemd service, Rust/Haskell toolchains, SQLite. - -## Cloud Provisioning (Terraform) - -```bash -cd deploy/terraform -terraform init -terraform apply -``` - -Provisions: encrypted storage bucket, IAM roles, lifecycle rules. - -# Testing - -- **Haskell parser:** HSpec + QuickCheck property-based tests - -- **Rust components:** `cargo` `test` with integration tests against - real SQLite - -- **Pipeline replay:** Re-run historical audio through newer parser - versions - -- **Idris2 proofs:** Compile-time verification (no runtime tests needed) - -# Success Metrics - -- % of tasks auto-processed vs. requiring manual review - -- False positive/negative rates for intent detection - -- Time saved vs. manual note-taking and task entry - -- Pipeline end-to-end latency (target: \< 5 minutes per recording) - -# Documentation - -- [Contributing Guide](CONTRIBUTING.adoc) - -- [Roadmap](ROADMAP.adoc) - -- [Architecture Topology](TOPOLOGY.md) - -- [Architecture Details](docs/architecture/) - -# License - -SPDX-License-Identifier: CC-BY-SA-4.0\ -See [LICENSE](LICENSE) and [docs/legal/](docs/legal/) for details. diff --git a/SECURITY.adoc b/SECURITY.adoc new file mode 100644 index 0000000..e47fdd9 --- /dev/null +++ b/SECURITY.adoc @@ -0,0 +1,16 @@ +== Security Policy + +=== Reporting a Vulnerability + +If you discover a security vulnerability, please report it responsibly. + +*Email:* j.d.a.jewell@open.ac.uk + +*Please include:* - Description of the vulnerability - Steps to +reproduce - Potential impact + +*Response timeline:* - Acknowledgement within 48 hours - Initial +assessment within 7 days - Fix or mitigation within 90 days + +*Safe harbour:* We will not pursue legal action against security +researchers who follow responsible disclosure. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 5c4d5e9..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,20 +0,0 @@ - -# Security Policy - -## Reporting a Vulnerability - -If you discover a security vulnerability, please report it responsibly. - -**Email:** j.d.a.jewell@open.ac.uk - -**Please include:** -- Description of the vulnerability -- Steps to reproduce -- Potential impact - -**Response timeline:** -- Acknowledgement within 48 hours -- Initial assessment within 7 days -- Fix or mitigation within 90 days - -**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure. diff --git a/TEST-NEEDS.adoc b/TEST-NEEDS.adoc new file mode 100644 index 0000000..0e3f942 --- /dev/null +++ b/TEST-NEEDS.adoc @@ -0,0 +1,32 @@ +== TEST-NEEDS.md — dictask + +=== CRG Grade: C — ACHIEVED 2026-04-04 + +=== Current Test State + +[cols=",,",options="header",] +|=== +|Category |Count |Notes +|Test directories |2 |Location(s): /verification/tests, /tests +|CI workflows |19 |Running tests on GitHub Actions +|Tests |Present |Configured in CI workflows +|=== + +=== What’s Covered + +* [x] Tests present and running +* [x] CI integration active + +=== Still Missing (for CRG B+) + +* [ ] Code coverage reports (codecov integration) +* [ ] Detailed test documentation in CONTRIBUTING.md +* [ ] Integration tests beyond unit tests +* [ ] Performance benchmarking suite + +=== Run Tests + +[source,bash] +---- +(check Makefile/justfile/package.json for test command) +---- diff --git a/TEST-NEEDS.md b/TEST-NEEDS.md deleted file mode 100644 index 350cc42..0000000 --- a/TEST-NEEDS.md +++ /dev/null @@ -1,29 +0,0 @@ -# TEST-NEEDS.md — dictask - -## CRG Grade: C — ACHIEVED 2026-04-04 - -## Current Test State - -| Category | Count | Notes | -|----------|-------|-------| -| Test directories | 2 | Location(s): /verification/tests, /tests | -| CI workflows | 19 | Running tests on GitHub Actions | -| Tests | Present | Configured in CI workflows | - -## What's Covered - -- [x] Tests present and running -- [x] CI integration active - -## Still Missing (for CRG B+) - -- [ ] Code coverage reports (codecov integration) -- [ ] Detailed test documentation in CONTRIBUTING.md -- [ ] Integration tests beyond unit tests -- [ ] Performance benchmarking suite - -## Run Tests - -```bash -(check Makefile/justfile/package.json for test command) -``` diff --git a/TOPOLOGY.md b/TOPOLOGY.adoc similarity index 75% rename from TOPOLOGY.md rename to TOPOLOGY.adoc index bff35d3..ca59465 100644 --- a/TOPOLOGY.md +++ b/TOPOLOGY.adoc @@ -1,10 +1,10 @@ -# SPDX-License-Identifier: CC-BY-SA-4.0 +== SPDX-License-Identifier: CC-BY-SA-4.0 -# dictask — Architecture Topology +== dictask — Architecture Topology -## System Architecture +=== System Architecture -``` +.... ┌─────────────────┐ │ Portable Voice │ │ Recorder │ @@ -77,11 +77,11 @@ │ [10] Notify │ │ Dashboard / Email │ └─────────────────────┘ -``` +.... -## Interface Architecture (Verified Seams) +=== Interface Architecture (Verified Seams) -``` +.... ┌──────────────────────────────┐ │ Idris2 ABI (src/interface/abi/)│ ← The Specification (dependent types) │ • Task type with proofs │ @@ -102,38 +102,42 @@ │ (ingest, transcribe, store, │ │ review) │ └──────────────────────────────┘ -``` +.... -## Completion Dashboard +=== Completion Dashboard -| Component | Progress | Status | -|------------------------|--------------------------------|--------| -| Architecture design | `████████░░` 80% | Active | -| SQLite schema | `░░░░░░░░░░` 0% | — | -| Idris2 ABI proofs | `░░░░░░░░░░` 0% | — | -| Zig FFI bridge | `░░░░░░░░░░` 0% | — | -| Rust ingest | `░░░░░░░░░░` 0% | — | -| Rust transcription | `░░░░░░░░░░` 0% | — | -| Haskell parser | `░░░░░░░░░░` 0% | — | -| Confidence scoring | `░░░░░░░░░░` 0% | — | -| Deduplication | `░░░░░░░░░░` 0% | — | -| Review queue | `░░░░░░░░░░` 0% | — | -| View generation | `░░░░░░░░░░` 0% | — | -| Ansible deployment | `░░░░░░░░░░` 0% | — | -| Terraform provisioning | `░░░░░░░░░░` 0% | — | -| Audit trail | `░░░░░░░░░░` 0% | — | -| CI/CD (Hypatia) | `░░░░░░░░░░` 0% | — | -| **Overall** | `█░░░░░░░░░` ~5% | Design | +[cols=",,",options="header",] +|=== +|Component |Progress |Status +|Architecture design |`+████████░░+` 80% |Active +|SQLite schema |`+░░░░░░░░░░+` 0% |— +|Idris2 ABI proofs |`+░░░░░░░░░░+` 0% |— +|Zig FFI bridge |`+░░░░░░░░░░+` 0% |— +|Rust ingest |`+░░░░░░░░░░+` 0% |— +|Rust transcription |`+░░░░░░░░░░+` 0% |— +|Haskell parser |`+░░░░░░░░░░+` 0% |— +|Confidence scoring |`+░░░░░░░░░░+` 0% |— +|Deduplication |`+░░░░░░░░░░+` 0% |— +|Review queue |`+░░░░░░░░░░+` 0% |— +|View generation |`+░░░░░░░░░░+` 0% |— +|Ansible deployment |`+░░░░░░░░░░+` 0% |— +|Terraform provisioning |`+░░░░░░░░░░+` 0% |— +|Audit trail |`+░░░░░░░░░░+` 0% |— +|CI/CD (Hypatia) |`+░░░░░░░░░░+` 0% |— +|*Overall* |`+█░░░░░░░░░+` ~5% |Design +|=== -## Key Dependencies +=== Key Dependencies -| Dependency | Version | Purpose | -|-------------|---------|----------------------------| -| whisper-rs | latest | Offline ASR (Whisper model) | -| vosk | latest | Alternative offline ASR | -| megaparsec | 9.x | Haskell parser combinators | -| rusqlite | latest | SQLite bindings for Rust | -| idris2 | 0.7+ | ABI formal verification | -| zig | 0.13+ | FFI bridge | -| ansible | 2.x | Local deployment | -| terraform | 1.x | Cloud provisioning | +[cols=",,",options="header",] +|=== +|Dependency |Version |Purpose +|whisper-rs |latest |Offline ASR (Whisper model) +|vosk |latest |Alternative offline ASR +|megaparsec |9.x |Haskell parser combinators +|rusqlite |latest |SQLite bindings for Rust +|idris2 |0.7+ |ABI formal verification +|zig |0.13+ |FFI bridge +|ansible |2.x |Local deployment +|terraform |1.x |Cloud provisioning +|=== diff --git a/docs/STATE-VISUALIZER.adoc b/docs/STATE-VISUALIZER.adoc index 2af3297..f60a9d9 100644 --- a/docs/STATE-VISUALIZER.adoc +++ b/docs/STATE-VISUALIZER.adoc @@ -46,7 +46,7 @@ ┌─────────────────────────────────────────┐ │ PLATFORM INTEGRATION │ │ ┌───────────┐ ┌───────────┐ ┌───────┐│ - │ │ GitHub │ │ GitLab │ │ Nix / ││ + │ │ GitHub │ │ GitLab │ │ Guix / ││ │ │ Workflows │ │ CI/CD │ │ Guix ││ │ └───────────┘ └───────────┘ └───────┘│ └─────────────────────────────────────────┘ @@ -88,7 +88,7 @@ CONTAINER ECOSYSTEM (Phase 2) REPO INFRASTRUCTURE .machine_readable/ ██████████ 100% STATE/META/ECOSYSTEM active Governance & License ██████████ 100% PMPL & Ethical use verified - Development Shells (Nix/Guix) ██████████ 100% Reproducible env stable + Development Shells (Guix/Guix) ██████████ 100% Reproducible env stable ───────────────────────────────────────────────────────────────────────────── OVERALL: ██████████ 100% RSR Template Stable & Certified diff --git a/docs/developer/ABI-FFI-README.adoc b/docs/developer/ABI-FFI-README.adoc index 5a6f677..c896025 100644 --- a/docs/developer/ABI-FFI-README.adoc +++ b/docs/developer/ABI-FFI-README.adoc @@ -44,7 +44,7 @@ This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design: ▼ ┌─────────────────────────────────────────────┐ │ Any Language via C ABI │ -│ - Rust, ReScript, Julia, Python, etc. │ +│ - Rust, AffineScript, Julia, Python, etc. │ └─────────────────────────────────────────────┘ ``` @@ -76,7 +76,7 @@ This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design: │ └── bindings/ # Language-specific wrappers (optional) ├── rust/ - ├── rescript/ + ├── affinescript/ └── julia/ ``` diff --git a/docs/governance/MAINTENANCE-CHECKLIST.a2ml b/docs/governance/MAINTENANCE-CHECKLIST.a2ml index eaee720..698f4d0 100644 --- a/docs/governance/MAINTENANCE-CHECKLIST.a2ml +++ b/docs/governance/MAINTENANCE-CHECKLIST.a2ml @@ -67,7 +67,7 @@ compliance-seams-check = true exception-register-required = true exception-bounded-scope-required = true policy-drift-contamination-check = true -example-drift-risk = "single TypeScript exception causing broad ReScript->TypeScript migration" +example-drift-risk = "single TypeScript exception causing broad AffineScript->TypeScript migration" compliance-tooling = "panic-attack" effects-tooling = "ecological checking with sustainabot guidance" diff --git a/docs/practice/AI-CONVENTIONS.adoc b/docs/practice/AI-CONVENTIONS.adoc index 58e132b..6a3636b 100644 --- a/docs/practice/AI-CONVENTIONS.adoc +++ b/docs/practice/AI-CONVENTIONS.adoc @@ -53,7 +53,7 @@ MAINTENANCE-CHECKLIST.a2ml, or SOFTWARE-DEVELOPMENT-APPROACH.a2ml in the reposit | Banned | Use Instead | |---------------------|--------------------| -| TypeScript | ReScript | +| TypeScript | AffineScript | | Node.js / npm / bun | Deno | | Go | Rust | | Python | Julia / Rust | diff --git a/examples/web-project-deno.json b/examples/web-project-deno.json index 5ddd3bd..ee775a4 100644 --- a/examples/web-project-deno.json +++ b/examples/web-project-deno.json @@ -1,17 +1,17 @@ { - "// NOTE": "Example deno.json for ReScript web projects", + "// NOTE": "Example deno.json for AffineScript web projects", "tasks": { - "build": "deno run -A npm:rescript", - "clean": "deno run -A npm:rescript clean", - "watch": "deno run -A npm:rescript -w", + "build": "deno run -A npm:affinescript", + "clean": "deno run -A npm:affinescript clean", + "watch": "deno run -A npm:affinescript -w", "serve": "deno run -A jsr:@std/http/file-server .", "test": "deno test --allow-all" }, "imports": { - "rescript": "^12.0.0", - "@rescript/core": "npm:@rescript/core@^1.6.0", - "safe-dom/": "https://raw.githubusercontent.com/hyperpolymath/rescript-dom-mounter/main/src/", - "proven/": "../proven/bindings/rescript/src/" + "affinescript": "^12.0.0", + "@affinescript/core": "npm:@affinescript/core@^1.6.0", + "safe-dom/": "https://raw.githubusercontent.com/hyperpolymath/affinescript-dom-mounter/main/src/", + "proven/": "../proven/bindings/affinescript/src/" }, "compilerOptions": { "allowJs": true, diff --git a/llm-warmup-dev.adoc b/llm-warmup-dev.adoc new file mode 100644 index 0000000..9aabfcc --- /dev/null +++ b/llm-warmup-dev.adoc @@ -0,0 +1,19 @@ +== LLM Warmup — dictask (Developer) + +=== What is dictask? + +See README.adoc for overview. + +=== Key Commands + +* `+just setup+` — set up development environment +* `+just build+` — build the project +* `+just test+` — run tests +* `+just doctor+` — diagnose issues +* `+just heal+` — attempt auto-repair + +=== Quick Context + +* License: MPL-2.0 +* Part of hyperpolymath ecosystem +* See EXPLAINME.adoc for architecture diff --git a/llm-warmup-dev.md b/llm-warmup-dev.md deleted file mode 100644 index a63714c..0000000 --- a/llm-warmup-dev.md +++ /dev/null @@ -1,16 +0,0 @@ -# LLM Warmup — dictask (Developer) - -## What is dictask? -See README.adoc for overview. - -## Key Commands -- `just setup` — set up development environment -- `just build` — build the project -- `just test` — run tests -- `just doctor` — diagnose issues -- `just heal` — attempt auto-repair - -## Quick Context -- License: MPL-2.0 -- Part of hyperpolymath ecosystem -- See EXPLAINME.adoc for architecture diff --git a/llm-warmup-user.adoc b/llm-warmup-user.adoc new file mode 100644 index 0000000..819f19e --- /dev/null +++ b/llm-warmup-user.adoc @@ -0,0 +1,19 @@ +== LLM Warmup — dictask (User) + +=== What is dictask? + +See README.adoc for overview. + +=== Key Commands + +* `+just setup+` — set up development environment +* `+just build+` — build the project +* `+just test+` — run tests +* `+just doctor+` — diagnose issues +* `+just heal+` — attempt auto-repair + +=== Quick Context + +* License: MPL-2.0 +* Part of hyperpolymath ecosystem +* See EXPLAINME.adoc for architecture diff --git a/llm-warmup-user.md b/llm-warmup-user.md deleted file mode 100644 index cb385f9..0000000 --- a/llm-warmup-user.md +++ /dev/null @@ -1,16 +0,0 @@ -# LLM Warmup — dictask (User) - -## What is dictask? -See README.adoc for overview. - -## Key Commands -- `just setup` — set up development environment -- `just build` — build the project -- `just test` — run tests -- `just doctor` — diagnose issues -- `just heal` — attempt auto-repair - -## Quick Context -- License: MPL-2.0 -- Part of hyperpolymath ecosystem -- See EXPLAINME.adoc for architecture