Skip to content

Current stack joins the catalog - #460

Merged
HackingGate merged 1 commit into
mainfrom
add-current-stack
Oct 30, 2026
Merged

HackingGate merged 1 commit into
mainfrom
add-current-stack

Conversation

@HackingGate

@HackingGate HackingGate commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Adds the catalog record for the third rule a project's guidance stated in prose, beside reuse-maintained-components and follow-published-standards: the stack is the current one, not the one inherited.

  • current-stack (principle, seed): a choice of language, runtime, framework, library, toolchain or service is judged on today's evidence of fit and upkeep; being already in use is not a reason. Sources: Samuelson and Zeckhauser (status quo bias), Arkes and Blumer (sunk cost), McKinley (Choose Boring Technology, the counterweight), OWASP A06.
  • Conflicts with chestertons-fence; both ends written. does_not_mean hands the purpose question to the fence.
  • Registered in src/catalog.rs; QUICK_REFERENCE.md, name-index.json, review-controls.json, REVIEW.md and AGENTS.md rebuilt; policy/upheld.toml gains a review control (the self-application test requires one for a review-carried record).

Checks: pre-commit hooks (catalog-validate, reference and review current, catalog-tests 189 OK, uphold-check, content-policy), cargo test all green.

https://claude.ai/code/session_01EycJ7mB2AcGdDTvCuqtpmb

Summary by CodeRabbit

  • Documentation
    • Added the Current Stack principle to the review guidance and quick reference, with aliases available in the principle index.
    • The guidance covers checking current maintenance and security evidence, weighing the cost of staying against migration, and recording the rationale and assessment date.
    • Added a searchable catalog entry and review example illustrating an unsupported toolchain choice.

… prose

A project's guidance held three rules the catalog lacked a record for:
nothing hand-rolled where a maintained component does the job, a part a
standard covers follows it, and the stack is the current one and not the one
inherited. The first two are records; this adds the third.

- current-stack (principle). A choice of language, runtime, framework,
  library, toolchain or service is judged on today's evidence of fit and
  upkeep, and being already in use is not a reason. Sources: Samuelson and
  Zeckhauser on status quo bias, Arkes and Blumer on sunk cost, McKinley's
  Choose Boring Technology as the counterweight, and OWASP A06.
- It conflicts with chestertons-fence: one asks that the inherited thing
  be understood before it goes, the other that it not stay merely for being
  there. Both ends are written. does_not_mean hands the purpose question to
  the fence.
- The record is registered in src/catalog.rs, the generated index and
  review documents are rebuilt, and policy/upheld.toml gains a review control
  so the review-carried record has a catches and a misses.

Claude-Session: https://claude.ai/code/session_01EycJ7mB2AcGdDTvCuqtpmb
@uphold-review

uphold-review Bot commented Oct 30, 2026

Copy link
Copy Markdown

uphold-review

Gate alone under this owner: This App runs the gate alone for every pull request under this owner for now, so only uphold's rules ran. Use Full review on the uphold review check for a full review.

✅ uphold rules: uphold's rules pass · this repository's policy at aa6eca7

Rule output
$ uphold scan
policy checks passed

$ uphold check
reconciled 19 enforcement claims:
  explicit-unknown <- catalog-tests  enforced by a hook installed here
  single-authoritative-source <- catalog-reference-current  enforced by a hook installed here
  make-illegal-states-unrepresentable <- catalog-validate  enforced by a hook installed here
  single-authoritative-source <- catalog-tests  enforced by a hook installed here
  explicit-unknown <- no-stale-hook-pins  enforced by uphold guard at manual
  single-authoritative-source <- no-stale-hook-pins  enforced by uphold guard at manual
  complete-mediation <- prevent-ai-author  enforced by uphold guard at commit-msg
  fail-safe-defaults <- prevent-public-push  enforced by uphold guard at pre-push
  observability <- removed-function-named  enforced by uphold guard at commit-msg
  least-privilege <- workflow-declares-permissions  enforced by uphold scan
  minimize-attack-surface <- workflow-declares-permissions  enforced by uphold scan
  compromise-recording <- no-local-merge  enforced by uphold guard at pre-merge-commit
  compromise-recording <- no-merge-commit  enforced by uphold guard at pre-commit
  data-minimization <- no-private-repo-names  enforced by uphold guard at commit-msg
  data-minimization <- no-running-os-identity-metadata  enforced by uphold scan
  chestertons-fence <- removed-function-named  enforced by uphold guard at commit-msg
  deprecation-discipline <- no-stale-hook-pins  enforced by uphold guard at manual
  reproducible-derived-state <- catalog-reference-current  enforced by a hook installed here
  reproducible-derived-state <- review-current  enforced by a hook installed here
  behavior  catalog-tests: unmeasured [not_requested] — no behavioral probe requested
  behavior  catalog-reference-current: unmeasured [not_requested] — no behavioral probe requested
  behavior  catalog-validate: unmeasured [not_requested] — no behavioral probe requested
  behavior  catalog-tests: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-stale-hook-pins: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-stale-hook-pins: unmeasured [not_requested] — no behavioral probe requested
  behavior  prevent-ai-author: unmeasured [not_requested] — no behavioral probe requested
  behavior  prevent-public-push: unmeasured [not_requested] — no behavioral probe requested
  behavior  removed-function-named: unmeasured [not_requested] — no behavioral probe requested
  behavior  workflow-declares-permissions: unmeasured [not_requested] — no behavioral probe requested
  behavior  workflow-declares-permissions: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-local-merge: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-merge-commit: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-private-repo-names: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-running-os-identity-metadata: unmeasured [not_requested] — no behavioral probe requested
  behavior  removed-function-named: unmeasured [not_requested] — no behavioral probe requested
  behavior  no-stale-hook-pins: unmeasured [not_requested] — no behavioral probe requested
  behavior  catalog-reference-current: unmeasured [not_requested] — no behavioral probe requested
  behavior  review-current: unmeasured [not_requested] — no behavioral probe requested
  note  lefthook.yml runs the binary
  note  lefthook.yml defines 20 command(s)
  note  .claude/settings.json runs `uphold hook`
adopted 10 record(s) for design rulings ([decide]):
  explicit-unknown
  parameterize-do-not-enumerate
  enforcement-needs-a-trigger
  psychological-acceptability
  single-authoritative-source
  mechanism-policy-separation
  least-power
  complete-mediation
  fail-safe-defaults
  economy-of-mechanism
  order  fail-safe-defaults over psychological-acceptability: A scope the shim cannot evaluate refuses by default, and `unresolved = "run"` is the named way out.
  order  explicit-unknown over psychological-acceptability: A seam that stands down says so on stderr; it never reports what it did not read as a pass.
  order  psychological-acceptability over complete-mediation: A hook that refuses routine work has its matcher deleted, and then it mediates nothing.
  order  least-power over parameterize-do-not-enumerate: `[stop] run` takes argv and no shell; a command that needs a pipeline names a script.


Reviewed with uphold 1.39.0 by uphold-review 0.6.1 · 539b221 · claude-opus-5-5 · 17 s · $0.00 list

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e09b0098-f20a-4bce-b0c8-2c286084eb14
Commits

Reviewing files that changed from the base of the PR and between aa6eca7 and 539b221.

Files selected for processing: 9
  • AGENTS.md
  • QUICK_REFERENCE.md
  • REVIEW.md
  • name-index.json
  • policy/upheld.toml
  • principles/chestertons-fence.toml
  • principles/current-stack.toml
  • review-controls.json
  • src/catalog.rs

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The change adds the Current Stack principle to the catalog, review controls, guidance, and indexes. It describes reassessing technology choices using current maintenance and fit evidence, and includes an example involving Rust toolchain support.

Changes: Current Stack Principle

Layer / File(s) Summary
Define and register the principle
principles/current-stack.toml, src/catalog.rs, principles/chestertons-fence.toml
Adds the principle record and registers it in the bundled catalog. The Chesterton’s Fence record now declares a conflict with Current Stack.
Add review-control scenarios
policy/upheld.toml, review-controls.json
Adds caught and missed examples for toolchain pins justified by familiarity and for documenting a supported release.
Document and index the principle
AGENTS.md, REVIEW.md, QUICK_REFERENCE.md, name-index.json
Adds review guidance, principle and alias listings, and searchable index entries.

Priority: Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Possibly related PRs

  • HackingGate/uphold#411: Adds related dependency-currency review principles that the Current Stack record also references.
  • HackingGate/uphold#423: Establishes caught and missed controls for review records; this change adds another control record.
  • HackingGate/uphold#434: Adds validation for conflicting principles; this change declares a conflict between Current Stack and Chesterton’s Fence.
Merge Risk: Minimal · up to 539b2

The Current Stack catalog and guidance addition has no identified merge-blocking risk and is mergeable subject to normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: adding the Current Stack principle to the catalog.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (8 skipped: 8 unsupported.)

Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.98%. Comparing base (aa6eca7) to head (539b221).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #460   +/-   ##
=======================================
  Coverage   94.98%   94.98%           
=======================================
  Files          56       56           
  Lines       28550    28550           
=======================================
  Hits        27118    27118           
  Misses       1432     1432           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@HackingGate
HackingGate merged commit bc05870 into main Oct 30, 2026
24 of 25 checks passed
@HackingGate
HackingGate deleted the add-current-stack branch October 30, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants