From b4f89088578c1fc7eb5892ef20e766b79696c24b Mon Sep 17 00:00:00 2001 From: ziffan Date: Thu, 30 Apr 2026 22:04:29 +0700 Subject: [PATCH] docs: archive v0.1.0-final as hackathon submission snapshot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cerebral Valley × Anthropic 'Built with Opus 4.7' Hackathon (April 2026) - Add bilingual archive notice to README (ID + EN) with archive status badges - Add CHANGELOG entry for v0.1.0-final - Add DECISIONS entry documenting archive rationale and two-tier tag strategy - Add KNOWN_ISSUES.md documenting unresolved items and intentional scope limits - Reference v0.1.0 tag for original submission state - Reference regulasi-id-corpus-prep as independent spawned tool Phase 1 (Dependabot triage): 7 PRs closed, 0 merged (no security advisories). Successor repository link to be added via GitHub pinned issue post-archive. Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 20 +++++++++++ DECISIONS.md | 23 +++++++++++++ KNOWN_ISSUES.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 69 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 201 insertions(+) create mode 100644 KNOWN_ISSUES.md diff --git a/CHANGELOG.md b/CHANGELOG.md index a805e1d..da8bde5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,26 @@ All notable changes to LexHarmoni are documented here. --- +## [0.1.0-final] — 2026-04-30 + +### Archived +- Repository archived as hackathon submission snapshot +- No further development planned in this repository + +### Added (post-submission, before archive) +- CI/CD workflows: GitHub Actions CI, security scan, Dependabot configuration (see `[ci-setup]` entry) +- `regulasi-id-corpus-prep` spawned as independent tool for Indonesian regulatory PDF corpus preparation + — now available on PyPI: [`pip install regulasi-id-corpus-prep`](https://github.com/ziffan/regulasi-id-corpus-prep) +- Archive documentation: bilingual archive notice in README, KNOWN_ISSUES.md + +### Notes +- Original hackathon submission preserved at tag `v0.1.0` +- All routine (non-security) Dependabot PRs (#5–#11) closed without merge to maintain scope discipline; + no security-related advisories were identified — see DECISIONS.md for rationale +- Successor project to be linked when initialized + +--- + ## [Unreleased] - Pertimbangkan `temperature=0` untuk output lebih deterministik diff --git a/DECISIONS.md b/DECISIONS.md index 13ebe61..8ea88d7 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -63,3 +63,26 @@ Context: CI/CD added post-hackathon for repo hygiene and security. Project is a Decision: CI does NOT call the Anthropic API. Smoke testing of API integration is performed manually pre-release. Rationale: cost ($1.70–$6.75 per run), API key secret management complexity, and preference for deterministic CI. Consequence: regression in API integration may not be caught by CI; compensating control is the manual smoke test (ST1/ST2 protocol in `docs/`) before tagging releases. + +--- + +## Decision: Archive v0.1.0 as Hackathon Submission Snapshot + +Date: 2026-04-30 +Context: v0.1.0 was submitted to Cerebral Valley × Anthropic "Built with Opus 4.7" Hackathon in April 2026 with locked scope (see prior decisions and CHANGELOG `[ci-setup]` entry). Post-submission validation feedback from law firm prospects identified three features required for production use: multi-provider LLM support, flexible corpus selection, and prompt tuning from UI. These changes are architecturally incompatible with the hackathon submission's single-provider, fixed-corpus design. Continuing development in this repository would either (1) compromise hackathon submission integrity, or (2) create a confusing dual-purpose repository. + +Decision: Archive this repository as a read-only snapshot. Two-tier tag preservation: +- `v0.1.0` — preserves exact hackathon submission state (do not modify) +- `v0.1.0-final` — preserves archived state including post-submission CI activation, Dependabot triage, and documentation updates + +Continue development in a separate successor repository (to be initialized). + +Rationale: +- Clean separation between hackathon artifact and commercial-direction successor +- Reproducibility preserved via two-tier tags +- Portfolio narrative remains coherent: submission → spawned tool → successor +- No scope confusion for visitors, reviewers, or potential users + +Consequence: Bug reports cannot be resolved in this repository. Dependency rot will eventually compromise runnability; mitigated by pinned versions in dependency manifests, documented Python/Node versions, and KNOWN_ISSUES.md transparency. Successor repository link to be added post-archive via pinned GitHub issue (no unarchive needed). + +Dependabot PRs categorized: no security advisories were identified; all 7 routine version-bump PRs (#5–#11) closed without merge. The spawned tool `regulasi-id-corpus-prep` (separate repository) remains independent and active under its own development lifecycle. diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md new file mode 100644 index 0000000..c5b18ab --- /dev/null +++ b/KNOWN_ISSUES.md @@ -0,0 +1,89 @@ +# Known Issues — Not Fixed in v0.1.0-final + +These issues are documented for transparency. **They will not be resolved in +this archived repository.** They may or may not be addressed in the successor +project. + +## Archive Status + +This repository was archived on April 30, 2026. See README.md and DECISIONS.md +for full context on the archive decision. + +--- + +## Hackathon Scope Constraints (Intentional, Not Bugs) + +These were design decisions made for hackathon scope discipline. They are +limitations, not defects. The successor project plans to address them. +See DECISIONS.md for architectural rationale. + +- **Single LLM provider:** Anthropic Claude only. No OpenAI, OpenRouter, + Gemini, or other provider support. +- **Fixed corpus:** Hardcoded Indonesian P2P lending regulatory dataset (7 + regulations, OJK LPBBTI domain). Users cannot upload custom corpora or + switch between corpora at runtime. +- **No prompt customization:** Prompts are hardcoded in `backend/prompt_loader.py`. + Users cannot edit, version, or tune prompts via UI. +- **Single tenancy:** No multi-user, no workspace isolation, no role-based + access control. +- **No persistent storage of queries:** Each session is ephemeral. Analysis + results are not saved between page refreshes. +- **Retrospective validation only:** The demo validates LexHarmoni against + already-enacted regulation. Ex-ante deployment in an active drafting workflow + has not been tested. + +--- + +## Functional Limitations (Documented, Not Bugs) + +### Pytest test suite not yet implemented + +No pytest-discoverable test files exist in the `tests/` directory. The CI +`backend-lint-and-test` job exits cleanly via an `exit 5` workaround +(`|| [ $? -eq 5 ]` in `ci.yml`) — pytest exit code 5 means "no tests +collected", which is treated as a passing state. The `requires_api` pytest +marker is defined in `pyproject.toml` but is not exercised by any test file. + +The two validation scripts in `tests/` (`validate_corpus.py`, +`validate_severity_lock.py`) are run-on-demand tools, not pytest test cases. + +### `validate_severity_lock.py` excluded from CI + +`tests/validate_severity_lock.py` validates that the model's severity +calibration (normative→critical, hierarchical→major, operational→minor) is +correct across live runs. It requires a running backend server and a live +Anthropic API key. It is run manually pre-release per the smoke test protocol +in `docs/`. It is intentionally excluded from CI per the "Decision: CI scope +excludes Anthropic API calls" in DECISIONS.md. + +### Stochastic secondary findings (non-deterministic count) + +The three core friction patterns surface consistently across all recorded runs. +Secondary findings (finding count 4–5) vary by run due to stochastic sampling. +This is expected behavior from language model inference, not a bug. Using +`temperature=0` may reduce variance (noted in CHANGELOG `[Unreleased]` as a +future consideration). + +--- + +## Dependency Risks + +- Dependencies pinned to versions current as of archive date (April 30, 2026). +- **Python version:** 3.11 (see `pyproject.toml` `python_version`). +- **Node version:** ≥20 (see `@types/node` version constraint in + `frontend/package.json`; CI runs on Node 20). +- Anthropic SDK, Next.js, and other dependencies may have breaking changes in + future major versions. No further patches will be applied in this repository. +- All 7 Dependabot PRs (#5–#11) were closed without merge as part of the archive + process — no security advisories were identified. See DECISIONS.md. + +--- + +## Reporting + +GitHub Issues are disabled on archived repositories. For issues with the +successor project, use the successor repository (link in README when available). + +For issues with the spawned tool `regulasi-id-corpus-prep`, use that +repository's issue tracker directly: +https://github.com/ziffan/regulasi-id-corpus-prep/issues diff --git a/README.md b/README.md index 60c7628..6232a25 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,75 @@ [![CI](https://github.com/ziffan/lexharmoni/actions/workflows/ci.yml/badge.svg)](https://github.com/ziffan/lexharmoni/actions/workflows/ci.yml) [![Built with](https://img.shields.io/badge/Built%20with-Claude%20Opus%204.7-D97757.svg)](https://www.anthropic.com/claude) [![Hackathon](https://img.shields.io/badge/Built%20with%20Opus%204.7-Hackathon-8B5CF6.svg)](https://cerebralvalley.ai/e/built-with-4-7-hackathon) +![Status](https://img.shields.io/badge/status-archived-lightgrey) +![Type](https://img.shields.io/badge/type-hackathon%20submission-blue) +![Version](https://img.shields.io/badge/version-v0.1.0--final-green) + +--- + +> ## ⚠️ Repositori Diarsipkan / Repository Archived +> +> ### 🇮🇩 Indonesia +> +> Repositori ini diarsipkan pada **30 April 2026** sebagai snapshot proyek +> hackathon. LexHarmoni v0.1.0 dikembangkan untuk **Cerebral Valley × Anthropic +> "Built with Opus 4.7" Hackathon (April 2026)**. +> +> **Dua tag tersedia untuk reprodusibilitas:** +> - [`v0.1.0`](../../releases/tag/v0.1.0) — state asli submisi hackathon +> - [`v0.1.0-final`](../../releases/tag/v0.1.0-final) — state arsip dengan +> improvement post-submisi (CI, security patches, dokumentasi) +> +> **Status CI terakhir:** ✅ Green pada **2026-04-29** (lihat +> [Actions tab](../../actions)) +> +> **Tidak ada pengembangan lanjutan, bug fix, atau pull request yang akan +> diterima di repositori ini.** Issues boleh dibuka untuk arsip diskusi tapi +> tidak akan diresolve di sini. +> +> 🔄 **Pengembangan aktif dilanjutkan di proyek successor:** _[link akan +> ditambahkan saat repo successor diinisialisasi]_ +> +> 📚 **Untuk corpus preparation Indonesian regulatory PDFs**, lihat tool +> independent yang di-spawn dari proyek ini: +> [regulasi-id-corpus-prep](https://github.com/ziffan/regulasi-id-corpus-prep) +> +> Untuk konteks keputusan arsitektur dan constraint hackathon, lihat +> [DECISIONS.md](./DECISIONS.md), [CHANGELOG.md](./CHANGELOG.md), dan +> [KNOWN_ISSUES.md](./KNOWN_ISSUES.md). +> +> --- +> +> ### 🇬🇧 English +> +> This repository was archived on **April 30, 2026** as a hackathon project +> snapshot. LexHarmoni v0.1.0 was built for the **Cerebral Valley × Anthropic +> "Built with Opus 4.7" Hackathon (April 2026)**. +> +> **Two tags are available for reproducibility:** +> - [`v0.1.0`](../../releases/tag/v0.1.0) — original hackathon submission state +> - [`v0.1.0-final`](../../releases/tag/v0.1.0-final) — archived state with +> post-submission improvements (CI, security patches, documentation) +> +> **Last CI status:** ✅ Green on **2026-04-29** (see +> [Actions tab](../../actions)) +> +> **No further development, bug fixes, or pull requests will be accepted in +> this repository.** Issues may be opened for archival discussion but will +> not be resolved here. +> +> 🔄 **Active development continues in the successor project:** _[link to be +> added when successor repository is initialized]_ +> +> 📚 **For Indonesian regulatory PDF corpus preparation**, see the independent +> spawned tool: +> [regulasi-id-corpus-prep](https://github.com/ziffan/regulasi-id-corpus-prep) +> +> For context on architectural decisions and hackathon constraints, see +> [DECISIONS.md](./DECISIONS.md), [CHANGELOG.md](./CHANGELOG.md), and +> [KNOWN_ISSUES.md](./KNOWN_ISSUES.md). +> +> --- ---