docs: TS→AS migration 01-triage — algorithm spec preserved as .md (closes 1 of standards#241)#82
Merged
Merged
Conversation
…defer port Part of standards#239 (TS→AffineScript estate migration), STEP 2 candidate per standards#241. The original 01-triage.ts (183 lines, Deno TS) is a historical campaign snapshot from 2026-05-26. An attempted AffineScript port surfaced 10 distinct stdlib gaps (catalogued in the replacement .md) that require filling in STEP 3 (standards#242) before a clean .affine port can land. Rather than ship a syntactically-iffy partial port (no `Set<T>`, no `Map<String, [T]>`, no async generators, no typed JSON decode, no ISO8601 date formatter, no Object.fromEntries equivalent), this commit preserves the algorithmic spec as a structured Markdown document and removes the .ts file. The .md serves as the canonical reference for the future implementation once the stdlib gaps close. Net delta: - docs/campaigns/2026-05-26/01-triage.ts: -183 lines (removed) - docs/campaigns/2026-05-26/01-triage.md: +196 lines (added) The .md preserves all algorithmic content needed to re-implement: - Domain types (Severity, WeakPoint, AssailReport, PrCandidate) - Static policy tables (proof exts, autofix-OK, issue-only, parked debts) - Category alias mapping (13 entries) - 8-step classification algorithm - PR grouping by (repo, file_dir, category) - Output summary JSON shape - Side-channel stderr log shape Stdlib gaps surfaced (feeds STEP 3 standards#242): 1. Set<T> membership (workaround: linear-scan list) 2. Map<String, [T]> group-by (workaround: assoc list) 3. Async generators (collapse to eager list) 4. Typed JSON decoder (json.affine v0.3 pending) 5. Regex object construction (regexMatch is the limit) 6. Date.toISOString (no dateNowIso extern) 7. Object.fromEntries (no jsonObjectFromPairs builder) 8. Optional chaining (explicit Option/match — fine) 9. async/await on sync FS (Deno.affine all sync — fine) 10. Spread / rest destructuring (explicit helpers needed) Refs: - standards#239 — TS→AS estate migration umbrella - standards#241 — STEP 2 candidate list - standards#242 — STEP 3 stdlib fill (consumes this PR's gap list) - project_estate_ts_to_affinescript_2026_05_28.md — memory tracker Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
Author
|
Note: post-PR review of the project tracker memory shows affinescript#445 (Step-3 first-cut, merged) already closed gaps 5 (regex via existing |
🔍 Hypatia Security ScanFindings: 78 issues detected
View findings[
{
"reason": "Action uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f5599 needs attention",
"type": "unpinned_action",
"file": "e2e.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action es: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb needs attention",
"type": "unpinned_action",
"file": "e2e.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action perpolymath/standards/.github/workflows/governance-reusable.yml@main\n needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in boj-build.yml",
"type": "unknown",
"file": "boj-build.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in cargo-audit.yml",
"type": "unknown",
"file": "cargo-audit.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in codeql.yml",
"type": "unknown",
"file": "codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in coverage.yml",
"type": "unknown",
"file": "coverage.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in dependency-review.yml",
"type": "unknown",
"file": "dependency-review.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Part of standards#239 (TS→AffineScript estate migration) — closes 1 of the 9 file candidates in standards#241 STEP 2.
Replaces `docs/campaigns/2026-05-26/01-triage.ts` (183 lines, Deno TypeScript) with `01-triage.md` (196 lines, algorithmic spec). The TS file was a historical campaign snapshot from 2026-05-26; a direct AffineScript port surfaced 10 stdlib gaps that block a clean compile until standards#242 STEP 3 (stdlib fill) lands.
Why .md, not .affine
Attempted a full .affine port in the session that produced this PR. The port surfaced fundamental stdlib gaps:
Rather than ship a syntactically-iffy partial port that would block other STEP 2 work in review, this PR preserves the algorithmic spec in a structured Markdown document and removes the .ts file. A future PR will land the `.affine` implementation once standards#242 STEP 3 closes the relevant gaps.
Per standards#241 acceptance
What the .md preserves
Every algorithmic detail needed to re-implement:
Net delta
Refs
🤖 Generated with Claude Code